From: Matthias Klose Date: Sat, 13 Jun 2026 09:21:26 +0000 (+0200) Subject: Import gcc-15_15.3.0-1.debian.tar.xz X-Git-Tag: archive/raspbian/15.3.0-4+rpi1^2^2^2~1^2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=bf7d0d8c782851c8635e4594b1df5dc36949db2f;p=gcc-15.git Import gcc-15_15.3.0-1.debian.tar.xz [dgit import tarball gcc-15 15.3.0-1 gcc-15_15.3.0-1.debian.tar.xz] --- bf7d0d8c782851c8635e4594b1df5dc36949db2f diff --git a/NEWS.gcc b/NEWS.gcc new file mode 100644 index 0000000..9787ba4 --- /dev/null +++ b/NEWS.gcc @@ -0,0 +1,864 @@ +GCC 15 Release Series - Changes, New Features, and Fixes + +This page is a "brief" summary of some of the huge number of improvements in +GCC 15. You may also want to check out our Porting to GCC 15 page and the full +GCC documentation. + + +Caveats + + * Support for Nios II targets, which was marked obsolete in GCC 14, + has now been removed entirely. + + * In the AArch64 port, support for ILP32 (-mabi=ilp32) has been deprecated + and will be removed in a future release. + + * {0} initializer in C or C++ for unions no longer guarantees + clearing of the whole union (except for static storage duration + initialization), it just initializes the first union member to + zero. If initialization of the whole union including padding bits + is desirable, use {} (valid in C23 or C++) or use + -fzero-init-padding-bits=unions option to restore old GCC + behavior. + + +General Improvements + + * The default vectorizer cost model at -O2 has been enhanced to + handle unknown tripcount. But it still disables vectorization of + loops when any runtime check for data dependence or alignment is + required, it also disables vectorization of epilogue loops but + otherwise is equal to the cheap cost model. + + * The vectorizer now supports vectorizing loops with early exits + where the number of elements for the input pointers are unknown + through peeling for alignment. This is supported for only for + loops with fixed vector lengths. + + * -ftime-report now only reports monotonic run time instead of + system and user time. This reduces the overhead of the option + significantly, making it possible to use in standard build + systems. + + * Incremental Link-Time Optimizations significantly reduce average + recompilation time of LTO when doing small code edits + (e.g. editing a single function). Enable with -flto-incremental=. + + * For offloading using OpenMP and OpenACC, issues preventing some + host-device architecture combinations have been resolved. In + particular, offloading from aarch64 hosts to nvptx devices is now + supported. Additionally, the support for using C++ in offload + regions has been extended. + + * Improvements for compiling very large input files. The compile + time for large input files with -Wmisleading-indentation has been + significantly improved. The compiler can now track columnn numbers + larger than 4096. Very large source files have more accurate + location reporting. + + +New Languages and Language specific improvements + +OpenMP + +See the GNU Offloading and Multi-Processing Project (GOMP) page for +general information. + + * Support for unified-shared memory has been added for some AMD and + Nvidia GPU devices, enabled when using the unified_shared_memory + clause to the requires directive. The OpenMP 6.0 self_maps clause + is also now supported. For details, see the offload-target + specifics section in the GNU Offloading and Multi Processing + Runtime Library Manual. + + * GCC added ompx_gnu_pinned_mem_alloc as a predefined allocator and, + for C++, allocator class templates in the omp::allocator namespace + for the predefined allocators as specified in the OpenMP + specification 5.0, including omp::allocator::null_allocator of + OpenMP 6.0 and ompx::allocator::gnu_pinned_mem; the allocator + templates can be used with C++ containers such as std::vector. + + * In C and Fortran, the allocate directive now supports static + variables; stack variables were previously supported in those + languages. C++ support is not available yet. + + * Offloading improvements: On Nvidia GPUs, writing to the terminal + from OpenMP target regions (but not from OpenACC compute regions) + is now also supported in Fortran; in C/C++ and on AMD GPUs this + was already supported before with both OpenMP and OpenACC. + Constructors and destructors on the device side for declare target + static aggregates are now handled. + + * For Fortran, mapping derived-type variables with allocatable + components is now supported. + + * The OpenMP 5.1 unroll and tile loop-transforming constructs are + now supported. + + * OpenMP 5.0 metadirectives are now supported, as are OpenMP 5.1 + dynamic selectors in both metadirective and declare variant (the + latter with some restrictions). + + * The interop construct and the OpenMP interoperability API routines + for C, C++ and Fortran are now implemented, including the OpenMP + 6.0 additions. This includes foreign-runtime support for Cuda, + Cuda Driver, and HIP on Nvida GPUs and for HIP and HSA on AMD GPUs. + + * The OpenMP 5.1 dispatch construct has been implemented with + support for the adjust_args and append_args clauses to the declare + variant directive, including the following OpenMP 6.0 additions: + the interop clause to dispatch and the syntax extensions to + append_args are supported. + + * OpenMP 6.0: The get_device_from_uid and omp_get_uid_from_device + API routines have been added. + + +COBOL + + * GCC now includes an ISO COBOL compiler, gcobol. It has been + tested on x86-64 and AArch64 targets. It is not expected to work + on 32-bit systems. Efforts are underway to adapt it to other + machine architectures that support native 128-bit computation. + + * gcobol passes much of the NIST CCVS/85 test suite (except for + parts that are now obsolete). It uses ISO/IEC 1989:2023 as a + reference specification. Some parts of that document, notably + object-orientation features, are yet to be implemented. Beyond + ISO, gcobol recognizes some syntax common on other compilers, with + special attention given to IBM. More information about GCC COBOL + can be found at the COBOLworx website. + + +Ada + + * GNAT now allows the 'Round attribute also for ordinary fixed-point + types. + + * The new GNAT attribute 'Super can be applied to objects of tagged + types in order to obtain a view conversion to the most immediate + specific parent type. + + * Mutably tagged types with a defined size are now available through + the use of Size'Class. This allows defining a maximum size for the + tagged. Example: + + type Base is tagged null record with Size'Class => 16 * 8; + -- Size in bits (128 bits, or 16 bytes) + + type Derived_Type is new Base with record Data_Field : Integer; end record; + -- ERROR if Derived_Type exceeds 16 bytes + + * New Finalizable aspect. It is a GNAT language extension which + serves as a lightweight alternative to controlled types. + + type T is record + ... + end record with Finalizable => (Initialize => Initialize, + Adjust => Adjust, + Finalize => Finalize, + Relaxed_Finalization => True); + + procedure Adjust (Obj : in out T); + procedure Finalize (Obj : in out T); + procedure Initialize (Obj : in out T); + + * The aspect No_Raise has been added, it declares that a subprogram + cannot raise an exception. + + * The aspect External_Initialization has been added, it allows for + data to be initialized using an external file which is loaded + during compilation time. + + * The aspect Exit_Cases has been added to annotate functions and + procedures with side effects in SPARK (see SPARK reference manual) + . It can be used to partition the input state into a list of cases + and specify, for each case, how the subprogram is allowed to + terminate. + + * Language extensions are enabled through the use of pragma + Extensions_Allowed (On | Off | All_Extensions); which has had its + syntax changed. An argument of All_Extensions has the same effect + as On, except that some extra experimental extensions are enabled. + + * Several new compilation flags have been added, some examples + include -gnatis, -gnatw.n, -gnatw_l and -gnatw.v. The internal + debugging utilities for the compiler have also received a lot of + new options, please refer to debug.adb for more information. + + * The diagnostics code has seen a major refactor, it now supports + the sarif format -fdiagnostics-format=sarif-file among other + improvements. More changes are expected in following releases. + + * System.Image_A has now printing routines to output address + information in HEX. + + * Several program units have had contracts added to them and SPARK + analysis has been enabled. + + * Support for FreeBSD, Android and aarch64 targets has been improved. + + * Task priorities on MinGW have been reworked. + + * The documentation has been rearanged for clarity, mainly the + sections related to tasking and platform dependent information. + + * REMOVAL: Generic_Formal_Hash_Table has been removed, the SPARK + Library is recommended as a substitute. + + +C family + + * A musttail statement attribute was added to enforce tail calls. + + * Extended inline assembler statements can now be used with some + limitations outside of functions as well. New constraints have + been added for defining symbols or using symbols inside of inline + assembler, and a new generic operand modifier has been added to + allow printing those regardless of PIC. For example: + + struct S { int a, b, c; }; + extern foo (void); + extern char var; + int var2; + asm (".text; %cc0: mov %cc2, %%r0; .previous;" + ".rodata: %cc1: .byte %3; .previous" : : + ":" (foo), /* Tell compiler asm defines foo function. */ + ":" (&var), /* Tell compiler asm defines var variable. */ + "-s" (var2), /* Tell compiler asm uses var2 variable. */ + /* "s" would work too but might not work with -fpic. */ + "i" (sizeof (struct S))); /* It is possible to pass constants to toplevel asm. */ + + * The "redzone" clobber is now allowed in inline assembler + statements to describe that the assembler can overwrite memory in + the stack red zone (e.g. on x86-64 or PowerPC). + + * The nonnull_if_nonzero function attribute has been added to + describe functions where some pointer parameter may be NULL + only if some other parameter is zero. + + * The -Wtrailing-whitespace= and -Wleading-whitespace= options have + been added to diagnose certain whitespace characters at the end of + source lines or whitespace characters at the start of source lines + violating certain indentation styles. + + * The -Wheader-guard warning has been added and enabled in -Wall to + warn about some inconsistencies in header file guarding macros. + + +C + + * C23 by default: GCC 15 changes the default language version for C + compilation from -std=gnu17 to -std=gnu23. If your code relies on + older versions of the C standard, you will need to either add + -std= to your build flags, or port your code; see the porting + notes. + + * Some more C23 features have been implemented: + + * #embed preprocessing directive support. + * Support for unsequenced and reproducible attributes. + * __STDC_VERSION__ predefined macro value changed + for -std=c23 or -std=gnu23 to 202311L. + + * Some new features from the upcoming C2Y revision of the ISO C + standard are supported with -std=c2y and -std=gnu2y. Some of + these features are also supported as extensions when compiling for + older language versions. + + * Generic selection expression with a type operand. + * Support ++ and -- on complex values. + * Accessing byte arrays. + * alignof of an incomplete array type. + * Obsolete implicitly octal literals and add delimited escape + sequences (just partially implemented, support for new syntax + added but nothing deprecated yet). + * Named loops. + * More Modern Bit Utilities (addition of __builtin_stdc_rotate_left + and __builtin_stdc_rotate_right builtins for use in future C + library headers). + * Case range expressions. + * if declarations. + * Introduce complex literals. + * Abs Without Undefined Behavior (addition of builtins for use in + future C library headers). + * Allow zero length operations on null pointers (just the compiler + side, C library headers will need adjustments too if using + nonnull attribute). + + +C++ + + * Several C++26 features have been implemented: + + * P2558R2, Add @, $, and ` to the basic character set (PR110343) + * P2552R3, On the ignorability of standard attributes (PR110345) + * P2662R3, Pack indexing (PR113798) + * P0609R3, Attributes for structured bindings (PR114456) + * P2573R2, = delete("reason"); (PR114458) + * P2893R3, Variadic friends (PR114459) + * P3034R1, Disallow module declarations to be macros (PR114461) + * P2747R2, constexpr placement new (PR115744) + * P0963R3, Structured binding declaration as a condition (PR115745) + * P3144R2, Deleting a pointer to an incomplete type should be + ill-formed (PR115747) + * P3176R0, Oxford variadic comma (PR117786) + * P2865R5, Removing deprecated array comparisons (PR117788) + * P1967R14, #embed (PR119065) + * P3247R2, Deprecating the notion of trivial types (PR117787) + + * Several C++23 features have been implemented: + + * P2615R1, Meaningful exports (PR107688) + * P2718R0, Wording for P2644R1 Fix for Range-based for Loop (PR107637) + + * Several C++ Defect Reports have been resolved, e.g.: + + * DR 36, using-declarations in multiple-declaration contexts + * DR 882, Defining main as deleted + * DR 1363, Triviality vs multiple default constructors + * DR 1496, Triviality with deleted and missing default constructors + * DR 2387, Linkage of const-qualified variable template + * DR 2521, User-defined literals and reserved identifiers + * DR 2627, Bit-fields and narrowing conversions + * DR 2819, Cast from null pointer value in a constant expression (C++26 only) + * DR 2867, Order of initialization for structured bindings + * DR 2918, Consideration of constraints for address of overloaded function + + * Inline assembler statements now support constexpr generated + strings, analoguous to static_assert. + + * Qualified name lookup failure into the current instantiation, e.g. + this->non_existent, is now proactively diagnosed when parsing a + template. + + * The -fassume-sane-operators-new-delete option has been added and + enabled by default. This option allows control over some + optimizations around calls to replaceable global operators new and + delete. If a program overrides those replaceable global operators + and the replaced definitions read or modify global state visible to + the rest of the program, programs might need to be compiled with + -fno-assume-sane-operators-new-delete. + + * The -Wself-move warning now warns even in a + member-initializer-list. + + * The support for Concepts TS was removed. -fconcepts-ts has no + effect anymore. + + * A new option -Wtemplate-body was added, which can be used to + disable diagnosing errors when parsing a template. + + * C++ Modules have been greatly improved. + + * C++11 attributes are now supported even in C++98. + + + * New flag_enum attribute to indicate that the enumerators are used + in bitwise operations; this suppresses a -Wswitch warning. + + * The -Wdangling-reference warning has been improved: for example, + it doesn't warn for empty classes anymore. + + * The front end's handling of explicitly-defaulted functions has + been corrected to properly handle [dcl.fct.def.default]. The new + -Wdefaulted-function-deleted warning warns when an explicitly + defaulted function is deleted. + + * The implementation of DR 2789 was refined. + + * Compilation time speed ups, e.g. by improving hashing of template + specializations. + + * Support for __builtin_operator_new and __builtin_operator_delete + was added. See the manual for more info. + + * More prvalues are evaluated at compile time (git). + + * Various diagnostic improvements. + + +Runtime Library (libstdc++) + + * Debug assertions are now enabled by default for unoptimized + builds. Use -D_GLIBCXX_NO_ASSERTIONS to override this. + + * Improved experimental support for C++26, including: + * views::concat. + * Member visit. + * Type-checking std::format args. + + * Improved experimental support for C++23, including: + * std and std.compat modules (also supported for C++20). + * std::flat_map and std::flat_set. + * Clarify handling of encodings in localized formatting of chrono types. + + +D + + * Support for the D programming language has been updated to version + 2.111.0 of the language and run-time library. Full changelog for + this release and previous releases can be found on the dlang.org + website. + + * On supported targets, the version GNU_CET is now predefined when + the option -fcf-protection is used. The protection level is also + set in the traits key __traits(getTargetInfo, "CET"). + + * A new option -finclude-imports was added, which tells the compiler + to include imported modules in the compilation, as if they were + given on the command-line. + + +Fortran + + * Fortran 2018 and 2023 locality specifiers to do concurrent are + now supported. + + * Experimental support for unsigned modular integers, enabled by + -funsigned; see gfortran documentation for details. This follows + (J3/24-116). With this option in force, the selected_logical_kind + intrinsic function and, in the ISO_FORTRAN_ENV module, the named + constants logical{8,16,32,64} and real16 were added. The + ISO_C_BINDING module has been extended accordingly. + + * Missing commas separating descriptors in input/output format + strings are no longer permitted by default and are rejected at + run-time unless -std=legacy is used when compiling the main + program unit. See Fortran 2023 constraint C1302. + + * The Fortran module *.mod format generated by GCC 15 is + incompatible with the module format generated by GCC 8 - 14, but + GCC 15 can for compatibility still read GCC 8 - 14 created module + files. + + * Coarray support has been reworked to allow access to components in + derived types that have not been compiled with coarray support + enabled; especially, when the derived type is in a binary only + module. This has changed the ABI and may lead to link-time errors + with object files generated with a previous GCC version and to be + linked to the current caf_single library. If this library is to + be used, then it is recommended to recompile all artifacts. The + OpenCoarrays library is not affected, because it provides + backwards compatibility with the older ABI. + + * The -Wexternal-interface-mismatch option has been added. This + checks for mismatches between the argument lists in dummy external + arguments, and is implied by -Wall and -fc-prototypes-external + options. + + * The -fc-prototypes now also generates prototypes for interoperable + procedures with assumed shape and assumed rank arguments that + require the header file . + + +Modula-2 + + * The keyword FORWARD has been implemented in the compiler and is + available by default in all dialects. + + * The SYSTEM module now exports the datatype COFF_T mapping onto the + POSIX off_t type. The size of this datatype can be controlled by + the new option -fm2-file-offset-bits=. + + * Access to the GCC builtins clz, clzll, ctz and ctzll are now + available from the module Builtins. + + +New Targets and Target Specific Improvements + + +AArch64 + + * Support has been added for the AArch64 MinGW target + (aarch64-w64-mingw32). At present, this target supports C and C++ + for base Armv8-A, but with some caveats: + + * Although most variadic functions work, the implementation of + them is not yet complete. + * C++ exception handling is not yet implemented. + + Further work is planned for GCC 16. + + * As noted above, support for ILP32 (-mabi=ilp32) has been + deprecated and will be removed in a future release. aarch64*-elf + targets no longer build the ILP32 multilibs. + + * The following architecture level is now supported by -march and + related source-level constructs (GCC identifiers in parentheses): + + * Armv9.5-A (arm9.5-a) + + * The following CPUs are now supported by -mcpu, -mtune, and related + source-level constructs (GCC identifiers in parentheses): + + * Apple A12 (apple-a12) + * Apple M1 (apple-m1) + * Apple M2 (apple-m2) + * Apple M3 (apple-m3) + * Arm Cortex-A520AE (cortex-a520ae) + * Arm Cortex-A720AE (cortex-a720ae) + * Arm Cortex-A725 (cortex-a725) + * Arm Cortex-R82AE (cortex-r82ae) + * Arm Cortex-X925 (cortex-x925) + * Arm Neoverse N3 (neoverse-n3) + * Arm Neoverse V3 (neoverse-v3) + * Arm Neoverse V3AE (neoverse-v3ae) + * FUJITSU-MONAKA (fujitsu-monaka) + * NVIDIA Grace (grace) + * NVIDIA Olympus (olympus) + * Qualcomm Oryon-1 (oryon-1) + + * The following features are now supported by -march, -mcpu, and + related source-level constructs (GCC modifiers in parentheses): + + * FEAT_CPA (+cpa), enabled by default for Arm9.5-A and above + * FEAT_FAMINMAX (+faminmax), enabled by default for Arm9.5-A and above + * FEAT_FCMA (+fcma), enabled by default for Armv8.3-A and above + * FEAT_FLAGM2 (+flagm2), enabled by default for Armv8.5-A and above + * FEAT_FP8 (+fp8) + * FEAT_FP8DOT2 (+fp8dot2) + * FEAT_FP8DOT4 (+fp8dot4) + * FEAT_FP8FMA (+fp8fma) + * FEAT_FRINTTS (+frintts), enabled by default for Armv8.5-A and above + * FEAT_JSCVT (+jscvt), enabled by default for Armv8.3-A and above + * FEAT_LUT (+lut), enabled by default for Arm9.5-A and above + * FEAT_LRCPC2 (+rcpc2), enabled by default for Armv8.4-A and above + * FEAT_SME_B16B16 (+sme-b16b16) + * FEAT_SME_F16F16 (+sme-f16f16) + * FEAT_SME2p1 (+sme2p1) + * FEAT_SSVE_FP8DOT2 (+ssve-fp8dot2) + * FEAT_SSVE_FP8DOT4 (+ssve-fp8dot4) + * FEAT_SSVE_FP8FMA (+ssve-fp8fma) + * FEAT_SVE_B16B16 (+sve-b16b16) + * FEAT_SVE2p1 (+sve2p1), enabled by default for Armv9.4-A and above + * FEAT_WFXT (+wfxt), enabled by default for Armv8.7-A and above + * FEAT_XS (+xs), enabled by default for Armv8.7-A and above + + The features listed as being enabled by default for Armv8.7-A or + earlier were previously only selectable using the associated + architecture level. For example, FEAT_FCMA was previously + selected by -march=armv8.3-a and above (as it still is), but it + wasn't previously selectable independently. + + * -mbranch-protection has been extended to support the Guarded + Control Stack (GCS) extension. This support is included in + -mbranch-protection=standard and can be enabled individually using + -mbranch-protection=gcs. + + * The following additional changes have been made to the + command-line options: + + * In order to align with other tools, the SME feature modifier + +sme no longer enables SVE. However, GCC does not yet support + using SME without SVE and instead rejects such combinations with + a "not implemented" error. + + * The options -mfix-cortex-a53-835769 and -mfix-cortex-a53-843419 + are now silently ignored if the selected architecture is + incompatible with Cortex-A53. This is particularly useful for + toolchains that are configured to apply the Cortex-A53 workarounds + by default. For example, all other things being equal, a + toolchain configured with --enable-fix-cortex-a53-835769 now + produces the same code for -mcpu=neoverse-n2 as a toolchain + configured without --enable-fix-cortex-a53-835769. + + * -mcpu=native now handles unrecognized heterogeneous systems by + detecting which individual architecture features are supported + by the CPUs. This matches the preexisting behavior for unknown + homogeneous systems. + + * The first scheduling pass (-fschedule-insns) is no longer + enabled by default at -O2 for AArch64 targets. The pass is + still enabled by default at -O3 and -Ofast. + + * Support has been added for the following features of the Arm C + Language Extensions (ACLE): + + * guarded control stacks + * lookup table instructions with 2-bit and 4-bit indices + (predefined macro __ARM_FEATURE_LUT, enabled by +lut) + * floating-point absolute minimum and maximum instructions + (predefined macro __ARM_FEATURE_FAMINMAX, enabled by +faminmax) + + * FP8 conversions (predefined macro __ARM_FEATURE_FP8, enabled by +fp8) + + * FP8 2-way dot product to half precision instructions (predefined + macro __ARM_FEATURE_FP8DOT2, enabled by +fp8dot2) + + * FP8 4-way dot product to single precision instructions + (predefined macro __ARM_FEATURE_FP8DOT4, enabled by +fp8dot4) + + * FP8 multiply-accumulate to half precision and single precision + instructions (predefined macro __ARM_FEATURE_FP8FMA, enabled by + +fp8fma) + + * SVE FP8 2-way dot product to half precision instructions + (predefined macro __ARM_FEATURE_SSVE_FP8DOT2, enabled by + +ssve-fp8dot2) + + * SVE FP8 4-way dot product to single precision instructions + (predefined macro __ARM_FEATURE_SSVE_FP8DOT4, enabled by + +ssve-fp8dot4) + + * SVE FP8 multiply-accumulate to half precision and single + precision instructions (predefined macro + __ARM_FEATURE_SSVE_FP8FMA, enabled by +ssve-fp8fma) + + * SVE2.1 instructions (predefined macro __ARM_FEATURE_SVE2p1, + enabled by +sve2p1) + + * SVE non-widening bfloat16 instructions (predefined macro + __ARM_FEATURE_SVE_B16B16, enabled by +sve-b16b16) + + * SME2.1 instructions (predefined macro __ARM_FEATURE_SME2p1, + enabled by +sme2p1) + + * SME non-widening bfloat16 instructions (predefined macro + __ARM_FEATURE_SME_B16B16, enabled by +sme-b16b16) + + * SME half-precision instructions (predefined macro + __ARM_FEATURE_SME_F16F16, enabled by +sme-f16f16) + + * using C and C++ prefix operators, infix operators, and postfix + operators with scalable SVE ACLE types (predefined macro + __ARM_FEATURE_SVE_VECTOR_OPERATORS==2, enabled by +sve) + + * __fma (in arm_acle.h) + * __fmaf (in arm_acle.h) + * __chkfeat (in arm_acle.h) + + * In addition, the following changes have been made to preexisting + ACLE features: + + * The macros __ARM_FEATURE_BF16 and __ARM_FEATURE_SVE_BF16 are now + predefined when the associated support is available. Previous + versions of GCC provided the associated intrinsics but did not + predefine the macros. + + * OpenMP tasks can now share scalable SVE vectors and predicates. + However, offloading of scalable vectors and predicates is not + supported. + + * ACLE system register functions (such as __arm_rsr and __arm_wsr) + no longer try to enforce the minimum architectural requirement. + + * A warning is reported if code attempts to use the Function + Multi-Versioning feature. GCC's current implementation of this + feature is still experimental and it does not conform to the + ACLE specification. + + * Support has been added for the indirect_return function-type + attribute, which indicates that a function might return via an + indirect branch instead of via a normal return instruction. + + * 128-bit atomic operations have been extended to make use of + FEAT_LRCPC3 instructions, when support for the instructions is + detected at runtime. + + * There have been many code-generation improvements to the AArch64 port. + Some examples are: + + * automatic use of AArch64 CRC instructions + * automatic use of AArch64 saturating vector arithmetic instructions + * better code generation of population counts + * improved handling of floating-point and vector immediates + * improved handling of vector permutations + * more use of SVE instructions to optimize Advanced SIMD code + * more folding and simplification of SVE ACLE intrinsics + * improved CPU-specific tuning + * improved register allocation, such as eliminating some vector moves + + +AMD GPU (GCN) + + * The standard C++ library (libstdc++) is now supported and enabled. + + * Experimental support for supporting generic devices has been + added; specifying gfx9-generic, gfx10-3-generic, or gfx11-generic + to -march= will generate code that can run on all devices of a + series. Additionally, the following specific devices are now have + experimental support, all of which are compatible with a listed + generic: gfx902, gfx904, gfx909, gfx1031, gfx1032, gfx1033, + gfx1034, gfx1035, gfx1101, gfx1102, gfx1150, and gfx1151. To use + any of the listed new devices including the generic ones, GCC has + to be configured to build the runtime library for the device. Note + that generic support requires ROCm 6.4.0 (or newer). For details, + consult GCC's installation notes. + + * Support for Fiji (gfx803) devices has been removed (this was + already deprecated in GCC 14). + + +AVR + + * Support has been added for the signal(num) and interrupt(num) + function attributes that allow to specify the interrupt vector + number num as an argument. It allows to use static functions as + interrupt handlers, and also functions defined in a C++ namespace. + + * Support has been added for the noblock function attribute. It can + be specified together with the signal attribute to indicate that + the interrupt service routine should start with a SEI instruction + to globally re-enable interrupts. The difference to the interrupt + attribute is that the noblock attribute just acts like a flag and + does not impose a specific function name. + + * Support has been added for the __builtin_avr_mask1 built-in + function. It can be used to compute some bit masks when code like + 1 << offset is not fast enough. + + * Support has been added for a new 24-bit named address space + __flashx. It is similar to the __memx address space introduced in + v4.7, but reading is a bit more efficient since it only supports + reading from program memory. Objects in the __flashx address space + are located in the .progmemx.data section. + + * Apart from the built-in types __int24 and __uint24 supported since + v4.7, support has been added for the signed __int24 and unsigned + __int24 types. + + * Code generation for the 32-bit integer shifts with constant offset + has been improved. The code size may slightly increase even when + optimizing for code size with -Os. + + * Support has been added for a compact vector table as supported by + some AVR devices. It can be activated by the new command-line + option -mcvt. It links crtmcu-cvt.o as startup code which is + supported since AVR-LibC v2.3. + + * Support has been added for the new option -mno-call-main. Instead + of calling main, it will be located in section .init9. + + * New AVR specific optimizations have been added. They can be + controlled by the new command-line options -mfuse-move, + -msplit-ldst, -msplit-bit-shift and -muse-nonzero-bits. + + +IA-32/x86-64 + + * New ISA extension support for Intel AMX-AVX512 was added. + AMX-AVX512 intrinsics are available via the -mamx-avx512 compiler + switch. + + * New ISA extension support for Intel AMX-FP8 was added. AMX-FP8 + intrinsics are available via the -mamx-fp8 compiler switch. + + * New ISA extension support for Intel AMX-MOVRS was added. + AMX-MOVRS intrinsics are available via the -mamx-movrs compiler + switch. + + * New ISA extension support for Intel AMX-TF32 was added. + AMX-TF32 intrinsics are available via the -mamx-tf32 + compiler switch. + + * New ISA extension support for Intel AMX-TRANSPOSE was added. + AMX-TRANSPOSE intrinsics are available via the -mamx-transpose + compiler switch. + + * All of new feature support for Intel APX expect for CFCMOV was + added, including CCMP/CTEST, NF and ZU. APX support is available + via the -mapxf compiler switch. + + * New ISA extension support for Intel AVX10.2 was added. AVX10.2 + intrinsics are available via the -mavx10.2 compiler switch. + + * New ISA extension support for Intel MOVRS was added. MOVRS + intrinsics are available via the -mmovrs compiler switch. MOVRS + vector intrinsics are available via the -mmovrs -mavx10.2 compiler + switches. + + * EVEX version support for Intel SM4 was added. New 512-bit SM4 + intrinsics are available via the -msm4 -mavx10.2 compiler + switches. + + * GCC now supports the Intel CPU named Diamond Rapids through + -march=diamondrapids. Based on Granite Rapids, the switch further + enables the AMX-AVX512, AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, + APX_F, AVX10.2, AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT16, + AVX-VNNI-INT8, CMPccXADD, MOVRS, SHA512, SM3, SM4, and USER_MSR ISA + extensions. + + * Support for Xeon Phi CPUs (a.k.a. Knight Landing and Knight Mill) + were removed in GCC 15. GCC will no longer accept -march=knl, + -march=knm, -mavx5124fmaps, -mavx5124vnniw, -mavx512er, + -mavx512pf, -mprefetchwt1, -mtune=knl, and -mtune=knm compiler + switches. + + * -mavx10.1-256, -mavx10.1-512, and mevex512 are + -deprecated. Meanwhile, -mavx10.1 enables AVX10.1 intrinsics with + -512-bit vector support, while in GCC 14.1 and GCC 14.2, it only + -enables 256-bit vector support. GCC will emit a warning when + -using these compiler switches. -mavx10.1-256, mavx10.1-512, and + --mevex512 will be removed in GCC 16 together with the warning for + -the behavior change on mavx10.1. + + * With the -mveclibabi compiler switch GCC is able to generate + vectorized calls to external libraries. GCC 15 newly supports + generating vectorized math calls to the math library from AMD + Optimizing CPU Libraries (AOCL LibM). This option is available + through -mveclibabi=aocl. GCC still supports generating calls to + AMD Core Math Library (ACML). However, that library is end-of-life + and AOCL offers many more vectorized functions. + + +LoongArch + + * Support has been added for target attributes and pragmas. For more + details on available attributes and pragmas, including their + proper usage, please refer to the provided documentation. + + * Support has been added for the new option + -mannotate-tablejump. Which can create an annotation section + .discard.tablejump_annotate to correlate the jirl instruction and + the jump table. + + * Add CRC expander to generate faster CRC. + + * Add ABI names for FPR. + + +NVPTX + + * The standard C++ library (libstdc++) is now supported and enabled. + + * GCC's nvptx target now supports constructors and destructors. For + this, a recent version of nvptx-tools is required. + + +SH + + * Bare metal sh-elf targets are now using the newer soft-fp library + for improved performance of floating-point emulation on CPUs + without hardware floating-point support. + + +Operating Systems + +PowerPC Darwin + + * Fortran's IEEE modules are now supported on Darwin PowerPC. + + +Other significant improvements + + +GCC 15.1 + +This is the list of problem reports (PRs) from GCC's bug tracking +system that are known to be fixed in the 15.1 release. This list might +not be complete (that is, it is possible that some PRs that have been +fixed are not listed here). + +For questions related to the use of GCC, please consult these web +pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org +mailing list might help. Comments on these web pages and the +development of GCC are welcome on our developer list at +gcc@gcc.gnu.org. All of our lists have public archives. + + +Copyright (C) Free Software Foundation, Inc. Verbatim copying and +distribution of this entire article is permitted in any medium, +provided this notice is preserved. + +These pages are maintained by the GCC team. Last modified 2025-04-25. diff --git a/NEWS.html b/NEWS.html new file mode 100644 index 0000000..adbfc7d --- /dev/null +++ b/NEWS.html @@ -0,0 +1,1251 @@ + + + + + + + + +GCC 15 Release Series — Changes, New Features, and Fixes +- GNU Project + + + + + + + + + + +

GCC 15 Release Series
Changes, New Features, and Fixes

+ +

+This page is a "brief" summary of some of the huge number of improvements +in GCC 15. +You may also want to check out our +Porting to GCC 15 page and the +full GCC documentation. +

+ + +

Caveats

+
    +
  • Support for Nios II targets, which was marked obsolete in GCC 14, + has now been removed entirely. +
  • +
  • In the AArch64 port, support for ILP32 (-mabi=ilp32) has + been deprecated and will be removed in a future release. +
  • +
  • {0} initializer in C or C++ for unions no longer + guarantees clearing of the whole union (except for static storage + duration initialization), it just initializes the first + union member to zero. If initialization of the whole union including + padding bits is desirable, use {} (valid in C23 or C++) + or use -fzero-init-padding-bits=unions option to restore + old GCC behavior.
  • +
+ + + +

General Improvements

+ +
    +
  • The default vectorizer cost model at -O2 has been enhanced + to handle unknown tripcount. But it still disables vectorization of loops + when any runtime check for data dependence or alignment is required, + it also disables vectorization of epilogue loops but otherwise is equal + to the cheap cost model. +
  • +
  • The vectorizer now supports vectorizing loops with early exits where + the number of elements for the input pointers are unknown through peeling + for alignment. This is supported for only for loops with fixed vector + lengths. +
  • +
  • -ftime-report now only reports monotonic run time instead of + system and user time. This reduces the overhead of the option significantly, + making it possible to use in standard build systems. +
  • +
  • Incremental Link-Time Optimizations significantly reduce average + recompilation time of LTO when doing small code edits + (e.g. editing a single function). + Enable with -flto-incremental=. +
  • +
  • + For offloading using OpenMP and OpenACC, issues preventing some + host–device architecture combinations have been resolved. In particular, + offloading from aarch64 hosts to nvptx devices is now supported. Additionally, + the support for using C++ in offload regions has been extended. +
  • +
  • + Improvements for compiling very large input files. The compile time for + large input files with -Wmisleading-indentation has been + significantly improved. The compiler can now track columnn numbers larger + than 4096. Very large source files have more accurate location reporting. +
  • +
+ + + +

New Languages and Language specific improvements

+ +

OpenMP

+ +

+ See the + GNU Offloading and Multi-Processing Project (GOMP) + page for general information. +

+ +
    +
  • + Support for unified-shared memory has been added for some AMD and Nvidia + GPU devices, enabled when using the unified_shared_memory + clause to the requires directive. + The OpenMP 6.0 self_maps clause is also now supported. + For details, + see the offload-target specifics section in the + GNU Offloading and Multi Processing Runtime Library Manual. +
  • +
  • + GCC added ompx_gnu_pinned_mem_alloc as a predefined + allocator and, for C++, allocator class templates in the + omp::allocator namespace for the predefined allocators as + specified in the OpenMP specification 5.0, including + omp::allocator::null_allocator of OpenMP 6.0 and + ompx::allocator::gnu_pinned_mem; the allocator templates + can be used with C++ containers such as std::vector. +
  • +
  • + In C and Fortran, the allocate directive now supports + static variables; stack variables were previously supported in + those languages. C++ support is not available yet. +
  • +
  • + Offloading improvements: + On Nvidia + GPUs, writing to the terminal from OpenMP target regions (but not from + OpenACC compute regions) is now also supported in Fortran; in C/C++ and + on AMD GPUs this was already supported before with both OpenMP and OpenACC. + Constructors and destructors on the device side for + declare target static aggregates are now handled. +
  • +
  • For Fortran, mapping derived-type variables with allocatable components + is now supported.
  • +
  • + The OpenMP 5.1 unroll and tile + loop-transforming constructs are now supported. +
  • +
  • OpenMP 5.0 metadirectives are now supported, as are OpenMP 5.1 dynamic + selectors in both metadirective and + declare variant (the latter with some restrictions). +
  • +
  • + The interop construct and the OpenMP interoperability API + routines for C, C++ and Fortran are now implemented, including the + OpenMP 6.0 additions. This includes foreign-runtime support for Cuda, Cuda Driver, and HIP on Nvida GPUs and for HIP and HSA on AMD GPUs. +
  • +
  • + The OpenMP 5.1 dispatch construct has been implemented + with support for the adjust_args and append_args + clauses to the declare variant directive, including the + following OpenMP 6.0 additions: the interop clause to + dispatch and the syntax extensions to append_args + are supported. +
  • +
  • + OpenMP 6.0: The get_device_from_uid and + omp_get_uid_from_device API routines have been added. +
  • +
+ +

COBOL

+
    +
  • GCC now includes an ISO COBOL compiler, gcobol. It has been + tested on x86-64 and AArch64 targets. It is not expected to work + on 32-bit systems. Efforts are underway to adapt it to other machine + architectures that support native 128-bit computation.
  • +
  • gcobol passes much of the NIST CCVS/85 test suite (except for parts + that are now obsolete). It uses ISO/IEC 1989:2023 as a + reference specification. Some parts of that document, notably + object-orientation features, are yet to be implemented. Beyond + ISO, gcobol recognizes some syntax common on other compilers, + with special attention given to IBM. +

    More information about GCC COBOL can be found at + the COBOLworx website.

  • +
+ +

Ada

+
    +
  • + GNAT now allows + the 'Round + attribute also for ordinary fixed-point types. +
  • +
  • + The new GNAT + attribute 'Super + can be applied to objects of tagged types in order to obtain a view + conversion to the most immediate specific parent type. +
  • +
  • + Mutably tagged types with a defined size are now available + through the use of Size'Class. This allows defining a maximum + size for the tagged. Example: +
    +type Base is tagged null record with Size'Class => 16 * 8;
    +     -- Size in bits (128 bits, or 16 bytes)
    +
    +type Derived_Type is new Base with record Data_Field : Integer; end record;
    +     -- ERROR if Derived_Type exceeds 16 bytes
    +
    +
  • +
  • + New Finalizable + aspect. It is a GNAT language extension which serves as a lightweight + alternative to controlled types. +
    +type T is record
    +     ...
    +end record with Finalizable => (Initialize           => Initialize,
    +                                Adjust               => Adjust,
    +                                Finalize             => Finalize,
    +                                Relaxed_Finalization => True);
    +
    +procedure Adjust     (Obj : in out T);
    +procedure Finalize   (Obj : in out T);
    +procedure Initialize (Obj : in out T);
    +
    +
  • +
  • + The + aspect No_Raise + has been added, it declares that a subprogram cannot raise an exception. +
  • +
  • + The + aspect External_Initialization + has been added, it allows for data to be initialized using an external file + which is loaded during compilation time. +
  • +
  • + The + aspect Exit_Cases + has been added to annotate functions and procedures with side effects in + SPARK + (see SPARK + reference manual) . It can be used to partition the input state into a + list of cases and specify, for each case, how the subprogram is allowed to + terminate. +
  • +
  • + Language extensions are enabled through the use of pragma + Extensions_Allowed (On | Off | All_Extensions); which has had its + syntax changed. An argument of All_Extensions has the same + effect as On, except + that some + extra experimental extensions are enabled. +
  • +
  • + Several new compilation flags have been added, some examples + include -gnatis, -gnatw.n, -gnatw_l + and -gnatw.v. + The internal debugging utilities for the compiler have also received a lot + of new options, please refer + to debug.adb + for more information. +
  • +
  • + The diagnostics code has seen a major refactor, it now supports the sarif + format -fdiagnostics-format=sarif-file among other + improvements. More changes are expected in following releases. +
  • +
  • + System.Image_A has now printing routines to output address + information in HEX. +
  • +
  • + Several program units have had contracts added to them and SPARK analysis + has been enabled. +
  • +
  • + Support for FreeBSD, Android and aarch64 targets has been improved. +
  • +
  • + Task priorities on MinGW have been reworked. +
  • +
  • + The documentation has been rearanged for clarity, mainly the sections + related to tasking and platform dependent information. +
  • +
  • + REMOVAL: Generic_Formal_Hash_Table has been removed, + the SPARK + Library is recommended as a substitute. +
  • +
+ + +

C family

+
    +
  • A + musttail statement attribute was added to enforce tail calls.
  • +
  • Extended inline assembler statements + can now be used with some limitations outside of functions as well. + New constraints have been added for defining symbols or using symbols + inside of inline assembler, and a new generic operand modifier has + been added to allow printing those regardless of PIC. For example: +
    +struct S { int a, b, c; };
    +extern foo (void);
    +extern char var;
    +int var2;
    +asm (".text; %cc0: mov %cc2, %%r0; .previous;"
    +     ".rodata: %cc1: .byte %3; .previous" : :
    +     ":" (foo), /* Tell compiler asm defines foo function. */
    +     ":" (&var), /* Tell compiler asm defines var variable.  */
    +     "-s" (var2), /* Tell compiler asm uses var2 variable.  */
    +                  /* "s" would work too but might not work with -fpic.  */
    +     "i" (sizeof (struct S))); /* It is possible to pass constants to toplevel asm.  */
    +
    +
  • +
  • The "redzone" clobber is now allowed in inline + assembler statements to describe that the assembler can overwrite + memory in the stack red zone (e.g. on x86-64 or PowerPC).
  • +
  • The + nonnull_if_nonzero function attribute has been added to describe + functions where some pointer parameter may be NULL only + if some other parameter is zero.
  • +
  • The + -Wtrailing-whitespace= and + + -Wleading-whitespace= options have been added to + diagnose certain whitespace characters at the end of source lines or + whitespace characters at the start of source lines violating certain + indentation styles.
  • +
  • The + -Wheader-guard warning has been added and enabled + in -Wall to warn about some inconsistencies in header + file guarding macros.
  • +
+ +

C

+
    +
  • C23 by default: GCC 15 changes the default language version + for C compilation from + -std=gnu17 + to + -std=gnu23. + If your code relies on older versions of the C standard, you will need to + either add + -std= + to your build flags, or port your code; see the porting notes. +
  • +
  • Some more C23 features have been implemented: +
      +
    • #embed preprocessing directive support.
    • +
    • Support for unsequenced and reproducible + attributes.
    • +
    • __STDC_VERSION__ predefined macro value changed + for -std=c23 or -std=gnu23 to + 202311L.
    • +
    +
  • +
  • Some new features from the upcoming C2Y revision of the ISO C + standard are supported with -std=c2y + and -std=gnu2y. Some of these features are also + supported as extensions when compiling for older language versions. +
      +
    • Generic selection expression with a type operand.
    • +
    • Support ++ and -- on complex values.
    • +
    • Accessing byte arrays.
    • +
    • alignof of an incomplete array type.
    • +
    • Obsolete implicitly octal literals and add delimited escape + sequences (just partially implemented, support for new syntax added + but nothing deprecated yet).
    • +
    • Named loops.
    • +
    • More Modern Bit Utilities (addition of + __builtin_stdc_rotate_left and + __builtin_stdc_rotate_right builtins for use in future + C library <stdbit.h> headers).
    • +
    • Case range expressions.
    • +
    • if declarations.
    • +
    • Introduce complex literals.
    • +
    • Abs Without Undefined Behavior (addition of builtins for + use in future C library <stdlib.h> headers).
    • +
    • Allow zero length operations on null pointers (just the compiler + side, C library headers will need adjustments too if using + nonnull attribute).
    • +
    +
  • +
+ +

C++

+ +
    +
  • Several C++26 features have been implemented: + +
  • +
  • Several C++23 features have been implemented: + +
  • +
  • Several C++ Defect Reports have been resolved, e.g.: +
      +
    • DR 36, + using-declarations in multiple-declaration contexts
    • +
    • DR 882, + Defining main as deleted
    • +
    • DR 1363, + Triviality vs multiple default constructors
    • +
    • DR 1496, + Triviality with deleted and missing default constructors
    • +
    • DR 2387, + Linkage of const-qualified variable template
    • +
    • DR 2521, + User-defined literals and reserved identifiers
    • +
    • DR 2627, + Bit-fields and narrowing conversions
    • +
    • DR 2819, + Cast from null pointer value in a constant expression (C++26 only)
    • +
    • DR 2867, + Order of initialization for structured bindings
    • +
    • DR 2918, + Consideration of constraints for address of overloaded function
    • +
    +
  • +
  • Inline assembler statements now support + constexpr generated strings, + analoguous to static_assert.
  • +
  • + + Qualified name lookup failure into the current instantiation, e.g. + this->non_existent, is now proactively diagnosed + when parsing a template. +
  • +
  • The + -fassume-sane-operators-new-delete option has been + added and enabled by default. This option allows control over some + optimizations around calls to replaceable global operators new and + delete. If a program overrides those replaceable global operators and + the replaced definitions read or modify global state visible to the + rest of the program, programs might need to be compiled with + -fno-assume-sane-operators-new-delete.
  • +
  • + + The + -Wself-move warning now warns even in a + member-initializer-list. +
  • +
  • + + The support for Concepts TS was removed. -fconcepts-ts has no + effect anymore. +
  • +
  • + + A new option + + -Wtemplate-body was added, which can be used to disable + diagnosing errors when parsing a template. +
  • +
  • + C++ Modules have been greatly improved. +
  • +
  • + + C++11 attributes are now supported even in C++98. +
  • +
  • + New + + flag_enum attribute to indicate that the enumerators + are used in bitwise operations; this suppresses a -Wswitch + warning. +
  • +
  • + The + -Wdangling-reference warning has been improved: for + example, it doesn't warn for empty classes anymore. +
  • +
  • + The front end's handling of explicitly-defaulted functions has been + corrected to properly handle [dcl.fct.def.default]. The + new + + -Wdefaulted-function-deleted warning warns when an + explicitly defaulted function is deleted. +
  • +
  • + The implementation of DR 2789 + was refined. +
  • +
  • + + Compilation time speed ups, e.g. by improving hashing of template + specializations. +
  • +
  • + + Support for __builtin_operator_new and + __builtin_operator_delete was added. See + + the manual for more info. +
  • +
  • + + More prvalues are evaluated at compile time + (git). +
  • +
  • + Various diagnostic improvements. +
  • +
+

Runtime Library (libstdc++)

+ +
    +
  • Debug assertions are now enabled by default for unoptimized builds. + Use -D_GLIBCXX_NO_ASSERTIONS to override this. +
  • +
  • Improved experimental support for C++26, including: +
      +
    • views::concat.
    • +
    • Member visit.
    • +
    • Type-checking std::format args.
    • +
    +
  • +
  • Improved experimental support for C++23, including: +
      +
    • + std and std.compat modules + (also supported for C++20). +
    • +
    • + std::flat_map and std::flat_set. +
    • +
    • + Clarify handling of encodings in localized formatting of chrono types. +
    • +
    +
  • +
+ +

D

+
    +
  • Support for the D programming language has been updated to version + 2.111.0 of the language and run-time library. Full changelog for this + release and previous releases can be found on the + dlang.org + website. +
  • +
  • On supported targets, the version GNU_CET is now predefined + when the option -fcf-protection is used. The protection level + is also set in the traits key __traits(getTargetInfo, "CET"). +
  • +
  • A new option + + -finclude-imports was added, which tells the compiler to + include imported modules in the compilation, as if they were given on the + command-line. +
  • +
+ +

Fortran

+ +
    +
  • + Fortran 2018 and 2023 locality specifiers to do concurrent are + now supported. +
  • +
  • + Experimental support for unsigned modular integers, + enabled by -funsigned; + see + gfortran documentation for details. This follows + (J3/24-116). + With this option in force, the selected_logical_kind + intrinsic function and, in the ISO_FORTRAN_ENV + module, the named constants logical{8,16,32,64} and + real16 were added. The ISO_C_BINDING + module has been extended accordingly. +
  • +
  • Missing commas separating descriptors in input/output format strings are no + longer permitted by default and are rejected at run-time unless -std=legacy + is used when compiling the main program unit. See Fortran 2023 constraint C1302. +
  • +
  • The Fortran module *.mod format generated by GCC 15 is + incompatible with the module format generated by GCC 8 - 14, but GCC + 15 can for compatibility still read GCC 8 - 14 created module + files.
  • +
  • Coarray support has been reworked to allow access to components in derived + types that have not been compiled with coarray support enabled; + especially, when the derived type is in a binary only module. This has + changed the ABI and may lead to link-time errors with object files + generated with a previous GCC version and to be linked to the current + caf_single library. If this library is to be used, then + it is recommended to recompile all artifacts. The OpenCoarrays library + is not affected, because it provides backwards compatibility with the + older ABI.
  • +
  • + The -Wexternal-interface-mismatch option has been + added. This checks for mismatches between the argument lists in + dummy external arguments, and is implied by -Wall + and -fc-prototypes-external options. +
  • +
  • + The -fc-prototypes now also generates prototypes for + interoperable procedures with assumed shape and assumed rank + arguments that require the header file + <ISO_Fortran_binding.h>. +
  • +
+ + + + + + +

Modula-2

+
    +
  • The keyword FORWARD has been implemented in the + compiler and is available by default in all dialects. +
  • +
  • The SYSTEM module now exports the + datatype COFF_T mapping onto the POSIX off_t + type. The size of this datatype can be controlled by the new + option -fm2-file-offset-bits=. +
  • +
  • Access to the GCC + builtins clz, clzll, ctz + and ctzll are now available from the + module Builtins. +
  • +
+ + +

New Targets and Target Specific Improvements

+ +

AArch64

+ +
    +
  • Support has been added for the AArch64 MinGW target + (aarch64-w64-mingw32). At present, this target + supports C and C++ for base Armv8-A, but with some caveats: +
      +
    • Although most variadic functions work, the implementation + of them is not yet complete. +
    • +
    • C++ exception handling is not yet implemented.
    • +
    + Further work is planned for GCC 16. +
  • +
  • As noted above, support for ILP32 (-mabi=ilp32) + has been deprecated and will be removed in a future release. + aarch64*-elf targets no longer build the ILP32 multilibs. +
  • +
  • The following architecture level is now supported by + -march and related source-level constructs + (GCC identifiers in parentheses): +
      +
    • Armv9.5-A (arm9.5-a)
    • +
    +
  • +
  • The following CPUs are now supported by -mcpu, + -mtune, and related source-level constructs + (GCC identifiers in parentheses): +
      +
    • Apple A12 (apple-a12)
    • +
    • Apple M1 (apple-m1)
    • +
    • Apple M2 (apple-m2)
    • +
    • Apple M3 (apple-m3)
    • +
    • Arm Cortex-A520AE (cortex-a520ae)
    • +
    • Arm Cortex-A720AE (cortex-a720ae)
    • +
    • Arm Cortex-A725 (cortex-a725)
    • +
    • Arm Cortex-R82AE (cortex-r82ae)
    • +
    • Arm Cortex-X925 (cortex-x925)
    • +
    • Arm Neoverse N3 (neoverse-n3)
    • +
    • Arm Neoverse V3 (neoverse-v3)
    • +
    • Arm Neoverse V3AE (neoverse-v3ae)
    • +
    • FUJITSU-MONAKA (fujitsu-monaka)
    • +
    • NVIDIA Grace (grace)
    • +
    • NVIDIA Olympus (olympus)
    • +
    • Qualcomm Oryon-1 (oryon-1)
    • +
    +
  • +
  • The following features are now supported by -march, + -mcpu, and related source-level constructs + (GCC modifiers in parentheses): +
      +
    • FEAT_CPA (+cpa), enabled by default for + Arm9.5-A and above +
    • +
    • FEAT_FAMINMAX (+faminmax), enabled by default for + Arm9.5-A and above +
    • +
    • FEAT_FCMA (+fcma), enabled by default for Armv8.3-A + and above +
    • +
    • FEAT_FLAGM2 (+flagm2), enabled by default for + Armv8.5-A and above +
    • +
    • FEAT_FP8 (+fp8)
    • +
    • FEAT_FP8DOT2 (+fp8dot2)
    • +
    • FEAT_FP8DOT4 (+fp8dot4)
    • +
    • FEAT_FP8FMA (+fp8fma)
    • +
    • FEAT_FRINTTS (+frintts), enabled by default for + Armv8.5-A and above +
    • +
    • FEAT_JSCVT (+jscvt), enabled by default for + Armv8.3-A and above +
    • +
    • FEAT_LUT (+lut), enabled by default for + Arm9.5-A and above +
    • +
    • FEAT_LRCPC2 (+rcpc2), enabled by default for + Armv8.4-A and above +
    • +
    • FEAT_SME_B16B16 (+sme-b16b16)
    • +
    • FEAT_SME_F16F16 (+sme-f16f16)
    • +
    • FEAT_SME2p1 (+sme2p1)
    • +
    • FEAT_SSVE_FP8DOT2 (+ssve-fp8dot2)
    • +
    • FEAT_SSVE_FP8DOT4 (+ssve-fp8dot4)
    • +
    • FEAT_SSVE_FP8FMA (+ssve-fp8fma)
    • +
    • FEAT_SVE_B16B16 (+sve-b16b16)
    • +
    • FEAT_SVE2p1 (+sve2p1), enabled by default for + Armv9.4-A and above +
    • +
    • FEAT_WFXT (+wfxt), enabled by default for + Armv8.7-A and above +
    • +
    • FEAT_XS (+xs), enabled by default for + Armv8.7-A and above +
    • +
    + The features listed as being enabled by default for Armv8.7-A or earlier + were previously only selectable using the associated architecture level. + For example, FEAT_FCMA was previously selected by + -march=armv8.3-a and above (as it still is), but it wasn't + previously selectable independently. +
  • +
  • -mbranch-protection has been extended to support + the Guarded Control Stack (GCS) extension. This support + is included in -mbranch-protection=standard and can + be enabled individually using -mbranch-protection=gcs. +
  • +
  • The following additional changes have been made to the + command-line options: +
      +
    • In order to align with other tools, the SME feature modifier + +sme no longer enables SVE. However, GCC does not + yet support using SME without SVE and instead rejects such + combinations with a “not implemented” error. +
    • +
    • The options -mfix-cortex-a53-835769 and + -mfix-cortex-a53-843419 are now silently ignored + if the selected architecture is incompatible with Cortex-A53. + This is particularly useful for toolchains that are configured + to apply the Cortex-A53 workarounds by default. For example, + all other things being equal, a toolchain configured with + --enable-fix-cortex-a53-835769 now produces the + same code for -mcpu=neoverse-n2 as a toolchain + configured without --enable-fix-cortex-a53-835769. +
    • +
    • -mcpu=native now handles unrecognized heterogeneous + systems by detecting which individual architecture features are + supported by the CPUs. This matches the preexisting behavior for + unknown homogeneous systems. +
    • +
    • The first scheduling pass (-fschedule-insns) is no + longer enabled by default at -O2 for AArch64 targets. + The pass is still enabled by default at -O3 and + -Ofast. +
    • +
    +
  • +
  • Support has been added for the following features of the Arm C + Language Extensions + (ACLE): +
      +
    • guarded control stacks
    • +
    • lookup table instructions with 2-bit and 4-bit indices + (predefined macro + __ARM_FEATURE_LUT, enabled by +lut) +
    • +
    • floating-point absolute minimum and maximum instructions + (predefined macro __ARM_FEATURE_FAMINMAX, + enabled by +faminmax) +
    • +
    • FP8 conversions (predefined macro + __ARM_FEATURE_FP8, enabled by +fp8) +
    • +
    • FP8 2-way dot product to half precision instructions + (predefined macro __ARM_FEATURE_FP8DOT2, + enabled by +fp8dot2) +
    • +
    • FP8 4-way dot product to single precision instructions + (predefined macro __ARM_FEATURE_FP8DOT4, + enabled by +fp8dot4) +
    • +
    • FP8 multiply-accumulate to half precision and single precision + instructions (predefined macro __ARM_FEATURE_FP8FMA, + enabled by +fp8fma) +
    • +
    • SVE FP8 2-way dot product to half precision instructions + (predefined macro __ARM_FEATURE_SSVE_FP8DOT2, + enabled by +ssve-fp8dot2) +
    • +
    • SVE FP8 4-way dot product to single precision instructions + (predefined macro __ARM_FEATURE_SSVE_FP8DOT4, + enabled by +ssve-fp8dot4) +
    • +
    • SVE FP8 multiply-accumulate to half precision and single precision + instructions (predefined macro __ARM_FEATURE_SSVE_FP8FMA, + enabled by +ssve-fp8fma) +
    • +
    • SVE2.1 instructions (predefined macro + __ARM_FEATURE_SVE2p1, enabled by +sve2p1) +
    • +
    • SVE non-widening bfloat16 instructions + (predefined macro __ARM_FEATURE_SVE_B16B16, + enabled by +sve-b16b16) +
    • +
    • SME2.1 instructions (predefined macro + __ARM_FEATURE_SME2p1, enabled by +sme2p1) +
    • +
    • SME non-widening bfloat16 instructions + (predefined macro __ARM_FEATURE_SME_B16B16, + enabled by +sme-b16b16) +
    • +
    • SME half-precision instructions + (predefined macro __ARM_FEATURE_SME_F16F16, + enabled by +sme-f16f16) +
    • +
    • using C and C++ prefix operators, infix operators, and postfix + operators with scalable SVE ACLE types + (predefined macro __ARM_FEATURE_SVE_VECTOR_OPERATORS==2, + enabled by +sve) +
    • +
    • __fma (in arm_acle.h)
    • +
    • __fmaf (in arm_acle.h)
    • +
    • __chkfeat (in arm_acle.h)
    • +
    +
  • +
  • In addition, the following changes have been made to preexisting + ACLE features: +
      +
    • The macros __ARM_FEATURE_BF16 and + __ARM_FEATURE_SVE_BF16 are now predefined when the + associated support is available. Previous versions of GCC provided + the associated intrinsics but did not predefine the macros. +
    • +
    • OpenMP tasks can now share scalable SVE vectors and predicates. + However, offloading of scalable vectors and predicates is not + supported. +
    • +
    • ACLE system register functions (such as __arm_rsr + and __arm_wsr) no longer try to enforce the minimum + architectural requirement. +
    • +
    • A warning is reported if code attempts to use the Function + Multi-Versioning feature. GCC's current implementation of this + feature is still experimental and it does not conform to the + ACLE specification. +
    • +
    +
  • +
  • Support has been added for the indirect_return + function-type attribute, which indicates that a function might return + via an indirect branch instead of via a normal return instruction. +
  • +
  • 128-bit atomic operations have been extended to make use of + FEAT_LRCPC3 instructions, when support for the instructions is + detected at runtime. +
  • +
  • There have been many code-generation improvements to the AArch64 port. + Some examples are: +
      +
    • automatic use of AArch64 CRC instructions
    • +
    • automatic use of AArch64 saturating vector arithmetic + instructions +
    • +
    • better code generation of population counts
    • +
    • improved handling of floating-point and vector immediates
    • +
    • improved handling of vector permutations
    • +
    • more use of SVE instructions to optimize Advanced SIMD code
    • +
    • more folding and simplification of SVE ACLE intrinsics
    • +
    • improved CPU-specific tuning
    • +
    • improved register allocation, such as eliminating some + vector moves +
    • +
    +
  • +
+ +

AMD GPU (GCN)

+ +
    +
  • The standard C++ library (libstdc++) is now supported and enabled.
  • +
  • Experimental support for supporting generic devices has been added; + specifying gfx9-generic, gfx10-3-generic, + or gfx11-generic to + + -march= will generate code that can run on all + devices of a series. Additionally, the following specific devices + are now have experimental support, all of which are compatible with a + listed generic: gfx902, gfx904, + gfx909, gfx1031, gfx1032, + gfx1033, gfx1034, gfx1035, + gfx1101, gfx1102, gfx1150, + and gfx1151. To use any of the listed new devices including + the generic ones, GCC has to be configured to build the runtime library + for the device. Note that generic support requires ROCm 6.4.0 (or newer). + For details, consult GCC's + + installation notes.
  • +
  • Support for Fiji (gfx803) devices has been removed (this was already + deprecated in GCC 14).
  • +
+ + + + + +

AVR

+ +
    +
  • Support has been added for the signal(num) + and interrupt(num) + function attributes + that allow to specify the interrupt vector number num + as an argument. + It allows to use static functions as interrupt handlers, and also + functions defined in a C++ namespace.
  • +
  • Support has been added for the noblock function attribute. + It can be specified together with the signal attribute to + indicate that the interrupt service routine should start with a + SEI instruction to globally re-enable interrupts. + The difference to the interrupt attribute is that the + noblock attribute just acts like a flag and does not + impose a specific function name.
  • +
  • Support has been added for the __builtin_avr_mask1 + built-in function. It can be used to compute some bit masks when + code like 1 << offset is not fast enough.
  • +
  • Support has been added for a new 24-bit + named address space __flashx. + It is similar to the __memx address space introduced in v4.7, + but reading is a bit more efficient since it only supports reading from + program memory. Objects in the __flashx address space are + located in the .progmemx.data section.
  • +
  • Apart from the built-in types __int24 and + __uint24 supported since v4.7, support has been added for the + signed __int24 and unsigned __int24 types.
  • +
  • Code generation for the 32-bit integer shifts with constant + offset has been improved. The code size may slightly increase even + when optimizing for code size with -Os.
  • +
  • Support has been added for a compact vector table as supported + by some AVR devices. It can be activated by the new command-line option + -mcvt. + It links crtmcu-cvt.o as startup code which + is supported since AVR-LibC v2.3.
  • +
  • Support has been added for the new option + -mno-call-main. Instead of calling main, + it will be located in section .init9.
  • +
  • New AVR specific optimizations have been added. + They can be controlled by the new command-line options + -mfuse-move, + -msplit-ldst, + -msplit-bit-shift and + -muse-nonzero-bits.
  • +
+ +

IA-32/x86-64

+ +
    +
  • New ISA extension support for Intel AMX-AVX512 was added. + AMX-AVX512 intrinsics are available via the -mamx-avx512 + compiler switch. +
  • +
  • New ISA extension support for Intel AMX-FP8 was added. + AMX-FP8 intrinsics are available via the -mamx-fp8 + compiler switch. +
  • +
  • New ISA extension support for Intel AMX-MOVRS was added. + AMX-MOVRS intrinsics are available via the -mamx-movrs + compiler switch. +
  • +
  • New ISA extension support for Intel AMX-TF32 was added. + AMX-TF32 intrinsics are available via the -mamx-tf32 + compiler switch. +
  • +
  • New ISA extension support for Intel AMX-TRANSPOSE was added. + AMX-TRANSPOSE intrinsics are available via the -mamx-transpose + compiler switch. +
  • +
  • All of new feature support for Intel APX expect for CFCMOV was added, + including CCMP/CTEST, NF and ZU. APX support is available via the + -mapxf compiler switch. +
  • +
  • New ISA extension support for Intel AVX10.2 was added. + AVX10.2 intrinsics are available via the -mavx10.2 + compiler switch. +
  • +
  • New ISA extension support for Intel MOVRS was added. + MOVRS intrinsics are available via the -mmovrs + compiler switch. MOVRS vector intrinsics are available via + the -mmovrs -mavx10.2 compiler switches. +
  • +
  • EVEX version support for Intel SM4 was added. + New 512-bit SM4 intrinsics are available via the + -msm4 -mavx10.2 compiler switches. +
  • +
  • GCC now supports the Intel CPU named Diamond Rapids through + -march=diamondrapids. + Based on Granite Rapids, the switch further enables the AMX-AVX512, + AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, APX_F, AVX10.2, AVX-IFMA, + AVX-NE-CONVERT, AVX-VNNI-INT16, AVX-VNNI-INT8, CMPccXADD, MOVRS, SHA512, + SM3, SM4, and USER_MSR ISA extensions. +
  • +
  • Support for Xeon Phi CPUs (a.k.a. Knight Landing and Knight Mill) were + removed in GCC 15. GCC will no longer accept -march=knl, + -march=knm, -mavx5124fmaps, + -mavx5124vnniw, -mavx512er, + -mavx512pf, -mprefetchwt1, + -mtune=knl, and -mtune=knm compiler switches. +
  • +
  • -mavx10.1-256, -mavx10.1-512, and + -mevex512 are deprecated. Meanwhile, -mavx10.1 + enables AVX10.1 intrinsics with 512-bit vector support, while in GCC 14.1 + and GCC 14.2, it only enables 256-bit vector support. GCC will emit a + warning when using these compiler switches. -mavx10.1-256, + -mavx10.1-512, and -mevex512 will be removed in + GCC 16 together with the warning for the behavior change on + -mavx10.1. +
  • +
  • With the -mveclibabi compiler switch GCC is able to generate + vectorized calls to external libraries. GCC 15 newly supports generating + vectorized math calls to the math library from AMD Optimizing CPU Libraries + (AOCL LibM). This option is available through + -mveclibabi=aocl. GCC still supports generating calls to AMD + Core Math Library (ACML). However, that library is end-of-life and AOCL + offers many more vectorized functions. +
  • +
+ +

LoongArch

+
    +
  • Support has been added for target attributes and pragmas. For more details + on available attributes and pragmas, including their proper usage, please + refer to the provided + + documentation. +
  • +
  • Support has been added for the new option + + -mannotate-tablejump. Which can create an annotation + section .discard.tablejump_annotate to correlate the + jirl instruction and the jump table. +
  • +
  • Add CRC expander to generate faster CRC. +
  • +
  • Add ABI names for FPR. +
  • +
+ + + + + + + + + + + +

NVPTX

+ +
    +
  • The standard C++ library (libstdc++) is now supported and enabled.
  • +
  • GCC's nvptx target now supports constructors and destructors. + For this, a recent version of nvptx-tools is required.
  • +
+ + + + + + + + + + + +

SH

+ +
    +
  • Bare metal sh-elf targets are now using the newer soft-fp + library for improved performance of floating-point emulation on CPUs + without hardware floating-point support.
  • +
+ + + + + + +

Operating Systems

+ + + +

PowerPC Darwin

+
    +
  • Fortran's IEEE modules are now supported on Darwin PowerPC.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + +

Other significant improvements

+ + + + +

GCC 15.1

+ +

This is the list +of problem reports (PRs) from GCC's bug tracking system that are +known to be fixed in the 15.1 release. This list might not be +complete (that is, it is possible that some PRs that have been fixed +are not listed here).

+ + + + + + + + + + + + + + diff --git a/README.Bugs.m4 b/README.Bugs.m4 new file mode 100644 index 0000000..a2d1606 --- /dev/null +++ b/README.Bugs.m4 @@ -0,0 +1,333 @@ +Reporting Bugs in the GNU Compiler Collection for DIST +======================================================== + +Before reporting a bug, please +------------------------------ + +- Check that the behaviour really is a bug. Have a look into some + ANSI standards document. + +- Check the list of well known bugs: http://gcc.gnu.org/bugs.html#known + +- Try to reproduce the bug with a current GCC development snapshot. You + usually can get a recent development snapshot from the gcc-snapshot +ifelse(DIST,`Debian',`dnl + package in the unstable (or experimental) distribution. + + See: http://packages.debian.org/gcc-snapshot +', DIST, `Ubuntu',`dnl + package in the current development distribution. + + See: http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-snapshot/ +')dnl + +- Try to find out if the bug is a regression (an older GCC version does + not show the bug). + +- Check if the bug is already reported in the bug tracking systems. + +ifelse(DIST,`Debian',`dnl + Debian: http://bugs.debian.org/debian-gcc@lists.debian.org +', DIST, `Ubuntu',`dnl + Ubuntu: https://bugs.launchpad.net/~ubuntu-toolchain/+packagebugs + Debian: http://bugs.debian.org/debian-gcc@lists.debian.org +')dnl + Upstream: http://gcc.gnu.org/bugzilla/ + + +Where to report a bug +--------------------- + +ifelse(DIST,`Debian',`dnl +Please report bugs found in the packaging of GCC to the Debian bug tracking +system. See http://www.debian.org/Bugs/ for instructions (or use the +reportbug script). +', DIST, `Ubuntu',`dnl +Please report bugs found in the packaging of GCC to Launchpad. See below +how issues should be reported. +')dnl + +DIST's current policy is to closely follow the upstream development and +only apply a minimal set of patches (which are summarized in the README.Debian +document). + +ifelse(DIST,`Debian',`dnl +If you think you have found an upstream bug, you did check the section +above ("Before reporting a bug") and are able to provide a complete bug +report (see below "How to report a bug"), then you may help the Debian +GCC package maintainers, if you report the bug upstream and then submit +a bug report to the Debian BTS and tell us the upstream report number. +This way you are able to follow the upstream bug handling as well. If in +doubt, report the bug to the Debian BTS (but read "How to report a bug" +below). +', DIST, `Ubuntu',`dnl +If you think you have found an upstream bug, you did check the section +above ("Before reporting a bug") and are able to provide a complete bug +report (see below "How to report a bug"), then you may help the Ubuntu +GCC package maintainers, if you report the bug upstream and then submit +a bug report to Launchpad and tell us the upstream report number. +This way you are able to follow the upstream bug handling as well. If in +doubt, report the bug to Launchpad (but read "How to report a bug" below). + +Report the issue to https://bugs.launchpad.net/ubuntu/+source/SRCNAME. +')dnl + + +How to report a bug +------------------- + +There are complete instructions in the gcc info manual (found in the +gcc-doc package), section Bugs. + +The manual can be read using `M-x info' in Emacs, or if the GNU info +program is installed on your system by `info --node "(gcc)Bugs"'. Or see +the file BUGS included with the gcc source code. + +Online bug reporting instructions can be found at + + http://gcc.gnu.org/bugs.html + +[Some paragraphs taken from the above URL] + +The main purpose of a bug report is to enable us to fix the bug. The +most important prerequisite for this is that the report must be +complete and self-contained, which we explain in detail below. + +Before you report a bug, please check the list of well-known bugs and, +if possible in any way, try a current development snapshot. + +Summarized bug reporting instructions +------------------------------------- + +What we need + +Please include in your bug report all of the following items, the +first three of which can be obtained from the output of gcc -v: + + * the exact version of GCC; + * the system type; + * the options given when GCC was configured/built; + * the complete command line that triggers the bug; + * the compiler output (error messages, warnings, etc.); and + * the preprocessed file (*.i*) that triggers the bug, generated by + adding -save-temps to the complete compilation command, or, in + the case of a bug report for the GNAT front end, a complete set + of source files (see below). + +What we do not want + + * A source file that #includes header files that are left out + of the bug report (see above) + * That source file and a collection of header files. + * An attached archive (tar, zip, shar, whatever) containing all + (or some :-) of the above. + * A code snippet that won't cause the compiler to produce the + exact output mentioned in the bug report (e.g., a snippet with + just a few lines around the one that apparently triggers the + bug, with some pieces replaced with ellipses or comments for + extra obfuscation :-) + * The location (URL) of the package that failed to build (we won't + download it, anyway, since you've already given us what we need + to duplicate the bug, haven't you? :-) + * An error that occurs only some of the times a certain file is + compiled, such that retrying a sufficient number of times + results in a successful compilation; this is a symptom of a + hardware problem, not of a compiler bug (sorry) + * E-mail messages that complement previous, incomplete bug + reports. Post a new, self-contained, full bug report instead, if + possible as a follow-up to the original bug report + * Assembly files (*.s) produced by the compiler, or any binary files, + such as object files, executables, core files, or precompiled + header files + * Duplicate bug reports, or reports of bugs already fixed in the + development tree, especially those that have already been + reported as fixed last week :-) + * Bugs in the assembler, the linker or the C library. These are + separate projects, with separate mailing lists and different bug + reporting procedures + * Bugs in releases or snapshots of GCC not issued by the GNU + Project. Report them to whoever provided you with the release + * Questions about the correctness or the expected behavior of + certain constructs that are not GCC extensions. Ask them in + forums dedicated to the discussion of the programming language + + +Known Bugs and Non-Bugs +----------------------- + +[Please see /usr/share/doc/gcc/FAQ or http://gcc.gnu.org/faq.html first] + + +C++ exceptions don't work with C libraries +------------------------------------------ + +[Taken from the closed bug report #22769] C++ exceptions don't work +with C libraries, if the C code wasn't designed to be thrown through. +A solution could be to translate all C libraries with -fexceptions. +Mostly trying to throw an exception in a callback function (qsort, +Tcl command callbacks, etc ...). Example: + + #include + #include + + class A {}; + + static + int SortCondition(void const*, void const*) + { + printf("throwing 'sortcondition' exception\n"); + throw A(); + } + + int main(int argc, char *argv[]) + { + int list[2]; + + try { + SortCondition(NULL,NULL); + } catch (A) { + printf("caught test-sortcondition exception\n"); + } + try { + qsort(&list, sizeof(list)/sizeof(list[0]),sizeof(list[0]), + &SortCondition); + } catch (A) { + printf("caught real-sortcondition exception\n"); + } + return 0; +} + +Andrew Macleod responded: + +When compiled with the table driven exception handling, exception can only +be thrown through functions which have been compiled with the table driven EH. +If a function isn't compiled that way, then we do not have the frame +unwinding information required to restore the registers when unwinding. + +I believe the setjmp/longjmp mechanism will throw through things like this, +but its produces much messier code. (-fsjlj-exceptions) + +The C compiler does support exceptions, you just have to turn them on +with -fexceptions. + +Your main options are to: + a) Don't use callbacks, or at least don't throw through them. + b) Get the source and compile the library with -fexceptions (You have to + explicitly turn on exceptions in the C compiler) + c) always use -fsjlj-exceptions (boo, bad choice :-) + + +g++: "undefined reference" to static const array in class +--------------------------------------------------------- + +The following code compiles under GNU C++ 2.7.2 with correct results, +but produces the same linker error with GNU C++ 2.95.2. +Alexandre Oliva responded: + +All of them are correct. A static data member *must* be defined +outside the class body even if it is initialized within the class +body, but no diagnostic is required if the definition is missing. It +turns out that some releases do emit references to the missing symbol, +while others optimize it away. + +#include + +class Test +{ + public: + Test(const char *q); + protected: + static const unsigned char Jam_signature[4] = "JAM"; +}; + +Test::Test(const char *q) +{ + if (memcmp(q, Jam_signature, sizeof(Jam_signature)) != 0) + cerr << "Hello world!\n"; +} + +int main(void) +{ + Test::Test("JAM"); + return 0; +} + +g++: g++ causes passing non const ptr to ptr to a func with const arg + to cause an error (not a bug) +--------------------------------------------------------------------- + +Example: + +#include +void test(const char **b){ + printf ("%s\n",*b); +} +int main(void){ + char *test1="aoeu"; + test(&test1); +} + +make const +g++ const.cc -o const +const.cc: In function `int main()': +const.cc:7: passing `char **' as argument 1 of `test(const char **)' adds cv-quals without intervening `const' +make: *** [const] Error 1 + +Answer from "Martin v. Loewis" : + +> ok... maybe I missed something.. I haven't really kept up with the latest in +> C++ news. But I've never heard anything even remotly close to passing a non +> const var into a const arg being an error before. + +Thanks for your bug report. This is a not a bug in the compiler, but +in your code. The standard, in 4.4/4, puts it that way + +# A conversion can add cv-qualifiers at levels other than the first in +# multi-level pointers, subject to the following rules: +# Two pointer types T1 and T2 are similar if there exists a type T and +# integer n > 0 such that: +# T1 is cv(1,0) pointer to cv(1,1) pointer to ... cv(1,n-1) +# pointer to cv(1,n) T +# and +# T2 is cv(2,0) pointer to cv(2,1) pointer to ... cv(2,n-1) +# pointer to cv(2,n) T +# where each cv(i,j) is const, volatile, const volatile, or +# nothing. The n-tuple of cv-qualifiers after the first in a pointer +# type, e.g., cv(1,1) , cv(1,2) , ... , cv(1,n) in the pointer type +# T1, is called the cv-qualification signature of the pointer type. An +# expression of type T1 can be converted to type T2 if and only if the +# following conditions are satisfied: +# - the pointer types are similar. +# - for every j > 0, if const is in cv(1,j) then const is in cv(2,j) , +# and similarly for volatile. +# - if the cv(1,j) and cv(2,j) are different, then const is in every +# cv(2,k) for 0 < k < j. + +It is the last rule that your code violates. The standard gives then +the following example as a rationale: + +# [Note: if a program could assign a pointer of type T** to a pointer +# of type const T** (that is, if line //1 below was allowed), a +# program could inadvertently modify a const object (as it is done on +# line //2). For example, +# int main() { +# const char c = 'c'; +# char* pc; +# const char** pcc = &pc; //1: not allowed +# *pcc = &c; +# *pc = 'C'; //2: modifies a const object +# } +# - end note] + +If you question this line of reasoning, please discuss it in one of +the public C++ fora first, eg. comp.lang.c++.moderated, or +comp.std.c++. + + +cpp removes blank lines +----------------------- + +With the new cpp, you need to add -traditional to the "cpp -P" args, else +blank lines get removed. + +[EDIT ME: scan Debian bug reports and write some nice summaries ...] diff --git a/README.C++ b/README.C++ new file mode 100644 index 0000000..8cc40f8 --- /dev/null +++ b/README.C++ @@ -0,0 +1,35 @@ +libstdc++ is an implementation of the Standard C++ Library, including the +Standard Template Library (i.e. as specified by ANSI and ISO). + +Some notes on porting applications from libstdc++-2.90 (or earlier versions) +to libstdc++-v3 can be found in the libstdc++6-4.3-doc package. After the +installation of the package, look at: + + file:///usr/share/doc/gcc-4.3-base/libstdc++/html/17_intro/porting-howto.html + +On Debian GNU/Linux you find additional documentation in the +libstdc++6-4.3-doc package. After installing these packages, +point your browser to + + file:///usr/share/doc/libstdc++6-4.3-doc/libstdc++/html/index.html + +Other documentation can be found: + + http://www.sgi.com/tech/stl/ + +with a good, recent, book on C++. + +A great deal of useful C++ documentation can be found in the C++ FAQ-Lite, +maintained by Marshall Cline . It can be found at the +mirror sites linked from the following URL (this was last updated on +2010/09/11): + + http://www.parashift.com/c++-faq/ + +or use some search engin site to find it, e.g.: + + http://www.google.com/search?q=c%2B%2B+faq+lite + +Be careful not to use outdated mirors. + +Please send updates to this list as bug report for the g++ package. diff --git a/README.Debian b/README.Debian new file mode 100644 index 0000000..b2275d4 --- /dev/null +++ b/README.Debian @@ -0,0 +1,45 @@ + The Debian GNU Compiler Collection setup + ======================================== + +Please see the README.Debian in /usr/share/doc/gcc, contained in the +gcc package for a description of the setup of the different compiler +versions. + +For general discussion about the Debian toolchain (GCC, glibc, binutils) +please use the mailing list debian-toolchain@lists.debian.org; for GCC +specific things, please use debian-gcc@lists.debian.org. When in doubt +use the debian-toolchain ML. + + +Maintainers of these packages +----------------------------- + +Matthias Klose +Ludovic Brenta (gnat) +Iain Buclaw (gdc) +Aurelien Jarno (mips*-linux) +Aurelien Jarno (s390X*-linux) + +The following ports lack maintenance in Debian: powerpc, ppc64, +sparc, sparc64 (unmentioned ports are usually handled by the Debian +porters). + +Former and/or inactive maintainers of these packages +---------------------------------------------------- + +Falk Hueffner (alpha-linux) +Ray Dassen +Jeff Bailey (hurd-i386) +Joel Baker (netbsd-i386) +Randolph Chung (ia64-linux) +Philip Blundell (arm-linux) +Ben Collins (sparc-linux) +Dan Jacobowitz (powerpc-linux) +Thiemo Seufer (mips*-linux) +Matt Taggart (hppa-linux) +Gerhard Tonn (s390-linux) +Roman Zippel (m68k-linux) +Arthur Loiret (gdc) + +=============================================================================== + diff --git a/README.cross b/README.cross new file mode 100644 index 0000000..ccf245b --- /dev/null +++ b/README.cross @@ -0,0 +1,22 @@ +Building cross-compiler Debian packages +--------------------------------------- + +The packaging for cross toolchains is now in the archive, including +all frontends, and targeting all release and ports architectures. + +Cross toolchains are built from the following source packages: + + - binutils + - cross-toolchain-base + - cross-toolchain-base-ports + - gcc-7-cross + - gcc-7-cross-ports + - gcc-8-cross + - gcc-8-cross-ports + - gcc-9-cross + - gcc-9-cross-ports + - gcc-defaults + - gcc-defaults-ports + +Issues about the cross toolchains should be filed for one of the +above source packages. diff --git a/README.libstdc++-baseline.in b/README.libstdc++-baseline.in new file mode 100644 index 0000000..e771c16 --- /dev/null +++ b/README.libstdc++-baseline.in @@ -0,0 +1,2 @@ +The libstdc++ baseline file is a list of symbols exported by the +libstdc++ library. diff --git a/README.maintainers b/README.maintainers new file mode 100644 index 0000000..9240455 --- /dev/null +++ b/README.maintainers @@ -0,0 +1,190 @@ +-*- Outline -*- + +Read this file if you are a Debian Developer or would like to become +one, or if you would like to create your own binary packages of GCC. + +* Overview + +From the GCC sources, Debian currently builds 3 source packages and +almost 100 binary packages, using a single set of build scripts. The +3 source packages are: + +gcc-x.y: C, C++, Fortran, Objective-C and Objective-C++, plus many + common libraries like libssp and libgcc. +gnat-x.y: Ada. + +The way we do this is quite peculiar, so listen up :) + +When we build from the gcc-x.y source package, we produce, among many +others, a gcc-x.y-source binary package that contains the pristine +upstream tarball and some Debian-specific patches. Any user can then +install this package on their Debian system, and will have the full +souces in /usr/src/gcc-x.y/gcc-.tar.bz2, along with the +Makefile snippets that unpack and patch them. + +The intended use for this package is twofold: (a) allow users to build +their own cross-compilers, and (b) build the other packages like +gnat-x.y. + +- gcc-x.y requires only a C compiler to build and produces C, C++, + Fortran, Go and Objective-C compilers and libraries. It also + produces the binary package gcc-x.y-source containing all the + sources and patches in a tarball. + +- gnat-x.y build-depends on gcc-x.y-source and an Ada compiler. It + does not even have an .orig.tar.bz2 package; it is a Debian native + package. + +The benefits of this split are many: + +- bootstrapping a subset of languages is much faster than + bootstrapping all languages and libraries (which can take a full + week on slow architectures like mips or arm) + +- the language maintainers don't have to wait for each other + +- for new ports, the absence of a port of, say, gnat-x.y does not + block the porting of gcc-x.y. + +gcc-x.y-source is also intended for interested users to build +cross-compiler packages. Debian cannot provide all possible +cross-compiler packages (i.e. all possible host, target, language and +library combinations), so instead tries to facilitate building them. + +* The build sequence + +As for all other Debian packages, you build GCC by calling +debian/rules. + +The first thing debian/rules does it to look at the top-most entry in +debian/changelog: this tells it which source package it is building. +For example, if the first entry in debian/changelog reads: + +gnat-6 (6.2.0-1) unstable; urgency=low + + * Upload as gnat-6. + + -- Ludovic Brenta Tue, 26 Jun 2007 00:26:42 +0200 + +then, debian/rules will build only the gnat binary packages. + +The second step is to build debian/control from debian/control.m4 and +a complex set of rules specified in debian/rules.conf. The resulting +control file contains only the binary packages to be built. + +The third step is to select which patches to apply (this is done in +debian/rules.defs), and then to apply the selected patches (see +debian/rules.patch). The result of this step is a generated +debian/patches/series file for use by quilt. + +The fourth step is to unpack the GCC source tarball. This tarball is +either in the build directory (when building gcc-x.y), or in +/usr/src/gcc-x.y/gcc-x.y.z.tar.xz (when building the other source +packages). + +The fifth step is to apply all patches to the unpacked sources with +quilt. + +The sixth step is to create a "build" directory, cd into it, call +../src/configure, and bootstrap the compiler and libraries selected. +This is in debian/rules2. + +The seventh step is to call "make install" in the build directory: +this installs the compiler and libraries into debian/tmp +(i.e. debian/tmp/usr/bin/gcc, etc.) + +The eighth step is to run the GCC test suite. This actually takes at +least as much time as bootstrapping, and you can disable it by setting +WITHOUT_CHECK to "yes" in the environment. + +The ninth step is to build the binary packages, i.e. the .debs. This +is done by a set of language- and architecture-dependent Makefile +snippets in the debian/rules.d/ directory, which move files from the +debian/tmp tree to the debian/ trees. + +* Making your own packages + +In this example, we will build our own gnat-x.y package. + +1) Install gcc-x.y-source, which contains the real sources: + +# aptitude install gcc-x.y-source + +2) Create a build directory: + +$ mkdir gnat-x.y-x.y.z; cd gnat-x.y-x.y.z + +3) Checkout from Subversion: + +$ svn checkout svn://svn.debian.org/gcccvs/branches/sid/gcc-x.y/debian + +4) Edit the debian/changelog file, adding a new entry at the top that + starts with "gnat-x.y". + +5) Generate the debian/control file, adjusted for gnat: + +$ debian/rules control + +8) Build: + +$ dpkg-buildpackage + +* Hints + +You need a powerful machine to build GCC. The larger, the better. +The build scripts take advantage of as many CPU threads as are +available in your box (for example: 2 threads on a dual-core amd64; 4 +threads on a dual-core POWER5; 32 threads on an 8-core UltraSPARC T1, +etc.). + +If you have 2 GB or more of physical RAM, you can achieve maximum +performance by building in a tmpfs, like this: + +1) as root, create the new tmpfs: + +# mount -t tmpfs -o size=1280m none /home/lbrenta/src/debian/ram + +By default, the tmpfs will be limited to half your physical RAM. The +beauty of it is that it only consumes as much physical RAM as +necessary to hold the files in it; deleting files frees up RAM. + +2) As your regular user, create the working directory in the tmpfs + +$ cp --archive ~/src/debian/gcc-x.y-x.y.z ~/src/debian/ram + +3) Build in there. On my dual-core, 2 GHz amd64, it takes 34 minutes + to build gnat, and the tmpfs takes 992 MiB of physical RAM but + exceeds 1 GiB during the build. + +Note that the build process uses a lot of temporary files. Your $TEMP +directory should therefore also be in a ram disk. You can achieve +that either by mounting it as tmpfs, or by setting TEMP to point to +~/src/debian/ram. + +Also note that each thread in your processor(s) will run a compiler in +it and use up RAM. Therefore your physical memory should be: + +Physical_RAM >= 1.2 + 0.4 * Threads (in GiB) + +(this is an estimate; your mileage may vary). If you have less +physical RAM than recommended, reduce the number of threads allocated +to the build process, or do not use a tmpfs to build. + +* Patching GCC + +Debian applies a large number of patches to GCC as part of the build +process. It uses quilt but the necessary debian/patches/series is not +part of the packaging scripts; instead, "debian/rules patch" generates +this file by looking at debian/control (which is itself generated!), +debian/changelog and other files. Then it applies all the patches. +At this point, you can use quilt as usual: + +$ cd ~/src/debian/gcc-x.y +$ export QUILT_PATCHES=$PWD/debian/patches +$ quilt series + +If you add new patches, remember to add them to the version control +system too. + +-- +Ludovic Brenta, 2012-04-02. diff --git a/README.snapshot b/README.snapshot new file mode 100644 index 0000000..5351938 --- /dev/null +++ b/README.snapshot @@ -0,0 +1,46 @@ +Debian gcc-snapshot package +=========================== + +This package contains a recent development SNAPSHOT of all files +contained in the GNU Compiler Collection (GCC). + +DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES! + +This package will NEVER hit the testing distribution. It's used for +tracking gcc bugs submitted to the Debian BTS in recent development +versions of gcc. + +To use this snapshot, you should set the following environment variables: + + LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} + PATH=/usr/lib/gcc-snapshot/bin${PATH:+:$PATH} + +You might also like to use a shell script to wrap up this +funcationality, e.g. + +place in /usr/local/bin/gcc-snapshot and chmod +x it + +----------- snip ---------- +#!/bin/sh +LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} +PATH=/usr/lib/gcc-snapshot/bin${PATH:+:$PATH} +rpath="" +OLD_IFS="$IFS" +IFS=: +for i in $LD_RUN_PATH +do + rpath="$rpath -Wl,-rpath -Wl,$i" +done +IFS="$OLD_IFS" +exec gcc -Wl,-rpath -Wl,/usr/lib/gcc-snapshot/lib \ + -Wl,-rpath -Wl,/usr/lib/gcc-snapshot/lib32 \ + -Wl,-rpath -Wl,/usr/lib/gcc-snapshot/libx32 $rpath "$@" +----------- snip ---------- + +Make the same for g++, g77, cpp, ... + +Don't forget the quotes around the $@ or gcc will not parse it's +command line correctly! + +Unset these variables before building Debian packages destined for an +upload to ftp-master.debian.org. diff --git a/README.source b/README.source new file mode 100644 index 0000000..8eed2f0 --- /dev/null +++ b/README.source @@ -0,0 +1,29 @@ +Patches applied to the Debian version of GCC +-------------------------------------------- + +Debian specific patches can be found in the debian/patches directory. +Quilt is used as the patch system. See /usr/share/doc/quilt/README.source +for details about quilt. + +Patches are applied by calling `debian/rules patch'. The `series' +file is constructed on the fly based on the files found in the to +debian/rules.patch "debian_patches" variable, configure scripts are +regenerated in the `patch' target. The gcc source is unpacked under +src/ this needs to be reflected in the patch header. + +Running a single dejagnu test +----------------------------- + + - Find out the test suite containing the test, and the associated + target (e.g. check-gcc in /gcc, or check in /. + + - Find out the dejagnu test suite, e.g. guality.exp + - If you have a log of the original testsuite run, search back for the + .exp file before the fail. + - Find the directory with the test and then the .exp in the nearest + enclosing directory. + + - Set RUNTESTFLAGS to the testsuite name and the test name to run, e.g + RUNTESTFLAGS="guality.exp=pr54519-2.c" make -e check-gcc + The test name is just the base name, but might be the path relative + from gcc/testsuite for C++ tests. diff --git a/README.ssp b/README.ssp new file mode 100644 index 0000000..9facca7 --- /dev/null +++ b/README.ssp @@ -0,0 +1,28 @@ +Stack smashing protection is a feature of GCC that enables a program to +detect buffer overflows and immediately terminate execution, rather than +continuing execution with corrupt internal data structures. It uses +"canaries" and local variable reordering to reduce the likelihood of +stack corruption through buffer overflows. + +Options that affect stack smashing protection: + +-fstack-protector + Enables protection for functions that are vulnerable to stack + smashing, such as those that call alloca() or use pointers. + +-fstack-protector-all + Enables protection for all functions. + +-Wstack-protector + Warns about functions that will not be protected. Only active when + -fstack-protector has been used. + +Applications built with stack smashing protection should link with the +ssp library by using the option "-lssp" for systems with glibc-2.3.x or +older; glibc-2.4 and newer versions provide this functionality in libc. + +The Debian architectures alpha, hppa, ia64, m68k, mips, mipsel do not +have support for stack smashing protection. + +More documentation can be found at the project's website: +http://researchweb.watson.ibm.com/trl/projects/security/ssp/ diff --git a/TODO b/TODO new file mode 100644 index 0000000..05c8bf5 --- /dev/null +++ b/TODO @@ -0,0 +1,58 @@ +(It is recommended to edit this file with emacs' todoo mode) +Last updated: 2020-05-12 + +* General + +- Clean up the sprawl of debian/rules. I'm sure there are neater + ways to do some of it; perhaps split it up into some more files? + Partly done. + +- Make debian/rules control build the control file without unpacking + the sources or applying patches. Currently, it unpacks the sources, + patches them, creates the control file, and a subsequent + dpkg-buildpackage deletes the sources, re-unpacks them, and + re-patches them. + + This would require hard-coding things like soversions in some + places. Is it worth it? + +- Reorganise debian/rules.defs to decide which packages to build in a + more straightforward and less error-prone fashion: (1) start with + all languages; override the list of languages depending on the name + of the source package (gcc-4.3, gnat-4.3, gdc-4.3). (2) + filter the list of languages depending on the target platform; (3) + depending on the languages to build, decide on which libraries to + build. + + Now that we build all languages from one source package, should that + be changed? Building from separate packages makes building the + cross compilers more complicated. + +o [Ludovic Brenta] Ada + +- Done: Build both the zero-cost and setjump/longjump exceptions + versions of libgnat. In particular, gnat-glade (distributed systems) + works best with SJLJ. + This is disabled now in GCC 10. + +- Add support for multilib (not yet supported upstream). + + +* Testsuite + +- Only run libgo/x32, if the kernel is prepared to execute the x32 + executables. + +- PR target/94278: segfaults running the amdgcn target tools, based + on LLVM 9 and LLVM 10. https://bugs.llvm.org/show_bug.cgi?id=45887 + +- Investigate regressions for test failures, seen when turning on the + hardening flags by default. + +- Fix gm2 link errors when running the tests. + +- Fix asan test errors in g++. Seen when run locally, e.g. alloca_big_alignment.c + ==1453818==ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD. + +- libstdc++ locale related test failures with recent glibc versions: + https://gcc.gnu.org/PR71367 diff --git a/ada/README.gnat b/ada/README.gnat new file mode 100644 index 0000000..09981e3 --- /dev/null +++ b/ada/README.gnat @@ -0,0 +1,39 @@ +If you want to develop Ada programs and libraries on Debian, please +read the Debian Policy for Ada: + +http://people.debian.org/~lbrenta/debian-ada-policy.html + +The default Ada compiler is and always will be the package `gnat'. +Debian contains many programs and libraries compiled with it, which +are all ABI-compatible. + +Starting with gnat-4.2, Debian provides both zero-cost and +setjump/longjump versions of the run-time library. The zero-cost +exception handling mechanism is the default as it provides the best +performance. The setjump/longjump exception handling mechanism is new +and only provided as a static library. It is necessary to use this +exception handling mechanism in distributed (annex E) programs. If +you wish to use the new sjlj library: + +1) call gnatmake with --RTS=sjlj +2) call gnatbind with -static + +Do NOT link your programs with libgnat-4.2.so, because it uses the ZCX +mechanism. + + +This package also includes small tools covering specific needs. + +* When linking objects compiled from both Ada and C sources, you need + to use compatible versions of the Ada and C compilers. The + required major version is the output of + # gnatmake --version | sed 's/.* \([0-9]\+\).*/\1/;q') + Then compile C sources with gcc-MAJOR instead of gcc. + For GPR projects, this should be sufficient: + # gprconfig --batch --config=Ada --config=C,,,,MAJOR + + The same advice applies to C++, Fortran and assembly. + +* When packaging Ada sources for Debian, you may want to read the + /usr/share/ada/debian_packaging.mk Makefile snippet from the gnat + package. diff --git a/ada/confirm_debian_bugs.py b/ada/confirm_debian_bugs.py new file mode 100644 index 0000000..fe1574b --- /dev/null +++ b/ada/confirm_debian_bugs.py @@ -0,0 +1,899 @@ +#!/usr/bin/python3 + +# Helper when migrating bugs from a gnat version to another. + +# Attempt to reproduce each known GNAT bug with version BV. +# Reports results as control@bugs.debian.org commands. +# Only remove temporary subdirectories when the bug is reproduced. + +# python3 confirm_debian_bugs.py same BV -> found | fixed +# python3 confirm_debian_bugs.py new BV -> reassign | retitle + +# flake8 confirm_debian_bugs.py +# pylint confirm_debian_bugs.py +# mypy confirm_debian_bugs.py +# rm -fr .mypy_cache/ + +# pylint: disable=too-many-lines +# pylint: disable=missing-module-docstring +# pylint: disable=missing-function-docstring + +import os.path +import re +import shutil +import subprocess +import sys +import tempfile +import typing + +Make: typing.TypeAlias = typing.Sequence[str] +Sources: typing.TypeAlias = typing.Iterable[tuple[str, str]] + +os.environ['LC_ALL'] = 'C' + +assert len(sys.argv) == 3, 'expected same|new new_version' +assert sys.argv[1] in ("same", "new") +SAME_GCC_BASE_VERSION = sys.argv[1] == "same" +new_version = sys.argv[2] + +for line in subprocess.check_output( + ("dpkg", "--status", f"gnat-{new_version}")).decode().split("\n"): + if line.startswith("Version: "): + deb_version = line[len("Version: "):] + break +# Will cause an error later if deb_version is not defined. + +# Each bug has its own subdirectory in WORKSPACE. +# Every bug subdir is removed if the bug is confirmed, +# and WORKSPACE is removed if empty. +workspace = tempfile.mkdtemp(suffix=f"-gnat-{new_version}-bugs") + + +def attempt_to_reproduce(bug: int, + make: Make, + sources: Sources, + ) -> tuple[str, int, str]: + tmp_dir = os.path.join(workspace, f"bug{bug}") + os.mkdir(tmp_dir) + + for (name, contents) in sources: + with open(os.path.join(tmp_dir, name), "w", encoding="UTF-8") as out_f: + out_f.write(contents) + + path = os.path.join(tmp_dir, "stderr.log") + with open(path, "w", encoding="UTF-8") as out_f: + status = subprocess.call(make, stderr=out_f, cwd=tmp_dir) + with open(path, "r", encoding="UTF-8") as in_f: + stderr = in_f.read() + return tmp_dir, status, stderr + + +def reassign_and_remove_dir(bug: int, tmp_dir: str) -> None: + if SAME_GCC_BASE_VERSION: + print(f"found {bug} {deb_version}") + else: + print(f"reassign {bug} gnat-{new_version} {deb_version}") + shutil.rmtree(tmp_dir) + + +def report(bug: int, message: str, output: str) -> None: + print(f"# {bug}: {message}.") + for report_line in output.split("\n"): + print(f"# {report_line}") + + +def report_and_retitle(bug: int, message: str, output: str) -> None: + report(bug, message, output) + if SAME_GCC_BASE_VERSION: + print(f"fixed {bug} {deb_version}") + else: + print(f"retitle {bug} [Fixed in {new_version}] ") + + +def check_compiles_but_should_not(bug: int, + make: Make, + sources: Sources, + ) -> None: + tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) + if status == 0: + reassign_and_remove_dir(bug, tmp_dir) + else: + report_and_retitle(bug, "now fails to compile (bug is fixed?)", stderr) + + +def check_reports_an_error_but_should_not(bug: int, + make: Make, + sources: Sources, + regex: str, + ) -> None: + tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) + if status == 0: + report_and_retitle(bug, "now compiles (bug is fixed?)", stderr) + elif re.search(regex, stderr): + reassign_and_remove_dir(bug, tmp_dir) + else: + report(bug, "still fails to compile, but with a new stderr", stderr) + + +def check_reports_error_but_forgets_one(bug: int, + make: Make, + sources: Sources, + regex: str, + ) -> None: + tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) + if status == 0: + report(bug, "now compiles (?)", stderr) + elif re.search(regex, stderr): + report_and_retitle(bug, "now reports the error (bug is fixed ?)", + stderr) + else: + reassign_and_remove_dir(bug, tmp_dir) + + +def check_produces_a_faulty_executable(bug: int, + make: Make, + sources: Sources, + regex: str, + trigger: str, + ) -> None: + tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) + if status != 0: + report(bug, "cannot compile the trigger anymore", stderr) + else: + output = subprocess.check_output((os.path.join(tmp_dir, trigger), ), + cwd=tmp_dir).decode() + if re.search(regex, output): + reassign_and_remove_dir(bug, tmp_dir) + else: + report_and_retitle(bug, + "output of the trigger changed (bug fixed?)", + output) + + +###################################################################### + +check_reports_an_error_but_should_not( + bug=244936, + make=(f"gnatmake-{new_version}", "p"), + regex='p[.]ads:3:25: error: ' + '"foo" is hidden within declaration of instance', + sources=( + ("foo.ads", """generic +procedure foo; +"""), + ("foo.adb", """procedure foo is +begin + null; +end foo; +"""), ("p.ads", """with foo; +package p is + procedure FOO is new foo; -- OK +end p; +"""))) + +check_reports_an_error_but_should_not( + bug=246187, + make=(f"gnatmake-{new_version}", "test_43"), + regex="Error detected at test_43.ads:11:4", + sources=( + ("test_43.ads", """package Test_43 is + type T1 is private; + +private + + type T2 is record + a: T1; + end record; + type T2_Ptr is access T2; + + type T1 is record + n: T2_Ptr := new T2; + end record; + +end Test_43; +"""),)) + +check_compiles_but_should_not( + bug=247013, + make=(f"gnatmake-{new_version}", "test_53"), + sources=( + ("test_53.ads", """generic + type T1 is private; +package Test_53 is + type T2 (x: integer) is new T1; -- ERROR: x not used +end Test_53; +"""),)) + +check_compiles_but_should_not( + bug=247017, + make=(f"gnatmake-{new_version}", "test_59"), + sources=( + ("test_59.adb", """procedure Test_59 is + + generic + type T1 (<>) is private; + procedure p1(x: out T1); + + procedure p1 (x: out T1) is + b: boolean := x'constrained; --ERROR: not a discriminated type + begin + null; + end p1; + +begin + null; +end Test_59; +"""),)) + +check_compiles_but_should_not( + bug=247018, + make=(f"gnatmake-{new_version}", "test_60"), + sources=( + ("pak1.ads", """package pak1 is + generic + package pak2 is + end pak2; +end pak1; +"""), + ("test_60.ads", """with pak1; +package Test_60 is + package PAK1 is new pak1.pak2; --ERROR: illegal reference to pak1 +end Test_60; +"""))) + +check_compiles_but_should_not( + bug=247019, + make=(f"gnatmake-{new_version}", "test_61"), + sources=( + ("test_61.adb", """procedure Test_61 is + procedure p1; + + generic + package pak1 is + procedure p2 renames p1; + end pak1; + + package new_pak1 is new pak1; + procedure p1 renames new_pak1.p2; --ERROR: circular renames +begin + p1; +end Test_61; +"""),)) + +check_produces_a_faulty_executable( + bug=247569, + make=(f"gnatmake-{new_version}", "test_75"), + trigger="test_75", + regex="failed: wrong p1 called", + sources=( + ("test_75.adb", """with text_io; +procedure Test_75 is + generic + package pak1 is + type T1 is null record; + end pak1; + + generic + with package A is new pak1(<>); + with package B is new pak1(<>); + package pak2 is + procedure p1(x: B.T1); + procedure p1(x: A.T1); + end pak2; + + package body pak2 is + + procedure p1(x: B.T1) is + begin + text_io.put_line("failed: wrong p1 called"); + end p1; + + procedure p1(x: A.T1) is + begin + text_io.put_line("passed"); + end p1; + + x: A.T1; + begin + p1(x); + end pak2; + + package new_pak1 is new pak1; + package new_pak2 is new pak2(new_pak1, new_pak1); -- (1) + +begin + null; +end Test_75; +"""),)) + +check_compiles_but_should_not( + bug=247570, + make=(f"gnatmake-{new_version}", "test_76"), + sources=( + ("test_76.adb", """procedure Test_76 is + + generic + procedure p1; + + pragma Convention (Ada, p1); + + procedure p1 is + begin + null; + end p1; + + procedure new_p1 is new p1; + pragma Convention (Ada, new_p1); --ERROR: new_p1 already frozen + +begin + null; +end Test_76; +"""),)) + +check_produces_a_faulty_executable( + bug=247571, + make=(f"gnatmake-{new_version}", "test_77"), + trigger="test_77", + regex="failed: wrong p1 called", + sources=( + ("pak.ads", """package pak is + procedure p1; + procedure p1(x: integer); + pragma export(ada, p1); +end pak; +"""), + ("pak.adb", """with text_io; use text_io; +package body pak is + procedure p1 is + begin + put_line("passed"); + end; + + procedure p1(x: integer) is + begin + put_line("failed: wrong p1 called"); + end; +end pak; +"""), + ("test_77.adb", """with pak; +procedure Test_77 is + procedure p1; + pragma import(ada, p1); +begin + p1; +end Test_77; +"""))) + +check_compiles_but_should_not( + bug=248166, + make=(f"gnatmake-{new_version}", "test_82"), + sources=( + ("test_82.adb", """procedure Test_82 is + package pak1 is + type T1 is tagged null record; + end pak1; + + package body pak1 is + -- type T1 is tagged null record; -- line 7 + + function "=" (x, y : T1'class) return boolean is -- line 9 + begin + return true; + end "="; + + procedure proc (x, y : T1'class) is + b : boolean; + begin + b := x = y; --ERROR: ambiguous "=" + end proc; + + end pak1; + +begin + null; +end Test_82; +"""),)) + +check_compiles_but_should_not( + bug=248168, + make=(f"gnatmake-{new_version}", "test_84"), + sources=( + ("test_84.adb", """procedure Test_84 is + package pak1 is + type T1 is abstract tagged null record; + procedure p1(x: in out T1) is abstract; + end pak1; + + type T2 is new pak1.T1 with null record; + + protected type T3 is + end T3; + + protected body T3 is + end T3; + + procedure p1(x: in out T2) is --ERROR: declared after body of T3 + begin + null; + end p1; + +begin + null; +end Test_84; +"""),)) + +check_compiles_but_should_not( + bug=248678, + make=(f"gnatmake-{new_version}", "test_80"), + sources=( + ("test_80.ads", """package Test_80 is + generic + type T1(<>) is private; + with function "=" (Left, Right : T1) return Boolean is <>; + package pak1 is + end pak1; + + package pak2 is + type T2 is abstract tagged null record; + package new_pak1 is new pak1 (T2'Class); --ERROR: no matching "=" + end pak2; +end Test_80; +"""),)) + +check_compiles_but_should_not( + bug=248681, + make=(f"gnatmake-{new_version}", "test_91"), + sources=( + ("test_91.adb", """-- RM 8.5.4(5) +-- ...the convention of the renamed subprogram shall not be +-- Intrinsic. +with unchecked_deallocation; +procedure Test_91 is + generic -- when non generic, we get the expected error + package pak1 is + type int_ptr is access integer; + procedure free(x: in out int_ptr); + end pak1; + + package body pak1 is + procedure deallocate is new + unchecked_deallocation(integer, int_ptr); + procedure free(x: in out int_ptr) renames + deallocate; --ERROR: renaming as body can't rename intrinsic + end pak1; +begin + null; +end Test_91; +"""),)) + +check_compiles_but_should_not( + bug=248682, + make=(f"gnatmake-{new_version}", "main"), + sources=( + ("main.adb", """-- RM 6.3.1(9) +-- The default calling convention is Intrinsic for ... an attribute +-- that is a subprogram; + +-- RM 8.5.4(5) +-- ...the convention of the renamed subprogram shall not be +-- Intrinsic. +procedure main is + package pak1 is + function f1(x: integer'base) return integer'base; + end pak1; + + package body pak1 is + function f1(x: integer'base) return integer'base renames + integer'succ; --ERROR: renaming as body can't rename intrinsic + end pak1; +begin + null; +end; +"""),)) + +check_reports_an_error_but_should_not( + bug=253737, + make=(f"gnatmake-{new_version}", "test_4"), + regex='test_4[.]ads:3:01: error: "pak2" not declared in "pak1"', + sources=( + ("parent.ads", """generic +package parent is +end parent; +"""), + ("parent-pak2.ads", """generic +package parent.pak2 is +end parent.pak2; +"""), + ("parent-pak2-pak3.ads", """generic +package parent.pak2.pak3 is +end parent.pak2.pak3; +"""), + ("parent-pak2-pak4.ads", """with parent.pak2.pak3; +generic +package parent.pak2.pak4 is + package pak3 is new parent.pak2.pak3; +end parent.pak2.pak4; +"""), + ("pak1.ads", """with parent; +package pak1 is new parent; +"""), + ("pak6.ads", """with parent.pak2; +with pak1; +package pak6 is new pak1.pak2; +"""), + ("test_4.ads", """with parent.pak2.pak4; +with pak6; +package Test_4 is new pak6.pak4; +"""))) + +check_compiles_but_should_not( + bug=269948, + make=(f"gnatmake-{new_version}", "test_119"), + sources=( + ("test_119.ads", """ +-- RM 3.9.3/11 A generic actual subprogram shall not be an abstract +-- subprogram. works OK if unrelated line (A) is commented out. +package Test_119 is + generic + with function "=" (X, Y : integer) return Boolean is <>; + -- Removing this allows GCC to detect the problem. + package pak1 is + function "=" (X, Y: float) return Boolean is abstract; + generic + with function Equal (X, Y : float) return Boolean is "="; --ERROR: + package pak2 is + end pak2; + end pak1; + + package new_pak1 is new pak1; + package new_pak2 is new new_pak1.pak2; +end Test_119; +"""),)) + +check_compiles_but_should_not( + bug=269951, + make=(f"gnatmake-{new_version}", "test_118"), + sources=( + ("pak1.ads", """generic +package pak1 is +end pak1; +"""), + ("pak1-foo.ads", """generic +package pak1.foo is +end pak1.foo; +"""), + ("test_118.ads", """with pak1.foo; +package Test_118 is + package pak3 is + foo: integer; + end pak3; + use pak3; + + package new_pak1 is new pak1; + use new_pak1; + + x: integer := foo; -- ERROR: foo hidden by use clauses +end Test_118; +"""),)) + +# As long as 24:14 is detected, it inhibits detection of 25:21. +check_reports_error_but_forgets_one( + bug=276224, + make=(f"gnatmake-{new_version}", "test_121"), + regex="test_121[.]adb:25:21: dynamically tagged expression not allowed", + sources=( + ("test_121.adb", + """-- If the expected type for an expression or name is some specific +-- tagged type, then the expression or name shall not be dynamically +-- tagged unless it is a controlling operand in a call on a +-- dispatching operation. +procedure Test_121 is + package pak1 is + type T1 is tagged null record; + function f1 (x1: T1) return T1; + end pak1; + + package body pak1 is + function f1 (x1: T1) return T1 is + begin + return x1; + end; + end pak1; + use pak1; + + type T2 is record + a1: T1; + end record; + + z0: T1'class := T1'(null record); + z1: T1 := f1(z0); -- ERROR: gnat correctly rejects + z2: T2 := (a1 => f1(z0)); -- ERROR: gnat mistakenly allows +begin + null; +end Test_121; +"""),)) + +check_reports_an_error_but_should_not( + bug=276227, + make=(f"gnatmake-{new_version}", "test_124"), + regex='test_124[.]ads:6:35: error: ' + 'size for "T_arr_constrained" too small, minimum allowed is 256', + sources=( + ("test_124.ads", """package Test_124 is + type T is range 1 .. 32; + type T_arr_unconstrained is array (T range <>) of boolean; + type T_arr_constrained is new T_arr_unconstrained (T); + pragma pack (T_arr_unconstrained); + for T_arr_constrained'size use 32; +end Test_124; +"""),)) + +check_reports_an_error_but_should_not( + bug=278687, + make=(f"gnatmake-{new_version}", "test_127"), + regex='test_127[.]adb:10:21: error: expected type "T2" defined at line 4', + sources=( + ("test_127.ads", + """-- The second parameter of T2'Class'Read is of type T2'Class, +-- which should match an object of type T3, which is derived +-- from T2. +package test_127 is + pragma elaborate_body; +end test_127; +"""), + ("test_127.adb", """with ada.streams; +package body test_127 is + type T1 is access all ada.streams.root_stream_type'class; + type T2 is tagged null record; + type T3 is new T2 with null record; + + x: T1; + y: T3; +begin + T2'class'read(x, y); +end test_127; +"""))) + +check_compiles_but_should_not( + bug=278831, + make=(f"gnatmake-{new_version}", "test_128"), + sources=( + ("test_128.ads", """package Test_128 is + package inner is + private + type T1; + end inner; + type T1_ptr is access inner.T1; -- line 9 ERROR: gnat mistakenly accepts +end Test_128; +"""), + ("test_128.adb", """package body test_128 is + package body inner is + type T1 is new Integer; + end inner; +end Test_128; +"""))) + +# Note that we also check the absence of the next inhibited message. +check_reports_an_error_but_should_not( + bug=279893, + make=(f"gnatmake-{new_version}", "test_129"), + regex='test_129[.]ads:13:49: error: ' + 'designated type of actual does not match that of formal "T2"', + sources=( + ("pak1.ads", + """-- legal instantiation rejected; illegal instantiation accepted +-- adapted from John Woodruff c.l.a. post + +generic + type T1 is private; +package pak1 is + subtype T3 is T1; +end pak1; +"""), + ("pak2.ads", """with pak1; +generic + type T2 is private; +package pak2 is + package the_pak1 is new pak1 (T1 => T2); +end pak2; +"""), + ("pak2-pak3.ads", """generic + type T2 is access the_pak1.T3; +package pak2.pak3 is +end pak2.pak3; +"""), + ("test_129.ads", """with pak1; +with pak2.pak3; +package Test_129 is + + type T4 is null record; + type T5 is null record; + subtype T3 is T5; -- line 9: triggers the bug at line 16 + + type T4_ptr is access T4; + type T5_ptr is access T5; + + package new_pak2 is new pak2 (T2 => T4); + package new_pak3a is new new_pak2.pak3(T2 => T4_ptr); -- line 15: Legal + package new_pak3b is new new_pak2.pak3(T2 => T5_ptr); -- line 16: Illegal +end Test_129; +"""))) + +print("# Please ignore the gnatlink message.") +check_reports_an_error_but_should_not( + bug=280939, + make=(f"gnatmake-{new_version}", "test_130"), + regex="test_130[.]adb:.*: undefined reference to [`]p2\'", + sources=( + ("pak1.ads", + """-- RM 10.1.5(4) "the pragma shall have an argument that is a name +-- denoting that declaration." +-- RM 8.1(16) "The children of a parent library unit are inside the +-- parent's declarative region." + +package pak1 is + pragma Pure; +end pak1; +"""), + ("pak1-p2.ads", """procedure pak1.p2; +pragma Pure (p2); -- ERROR: need expanded name +pragma Import (ada, p2); -- ERROR: need expanded name +pragma Inline (p2); -- ERROR: need expanded name +"""), + ("test_130.adb", """with Pak1.P2; +procedure Test_130 is +begin + Pak1.P2; +end Test_130; +"""))) + +check_compiles_but_should_not( + bug=283833, + make=(f"gnatmake-{new_version}", "test_132"), + sources=( + ("pak1.ads", + """-- RM 8.5.4(5) the convention of the renamed subprogram shall not +-- be Intrinsic, if the renaming-as-body completes that declaration +-- after the subprogram it declares is frozen. + +-- RM 13.14(3) the end of the declaration of a library package +-- causes freezing of each entity declared within it. + +-- RM 6.3.1(7) the default calling convention is Intrinsic for +-- any other implicitly declared subprogram unless it is a +-- dispatching operation of a tagged type. + +package pak1 is + type T1 is null record; + procedure p1 (x1: T1); + type T2 is new T1; +end pak1; +"""), + ("pak1.adb", """package body Pak1 is + procedure P1 (X1 : T1) is begin null; end P1; +end Pak1; +"""), + ("test_132.ads", """with pak1; +package Test_132 is + procedure p2 (x2: pak1.T2); +end Test_132; +"""), + ("test_132.adb", """package body Test_132 is + procedure p2 (x2: pak1.T2) renames pak1.p1; --ERROR: can't rename intrinsic +end Test_132; +"""))) + +check_compiles_but_should_not( + bug=283835, + make=(f"gnatmake-{new_version}", "test_133"), + sources=( + ("test_133.ads", """package Test_133 is + package pak1 is + type T1 is null record; + end pak1; + + package pak2 is + subtype boolean is standard.boolean; + function "=" (x, y: pak1.T1) return boolean; + end pak2; + + use pak1, pak2; + + x1: pak1.T1; + b1: boolean := x1 /= x1; -- ERROR: ambigous (gnat misses) + -- b2: boolean := x1 = x1; -- ERROR: ambigous +end Test_133; +"""), + ("test_133.adb", """package body test_133 is + package body pak2 is + function "=" (x, y: pak1.T1) return boolean is + begin + return true; + end "="; + end pak2; +end test_133; +"""))) + +check_compiles_but_should_not( + bug=416979, + make=(f"gnatmake-{new_version}", "pak1"), + sources=( + ("pak1.ads", """package pak1 is + -- RM 7.3(13), 4.9.1(1) + -- check that discriminants statically match + type T1(x1: integer) is tagged null record; + x2: integer := 2; + x3: constant integer := x2; + type T2 is new T1 (x2) with private; + type T3 is new T1 (x3) with private; +private + type T2 is new T1 (x2) with null record; --ERROR: nonstatic discriminant + type T3 is new T1 (x3) with null record; --ERROR: nonstatic discriminant +end pak1; +"""),)) + +check_reports_an_error_but_should_not( + bug=660698, + make=(f"gnatmake-{new_version}", "proc.adb"), + regex='proc[.]adb:17:28: error: ' + 'there is no applicable operator "And" for type "Standard[.]Integer"', + sources=( + ("proc.adb", """procedure Proc is + package P1 is + type T is new Integer; + function "and" (L, R : in Integer) return T; + end P1; + package body P1 is + function "and" (L, R : in Integer) return T is + pragma Unreferenced (L, R); + begin + return 0; + end "and"; + end P1; + use type P1.T; + package P2 is + use P1; + end P2; + G : P1.T := Integer'(1) and Integer'(2); +begin + null; +end Proc; +"""), )) + +check_produces_a_faulty_executable( + bug=864969, + make=(f"gnatmake-{new_version}", "main"), + trigger="main", + regex="ZZund", + sources=( + ("main.adb", """with Ada.Locales, Ada.Text_IO; +procedure Main is +begin + Ada.Text_IO.Put_Line (String (Ada.Locales.Country) + & String (Ada.Locales.Language)); +end Main; +"""),)) + +check_produces_a_faulty_executable( + bug=894225, + make=(f"gnatmake-{new_version}", "main"), + trigger="main", + sources=( + ("main.adb", + """with Ada.Directories, Ada.Text_IO; +procedure Main is +begin + Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("/a/b/")); + Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("a/b/")); + Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("b/")); +end Main; +"""), + ), + regex="""^/a/b +a/b +b$""") + +try: + os.rmdir(workspace) +except OSError: + print(f"Some unconfirmed, not removing directory {workspace}.") diff --git a/ada/libgnat_alihash b/ada/libgnat_alihash new file mode 100755 index 0000000..34d4481 --- /dev/null +++ b/ada/libgnat_alihash @@ -0,0 +1,39 @@ +#!/usr/bin/perl + +# Helper for debian/rules2. + +# Exit silently during builds without Ada. + +# If the gnat RTS directory contains .ali (Ada Library Information) files, +# output a dpkg-gencontrol command line argument setting the +# libgnat:Provides substitution variable +# to the XOR of the checksums in all such files, +# as 8 lowercase hexadecimal digits. + +# See https://people.debian.org/~lbrenta/debian-ada-policy.html. + +# Should be in sync with dh_ada_library in the dh-ada-library package. + +# perl -c $script +# perltidy $script -st | diff -u $script - +# perlcritic -1 --verbose=11 --exclude=Modules::RequireVersionVar $script + +use autodie; +use re '/amsx'; +use strict; +use warnings; + +my @ali_files = glob 'build/gcc/ada/rts/*.ali'; +if (@ali_files) { + my $result = 0; + for my $path (@ali_files) { + open my $fh, q{<}, $path; + while (<$fh>) { + if (m/ ^ D [ ] [^\t]+ \t+ \d{14} [ ] ( [[:xdigit:]]{8} ) /) { + $result ^= hex $1; + } + } + close $fh; + } + printf '-Vlibgnat:alihash=%08x', $result; +} diff --git a/ada/test_ada_source_date_epoch.sh b/ada/test_ada_source_date_epoch.sh new file mode 100644 index 0000000..5154341 --- /dev/null +++ b/ada/test_ada_source_date_epoch.sh @@ -0,0 +1,97 @@ +#!/bin/sh +# Basic checks for debian/patches/ada-lib-info-source-date-epoch.diff. + +# Copyright (C) 2020 Nicolas Boulenguez + +# Usage: +# build GCC +# sh debian/ada/test_ada_source_date_epoch.sh +# rm -fr build/test_ada_source_data_epoch + +set -C -e -u -x + +# Inside the GCC tree: +mkdir build/test_ada_source_data_epoch +cd build/test_ada_source_data_epoch +export LD_LIBRARY_PATH=../gcc/ada/rts:`echo ../*/libgnat_util/.libs` +gnatmake="../gcc/gnatmake --RTS=`echo ../*/libada` --GCC=../gcc/xgcc -c -v" +# For local tests: +# gnatmake="gnatmake -c -v" + +cat > lib.ads < main.adb < Sat, 13 Jun 2026 11:21:26 +0200 + +gcc-15 (15.2.0-17) unstable; urgency=medium + + * Update to git 20260423 from the gcc-15 branch. + - Fix PR target/69639 (MingW), PR tree-optimization/123002, + PR target/124876 (x86), PR tree-optimization/124802, + PR tree-optimization/124677, PR debug/124644, PR tree-optimization/124555, + PR tree-optimization/120987, PR target/124670 (bpf), + PR target/123271 (ARM), PR target/124710 (x86), PR target/105192 (MIPS), + PR target/124613 (RISCV), PR target/123017 (AArch64), + PR target/124674 (AArch64), PR tree-optimization/124627, PR ada/124836, + PR ada/124607, PR ada/124606, PR c/124635, PR c/122572, PR c++/120338, + PR c++/121643, PR c++/123975, PR c++/121961, PR c++/117133, PR c++/124768, + PR c++/124773, PR c++/123700, PR c++/123529, PR c++/98930, PR c++/118630, + PR c++/124735, PR c++/124781, PR c++/124785, PR c++/124477, PR c++/123665, + PR c++/123408, PR c++/122621, PR d/123411, PR fortran/100155, + PR fortran/102619, PR fortran/95879, PR fortran/95879, PR fortran/66973, + PR fortran/124652, PR fortran/117303, PR fortran/120723, + PR fortran/124751, PR fortran/100194, PR fortran/124567, + PR fortran/121342, PR fortran/120713, PR fortran/124631, + PR fortran/95338, PR fortran/102459, PR fortran/82721, PR fortran/84245, + PR fortran/119273, PR fortran/105168, PR libstdc++/124463. + * Update the ada-armel-libatomic patch for PR ada/107475. + * Build gcc itself with branch-protection (Emanuele Rocca). Closes: #1130592. + - On arm64 by appending CFLAGS_SECURE to BOOT_CFLAGS. + - Set BOOT_CFLAGS explicitly instead of relying on upstream defaults. + * Bump standards version. + + -- Matthias Klose Thu, 23 Apr 2026 12:06:05 +0200 + +gcc-15 (15.2.0-16) unstable; urgency=medium + + * Update to git 20260321 from the gcc-15 branch. + - Fix PR target/124461 (x86), PR target/123457 (AArch64), + PR target/124126 (AArch64), PR target/123285 (AArch64), + PR target/124409 (RISCV), PR tree-optimization/119568, + PR tree-optimization/121103, PR rtl-optimization/122170, + PR rtl-optimization/123294, PR tree-optimization/123645, + PR target/124147 (RISCV), PR target/122448 (RISCV), + PR target/112400 (VAX), PR tree-optimization/124135, + PR tree-optimization/124358, PR target/124349 (x86), + PR target/124367 (x86), PR target/124366 (x86), + PR target/124341 (x86), PR target/124349 (x86), + PR target/124315 (x86), PR target/124335 (x86), + PR target/124294 (x86), PR target/124138 (x86), PR middle-end/124056, + PR rtl-optimization/116600, PR middle-end/123386, PR c/101312, + PR tree-optimization/123672, PR middle-end/123978, PR c++/123818, + PR middle-end/122689, PR tree-optimization/121104, + PR tree-optimization/123864, PR c++/123790, PR middle-end/123876, + PR ada/107475, PR c/105555, PR c/123365, PR c++/124309, + PR c++/124311, PR c++/124431, PR c++/120685, PR c++/123889, + PR c++/123578, PR c++/123737, PR c++/123667, PR c++/123684, + PR fortran/124450, PR fortran/121743, PR preprocessor/105412, + PR preprocessor/123273, PR target/124365 (AArch64), + PR libstdc++/124015, PR libstdc++/121771, PR rtl-optimization/121649, + PR middle-end/123573, PR middle-end/123175, PR tree-optimization/124132, + PR tree-optimization/124130, PR tree-optimization/123596, + PR tree-optimization/123298, PR tree-optimization/123061, + PR tree-optimization/123636, PR tree-optimization/122537, + PR tree-optimization/121726, PR ipa/123416, PR tree-optimization/116747, + PR ipa/111036, PR c++/124489, PR c++/120039, PR c++/122559, + PR fortran/122046, PR fortran/124161, PR fortran/120286, + PR fortran/102596, PR fortran/106946, PR fortran/124482, + PR libstdc++/124568, PR libstdc++/124124, PR libstdc++/105580. + * For backports, require binutils (>= 2.40) on riscv64. + * Fix PR ada/107475 also for armhf and s390x. + + -- Matthias Klose Sun, 22 Mar 2026 10:52:07 +0100 + +gcc-15 (15.2.0-15) unstable; urgency=medium + + * Update to git 20260307 from the gcc-15 branch. + - Fix PR ada/124226, PR ada/124224, PR target/123807 (loongarch). + PR middle-end/124250, PR ipa/122856, PR target/122097 (loongarch), + PR ada/124285, PR ada/123306, PR c++/123845, PR lto/121588, + PR libstdc++/124363, PR libstdc++/114865, PR libstdc++/123875. + * Fix backport builds for Ubuntu 24.04. + * Fix PR demangler/106641, taken from the trunk. + * libsanitizer/TSan: Fix determining static TLS blocks. Addresses: #1126312. + * Stop building packages now built by GCC 16. + + -- Matthias Klose Sat, 07 Mar 2026 12:32:03 +0100 + +gcc-15 (15.2.0-14) unstable; urgency=medium + + * Update to git 20260223 from the gcc-15 branch. + - Fix PR c++/120974, PR target/121571, PR target/124134 (ARM), + PR target/123206 (AArch64), PR tree-optimization/117217, + PR ipa/106260, PR target/123910 (RISCV), PR middle-end/123447, + PR target/123624 (AArch64), PR rtl-optimization/116479, + PR tree-optimization/123940, PR target/123870 (RISCV), + PR target/123969 (RISCV), PR target/123971 (RISCV), + PR target/123806 (RISCV), PR rtl-optimization/121787, + PR target/122869 (RISCV), PR pch/14940, PR target/122781 (S390), + PR ada/124106, PR ada/124054, PR ada/124025, PR c++/123989, + PR c++/121822, PR c++/122318, PR c++/101670, PR d/124026, + PR fortran/123961, PR c++/124153, PR c++/119756, PR libstdc++/122821, + PR libstdc++/123991, PR libstdc++/124024. + * Fix build when building without common libraries. + * Re-enable profiled build on armhf to check for PR target/119937. + * Re-enable lto build on loong64. Closes: #1127462. + * Bump standards version. + + -- Matthias Klose Mon, 23 Feb 2026 10:34:32 +0100 + +gcc-15 (15.2.0-13) unstable; urgency=medium + + * Update to git 20260207 from the gcc-15 branch. + - Fix PR tree-optimization/123513, PR target/123607 (x86), PR target/120250, + PR rtl-optimization/123523, PR tree-optimization/123431, + PR target/123489 (x86), PR middle-end/111817, PR rtl-optimization/119291, + PR rtl-optimization/121773, PR tree-optimization/123351, + PR tree-optimization/123372, PR target/123217 (x86), + PR target/123155 (x86), PR target/123460, PR rtl-optimization/123121, + PR middle-end/123392, PR target/123521 (loongarch), PR diagnostics/120063, + PR tree-optimization/123300, PR target/123484 (x86), + PR tree-optimization/123040, PR target/121192, PR target/121485 (RISCV), + PR tree-optimization/122868, PR debug/121964, PR ada/68179, PR ada/123589, + PR ada/123371, PR ada/123306, PR ada/123088, PR ada/123302, PR ada/123289, + PR ada/123185, PR ada/123060, PR analyzer/123085, PR analyzer/122975, + PR c/123156, PR c++/123331, PR c++/91388, PR c++/122772, PR c++/122834, + PR c++/121966, PR c++/116952, PR c++/122048, PR c++/121854, PR c++/122922, + PR libfortran/122936, PR libstdc++/122907, PR libstdc++/122812, + PR target/123092, PR target/117575 (loongarch), PR c++/122550, + PR c++/122070, PR target/123766 (loongarch), PR target/123807 (loongarch), + PR middle-end/123703, PR tree-optimization/123736, PR middle-end/123107, + PR tree-optimization/123741, PR tree-optimization/123602, + PR tree-optimization/122793, PR target/119130 (PPC), + PR target/123742 (ARM), PR ada/123902, PR ada/121316, PR ada/123867, + PR ada/123861, PR ada/123857, PR ada/123832, PR ada/123580, + PR c++/123676, PR c++/122494, PR c++/123814, PR c++/123597, + PR d/123264, PR d/123407, PR d/123046, PR d/123349, PR d/123419, + PR d/123798, PR d/121477, PR d/123422, PR d/120096, PR d/122817, + PR libstdc++/123147, PR target/123584 (AArch64), PR target/123779 (x86), + PR target/122051 (RISCV), PR target/120642 (RISCV), + PR target/123548 (AArch64), PR debug/123886, PR tree-optimization/123794, + PR middle-end/123775, PR tree-optimization/123729, PR middle-end/123575, + PR tree-optimization/123537, PR ipa/116296, PR tree-optimization/110043, + PR tree-optimization/109410, PR rtl-optimization/106859, + PR middle-end/123887, PR middle-end/123887, PR c++/122169, PR d/123633, + PR libstdc++/90192, PR libstdc++/114153. + * Don't complain about missing gccrs and gcobc man pages. + * Stop building multilibs for s390x. Closes: #1125358. + * Add again build dependency on python3-check-jsonschema, needed for tests. + * Fix D #22463: SOURCE_DATE_EPOCH parsing incorrectly affected by system + timezone. Closes: #1126512. + + -- Matthias Klose Sat, 07 Feb 2026 15:26:50 +0100 + +gcc-15 (15.2.0-12) unstable; urgency=medium + + * Update to git 20251217 from the gcc-15 branch. + - Fix PR target/123022 (RISCV), PR target/122652 (RISCV), + PR target/122656 (RISCV), PR ada/123138, PR ada/123060, PR ada/123096, + PR ada/123088, PR c/123018, PR c++/122752, PR c++/122668, PR c++/114764, + PR fortran/107406, PR fortran/122977, PR libstdc++/122907, + PR libstdc++/122812. + - libstdc++: Update tzdata to 2025c. + * Log the available disk space for the build. + * Build liblsan and libtsan on s390x. + * Update sanitizer symbols files. + * Disable the LTO build on loong64 (requested by Adrian Glaubitz). + * Enable PAC/BTI/GCS on arm64 for libgfortran (Emanuele Rocca). + Closes: #1123084. + + -- Matthias Klose Wed, 17 Dec 2025 17:52:48 +0100 + +gcc-15 (15.2.0-11) unstable; urgency=medium + + * Update to git 20251209 from the gcc-15 branch. + - Fix PR target/122991 (AArch64), PR tree-optimization/122943, + PR middle-end/120052, PR middle-end/120564, PR ada/123037, PR ada/115305, + PR middle-end/122624, PR c/121506, PR c++/121445, PR c++/120876, + PR lto/122515. + * Fix Algol-68 build on sparc64, patch taken from the trunk. + * Don't rely on python3-check-jsonschema for testing, still having + unpackaged dependencies. + * Add architectureVariant to ELF_PACKAGE_METADATA. + + -- Matthias Klose Tue, 09 Dec 2025 21:10:53 +0100 + +gcc-15 (15.2.0-10) unstable; urgency=medium + + * Update to git 20251202 from the gcc-15 branch. + - Fix PR target/122858 (ARM), PR target/110796 (ARM), + PR target/118446 (ARM), PR target/122867 (ARM), PR target/122692 (RISCV), + PR c++/122658, PR c++/121325, PR c++/122789, PR libstdc++/122921, + PR libstdc++/122842. + * Update algol68 to the gcc-15 branch 20251030. + * Fix some lintian warnings, override some more. + * Manage the libasan and libcc1 symbols files with the symbols helper. + + -- Matthias Klose Tue, 02 Dec 2025 14:07:24 +0100 + +gcc-15 (15.2.0-9) unstable; urgency=medium + + * Update to git 20251122 from the gcc-15 branch. + - Fix PR tree-optimization/122225, PR target/122695 (loongarch), + PR target/122539 (ARM), PR lto/122515, PR target/121853 (AArch64), + PR tree-optimization/121776, PR middle-end/121581, + PR rtl-optimization/122627, PR target/119275 (RISCV), + PR target/122216 (ARM), PR target/122175 (ARM), PR target/122189 (ARM), + PR target/122446 (x86), PR lto/122620, PR target/122097 (loongarch), + PR ada/111433, PR ada/122640, PR c++/120529, PR c++/119580, + PR c++/122677, PR c++/122625, PR fortran/122709, PR libstdc++/122743, + PR libstdc++/122726, PR libstdc++/122661. + * Build using amdgcn-tools-21 instead of -19. + * Update VCS attributes. + * Add libgcobol symbols file. + + -- Matthias Klose Sat, 22 Nov 2025 13:14:34 +0100 + +gcc-15 (15.2.0-8) unstable; urgency=medium + + * Update to git 20251111 from the gcc-15 branch. + - Fix PR tree-optimization/122012, PR target/99930 (x86), + PR target/122323 (x86), PR ada/118782 (closes: #749574), PR ada/81087, + PR c++/122302, PR target/118460 (ARM), PR target/122516 (AVR), + PR rtl-optimization/122321, PR target/122270 (RISCV, LP: #2126058), + PR target/122527 (AVR), PR tree-optimization/118012, + PR tree-optimization/122505, PR tree-optimization/122408, + PR tree-optimization/122394, PR target/120674 (RISCV), + PR target/121604 (AArch64), PR target/119079 (x86), PR ada/118208, + PR c++/122253, PR c++/122421, PR c++/122381, PR c++/122192, + PR c++/122310, PR fortran/114023, PR fortran/122386, + PR fortran/122206, PR fortran/107968. + * Bootstrap using GCC 15. + * Disable sframe generation for Ubuntu 26.04 LTS. + * Ignore some bootstrap comparison failures on sh4. Closes: #1119146. + + -- Matthias Klose Tue, 11 Nov 2025 03:02:32 +0100 + +gcc-15 (15.2.0-7) unstable; urgency=medium + + * Also exclude python3-check-jsonschema build dependency for x32. + + -- Matthias Klose Wed, 22 Oct 2025 11:45:23 +0200 + +gcc-15 (15.2.0-6) unstable; urgency=medium + + * Update to git 20251022 from the gcc-15 branch. + - Fix PR target/122223 (ARM), PR target/121599 (AArch64), PR go/104290, + PR target/122119 (x86), PR middle-end/122133, PR tree-optimization/122104, + PR tree-optimization/122213, PR target/121845 (RISCV), PR ada/107536, + PR c/122188, PR c++/120757, PR libstdc++/122322, PR libstdc++/122062. + * Limit python3-check-jsonschema dependency to architectures which + have rustc available. Closes: #1118541. + + -- Matthias Klose Wed, 22 Oct 2025 09:06:13 +0200 + +gcc-15 (15.2.0-5) unstable; urgency=medium + + * Update to git 20251009 from the gcc-15 branch. + - Fix PR target/121602 (AArch64), PR target/121464 (ARM), + PR target/121749 (AArch64), PR target/121906 (loongarch), + PR rtl-optimization/121757, PR c++/121801, PR c++/121795, PR c++/97740, + PR libstdc++/117276, PR target/121742 (RISCV), PR target/121780 (RISCV), + PR target/121781 (RISCV), PR target/110812 (RISCV), + PR target/121875 (loongarch), PR tree-optimization/121772, + PR middle-end/121922, PR c++/121977, PR middle-end/121828, + PR middle-end/121831, PR middle-end/121453, PR tree-optimization/122016, + PR tree-optimization/121870, PR tree-optimization/107997, + PR tree-optimization/121844, PR tree-optimization/121659, + PR tree-optimization/121527, PR tree-optimization/121370, + PR target/118280 (microblaze), PR ada/118343, PR ada/117517, + PR ada/121968, PR c++/122015, PR c++/122019, PR c++/121981, + PR c++/121524, PR c++/122019, PR c++/122015, PR fortran/121616, + PR fortran/121939, PR fortran/108581, PR fortran/89092, + PR libstdc++/121827, PR target/121652 (RISCV), PR target/122187 (AVR). + * Add build dependency on python3-check-jsonschema, needed for some tests. + * For Ubuntu 26.04 LTS s390x, bump the baseline to z15. + * Re-enable running the testsuite. + * Strip again the executables. + + -- Matthias Klose Thu, 09 Oct 2025 10:16:43 +0200 + +gcc-15 (15.2.0-4) unstable; urgency=medium + + * Update to git 20250911 from the gcc-15 branch. + - Fix PR target/121794 (AVR), PR c++/121724, PR libstdc++/110853, + PR libstdc++/121745, PR target/121794 (AVR), PR libstdc++/120698, + PR target/121510 (RISCV) LP: #2121522, PR target/81540 (AVR), + PR target/49857 (AVR), PR fortran/121263. + - Includes libgphobos build fixes for ppc64el and sparc64. + * Disable sframe generation for now, until sframe-v3 (binutils 2.46) is + released. Closes: #1114556. + * Build gnat again on m68k. + * Build libgphobos on sparc64. + * Fix libgphobos scanf decl for ppc64el. + * Update libgfortran, libga68 and libgphobos symbols files. + * Disable LTO builds for Debian/riscv64, builders are very slow. + * Update the gcc-search-prefixed-as-ld patch to find the correct as. + Still needs an update for collect2.cc. Addresses: #1113854. + * libstdc++-dev: Fix dependency on libc, when libstdc++ is not built. + + -- Matthias Klose Thu, 11 Sep 2025 06:56:06 +0200 + +gcc-15 (15.2.0-3) unstable; urgency=medium + + * Update to git 20250903 from the gcc-15 branch. + - Fix PR bootstrap/118009, PR bootstrap/119089, PR target/121548 (RISCV), + PR libstdc++/121374, PR libstdc++/121496, PR libstdc++/121097, + PR libstdc++/120390. + * Add two patches for newlib amdgcn: + - amdgcn, libm: Fix infinite loop. + - amdgcn, libm: Fix vector ilogb bugs (bug 33272). + * ga68, gcobol: Depend on libc-dev. + * Build full libgphobos on ppc64el for IEEE long double. + + -- Matthias Klose Thu, 04 Sep 2025 01:35:42 +0200 + +gcc-15 (15.2.0-2) unstable; urgency=medium + + * Update to git 20250828 from the gcc-15 branch. + - Fix PR rtl-optimization/120983, PR target/121634 (loongach), + PR target/121608 (AVR), PR target/121534 (RISCV), + PR target/121118 (AArch64), PR rtl-optimization/121253, + PR target/120986 (AArch64), PR target/120986 (AArch64), + PR target/121449 (AArch64), PR target/121542 (loongarch), + PR target/121414 (AArch64), PR target/121294 (AArch64), + PR rtl-optimization/120718, PR target/121007, PR target/119830 (RISCV), + PR target/121208 (x86), PR target/120476 (loongarch), PR c++/120499, + PR c++/121351, PR libgcc/117600, PR libfortran/121234, + PR libstdc++/121313, PR libstdc++/119861. + * Configure for the build variant on Ubuntu. + * Enable sframe generation with binutils 2.45 on amd64 and arm64 (pass + -Wa,--gsframe=no to disable). Enabled unless one of the options -m16, + -m32, -mx32 or -ffreestanding is used. + * riscv64: Configure for the RVA23U64 profile on Ubuntu 25.10 or later. + * libga68-dev: Install libga68.a + * Fix Algol-68 autopkg test. + * Fix PR target/119830 (riscv64), taken from the trunk. + * ga68: Link libga68 dynamically. + + -- Matthias Klose Thu, 28 Aug 2025 14:38:46 +0200 + +gcc-15 (15.2.0-1) unstable; urgency=medium + + * GCC 15.2.0 release. + - Fix PR target/96226 (x86). + * Update to git 20250810 from the gcc-15 branch. + - Fix PR middle-end/121389, PR tree-optimization/121413, + PR tree-optimization/121127, PR c++/121351, PR c++/119859, PR c++/120620, + PR c++/120845, PR libstdc++/121373, PR rtl-optimization/120983. + * Refresh patches. + + -- Matthias Klose Sun, 10 Aug 2025 11:52:24 +0200 + +gcc-15 (15.1.0-11) experimental; urgency=medium + + * Update to git 20250904 from the gcc-15 branch (15.2.0 release candidate). + - Fix PR middle-end/121095, PR target/120119 (AArch64), + PR tree-optimization/121202, PR tree-optimization/117423, + PR middle-end/119835, PR lto/120308, PR target/119737 (GCN), + PR target/121027 (AArch64). PR target/118891 (AArch64), + PR tree-optimization/118891, PR ada/121184, PR c++/120577, + PR c++/121055, PR c++/120412, PR fortran/121203, PR fortran/121145, + PR modula2/121164, PR target/119853, PR target/119854, + PR middle-end/119835, PR lto/120308, PR target/120530, + PR target/119692, PR target/119853, PR target/119854, + PR target/119737, PR target/118794, PR libstdc++/119962, + PR target/120351 (ARM), PR tree-optimization/121323, + PR tree-optimization/121320, PR middle-end/121322, + PR rtl-optimization/121340, PR target/121028 (AArch64), + PR tree-optimization/121256, PR target/121121 (RISCV), + PR tree-optimization/121264, PR ipa/114790, PR tree-optimization/121256, + PR tree-optimization/121130, PR tree-optimization/121190, + PR target/120427 (x86), PR target/121274 (x86), PR target/120645, + PR tree-optimization/119085, PR middle-end/121159, PR target/121277, + PR target/121064 (loongarch), PR target/120714 (RISCV), PR ada/120440, + PR c/120055, PR c/119950, PR c/120354, PR c/120353, PR cobol/119231, + PR cobol/120402, PR cobol/120621, PR cobol/120765, PR cobol/120765, + PR cobol/119337, PR cobol/120794, PR cobol/120772, PR cobol/120779, + PR cobol/120790, PR cobol/120791, PR cobol/120794, PR cobol/120621, + PR cobol/120328, PR cobol/119695, PR cobol/119975, PR cobol/119770, + PR cobol/119772, PR cobol/119790, PR cobol/119771, PR cobol/119810, + PR cobol/119335, PR cobol/119632, PR cobol/119337, PR cobol/119217, + PR cobol/119364, PR c++/108080, PR c++/121238, PR c++/120800, + PR c++/120224, PR c++/120756, PR c++/121133, PR c++/121219, PR c++/115908, + PR c++/118074, PR c++/95615, PR c++/120273, PR c++/116775, PR c++/120495, + PR c++/115605, PR c++/118903, PR c++/109283, PR c++/119916, PR c++/120453, + PR fortran/119106. + * Fix broken ada timespec record with -D_TIME_BITS=64 on 32-bit big-endian + targets (John David Anglin). Addresses: #1108322. + Only apply this patch for 32bit big-endian targets. + * LRA support on sh4, documentation (Adrian Glaubitz). + * Update Algol-68 to the gcc-15-a68 branch. + * Configure with --enable-checking=release. + + -- Matthias Klose Mon, 04 Aug 2025 11:42:09 +0200 + +gcc-15 (15.1.0-10) experimental; urgency=medium + + * Update to git 20250719 from the gcc-15 branch. + - Fix PR target/120356 (RISCV), PR target/120995 (RISCV), + PR ipa/121023, PR tree-optimization/120780, PR tree-optimization/120358, + PR tree-optimization/118669, PR tree-optimization/120817, + PR tree-optimization/120927, PR tree-optimization/120944, + PR middle-end/120369, PR rtl-optimization/120795, + PR rtl-optimization/120550, PR tree-optimization/120927, + PR middle-end/120608, PR tree-optimization/120729, + PR tree-optimization/120654, PR target/120624 (AArch64), + PR rtl-optimization/120347, PR middle-end/120608, PR middle-end/120631, + PR target/119971 (RISCV), PR tree-optimization/120677, + PR rtl-optimization/120423, PR rtl-optimization/116389, PR c/120837, + PR c++/120628, PR c++/120569, PR c++/120575, PR c++/116064, + PR c++/120940, PR c++/120684, PR c++/118856, PR c++/120471, + PR fortran/120843, PR fortran/120847, PR fortran/120843, + PR fortran/120711, PR fortran/120784, PR fortran/120784, + PR fortran/119948, PR fortran/51961, PR modula2/120253, + PR libstdc++/119754, PR libstdc++/120997, PR libstdc++/118681, + PR libstdc++/120934, PR libstdc++/120931, PR libstdc++/120648, + PR libstdc++/120650, PR middle-end/120935, PR tree-optimization/120924, + PR tree-optimization/121059, PR tree-optimization/121049, + PR tree-optimization/121035, PR tree-optimization/121131, + PR target/120807 (loongarch), PR middle-end/120709, + PR target/120999 (AArch64), PR rtl-optimization/120242, + PR rtl-optimization/120627, PR rtl-optimization/120736, + PR rtl-optimization/120813, PR target/118241 (RISCV), + PR target/118241 (RISCV), PR target/120908 (x86), PR target/120908 (x86), + PR ada/121056, PR fortran/121060, PR fortran/104428, PR fortran/120637, + PR modula2/121164, PR modula2/120912, PR modula2/117203, + PR modula2/120731, PR modula2/120673, PR modula2/119650, + PR modula2/120606, PR modula2/119650, PR modula2/120542, + PR modula2/120474, PR modula2/120497, PR modula2/120389. + * Enable LRA support on sh4 (Adrian Glaubitz). Closes: #1108158. + * Fix NaN signalling bit and propagation rules on sh4 (Adrian Glaubitz). + Closes: #1109115. + * Drop obsolete ia64-disable-selective-scheduling patch (Adrian Glaubitz). + Closes: #1108247. + * Enable algol on sh4 (Adrian Glaubitz). Closes: #1108261. + * RISC-V: Minimal support for ssnpm, smnpm and smmpm extensions (taken from + the trunk, Heinrich Schuchardt). LP: #2116120. + * RISC-V: Bump to the RVA23U64 extension profile for Ubuntu 25.10 and later + (Heinrich Schuchardt). LP: #2116086. + * Enable -fzero-init-padding-bits=all, -Wbidi-chars=any for Ubuntu 25.10 + and later. LP: #2108968. + * Bump standards version. + + -- Matthias Klose Sat, 19 Jul 2025 16:56:42 +0200 + +gcc-15 (15.1.0-8) experimental; urgency=medium + + * Update to git 20250614 from the gcc-15 branch. + - Fix PR tree-optimization/120638, PR middle-end/120547, PR ipa/120295, + PR target/120042 (RISCV), PR rtl-optimization/120050, PR c++/120555, + PR c++/120502, PR fortran/120483, PR libstdc++/120625, + PR libstdc++/99832, PR libstdc++/120548. + * Remove the distro specific patch for PR libstdc++/99832. + * Build c++ for the amdgcn offload compiler. + + -- Matthias Klose Mon, 16 Jun 2025 19:21:02 +0200 + +gcc-15 (15.1.0-7) experimental; urgency=medium + + * Fix applying the gcc-m68k-no-fold-mem-offsets patches. + + -- Matthias Klose Mon, 09 Jun 2025 15:31:57 +0200 + +gcc-15 (15.1.0-6) experimental; urgency=medium + + * Update to git 20250609 from the gcc-15 branch. + - Fix PR tree-optimization/120357, PR tree-optimization/120341, + PR rtl-optimization/120182, PR tree-optimization/120003, + PR tree-optimization/119960, PR tree-optimization/116352, + PR target/86772 (microblaze), PR c/120180, PR c++/120123, PR c/120180, + PR c++/120413, PR c++/120363, PR c++/120414, PR fortran/99838, + PR fortran/102599, PR fortran/114022, PR fortran/101735, + PR fortran/101735, PR fortran/120193, PR fortran/120049, + PR fortran/120355, PR target/120442 (AVR), PR target/120441 (AVR), + PR libfortran/119856, PR middle-end/118694, PR middle-end/118694, + PR libstdc++/120432, PR libstdc++/120465, PR libstdc++/120367. + * Don't default to -ffold-mem-offsets on m68k (Adrian Glaubitz). + Closes: #1107416. + + -- Matthias Klose Mon, 09 Jun 2025 13:27:55 +0200 + +gcc-15 (15.1.0-5) experimental; urgency=medium + + * Update to git 20250523 from the gcc-15 branch. + - Fix PR modula2/120188, PR ipa/120146, PR tree-optimization/120143, + PR tree-optimization/120089, PR tree-optimization/120043, + PR c++/120161, PR c++/120125, PR c++/119864, PR c++/120012, + PR fortran/120139, PR fortran/120163, PR fortran/120191, + PR fortran/119928, PR modula2/120117, PR modula2/119915, + PR modula2/119914, PR libfortran/120196, PR modula2/115276, + PR libstdc++/120187, PR libstdc++/120198, PR libstdc++/119714, + PR libstdc++/112490, PR libstdc++/119427, PR libstdc++/118260, + PR tree-optimization/111873, PR c++/120013, PR c++/120350, + PR fortran/85750, PR fortran/102891, PR fortran/120049, + PR libstdc++/120293, PR libstdc++/120029, PR libstdc++/120190. + * Fix amdgcn-tools dependency generation for snapshot builds. + * d/copyright*: Update for new binary packages. + * Disable testsuite again on Debian/alpha. + + -- Matthias Klose Fri, 23 May 2025 19:08:37 +0200 + +gcc-15 (15.1.0-4) experimental; urgency=medium + + * Update to git 20250510 from the gcc-15 branch. + - Fix PR ipa/119852, PR tree-optimization/120048, PR ipa/120006, + PR tree-optimization/120074, PR ada/120104, PR c++/120012, + PR fortran/120179, PR fortran/119986, PR fortran/102900, + PR preprocessor/108900, PR preprocessor/116047, PR preprocessor/120061, + PR libfortran/120158, PR libfortran/120153, PR libfortran/120152, + PR libstdc++/120159, PR libstdc++/120114. + + [ Matthias Klose ] + * Backport PR cobol/119364, taken from the trunk. + * Build cobol cross compiler again on i686. + + [ Nicolas Boulenguez ] + * Replace tabulations with spaces in rules.defs. Closes: #1104665. + * Ada: shorten ada-gcc-name.diff, remove pr79724-revert.diff. + + -- Matthias Klose Sat, 10 May 2025 09:25:21 +0200 + +gcc-15 (15.1.0-3) experimental; urgency=medium + + * Update to git 20250503 from the gcc-15 branch. + - Fix PR c/120057. + - libsanitizer: Fix build with glibc 2.42. + * Disable profiled bootstrap on Debian/armhf. See PR target/119937. + * gnat: Add gnat-N- conflicts. Closes: #1063664. + + -- Matthias Klose Sat, 03 May 2025 22:05:51 +0200 + +gcc-15 (15.1.0-2) experimental; urgency=medium + + * Update to git 20250502 from the gcc-15 branch. + - Fix PR target/119610 (AArch64), PR c++/119939, PR c++/119863, + PR tree-optimization/119712, PR ada/112958, PR c++/120023, PR c++/119938, + PR c++/119551, PR c++/119996, PR c++/119981, PR c++/119378. + * Update Algol-68 to the a86-gcc-15 branch. + * Update libasan, libga68 and libobjc symbols. + * Fix multilib installation for PR libstdc++/103382. + * Enable running the tests again. + + -- Matthias Klose Fri, 02 May 2025 09:30:32 +0200 + +gcc-15 (15.1.0-1) experimental; urgency=medium + + * GCC 15.1.0 release. + * Update to git 20250426 from the gcc-15 branch. + * Provide local unversioned symlinks gnatmake and gnatbind for the build. + * Update Algol 68 from the a68-15 branch. + * Don't install the gcobol-io man page for cross builds. Closes: #1103019. + * Update NEWS files. + * Don't build cobol cross compiler on 32bit archs, PR cobol/119364 needs an + update. + * Refresh patches. + + -- Matthias Klose Sat, 26 Apr 2025 03:22:52 +0200 + +gcc-15 (15-20250423-1) experimental; urgency=medium + + * Snapshot, taken from the gcc-15 branch (20250423). + + [ Matthias Klose ] + * Install the libgcobol.spec file. + * Fix source-path in the installed libstdc++.modules.json. Closes: #1102350. + * On ppc64el configure --with-long-double-format=ieee for upcoming distros. + * Update libga68 symbols. + * Address PR libstdc++/103382, when not building the common libs, install + the library in the gcc_lib_dir to link against the libstdc++ from this + GCC version. + * Build cobol on riscv64. + + [ Nicolas Boulenguez ] + * Ada patches: refresh ada-749574, update pr114065/#1092866 to v15, + complete ada-gnat-names. Addresses: #1078144. + + -- Matthias Klose Wed, 23 Apr 2025 16:20:46 +0200 + +gcc-15 (15-20250406-1) experimental; urgency=medium + + * Snapshot, taken from the trunk (20250406). + * Update the ag68 branch to 20250405. + * Add libgccjit-doc conflict. Closes: #1101750. + * libga68-doc: Remove not needed doc link. Closes: #1101749. + * Build cobol on ppc64el. + * Build cobol cross compilers. + * d/copyright: Add licenses for vendored crates. + * Apply proposed patch for PR cobol/119364, non LP64 builds. + + -- Matthias Klose Sun, 06 Apr 2025 10:48:32 +0200 + +gcc-15 (15-20250329-1) experimental; urgency=medium + + * Snapshot, taken from the trunk (20250329). + * Update the ag68 branch to 20250322. + * Don't run the tests on the Hurd, timing out. + * Fix GCN SIMD libm bug, taken from newlib upstream. + * Refresh patches. + * Re-enable profiled and LTO build. + + -- Matthias Klose Sat, 29 Mar 2025 10:31:23 +0100 + +gcc-15 (15-20250319-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250319. + - Fix building gcobol cross compilers. + * Fix libga68 build on the Hurd. + * Fix gccrs build, see PR rust/119353. + * Don't build gcobol on arc. + + -- Matthias Klose Wed, 19 Mar 2025 12:38:10 +0100 + +gcc-15 (15-20250315-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250315. + * Let the gcobol compiler depend on the g++ compiler. + * Update the Algol 68 patch. + * Bump libgo soname again. + * Reset the libgcobol soname after the upstream merge. + * Update libgphobos symbols file. + + -- Matthias Klose Sat, 15 Mar 2025 02:37:08 +0100 + +gcc-15 (15-20250220-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250220. + * Add packages for Algol 68. + + -- Matthias Klose Thu, 20 Feb 2025 15:50:14 +0100 + +gcc-15 (15-20250213-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250213. + * Disable the gnat build on m68k. See PR target/118485. + * Apply workaround for PR target/118248 (riscv64). + + -- Matthias Klose Thu, 13 Feb 2025 11:16:17 +0100 + +gcc-15 (15-20250208-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250208. + * Disable building the riscv64 gdc cross compiler on s390x. See PR118248. + * Build using amdgcn-tools-19 instead of -18. + * Build a libgccjit package, which is not conflicting with the installed + default compiler (libgccjit15). + + -- Matthias Klose Sat, 08 Feb 2025 14:43:15 +0100 + +gcc-15 (15-20250203-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250203. + * d/p/libphobos-no-REUSEPORT.diff: Drop, fixed upstream. + + -- Matthias Klose Mon, 03 Feb 2025 10:45:47 +0100 + +gcc-15 (15-20250130-2) experimental; urgency=medium + + * Fix installation of sarif-reply. + + -- Matthias Klose Thu, 30 Jan 2025 21:38:18 +0100 + +gcc-15 (15-20250130-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250130. + * Apply proposed patches for PR c++/116506 and PR c++/116914. + * Constrain the lib32 conflicts to non-mips architectures. + * Fix nroff warnings for gcc-TOOL manpages (Bjarni Ingi Gislason). + Addresses: #1094299, #1094300, #1094302. + * Revert the libgo soname bump. No changes for libgo in GCC 15. + * Only pass --enable-multiarch once for staged builds (Helmut Grohne) + Closes: #1094387. + * Configure with --disable-libgcobol for stage1 and stage2 builds. + + -- Matthias Klose Thu, 30 Jan 2025 12:34:33 +0100 + +gcc-15 (15-20250114-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250114. + * Re-enable the 64bit time_t Ada patches, somehow uninformed update. + * d/p/libphobos-no-REUSEPORT.diff, revert upstream commit to fix ftbfs. + + -- Matthias Klose Tue, 14 Jan 2025 10:43:44 +0100 + +gcc-15 (15-20250112-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250112. + + [ Nicolas Boulenguez ] + * Ada: remove 'Provides: gnat-V-HASH' from gnat-V (keep it in gnat-V-TARGET). + + [ Matthias Klose ] + * Update newlib to 4.5.0.20241231. + * Only provide the gnat-V-HASH for native compilers. + * Apply proposed patch for PR/rtl-optimization 118266. + * Disable the 64bit time_t Ada patches for now, fail to apply. + * Enable the testsuite on alpha again. + * Add lib32 conflicts for libn32 packages. Addresses: #1092571. + * Update libgphobos symbols files. + * Remove invalid gcobol packages from the control file. + + -- Matthias Klose Sun, 12 Jan 2025 11:48:38 +0100 + +gcc-15 (15-20241231-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20241231. + * Drop the package-metadata spec, now implemented in the linkers. + * Fix check for assembler section merging support on ARM, see binutils + PR ld/32491. + * Add conflicts for libstdc++ -doc and -dbg packages. Closes: #1091354. + + -- Matthias Klose Sat, 21 Dec 2024 12:13:58 +0100 + +gcc-15 (15-20241220-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20241220. + * Fix amdgcn-tools links for the amdgcn offload install. + * Apply proposed patch for PR libgomp/117851. + * Build-depend on git, needed for the gotools tests. + * Don't run the libgo tests for multilibs, that cannot run. + * Don't run the gnat and gm2 tests for multilibs, which are not built. + * Run the tests sequentially on architectures with failing builds. + * Run the logwatch check on almost all architectures. + * Remove the ada-nobiarch-check patch, superseded. + * Refresh patches. + * Bump standards version. + * Rewrite the logwatch script to look at all log files. + * Fix libphobos testsuite with sbuild's unshare backend. Addresses: #1089007. + * PR sanitizer/117725: Pull libsanitizer patch from LLVM for s390x/-m31. + * Add proposed gcobol patches, build gcobol and libgcobol packages. + * Update debian copyright for gcobol. + * Add missing build dependency on gnat [hurd-amd64] (Samuel Thibault). + Addresses: #1089930. + * Use GCC 14 as build dependency except on m68k. + * Build with --enable-checking=yes,extra,rtl. + * Disable building gccrs on the Hurd. + * d/control: Add Rules-Requires-Root: binary-targets. Too late for trixie. + * Restrict gcobol autopkg test to arm64, amd64 and ppc64el. + * Revert Yun's config-ml.in upstream patch, trying to unbreak cross builds. + * Apply proposed patch for PR modula2/118045. + * Build cobol only on amd64, arm64 and ppc64el. + * Disable pgo/lto builds for now. + * Drop the package-metadata spec, now implemented in the linkers. + + -- Matthias Klose Fri, 20 Dec 2024 19:28:09 +0100 + +gcc-15 (15-20241128-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20241128. + * Update packaging for new major version. + * Update patches. + * Disable some Ada patches, needing an update. 000?-Ada*, ada-749574. + * Update symbols files. + * libstdc++-dev: Install libstdc++.modules.json. + * Configure the jit build with --enable-libdiagnostics. + * Update libsanitizer symbols. + * Bump sonames for D, Go runtime libs (no conflicts with GCC 14). + * Update patches for PR ada/114065 to v13. + * Apply proposed patch for PR sanitizer/117725. + * Add packages for libdiagnostics and gcc-diagnostics (sarif-replay). + * Add sparc to any_archs (Adrian Glaubitz). + + -- Matthias Klose Thu, 28 Nov 2024 10:00:59 +0100 + +gcc-14 (14.2.0-8) unstable; urgency=medium + + * Update to git 20241102 from the gcc-14 branch. + Fix PR target/114759 (PPC), PR jit/117275, + PR rtl-optimization/116783 (closes: #1080974), PR target/117318 (x86), + PR rtl-optimization/117327, PR target/116415 (PPC), + PR middle-end/117249, PR sanitizer/117209, PR target/116953 (AVR), + PR target/117240 (x86), PR middle-end/116891, PR middle-end/116891, + PR tree-optimization/117104, PR tree-optimization/116982, + PR tree-optimization/116907, PR tree-optimization/116481, + PR tree-optimization/116290, PR middle-end/115110, PR target/117159 (x86), + PR ada/116551, PR c/117230, PR c++/117259, PR c++/117107, PR c++/92687, + PR c++/116929, PR fortran/84868, PR fortran/79685. + * Re-enable rs on hurd-i386 and hurd-amd64 (Samuel Thibault). + Closes: #1086120. + * Add go support for hurd-amd64 (Samuel Thibault). Closes: #1086475. + * Remove hurd-alpha references. + * Disable the rust frontend on x32 temporarily (Adrian Glaubitz). + Closes: #1086022. + + -- Matthias Klose Sat, 02 Nov 2024 14:48:28 +0100 + +gcc-14 (14.2.0-7) unstable; urgency=medium + + * Update to git 20241019 from the gcc-14 branch. + - Fix PR ipa/115815, PR target/116883 (RISCV), PR c++/116534, + PR target/117116 (x86), PR ipa/109985, PR testsuite/116238 (AArch64), + PR tree-optimization/117041, PR middle-end/117086, + PR tree-optimization/116990, PR tree-optimization/116879, + PR tree-optimization/116850, PR tree-optimization/116768, + PR tree-optimization/116166, PR target/116921 (x86), + PR middle-end/116899, PR middle-end/116898, PR target/116627, + PR target/116738 (x86), PR ada/114593, PR ada/115535, PR ada/114640, + PR ada/114636, PR c++/117054, PR c++/116476, PR c++/116424, PR c++/116678, + PR libstdc++/90276, PR libstdc++/117085, PR libstdc++/117135, + PR libstdc++/117094. + + -- Matthias Klose Sat, 19 Oct 2024 09:24:57 +0200 + +gcc-14 (14.2.0-6) unstable; urgency=medium + + * Update to git 20241005 from the gcc-14 branch. + - PR target/116962 (x86), PR target/116953 (AVR), + PR tree-optimization/116585, PR target/116839 (x86), + PR target/115860 (S390), PR target/116237 (darwin), + PR tree-optimization/116460, PR middle-end/115426, + PR tree-optimization/116610, PR middle-end/116454, + PR tree-optimization/116380, PR tree-optimization/116274, + PR tree-optimization/116258, PR middle-end/115641, PR target/116621 (x86), + PR ada/116430, PR c++/115361, PR c++/115987, PR c++/116418, + PR c++/116492, PR c++/116676, PR fortran/100273, PR c++/116369, + PR libstdc++/116857, PR libstdc++/37475, PR libstdc++/90276, + PR libstdc++/116755, PR libstdc++/116529, PR libstdc++/116754, + PR libstdc++/116777, PR libstdc++/108619. + * Reapply the sparc64 bits to the gcc-as-needed patch. Closes: #1082624, + + -- Matthias Klose Sat, 05 Oct 2024 05:46:25 +0200 + +gcc-14 (14.2.0-5) unstable; urgency=medium + + * Update to git 20240915 from the gcc-14 branch. + - Fix PR ipa/116410, PR tree-optimization/116501, PR c++/116219, + PR target/112108 (AArch64), PR target/116512 (x86), PR c++/116567, + PR c++/116606, PR fortran/116530, PR libstdc++/113663, + PR libstdc++/116549, PR libstdc++/116381, PR lto/116361, + PR target/116617 (x86), PR c++/96097, PR c++/116636, PR c++/116449, + PR c++/116320, PR c++/116276, PR lto/116614, PR libstdc++/116159, + PR libstdc++/116641. + * Don't run the tests on the riscv64 buildds, timing out. + * For offloading, require the amdgcn tools based on LLVM 19. + + -- Matthias Klose Sun, 15 Sep 2024 10:44:10 +0200 + +gcc-14 (14.2.0-4) unstable; urgency=medium + + * Update to git 20240829 from the gcc-14 branch. + - Fix PR target/116390 (AVR), PR target/116407 (AVR), + PR c++/116384 (closes: #1078786). + * Disable running the tests on alpha and arm64, hanging on the buildds. + * gcc/configure.ac enables some features based on the binutils version. The + most recently checked binutils version is 2.36 for GCC 14. For now it is + safe to derive the binutils runtime dependency from the binutils build + dependency. + + -- Matthias Klose Fri, 30 Aug 2024 12:17:39 +0200 + +gcc-14 (14.2.0-3) unstable; urgency=medium + + * Update to git 20240817 from the gcc-14 branch. + - Fix PR target/85624 (AVR), PR target/115464 (AArch64), + PR target/116174 (x86), PR c++/116327, PR c++/104981, PR c++/115550. + - s390: Fix high-level builtins vec_gfmsum{,_accum}_128. LP: #2075567. + * Don't build gccrs on the Hurd. + * Disable building gnat on hurd-amd64, until it gets bootstrapped. + * Don't run dwz on hurd-*. + * Update symbols files for libasan, libgccjit, libstdc++ and libgphobos. + Closes: #1077492. + + -- Matthias Klose Sun, 18 Aug 2024 19:10:28 +0200 + +gcc-14 (14.2.0-2) unstable; urgency=medium + + * Update to git 20240811 from the gcc-14 branch. + - Fix PR target/116287 (x86), PR target/116295 (AVR), PR target/113384 (PA), + PR tree-optimization/116224, PR target/116189 (SH), + PR target/116033 (RISCV), PR tree-optimization/116156, + PR target/116043 (x86), PR target/115981 (x86), PR c++/116223, + PR c++/112632, PR c++/116071, PR c++/88313, PR c++/115897, + PR c++/115656, PR c++/115296, PR c++/112288, PR fortran/108889, + PR target/116007, PR libstdc++/116038, PR libstdc++/115399, + PR libstdc++/114387, PR libstdc++/115854, PR libstdc++/116070, + PR libstdc++/116070. + * Fix two lintian warnings for the control file. + * Build-depend on pkgconf instead of pkg-config. + * gnat: Use the GNATBIND/GNATMAKE passed from the toplevel makefile. + Provide local unversioned symlinks gnatmake and gnatbind for the build. + Closes: #1078144. + + -- Matthias Klose Sun, 11 Aug 2024 03:56:24 +0200 + +gcc-14 (14.2.0-1) unstable; urgency=medium + + * GCC 14.2.0 release. + + * Update to git 20240801 from the gcc-14 branch. + - Fix PR target/115981 (x86). + * Show bootstrap compilers in the build log. + * Configure with --disable-multilib on loong64. + * Use the versioned gnatbind and gnatmake binaries for the build. + * Emit the config.log when the configure step fails. + * Refresh patches. + + -- Matthias Klose Thu, 01 Aug 2024 17:43:39 +0200 + +gcc-14 (14.1.0-5) unstable; urgency=medium + + * Update to git 20240719 from the gcc-14 branch. + - Fix PR c++/115865, PR rtl-optimization/115049, PR target/115351 (x86), + PR ipa/113787, PR tree-optimization/113673, PR target/115526 (alpha), + PR middle-end/115887, PR middle-end/115527, PR tree-optimization/115382, + PR tree-optimization/115868, PR tree-optimization/115841, + PR tree-optimization/115843, PR tree-optimization/115701, + PR tree-optimization/115701, PR tree-optimization/115867, + PR tree-optimization/115843, PR target/115459 (alpha), + PR target/115554 (RISCV), PR target/115562 (RISCV), + PR target/113719 (x86), PR target/113719 (x86), PR target/115872, + PR target/115752 (loongarch), PR target/115840 (RISCV), + PR target/115611 (ARM), PR middle-end/115836, PR target/113715 (RISCV), + PR analyzer/114899, PR c++/115476, PR c++/115165, PR c++/111890, + PR c++/115897, PR c++/106760, PR c++/115754, PR c++/99242, PR c++/99241, + PR fortran/93635, PR fortran/99798, PR fortran/103312, + PR libstdc++/113376, PR libstdc++/115522. + * On loong64, also build-depend on the gdc-14 frontend. + * Build libitm1 on loong64 and riscv64. + * Disable running the tests on x32, hanging on the buildds. + + -- Matthias Klose Fri, 19 Jul 2024 12:09:39 +0200 + +gcc-14 (14.1.0-4) unstable; urgency=medium + + * Update to git 20240710 from the gcc-14 branch. + - Fix PR target/115591 (RISCV), PR target/115188 (ARM), + PR target/87376 (AVR), PR target/115475 (AArch64), + PR target/115691 (PARISC), PR target/98762 (AVR), PR target/106069 (PPC), + PR target/115355 (PPC), PR target/114936 (AArch64), + PR target/88236 (AVR), PR target/115726 (AVR), PR pch/115312, + PR c/114930, PR c/115502, PR c++/115623, PR fortran/114019, + PR fortran/55978, PR fortran/115390, PR target/114890 (AArch64), + PR target/115153 (ARM), PR target/115763 (RISCV), + PR tree-optimization/115723, PR tree-optimization/115694, + PR tree-optimization/115669, PR tree-optimization/115646, + PR fortran/84006, PR fortran/100027, PR fortran/98534, PR fortran/115700, + PR libstdc++/115807, PR libstdc++/115585. + * d/p/0009-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff: + Adjust for the new glibc behaviour of defining __USE_TIME_BITS64 also + on native 64-bits platforms (Simon Chopin). Addresses: #1074577. + LP: #2071605. + * Pass --package-metadata on distros with supporting linkers (starting + with Debian trixie and Ubuntu noble). + The package metadata is constructed from the environment variables + ELF_PACKAGE_METADATA. + Setting NO_PKG_METADATA=1 disables the generation of the package metadata. + * Build target libraries with -mbranch-protection=standard to enable PAC/BTI + support on arm64 (Emanuele Rocca). Addresses: #1055711. + * Build target libraries with -fno-omit-frame-pointer, when enabled in + dpkg-buildflags. + * Strip again the executables. + + -- Matthias Klose Wed, 10 Jul 2024 12:12:12 +0200 + +gcc-14 (14.1.0-3) unstable; urgency=medium + + * Update to git 20240630 from the gcc-14 branch. + - Fix PR tree-optimization/115278, PR target/114846 (PPC), + PR tree-optimization/115508, PR driver/115440, PR target/115342 (AArch64), + PR target/106069 (PPC), PR target/115355 (PPC), PR target/114846 (PPC), + PR c++/115624, PR c/115587, PR c++/115504, PR c++/115198, PR c++/115358, + PR libstdc++/115668, PR libstdc++/115575, PR libstdc++/115454. + - Backport a fix for an ICE on riscv64. Closes: #1071140. + * Fix typo for loong64 build dependencies. + * Disable running the tests on the Ubuntu arm64 buildds (times out). + * Starting with Ubuntu 24.10, stop building s390x multilibs. + * Fix gccrs build dependencies on the Hurd. Closes: #1073830. + * Drop the sys-auxv-header patch. Closes: #1071555. + + -- Matthias Klose Sun, 30 Jun 2024 16:27:40 +0200 + +gcc-14 (14.1.0-2) unstable; urgency=medium + + * Update to git 20240619 from the gcc-14 branch. + - Fix PR target/109549 (S390), PR target/115253 (ARM), + PR rtl-optimization/115281, PR target/115353 (ARM), + PR middle-end/115352, PR tree-optimization/115337, PR middle-end/108789, + PR target/115324 (PPC), PR rtl-optimization/114902, + PR rtl-optimization/115092, PR tree-optimization/115307, + PR target/115297 (alpha), PR tree-optimization/115192, + PR target/113719 (x86), PR tree-optimization/115149, + PR tree-optimization/115197, PR tree-optimization/114921, + PR target/115169 (loongarch), PR tree-optimization/115232, + PR rtl-optimization/115038, PR tree-optimization/115152, + PR sanitizer/115172, PR target/115069 (x86), PR tree-optimization/115154, + PR tree-optimization/115143, PR tree-optimization/114998, + PR middle-end/114931, PR middle-end/114931, PR ada/114708, + PR ada/115270, PR c/115290, PR middle-end/114931, PR c/114493, + PR target/111343 PR c++/115511, PR c++/99678, PR c++/115239, + PR c++/115283, PR c++/115378, PR c++/115187, PR c++/114868, + PR c++/105320, PR c++/114275, PR c++/114983, PR libstdc++/107800, + PR c++/115139, PR c++/115114, PR c++/114994, PR fortran/83865, + PR fortran/115150, PR fortran/86100, PR fortran/115039, + PR fortran/114874, PR jit/115442, PR target/115360 (ARM), + PR target/115065 (AVR), PR libstdc++/115308, PR libstdc++/115247, + PR libstdc++/114958, PR libstdc++/115335, PR libstdc++/111641, + PR libstdc++/109849, PR libstdc++/115269, PR libstdc++/114940, + PR libstdc++/115099, PR libstdc++/115119, PR libstdc++/115015, + PR libstdc++/115063, PR libstdc++/114891, PR libstdc++/114866. + * Configure again with --enable-checking=release. Closes: #1072519. + * On loong64, build-depend on GCC 14 frontends. Closes: #1072635. + * Build gccrs on x32. Closes: #1072345, #1072327. + * Don't build Ada on sparc (32bit). Closes: #1072328. + + -- Matthias Klose Wed, 19 Jun 2024 09:44:29 +0200 + +gcc-14 (14.1.0-1) unstable; urgency=medium + + * GCC 14.1.0 release. + * Update to git 20240514 from the gcc-14 branch. + - Fix PR target/114975 (AVR), PR tree-optimization/114965, + PR middle-end/114907, PR sanitizer/114956, PR tree-optimization/114876, + PR ipa/92606, PR c++/89224, PR c++/114856, PR c++/114889, + PR target/69374, PR target/112959, PR target/114968 (x86), + PR driver/114980, PR c++/114974, PR c++/114901, PR c++/114903, + PR fortran/114827, PR target/114981 (AVR). + + [ Nicolas Boulenguez ] + * Improve the ada-lib-info-source-date-epoch patch. + * Ada: remove duplicate unused patches + * ada-749574.diff: update and apply again. + * Refresh the autogen part of ada-{armel-libatomic,link-lib}.diff. + * Ada: fix a typo in patch for PR ada/114065 breaking the build on hurd. + + [ Matthias Klose ] + * Refresh patches. + * Update NEWS files. + * gcc-14: Depend on cpp-14, lost with the -for-build/-for-host changes. + * Run the tests again during the build. + * Turn on again PGO and LTO builds. + + -- Matthias Klose Tue, 14 May 2024 09:22:26 +0200 + +gcc-14 (14-20240429-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240429. + + * Apply proposed patch for PR libquadmath/114533 (Simon Chopin). + Closes: #1064426. LP: #2052929. + * Don't build the libstdc++-doc package when the nodoc profile is enabled. + * Clean up some version restrictions on build-dependencies. + * Don't set the _FILE_OFFSET_BITS and _TIME_BITS macros, if the + _DISTRO_EVADE_TIME_BITS macro is defined. + See https://sourceware.org/bugzilla/show_bug.cgi?id=31624. + * Build-depend on amdgcn-tools-18, required for new gcn offload targets. + * Package the new gfx1030, gfx1036, gfx1100 and gfx1103 offload targets. + LP: #2060619. + * rs now requires cargo to bootstrap. Disable building gccrs on architectures + which don't have cargo. + Disable gccrs cross compilers. Not working upstream, more constraints + on rust macros. + * Build gnat, gdc and gm2 on loong64. Closes: #1069708. + * Integrate gnat patches from Nicolas: + - Update the ada-lib-info-source-date-epoch patch. + - Remove the pr114065-proposed patch. + - Add patches (v7) from PR ada/114065. Addresses: #1067453. + + -- Matthias Klose Mon, 29 Apr 2024 11:15:28 +0200 + +gcc-14 (14-20240330-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240330. + + * Make vhdl known to the PPC backend. + * Use the proposed patch to fix PR ada/114064, 64bit definitions for + time_t_bits type on 32bit archs. + * Move the _FORTIFY_SOURCE setting from cc1 to the driver. + * d/p/gcc-distro-defaults: Make -fstack-protector-explicit known. + * newlib: amdgcn: Implement proper locks, taken from newlib trunk. + * Refresh patches. + * Use gcc:SoftVersion for -for-host dependencies (Helmut Grohne). + Closes: #1067904. + + -- Matthias Klose Sat, 30 Mar 2024 13:27:56 +0100 + +gcc-14 (14-20240315-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240315. + + * Fix installation of the amdgcn offload compiler. Closes: #1065458. + * Fix installation of the nvptx offload compiler. Closes: #1065599. + * Add loong64 bits for the gcc-multilib-multiarch patch. Closes: #1061371. + * Enable Modula-2 on the Hurd (Samuel Thibault). Closes: #1066932. + + -- Matthias Klose Fri, 15 Mar 2024 20:35:12 +0100 + +gcc-14 (14-20240303-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240303. + * Build without gdb for now. + + -- Matthias Klose Sun, 03 Mar 2024 11:40:51 +0100 + +gcc-14 (14-20240221-2.1) unstable; urgency=medium + + * Non-maintainer upload. + * Upload to unstable to start the 64-bit time_t transition. + + -- Steve Langasek Mon, 26 Feb 2024 21:41:05 +0000 + +gcc-14 (14-20240221-2) experimental; urgency=medium + + * libgnat: Use Long_Long_Integer'Size for the definition of time_t_bits + for 32bit architectures using time_t64. + + -- Matthias Klose Thu, 22 Feb 2024 04:12:32 +0100 + +gcc-14 (14-20240221-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20240221. + + * Proposed fix for PR d/113772. + * Fix disabling go and m2 according to OS (Samuel Thibault). Closes: #1063643. + * Pass -D_TIME_BITS=64 together with -D_FILE_OFFSET_BITS=64 by default + on the 32bit architectures armel, armhf, hppa, m68k, mips, mipsel, + powerpc (-m32 only) and sh4. + * PR libstdc++/99832, std::chrono::system_clock::{from,to}_time_t: + Add ABI tag for timet64. + * Fix libsanitizer build with _TIME_BITS set. + + -- Matthias Klose Thu, 22 Feb 2024 00:27:13 +0100 + +gcc-14 (14-20240207-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20240207. + + * Enable sanitizer packages for loong64. + * Build libubsan1 for riscv64. + * Apply proposed patch for PR target/113720 (alpha). + * Drop the libgo-soname patch, use the bumped libgo upstream soname. + * Apply proposed patch for PR middle-end/113731. + + -- Matthias Klose Wed, 07 Feb 2024 05:39:32 +0100 + +gcc-14 (14-20240201-3) unstable; urgency=medium + + * Fix PR middle-end/113705 (ftbfs on arm64). Closes: #1062535. + + -- Matthias Klose Thu, 01 Feb 2024 22:53:33 +0100 + +gcc-14 (14-20240201-2) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240201. + + * Add more dependencies for -for-build and -for-host packages. + * For Ubuntu, only define _FORTIFY_SOURCE, if there are no options + -U_FORTIFY_SOURCE or -D_FORTIFY_SOURCE=N given. + * Update libgcc-s symbols files. + + -- Matthias Klose Thu, 01 Feb 2024 14:11:28 +0100 + +gcc-14 (14-20240131-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240131. + + [ Matthias Klose ] + * Fix and add dependencies for -for-build and -for-host packages. + * Add conflict to libgccjit-13-doc. Closes: #1061647. + * Fix some -for-{build,host} package descriptions. Closes: #1061670. + * Correct conflicts with old gnat-N versions. Addresses: #1061648. + * Apply proposed patch for PR target/113336 (ARM). Closes: #1061370. + * Build again gnat and gcc on armel. + + [ Aurelien Jarno ] + * Update libasan8 symbols for riscv64. + * Update liblsan0 symbols for riscv64. + + -- Matthias Klose Wed, 31 Jan 2024 10:40:26 +0100 + +gcc-14 (14-20240127-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240127. + * Disable the gccgo build on armel for now. See #1061370. + + -- Matthias Klose Sat, 27 Jan 2024 09:51:04 +0100 + +gcc-14 (14-20240126-2) unstable; urgency=medium + + * Update libgccjit symbols file. + * Bump autopkg test dependencies to GCC 14. + * Try harder to disable ada on armel. + + -- Matthias Klose Fri, 26 Jan 2024 15:05:36 +0100 + +gcc-14 (14-20240126-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240126. + * Don't define _no_archs macros directly. + * Add missing libstdc++-{dbg,doc} conflicts. Closes: #1061345. + * Fix gm2-14 package description. Closes: #1061372. + * Re-add conflicts for gnat packages. + * Disable the ada build on armel for now. See #1061370. + + -- Matthias Klose Fri, 26 Jan 2024 12:42:52 +0100 + +gcc-14 (14-20240121-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20240121. + + [ Matthias Klose ] + * Update symbols files. + * Refresh patches. + * Drop KFreeBSD patches. + * Drop the KFreeBSD build support. + * Bump debhelper to v11. + * Configure with --disable-s390-excess-float-precision for sid/trixie and + Ubuntu noble (24.04 LTS). + * Update the gcc-as-needed patch for loong64. Addresses: #1054469. + * Remove the support to build ARM sf/hf multilib packages. + * Update the variants for the amdgcn offload compiler. + * Remove references to obsolete CPUs m32r and tilegx. + * Add changes for hurd-amd64 (Samuel Thibault). Addresses: #1057004. + * Don't build-depend on gdb on hurd-amd64 for now. + * Remove the packaging bits to build gdc as a separate source package. + * Remove the packaging bits to build gccgo as a separate source package. + * Build the nvptx offload compiler on arm64. + * Don't strip executables for the prerelease uploads. + * Disable LTO builds on hurd-amd64. + * Configure with --enable-checking=yes,extra,rtl for now. + * Bump libgm2 soname. + * Add support to build from a combined binutils/GCC tree. + * Use DEB_BUILD_OPTIONS='... gcc-ice=nodump,norepro' for turning off dumping + the preprocessed source to stdout. Addresses: #1057635. + * Set DEB_BUILD_OPTIONS='... gcc-ice=nodump,norepro' when running the + testsuite. + * Default to pie on loong64. Addresses: #1057433. + * Bump the libphobos soname to distinguish from GCC 13 (local patch) + * Bump the libgo soname to distinguish from GCC 13 (local patch) + * For Ubuntu 24.04 LTS and later, switch _FORTIFY_SOURCE to 3 by default + instead of 2 when optimization is enabled. LP: #2012440. + * Use "arch" macros instead of "cpu" macros for control file generation. + * Set {go,m2,rs}_no_archs macros for the generation of the control file. + * Remove trailing whitespace in control file. + * Build Enable LSan and TSan packages for riscv64. + * Remove empty directory in the snapshot package. Addresses: #1060080. + * Disable the LTO build on mips64el (requested by YunQiang Su). + * Configure with --enable-libstdcxx-backtrace. LP: #2048233. + * Update the testsuite-hardening patches, and apply them again. + * Fall-back to the host crypt.h for the target, required by cross builds. + See: #1014375. + * Build again gccrs. + * Update newlib to 4.4.0.20231231. + * Remove the support to create i586 symlinks on i386 and hurd-i386. + * Mark *-N-for-{build,host} packages as dependency packages. + * Don't include -Xliblto_plugin.so for dh_fixperms call. + * debian/copyright: Update copyright years, add libgm2 and libgrust. + + [ Nicolas Boulenguez ] + * Ada: Actually install README.gnat to the gnat-X package. + * Ada: Remove a duplicate conditional on with_separate_gnat. + * Ada: Stop installing unversioned symlinks to the shared libgnat. + * Ada: Stop installing the /usr/bin/gnatgcc symbolic link. + * Ada: Remove unversioned symbolic links to gnat tools. + * Ada: Remove the conflict between gnat-14 and previous versions. + * Ada: Stop searching gnatgcc in build dependencies. + * Ada: Remove the with_separate_gnat Make variable. + * Ada: Remove all stuff conditioned by PKGSOURCE=gnat. + + [ Helmut Grohne ] + * Add loong64 to any_archs. + * Always issue a build-dependency on debhelper. + * For cross toolchain builds, add a build dependency on target binutils. + * For cross toolchain builds, add build dependencies on the Ada, D and + Modula-2 frontends. + * Remove redundant sections and priorities for non-tools in the control file. + * Remove redundant sections and priorities for tools in the control file. + * Add support code for gcc-for-host. + - control.m4 macro for_each_arch iterates over all known architectures and + substitutes arch_deb (the Debian architecture name), arch_gnu (the GNU + triplet) and arch_gnusuffix (a package name suffix encoding the + architecture) variables. + - The substitution variable target:suffix can be used to interpolate the + current target architecture suffix for dependencies from the regular + tool packages on architecture-qualified tool packages. + * Build $triplet packages: + {cpp,gcc,g++,gfortran,gdc,gobjc,gobjc++,gccgo,gnat,gm2,gccrs}-14-$triplet + * Use cross_gencontrol for *-for-host packages. + * libgcc-s[124]: move libgcc_s.so.? to /usr for DEP17. Addresses: #1060001. + * Add packages {cpp,gcc,g++,gfortran,gdc,gobjc,gobjc++}-N-for-{build,host}. + * Add packages {gccgo,gnat,gm2,gccrs}-N-for-{build,host}. + * Restrict $tool-$v-$triplet packages via ${tool}_no_archs. + + -- Matthias Klose Sun, 21 Jan 2024 07:38:02 +0100 + +gcc-13 (13.2.0-5) unstable; urgency=medium + + * Update to git 20231005 from the gcc-13 branch. + - Fix PR tree-optimization/111331, PR tree-optimization/110386, + PR target/111121 (AArch64), PR tree-optimization/110315, + PR target/111411 (AArch64), PR target/111412 (riscv), + PR ada/110488, PR c++/111493, PR c++/111485, PR c++/99631, + PR c++/111471, PR fortran/37336, PR fortran/111674, PR fortran/92586, + PR fortran/68155, PR modula2/111510, PR libstdc++/111050, + PR libstdc++/111102, PR libstdc++/108046, PR libstdc++/111511, + PR c++/111512, PR c++/111357. + * Provide symlinks for the shared Modula-2 runtime libraries in + the private gcc library directory. Closes: #1052008. + * Install the static Modula-2 libraries. + * Add autopkg test for Modula-2. + * Don't assume that hppa64-linux-gnu has the sys/mman.h header, + use the fallback for libgcov. + * Update the libquadmath portions of the copyright file. Closes: #1052314. + + -- Matthias Klose Thu, 14 Dec 2023 18:38:37 +0100 + +gcc-13 (13.2.0-4) unstable; urgency=medium + + * Update to git 20230913 from the gcc-13 branch. + - Fix PR target/96762 (PPC), PR target/111340 (x86), + PR target/111306 (x86), PR target/111335 (x86), + PR modula2/111330. + - Address stack protector and stack clash protection weaknesses + on AArch64. CVE-2023-4039. + + [ Matthias Klose ] + * Fix PR fortran/88552, taken from the trunk. LP: #1842164. + + [ Aurelien Jarno ] + * Update libasan8 symbols for riscv64. + + -- Matthias Klose Wed, 13 Sep 2023 13:17:34 +0200 + +gcc-13 (13.2.0-3) unstable; urgency=medium + + * Update to git 20230902 from the gcc-13 branch. + - Fix PR target/111127 (x86), PR middle-end/111017 (x86), + PR tree-optimization/111070, PR tree-optimization/111039, + PR tree-optimization/111019, PR tree-optimization/110702, + PR tree-optimization/111109, PR debug/111080, PR target/111010 (x86), + PR c++/106652, PR c++/110927, PR c++/109678, PR c++/106310, + PR fortran/87477, PR modula2/110779, PR modula2/108119, + PR libgcc/110956, PR middle-end/111017, PR libstdc++/110860, + PR libstdc++/110990, PR libstdc++/110970, PR libstdc++/110974, + PR libstdc++/110968, PR target/110484 (loong64), + PR tree-optimization/110914, PR tree-optimization/111015, + PR target/109725 (riscv), PR c++/109751, PR c++/92407. + + [ Aurelien Jarno ] + * Fix PR target/110066 (RISCV), taken from the trunk. + + [ Matthias Klose ] + * Remove test protocols in clean target. Addresses: #1044154. + * Disable Ada, Go, D, Modula-2 frontends on loong64. + + [ Nicolas Boulenguez ] + * Ada: deprecate the gnatgcc symbolic link. + * Ada: move README.gnat to debian/ada/. + * Ada: remove the obsolete acats-killer script. + * Ada: let gnat-BV provide a versioned virtual package. + + -- Matthias Klose Sat, 02 Sep 2023 11:39:47 +0200 + +gcc-13 (13.2.0-2) unstable; urgency=medium + + * Update to git 20230810 from the gcc-13 branch. + - Fix PR target/110220 (AVR), PR target/110741 (PPC), + PR target/109713 (RISCV), PR target/89835 (RISCV), + PR tree-optimization/110280, PR modula2/110125, PR c++/110197, + PR c++/110566, PR c++/108179, PR fortran/109684, PR fortran/110825, + PR fortran/108961, PR modula2/110779, PR modula2/110161, + PR modula2/110865, PR modula2/110284, PR modula2/110174, + PR modula2/110631, PR modula2/110125, PR libstdc++/110860, + PR libstdc++/110917, PR libstdc++/110862. + * Stop building 32bit liblsan packages, where gcc-13 is not part of + the distro. Closes: #1042482. + * Update sanitizer symbols files. + * Address some lintian warnings: + - Be quiet about libstdc++-doc manpages. + - Don't complain about unstripped sanitizer libraries. + * Correct debhelper to mess up permissions in /usr/libexec. + * Strip again the executables. + + -- Matthias Klose Thu, 10 Aug 2023 05:49:00 +0200 + +gcc-13 (13.2.0-1) unstable; urgency=medium + + * GCC 13.2.0 release. + * Update to git 20230730 from the gcc-13 branch. + - Fix PR tree-optimization/110755, PR tree-optimization/110799, + PR tree-optimization/110766, PR c++/110809, PR modula2/109952, + PR modula2/109952, PR modula2/109586. + + [ Nicolas Boulenguez ] + * autopkgtests: compute GCC version, reuse AUTOPKGTEST_TMP + + [Matthias Klose] + * Stop building gccrs, not ready yet for GCC 13.2, and probably + won't be backported to GCC 13 at all. Just keep it building + for Ubuntu 23.04, where it cannot be removed from the release pocket. + * gcc-13-doc: Fix installation of the libitm info file. LP: #1936394. + * Refresh patches. + + -- Matthias Klose Sun, 30 Jul 2023 07:04:14 +0200 + +gcc-13 (13.1.0-9) unstable; urgency=medium + + * Update to git 20230720 from the gcc-13 branch (13.2 release candidate). + - Fix PR tree-optimization/110731, PR tree-optimization/110669, + PR target/110206, PR target/101469 (SH), PR target/106966 (alpha), + PR c++/110535, PR c++/110122, PR c++/110524, PR fortran/95947, + PR fortran/110658, PR fortran/110288, PR libgcc/110179, PR libgcc/109712, + PR libstdc++/109921, PR libstdc++/110432, PR libstdc++/110542, + PR libstdc++/110574, PR libstdc++/95048. + * Update libstdc++ symbols file for ppc64el. + * Update patches for backports. + * libgccjit-13-doc: Relax dependency on the gcc-13-base package. + * Fix some lintian warnings. + + -- Matthias Klose Thu, 20 Jul 2023 13:37:42 +0200 + +gcc-13 (13.1.0-8) unstable; urgency=medium + + * Update to git 20230711 from the gcc-13 branch. + - Fix PR tree-optimization/110557, PR c++/110595, + PR tree-optimization/110556, PR tree-optimization/110515, + PR tree-optimization/110392, PR tree-optimization/110381, + PR target/110560 (RISCV), PR target/105325 (PPC), + PR tree-optimization/110228, PR c++/110468, PR c++/110463, + PR d/108842, PR d/110516, PR d/110514, PR d/110471, PR fortran/110585, + PR testsuite/108835, PR d/103944, PR libstdc++/104299. + * Apply proposed patch for PR target/106966. Addresses: #1019011. + + -- Matthias Klose Tue, 11 Jul 2023 10:25:56 +0200 + +gcc-13 (13.1.0-7) unstable; urgency=medium + + * Update to git 20230630 from the gcc-13 branch. + - Fix PR tree-optimization/110298, PR debug/110295, PR middle-end/110055, + PR ipa/109983, PR tree-optimization/109143, PR target/110132 (AArch64), + PR target/110100 (AArch64), PR target/110100 (AArch64), + PR target/109932 (PPC), PR target/110011 (PPC), PR c++/110102, + PR c++/109247, PR rtl-optimization/110237, PR target/110309 (x86), + PR testsuite/66005, PR middle-end/110420, PR middle-end/103979, + PR middle-end/98619, PR ipa/110276, + PR target/110264 (RISCV, closes: #1038774), PR d/106977, + PR target/110406, PR d/110359, PR d/110113, PR fortran/86277, + PR libstdc++/110239, PR libstdc++/110149, PR libstdc++/109741, + PR libstdc++/100285. + + [ Nicolas Boulenguez ] + * ada/check_ali_update.sh: report checksum changes but ignore timestamps + + [Matthias Klose] + * Fix PR tree-optimization/110280, taken from the trunk. Closes: #1038768. + + -- Matthias Klose Fri, 30 Jun 2023 14:36:39 +0200 + +gcc-13 (13.1.0-6) unstable; urgency=medium + + * Update to git 20230617 from the gcc-13 branch. + - Fix PR target/110136 (loongarch), PR target/110227 (X86), + PR middle-end/110200. + * Ignore gccrs bootstrap comparison failures on mipsel. + * Remove obsolete gcn assembler patch. + * Mark libgcc-sN packages as protected/important for newer releases. + * Apply proposed patch for PR ipa/110276. Closes: #1037640. + + -- Matthias Klose Sat, 17 Jun 2023 11:34:12 +0200 + +gcc-13 (13.1.0-5) unstable; urgency=medium + + * Re-enable building gccrs. + + -- Matthias Klose Sun, 11 Jun 2023 17:12:06 +0200 + +gcc-13 (13.1.0-4) unstable; urgency=medium + + * Update to git 20230611 from the gcc-13 branch. + - Fix PR target/109650 (AVR), PR target/92729 (AVR), + PR tree-optimization/110165, PR tree-optimization/110166, + PR target/110044 (PPC), PR target/110108 (X86), PR target/109939 (ARM), + PR target/106907 (PPC), PR target/109800 (ARM), PR bootstrap/110085, + PR target/110088 (AVR), PR target/109954 (X86), PR target/110036 (RISCV), + PR target/109547 (RISCV), PR target/104327 (AVR), PR target/82931 (AVR), + PR tree-optimization/109505, PR target/105753 (AVR), PR fortran/96024, + PR fortran/100607, PR libgcc/109670, PR libgcc/109685, + PR libstdc++/108178, PR libstdc++/110139, PR libstdc++/109758, + PR libstdc++/109822, PR libstdc++/109261, PR libstdc++/109949, + PR libstdc++/109261. + * Configure --with-cpu=ev56 instead of --with-arch=ev56 for alpha. + * Also provide the liblto_plugin.so symlink in the old place. + Closes: #1036566. + + -- Matthias Klose Sun, 11 Jun 2023 13:48:04 +0200 + +gcc-13 (13.1.0-3) experimental; urgency=medium + + * Update to git 20230520 from the gcc-13 branch. + - PR c++/109884, PR target/104338 (RISCV), PR libstdc++/109816, + Fix PR target/109661 (AArch64), PR c++/109871, PR c++/109868, + PR c++/109774, PR c++/109745, PR c++/83258, PR c++/80488, PR c++/97700, + PR c++/109761, PR c++/109651, PR fortran/109846, PR fortran/109641, + PR target/104338 (RISCV), PR libstdc++/109816, PR libstdc++/109883, + PR libstdc++/109883. + * Update libgcc-s, libhwasan and libstdc++ symbols files. + * Patch libstdc++ to support SOURCE_DATE_EPOCH in documentation (Vagrant + Cascadian). Closes: #1036367. + * Configure --with-arch=ev56 for alpha. Closes: #1036158. + + -- Matthias Klose Sat, 20 May 2023 11:42:17 +0200 + +gcc-13 (13.1.0-2) experimental; urgency=medium + + * Update to git 20230510 from the gcc-13 branch. + - Fix PR tree-optimization/109778, PR target/108758 (PPC), + PR target/109069 (PPC), PR libgomp/108098, PR target/109762 (AArch64), + PR tree-optimization/109609, PR rtl-optimization/109585, + PR tree-optimization/109573, PR c/109409, PR c/107682, PR c/109412, + PR c/107041, PR debug/109676, PR target/109535 (RISCV), PR c++/109756, + PR c++/109642, PR c++/109640, PR c++/109671, PR c++/109666, PR c++/108099, + PR libstdc++/109694, PR libstdc++/108969, PR libstdc++/109703, + PR libstdc++/40380, PR fortran/109622, PR fortran/109622, + PR libffi/109447. + * Add build support for hurd-amd64 (Samuel Thibault). Closes: #1035614. + + -- Matthias Klose Wed, 10 May 2023 13:43:04 +0200 + +gcc-13 (13.1.0-1) experimental; urgency=medium + + * GCC 13.1.0 release. + * Update NEWS files. + * Refresh patches. + * Update cross-install-location patch (Helmut Grohne). Closes: #1034293. + + -- Matthias Klose Thu, 27 Apr 2023 11:28:53 +0200 + +gcc-13 (13-20230419-1) experimental; urgency=medium + + * New upstream snapshot, taken from the gcc-13 branch. + * Disable rust, as done upstream for the gcc-13 branch. + * Update libgphobos symbols. + + -- Matthias Klose Wed, 19 Apr 2023 23:22:03 +0200 + +gcc-13 (13-20230411-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + + -- Matthias Klose Tue, 11 Apr 2023 14:08:31 +0200 + +gcc-13 (13-20230320-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Pass GM2_FOR_TARGET for cross builds (Helmut Grohne). Addresses: #1032161. + + -- Matthias Klose Mon, 20 Mar 2023 12:31:54 +0100 + +gcc-13 (13-20230305-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * On x86, hwasan is only available for 64bit multilibs, don't generate + dependencies on any other hwasan multilib packages. + TODO: Package lib64hwasan for i386 and x32. + + -- Matthias Klose Sun, 05 Mar 2023 10:09:24 +0100 + +gcc-13 (13-20230215-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Fix gdc cross builds. + + -- Matthias Klose Wed, 15 Feb 2023 11:02:04 +0100 + +gcc-13 (13-20230210-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + + [Matthias Klose] + * Use the libexec subdir. + + [YunQiang Su] + * Update multiarch patches for mips r6. + * Update the update-patches target. + + -- Matthias Klose Fri, 10 Feb 2023 07:01:03 +0100 + +gcc-13 (13-20230127-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Update cross-install patches. + * Refresh patches. + + -- Matthias Klose Fri, 27 Jan 2023 07:14:40 +0100 + +gcc-13 (13-20230126-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Update newlib to 4.3.0. + + -- Matthias Klose Thu, 26 Jan 2023 10:01:37 +0100 + +gcc-13 (13-20230114-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Bump standards version. + + -- Matthias Klose Sat, 14 Jan 2023 08:49:10 +0100 + +gcc-13 (13-20230106-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Fix libstdc++ symbols file, not distinguishing versions for some + symbols. + * Ship hwasan on amd64. + * Bump libgm2 soversion. + * Refresh patches. + * Update libgomp, liblsan, libhwasan, libubsan and libstdc++ symbols files. + + -- Matthias Klose Fri, 06 Jan 2023 16:17:07 +0100 + +gcc-13 (13-20221231-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Fix gccrs symlink. Closes: #1027099. + * Update multiarch patch for looongson. Addresses: #1027278. + + -- Matthias Klose Sat, 31 Dec 2022 12:38:04 +0100 + +gcc-13 (13-20221226-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk (m2 and rs merged). + * Drop gdc build dependency on unsupported architectures. Closes: #1026201. + * Install versioned gm2 doc files. Closes: #1026245. + + -- Matthias Klose Mon, 26 Dec 2022 16:33:56 +0100 + +gcc-13 (13-20221214-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Update newlib to 4.2.0. + * Refresh patches. + * Update symbols files. + * Bump libgo and libgphobos sonames. + * Bump standards version. + * Split out a gm2-13-doc package. + * Don't strip executables for test builds. + * Fix PR ada/107475, proposed patch. + * Add conflicts to packages built from the gcc-12 source. + * Add gccrs packaging bits. + * Build libatomic in the rtlibs stage (Helmut Grohne). See: #1009286. + * Add multiarch support for loongarch. + + -- Matthias Klose Wed, 14 Dec 2022 08:22:59 +0100 + +gcc-12 (12.2.0-7) unstable; urgency=medium + + * Update to git 20221021 from the gcc-12 branch. + - Fix PR middle-end/100400, PR target/96072 (PPC), PR target/100645 (PPC). + * Fix the binary-arch only build. + + -- Matthias Klose Fri, 21 Oct 2022 10:19:56 +0200 + +gcc-12 (12.2.0-6) unstable; urgency=medium + + * Update to git 20221019 from the gcc-12 branch. + - Fix PR tree-optimization/106934, PR tree-optimization/106922, + PR tree-optimization/106892, PR tree-optimization/105937, + PR target/107064 (x86), PR fortran/106817, PR fortran/105012, + PR fortran/100040, PR fortran/100029, PR fortran/106579, + PR middle-end/106548, PR libstdc++/106320, PR libstdc++/106695, + PR libstdc++/106607, PR libstdc++/106589, PR libstdc++/105678, + PR target/99685 (PPC), PR tree-optimization/107254, + PR tree-optimization/107212, PR tree-optimization/107160, + PR tree-optimization/107107, PR tree-optimization/106922, + PR tree-optimization/106922, PR target/107248 (SPARC), PR c++/106925. + * Fix libstdc++ build on the Hurd. Closes: #1021357. + * gobjc: drop obsolete sparc-only conflict (Helmut Grohne). Closes: #1020599. + * gobjc: remove unused binary-without-manpage lintian overrides (Helmut + Grohne). Closes: #1020600. + * Include the Modula-2 documentation into the gm2-12 package. + * Handle the "bookworm" release name instead of "sid". + * Backport two newlib patches for the nvptx target. + + -- Matthias Klose Wed, 19 Oct 2022 07:38:40 +0200 + +gcc-12 (12.2.0-5) unstable; urgency=medium + + * Update libgcc symbols file for arc. + * Work around building libobjc on arc. + * Don't build Ada, D and Go on arc. + + -- Matthias Klose Mon, 03 Oct 2022 10:47:38 +0200 + +gcc-12 (12.2.0-4) unstable; urgency=medium + + * Update to git 20221004 from the gcc-12 branch. + - Fix PR target/107061 (x86), PR middle-end/106982, + PR target/106491 (AArch64), PR target/104482 (PPC), + PR target/105485 (PPC), PR fortran/100103, PR fortran/100132, + PR fortran/107054, PR fortran/82868, PR fortran/106985, + PR fortran/106986. + * Add multiarch patch for arc-linux-gnu. Closes: #989453. + + -- Matthias Klose Sun, 02 Oct 2022 12:12:08 +0200 + +gcc-12 (12.2.0-3) unstable; urgency=medium + + * Update to git 20220920 from the gcc-12 branch. + - Fix PR tree-optimization/106860, PR tree-optimization/106841, + PR tree-optimization/106809, PR c++/93259, PR c++/106893, PR c++/90451, + PR fortran/106857, PR fortran/100245, PR libstdc++/106320. + + -- Matthias Klose Tue, 20 Sep 2022 10:02:11 +0200 + +gcc-12 (12.2.0-2) unstable; urgency=medium + + * Update to git 20220908 from the gcc-12 branch. + - Fix PR target/101322 (PPC), PR rtl-optimization/106187, + PR target/105463 (ARM), PR other/106782, PR other/106782, + PR target/106524 (AArch64), PR target/106017 (PPC), + PR target/106714 (x86), PR target/106721 (x86), PR target/106704 (x86), + PR rtl-optimization/106590, PR target/106459 (loongarch), + PR tree-optimization/106322, PR target/103353 (PPC), PR middle-end/106548, + PR c++/106759, PR fortran/100136, PR fortran/106579, PR fortran/106579, + PR fortran/103694, PR fortran/106566, PR libstdc++/106695, + PR libstdc++/106607, PR libstdc++/106589, PR libstdc++/105678. + + -- Matthias Klose Thu, 08 Sep 2022 15:52:13 +0200 + +gcc-12 (12.2.0-1) unstable; urgency=medium + + * GCC 12.2.0 release. + * Strip the cc* executables again. Closes: #1015185. + * cpp-12: Suggest cpp-12-doc. Closes: #1016930. + * Refresh patches. + + -- Matthias Klose Mon, 22 Aug 2022 09:38:01 +0200 + +gcc-12 (12.1.0-8) unstable; urgency=medium + + * Update to git 20220809 from the gcc-12 branch. + - Fix PR testsuite/106345, PR target/106091 (PPC), PR middle-end/106449, + PR debug/106261, PR middle-end/106144, PR tree-optimization/106189, + PR lto/106129, PR tree-optimization/106087, PR tree-optimization/106063, + PR tree-optimization/105665, PR tree-optimization/100810, + PR middle-end/106331, PR tree-optimization/106131, PR middle-end/106027, + PR tree-optimization/106112, PR tree-optimization/105971, + PR tree-optimization/105969, PR middle-end/105965, PR target/105459, + PR tree-optimization/105946, PR analyzer/106225, PR analyzer/106204, + PR analyzer/105285, PR preprocessor/97498, PR c++/106311, PR c++/106230, + PR c++/105912, PR c++/105842, PR c++/53164, PR c++/105848, + PR c++/105637, PR c++/100374, PR c++/105758, PR c++/96363, + PR fortran/103504, PR fortran/101330, PR libfortran/106079, + PR libstdc++/104443, PR libstdc++/106248, PR libstdc++/105995, + PR libstdc++/105957, PR libstdc++/105844, PR libstdc++/100823, + PR libstdc++/88881, PR libstdc++/105880, PR d/106555 (closes: #1016701). + * Update watch file. + + -- Matthias Klose Tue, 09 Aug 2022 21:22:04 +0200 + +gcc-12 (12.1.0-7) unstable; urgency=medium + + * Remove the libphobos test forkgc2.d, hangs. See PR d/103944. + + -- Matthias Klose Mon, 18 Jul 2022 18:35:43 +0200 + +gcc-12 (12.1.0-6) unstable; urgency=medium + + * Update to git 20220717 from the gcc-12 branch. + - Fix PR rtl-optimization/105041, PR tree-optimization/105860, + PR target/105930 (x86), PR tree-optimization/106114, + PR target/105991 (PPC), PR target/106122 (x86), PR c++/106102, + PR target/103722 (SH), PR bootstrap/105551, PR target/106097, + PR c++/105626, PR c++/106024, PR c++/105541, PR c++/105779, + PR c++/106024, PR d/106139, PR fortran/104313, PR fortran/103137, + PR fortran/103138, PR fortran/103693, PR fortran/105243, + PR fortran/106121, PR fortran/105954, PR fortran/105691, + PR fortran/105813. + * Apply a hack to build libgo on the Hurd. Closes: #1005297. + + -- Matthias Klose Sun, 17 Jul 2022 11:18:47 +0200 + +gcc-12 (12.1.0-5) unstable; urgency=medium + + * Update to git 20220629 from the gcc-12 branch. + - Fix PR bootstrap/105551, PR rtl-optimization/106032, PR ipa/105600, + PR middle-end/106030, PR target/106096, PR tree-optimization/105736, + PR tree-optimization/105254, PR tree-optimization/105940, + PR tree-optimization/105940, PR target/105960 (x86), PR ipa/105739, + PR target/105209 (alpha), PR target/105970 (x86), PR middle-end/105998, + PR middle-end/105951, PR target/105981 (ARM), PR target/104871 (Darwin), + PR target/105599 (Darwin), PR target/105953 (x86), PR c++/105931, + PR c++/105925, PR c++/105885, PR c++/105964, PR c++/105908, + PR c++/106001, PR c++/105871, PR libgomp/106045. + + [ Matthias Klose ] + * Fix PR bootstrap/105551, taken from the trunk. + + [ Nicolas Boulenguez ] + * ada: move ada/debian_packaging.mk from the gcc-BV source package + back to gnat. + + -- Matthias Klose Wed, 29 Jun 2022 15:42:10 +0200 + +gcc-12 (12.1.0-4) unstable; urgency=medium + + * Update to git 20210616 from the gcc-12 branch. + - Fix PR target/105953 (x86). + * Fix PR bootstrap/105551, taken from the trunk. + + -- Matthias Klose Thu, 16 Jun 2022 07:16:59 +0200 + +gcc-12 (12.1.0-3) unstable; urgency=medium + + * Update to git 20220612 from the gcc-12 branch. + - Fix PR target/105879 (xtensa), PR target/105854 (x86), + PR tree-optimization/105786, PR tree-optimization/105726, + PR middle-end/105711, PR middle-end/105604, PR ipa/105639, + PR sanitizer/105729, PR sanitizer/105714, PR c/105635, PR target/101891, + PR other/105527, PR target/105556 (PPC), PR tree-optimization/103116, + PR tree-optimization/105618, PR rtl-optimization/105577, + PR tree-optimization/105562, PR rtl-optimization/105559, + PR middle-end/105537, PR tree-optimization/105431, + PR tree-optimization/105458, PR target/105162 (AArch64), + PR rtl-optimization/105455, PR c++/105756, PR c++/105852, PR c++/105761, + PR c++/105761, PR c++/105795, PR c++/105734, PR c++/105779, + PR c++/105491, PR c++/105652, PR c++/105655, PR c++/105623, + PR c++/102307, PR c++/105725, PR c++/105589, PR c++/105191, + PR c++/92385, PR c++/104470, PR c++/102651, PR c++/49387, + PR d/105544, PR fortran/105230, PR preprocessor/105732, + PR gcov-profile/105535, PR libgomp/105745, PR libstdc++/105671, + PR libstdc++/105681. + * Reenable the jit build on m68k. Closes: #1009026. + + -- Matthias Klose Sun, 12 Jun 2022 19:19:41 +0200 + +gcc-12 (12.1.0-2) unstable; urgency=medium + + * Update to git 20220513 from the gcc-12 branch. + - Fix PR ipa/100413, PR tree-optimization/105528, PR target/105292 (SPARC), + PR c++/105476, PR libstdc++/105284, PR libstdc++/105284, + PR libstdc++/104731. + * Refresh the cross-fixes patch. + * Update NEWS files for GCC 12.1. + + -- Matthias Klose Fri, 13 May 2022 12:55:15 +0200 + +gcc-12 (12.1.0-1) unstable; urgency=medium + + * GCC 12.1.0 release. + * Refresh patches. + + -- Matthias Klose Sun, 08 May 2022 15:44:36 +0200 + +gcc-12 (12-20220428-1) unstable; urgency=medium + + * New upstream snapshot, taken from the gcc-12 branch. + + [ Matthias Klose ] + * Don't enable -fcf-protection with -m16. LP: #1940029. + * Update libgccjit and libgphobos symbols files. + + [ Nicolas Boulenguez ] + * ada/confirm_debian_bugs.py: trivial update. + + -- Matthias Klose Thu, 28 Apr 2022 20:10:12 +0200 + +gcc-12 (12-20220319-1) unstable; urgency=medium + + * New upstream snapshot, taken from the trunk. + - Import go 1.18.0. + * Disable the Ada ALI check before GCC 12 is released. + + -- Matthias Klose Sat, 19 Mar 2022 08:39:27 +0100 + +gcc-12 (12-20220313-1) unstable; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Use again GCC 11 for the bootstrap, and GCC 12 on alpha and m68k. + * Fix PR target/104890, applying proposed patch. + * Update libgphobos symbols file. + + -- Matthias Klose Mon, 14 Mar 2022 06:02:13 +0100 + +gcc-12 (12-20220302-1) unstable; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Reenable Ada on m68k; build using gcc-10 for the Ada bootstrap. + * Update libgphobos symbols file. + + -- Matthias Klose Wed, 02 Mar 2022 14:52:13 +0100 + +gcc-12 (12-20220222-1) unstable; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Reenable Ada on alpha. See PR target/98724. + * Don't apply Ada patches when not building Ada. + * Update the alpha-ieee patch for GCC 12. + * Follow-up patch for PR go/104290 (Hurd) (Svante Signell). + * Disable gnat on x32 with glibc << 2.35. + + -- Matthias Klose Tue, 22 Feb 2022 12:15:48 +0100 + +gcc-12 (12-20220214-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Bump libgo soname, golang-1.18 import. + + -- Matthias Klose Mon, 14 Feb 2022 04:01:08 +0100 + +gcc-12 (12-20220206-2) experimental; urgency=medium + + [ Matthias Klose ] + * New upstream snapshot, taken from the trunk. + * Update cross-build patches. + + [ Aurelien Jarno ] + * For riscv64, change --with-arch to rv64gc (from rv64imafd). + + -- Matthias Klose Sun, 06 Feb 2022 13:20:19 +0100 + +gcc-12 (12-20220126-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + + -- Matthias Klose Wed, 26 Jan 2022 11:49:18 +0100 + +gcc-12 (12-20220119-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Disable D on ia64, m68k, sh4 and sparc64. + * Disable D on KFreeBSD and the Hurd. + * Revert the PR ada/79724 patch, conflicting with the local ada-gcc-name + patch. + * Apply proposed patch for PR ada/103538 for x32. + + -- Matthias Klose Wed, 19 Jan 2022 10:31:16 +0100 + +gcc-12 (12-20220116-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Remove the gdc-driver-nophobos patch. + * Configure instead with --with-libphobos-druntime-only=yes. + + -- Matthias Klose Sun, 16 Jan 2022 16:43:31 +0100 + +gcc-12 (12-20220106-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Update symbols file for libgphobos. + + -- Matthias Klose Thu, 06 Jan 2022 11:30:02 +0100 + +gcc-12 (12-20211217-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Bump libgphobos soversion. + * Update libgccjit and libgphobos symbols files. + + -- Matthias Klose Fri, 17 Dec 2021 04:55:01 +0100 + +gcc-12 (12-20211211-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Use gnat-11/gdc-11 as bootstrap compilers for recent releases. + + -- Matthias Klose Sat, 11 Dec 2021 13:49:46 +0100 + +gcc-12 (12-20211206-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Add gdc as a build dependency for native builds. + * Update symbols files for libgcc-s, libgccjit, libgphobos. + + -- Matthias Klose Mon, 06 Dec 2021 11:03:14 +0100 + +gcc-12 (12-20211127-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + + -- Matthias Klose Sat, 27 Nov 2021 08:51:55 +0100 + +gcc-12 (12-20211126-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Lower severity of the gcc-N-base packages. Addresses: #997826. + * Fix gcc-12-locales build. Closes: #999764. + * Fix the gcc-12 cross builds (Helmut Grohne). Closes: #1000459. + * Configure --with-cpu=power9 on ppc64el on the Ubuntu development + release. + + -- Matthias Klose Fri, 26 Nov 2021 10:00:23 +0100 + +gcc-12 (12-20211117-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Drop brig/libhsail packaging bits. + * Update breaks/replaces, update textdomain. Closes: #999764. + * Move libtsan_preinit.o into libgcc-12-dev. Closes: #999752. + * Bump standards version. + + -- Matthias Klose Wed, 17 Nov 2021 22:08:35 +0100 + +gcc-12 (12-20211113-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Configure with --enable-offload-defaulted. + + -- Matthias Klose Sat, 13 Nov 2021 15:13:11 +0100 + +gcc-11 (11.2.0-10) unstable; urgency=medium + + * Update to git 20211021 from the gcc-11 branch. + - Fix PR rtl-optimization/102627, PR target/100340 (Darwin), + PR target/102588 (SPARC), PR debug/102441, PR libstdc++/101583, + PR libstdc++/102592, PR libstdc++/100187, PR libstdc++/100237, + PR libstdc++/100249, PR libstdc++/100287, PR libstdc++/100285, + PR libstdc++/100863, PR libstdc++/100863, PR libstdc++/65816, + PR libstdc++/102048, PR libstdc++/90787, PR libstdc++/101599, + PR libstdc++/101589, PR libstdc++/101483, PR libstdc++/100606, + PR libstdc++/101960, PR c++/102535, PR libstdc++/101960, + PR libstdc++/101870, PR libstdc++/101923, PR libstdc++/102425, + PR libstdc++/101761, PR libstdc++/99876, PR libstdc++/102074, + PR libstdc++/102270, PR libstdc++/102270, PR libstdc++/102280, + PR libstdc++/102667, PR target/102761 (x86), PR target/100316 (RISCV), + PR target/100208 (GCN), PR ada/100486, PR c++/102642, PR fortran/102745, + PR fortran/102716. + + [ Nicolas Boulenguez ] + * ada/check_ali_update: add tests, print changed sources with changed .ali + files, always report, interrupt when DEB_CHECK_ALI_UPDATE. + * ada/debian_packaging.mk: drop BUILDER_JOBS now redundant with + dpkg/buildopts.mk. + * ada/debian_packaging.mk: update comments. + * ada: avoid -L for local links with freshly built objects. + * ada/confirm_debian_bugs.py: remove bugs fixed in gnat-11. + * libgnat: strip unreproducible build flags from libgnat-dev .ali files. + + [ Matthias Klose ] + * Backport amdgcn changes from the trunk: + - Fix register issue for global_load assembler functions. + - amdgcn: Add -mxnack and -msram-ecc [PR 100208]. + - amdgcn: Fix attributes for LLVM-12 [PR 100208]. + - Support LLVM 13 assembler syntax. + + -- Matthias Klose Thu, 21 Oct 2021 10:17:22 +0200 + +gcc-11 (11.2.0-9) unstable; urgency=medium + + * Update to git 20211010 from the gcc-11 branch. + - Fix PR debug/102441, PR c++/98216, PR c++/91292, PR debug/102373, + PR c++/64697, PR target/102498 (x86), PR tree-optimization/102400, + PR tree-optimization/102451, PR sanitizer/102515, PR c++/102640, + PR c++/99904, PR c++/102547, PR c++/102535, PR c++/95567, PR c++/102412, + PR c++/98486, PR c++/102163, PR c++/101344, PR c++/101803, + PR c++/101883, PR c++/102548, PR c++/102496, PR c++/102454, + PR d/102574, PR fortran/102458, PR fortran/102458, PR fortran/102520, + PR libgomp/96661. + + -- Matthias Klose Sun, 10 Oct 2021 18:52:10 +0200 + +gcc-11 (11.2.0-8) unstable; urgency=medium + + * Update to git 20210924 from the gcc-11 branch. + - Fix PR target/102107 (PPC), PR target/102107 (PPC), PR fortran/102366, + PR fortran/102287, PR fortran/102311, PR target/102222 (S390), + PR tree-optimization/102400, PR tree-optimization/102451. + * ARM: pass architecture extensions to assembler if supported. Backported + from the trunk. + + -- Matthias Klose Fri, 24 Sep 2021 08:44:25 +0200 + +gcc-11 (11.2.0-7) unstable; urgency=medium + + * Update to git 20210918 from the gcc-11 branch. + - Fix PR rtl-optimization/102306, PR target/101934 (AArch64), PR c++/88578, + PR c++/102295, PR target/97142 (PPC), PR ada/101970, PR c++/102305, + PR d/102185, PR fortran/85130, PR fortran/82314, PR fortran/98490, + PR fortran/101327. + * Fix libgcc-s1 symbols file for alpha. + * Don't build libjit on kfreebsd. See #994035. + + -- Matthias Klose Sun, 19 Sep 2021 10:08:56 +0200 + +gcc-11 (11.2.0-5) unstable; urgency=medium + + * Update to git 20210909 from the gcc-11 branch. + - Fix PR c++/60318, PR target/102224 (x86), PR target/102115 (xtensa), + PR tree-optimization/102046, PR tree-optimization/101925, + PR middle-end/101824, PR target/102166 (x86), PR target/101849 (PPC), + PR c++/100495, PR fortran/100950, PR fortran/100950, PR fortran/102113. + * Configure again with --enable-cet, amd64 and x32 only. Closes: #993626. + + -- Matthias Klose Thu, 09 Sep 2021 13:48:13 +0200 + +gcc-11 (11.2.0-4) unstable; urgency=medium + + * Update to git 20210902 from the gcc-11 branch. + - Fix PR target/101472 (x86), PR target/99744 (x86), PR target/101492 (x86), + PR target/101549 (x86), PR target/101471 (x86), PR target/102035 (ARM), + PR target/102035 (ARM), PR middle-end/101949, PR ipa/97565, + PR debug/101905, PR gcov-profile/89961, PR fortran/87737, + PR fortran/46691, PR fortran/99819, PR fortran/98411, PR libstdc++/101965, + PR libstdc++/100682, PR libstdc++/100285, PR libstdc++/100180, + PR libstdc++/100286, PR libstdc++/100351, PR libstdc++/100286, + PR libstdc++/100285, PR libstdc++/100180, PR c++/101592, + PR tree-optimization/102124, PR target/101472 (x86), + PR target/99744 (x86), PR target/101492 (x86), PR target/101549 (x86), + PR target/101471 (x86), PR target/102035 (ARM), PR target/102035 (ARM), + PR middle-end/101949, PR ipa/97565, PR debug/101905, + PR gcov-profile/89961, PR fortran/87737, PR fortran/46691, + PR fortran/99819, PR fortran/98411, PR libstdc++/101965, + PR libstdc++/100682, PR libstdc++/100285, PR libstdc++/100180, + PR libstdc++/100286, PR libstdc++/100351, PR libstdc++/100286, + PR libstdc++/100285, PR libstdc++/100180. + * Again, for armhf configure --with-arch=+fp, dropping the --with-fpu= + option; keep the old configure options for backports. + * Update libgcc-s1 symbols file for sh4. + * Remove trailing spaces in symbols files. + * Don't configure with --enable-cet on x86 for Debian (old hardware is more + valued than recent security features). Closes: #993162, #993172. + * Don't run the tests with the installed libstdc++ on slow buildds. + * Build again for mipsel and mips64el, too much hassle with separate sources. + * Disable the lto build on sparc64, memory issues on the buildd. + + -- Matthias Klose Thu, 02 Sep 2021 12:23:43 +0200 + +gcc-11 (11.2.0-3) unstable; urgency=high + + * Update to git 20210823 from the gcc-11 branch. + - Fix PR target/101723 (ARM), PR tree-optimization/101373, + PR tree-optimization/101868, PR ipa/100600, PR ipa/101261, + PR ipa/101726, PR c/100150, PR fortran/99351, PR libstdc++/100139. + + -- Matthias Klose Mon, 23 Aug 2021 12:15:54 +0200 + +gcc-11 (11.2.0-2) unstable; urgency=medium + + * Update to git 20210815 from the gcc-11 branch. + - Fix PR middle-end/101586, PR rtl-optimization/101562, PR d/101640, + PR d/101490, PR d/101441, PR d/101127, PR d/101619, PR d/96435, + PR d/101664, PR target/101531 (PPC), PR fortran/101536, + PR fortran/101514, PR fortran/101084, PR tree-optimization/101505, + PR target/100952 (PPC), PR target/94780 (MIPS), PR target/101132 (MIPS), + PR c/101512, PR sanitizer/101749, PR c++/101725, PR c++/100828, + PR fortran/101564, PR libstdc++/101866, PR libstdc++/101510, + PR libstdc++/101510, PR libstdc++/101056, PR libstdc++/101258, + PR gcov-profile/100788, PR middle-end/101624, PR c++/101759, + PR c++/101663, PR preprocessor/101638. + * Again, configure explicitly --with-fpu=vfpv3-d16 on armhf. + * Stop building the native compilers for mipsen targets from this source + package. See https://lists.debian.org/debian-gcc/2021/05/msg00011.html. + * Update binutils version requirements. + + -- Matthias Klose Sun, 15 Aug 2021 23:09:35 +0200 + +gcc-11 (11.2.0-1) experimental; urgency=medium + + * GCC 11.2.0 release. + * Update gm2 from the gm2 gcc-11 branch. + * Refresh patches. + * Update libgfortran symbols file. + * Update libgphobos symbols file. + + -- Matthias Klose Wed, 28 Jul 2021 15:36:39 +0200 + +gcc-11 (11.1.0-4) experimental; urgency=medium + + * Update to git 20210714 from the gcc-11 branch. + - Fix PR middle-end/101291, PR tree-optimization/101394, PR ipa/101066, + PR middle-end/101423, PR tree-optimization/100778, PR target/101377, + PR tree-optimization/100778, PR tree-optimization/101229, + PR tree-optimization/101173, PR tree-optimization/101280, + PR middle-end/101156, PR tree-optimization/100923, + PR tree-optimization/101088, PR tree-optimization/101025, + PR tree-optimization/101158, PR tree-optimization/101151, + PR tree-optimization/101105, PR middle-end/100672, PR target/101175, + PR middle-end/101167, PR inline-asm/100785, PR target/100310 (x86), + PR target/100856 (ARM), PR target/101016 (ARM), PR middle-end/101062, + PR middle-end/101062, PR target/100777 (PPC), PR target/99842 (PPC), + PR middle-end/100876, PR c++/100876, PR middle-end/100732, + PR middle-end/100684, PR middle-end/100574, PR middle-end/100307, + PR middle-end/100250, PR target/100871 (S390), PR target/101046, + PR rtl-optimization/101008, PR debug/100852, PR target/100887, + PR middle-end/100898, PR target/100887 (x86), PR middle-end/101009, + PR tree-optimization/100981, PR tree-optimization/100934, PR ipa/100791, + PR analyzer/99212, PR analyzer/101082, PR analyzer/99212, + PR analyzer/100615, PR analyzer/100244, PR c++/100879, PR c/100783, + PR c/100619, PR inline-asm/100785, PR c/100902, PR c++/101181, + PR c++/101247, PR c++/101247, PR c++/101194, PR c++/98832, + PR c++/101182, PR c++/100918, PR c++/97420, PR c++/101098, PR c++/100838, + PR c++/86355, PR c++/101087, PR c++/101040, PR c++/97566, PR c++/100752, + PR c++/101106, PR c/100902, PR c++/101078, PR c++/101029, PR c++/100946, + PR d/101273, PR d/101282, PR d/100999, PR d/100967, PR fortran/100227, + PR fortran/100283, PR fortran/101123, PR fortran/95501, + PR fortran/95502, PR fortran/100965, PR c++/100796, PR preprocessor/96391, + PR target/101235 (PPC), PR target/99939 (ARM), PR fortran/93524, + PR middle-end/101167, PR libstdc++/91488, PR d/100999, + PR libstdc++/100387, PR libstdc++/100806, PR libstdc++/95833, + PR libstdc++/91488, PR libstdc++/100940, PR libstdc++/100940, + PR libstdc++/100894, PR libstdc++/101034, PR libstdc++/101055, + PR libstdc++/100475, PR libstdc++/100982, PR libstdc++/98842, + PR libstdc++/100824, PR libstdc++/100824, PR libstdc++/100824, + PR libstdc++/100577, PR libstdc++/100770, PR libstdc++/100690, + PR libstdc++/100631, PR libstdc++/100631, PR libstdc++/100639. + * Fix -fstack-protector on musl (Helmut Grohne). Closes: #989521. + * Drop gdb build dependency on mipsel and mips64el for now. + Addresses: #990842. + + -- Matthias Klose Wed, 14 Jul 2021 10:19:29 +0200 + +gcc-11 (11.1.0-3) experimental; urgency=medium + + * Update to git 20210610 from the gcc-11 branch. + - Fix PR bootstrap/100731, PR c++/91859, PR middle-end/100576, + PR rtl-optimization/100590, PR c++/100580, PR rtl-optimization/100342, + PR target/94177 (PPC), PR target/100767 (ARM), PR target/99725 (ARM), + PR target/100626 (x86), PR tree-optimization/100519, PR ipa/100513, + PR middle-end/100509, PR tree-optimization/100492, PR target/99960 (ARM), + PR c++/100281, PR target/99977 (ARM), PR bootstrap/100552, + PR target/100419 (ARM), PR target/100563 (ARM), + PR tree-optimization/100566, PR middle-end/100508, PR middle-end/100471, + PR target/99988 (AArch64), PR c/100550, PR c++/91859, PR c++/100797, + PR c++/95719, PR c++/100666, PR c++/100502, PR c++/100489, + PR c++/100281, PR c++/100634, PR c++/100659, PR c++/100367, + PR c++/96299, PR c++/100261, PR c++/100372, PR c++/100644, + PR c++/100205, PR c++/93314, PR fortran/98411, PR fortran/100656, + PR fortran/100602, PR fortran/100551, PR fortran/100633, + PR preprocessor/100646, PR preprocessor/100392, PR middle-end/100471, + PR sanitizer/100379, PR libstdc++/100676, PR libstdc++/100833, + PR libstdc++/100768, PR libstdc++/99453, PR libstdc++/100479, + PR libstdc++/100361, PR libstdc++/100630, PR libstdc++/99006, + PR libstdc++/99453, PR target/100885 (x86), PR ipa/99122, + PR target/100333 (ARM), PR c/100920, PR c++/100065, PR c++/100963, + PR c++/91706, PR c++/100862, PR c++/100102, PR d/100964, PR d/100935, + PR d/100882, PR fortran/98301, PR fortran/99839, PR libstdc++/100889, + PR libstdc++/100900. + * gcc-snapshot: Remove compiler provides. Addresses: #921877. + * Update libasan6 symbols for riscv64 (Helmut Grohne). Closes: #989205. + + -- Matthias Klose Thu, 10 Jun 2021 10:05:34 +0200 + +gcc-11 (11.1.0-2) experimental; urgency=medium + + * Update to git 20210508 from the gcc-11 branch. + - Fix PR target/100200 (AArch64), PR target/100200 (AArch64), + PR tree-optimization/100239, PR rtl-optimization/100254, PR debug/100255, + PR rtl-optimization/100148, PR c++/89565, PR c++/93383, PR c++/95291, + PR c++/99200, PR c++/99683, PR c++/100161, PR c++/96380, + PR fortran/100218, PR fortran/100154, PR target/98952 (PPC), + PR libstdc++/100290, PR rtl-optimization/100225, PR target/100402 (x86), + PR rtl-optimization/84878, PR target/100217 (S390), PR target/100232, + PR rtl-optimization/100263, PR rtl-optimization/100411, + PR tree-optimization/100253, PR tree-optimization/100278, PR ipa/100308, + PR tree-optimization/100414, PR tree-optimization/100329, + PR target/100375 (nvptx), PR rtl-optimization/100230, + PR target/100311 (ARM), PR target/100302 (AArch64), + PR target/100305 (AArch64), PR target/100270 (AArch64), + PR target/100236 (ARM), PR target/100182 (x86), PR c++/100362, + PR c++/100319, PR fortran/100274, PR c/100450, PR target/98952 (PPC), + PR libgomp/100352, PR libstdc++/100384, PR libstdc++/100259, + PR libstdc++/100298, PR libstdc++/100290. + * Don't revert the PR 85678 patch anymore for backports (defaulting + to -fcommon everywhere). + * Remove obsolete verbose-lto-linker patch. + * Remove obsolete libgomp-no-werror patch. + * Remove the obsolete Linaro build support and patches. + * Fix building the libhwasan0-dbg package. + * Remove some obsolete breaks, conflicts, replaces. + * Fix running the libstdc++-v3 tests against the installed libstdc++6, + when the libstdc++6 package is not built from this source. + * README.source: Document how to run a single test. + * Don't run some tests from the guality test suite on armhf. These fail + on every target, but seem to hang on the buildds occasionally on armhf. + * Don't apply the arm-multilib-soft patch when building without + armhf/armsf multilib packages. + * Lower the dejagnu timeout on armhf from 600 to 300. + * For armhf configure --with-arch=+fp, dropping the --with-fpu= option. + * Explicitly call autoconf2.69 where necessary. + * Remove packaging support for oldish backports. Last supported releases + are Debian 8 (jessie) and Ubuntu 12.04 LTS (precise). + * Fix building the gcn offload compiler without the nvptx offload compiler. + * README.snapshot: Update wrapper script. Addresses: #862176. + + -- Matthias Klose Sat, 08 May 2021 13:50:11 +0200 + +gcc-11 (11.1.0-1) experimental; urgency=medium + + * GCC 11.1.0 release. + * Refresh patches. + * Update gm2 from the gm2 trunk. + * gm2: Ignore gm2version.o stage diff, needed at least on some + archtectures (m68k, riscv64) + * Only apply the gm2-texinfo patch for dfsg builds. + * Configure with --enable-checking=release. + * Disable usage stats for release builds. + * Update and re-apply the gcc-foffload-default patch. + * Update NEWS.html and gcc.css, remove fav.ico, and use the local gcc.css. + * html2text -ascii -style pretty debian/NEWS.html > debian/NEWS.gcc. + * Enable the address sanitizer for riscv64. + + -- Matthias Klose Tue, 27 Apr 2021 13:50:54 +0200 + +gcc-11 (11-20210424-1) experimental; urgency=medium + + * GCC 11 release candidate 2, taken from the gcc-11 branch (20210424) + + -- Matthias Klose Sat, 24 Apr 2021 08:00:02 +0200 + +gcc-11 (11-20210420-1) experimental; urgency=medium + + * GCC 11 release candidate 1, taken from the gcc-11 branch (20210420) + * Update gm2 from the gm2 trunk. + * Revert the fix for PR target/100067, breaking the ARM multilib build. + * Update watch file. + * Stop building sf/hf multilibs on upcoming Ubuntu releases. + * Update libgphobos symbols file. + + -- Matthias Klose Tue, 20 Apr 2021 15:31:57 +0200 + +gcc-11 (11-20210417-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210417) + * Use explicit autoconf version for bullseye. + * Update libgphobos symbols file. + + -- Matthias Klose Sat, 17 Apr 2021 11:29:15 +0200 + +gcc-11 (11-20210412-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210412) + * Update libgphobos symbols file. + + -- Matthias Klose Sun, 11 Apr 2021 13:46:08 +0200 + +gcc-11 (11-20210404-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210404) + * Update libgphobos symbols file. + + -- Matthias Klose Sun, 04 Apr 2021 13:42:51 +0200 + +gcc-11 (11-20210327-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210327) + - Fix bootstrap on s390x. + - Fix PR target/99422. Closes: #984870. + - Fix PR sanitizer/98920. Closes: #949192. + * Fix packaging of snapshot builds, really include the jit build in + the snapshot build. + + -- Matthias Klose Sat, 27 Mar 2021 13:19:03 +0100 + +gcc-11 (11-20210319-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210319) + * Fix --as-needed specs for -fsanitize=* options for backports. + * Export DEB_CHECK_ALI_UPDATE=1 (currently commented out). This should be + checked after the gnat transition has been prepared in experimental, and + just before doing the gnat's defaults change in unstable. + * debian/ada/check_ali_update.sh: Fix syntax errors. + Always run the script. + * Disable building gnat on alpha, see PR ada/98724. + * Also build unstripped frontends on mipsel/mips64el. + * Update libgphobos symbols file. + * Don't remove files in debian/tmp-{nvptx,gcn} when building the binary + targets. The installed offload compilers are needed to run the tests. + * Allow to save some disk space for the build, by + - saving the files needed for the hppa64 and jit builds, and removing + the build directories. + - saving the results from the check runs, and removing files created + during the check runs. + * Fix installation of the jit header files. + + -- Matthias Klose Fri, 19 Mar 2021 09:57:02 +0100 + +gcc-11 (11-20210310-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210310) + * Work around dwz issue on mips64el stripping go1. + * Replace @tie{} string with a space in the man pages. LP: #1405685. + * Don't run the memory usage stats on m68k. + + -- Matthias Klose Wed, 10 Mar 2021 11:46:55 +0100 + +gcc-11 (11-20210306-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210306) + * Update libgphobos symbols file. + * Fix unstripped gcc-snapshot builds. + + -- Matthias Klose Sat, 06 Mar 2021 11:55:56 +0100 + +gcc-11 (11-20210227-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210227) + * Build gnat/alpha again in snapshot and cross builds. + + -- Matthias Klose Sat, 27 Feb 2021 09:46:52 +0100 + +gcc-11 (11-20210220-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210220) + * Apply proposed patch for PR ada/98996. + * Update libgphobos symbols file. + * Update usage-wrapper script. + + -- Matthias Klose Sat, 20 Feb 2021 17:21:38 +0100 + +gcc-11 (11-20210207-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210207) + * Fix packaging logic to build libgphobos. + * Update libstdc++ symbols for ppc64 and ppc64el. + * Explicitly configure with --enable-s390-excess-float-precision on s390x + to match the behaviour of the default GCC (gcc-10). + * Update libgphobos symbols file. + * Don't build the gnat alpha cross compiler for now. PR ada/98724. + + -- Matthias Klose Sun, 07 Feb 2021 14:55:47 +0100 + +gcc-11 (11-20210130-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210130) + - libgo 1.16 release candidate 1. + * Remove the work around for PR ada/98228, fixed. + * Disable profiled bootstrap on powerpc as a test ... + * Disable lto build on ia64 as a test ... + * Don't turn on DWARF 5 by default, where GCC 11 is not the default.. + * Require binutils 2.25.2 when defaulting to DWARF 5. + * Update libgphobos symbols file. + * Bump standards version. + + -- Matthias Klose Sat, 30 Jan 2021 13:00:42 +0100 + +gcc-11 (11-20210123-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210123) + * Update gm2 from the gm2 trunk. + * Explicitly use autoconf2.69 where necessary. + * Use the same breaks relations for libgcc-s2 and libgcc-s4 as for + libgcc-s1. Addresses: #980770. + + -- Matthias Klose Sat, 23 Jan 2021 13:12:36 +0100 + +gcc-11 (11-20210116-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210116) + * Fix --enable-link-serialization=1, and enable LTO builds on ppc64el again. + * Update libgphobos symbols file. + * gcc: Prefix LLINKER with /usr/bin/time -v. + * Don't build runtime libraries for the jit build. + * Apply proposed fix for PR go/98496 (Svante Signell). + * Work around PR ada/98228, not using lto for gnat1 on s390x. + * PR sanitizer/98699: Don't enable --as-needed with -fsanitize=* options. + * Use --push-state/--pop-state for gold everywhere. + * Fix parallel linking of cc1gm2. + * Allow to build with some memory usage statistics. + + -- Matthias Klose Sat, 16 Jan 2021 15:49:18 +0100 + +gcc-11 (11-20210110-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210110) + * Build the gcn offload compiler based on amdgcn-tools (based on LLVM 9), + remove the conflict with gcc-10-offload-amdgcn. + * Limit lto links on sparc64. + + -- Matthias Klose Sun, 10 Jan 2021 13:01:43 +0100 + +gcc-11 (11-20210109-2) experimental; urgency=medium + + * Support link serialization for m2. + * Fix -Wformat-diag warnings for power*-linux builds. + + -- Matthias Klose Sat, 09 Jan 2021 20:27:49 +0100 + +gcc-11 (11-20210109-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210109) + * Provide timing and resource information for all builds. + * Build the offload compilers using newlib 4.1.0. + * gcc-11-source: Depend on time. + * Disable the lto build on s390x, PR ada/98228. + + -- Matthias Klose Sat, 09 Jan 2021 18:48:15 +0100 + +gcc-11 (11-20210102-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210102) + * Bump libgo soname. + * Fix libgo build failures. + + -- Matthias Klose Sat, 02 Jan 2021 15:59:18 +0100 + +gcc-11 (11-20201228-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20201228) + * Build the gcn offload compiler based on amdgcn-tools (based on LLVM 9). + * Fix hppa64 snapshot builds. + * Fix cross installation of g++-mapper-server. + * Update libgcc-s1 symbols file for arm64. + + -- Matthias Klose Mon, 28 Dec 2020 20:02:27 +0100 + +gcc-11 (11-20201222-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20201222) + * Fix installation of g++-mapper-server. + * Apply proposed patch for PR bootstrap/98324. enable LTO builds again. + * Disable LTO build on s390x, see PR 976846. + + -- Matthias Klose Tue, 22 Dec 2020 14:41:42 +0100 + +gcc-11 (11-20201216-2) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20201216) + * Rely on the upstream GNU versioned symbols for libstdc++6. + * Bump phobos soname for GCC 11. + * Add an autopkg test for linking libphobos. + * Build gnat again, without building libgnat_util. + * Build the gcn offload compiler using LLVM 11, and work around the + broken as in LLVM 11. See also LLVM Bug 48201 for this issue and + https://reviews.llvm.org/D73999 for the patch causing the issue. + * Remove hsa offload packaging bits. + * For LTO builds, configure with --enable-link-serialization instead of + --enable-link-mutex. + * Package additional gnat files. + * Update the gm2 packaging. + * Add conflicts with binary packages built from gcc-10. + * Build libhwasan (AArch64 only). + * Don't strip the sanitizer libraries, these are only used for debugging. + LP: #1894166. + * Explicitly configure with --disable-cet when building for older releases. + * Don't run the libgphobos-link test on powerpc architectures. + * Install libstdc++6 gdb pretty printer files in /usr/share/gcc (unversioned). + * Don't mark the libgcc-sN cross packages with XB-Important/Protected: yes. + * Relax the libc-dev dependencies for kfreebsd. + * Limit checking when configuring with --enable-checking=extra,rtl. + * Apply proposed patch for PR bootstrap/95582. + * Enable profiled builds, LTO build for 64bit architectures. + * Add -doc conflicts with GCC 10. Closes: #977408. + * Don't install the lto-dump binary in the hppa64 package. Closes: #977461. + * Let the gcn offload compilers conflict, both shipping the linker tools, + which should be split out into a separate package. Addresses: #977461. + * Regenerate libgm2/configure. Closes: #977409. + * Install hwasan lib in libgcc-dev (arm64 only). + + -- Matthias Klose Wed, 16 Dec 2020 21:28:34 +0100 + +gcc-10 (10.2.0-17) unstable; urgency=medium + + * Update to git 20201111 from the gcc-10 branch. + - Fix PR tree-optimization/97764, PR target/97685 (x86), + PR target/97360 (PPC), PR lto/97508, PR c++/97412, PR fortran/97652, + PR fortran/92793, PR fortran/92793, PR target/85486, PR libstdc++/96269, + PR libstdc++/97731, PR libstdc++/97362, PR libstdc++/92285. + + -- Matthias Klose Wed, 11 Nov 2020 17:50:04 +0100 + +gcc-10 (10.2.0-16) unstable; urgency=medium + + * Update to git 20201029 from the gcc-10 branch. + - Fix PR rtl-optimization/97439, PR target/96759 (RISCV), + PR target/97506 (x86), PR target/97327 (ARM), PR target/96914 (ARM), + PR target/96914 (ARM), PR target/96914 (ARM), PR rtl-optimization/97386, + PR sanitizer/97294, PR target/97291 (ARM), PR ipa/96394, PR ipa/97404, + PR ipa/97295, PR target/97251 (ARM), PR target/97349 (AArch64), + PR tree-optimization/97357, PR tree-optimization/97255, PR c++/97197, + PR c++/97328, PR c++/97010, PR c++/97197, PR c++/96229, PR fortran/95979, + PR libstdc++/95322, PR libstdc++/97132, PR libstdc++/95788, + PR tree-optimization/97081, PR tree-optimization/97456, + PR c++/95132, PR c++/96241. + * Also enable the extra checking on amd64, arm64, ppc64el, s390x, and don't + strip the executables. This will be reverted within a few weeks, please + don't send bug reports about that. + * Mark libgcc-sN with XB-Important/Protected: yes. Addresses: #972936. + + -- Matthias Klose Thu, 29 Oct 2020 16:36:48 +0100 + +gcc-10 (10.2.0-15) unstable; urgency=medium + + * Update to git 20201011 from the gcc-10 branch. + - Fix PR target/97302, PR rtl-optimization/97313, PR middle-end/95189, + PR middle-end/95886, PR target/97150 (AArch64), PR target/96313 (AArch64), + PR tree-optimization/97236, PR target/96456 (S390), PR gcov-profile/97193, + PR c++/88115, PR libstdc++/97273, PR c++/96994, PR c++/97195, + PR c++/97145, PR fortran/97272, PR bootstrap/97163, PR gcov-profile/96913. + * On armel, armhf, configure with --enable-checking=yes,extra,rtl, and don't + strip the executables for now. + + -- Matthias Klose Sun, 11 Oct 2020 12:40:50 +0200 + +gcc-10 (10.2.0-14) experimental; urgency=medium + + * Update to git 20201002 from the gcc-10 branch. + - Fix PR gcov-profile/64636, PR tree-optimization/96979, + PR gcov-profile/97069, PR target/96795 (ARM), PR target/96827 (ARM), + PR bootstrap/97183, PR target/97184 (x86). + * Fix PR tree-optimization/97236, taken from the trunk. Stop reverting the + fixes for PR tree-optimization/97043, PR tree-optimization/96522. + Closes: #971027. + * Enable gnat on m68k again (Adrian Glaubitz). Closes: #971551. + + -- Matthias Klose Fri, 02 Oct 2020 14:12:39 +0200 + +gcc-10 (10.2.0-13) unstable; urgency=medium + + * Update to git 20200930 from the gcc-10 branch. + - Fix PR target/97247 (x86), PR target/97231 (x86), PR middle-end/97054. + - Backport SVE ACLE and stack-protector patches (ARM, AArch64). + * Revert the fix for PR tree-optimization/96522. See #971027. + + -- Matthias Klose Wed, 30 Sep 2020 12:29:35 +0200 + +gcc-10 (10.2.0-12) unstable; urgency=medium + + * Update to git 20200927 from the gcc-10 branch. + - Fix PR target/71233 (AArch64), PR middle-end/97073. + * Revert the fix for PR tree-optimization/97043. Addresses: #971027. + + -- Matthias Klose Tue, 29 Sep 2020 12:37:37 +0200 + +gcc-10 (10.2.0-11) unstable; urgency=medium + + * Update to git 20200927 from the gcc-10 branch. + - Fix PR middle-end/95464, PR target/96683 (ARM), PR target/97032, + PR target/97166 (PPC), PR fortran/96041, PR fortran/93423, + PR fortran/93423, PR libstdc++/97167, PR libstdc++/96803, + PR libstdc++/96803, PR libstdc++/94681, PR libstdc++/94681, + PR libstdc++/97101, PR libstdc++/94160. + - libgo: don't put golang.org packages in zstdpkglist.go. Closes: #970604. + + [ Samuel Thibault ] + * Limit systemtap-sdt-dev build dependency to linux architectures. + Closes: #970614. + + -- Matthias Klose Sun, 27 Sep 2020 12:19:01 +0200 + +gcc-10 (10.2.0-9) unstable; urgency=high + + * Update to git 20200918 from the gcc-10 branch. + - Fix PR preprocessor/96935, PR tree-optimization/97053, + PR target/97028 (x86), PR debug/96690, PR tree-optimization/96522, + PR tree-optimization/97043. + + -- Matthias Klose Fri, 18 Sep 2020 20:23:58 +0200 + +gcc-10 (10.2.0-8) unstable; urgency=medium + + * Update to git 20200914 from the gcc-10 branch. + - Fix PR tree-optimization/96579, PR tree-optimization/96370, + PR tree-optimization/96514, PR middle-end/96369, PR lto/96385, + PR tree-optimization/96349, PR bootstrap/96203, PR lto/95604, + PR debug/93865, PR debug/94235, PR c++/96901, PR lto/94311, + PR debug/96729, PR c++/96901, PR c++/96862, PR fortran/96859. + * Fix libstdc++ symbols file for armel, no pretty formatting allowed + in symbols files. + + -- Matthias Klose Mon, 14 Sep 2020 11:30:32 +0200 + +gcc-10 (10.2.0-7) unstable; urgency=medium + + * Update to git 20200910 from the gcc-10 branch. + - Fix PR c++/95164, PR target/85830 (PPC), PR tree-optimization/96820, + PR target/96808 (PPC), PR tree-optimization/96597, + PR tree-optimization/88240, PR tree-optimization/96854, + PR target/96551 (x86), PR d/96924, PR fortran/95398, PR fortran/94672, + PR libstdc++/92978, PR libstdc++/96851, PR target/96357 (AArch64), + PR fortran/95109, PR fortran/94690. + * Update libasan and libgfortran symbols files. + * Replace the libstdc++ symbols file on armel with one based on + symbol versions (versions different than for other architectures). + Closes: #954954. + + -- Matthias Klose Thu, 10 Sep 2020 17:24:36 +0200 + +gcc-10 (10.2.0-6) unstable; urgency=medium + + * Update to git 20200831 from the gcc-10 branch. + - Fix PR target/96744 (x86), PR target/94538 (ARM), PR middle-end/87256, + PR tree-optimization/96722, PR tree-optimization/96758, + PR target/95450, PR tree-optimization/96535, PR c/96549, PR fortran/93553, + PR middle-end/96459, PR tree-optimization/96730, PR ipa/95320, + PR target/96682 (ARM), PR target/96506 (PPC), PR target/96536 (x86), + PR target/96562 (x86), PR target/93897 (x86), PR lto/95362, + PR lto/95548, PR c/96545, PR c++/96497, PR c++/95428, PR c++/96199, + PR c++/96106, PR c++/96164, PR d/96157, PR d/96250, PR d/96254, + PR d/96301, PR fortran/95882, PR fortran/96486, PR fortran/93553, + PR middle-end/96459, PR libstdc++/71960, PR libstdc++/96766, + PR libstdc++/96718, PR target/96493 (PPC), PR ipa/96482, PR ipa/96291, + PR target/96243 (x86), PR target/96530 (PPC), PR target/96446 (PPC), + PR c++/96106, PR c++/96164, PR fortran/96312, PR libstdc++/89760, + PR libstdc++/95749. + * Disable go on sh4. Closes: #969221. + * Update patch for CUDA and __float128. Closes: #968672. + + -- Matthias Klose Mon, 31 Aug 2020 12:27:30 +0200 + +gcc-10 (10.2.0-5) unstable; urgency=medium + + * Update to git 20200808 from the gcc-10 branch. + - Fix PR target/96191 (ARM), PR target/96191 (AArch64), + PR tree-optimization/96483, PR middle-end/96426, PR debug/96354, + PR target/95435 (x86), PR tree-optimization/96058, PR middle-end/96335, + PR lto/45375, PR c/96377, PR c++/96082, PR c++/95591, PR c++/95599, + PR c++/95823, PR c++/95824, PR c++/95895, PR d/96140, + PR fortran/96319, PR fortran/95612, PR fortran/95585. + + -- Matthias Klose Sat, 08 Aug 2020 13:31:03 +0200 + +gcc-10 (10.2.0-3) unstable; urgency=medium + + * Update to git 20200725 from the gcc-10 branch. + - Fix PR target/96190 (SPARC), PR target/96236 (PPC), PR target/96260, + PR fortran/95980, PR fortran/95980, PR fortran/96086, PR fortran/89574, + PR fortran/96220, PR fortran/96018. + * Re-enable gm2, disabled by accident in 10.2.0-1. + * Refresh gm2 patches. + * Apply proposed gdc patch (Iain Buclaw). Closes: #966026. + * Apply proposed patch for PR bootstrap/96203, add -fcf-protection=check. + + -- Matthias Klose Sat, 25 Jul 2020 14:52:31 +0200 + +gcc-10 (10.2.0-1) unstable; urgency=medium + + * GCC 10.2.0 release. + - Fix PR target/95726 (AArch64), PR target/96174 (x86), PR middle-end/95114, + PR tree-optimization/96146, PR middle-end/96194, PR c++/95789, + PR c++/96104, PR c++/96179. + - Fix missing dependencies for selftests which occasionally causes + failed builds. Closes: #960913. + * Update gm2 from the gm2 gcc-10 branch. + * Update the patch for PR lto/95604, replacing the error with a warning. + * Build the GC enabled libobjc on arm64, mips and mipsel as well. + * libgo: Merge the 1.14.6 changes, taken from the trunk. + * Fix ASAN_INTERCEPT_VFORK related symbols. (Helmut Grohne). Closes: #965246. + + -- Matthias Klose Thu, 23 Jul 2020 12:15:54 +0200 + +gcc-10 (10.1.0-6) unstable; urgency=medium + + * Update to git 20200714 from the gcc-10 branch. + - Fix PR lto/95604, PR target/94891 (AArch64), PR target/94791 (AArch64), + PR ipa/96130, PR middle-end/94600, PR middle-end/95270, PR c++/96063, + PR c++/96077. + * Also package the nvptx offload compiler on arm64. + + -- Matthias Klose Tue, 14 Jul 2020 12:07:51 +0200 + +gcc-10 (10.1.0-5) unstable; urgency=medium + + * Update to git 20200713 from the gcc-10 branch. + - Fix PR bootstrap/94998, PR tree-optimization/94969, PR target/95018 (PPC), + PR target/95347 (PPC), PR target/95347 (PPC), PR target/95713, + PR target/94735 (ARM), PR target/94959 (ARM), PR c++/95505, PR c++/95508, + PR fortran/95707, PR fortran/95688, PR fortran/95687, PR fortran/95689, + PR fortran/95587, PR fortran/95088, PR lto/94848, PR c/95141, PR c++/95711, + PR c++/95736, PR c++/95519, PR c++/95518, PR c++/95813, PR c++/95477, + PR c++/95719, PR d/95250, PR fortran/95978, PR fortran/71706, + PR fortran/95743, PR fortran/95340, PR fortran/95880, PR fortran/95881, + PR fortran/95826, PR fortran/95828, PR fortran/95827, PR fortran/95812, + PR fortran/95708, PR target/95105 (AArch64), PR tree-optimization/96075, + PR ipa/96040, PR debug/95343, PR fortran/95709, PR fortran/93337, + PR fortran/95366, PR fortran/88379, PR fortran/9582 libstdc++/91807, + PR libstdc++/91153, PR target/93224, PR libstdc++/95282, PR libstdc++/94627, + PR tree-optimization/95857, PR target/95581 (PPC), PR target/96125 (PPC), + PR tree-optimization/96133, PR tree-optimization/95804, + PR tree-optimization/95638, PR target/95683 (RISCV), PR c++/96105, + PR c++/96052, PR c++/95976, PR libstdc++/95322, PR libstdc++/94936, + PR libstdc++/94087. + * distro-defaults.h: Don't define for offload compilers. + * Build the nvptx offload compiler on arm64. + * Update the patch for PR lto/95604. + + -- Matthias Klose Mon, 13 Jul 2020 13:12:42 +0200 + +gcc-10 (10.1.0-4) unstable; urgency=medium + + * Update to git 20200616 from the gcc-10 branch. + - Fix PR ipa/95113, PR target/95525 (x86), PR target/95420 (ARM), + PR target/94591 (ARM), PR gcov-profile/95332, PR testsuite/95361, + PR target/95355 (x86), PR web/95380, PR c++/95346, PR c++/95562, + PR c++/95345, PR c++/95050, PR c++/94817, PR c++/94829, PR c++/95087, + PR c++/93310, PR c++/95158, PR c++/92103, PR c++/92633, PR c++/92838, + PR c++/95020, PR c++/95386, PR c++/92652, PR c++/93698, PR c++/94128, + PR c++/95241, PR c++/95181, PR c++/95371, PR c++/95319, PR c++/95222, + PR c++/90212, PR c++/90479, PR c++/91529, PR c++/93822, + PR libfortran/95390, PR libfortran/95104, PR libfortran/95104, + PR libfortran/95191, PR libgomp/92854, PR libgomp/92854, + PR libstdc++/95322, PR libstdc++/77691, PR lto/94848, PR middle-end/95551, + PR target/95528, PR c++/95197, PR middle-end/95108, PR debug/95080, + PR sanitizer/95634, PR sanitizer/94910, PR c/95580, PR c++/95328, + PR c++/95197, PR c++/95440, PR c++/93467, PR c++/95350, PR c++/95560, + PR c++/95066, PR c++/94937, PR c++/95344, PR c++/94955, PR c++/90915, + PR c++/90915, PR c++/95137, PR fortran/95544, PR fortran/93366, + PR fortran/95503, PR fortran/94109, PR fortran/95611, PR fortran/95091, + PR libstdc++/95578. + * Fix PR lto/95604, proposed patch. + * Reorganize the distro defaults patches. + + -- Matthias Klose Tue, 16 Jun 2020 13:09:42 +0200 + +gcc-10 (10.1.0-3) unstable; urgency=medium + + * Update to git 20200525 from the gcc-10 branch. + - Fix PR target/95255 (x86), PR target/95258 (x86), PR lto/95190, + PR target/95169 (x86), PR target/95212 (x86), PR middle-end/94635, + PR middle-end/94940, PR d/94970, PR fortran/39695, PR libfortran/95119, + PR libstdc++/95289, PR libstdc++/93983. + * Configure --with-arch=i686 for the Hurd. Closes: #960929. + * Remove the last powerpcspe packaging bits, it's finally gone. + * Update watch file. + + -- Matthias Klose Mon, 25 May 2020 22:55:26 +0200 + +gcc-10 (10.1.0-2) unstable; urgency=medium + + * Update to git 20200515 from the gcc-10 branch. + - Fix PR ipa/94947, PR c/95040, PR middle-end/94724, + PR target/94950 (RISCV), PR target/94942 (x86), PR c/94968, PR c/94842, + PR c++/95003, PR c++/94885, PR c++/94938, PR c++/94951, PR c++/94907, + PR fortran/93497, PR fortran/94672, PR fortran/59107, PR libstdc++/94906, + PR libstdc++/94933, PR libstdc++/92894. + + [ Matthias Klose ] + * Remove the unmaintained neon packaging bits. + * Add build dependency on unzip to fix libphobos test failures. + * libphobos: Fix issue 19861 - core.cpuid reports the wrong number of + threads. Closes: #960150. + * Build using GCC 10 on recent distro versions. + * Fix gnat tests to find the libgnat_utils shared library. Closes: #960270. + * Run the testsuite with the offload compilers installed into the temporary + install location. + * Don't require root for the temp installation of the offload compilers. + * Use LLVM 10 for the amdgcn assembler and linker tools. + * Don't override the libstdc++ test results when running the libstdc++ abi + check. + * Update debian/TODO, remove obsolete items, add some testsuite items. + * Override some lintian warnings for snapshot builds. + * Include jit test results into the summary and the gcc-test-results package. + * Fix some lintian warnings. + * Don't strip the target object files for the amdgcn offload build. + * Stop building the libgcc compat packages for bullseye/sid. + + [ Nicolas Boulenguez ] + * Enable gnat autopkg tests. + + -- Matthias Klose Fri, 15 May 2020 17:11:03 +0200 + +gcc-10 (10.1.0-1) unstable; urgency=medium + + * GCC 10.1.0 release. + * lib*stdc++6: Depend on lib*gcc-sN instead of lib*gccN. + * Build libphobos on hppa-linux-gnu. + * Update NEWS files for GCC 10. + * Refresh patches. + + -- Matthias Klose Thu, 07 May 2020 13:44:26 +0200 + +gcc-10 (10-20200502-1) unstable; urgency=medium + + * GCC 10.1 release candidate. + * GCC snapshot, taken from the gcc-10 branch (20200502, 0118d0397f9). + - Fix PR objc/94637, @selector() broken for selectors containing repeated + colons. Closes: #959127. + * Increase the testsuite timeout on riscv64. + * Fix sparc64 multilib cross build (Helmut Grohne). Closes: #958909. + * Fix GDC Issue 19367 - std.net.curl does not understand HTTP/2 status lines. + LP: #1876293. + * Update libgphobos symbols files. + + -- Matthias Klose Sat, 02 May 2020 14:09:59 +0200 + +gcc-10 (10-20200425-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200425, cf3f7b309ffd). + - Fix PR middle-end/94647. Closes: #958062. + * Fix local patch for PR jit/87808. Closes: #954898. + * gcc-snapshot: Depend on nvptx-tools with the nvptx offload compiler. + * Provide symlinks for the offload target tools in /accel/. + * Don't include lib*gomp1 and libgcc4 in the control file, when not building + the common libraries. + * Build libphobos on powerpc*, libdruntime only. + + -- Matthias Klose Sat, 25 Apr 2020 18:07:48 +0200 + +gcc-10 (10-20200418-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200418, c5bac7d127f2). + - Fix PR lto/94612, offloading support. + - Fix PR rtl-optimization/93974, ICE on ppc64el with -O3. + + [ Nicolas Boulenguez ] + * Remove ada-lib-info-file-prefix-map.diff (see #87972). + + [ Matthias Klose ] + * libgcc-sN: Don't add the libgcc-N-dev breaks for backports. + * Include the complete offload compilers in the gcc-snapshot builds. + + -- Matthias Klose Sat, 18 Apr 2020 11:56:38 +0200 + +gcc-10 (10-20200411-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200411, f883c46b487). + * Fix gnat cross builds. + * Strip again the compiler executables. + + -- Matthias Klose Sun, 12 Apr 2020 15:12:15 +0200 + +gcc-10 (10-20200410-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200410, 7478addd84a). + + [ Matthias Klose ] + * Update libgccjit and libgphobos symbols files. + * Remove the libgcc-sN provides from the last upload. + * Don't install the empty gcc_lib_dir in gcc-N-base. + * Configure with -enable-libphobos-checking=release. + + [ Nicolas Boulenguez ] + * Remove some dependencies older than oldoldstable. + * Build gnat. Remove obsolete no_install option for libgnat. + * ada-lib-info-file-source-date-epoch.diff: port fix from gcc-9. + * ada: install libgnat-BV.so without adding a .1 suffix. + * Rename libgnatvsn to libgnat_util (following upstream). + Make the compatibility project abstract instead of generating twice. + * ada-changes-in-autogen-output.diff: keep more upstream default values in + order to reduce the diff noise. + + -- Matthias Klose Fri, 10 Apr 2020 14:45:04 +0200 + +gcc-10 (10-20200402-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200402, 86c92411320). + * Fix PR target/94254 (PPC), proposed patch. + * Update libstdc++6 symbols file for armel. Closes: #954954. + * libgcc-sN: Provide libgcc-sN with an epoch version to rebuild gcc-8. + Closes: #954826. + + -- Matthias Klose Thu, 02 Apr 2020 15:01:48 +0200 + +gcc-10 (10-20200324-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200324, 906b3eb9df6). + * libgcc-N-dev: Include sanitizer headers again. Closes: #954751. + * gm2: Define lang_register_spec_functions for jit. Closes: #954438. + + -- Matthias Klose Tue, 24 Mar 2020 13:38:16 +0100 + +gcc-10 (10-20200321-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200321, 497498c878d). + * Update gm2 from the gm2 trunk. + * Move limits.h and syslimits.h into /include, and remove + /include-fixed. + * Update libgphobos symbols file. + + -- Matthias Klose Sat, 21 Mar 2020 13:14:07 +0100 + +gcc-10 (10-20200312-2) unstable; urgency=medium + + * Ship the include-fixed directory again, for a working #include . + + -- Matthias Klose Fri, 13 Mar 2020 09:42:15 +0100 + +gcc-10 (10-20200312-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200312, daf2852b883). + * For all runtime libraries, generate dependencies on libgcc-sN instead + on libgccN. + * Use llvm 10 for the amdgcn offload compiler, when available. + * Update newlib to 3.3.0. + * Stop shipping the include-fixed directory. + * Build the snapshot package with the offload compilers included. + * Tighten dependency on libc6 for this upload. + + -- Matthias Klose Thu, 12 Mar 2020 21:41:07 +0100 + +gcc-10 (10-20200304-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200304, 94f7d7ec6eb). + * Update the autopkg tests to run GCC 10. + + -- Matthias Klose Wed, 04 Mar 2020 16:38:16 +0100 + +gcc-10 (10-20200222-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200222, e99b18cf710). + * Don't create doc directories for -dbg packages when not building those. + * Update libgphobos symbols file for amd64. + * Don't try to strip the target libs for the amdgcn offload compiler. + + -- Matthias Klose Sat, 22 Feb 2020 13:39:51 +0100 + +gcc-10 (10-20200211-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200211, a6ee556c765). + + [ Matthias Klose ] + * Let the libgcc-sN multilib cross packages provide libgccN. + * libgcc-sN: Move library back to /lib from /usr/lib, and add + a replaces to libgccN. Closes: #950624. + * libgcc-sN: Add break on cryptsetup-initramfs. Closes: #950551. + + [ Aurelien Jarno ] + * debian/libgcc-s.symbols: add mipsn32el to the list of architectures + with GCC_3.3.4, GCC_4.4.0 and CC_4.5.0 symbols. + * debian/rules.conf: libgcc-s1 and corresponding multilib packages are + epochless. Adjust DEB_LIBGCC_VERSION accordingly. + + -- Matthias Klose Tue, 11 Feb 2020 07:20:23 +0100 + +gcc-10 (10-20200204-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200204, 0303907ea5d). + * On architectures where libgcc_s.so is a symlink, replace the symlink with + a simple linker script. + * Add breaks on libgcc-N-dev packages on arm64, s390x and sparc64. + Closes: #950550, #950579. + + -- Matthias Klose Tue, 04 Feb 2020 15:52:16 +0100 + +gcc-10 (10-20200202-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200202, 0303907ea5d). + + -- Matthias Klose Sun, 02 Feb 2020 11:43:57 +0100 + +gcc-10 (10-20200129-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20200129, 87c3fcfa6bb). + * Update gm2 from the gm2 trunk. + * Fix libgomp-plugin-amdgcn1 package description. + * Bump libgo soversion. + * Reset libgphobos version to 1. + * Apply proposed patch for PR bootstrap/93409. + * Fix building the amdgcn offload compiler with llvm 9. + * Bump standards version. + + -- Matthias Klose Wed, 29 Jan 2020 12:34:27 +0100 + +gcc-10 (10-20200117-2) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20200117, 507de5ee23e). + * Update gm2 from the gm2 trunk. + + [ Matthias Klose ] + * Update libgomp symbols files. + * Build-depend on libzstd-dev. + * Revert the fix for PR c/85678, not making -fno-common the default for + current releases and backports. + * Update libstdc++ symbols file. + * Install more AArch64 intrinsic headers. + * Prepare for git updates from a release branch. + * Allow retrying of a native build in case of unreproducible ICEs. + + [YunQiang Su] + * Fix buffer overflow in the gcc-search-prefixed-as-ld patch when + strlen(DEFAULT_REAL_TARGET_MACHINE) < multiarch_len. Addresses: #915194. + + -- Matthias Klose Fri, 17 Jan 2020 15:56:29 +0100 + +gcc-10 (10-20200104-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20200104, r279880). + * Update newlib to newlib-3.2.0. + * Update gm2 from the gm2 trunk. + + -- Matthias Klose Sat, 04 Jan 2020 11:26:06 +0100 + +gcc-10 (10-20191217-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20191217, r279456). + * Update newlib to a snapshot from trunk. + * Update gm2 from the gm2 trunk. + * Update symbols files. + * Build without gnat for a first build. + * Build an amdgcn offload compiler. + * Update debian/copyright for gm2, compiler is now GPL-3+, the runtime + libraries GPL-3+ plus GCC Runtime Library Exception, version 3.1. + * Fix libgo build on arm-linux-gnueabi*. + * Update debian/copyright for contrib/unicode. + * libgomp-plugin-nvptx1: Update cuda suggestions. Addresses: #946487. + * Fix buffer overflow in the gcc-search-prefixed-as-ld patch. + Addresses: #946792. + * Don't strip frontends for debugging purposes. + + -- Matthias Klose Tue, 17 Dec 2019 12:31:04 +0100 + +gcc-9 (9.2.1-21) unstable; urgency=medium + + * Update to SVN 20191130 (r278870) from the gcc-9-branch. + - Fix PR fortran/92100, PR tree-optimization/92222, PR ada/92489, + PR fortran/92629. + * Stop building -dbg packages, keep building the libstc++6-9-dbg package + containing just the libstdc++ debug build. + + -- Matthias Klose Sat, 30 Nov 2019 09:17:04 +0100 + +gcc-9 (9.2.1-20) unstable; urgency=medium + + * Update to SVN 20191126 (r278718) from the gcc-9-branch. + - Fix PR libstdc++/92267, PR tree-optimization/91355, PR other/92090, + PR middle-end/90796, PR middle-end/90840, PR target/90867 (x86), + PR c/90898, PR middle-end/91450, PR rtl-optimization/92430, + PR target/92389 (x86), PR tree-optimization/90930, PR target/87833 (x86), + PR c++/90767, PR c++/92504, PR fortran/92113, PR fortran/92321, + PR fortran/92470, PR fortran/92470, PR fortran/92569, PR fortran/92050, + PR ada/92362, PR ada/92575. + * Add a libgphobos symbols file. + * Enable LTO builds again. + + -- Matthias Klose Tue, 26 Nov 2019 08:16:37 +0100 + +gcc-9 (9.2.1-19) unstable; urgency=medium + + * Update to SVN 20191109 (r278002) from the gcc-9-branch. + - Fix PR sanitizer/92154, PR c++/92384, PR middle-end/92231, PR c++/90947, + PR c++/90998, PR c++/92343, PR c++/90947, PR tree-optimization/85887, + PR c++/92015, PR middle-end/92231, PR preprocessor/92296. + * Fix once more the gnat armel cross build. + + -- Matthias Klose Sat, 09 Nov 2019 15:47:17 +0100 + +gcc-9 (9.2.1-18) unstable; urgency=medium + + * Update to SVN 20191108 (r277978) from the gcc-9-branch. + - Fix PR target/91289 (PPC), PR fortran/92208, PR fortran/92277, + PR fortran/92208, PR fortran/92284, PR target/92095 (SPARC), + PR fortran/91253. + + [ Matthias Klose ] + * Update gm2 from the gcc_9_2_0_gm2 branch 20191107, more parallel + build issues and cross build fixes. + * Bump standards version. + * ada-libgnatvsn.diff: + - Regenerate with upstream automake 1.15.1 and autoconf 2.69. + + [ Nicolas Boulenguez ] + * Copy ada-lib-info-file-prefix-map.diff from gcc-8. + * ada-tools-move-ldflag.diff is obsolete with --as-needed as default. + * Enable all non-default linker checks for Ada. + + -- Matthias Klose Fri, 08 Nov 2019 17:51:22 +0100 + +gcc-9 (9.2.1-17) unstable; urgency=medium + + * Update to SVN 20191102 (r277743) from the gcc-9-branch. + * Update gm2 from the gcc_9_2_0_gm2 branch 20191031, more parallel + build issues. + * ada-libgnatvsn.diff: + - Copy some of configure.ac's common stuff from libatomic/libgomp. + - Regenerate with automake 1.15.1 and autoconf 2.69. + + -- Matthias Klose Sun, 03 Nov 2019 10:37:13 +0100 + +gcc-9 (9.2.1-16) unstable; urgency=medium + + * Update to SVN 20191030 (r277619) from the gcc-9-branch. + - Fix PR target/92225 (x86), PR rtl-optimization/92007, + PR target/70010 (PPC), PR target/65342 (PPC), PR target/67183, + PR fortran/91926, PR fortran/91863, PR fortran/86248, PR c++/92201. + * Use a proper configure check when linking with libatomic in libgnatvsn. + Closes: #943796. + * Enable gm2 on x32. + * Update gm2 from the gcc_9_2_0_gm2 branch 20191030, parallel build issues. + * Fix PR libstdc++/92267, taken from the trunk. + + -- Matthias Klose Wed, 30 Oct 2019 13:13:31 +0100 + +gcc-9 (9.2.1-15) unstable; urgency=medium + + * Update to SVN 20191027 (r277486) from the gcc-9-branch. + - Fix PR c++/85254. + * Update gm2 from the gcc_9_2_0_gm2 branch 20191026. + * Link libgnatvsn against libatomic. + + -- Matthias Klose Sun, 27 Oct 2019 18:08:50 +0100 + +gcc-9 (9.2.1-14) unstable; urgency=medium + + * Update to SVN 20191025 (r277460) from the gcc-9-branch. + - Fix PR libstdc++/90682, PR libstdc++/61761, PR libstdc++/89164, + PR libstdc++/92143, PR libstdc++/91456, PR libstdc++/92059, + PR libstdc++/91748, PR tree-optimization/91885, PR debug/91887, + PR tree-optimization/92131, PR c++/92062, PR fortran/92174, + PR target/88167 (ARM), PR middle-end/92153. + * Configure again with --enable-objc-gc=auto, somehow dropped in gcc-9. + Closes: #942049. + * Revert the libgnatvsn changes from 9.2.1-9. + + -- Matthias Klose Fri, 25 Oct 2019 19:31:48 +0200 + +gcc-9 (9.2.1-12) unstable; urgency=medium + + * Update to SVN 20191022 (r277294) from the gcc-9-branch. + - Fix PR c++/91925, PR c++/88203, PR c/91401, PR tree-optimization/92056, + PR tree-optimization/91734, PR bootstrap/90543, PR middle-end/91920, + PR tree-optimization/91723, PR tree-optimization/91665, + PR middle-end/91001, PR middle-end/91105, PR middle-end/91106, + PR go/91617, PR middle-end/91623, PR lto/91572, + PR tree-optimization/91351. PR target/86040 (AVR), PR target/59888, + PR target/89400 (ARM), PR target/87243, PR c++/92106, PR c++/91974, + PR c++/88203, PR c/91401, PR fortran/69455, PR fortran/91586, + PR fortran/83113, PR fortran/89943. + + [Nicolas Boulenguez] + * Fix race condition in libgnatvsn/Makefile. + + [ Matthias Klose ] + * Configure for s390x Ubuntu focal --with-arch=z13 --with-mtune=z15. + + -- Matthias Klose Tue, 22 Oct 2019 21:35:13 +0200 + +gcc-9 (9.2.1-11) unstable; urgency=medium + + [Nicolas Boulenguez] + * Fix diff index in libgnatvsn patch. Closes: #942442. + + -- Matthias Klose Thu, 17 Oct 2019 10:32:53 +0200 + +gcc-9 (9.2.1-10) unstable; urgency=medium + + * Update to SVN 20191016 (r277058) from the gcc-9-branch. + - Fix PR lto/91968, PR tree-optimization/91812, PR debug/91772, + PR tree-optimization/91790, PR target/92022 (ALPHA), + PR target/88630 (SH), PR c++/91606, PR c++/91740, PR ada/91995, + PR fortran/91715, PR fortran/91649, PR fortran/91801. + + [Nicolas Boulenguez] + * Rewrite libgnatvsn support with autotools. Closes: #746689. + * Converge towards similar gnat_util library. + * Cherry-pick repinfo stuff for latest ASIS. + + [ Matthias Klose ] + * gm2: Fix a time_t cast, and enable gm2 on x32. Closes: #942059, + * Fix PR lto/91307, reproducible LTO builds, taken from the trunk. + + -- Matthias Klose Wed, 16 Oct 2019 12:29:50 +0200 + +gcc-9 (9.2.1-9) unstable; urgency=medium + + * Update to SVN 20191008 (r276687) from the gcc-9-branch. + - Fix PR libstdc++/91748, PR rtl-optimization/89795, PR c++/91705, + PR target/86805 (SH), PR target/80672 (SH), PR rtl-optimization/88751, + PR target/91683 (riscv), PR target/91269 (SPARC), + PR target/91635 (riscv), PR c++/91923, PR fortran/91557, + PR fortran/91553, PR fortran/91566, PR fortran/91642, PR fortran/91588, + PR fortran/91727, PR fortran/91550, PR target/91275 (PPC), + PR target/91769 (MIPS), PR fortran/91716, PR target/88562 (SH), + PR driver/69471, PR fortran/84487, PR fortran/47054, PR fortran/91942, + PR fortran/91785, PR fortran/91864, PR fortran/91802, PR fortran/91714, + PR fortran/91641. + - Fix ICE on MIPS. Closes: #941263. + * Disable gm2 on hurd-i386, mc hangs there (Samuel Thibault). Closes: #940600. + * Apply proposed patch for PR target/92022. Addresses: #931815. + + [ Nicolas Boulenguez ] + * Update ada local patches. + + -- Matthias Klose Tue, 08 Oct 2019 10:21:22 +0200 + +gcc-9 (9.2.1-8) unstable; urgency=medium + + * Update to SVN 20190909 (r275519) from the gcc-9-branch. + - Fix PR fortran/91496, PR fortran/91496, PR fortran/91660, + PR fortran/91589, PR target/87853 (x86), PR target/91704 (x86). + * libstdc++: Fix GCC_LINUX_FUTEX to work with C99 compilers, taken from + the trunk. + * Make LTO link pick up compile-time -g (proposed patch). + + -- Matthias Klose Mon, 09 Sep 2019 17:18:48 +0200 + +gcc-9 (9.2.1-7) unstable; urgency=medium + + * Update to SVN 20190905 (r275396) from the gcc-9-branch. + - Fix PR libstdc++/91067, PR target/91481 (PPC), + PR tree-optimization/90278, PR tree-optimization/91568, + PR tree-optimization/90637, PR fortran/91565, PR fortran/91564, + PR fortran/91551, PR fortran/91587, PR pch/61250, PR c++/91155, + PR tree-optimization/91597, PR gcov-profile/91601, + PR target/91472 (SPARC), PR c++/91129, PR fortran/91552, + PR target/81800 (AArch64). + * Drop the gcc-alpha-bs-ignore patch, apparently not necessary anymore. + * For the omp.h header, use the configured OMP_NEST_LOCK_SIZE and + OMP_NEST_LOCK_ALIGN values for some non-multilib architectures. + Closes: #935750. + * Use Python3 to build the gm2 frontend. Closes: #936586. + * libgphobos76: Add breaks: dub (<< 1.16.0-1~). Addresses: #935275. + + -- Matthias Klose Thu, 05 Sep 2019 06:45:00 +0200 + +gcc-9 (9.2.1-6) unstable; urgency=medium + + * Update to SVN 20190827 (r274974) from the gcc-9-branch. + - Fix PR ipa/91508, PR ipa/91438, PR ipa/91404, PR lto/91287, + PR target/91533 (x86), PR ipa/91508, PR ipa/91438, PR ipa/91404, + PR c++/91521. + * Backport LTO jobserver support (-flto=auto). + * any_archs: Remove mips and powerpcspe, add riscv64. + + -- Matthias Klose Wed, 28 Aug 2019 01:01:47 +0200 + +gcc-9 (9.2.1-4) unstable; urgency=medium + + * Fix typo for gm2 enablement. + * Disable gm2 on powerpc, ppc64, sh4, kfreebsd-i386, kfreebsd-amd64. + See the build logs of 9.2.1-3 for the various issues. + + -- Matthias Klose Thu, 22 Aug 2019 12:12:07 +0200 + +gcc-9 (9.2.1-3) unstable; urgency=medium + + * Update to SVN 20190821 (r274792) from the gcc-9-branch. + - Fix PR rtl-optimization/91347, PR target/91386 (AArch64). + + [ Aurelien Jarno ] + * Enable Ada on riscv64. + + [ Matthias Klose ] + * Build the gm2 packages except on powerpc and x32. + * Update gm2 cross build dependencies. + * Fix gm2 build with -j32. + * Configure with --enable-libpth-m2 for gm2 cross builds. + * Configure --without-target-system-zlib for gdc cross builds. + * Remove not needed libpth-dev dependency for gm2 packages. + * Ignore M2Version.o for gm2 bootstrap comparison. + * Update gm2 from the gcc_9_2_0_gm2 branch 20190820. + + -- Matthias Klose Wed, 21 Aug 2019 12:15:27 +0200 + +gcc-9 (9.2.1-2) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20190819 (r274667) from the gcc-9-branch. + - Fix PR c++/90947, PR c++/91436, PR fortran/87991, PR fortran/90563, + PR fortran/88072, PR fortran/90561, PR fortran/89647, PR fortran/87993, + PR tree-optimization/91109, PR tree-optimization/91109, + PR tree-optimization/91445, PR tree-optimization/91091, + PR c++/90393, PR c++/81429, PR c++/87519, PR c++/90473, PR c++/90884, + PR libsanitizer/87880, PR fortran/91485, PR fortran/91471, + PR fortran/78739, PR fortran/78719, PR fortran/82992. + * More gm2/libgm2 packaging fixes. + * Disable lto build on sparc64 (if porters would only test that before + making a request to enable it ...). + * Bootstrap using gnat-9 on development distributions. + + [ Aurelien Jarno ] + * Fix libstdc++6.symbols.riscv64. + + [ Nicolas Boulenguez ] + * ada: update packaging Makefile snippet for gcc-9. + + -- Matthias Klose Mon, 19 Aug 2019 13:01:37 +0200 + +gcc-9 (9.2.1-1) unstable; urgency=medium + + * Update to SVN 20190813 (r274380) from the gcc-9-branch. + - Fix PR fortran/91422, PR lto/91375, PR driver/91130, PR driver/91130, + PR c++/91378, PR c++/90538, PR fortran/91424, PR fortran/91359, + PR fortran/42546, PR fortran/91414, PR libstdc++/90361. + * Minor updates to debian/copyright for GCC 9. + * Include a snapshot of the gm2 tarball. + * Add copyright information for gcc/gm2, gcc/testsuite/gm2 and libgm2. + + -- Matthias Klose Tue, 13 Aug 2019 15:43:49 +0200 + +gcc-9 (9.2.0-1) unstable; urgency=medium + + * GCC 9.2.0 release. + + [ Matthias Klose ] + * Enable pgo/lto build on sparc64 (ok, when done on landau buildd). + * Add initial gm2 packaging bits. + * Bump standards version. + + [ James Clarke ] + * ada-kfreebsd.diff: Fix fatal unreferenced formal parameter warnings. + + [ Aurelien Jarno ] + * Add libstdc++6.symbols.riscv64. + * Update debian/libgcc.symbols for riscv64. + + -- Matthias Klose Tue, 13 Aug 2019 12:24:04 +0200 + +gcc-9 (9.1.0-10) unstable; urgency=medium + + * Fix typo in libstdc++ symbols file. + + -- Matthias Klose Wed, 17 Jul 2019 21:56:07 +0200 + +gcc-9 (9.1.0-9) unstable; urgency=medium + + * Update to SVN 20190717 (r273554) from the gcc-9-branch. + - Fix PR c++/91125, PR c/91149, PR driver/90684, PR middle-end/78884, + PR rtl-optimization/90756, PR tree-optimization/91063, PR ipa/91062, + PR ipa/90982, PR tree-optimization/90972, PR debug/90914, PR debug/90900, + PR lto/90369, PR rtl-optimization/91136, PR tree-optimization/91108, + PR fortran/91077. + + [ Matthias Klose ] + * Make the lto-verbose-linker patch more robust for hppa (Dave Anglin). + * Avoid building stuff which is not needed for architecture independent + packages. Addresses: #900554. + * lib32gphobos-dev, libn32gphobos-dev: Remove dependency on non-existing + libz-dev multilib packages. + * Update libgfortran symbols files. + * Update libstdc++ symbols files. + + [ Nicolas Boulenguez ] + * Ada: update confirm_debian_bugs.py. + * Ada: fully port 50b8286b from the gcc-8 branch to gcc-9. + + -- Matthias Klose Wed, 17 Jul 2019 21:53:24 +0200 + +gcc-9 (9.1.0-8) unstable; urgency=medium + + * Update to SVN 20190707 (r273175) from the gcc-9-branch. + * Re-add a lost hunk to the add-kfreebsd patch (James Clarke). + * Dump config files on failed jit and nvptx builds. + * Disable the LTO builds on architectures where the buildds can't keep up. + + -- Matthias Klose Sun, 07 Jul 2019 12:10:25 +0200 + +gcc-9 (9.1.0-7) experimental; urgency=medium + + * Update to SVN 20190704 (r273081) from the gcc-9-branch. + - Fix PR libstdc++/91067, PR tree-optimization/90892, PR middle-end/90899. + - Fix gnat build failure on kfreebsd-* (James Clarke). Closes: #922496. + * Add ppc64el as architecture for the nvptx offload packages. + * Increase the timeouts for the LTO link builds. + * Fix PR rtl-optimization/90756, taken from the trunk. Addresses: #930012. + + -- Matthias Klose Thu, 04 Jul 2019 22:44:41 +0200 + +gcc-9 (9.1.0-6) experimental; urgency=medium + + * Update to SVN 20190703 (r273015) from the gcc-9-branch. + - Fix PR sanitizer/90954, PR c++/91024, PR target/90991 (x86), PR c/90760, + PR tree-optimization/90949, PR c++/90950, PR middle-end/64242, + PR c++/60223, PR c++/90490. + * Disable LTO builds for snapshot builds. + * Don't use --push-state/--pop-state options for old linkers. + * Fix explicit autoconf version for backport packages. + * Allow to build with the locales package instead of locales-all. + * Disable LTO and profiled builds for older binutils versions. + * Try to enable the LTO builds everywhere. + * Make the LTO link step a bit more verbose to avoid timeouts on + the buildds. + + -- Matthias Klose Wed, 03 Jul 2019 20:21:23 +0200 + +gcc-9 (9.1.0-5) experimental; urgency=medium + + * Update to SVN 20190628 (r272781) from the gcc-9-branch. + - Fix PR libstdc++/85494, PR libstdc++/91012, R libstdc++/90920, + PR libstdc++/90281, PR libstdc++/88881, PR libstdc++/90770, + PR libstdc++/90252, PR ipa/90939, PR tree-optimization/90930, + PR tree-optimization/90930, PR tree-optimization/90316, + PR middle-end/64242, PR c++/90825, PR c++/90832, PR c++/90736, + PR fortran/90937, PR fortran/90290, PR fortran/90002, PR fortran/89344, + PR fortran/87907, PR fortran/86587, PR fortran/77632, PR fortran/69499, + PR fortran/69398, PR fortran/68544, PR fortran/90577, PR fortran/90578. + * Fix cross building gdc (Iain Buclaw). + * Apply proposed fix for PR libgcc/90714 (ia64 only). Addresses: #930119. + + -- Matthias Klose Fri, 28 Jun 2019 13:13:25 +0200 + +gcc-9 (9.1.0-4) experimental; urgency=medium + + * Update to SVN 20190612 (r272183) from the gcc-9-branch. + - Fix PR target/90811 (nvidia), PR libgomp/90641, PR libgomp/90585, + PR c++/90598, PR libstdc++/90700, PR libstdc++/90686, PR libstdc++/90634, + PR c/90474, PR d/90778, PR target/90751 (PARISC), + PR tree-optimization/90450, PR tree-optimization/90402, + PR tree-optimization/90328, PR debug/90733, PR target/82920 (x86), + PR fortran/90329, PR fortran/90329, PR bootstrap/90543, + PR c++/90810, PR c++/90598, PR c++/90548, PR fortran/90744, + PR fortran/90329. + * Update the watch file. + + -- Matthias Klose Wed, 12 Jun 2019 17:56:59 +0200 + +gcc-9 (9.1.0-3) experimental; urgency=medium + + * Update to SVN 20190526 (r271629) from the gcc-9-branch. + - Fix PR libgomp/90527, PR c++/90532, PR libstdc++/90299, + PR libstdc++/90454, PR debug/90197, PR pch/90326, PR c++/90484, + PR tree-optimization/90385, PR c++/90383, PR tree-optimization/90303, + PR tree-optimization/90316, PR tree-optimization/90316, + PR libstdc++/90220, PR libstdc++/90557, PR sanitizer/90570, + PR target/90547 (x86), PR libfortran/90038, PR fortran/90498, + PR libfortran/90038, PR libfortran/90038, PR fortran/54613, + PR fortran/54613, PR libstdc++/85965, PR target/90530 (PARISC), + PR c++/90572. + * Turn on -fstack-clash-protection and -fcf-protection in Ubuntu 19.10 on + supported architectures. + * Fix PR bootstrap/87338 on ia64 (James Clarke). Addresses: #927976. + * Enable LTO builds on 64bit architectures. + * Update libstdc++ symbols files for gcc-4-compatible builds. + * Build the nvptx offload compiler on ppc64el. + * Build the libgomp-hsa plugin. + + -- Matthias Klose Sun, 26 May 2019 17:59:59 +0200 + +gcc-9 (9.1.0-2) experimental; urgency=medium + + * Update to SVN 20190514 (r271161) from the gcc-9-branch. + - Fix PR target/89424 (PPC), PR sanitizer/90312, PR c++/90265, + PR c++/90173, PR target/87835, PR libstdc++/81266, PR libstdc++/90397, + PR libstdc++/90239, PR tree-optimization/90416, PR gcov-profile/90380, + PR gcov-profile/90380, PR target/90357 (MIPS), PR target/89765 (PPC), + PR c++/78010, PR c++/90265, PR c++/90173, PR fortran/90093, + PR fortran/90352, PR fortran/90355, PR fortran/90351, PR fortran/90329, + PR target/90379, PR bootstrap/89864. + * Update the cross installation patch. + * Enable Go on sh4. + * Adjust some regex patterns used in the packaging for GCC 10. + * Drop the build dependency on binutils-multiarch (libgo-9-dev is now split + out into its own package). Closes: #804190. + * Ignore any distro default flags for the hppa64 cross build. + + -- Matthias Klose Tue, 14 May 2019 13:38:03 +0200 + +gcc-9 (9.1.0-1) experimental; urgency=medium + + * GCC 9.1.0 release. + * Update to SVN 20190504 (r270874) from the gcc-9-branch. + - Fix PR tree-optimization/90316. + * Merge some hardening defaults patches into one patch set. + * Turn on -fasynchronous-unwind-tables by default on supported architectures. + * Refresh patches. + + -- Matthias Klose Sat, 04 May 2019 17:17:23 +0200 + +gcc-9 (9-20190428-1) experimental; urgency=medium + + * GCC snapshot, taken from the gcc-9 branch (20190428, r270630). + * Build the phobos and D runtime on s390x and riscv64. + + -- Matthias Klose Sun, 28 Apr 2019 09:15:08 +0200 + +gcc-9 (9-20190420-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190420, r270466). + + -- Matthias Klose Sat, 20 Apr 2019 08:30:33 +0200 + +gcc-9 (9-20190402-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190402, r270074). + * Mark gcc-9-source as M-A: foreign. + + -- Matthias Klose Tue, 02 Apr 2019 08:22:27 +0200 + +gcc-9 (9-20190321-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190321, r269832). + * Split out lib*go-dev packages. + * Fix PR jit/87808: Don't rely on the gcc driver. Let libgccjit0 + depend on binutils and libgcc-dev. Addresses: #911668. + * Fix stripping the gcc-hppa64 package. + * Update libstdc++ and libgccjit symbols files. + + -- Matthias Klose Thu, 21 Mar 2019 12:39:47 +0100 + +gcc-9 (9-20190311-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190311, r269597). + + -- Matthias Klose Mon, 11 Mar 2019 23:23:20 +0100 + +gcc-9 (9-20190305-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190305, r269387). + + [ Aurelien Jarno ] + * Run the tests in parallel again on Debian/s390x, the libgo bug is + fixed. + + [ Matthias Klose ] + * Fix test dependencies for the Hurd and KFreeBSD. + + -- Matthias Klose Tue, 05 Mar 2019 10:51:09 +0100 + +gcc-9 (9-20190223-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190223, r269152). + + -- Matthias Klose Sat, 23 Feb 2019 11:00:00 +0100 + +gcc-9 (9-20190216-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190216, r268955). + * Fix libgo s390x biarch build. + * Run test suite on the Hurd and KFreeBSD. + * Fix linking libgphobos with the system zlib. + + -- Matthias Klose Sat, 16 Feb 2019 14:28:15 +0100 + +gcc-9 (9-20190215-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190215, r268943). + * Build libphobos on all mips variants. + * Build-depend on locales-all instead of locales, don't generate locales + during the build, and attribute test dependencies with . + * Don't run the tests on Debian/s390x in parallel, memory constraints on + the buildds. + * gdc-9: Include again the libgphobos spec file. + + -- Matthias Klose Fri, 15 Feb 2019 19:13:42 +0100 + +gcc-9 (9-20190208-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190208, r268704). + * Update the support to build without packages being built by the next GCC + version. + * Fix ISO_Fortran_binding.h installation for cross builds. + + -- Matthias Klose Fri, 08 Feb 2019 18:17:45 +0100 + +gcc-9 (9-20190202-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190202, r268474). + + -- Matthias Klose Sat, 02 Feb 2019 12:19:53 +0100 + +gcc-9 (9-20190125-2) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190125, r268260). + + [ Matthias Klose ] + * Turn on ld --as-needed by default on Debian development versions. + * Turn on profiled bootstrap on x86, AArch64, PPC64 and s390x + architectures for native builds. + * Relax the shlibs dependency for libgnat-8. Addresses: #920246. + + [ Nicolas Boulenguez ] + * Update the ada-kfreebsd patch. Closes: #919996. + + -- Matthias Klose Fri, 25 Jan 2019 11:58:44 +0100 + +gcc-9 (9-20190120-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190120, r268102). + - Updates to Go 1.12 beta2. + * Build libphobos on hppa. + * Drop libgo patch for the Hurd. + * Refresh patches. + * Update newlib to newlib-3.1.0.20181231. + + -- Matthias Klose Sun, 20 Jan 2019 11:28:26 +0100 + +gcc-9 (9-20190116-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190116, r267965). + * libgccjit-9-doc: Breaks libgccjit-8-doc. Closes: #918445. + * Update libstdc++6 symbols files. + * Override some libasan and gccgo lintian warnings. + * Build the Ada packages except for gnat-9-sjlj. + * Bump standards version. + + -- Matthias Klose Wed, 16 Jan 2019 09:42:19 +0100 + +gcc-9 (9-20190103-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190103). + + [ Matthias Klose ] + * Update packaging, patches and symbols files. + * Remove libmpx packaging, removed upstream. + * Update newlib to the newlib-3.0.0.20180831 snapshot. + * Disable building Ada for now. + * Build D and libphobos from the now integrated upstream sources. + * gcc-9-base: Break gnat (<< 7). Addresses: #911633. + * gdc: Dynamically link the phobos library. + * Adopt gcc-snapshot build for the current trunk. + * Don't apply gcc-as-needed patch for snapshot builds. + * Fix control file generation for gphobos n32 multilibs. + * Disable gnat build on alpha. See PR ada/88200. + * powerpcspe support removed upstream. Remove the powerpcspe packaging + references and powerpcspe patches. + * gcc-9-source: Depend on lsb-release. + * Disable broken selective scheduling on ia64 (Adrian Glaubitz). + See PR rtl-optimization/85412. Addresses: #916591. + * Fix perl shebang for the gnathtml binary. + * Lower priority of libgcc[124] and libstdc++6 packages. + * Stop building the fixincludes package, never used by lintian. + * Remove the libstdc++6 breaks for the stretch release. + * libgccjit-doc: Install image files. + * Don't provide -compiler names for cross compiler packages. + Addresses: #916376. Not a final solution. + * Disable the gnat build for now, ftbfs in the sjlj variant. + * Bump the libgo soname. + + [ Nicolas Boulenguez ] + * Update Ada patches. + + -- Matthias Klose Thu, 03 Jan 2019 13:35:00 +0100 + +gcc-8 (8.2.0-8.1) UNRELEASED; urgency=medium + + * Update to SVN 20181020 (r265339) from the gcc-8-branch. + - Fix PR middle-end/87087, PR middle-end/87623, PR libstdc++/87641, + PR middle-end/87645. + * Update VCS attributes in the control file. + * Don't configure native builds with --with-sysroot. Apparently this cannot + be completely overridden with the command line option --sysroot. + + -- Matthias Klose Sat, 20 Oct 2018 09:25:48 +0200 + +gcc-8 (8.2.0-8) unstable; urgency=medium + + * Update to SVN 20181017 (r265234) from the gcc-8-branch. + - Fix PR libstdc++/86751, PR libstdc++/78595, PR libstdc++/87061, + PR libstdc++/70966, PR libstdc++/77854, PR libstdc++/87538, + PR libgcc/85334, PR middle-end/63155, PR target/87511 (AArch64), + PR middle-end/87610, PR tree-optimization/87465, PR target/87550 (x86), + PR target/87414 (x86), PR tree-optimization/86844, PR target/86731 (PPC), + PR target/87370 (x86), PR target/87517 (x86), PR target/87522 (x86), + PR other/87353, PR gcov-profile/86109, PR target/82699 (x86), + PR target/87467 (x86), PR target/87033 (PPC), PR sanitizer/85774, + PR rtl-optimization/86882, PR gcov-profile/85871, PR c++/87582, + PR c++/84940, PR gcov-profile/86109, PR c++/85070, PR c++/86881, + PR fortran/83999, PR fortran/86372, PR fortran/86111, PR fortran/85395, + PR fortran/86830, PR fortran/85954. + + -- Matthias Klose Wed, 17 Oct 2018 09:45:31 +0200 + +gcc-8 (8.2.0-7) unstable; urgency=medium + + * Update to SVN 20180917 (r264370) from the gcc-8-branch. + - Fix PR libstdc++/87278, PR target/85666 (mmix), PR middle-end/87188, + PR target/87224 (PPC), PR target/86989 (PPC), PR rtl-optimization/86771, + PR middle-end/87248, PR c++/87093, PR fortran/87284, PR fortran/87277. + + -- Matthias Klose Mon, 17 Sep 2018 17:46:50 +0200 + +gcc-8 (8.2.0-6) unstable; urgency=medium + + * Update to SVN 20180908 (r264168) from the gcc-8-branch. + - Fix PR c++/87137, PR bootstrap/87225, PR target/87198 (x86), + PR middle-end/87138, PR tree-optimization/86835, PR c++/87185, + PR c++/87095, PR c++/86836, PR c++/86738, PR c++/86706, PR fortran/86116. + * Apply proposed patch for PR go/87260. + * Apply proposed patch for PR tree-optimization/87188. Closes: #907586. + * Fix PR target/86731 (PPC), taken from the trunk. Closes: #905868. + + -- Matthias Klose Sun, 09 Sep 2018 14:43:43 +0200 + +gcc-8 (8.2.0-5) unstable; urgency=medium + + * Update to SVN 20180904 (r264075) from the gcc-8-branch. + - Fix PR sanitizer/86022, PR libstdc++/87116, PR other/86992, + PR tree-optimization/86914, PR middle-end/87099, + PR rtl-optimization/87065, PR target/86662, PR target/87014, + PR target/86640, PR gcov-profile/86817, PR tree-optimization/86871, + PR c++/86763, PR fortran/86837, PR libfortran/86704, + PR tree-optimization/85859, PR tree-optimization/87074, + PR tree-optimization/86927, PR middle-end/87024, PR middle-end/86505, + PR tree-optimization/86945, PR tree-optimization/86816, + PR lto/86456, PR c++/87155, PR c++/84707, PR c++/87122, + PR fortran/86328, PR fortran/86760. + * Remove ia64 boostrap work around (Jason Duerstock). Closes: #906675. + + -- Matthias Klose Tue, 04 Sep 2018 09:04:17 +0200 + +gcc-8 (8.2.0-4) unstable; urgency=medium + + * Update to SVN 20180814 (r263527) from the gcc-8-branch. + - Fix PR libstdc++/86597, PR libstdc++/84535, PR libstdc++/60555, + PR libstdc++/86874, PR libstdc++/86861, PR target/86386 (x86), + PR c++/86728, PR c++/86767, PR fortran/86906. + + [ Nicolas Boulenguez ] + * gnat: set ld_library_path for tested gnat tools. + * In the gnat autopkg test, tell gnatmake to report progress on stdout. + * gnat: Improve the ada-gcc-name patch. + * Update ada/debian_packaging.mk. + + -- Matthias Klose Tue, 14 Aug 2018 11:45:55 +0200 + +gcc-8 (8.2.0-3) unstable; urgency=medium + + * Update to SVN 20180803 (r263086) from the gcc-8-branch. + - Fix PR middle-end/86705, PR target/86820 (m68k). + * Build using ISL 0.20. + * Fix some autopkg tests (allow stderr, explicitly depend on libc-dev). + + -- Matthias Klose Fri, 03 Aug 2018 12:32:31 +0200 + +gcc-8 (8.2.0-2) unstable; urgency=medium + + * Update to SVN 20180802 (r263045) from the gcc-8-branch. + - Fix PR middle-end/86542, PR middle-end/86539, PR middle-end/86660, + PR middle-end/86627, PR target/86511, PR sanitizer/86759, PR c/85704, + PR libstdc++/86734, PR bootstrap/86724, PR target/86651, PR c/86617, + PR c++/86190. + - Fix PR libstdc++/84654, PR libstdc++/85672. LP: #1783705. + * Update cross-build patches for GCC 8.2. + * Refresh patches. + * Add some basic autopkg tests for Ada, C, C++, Go, OpenMP and Fortran. + * Backport r262835 to fix a wrong-code generation on m68k (Adrian Glaubits). + + -- Matthias Klose Thu, 02 Aug 2018 05:59:26 +0200 + +gcc-8 (8.2.0-1) unstable; urgency=medium + + * GCC 8.2.0 release. + * Update GDC to 20180726 from the gdc-8-stable branch.. + + -- Matthias Klose Thu, 26 Jul 2018 13:28:20 +0200 + +gcc-8 (8.1.0-12) unstable; urgency=medium + + * GCC 8.2.0 release candidate. + * Update to SVN 20180719 (r262861) from the gcc-8-branch. + - Fix PR middle-end/85602, PR c++/86480. + + [ Nicolas Boulenguez ] + * ada-verbose patch: Make the ada build more verbose. + * Update the ada-gcc-name patch again. See #856274. Closes: #903694. + + [ Matthias Klose ] + * Rewrite debian/README.cross. + + -- Matthias Klose Thu, 19 Jul 2018 17:39:39 +0200 + +gcc-8 (8.1.0-11) unstable; urgency=medium + + * Update to SVN 20180717 (r262818) from the gcc-8-branch. + - Fix PR c/86453, PR debug/86452, PR debug/86457, PR middle-end/85974, + PR middle-end/86076, PR tree-optimization/85935, + PR tree-optimization/86514, PR tree-optimization/86274, + PR target/84413 (x86), PR middle-end/86202, PR target/84829, + PR c++/3698, PR c++/86208, PR c++/86374, PR sanitizer/86406, + PR fortran/83184, PR fortran/86417, PR fortran/83183, + PR fortran/86325. + + [ Nicolas Boulenguez ] + * Update the ada-gcc-name patch, not appending the suffix twice. + Addresses: #856274. + + -- Matthias Klose Tue, 17 Jul 2018 14:09:13 +0200 + +gcc-8 (8.1.0-10) unstable; urgency=medium + + * Update to SVN 20180712 (r262577) from the gcc-8-branch. + - Fix PR libstdc++/86272, PR libstdc++/86127, PR target/85904, + PR libstdc++/85098, PR libstdc++/85671, PR libstdc++/83982, + PR libstdc++/86292, PR libstdc++/86138, PR libstdc++/84087, + PR libstdc++/86398, PR hsa/86371, PR tree-optimization/86492, + PR c++/86400, PR target/86285 (PPC), PR debug/86064, + PR target/86222 (PPC), PR rtl-optimization/85645, + PR rtl-optimization/85645, PR target/86314 (x86), PR sanitizer/86406, + PR c++/86398, PR c++/86378, PR c++/86320, PR c++/80290, + PR fortran/82969, PR fortran/86242, PR fortran/82865. + * Enable decimal float support on kfreebsd-amd64. Closes: #897416. + + -- Matthias Klose Thu, 12 Jul 2018 10:07:17 +0200 + +gcc-8 (8.1.0-9) unstable; urgency=medium + + * Update to SVN 20180626 (r262138) from the gcc-8-branch. + - Fix PR libstdc++/86138, PR libstdc++/82644, PR libgcc/86213, + PR c++/86210, PR c/86093, PR target/86197 (PPC), PR target/85358 (PPC), + PR tree-optimization/85989, PR target/85657 (PPC), PR target/85657 (PPC), + PR target/85994, PR rtl-optimization/86108, PR debug/86194, + PR tree-optimization/86231, PR c/82063, PR c++/86219, PR c++/86182, + PR c++/85634, PR c++/86200, PR c++/81060, PR fortran/83118, + PR libstdc++/86112, PR libstdc++/81092, PR fortran/82972, + PR fortran/83088, PR fortran/85851, PR c++/86291. + + [ Nicolas Boulenguez ] + * Remove Ludovic Brenta's work to let Ada build tools link with freshly + built libgnat.so, this is now handled by upstream testsuite. + + [ Iain Buclaw ] + * gdc: Explicitly set test action as compile in all dg tests. + + [ Matthias Klose ] + * Build using gnat-8. + + -- Matthias Klose Tue, 26 Jun 2018 10:45:36 +0200 + +gcc-8 (8.1.0-8) unstable; urgency=medium + + * Update to SVN 20180617 (r261686) from the gcc-8-branch. + - Fix PR libstdc++/86169, PR middle-end/86095, PR middle-end/85878, + PR middle-end/86123, PR middle-end/86122, PR c++/86147, PR c++/82882, + PR fortran/85703, PR fortran/85702, PR fortran/85701. + * Fix applying the powerpcspe patches. + + -- Matthias Klose Sun, 17 Jun 2018 12:56:15 +0200 + +gcc-8 (8.1.0-6) unstable; urgency=medium + + * Update to SVN 20180614 (r261597) from the gcc-8-branch. + - Fix PR libstdc++/86008, PR libstdc++/85930, PR libstdc++/85951, + PR target/85591 (x86), PR c++/85710, PR c++/80485, PR target/85755 (PPC), + PR target/85755 (PPC), PR target/81497 (ARM), PR target/85684 (x86), + PR target/63177 (PPC), PR tree-optimization/86038, + PR tree-optimization/85964, PR tree-optimization/85934, PR c++/86025, + PR tree-optimization/85863, PR c/85623, PR target/86003 (ARM), + PR tree-optimization/85712, PR target/85950 (x86), PR target/85984, + PR target/85829 (x86), PR c++/85792, PR c++/85963, PR c++/61806, + PR c++/85765, PR c++/85764, PR c++/85807, PR c++/85815, PR c++/86094, + PR c++/86060, PR c++/85847, PR c++/85976, PR c++/85731, PR c++/85739, + PR c++/85761, PR c++/85873, PR fortran/44491, PR fortran/85138, + PR fortran/85996, PR fortran/86051, PR fortran/86059, PR fortran/63514, + PR fortran/78278, PR fortran/38351, PR fortran/78571, PR fortran/85631, + PR fortran/86045, PR fortran/85641, PR fortran/85816, PR fortran/85975, + PR libgfortran/85840, PR target/85945, PR middle-end/86139, + PR other/77609, PR tree-optimization/86114, PR target/86048 (x86), + PR fortran/86110. + - libgo: update to Go 1.10.3 release. + + -- Matthias Klose Thu, 14 Jun 2018 16:57:14 +0200 + +gcc-8 (8.1.0-5) unstable; urgency=medium + + * Update to SVN 20180531 (r260992) from the gcc-8-branch. + - Fix PR sanitizer/86012, PR c/85696, PR c++/85662, PR target/85756 (x86), + PR target/85683 (x86), PR c++/85952, PR c/85696, PR c++/85662. + - Fix libsanitizer build on sparc64. + * libgo: Make the vet tool work with gccgo (taken from the trunk). + + -- Matthias Klose Thu, 31 May 2018 15:18:52 +0200 + +gcc-8 (8.1.0-4) unstable; urgency=medium + + * Update to SVN 20180529 (r260895) from the gcc-8-branch. + - Fix PR c++/85782, PR sanitizer/85835, PR libstdc++/85818, + PR libstdc++/85818, PR libstdc++/83891, PR libstdc++/84159, + PR libstdc++/67554, PR libstdc++/82966, PR bootstrap/85921, + PR sanitizer/85556, PR target/85900 (x86), PR target/85345 (x86), + PR c++/85912, PR target/85903 (x86), PR tree-optimization/85793, + PR middle-end/85874, PR tree-optimization/85822, PR middle-end/85643, + PR tree-optimization/85814, PR target/85698 (PPC), PR c++/85842, + PR c++/85864, PR c++/81420, PR c++/85866, PR c++/85782, PR fortran/85786, + PR fortran/85895, PR fortran/85780, PR fortran/85779, PR fortran/85543, + PR fortran/80657, PR fortran/49636, PR fortran/82275, PR fortran/82923, + PR fortran/66694, PR fortran/82617, PR fortran/85742, PR fortran/85542, + PR libgfortran/85906, PR libgfortran/85840. + + [ Nicolas Boulenguez ] + * Update ada/confirm_debian_bugs to gcc-8 and python3. + + [ Matthias Klose ] + * gnat-*: Don't search the target dirs when calling dh_shlibdeps. + * Stop shipping unstripped binaries with the final release. Closes: #894014. + + -- Matthias Klose Tue, 29 May 2018 14:34:37 +0200 + +gcc-8 (8.1.0-3) unstable; urgency=medium + + * Update to SVN 20180512 (r260194) from the gcc-8-branch. + - Fix PR ipa/85655, PR target/85733 (ARM), PR target/85606 (ARM), + PR fortran/70870, PR fortran/85521, PR fortran/85687, PR fortran/68846, + PR fortran/70864. + * Fix name of the g++ multiarch include directory. Closes: #898323. + * Fix PR sanitizer/85556, attribute no_sanitize does not accept multiple + options; taken from the trunk. Closes: #891489. + + -- Matthias Klose Sat, 12 May 2018 10:36:05 -0400 + +gcc-8 (8.1.0-2) unstable; urgency=medium + + * Update to SVN 20180510 (r260147) from the gcc-8-branch. + - Fix PR go/85630, PR target/85519 (nvptx), PR libstdc++/85642, + PR libstdc++/84769, PR libstdc++/85632, PR libstdc++/80506, + PR target/85512 (AArch64), PR c++/85305, PR ada/85635, PR ada/85540, + PR rtl-optimization/85638, PR middle-end/85588, PR middle-end/85588, + PR tree-optimization/85615, PR middle-end/85567, PR target/85658 (ARM), + PR tree-optimization/85597, PR middle-end/85627, PR c++/85659, + PR c++/85706, PR c++/85695, PR c++/85646, PR c++/85618, PR fortran/85507. + * Don't configure with --with-as and --with-ld, but search the triplet + prefixed as and ld in the same places as as/ld. Closes: #896057, #897896. + * Enable decimal float support on kfreebsd-amd64. Closes: #897416. + + -- Matthias Klose Thu, 10 May 2018 20:43:42 -0400 + +gcc-8 (8.1.0-1) unstable; urgency=medium + + * GCC 8.1.0 release. + * Stop providing the 8.x.y symlinks in gcc_lib_dir and incluce/c++. + * Configure powerpcspe with --enable-obsolete, will be gone with GCC 9. + * Build libmpx libraries when not building the common libs. + * Update NEWS files for GCC 8.1. + + -- Matthias Klose Wed, 02 May 2018 11:43:46 +0200 + +gcc-8 (8-20180425-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180425 (r259628). + + [ Matthias Klose ] + * Update nvptx-newlib to 20180424. + * Use the binutils in the build chroot if present. + * Don't use dwz for GCC backports. + * Install the movdirintrin.h header file. + + [ Aurelien Jarno ] + * Enable logwatch on riscv64. + + -- Matthias Klose Wed, 25 Apr 2018 06:56:58 +0200 + +gcc-8 (8-20180414-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180414 (r259383). + + [ Matthias Klose ] + * Update GDC to 20180410. + * Don't install i586 symlinks anymore for i386 builds in sid. + * Fix zlib-dev dependencies for the libphobos cross multilib packages. + * Fix dependency generation for libatomic and libquadmath cross packages. + * Use triplet-prefixed as and ld (Helmut Grohne). Closes: #895251. + * Link libasan, liblsan, libubsan always with --no-as-needed. LP: #1762683. + * Use --push-state --as-needed and --pop-state instead of --as-needed and + --no-as-needed for linking libgcc. + * Update the gcc-foffload-default patch. LP: #1721355. + + [ Svante Signell ] + * Reintroduce libgo patches for hurd-i386. Closes: #894080. + + -- Matthias Klose Sat, 14 Apr 2018 07:10:01 +0200 + +gcc-8 (8-20180402-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180402 (r259004). + * Build a native compiler with a cross directory layout using the + FORCE_CROSS_LAYOUT environment variable. + + -- Matthias Klose Mon, 02 Apr 2018 10:09:27 +0200 + +gcc-8 (8-20180331-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180331 (r258989). + - Fix PR/libstdc++/85040, std::less fails when operator< is + overloaded. Closes: #893517. + - Fix PR/target 84148, CET shouldn't be enabled in 32-bit run-time + libraries by default. Closes: #890092. + + [ Samuel Thibault ] + * Fix disabling go on hurd-i386 for now. + + [ Matthias Klose ] + * gdc: Link with the shared libphobos library by default. + * Fix control file generation for nolang=biarch builds (Helmut Grohne). + Closes: #891289. + * Simplify architecture to gnu-type mapping (Helmut Grohne). Closes: #893493. + + -- Matthias Klose Sat, 31 Mar 2018 15:14:44 +0800 + +gcc-8 (8-20180321-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180321 (r258712). + - Fix PR sanitizer/84761. Addresses: #892096. + * Update GDC to 20180320. + * Reenable building gdc. + + -- Matthias Klose Wed, 21 Mar 2018 19:47:27 +0800 + +gcc-8 (8-20180319-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180319 (r258631). + + [ Aurelien Jarno ] + * Default to PIE on riscv64. + * Temporarily do not build-depend on gdb on riscv64. + + -- Matthias Klose Mon, 19 Mar 2018 02:18:29 +0800 + +gcc-8 (8-20180312-2) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180312 (r258445). + * Update GDC to 20180311. + + [ Matthias Klose ] + * Fix typo in libasan and lib32asan symbols files for s390x. + + [ Aurelien Jarno ] + * Disable gnat on riscv64. + * Backport RISC-V libffi support from upstream. + + -- Matthias Klose Mon, 12 Mar 2018 12:33:10 +0100 + +gcc-8 (8-20180310-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180310 (r258410). + * Build libasan and libubsan packages on s390x. + * Update libasan symbols files for s390x. + + -- Matthias Klose Sat, 10 Mar 2018 10:54:02 +0700 + +gcc-8 (8-20180308-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180308 (r258348). + * Update GDC to 20180304. + + [ Matthias Klose ] + * Fix cross builds building without "common" libraries. + * Fix cross-building libgnat on armel, when not building the common libraries. + * Remove the go patches for the Hurd. Unmaintained. + * Update libcc1 symbols file. + * Install more intrinsic header files. + + [ Aurelien Jarno ] + * Configure s390x build with --with-arch=z196 on Debian. + * Drop libgo-s390x-default-isa.diff patch. + * Disable multilib on riscv64. + * Update gcc-as-needed.diff, gcc-hash-style-both.diff and + gcc-hash-style-gnu.diff for riscv64. + * Update gcc-multiarch.diff for riscv64. + + [ Karsten Merker ] + * Force the riscv64 ISA to rv64imafdc and ABI to lp64d. + + -- Matthias Klose Thu, 08 Mar 2018 14:17:37 +0700 + +gcc-8 (8-20180218-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180208 (r257477). + * Update GDC to 20180211. + * Store basename only in gfortran .mod files. Addresses: #889133. + * Disable go on the hurd, patches are out of date. + * Configure with --disable-libquadmath-support when not explicitly enabled. + * For armel multilib builds, explicitly set architecture and cpu for the + hard-float multilib. + + -- Matthias Klose Sun, 18 Feb 2018 16:11:11 +0700 + +gcc-8 (8-20180207-2) unstable; urgency=medium + + * Revert the fix for PR target/84145. + * Override patch-file-present-but-not-mentioned-in-series lintian warning. + + -- Matthias Klose Wed, 07 Feb 2018 13:09:23 +0100 + +gcc-8 (8-20180207-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180207 (r257435). + * Update GDC to 20180204. + * Refresh patches. + * Disable go on m68k again. Closes: #886103. + * Ignore bootstrap comparison failures in gcc/d on alpha. Addresses: #888951. + * Include amo.h header for Power architectures. + * Include arm_cmse.h header for ARM32 architectures. + * Update tsan symbols file arm64. + + -- Matthias Klose Wed, 07 Feb 2018 01:34:14 +0100 + +gcc-8 (8-20180130-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180130 (r257194). + * Update GDC to 20180130. + + -- Matthias Klose Tue, 30 Jan 2018 18:49:51 +0100 + +gcc-8 (8-20180123-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180123 (r257004). + * Update GDC to 20180123. + * Install the msa.h header for mips targets (YunQiang Su). Addresses: #887066. + * Fix mipsen r6 biarch configs (YunQiang Su). Closes: #886976. + + -- Matthias Klose Tue, 23 Jan 2018 23:10:51 +0100 + +gcc-8 (8-20180110-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180110 (r256425). + - Go 1.10 beta1 merged, bumping libgo soname. + * Update GDC to 20180108. + * debian/rules2: Fix typo for N32 conditions (YunQiang Su). Closes: #886459. + * More libffi mips r6 updates (YunQiang Su). Addresses: #886201. + * Default to PIE on the hurd (Samuel Thibault). Addresses: #885056. + * Use internal libunwind for ia64 cross-builds. Addresses: #885931. + * Strip -z,defs from linker options for internal libunwind (James Clarke). + Addresses: #885937. + * Fix rtlibs stage build with debhelper 10.9.1 (Helmut Grohne). + Closes: #879054. + + -- Matthias Klose Wed, 10 Jan 2018 12:23:12 +0100 + +gcc-8 (8-20171229-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171229. + * Update GDC to 20171227. + * Build the nvptx offload compiler again. + + -- Matthias Klose Fri, 29 Dec 2017 22:16:04 +0100 + +gcc-8 (8-20171223-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171223. + * Update GDC to 20171223. + * Don't build the nvptx offload compiler for now, see PR target/83524. + + -- Matthias Klose Sat, 23 Dec 2017 13:08:14 +0100 + +gcc-8 (8-20171215-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171215. + * Update GDC to 20171213. + * Move the .gox files into the gccgo packages. Addresses: #883136. + * libffi: mips/n32.S: disable .set mips4 on mips r6 (YunQiang Su). + * Fix shlibs search path for mips64 cross targets. Addresses: #883988. + * Set the armel port baseline to armv5te. Closes: #882174. + + -- Matthias Klose Fri, 15 Dec 2017 18:30:46 +0100 + +gcc-8 (8-20171209-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171209. + * Add more header files for builtins. Closes: #883423. + * Re-enable gccgo on m68k. Addresses: #883794. + + -- Matthias Klose Sat, 09 Dec 2017 21:23:08 +0100 + +gcc-8 (8-20171128-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171128. + + [ Matthias Klose ] + * Don't revert the fix for PR target/55947, fixed for GCC 8. + * Update libgfortran symbol versioning. + + [ Nicolas Boulenguez ] + * Fix the gnat bootstrap. + + -- Matthias Klose Tue, 28 Nov 2017 07:40:23 +0100 + +gcc-8 (8-20171122-1) experimental; urgency=medium + + [ Matthias Klose ] + * GCC 8 snapshot, taken from the trunk 20171122. + * Update GDC to 20171118. + * Port libgo to the Hurd (Svante Signell). + * Add support for a plethora of mips r6 packages (YunQiang Su). + * Remove the libcilkrts packaging bits. + * Remove libgphobos symbols files. + + [ Svante Signell ] + * Do not enable go on GNU/kFreeBSD. + + -- Matthias Klose Wed, 22 Nov 2017 14:02:35 +0100 + +gcc-8 (8-20171108-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171108. + * Update GDC to 20171106. Closes: #880548. + * libgcc-dev: Install the liblsan_preinit.o file. + * Compress debug symbols for compiler binaries with dwz. + + -- Matthias Klose Wed, 08 Nov 2017 20:00:30 +0100 + +gcc-8 (8-20171102-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171102. + * Bump libunwind (build-)dependency for ia64. Addresses: #879959. + * Drop the autogen build dependency. + * Install the gfniintrin.h header file. + * libgcc and libstdc++ symbols files updates for mipsn32. + * Remove the gcc-mips64-stack-spilling patch, applied upstream. + * Update libasan symbols files. + + -- Matthias Klose Thu, 02 Nov 2017 01:43:34 +0100 + +gcc-8 (8-20171031-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171031. + * Install cetintrin.h header. Closes: #879740. + * Update gnat patches (YunQiang Su). Closes: #879985. + * Build libphobos runtime library on x86 architectures again. + * Fix typo in libx32stdc++6-8-dbg conflicts. Closes: #879883. + + -- Matthias Klose Tue, 31 Oct 2017 02:22:07 +0100 + +gcc-8 (8-20171023-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171023. + * Mask __float128 from CUDA compilers. LP: #1717257. + * Update the gdc build support. + * Don't use quadmath on powerpc and ppc64. + * Bump asan and ubsan sonames. + * Adjust sanitizer symbols for the libsanitizer upstream merge. + * Install the gcov.h header file. + * Do the extra/optional dance ... + * Override hardening-no-pie lintian warnings for compiler executables. + + -- Matthias Klose Mon, 23 Oct 2017 10:57:54 +0200 + +gcc-8 (8-20171016-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171016. + * Update nvptx-newlib to 20171010. + * Fix lsan/tsan symbols files for arm64 and ppc64el. + * Add missing conflicts with GCC 7 packages. Closes: #877441. + * Fix builds without hppa64 cross compiler and new debhelper. See: #877589. + * Fix build dependency on realpath. + * Build the nvptx offload compiler again. + * Update symbols files. + * Fix build dependency on realpath. + * Set QUILT_PATCH_OPTS='-E' for applying patches. + + -- Matthias Klose Mon, 16 Oct 2017 14:56:04 +0200 + +gcc-8 (8-20170923-1) experimental; urgency=medium + + * GCC 8 snapshot. + * Disable Ada and D for a first build. + + -- Matthias Klose Tue, 26 Sep 2017 23:44:57 +0200 + +gcc-7 (7.2.0-7) unstable; urgency=medium + + * Update to SVN 20170923 (r253114) from the gcc-7-branch. + - Fix PR libstdc++/79162, PR libstdc++/79162, PR libstdc++/82262, + PR libstdc++/82254, PR target/81996 (PPC), PR target/71951 (AArch64), + PR sanitizer/81929. + * Fix PR go/82284, taken from the trunk. Closes: #876353. + + -- Matthias Klose Sat, 23 Sep 2017 11:31:21 +0200 + +gcc-7 (7.2.0-6) unstable; urgency=medium + + * Update to SVN 20170920 (r253002) from the gcc-7-branch. + - Fix PR target/82112 (PPC), PR c++/81355, PR tree-optimization/82084, + PR tree-optimization/82108, PR target/81325 (PPC), PR c++/81236, + PR c++/80767, PR c++/82030, PR c++/80935, PR c++/81671, PR c++/81525, + PR c++/81314, PR libgfortran/78387. + * Fix fortran cross compiler build with debhelper 10.9. Closes: #876246. + * Strip the compiler binaries again. Closes: #872672. + * Bump binutils dependency to 2.29.1 for sid/buster. + + -- Matthias Klose Wed, 20 Sep 2017 11:13:31 +0200 + +gcc-7 (7.2.0-5) unstable; urgency=medium + + * Update to SVN 20170915 (r252791) from the gcc-7-branch. + - Fix PR c/81687, PR c/45784, PR c++/81852, PR target/82181 (xtensa), + PR target/80695 (PPC), PR target/81988 (SPARC), PR middle-end/81768, + PR sanitizer/81923, PR target/81621, PR driver/81650, + PR middle-end/81052, PR tree-optimization/81987, PR bootstrap/81926, + PR libstdc++/79162, PR libstdc++/81468, PR libstdc++/81835, + PR libstdc++/70483, PR libstdc++/70483, PR target/81833 (PPC), + PR other/39851, PR ipa/81128, PR inline-asm/82001, PR c++/81355, + PR tree-opt/81696. + * Enable libgo tests and rebuilds with make -C (Svante Signell). + Closes: #873929. + * Fix PR sanitizer/77631, support separate debug info in libbacktrace. + * Update the Linaro support to the 7-2017.09 snapshot. + + -- Matthias Klose Fri, 15 Sep 2017 12:15:21 +0200 + +gcc-7 (7.2.0-4) unstable; urgency=medium + + * Update to SVN 20170906 (r251753) from the gcc-7-branch. + - Fix PR c++/82039, PR libstdc++/81912, PR libstdc++/81891, + PR libstdc++/81599, PR libstdc++/81338, PR tree-optimization/81503, + PR ada/79542, PR ada/62235, PR fortran/81770. + * Fix PR target/81833 (PPC), taken from the trunk. Closes: #871565. + + -- Matthias Klose Wed, 06 Sep 2017 10:38:05 +0200 + +gcc-7 (7.2.0-3) unstable; urgency=high + + * Update to SVN 20170901 (r251583) from the gcc-7-branch. + - Fix PR target/81504 (PPC), PR c++/82040. + * Apply proposed patch for PR target/81803 (James Cowgill), conditionally + for mips* targets. Closes: #871514. + * Bump standards version. + + -- Matthias Klose Sat, 02 Sep 2017 13:55:18 +0200 + +gcc-7 (7.2.0-2) unstable; urgency=medium + + * Update to SVN 20170830 (r251446) from the gcc-7-branch. + - Fix PR target/72804 (PPC), PR target/80210 (PPC), PR target/81910 (AVR), + PR target/79883 (AVR), PR fortran/81296, PR fortran/80164, + PR target/81593 (PPC), PR target/81170 (PPC), PR target/81295 (PPC), + PR tree-optimization/81977, PR debug/81993 (closes: #873609), + PR middle-end/81088, PR middle-end/81065, PR sanitizer/80932, + PR middle-end/81884, PR tree-optimization/81181, + PR tree-optimization/81723, PR target/81921 (x86), PR c++/81607. + * Update the Linaro support to the 7-2017.08 snapshot. + * Restore configuring with --with-mode=thumb on armhf. Closes: #873584. + * Default to PIE on powerpc again, now that PR target/81170 and + PR target/81295 are fixed. Closes: #856224. + + -- Matthias Klose Wed, 30 Aug 2017 11:47:42 +0200 + +gcc-7 (7.2.0-1) unstable; urgency=medium + + * GCC 7.2.0 release. + * Update libgcc1 symbols file for s390x. + * Apply proposed patch for PR driver/81829. Closes: #853537. + + -- Matthias Klose Fri, 18 Aug 2017 18:34:45 +0200 + +gcc-7 (7.1.0-13) unstable; urgency=medium + + * GCC 7.2 release candidate 2. + * Don't build the gc enabled libobjc for cross compilers. Closes: #870895. + * Configure cross-build-native builds with --program-prefix (Adrian + Glaubitz). Closes: #871034. + * Update build dependencies for powerpcspe. Closes: #868186. + * Fix PR tree-optimization/81723, taken from the trunk. Closes: #853345. + + -- Matthias Klose Tue, 08 Aug 2017 11:12:56 -0400 + +gcc-7 (7.1.0-12) unstable; urgency=medium + + * GCC 7.2 release candidate 1. + * Update to SVN 20170803 (r250853) from the gcc-7-branch. + + -- Matthias Klose Thu, 03 Aug 2017 09:20:48 -0400 + +gcc-7 (7.1.0-11) unstable; urgency=medium + + * Update to SVN 20170731 (r250749) from the gcc-7-branch. + + [ Matthias Klose ] + * Update sanitizer symbols for ppc64 and sparc64. + + [ Nicolas Boulenguez ] + * Only build gnatvsn as a native library. + + -- Matthias Klose Mon, 24 Jul 2017 13:41:34 +0200 + +gcc-7 (7.1.0-10) unstable; urgency=medium + + * Update to SVN 20170722 (r250453) from the gcc-7-branch. + + [ Nicolas Boulenguez ] + * libgnatvsn: embed xutil rident for version 2017 of asis package. + + [ Matthias Klose ] + * Fix gnat cross build on m68k (Adrian Glaubitz). Closes: #862927. + * Enable gnat cross build on m68k. Closes: #868365. + * Update the Linaro support to the 7-2017.07 snapshot. + * Stop ignoring symbol mismatches for runtime libraries. + + [ Aurelien Jarno ] + * libgo-s390x-default-isa.diff: do not build libgo with -march=z196, + use the default ISA instead. + + -- Matthias Klose Sat, 22 Jul 2017 15:06:36 +0200 + +gcc-7 (7.1.0-9) unstable; urgency=medium + + * Update to SVN 20170705 (r250006) from the gcc-7-branch. + + [ Matthias Klose ] + * gcc-linaro-revert-r49596.diff: fix build for the linaro branch. + * Don't configure powerpc with --enable-default-pie, fails to build. + See #856224, PR target/81295. + + [ Nicolas Boulenguez ] + * ada-gcc-name.diff: unpatch gnatchop. Addresses: #856274. + * Link libgnat with libatomic on armel. Closes: #861734. + * libgnat-dev: use multiarch paths in project and to install .ali files. + * Build Ada on armel, kfreebsd-*, hurd-i386; #86173[457] are closed. + + -- Matthias Klose Wed, 05 Jul 2017 19:21:55 +0200 + +gcc-7 (7.1.0-8) unstable; urgency=medium + + * Update to SVN 20170629 (r249793) from the gcc-7-branch. + + [ Matthias Klose ] + * Move the liblto_plugin from the cpp to the gcc package. + * libstdc++6: Add more Breaks to smoothen upgrades from jessie to stretch. + Addresses: #863845, #863745. + * Don't provide libobjc_gc symlinks for the libobjc multilib packages. + * Configure with --enable-default-pie on ppc64 (Adrian Glaubitz) and + powerpc (Mathieu Malaterre). Addresses: #856224. + + [ Nicolas Boulenguez ] + * Update ada/confirm_debian_bugs.py for gcc-7. + * Drop ada-driver-check.diff, the problem is unreproducible. + * Stop symlinking gcc-7-7 -> gcc-7. See #856274 and #814977. + * gnatmake: compile once even with SOURCE_DATE_EPOCH. Closes: #866029. + + -- Matthias Klose Thu, 29 Jun 2017 17:36:03 +0200 + +gcc-7 (7.1.0-7) unstable; urgency=medium + + * Update to SVN 20170618 (r249347) from the gcc-7-branch. + + [ Matthias Klose ] + * Don't build libada with -O3 (ftbfs on ppc64el). + * Update sanitizer symbol files (Helmut Grohne). Closes: #864835. + + [ Aurelien Jarno ] + * Remove proposed patch for PR65618, the issue has been fixed upstream + another way. + + [ Nicolas Boulenguez ] + * Ada: link system.ads to system-freebsd.ads on hurd and *freebsd + system-freebsd-x86.ads does not exist anymore. Closes: #861735, #861737. + * Ada: prevent parallel gnatmake invokations for gnattools. Closes: #857831. + * Drop generated and obsolete debian/source.lintian-overrides. + * Drop debian/relink, never executed and redundant with ada patches. + * Ada: Drop dpkg-buildflags usage in patches. Closes: #863289. + * ada: Drop references to obsolete termio-h.diff. Closes: #845159. + * ada-749574.diff: replace work-around with fix and forward it. + * ada-kfreebsd.diff: reduce a lot thanks to Ada2012 syntax. + * ada-link-lib.diff: remove dubious parts. + + -- Matthias Klose Sun, 18 Jun 2017 15:31:39 +0200 + +gcc-7 (7.1.0-6) experimental; urgency=medium + + * Update to SVN 20170522 (r248347) from the gcc-7-branch. + - Fix PR libstdc++/80796, PR libstdc++/80478, PR libstdc++/80761, + PR target/80799 (x86), PR ada/80784, PR fortran/78659, PR fortran/80752, + PR libgfortran/80727. + + [ Matthias Klose ] + * Re-add unwind support on kfreebsd-amd64 (James Clarke). + * Work around #814977 (gnat calling gcc-7-7) by providing a gcc-7-7 + symlink. + * Fix gnat build dependencies on x32. + * Build gnat on mips64 and powerpcspe. + * Update the Linaro support to the 7-2017.05 snapshot. + * Fix libmpx dependency generation for cross builds. + * Build again gnat cross compilers on 32bit archs targeting 64bit targets. + + [ Nicolas Boulenguez ] + * Remove ada-gnattools-noparallel patch, apparently fixed. Closes: #857831. + * Reduce diff with upstream in ada-gnattools-cross patch. + * debian/rules2: Simplify build flags transmission. + * Append build flags from dpkg during Ada target builds. + + -- Matthias Klose Mon, 22 May 2017 12:43:09 -0700 + +gcc-7 (7.1.0-5) experimental; urgency=medium + + * Update to SVN 20170514 (r248033) from the gcc-7-branch. + * Disable offload compilers for snapshot builds. + * Build libgo when not building common libs. + * Fix building libgfortran and libgphobos when building without common libs. + * Build gnat on x32. + + -- Matthias Klose Sun, 14 May 2017 08:50:34 -0700 + +gcc-7 (7.1.0-4) experimental; urgency=medium + + * Update to SVN 20170505 (r247630) from the gcc-7-branch. + * Add sh3 support to gcc-multiarch patch. Closes: #861760. + * Remove libquadmath/gdtoa license from debian/copyright (files removed). + * Fix gdc build on sh4 (sh5 support was removed upstream). + * Disable gnat on KFreeBSD (see #861737) and the Hurd (see #861735) for now. + * Disable running the testsuite on KFreeBSD and the Hurd, hanging on + the buildds. + + -- Matthias Klose Fri, 05 May 2017 11:27:27 +0200 + +gcc-7 (7.1.0-3) experimental; urgency=medium + + * Update to SVN 20170503 (r247549) from the gcc-7-branch. + * Fix gdc build on sparc. + * Update the gdc-cross-install-location patch for GCC 7. + * Bump libgphobos soname. + * dpkg-buildflags stopped fiddling around with spec files; remove + the code removing and warning about dpkg's specs. + * Don't build the native gnat on armel. See issue #861734. + + -- Matthias Klose Wed, 03 May 2017 16:51:15 +0200 + +gcc-7 (7.1.0-2) experimental; urgency=medium + + * Update the disable-gdc-tests patch for GCC 7.1. + + -- Matthias Klose Tue, 02 May 2017 18:35:14 +0200 + +gcc-7 (7.1.0-1) experimental; urgency=medium + + * GCC 7.1.0 release. + * Update NEWS.html and NEWS.gcc. + * Update gdc to the gdc-7 branch 20170502. + * Add multiarch bits for non-glibc architectures (musl, uclibc) (Helmut + Grohne). Closes: #861588. + * Fix dependency on gcc-base package for rtlibs stage build (Helmut Grohne). + Closes: #859938. + + -- Matthias Klose Tue, 02 May 2017 18:07:07 +0200 + +gcc-7 (7-20170407-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170407. + * Install gcov-dump and gcov-tool manual pages. + + -- Matthias Klose Fri, 07 Apr 2017 13:16:00 +0200 + +gcc-7 (7-20170316-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170316. + * Install the gcov-dump utility. + * Allow to use lld with -fuse-ld=ld.lld. + * Build gnattools sequentially (fails with parallel build). See #857831. + * Add profile to the autogen build dependency. + * Re-add the generated Makefile.in changes to the gdc-libphobos-build patch. + + -- Matthias Klose Thu, 16 Mar 2017 12:34:18 +0100 + +gcc-7 (7-20170314-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170314. + + [ Matthias Klose ] + * Bump binutils version requirement to 2.28. + * Fix libcc1.so symlink for cross compilers. Addresses: #856875. + * Fix base package name for rtlibs stage build (Helmut Grohne). + Closes: #857074. + * Update the cross-install-location patch (Helmut Grohne). Closes: #855565. + * Fix symlinks to man pages in the hppa64 package. Addresses: #857583. + * Don't ship the gnatgcc manpage symlink when building GFDL packages. + Addresses: #857384. + * Allow bootstrapping with libc headers installed in multiarch location. + (Helmut Grohne). Closes: #857535 + * gccbrig: Depend on hsail-tools. + + [ Nicolas Boulenguez ] + * Create the libgnatsvn packages again. Closes: #857606. + * Replace libgnat-BV.overrides with a fixed command. + * Install gnatvsn.gpr project into /u/s/gpr instead of + /u/s/ada/adainclude. Debian is migrating to GPRbuild's upstream layout. + * Avoid hardcoding the version in the ada-gcc-name patch. + * Reorganize Ada patches. See #857606 for details. + + -- Matthias Klose Tue, 14 Mar 2017 10:42:24 +0100 + +gcc-7 (7-20170302-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170302. + + [ Matthias Klose ] + * Update gdc to trunk 20170227. + * Update libcc1 symbols file. + * Bump binutils version requirement. + * Allow to disable brig in DEB_BUILD_OPTIONS. Closes: #856452. + * Build the nvptx offload compilers. + * Add the newlib copyright, used for the gcc-7-offload-nvptx package. + * Install the libcp1plugin. + * Fix the installation directory of the ada-sjlj includes and libraries. + + [ Nicolas Boulenguez ] + * Use SOURCE_DATE_EPOCH for reproducible ALI timestamps. Closes: #856042. + * Remove obsolete references to libgnatprj, but keep existing + references to libgnatvsn as it will be restored. Closes: #844367. + * Drop obsolete and unapplied ada-default-project-path.diff. + + -- Matthias Klose Thu, 02 Mar 2017 10:12:34 +0100 + +gcc-7 (7-20170226-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170226. + + -- Matthias Klose Sun, 26 Feb 2017 17:00:48 +0100 + +gcc-7 (7-20170221-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170221. + * Update gdc to trunk 20170221. + + [ Matthias Klose ] + * Fix some hppa64 related build issues. Addresses: #853023. + * Allow setting offload targets by OFFLOAD_TARGET_DEFAULT. + * Again, disable go on m68k. Closes: #853906. + * Configure with --enable-default-pie on sparc and sparc64 (James Clarke). + Addresses: #854090. + * Configure with --enable-default-pie on kfreebsd-* (Steven Chamberlain). + * Build gccbrig and the libhsail-rt library for i386. + * Configure staged builds with --disable-libmpx and --disable-libhsail-rt. + * Fix target architecture for sparc non-multilib builds (Adrian Glaubitz). + Addresses: #855197. + * Bump binutils version requirement. + + [ Aurelien Jarno ] + * Disable lxc1/sxc1 instruction on mips and mipsel. + * Disable madd4 instructions on mipsel, mips64el and mipsn32el. + + -- Matthias Klose Tue, 21 Feb 2017 14:54:12 +0100 + +gcc-7 (7-20170129-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170129. + * Fix removing the RUNPATH from the asan, tsan, ubsan, cilkrts, gfortran + and gphobos runtime libraries. + * Let the gnatgcc symlinks point to the versioned names. Addresses: #839209. + * Build the BRIG frontend on amd64. + * Install new intrinsics headers. Closes: #852551. + * libgo version bumped to 11. + * Package gccbrig and the libhsail-rt library. + + -- Matthias Klose Sun, 29 Jan 2017 13:51:35 +0100 + +gcc-7 (7-20170121-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170121. + * Configure --with-gcc-major-version-only, drop the gcc-base-version, + gccgo-version and gdc-base-version patches. + * Adjust the g++-multiarch-incdir patch for reverted upstream patch, + causing bootstrap regression (PR 78880). Closes: #852104. + + -- Matthias Klose Sat, 21 Jan 2017 21:57:22 +0100 + +gcc-7 (7-20170118-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170118. + * Always configure sparc builds --with-cpu-32=ultrasparc (James Clarke). + * Enable gccgo on m68k (John Paul Adrian Glaubitz). Addresses: #850749. + * Install the unprefixed man pages for gcc-ar, -nm and ranlib. + Closes: #851698. + + -- Matthias Klose Wed, 18 Jan 2017 22:41:11 +0100 + +gcc-7 (7-20161230-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161230. + * Update gdc to trunk 20161229. Closes: #844704. + * Build the cilk runtime on armel, armhf, sparc and sparc64. + * Use --push-state/--pop-state for gold as well when linking libtsan. + * In GCC ICE dumps, prefix each line with the PID of the driver. + * Apply proposed patch for PR target/78748. + * Apply proposed patch for PR libstdc++/64735. + * Don't mark libphobos multilib packages as M-A: same. + * Configure libphobos builds with --with-target-system-zlib. + * Ignore dpkg's pie specs when pie is not enabled. Addresses: #848129. + * Drop m68k specific ada patches. Closes: #846872. + + -- Matthias Klose Fri, 30 Dec 2016 05:19:15 +0100 + +gcc-7 (7-20161201-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161201. + + * Install missing vecintrin.h header on s390x. + * Install missing avx512 intrinsics headers on x86*. Closes: #846075. + + -- Matthias Klose Thu, 01 Dec 2016 14:38:26 +0100 + +gcc-7 (7-20161125-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161125. + + [ Matthias Klose ] + * Update libgphobos symbol files. + * libphobos: Fix ARM32 multilib detection for system zlib. + * Update libgphobos symbols files for ARM32 targets. + * Build the GC enabled libobjc using the system libgc when available + * Mark libgphobos symbols changing with the file location (sic!) as optional. + * Add pkg-config to the build dependencies. + * Drop the work around for PR libstdc++/65913. + * gdc: Link with the shared libgphobos runtime by default. + * Fix PR middle-end/78501, proposed patch. + * Fix dependency generation for libgphobos multilib builds. + * Drop the ada-revert-pr63225 patch, only needed for libgnatvsn. + * Always apply the ada patches. + + [ YunQiang Su ] + * Update gnat patches for GCC 7, stop building libgnatvsn and libgnatprj. + Addresses: #844367. + + -- Matthias Klose Fri, 25 Nov 2016 12:41:07 +0100 + +gcc-7 (7-20161116-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161116. + * Build shared phobos runtime libraries (not yet enabled by default). + * Add symbols for libobjc_gc library. + + -- Matthias Klose Wed, 16 Nov 2016 19:16:39 +0100 + +gcc-7 (7-20161115-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161115. + * More symbol files updates. + * Update gdc to the trunk 20161113. + * Update conflicts with GCC 6 packages. Closes: #844296. + + -- Matthias Klose Tue, 15 Nov 2016 13:02:02 +0100 + +gcc-7 (7-20161112-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161112. + * Remove gij/gcj packages, removed upstream. + * Don't build gdc and gnat for now. + + -- Matthias Klose Sat, 12 Nov 2016 11:17:17 +0100 + +gcc-6 (6.2.0-13) unstable; urgency=medium + + * Update to SVN 20161109 (r241998, 6.2.1) from the gcc-6-branch. + - Fix PR c/71115, PR target/78229 (closes: #843379), + PR tree-optimization/77768, PR c++/78039 (closes: #841316), + PR libgcc/78064, PR driver/78206. + * Fix using the gcc-6-source package (Stephen Kitt). Closes: #843476. + * Fix PR target/77822 (AArch64), taken from the trunk. Closes: #839249. + * Fix PR target/77822 (s390x), proposed patch. + * Update libiberty to the trunk 20161108. Addresses security issues: + CVE-2016-6131, CVE-2016-4493, CVE-2016-4492, CVE-2016-4490, + CVE-2016-4489, CVE-2016-4488, CVE-2016-4487, CVE-2016-2226. + + -- Matthias Klose Wed, 09 Nov 2016 20:42:53 +0100 + +gcc-6 (6.2.0-11) unstable; urgency=medium + + * Update to SVN 20161103 (r241817, 6.2.1) from the gcc-6-branch. + - Fix PR debug/77773, PR middle-end/72747, PR tree-optimization/78047, + PR tree-optimization/77879, PR tree-optimization/77839, + PR tree-optimization/77745, PR tree-optimization/77648, + PR target/78166 (PA), PR rtl-optimization/78038, PR middle-end/78128, + PR middle-end/71002, PR fortran/69544, PR fortran/78178, + PR fortran/71902, PR fortran/67219, PR fortran/71891, PR lto/78129, + PR libgfortran/78123. + * Fix symlinks for gcj manual pages. Closes: #842407. + * Fix ICE in tree_to_shwi, Linaro issue #2575. + + -- Matthias Klose Thu, 03 Nov 2016 14:10:24 +0100 + +gcc-6 (6.2.0-10) unstable; urgency=medium + + * Update to SVN 20161027 (r241619, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77288, PR libstdc++/77727, PR libstdc++/78052, + PR tree-optimization/77550, PR tree-optimization/77916, + PR fortran/71895, PR fortran/77763, PR fortran/61420, PR fortran/78013, + PR fortran/78021, PR fortran/72832, PR fortran/78092, PR fortran/78108, + PR target/78057 (x86), PR target/78037 (x86). + * Include go-relocation-test-gcc620-sparc64.obj.uue to fix libgo's + debug/elf TestDWARFRelocations test case (James Clarke). + * Reapply fix for PR c++/71912, apply proposed fix for PR c++/78039. + Closes: #841292. + * Don't install alternatives for go and gofmt. The preferred way to do that + is to install the golang-any package. + * For Debian builds, don't enable bind now by default when linking with pie + by default. + + -- Matthias Klose Thu, 27 Oct 2016 15:27:07 +0200 + +gcc-6 (6.2.0-9) unstable; urgency=medium + + * Regenerate the control file. + + -- Matthias Klose Thu, 20 Oct 2016 10:46:44 +0200 + +gcc-6 (6.2.0-8) unstable; urgency=medium + + * Update to SVN 20161019 (r241346, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77990, PR target/77991 (x86). + * Install arm_fp16.h header on arm* architectures for Linaro builds. + * Backport upstream revisions from trunk (James Clarke). Closes: #840574. + - r240457 (add getrandom for MIPS/SPARC) + - r241051 (fix getrandom on sparc64 and clone on sparc*) + - r241072 (make rawClone no_split_stack) + - r241084 (don't use pt_regs; unnecessary, and seemingly not defined by + the included headers on arm64) + - r241171 (sparc64 relocations, e1fc2925 in go master, now also in + gofrontend/gccgo) + * Revert fix for PR c++/71912, causing PR c++/78039. Addresses: #841292. + + -- Matthias Klose Wed, 19 Oct 2016 08:57:23 +0200 + +gcc-6 (6.2.0-7) unstable; urgency=medium + + * Update to SVN 20161018 (r241301, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77987, PR libstdc++/77322, PR libstdc++/72820, + PR libstdc++/77994, PR tree-optimization/77937, PR c++/71912, + PR tree-optimization/77937, PR tree-optimization/77943, + PR bootstrap/77995, PR fortran/77978, PR fortran/77915, PR fortran/77942. + + [ Matthias Klose ] + * Backport Mips go closure support, taken from libffi. Closes: #839132. + * Configure with --enable-default-pie and pass -z now when pie is enabled; + on amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el s390x. + Closes: #835148. + * Update the Linaro support to the 6-2016.10 snapshot. + + [ Aurelien Jarno ] + * Enable logwatch on mips64el. + + -- Matthias Klose Tue, 18 Oct 2016 13:53:00 +0200 + +gcc-6 (6.2.0-6) unstable; urgency=medium + + * Update to SVN 20161010 (r240906, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/68323, PR libstdc++/77794, PR libstdc++/77795, + PR libstdc++/77801, PR libgcc/77519, PR target/77756 (x86), + PR target/77670 (PPC), PR rtl-optimization/71709, PR c++/77804, + PR fortran/41922, PR fortran/60774, PR fortran/61318, PR fortran/68566, + PR fortran/69514, PR fortran/69867, PR fortran/69962, PR fortran/70006, + PR fortran/71067, PR fortran/71730, PR fortran/71799, PR fortran/71859, + PR fortran/71862, PR fortran/77260, PR fortran/77351, PR fortran/77372, + PR fortran/77380, PR fortran/77391, PR fortran/77420, PR fortran/77429, + PR fortran/77460, PR fortran/77506, PR fortran/77507, PR fortran/77612, + PR fortran/77694, PR libgfortran/77707, PR libstdc++/70101, + PR libstdc++/77864, PR libstdc++/70564, PR target/77874 (x86), + PR target/77759 (sparc), PR fortran/77406, PR fortran/58991, + PR fortran/58992. + * Really fix gij installation on hppa. Closes: #838111. + * Install alternatives for go and gofmt. Closes: #840190. + + -- Matthias Klose Mon, 10 Oct 2016 05:20:07 +0200 + +gcc-6 (6.2.0-5) unstable; urgency=medium + + * Update to SVN 20160927 (r240553, 6.2.1) from the gcc-6-branch. + - Fix PR sanitizer/77396, PR libstdc++/77645, PR libstdc++/77645, + PR target/77326 (AVR), PR target/77349 (PPC), PR middle-end/77594, + PR sanitizer/68260, PR fortran/77516, PR target/69255 (x86), + PR c++/77553, PR c++/77539, PR fortran/77500, PR c/77450, + PR middle-end/77436, PR tree-optimization/77514, PR middle-end/77544, + PR tree-optimization/77514, PR middle-end/77605, PR middle-end/77679, + PR tree-optimization/77621, PR target/77621 (x86), PR c++/71979. + * Fix gij installation on hppa. Closes: #838111. + * Fix PR rtl-optimization/71709, taken from the trunk. LP: #1628207. + * Apply workaround for PR libstdc++/77686. Addresses: #838438. + + -- Matthias Klose Wed, 28 Sep 2016 15:53:28 +0200 + +gcc-6 (6.2.0-4) unstable; urgency=medium + + * Update to SVN 20160914 (r240133, 6.2.1) from the gcc-6-branch. + - Fix PR rtl-optimization/77452, PR c++/77427. + * gcj: Depend on the ecj1 standalone binary. + * Configure native builds using --with-program-prefix. + * Fix ICE in gdc symbol mangling (Iain Buclaw). LP: #1620681. + * Backport from libffi trunk (Stefan Bühler): + - Always check for PaX MPROTECT on linux, make EMUTRAMP experimental. + - dlmmap_locked always needs locking as it always modifies execsize. + + -- Matthias Klose Thu, 15 Sep 2016 19:22:35 +0200 + +gcc-6 (6.2.0-3) unstable; urgency=medium + + * Update to SVN 20160901 (r239944, 6.2.1) from the gcc-6-branch. + - Fix PR fortran/71014, PR libstdc++/77395, PR tree-optimization/72866, + PR debug/77363, PR middle-end/77377, PR middle-end/77259, + PR target/71910 (cygwin), PR target/77281 (ARM), + PR tree-optimization/71077, PR tree-optimization/68542, PR fortran/77352, + PR fortran/77374, PR fortran/71014, PR fortran/69281. + * Fix setting the stage1 C++ compiler. + * gdc: Always link with -ldl when linking with -lgphobos. + Closes: #835255, #835757. + * Fix building D code with external C++ references. + + -- Matthias Klose Sun, 04 Sep 2016 12:38:47 +0200 + +gcc-6 (6.2.0-2) unstable; urgency=medium + + * Update to SVN 20160830 (r239868, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77334, PR tree-optimization/76783, + PR tree-optimization/72851, PR target/72867 (x86), PR middle-end/71700, + PR target/77403 (x86), PR target/77270 (x86), PR target/77270 (x86), + PR lto/70955, PR target/72863 (PPC), PR tree-optimization/76490, + PR fortran/77358. + * Call default_file_start from s390_asm_file_start, taken from the trunk. + * Update multiarch patches for mips* r6 (YunQiang Su). + * Fix install location of D header files for cross builds (YunQiang Su). + Closes: #835847. + * Fix PR c++/77379, taken from the trunk. + * Update the Linaro support to the 6-2016.08 snapshot. + + -- Matthias Klose Wed, 31 Aug 2016 12:28:38 +0200 + +gcc-6 (6.2.0-1) unstable; urgency=medium + + * GCC 6.2 release. + * Update gdc to the gdc-6 branch 20160822. + + -- Matthias Klose Mon, 22 Aug 2016 14:15:21 +0200 + +gcc-6 (6.1.1-12) unstable; urgency=medium + + * GCC 6.2 release candidate 1. + * Update to SVN 20160815 (r239482, 6.1.1) from the gcc-6-branch. + Fix PR target/71869 (PPC), PR target/72805 (x86), PR target/70677 (AVR), + PR c++/72415, PR sanitizer/71042, PR libstdc++/71964, PR libstdc++/70940, + PR c/67410, PR c/72816, PR driver/72765, PR debug/71906, + PR tree-optimization/73434, PR tree-optimization/72824, PR target/76342, + PR target/72843, PR c/71512, PR tree-optimization/71083, PR target/72819, + PR target/72853, PR tree-optimization/72824, PR ipa/71981, PR ipa/68273, + PR tree-optimization/71881, PR target/72802, PR target/72802, + PR rtl-optimization/71976, PR c++/71972, PR c++/72868, PR c++/73456, + PR c++/72800, PR c++/68724, PR debug/71906, PR fortran/71936, + PR fortran/72698, PR fortran/70524, PR fortran/71795, PR libgfortran/71123, + PR libgfortran/73142. + + [ Matthias Klose ] + * Fix running the libjava testsuite. + * Revert fix for PR target/55947, causing PR libstdc++/72813. LP: #1610220. + * Update the Linaro support to the 6-2016.07 snapshot. + + [ Aurelien Jarno ] + * Replace proposed fix for PR ipa/68273 by the corresponding patch taken + from trunk. + + -- Matthias Klose Mon, 15 Aug 2016 17:51:10 +0200 + +gcc-6 (6.1.1-11) unstable; urgency=medium + + * Update to SVN 20160802 (r238981, 6.1.1) from the gcc-6-branch. + - Fix PR target/72767 (AVR), PR target/71151 (AVR), PR c/7652, + PR target/71216 (PPC), PR target/72103 (PPC), PR c++/72457, PR c++/71576, + PR c++/71833, PR fortran/71883. + + [ Nicolas Boulenguez ] + * debian/ada/confirm_debian_bugs.py: Update for GCC 6. Closes: #832799. + + [ Matthias Klose ] + * Backport AArch64 Vulcan cost models (Dann Frazier). LP: #1603587. + + -- Matthias Klose Wed, 03 Aug 2016 21:53:37 +0200 + +gcc-6 (6.1.1-10) unstable; urgency=medium + + * Update to SVN 20160724 (r238695, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/71856, PR libstdc++/71320, PR c++/71214, + PR sanitizer/71953, PR fortran/71688, PR rtl-optimization/71916, + PR debug/71855, PR middle-end/71874, PR target/71493 (PPC), + PR rtl-optimization/71634, PR target/71733 (PPC), PR ipa/71624, + PR target/71805 (PPC), PR target/70098 (PPC), PR target/71763 (PPC), + PR middle-end/71758, PR tree-optimization/71823, PR middle-end/71606, + PR tree-optimization/71518, PR target/71806 (PPC), PR target/71720 (PPC), + PR middle-end/64516, PR tree-optimization/71264, PR middle-end/71423, + PR tree-optimization/71521, PR tree-optimization/71452, PR target/50739, + PR tree-optimization/71522, PR c++/55922, PR c++/63151, PR c++/70709, + PR c++/70778, PR c++/71738, PR c++/71350, PR c++/71748, PR c++/52746, + PR c++/69223, PR c++/71630, PR c++/71913, PR c++/71728, PR c++/71941, + PR c++/70822, PR c++/70106, PR c++/67565, PR c++/67579, PR c++/71843, + PR c++/70781, PR c++/71896, PR c++/71092, PR c++/71117, PR c++/71495, + PR c++/71511, PR c++/71513, PR c++/71604, PR c++/54430, PR c++/71711, + PR c++/71814, PR c++/71718, PR c++/70824, PR c++/71909, PR c++/71835, + PR c++/71828, PR c++/71822, PR c++/71871, PR c++/70869, PR c++/71054, + PR fortran/71807, PR fortran/70842, PR fortran/71764, PR fortran/71623, + PR fortran/71783. + + [ Matthias Klose ] + * Build-depend on gnat-6 instead of gnat-5 on development distros. + + [ Aurelien Jarno ] + * Replace libjava-mips64el-proposed.diff by the corresponding patch + taken from trunk. + + -- Matthias Klose Sun, 24 Jul 2016 19:42:10 +0200 + +gcc-6 (6.1.1-9) unstable; urgency=medium + + * Update to SVN 20160705 (r237999, 6.1.1) from the gcc-6-branch. + - Fix PR fortran/71717, PR libstdc++/71313, PR c/71685, PR c++/71739, + PR target/71670 (PPC), PR middle-end/71626, PR target/71559 (x86), + PR target/71656 (PPC), PR target/71698 (PPC), PR driver/71651, + PR fortran/71687, PR fortran/71704, PR fortran/71705. + * Mark cross compilers as M-A: foreign. Addresses: #827136. + * On sparc64, configure with --with-cpu-32=ultrasparc, drop the + sparc-force-cpu patch. Closes: #809509. + + -- Matthias Klose Tue, 05 Jul 2016 11:19:50 +0200 + +gcc-6 (6.1.1-8) unstable; urgency=medium + + * Update to SVN 20160630 (r237878, 6.1.1) from the gcc-6-branch. + - Fix PR tree-optimization/71647, PR target/30417 (AVR), + PR target/71103 (AVR), PR tree-optimization/71588, PR middle-end/71581, + PR c++/71528, PR fortran/70673, PR middle-end/71693. + + [ Aurelien Jarno ] + * Apply proposed patch from Matthew Fortune to fix libjava on mips64el. + + [ Matthias Klose ] + * Add AArch64 Vulcan cpu support (Dann Frazier). LP: #1594452. + * gfortran: Suggest libcoarrays-dev. Closes: #827995. + * cpp: Breaks libmagics++-dev (<< 2.28.0-4). Closes: #825278. + * Optimize for mips32r2 for o32 (YunQiang Su). Closes: #827801. + + -- Matthias Klose Thu, 30 Jun 2016 14:12:55 +0200 + +gcc-6 (6.1.1-7) unstable; urgency=medium + + * Update to SVN 20160620 (r237590, 6.1.1) from the gcc-6-branch. + - Fix PR middle-end/71373, PR c/71381, PR libstdc++/71545, PR c/68657, + PR sanitizer/71498, PR middle-end/71529, PR target/71103 (AVR), + PR target/71554 (x86), PR middle-end/71494, PR c++/71448, + PR tree-optimization/71405, PR tree-optimization/71505, + PR target/71379 (s390), PR target/71186 (PPC), PR target/70915 (PPC), + PR c++/70572, PR c++/71516, PR c/71381. + * Fix libgnatprj build to avoid undefined symbols (YunQiang Su). + Closes: #826503. + * Add build support for tilegx (Helmut Grohne). Closes: #827578. + * Drop support for loongson 2f (YunQiang Su). Closes: #827554. + + -- Matthias Klose Mon, 20 Jun 2016 13:41:44 +0200 + +gcc-6 (6.1.1-6) unstable; urgency=medium + + * Update to SVN 20160609 (r237267, 6.1.1) from the gcc-6-branch. + - Fix PR target/71389 (x86), PR tree-optimization/71259, + PR target/70830 (ARM), PR target/67310 (x86), PR c++/71442, + PR c++/70847, PR c++/71330, PR c++/71393, PR fortran/69659. + * gdc: Fix linking the runtime library. Addresses: #826645. + * Fix building libgnatprj on powerpc, and on PIE enabled builds (YunQiang Su). + Closes: #826365. + + -- Matthias Klose Thu, 09 Jun 2016 18:19:42 +0200 + +gcc-6 (6.1.1-5) unstable; urgency=medium + + * Update to SVN 20160603 (r237075, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/70762, PR libstdc++/69703, PR libstdc++/69703, + PR libstdc++/71038, PR libstdc++/71036, PR libstdc++/71037, + PR libstdc++/71005, PR libstdc++/71004, PR libstdc++/70609, PR c/71171, + PR middle-end/71279, PR c++/71147, PR c++/71257, + PR tree-optimization/70884, PR c++/71210, PR tree-optimization/71031, + PR c++/69872, PR c++/71257, PR c++/70344, PR c++/71184, PR fortran/66461, + PR fortran/71204, PR libffi/65567, PR c++/71349, PR target/71201, + PR middle-end/71371, PR debug/71057, PR target/71056 (ARM32), + PR tree-optimization/69068, PR middle-end/71002, PR bootstrap/71071, + PR c++/71372, PR c++/70972, PR c++/71166, PR c++/71227, PR c++/60095, + PR c++/69515, PR c++/69009, PR c++/71173, PR c++/70522, PR c++/70584, + PR c++/70735, PR c++/71306, PR c++/71349, PR c++/71105, PR c++/71147, + PR ada/71358, PR ada/71317, PR fortran/71156, PR middle-end/71387. + * Fix cross building libgnatprj on i386 targeting 64bit archs (YunQiang Su). + Closes: #823126. + * Detect hard float for non-linux or non-glibc arm-*-*eabihf builds (Helmut + Grohne). Closes: #823894. + * Update embedded timestamp setting patch, backported from the trunk. + * gccgo: Combine combine gccgo's ld() and ldShared() methods + in cmd/go (Michael Hudson-Doyle). LP: #1586872. + + -- Matthias Klose Fri, 03 Jun 2016 18:58:40 +0200 + +gcc-6 (6.1.1-4) unstable; urgency=medium + + * Update to SVN 20160519 (r236478, 6.1.1) from the gcc-6-branch. + - Fix PR sanitizer/71160, PR c++/70498, PR target/71161 (x86), + PR fortran/70856, PR c++/71100, PR target/71145 (alpha), PR c++/70466, + PR target/70860 (nvptx), PR target/70809 (AArch64), PR hsa/70857, + PR driver/68463, PR target/70947 (PPC), PR ipa/70760, PR middle-end/70931, + PR middle-end/70941, PR tree-optimization/71006, PR target/70830 (ARM), + PR fortran/69603, PR fortran/71047, PR fortran/56226, PR ipa/70646. + * libgnat{prj,svn}-dev: Don't recommend gnat when building cross compiler + packages. + + -- Matthias Klose Thu, 19 May 2016 18:40:49 +0200 + +gcc-6 (6.1.1-3) unstable; urgency=medium + + * Update to SVN 20160511 (r236071, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/71049, PR middle-end/70877, PR tree-optimization/70876, + PR target/70963, PR tree-optimization/70916, PR debug/70935. + * Enable gdc for sh4. + + -- Matthias Klose Wed, 11 May 2016 22:35:33 +0200 + +gcc-6 (6.1.1-2) unstable; urgency=medium + + * Update to SVN 20160510 (r236071, 6.1.1) from the gcc-6-branch. + - Fix PR tree-optimization/70956, PR sanitizer/70875, PR sanitizer/70342, + PR ada/70969, PR ada/70900. + + [ Matthias Klose ] + * Call dh_makeshlibs with the --noscripts option when building a + cross compiler. + * Fix building cross gnat libs when not building the common libs. + * Fix building cross mips* multilibs when not building the common libs. + * Re-enable gnat build on some architectures for snapshot builds. + * Don't build gnat cross compilers on 32bit archs targeting 64bit targets. + Addresses: #823126. + * Avoid empty architecture lists in build dependencies. Closes: #823280. + * Tighten debhelper build dependency for cross build dependencies. + * Allow build dependencies for musl configurations (Helmut Grohne). + Closes: #823769. + * Fix dependency resolution for libraries not built anymore from + this source package. + + [ Samuel Thibault ] + * patches/ada-hurd.diff: Fix Get_Page_Size type. + + -- Matthias Klose Tue, 10 May 2016 13:34:49 +0200 + +gcc-6 (6.1.1-1) unstable; urgency=medium + + * GCC 6.1.0 release. + - Fix PR bootstrap/70704, PR tree-optimization/70780, PR libgfortran/70684, + PR middle-end/70626, PR java/70839, PR target/70858, PR ada/70759, + PR ada/70786, PR c++/70540, PR middle-end/70626. + * Update to SVN 20160430 (r235678, 6.1.1) from the gcc-6-branch. + - Fix PR middle-end/70680, PR target/70750 (x86), PR ipa/70785, + PR sanitizer/70712, PR target/70728 (x86). + - Don't encode the minor version in the gcj abi version. + + [ Aurelien Jarno ] + * Apply proposed patch for PR target/68273 (Wrong code on mips/mipsel due to + (invalid?) peeking at alignments in function_arg) on mips and mipsel. + + [ Matthias Klose ] + * Always configure with --enable-targets=powerpcle-linux on ppc64el. + * Stop building libcc1 and libgccjit0, when not building common libs. + * Rename libgccjit-5-dbg to libgccjit0-dbg. + * Fix libjava testsuite with dejagnu 1.6, taken from the trunk. + * Allow embedded timestamps by C/C++ macros to be set externally (Eduard + Sanou). + * Add missing libstdc++ symbol to symbols file. + * libstdc++-doc: Ignore warnings about formulas and long identifiers in + man pages. + * Default the 32bit x86 architectures to i686, keep i585 symlinks. + See https://lists.debian.org/debian-devel/2015/09/msg00589.html + * Build-depend on debhelper (>= 9) and dpkg-dev (>= 1.17.14). + * Update gdc to the gdc-6 branch 20160430. + + -- Matthias Klose Sat, 30 Apr 2016 13:31:12 +0200 + +gcc-6 (6.0.1-2) unstable; urgency=medium + + * GCC 6.1 release candidate 2. + - Fix PR c++/68206, PR c++/70522, PR middle-end/70747, PR target/64971, + PR c++/66543, PR tree-optimization/70725, PR tree-optimization/70726, + PR target/70674 (s390x), PR tree-optimization/70724, PR c++/70690, + PR c++/70505, PR target/70711 (ARM32), PR c++/70685, + PR target/70662 (x86). + * Update gdc to the trunk 20160423. + + -- Matthias Klose Sat, 23 Apr 2016 17:56:52 +0200 + +gcc-6 (6.0.1-1) experimental; urgency=medium + + * GCC 6.1 release candidate 1. + + [ Michael Hudson-Doyle ] + * cmd/go: deduplicate gccgo afiles by package path, not *Package. + LP: #1566552. + + -- Matthias Klose Fri, 15 Apr 2016 18:32:25 +0200 + +gcc-6 (6-20160405-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160405. + + -- Matthias Klose Tue, 05 Apr 2016 16:39:49 +0200 + +gcc-6 (6-20160319-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160319. + * Stop providing alternative for /usr/bin/go. (Michael Hudson-Doyle). + LP: #1555856. + * Disable gnat on powerpcspe. Closes: #816051. + + -- Matthias Klose Sat, 19 Mar 2016 11:54:57 +0100 + +gcc-6 (6-20160312-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160312. + * Update gdc to the trunk 20160306. + * Remove powerpcspe specific patch, integrated upstream. Addresses: #816048. + * When configured to link with --as-needed by default, always link the + sanitizer libraries with --no-as-needed. + + -- Matthias Klose Sat, 12 Mar 2016 10:21:28 +0100 + +gcc-6 (6-20160228-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160228. + + [ Matthias Klose ] + * libgo: Port syscall.SetsockoptUcred from golang (Michael Vogt). + + [ Svante Signell ] + * patches/ada-hurd.diff: Update. + + -- Matthias Klose Sun, 28 Feb 2016 13:28:41 +0100 + +gcc-6 (6-20160225-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160225. + * Update gdc to the trunk 20160224. + * Install missing architecture specific plugin header files. + * Fix PR target/69885, bootstrap error on m68k. + + -- Matthias Klose Thu, 25 Feb 2016 02:00:57 +0100 + +gcc-6 (6-20160220-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160220. + - Fix PR tree-optimization/68021. Closes: #812245. + - Fix PR ipa/69241. Closes: #812060. + - Fix PR libstdc++/56158. Closes: #789369. + * Update symbols files. + * libgccjit-6-doc: Really conflict with libgccjit-5-doc. Closes: #814527. + * Update conflict for gnat cross build packages. Closes: #810809. + * Disable the m68k gnat build, currently fails. See: #814221. + * Fix running the acats tests (Svante Signell): Addresses part of #814978. + + -- Matthias Klose Sat, 20 Feb 2016 16:58:47 +0100 + +gcc-6 (6-20160205-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160205. + - Fix PR tree-optimization/69320. Closes: #811921. + - Fix PR c++/68782. Closes: #812287. + - Fix PR tree-optimization/69328. Closes: #812247. + - Fix PR target/69421. Closes: #812246. + - Fix PR c++/69379. Closes: #812068. + - Fix PR lto/69393. Closes: #812062. + - Fix PR tree-optimization/69166. Closes: #812061. + * Update gdc to the trunk 20160205. + - Fix data corruption bug when passing around longdoubles. + Closes: #812080. + * Add more conflicts to GCC 5's debug and doc packages. Closes: #813081. + * Fix dependency generation for armel/armhf multilib cross targets. + * Fix libc dependency generation for multilib cross targets. + * Build libitm on alpha, s390x, sh4, sparc64. + + -- Matthias Klose Fri, 05 Feb 2016 18:08:37 +0100 + +gcc-6 (6-20160122-1) experimental; urgency=medium + + * Fix gnat build failure on KFreeBSD (Steven Chamberlain). Closes: #811372. + * Fix dependencies on target libraries which are not built anymore + from this source. + * Bump libmpx soname. Closes: #812084. + * Apply proposed patch for PR target/69129. Closes: #810081. + * Apply proposed patch for PR go/66904, pass linker flags from + "#cgo pkg-config:" directives (Michael Hudson). + * Configure with --enable-fix-cortex-a53-843419 on AArch64. + + -- Matthias Klose Fri, 22 Jan 2016 13:33:19 +0100 + +gcc-6 (6-20160117-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160117. + * Update gdc to the trunk 20160115. + * Update libgnatvsn/libgnatprj conflicts. Closes: #810809. + * Fix gnat build failures on the Hurd and KFreeBSD (Svante Signell). + Closes: #811063. + * Build libstdc++-6-doc with a fixed doxygen. Closes: #810717. + + -- Matthias Klose Sun, 17 Jan 2016 12:14:39 +0100 + +gcc-6 (6-20160109-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160109. + * Install new header file pkuintrin.h. Closes: #809807. + * Fix libcc1-0 dependency for cross compilers. + + -- Matthias Klose Sat, 09 Jan 2016 11:49:50 +0100 + +gcc-6 (6-20160103-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160101. + + -- Matthias Klose Sun, 03 Jan 2016 12:47:13 +0100 + +gcc-6 (6-20160101-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160101. + * Build native gnat on sh4. Addresses: #809498. + + -- Matthias Klose Fri, 01 Jan 2016 21:18:38 +0100 + +gcc-6 (6-20151220-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151220. + * Update libstdc++-dbg conflicts. Closes: #807885. + * Set target tools and build dependencies for cross builds. + * Relax gcj-6-{jre,jre-headless,jdk} dependencies on libgcj16. + * Fix cross build issues. + + -- Matthias Klose Sun, 20 Dec 2015 13:46:12 +0100 + +gcc-6 (6-20151213-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151213. + * Update the ada-kfreebsd and ada-m68k patches. + * Fix cross-building without having the common cross libraries installed. + * Allow unstripped, non-optimized debug builds with setting DEB_BUILD_OPTIONS + including gccdebug. + * Remove obsolete libgccmath packaging support. + * Define SONAME macros whether the libraries are built or not. + + -- Matthias Klose Sun, 13 Dec 2015 16:04:56 +0100 + +gcc-6 (6-20151211-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151211. + * Update gnat and gdc patches, re-enable gnat and gdc. + + -- Matthias Klose Fri, 11 Dec 2015 12:35:03 +0100 + +gcc-6 (6-20151210-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from 20151210. + + -- Matthias Klose Thu, 10 Dec 2015 22:09:13 +0100 + +gcc-5 (5.3.1-3) unstable; urgency=medium + + * Update to SVN 20151207 (r231361, 5.3.1) from the gcc-5-branch. + * Remove upstreamed chunks from the ada-kfreebsd patch. + + -- Matthias Klose Tue, 08 Dec 2015 02:10:51 +0100 + +gcc-5 (5.3.1-2) unstable; urgency=medium + + * Update to SVN 20151206 (r231339, 5.3.1) from the gcc-5-branch. + * Re-enable building gdc/libphobos, fixing the profiled build. + * Fix PR sanitizer/67899, build failure on sparc/sparc64. + + -- Matthias Klose Sun, 06 Dec 2015 19:15:46 +0100 + +gcc-5 (5.3.1-1) unstable; urgency=medium + + * Update to SVN 20151205 (r231314, 5.3.1) from the gcc-5-branch. + + -- Matthias Klose Sat, 05 Dec 2015 20:45:53 +0100 + +gcc-5 (5.3.0-3) unstable; urgency=medium + + * Update libgcc symbols file. + * Restore libgcc.symbols.aebi. + * Disabled profiled bootstraps for backports. + + -- Matthias Klose Sat, 05 Dec 2015 07:50:48 +0100 + +gcc-5 (5.3.0-1) experimental; urgency=medium + + * GCC 5.3 release. + - Fix PR libstdc++/65142 (CVE-2015-5276). + * Update gdc to the gcc-5 branch 20151130. + * Enable the profiled bootstrap on amd64, arm64, armel armhf, i386, powerpc, + ppc64, ppc64el, s390x, x32 (excluding builds from the Linaro branch). + * Move test summary into the gcc-test-results package. + * Simplify libatomic, libcilkrts, libgcc, libgfortran, libgomp, libitm, + libmpx, libquadmath symbols files using versioned symbol references. + Closes: #806784. + * Only build the hppa64 cross compiler when either building the native compiler, + or when cross building the native compiler. Closes: #806479. + * Configure staged build with --enable-linker-build-id. + + -- Matthias Klose Fri, 04 Dec 2015 12:01:04 +0100 + +gcc-5 (5.2.1-27) unstable; urgency=medium + + * Update to SVN 20151129 (r231053, 5.2.1) from the gcc-5-branch. + * Don't strip cc1plus when shipping with unstripped frontends. + * Relax libgnatvsn5-dev-*-cross and libgnatprj5-dev-*-cross dependencies + on gnat-5-*-linux-gnu. + * Fix setting the explicit libc dependency for cross builds. + * Don't build m4-nofpu multilibs on sh4, install the default multilib + into the standard location. + * Stop building gnat on mips64, see https://gcc.gnu.org/PR65337 (#806370). + * Update the patch for PR go/67508 and re-enable Go on sparc and sparc64. + * Fix gnat sparc/sparc64 architecture detection. + * Update libgcc and libstdc++ symbols files. + * Don't ship the gcov tools in the gcc-hppa64-linux-gnu package. + * Run the autoconf generation in parallel. + * Add --enable-default-pie option to GCC configure, taken from the trunk. + * Enable gnat for m68k cross builds. + * Link gnat tools, gnat libs and libgccjit with the defaults LDFLAGS. + * Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds. + * Ship an empty debian/rules.parameters in the gcc-5-source package. + + -- Matthias Klose Sun, 29 Nov 2015 23:48:58 +0100 + +gcc-5 (5.2.1-26) unstable; urgency=medium + + * Update to SVN 20151125 (r230897, 5.2.1) from the gcc-5-branch. + * Fix the rtlibs stage build. Closes: #806186. + * Fix packaging the cross libphobos package. + * Build the hppa64 cross compiler on x86 architectures. + * gcc-5-hppa64-linux-gnu: Stop providing unversioned tools using + alternatives. Build a gcc-hppa64-linux-gnu package instead. + * Split out a gcc-5-test-results package from g++-5, allowing a post + build analysis, and reducing the size of the g++-5 package. + + -- Matthias Klose Wed, 25 Nov 2015 20:33:08 +0100 + +gcc-5 (5.2.1-25) unstable; urgency=medium + + * Update to SVN 20151123 (r230734, 5.2.1) from the gcc-5-branch. + * Fix libgcc4-dbg dependency on libgcc4. Closes: #805839. + * Fix building epoch prefixed cross packages. + + -- Matthias Klose Mon, 23 Nov 2015 05:48:00 +0100 + +gcc-5 (5.2.1-24) unstable; urgency=medium + + * Update to SVN 20151121 (r230703, 5.2.1) from the gcc-5-branch. + * Fix PR libstdc++/56158, taken from the trunk. Closes: #804521. LP: #1514309. + * Don't try to build a gnat cross compiler when there is no gnat compiler + for the build architecture. + * Update gnat build dependencies for backports. + * Parallelize building documentation and parallelize the packaging step. + * Update the Linaro support to the 5-2015.11 snapshot. + + -- Matthias Klose Sat, 21 Nov 2015 11:22:16 +0100 + +gcc-5 (5.2.1-23) unstable; urgency=medium + + * Update to SVN 20151028 (r229478, 5.2.1) from the gcc-5-branch. + + [ Matthias Klose ] + * Update the Linaro support to the 5-2015.10 snapshot. + * gcj: On ppc64el, use the same jvm archdir name as for openjdk (ppc64le). + * gcj: Fix priority of java alternatives. Closes: #803055. + * gnat-5: Reintroduce the unversioned gnatgcc name. Closes: #802838. + + [ Aurelien Jarno ] + * Replace proposed patch for PR rtl-optimization/67736 by the one + committed on trunk. + + -- Matthias Klose Wed, 28 Oct 2015 10:36:54 +0100 + +gcc-5 (5.2.1-22) unstable; urgency=medium + + * Update to SVN 20151010 (r228681, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/65913, PR libstdc++/67173, PR libstdc++/67747, + PR c/67730, PR middle-end/67563, PR lto/67699, PR tree-optimization/67821, + PR debug/58315. + + [ Matthias Klose ] + * Restore the work around for PR libstdc++/65913, still needed at least + for powerpc. + * Rename gcc-5-hppa64 to gcc-5-hppa64-linux-gnu, update (build) dependency + on binutils. Closes: #800563. + * Adjust setting DH_COMPAT for dh_movefiles with updated debhelper supporting + globbing of arguments. Closes: #800250. + * Build-depend on gnat-5 instead of gnat-4.9. + + [ Aurelien Jarno ] + * Do not Use --with-mips-plt on mips and mipsel. Closes: #799811. + + -- Matthias Klose Sat, 10 Oct 2015 22:17:09 +0200 + +gcc-5 (5.2.1-21) unstable; urgency=medium + + * Update to SVN 20151003 (r228449, 5.2.1) from the gcc-5-branch. + * Fix building gnat. Closes: #800781. + + -- Matthias Klose Sat, 03 Oct 2015 17:28:45 +0200 + +gcc-5 (5.2.1-20) unstable; urgency=medium + + * Update to SVN 20151002 (r228373, 5.2.1) from the gcc-5-branch. + * Fix packaging the ada cross library packages. + + -- Matthias Klose Fri, 02 Oct 2015 10:24:38 +0200 + +gcc-5 (5.2.1-19) unstable; urgency=medium + + * Update to SVN 20150930 (r228302, 5.2.1) from the gcc-5-branch. + - Fix PR ipa/66424. Closes: #800318. + + [ Matthias Klose ] + * Update the Linaro support to the 5-2015.09 snapshot. + * Fix PR libstdc++/67707, taken from the trunk. LP: #1499564. + * Ship libgcj.spec in gcj-5 instead of gcj-5-jdk. Closes: #800010. + * gcj-5: Suggest gcj-5-jdk. + * Fix base dependency for ada cross library packages. + * Add ${shlibs:Depends} for libgnatvsn and libgnatprj. + * Link lrealpath.o into libgnatprj. Closes: #800045. + * libgnat{svn,prj}-dev: For cross builds, move adainclude and adalib files + into the gcc libdir. + * Default to POWER8 on ppc64el. + * armv8: Fix slt lda missing conditional code (taken from the trunk). + * Fix lintian pre-depends-directly-on-multiarch-support warnings. + + [ Aurelien Jarno ] + * Apply proposed patch for PR rtl-optimization/67736 when building for + mips64 or mips64el. Closes: #800321. + + -- Matthias Klose Wed, 30 Sep 2015 20:36:50 +0200 + +gcc-5 (5.2.1-18) unstable; urgency=medium + + * Update to SVN 20150922 (r228023, 5.2.1) from the gcc-5-branch. + + [ Matthias Klose ] + * gcc-5-plugin-dev: Depend on libmpc-dev. Closes: #798997. + * Fix PR libstdc++/65913, taken from the trunk. Closes: #797577. + + [ YunQiang Su ] + * Build again the gnat-5-sjlj package. Closes: #798782. + * Fix gnat cross builds, and cross building gnat. + + -- Matthias Klose Tue, 22 Sep 2015 23:15:17 +0200 + +gcc-5 (5.2.1-17) unstable; urgency=medium + + * Update to SVN 20150911 (r227671, 5.2.1) from the gcc-5-branch. + - Fix PR c++/67369, ICE on valid code. LP: #1489173. + + [ Matthias Klose ] + * Build-depend on linux-libc-dev [m68k] for gcc and gcc-snapshot builds. + Closes: #796906. + * Don't ignore anymore bootstrap comparison failures on sh4. Closes: #796939. + * Fix stage1 cross build for KFreeBSD. Closes: #796901. + * libgo: Fix PR go/67508, rewrite lfstack packing/unpacking to look more + like that in Go (Michael Hudson). LP: #1472650. + * Fix PR target/67143 (AArch64), ICE on valid code. LP: #1481333. + + [ Aurelien Jarno ] + * Use --with-mips-plt on mips*. + * Build for R2 ISA on mips, mips64 and mips64el. + * Optimize for R2 ISA on mipsel. + * Only apply mips-fix-loongson2f-nop on mipsel. + + [ YunQiang Su ] + * Fix running the acats tests. Closes: #798531. + + -- Matthias Klose Fri, 11 Sep 2015 03:17:20 +0200 + +gcc-5 (5.2.1-16) unstable; urgency=medium + + * Update to SVN 20150903 (r227431, 5.2.1) from the gcc-5-branch. + - Backport the filesystem TS library. + * libstdc++-dev: Install libstdc++fs.a. + * Again, configure with --enable-targets=powerpcle-linux on ppc64el. + * Apply proposed patch for PR target/67211 (ppc64el). + * libgo-dev: Install libgolibbegin.a. + * Apply proposed patch for PR target/67280 (ARM). LP: #1482320. + + -- Matthias Klose Thu, 03 Sep 2015 12:16:15 +0200 + +gcc-5 (5.2.1-15) unstable; urgency=medium + + * Update to SVN 20150808 (r226731, 5.2.1) from the gcc-5-branch. + * Adjust libstdc++-breaks: Break libantlr-dev instead of antlr; + adjust libreoffice version (closes: #794203), drop xxsd break (see + #793289), remove cython breaks (closes: #794511), add breaks for + packages built using cython (chemps2, fiona, guiqwt, htseq, imposm, + pysph, pytaglib, python-scipy, python-sfml, rasterio). + * Ignore missing libstdc++ symbols on sparc64 (work around #792204). + + -- Matthias Klose Sat, 08 Aug 2015 11:18:24 +0200 + +gcc-5 (5.2.1-14) unstable; urgency=high + + * Fix libstdc++6 breaks. + + -- Matthias Klose Fri, 31 Jul 2015 04:12:08 +0200 + +gcc-5 (5.2.1-13) unstable; urgency=high + + * Upload to unstable (https://wiki.debian.org/GCC5). See also + https://lists.debian.org/debian-devel-announce/2015/07/msg00000.html + * Update to SVN 20150730 (r226411, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/67015. Closes: #793784. + * Fix version macros in the plugin-header.h header. Closes: #793478. + * libstdc++6: Add breaks for issues tagged with gcc-pr66145. + * Add libcpprest2.4 to libstdc++6 breaks. Closes: #784655. + * Fix PR c++/66857, taken from the trunk. + * Ignore differences in gcc/real.o in the bootstrap build for + sh*-*linux-gnu targets. According to PR 67002, "A rare indeterminacy + of the register choice. Both codes are valid. It seems very hard to + find where has this indeterminacy come from". Suggested by Adrian + Glaubitz. + + -- Matthias Klose Thu, 30 Jul 2015 21:51:25 +0200 + +gcc-5 (5.2.1-12) experimental; urgency=medium + + * Update to SVN 20150723 (r226105, 5.2.1) from the gcc-5-branch. + * Fix PR libstdc++/66145, std::ios_base::failure objects thrown from + libstdc++.so using the gcc4-compatible ABI. + Just build src/c++11/functexcept.cc using the new ABI. It will break + code, which will be handled in the archive by adding Breaks for the + affected packages. Third party code using such code will need a rebuild. + * Remove the work around to build with -O1 on sh4. + + -- Matthias Klose Thu, 23 Jul 2015 14:18:44 +0200 + +gcc-5 (5.2.1-11) experimental; urgency=medium + + * Configure without --disable-libstdcxx-dual-abi. + * Configure with --with-default-libstdcxx-abi=c++11. + + -- Matthias Klose Fri, 17 Jul 2015 08:13:08 +0200 + +gcc-5 (5.2.1-1) experimental; urgency=medium + + * GCC 5.2 release. + * Update to SVN 20150716 (r225880, 5.2.1) from the gcc-5-branch. + * Require version 5.2 for the libstdc++6 cxx symbols. + * Ignore missing libstdc++ symbols on sparc64 (work around #792204). + * Go escape analysis: analyze multiple result type assertions (taken + from the trunk). + + -- Matthias Klose Thu, 16 Jul 2015 15:35:44 +0200 + +gcc-5 (5.1.1-14) unstable; urgency=medium + + * Update to SVN 20150711 (r225710, 5.1.1) from the gcc-5-branch. + + -- Matthias Klose Sat, 11 Jul 2015 11:57:19 +0200 + +gcc-5 (5.1.1-13) unstable; urgency=medium + + * Update to SVN 20150706 (r225471, 5.1.1) from the gcc-5-branch. + * Update libasan symbol files. + * Configure --with-fp-32=xx on all mips targets, setting MIPS O32 default + to FPXX (YunQiang Su). Closes: #789612. + * Update libgccjit symbol file. + * Add x32 symbols files for libgcc1 and libstdc++6. + * libgccjit0: Add breaks for python-gccjit and python3-gccjit. + + -- Matthias Klose Mon, 06 Jul 2015 19:55:08 +0200 + +gcc-5 (5.1.1-12) unstable; urgency=medium + + * Update to SVN 20150622 (r224724, 5.1.1) from the gcc-5-branch. + * Update symbols files for mips64 libatomic and libstdc++ (YunQiang Su). + Closes: #788990. + * Fix "empty-binary-package" lintian warnings. + + -- Matthias Klose Mon, 22 Jun 2015 14:37:49 +0200 + +gcc-5 (5.1.1-11) unstable; urgency=medium + + * Update to SVN 20150616 (r224519, 5.1.1) from the gcc-5-branch. + * gccgo: escape: Analyze binary expressions (taken from the trunk). + * Explicitly build with -Wl,--no-relax on alpha again. + * Build with -O1 on sh4 (try to work around PR target/66358). + + -- Matthias Klose Tue, 16 Jun 2015 16:11:59 +0200 + +gcc-5 (5.1.1-10) unstable; urgency=medium + + * Update to SVN 20150613 (r224454, 5.1.1) from the gcc-5-branch. + * Make removal of byte-compiled libstdc++ pretty printer files more + robust. Closes: #787630. + * Fix mips 32bit (o32) multilib builds (YunQiang Su). + * Build target libraries with -Wl,-z,relro. + * Build libstdc++6 when building the common libraries. + * Fix a bunch of lintian warnings. + + -- Matthias Klose Sat, 13 Jun 2015 12:59:17 +0200 + +gcc-5 (5.1.1-9) unstable; urgency=medium + + * Update to SVN 20150602 (r224029, 5.1.1) from the gcc-5-branch. + * Remove byte-compiled libstdc++ pretty printer files on upgrade. + Closes: #785939. + * Fix dangling libgccjit.so symlink. + * Fix base dependency for rtlibs stage builds. + * Fix build failure of the hppa64 cross compiler, introduced by the + gnat cross patches. Closes: #786692. + * Update README.source (Michael Vogt). + * libgo: syscall.Sendfile(): Apply proposed patch for PR go/66378. + (Michael Vogt). LP: #1460530. + * Set CC and CXX matching the same GCC version for the stage1 build. + * Work around PR go/66368, build libgo with -fno-stack-protector. + LP: #1454183. + + -- Matthias Klose Wed, 03 Jun 2015 00:49:41 +0200 + +gcc-5 (5.1.1-8) unstable; urgency=medium + + * Update to SVN 20150528 (r223816, 5.1.1) from the gcc-5-branch. + * Set the priorities of the *-dev-*-cross packages to extra. + * Prepare to change the base dependency for *-cross packages. + * Fix dependencies for stage1 and stage2 builds. + * Relax dependencies on binary indep *-dev-*-cross packages. + * Disable building gdc on sh4 (bootstrap comparison failure). + + -- Matthias Klose Thu, 28 May 2015 15:51:00 +0200 + +gcc-5 (5.1.1-7) unstable; urgency=medium + + * Update to SVN 20150522 (r223579, 5.1.1) from the gcc-5-branch. + * Add description for the ada-gnattools-cross patch (YunQiang Su). + * Provide a rtlibs stage to build a subset of target library packages. + * Make symbols file symlinking for cross builds more robust. + * Prefer gnatgcc-5 over gnatgcc when building native packages. + * Various fixes to build a gnat cross compiler: + - Fix dependencies of packages. + - Fix building libgnatprj and libgnatvsn (still needed to figure + out if these are target or host libraries). + * Fix building cross compilers with dpkg 1.18. + + -- Matthias Klose Fri, 22 May 2015 18:20:01 +0200 + +gcc-5 (5.1.1-6) unstable; urgency=medium + + * Update to SVN 20150519 (r223346, 5.1.1) from the gcc-5-branch. + * Don't build gdc-multilib on armel. + * Remove old CFLAGS/LDFLAGS settings to build gdc. + * Remove reference to .ico file in NEWS.html. + * Fix gcc's dependency on libcc1-0 for native builds. + * Fix stripping the rpath when cross-building cross compilers. + * Remove work arounds to build 64bit multilibs on 32bit targets, + now properly fixed upstream. + * Partially apply patches to build a gnat cross compiler (submitted + by YunQiang Su). + - gnatmake: Call the versioned gnatbind and gnatlink commands. + Closes: #782257. + - Allow libgnatprj and libgnatvsn to cross build. Addresses: #783372. + - New patch ada-gnattools-cross.diff (no documentation). + * Backport patch for gccgo: + - gccgo: If unary & does not escape, the var does not escape. + * Apply the backported patches for the go escape analysis. Need to + be enabled with -fgo-optimize-alloc (this option may go away again). + * Re-enable running the tests. + + -- Matthias Klose Tue, 19 May 2015 10:33:40 +0200 + +gcc-5 (5.1.1-5) unstable; urgency=medium + + * Update to SVN 20150507 (r222873, 5.1.1) from the gcc-5-branch. + * Fix 32bit libstdc++ symbols files for kfreebsd-amd64. + * libx32phobos-dev: Don't depend on libx32z-dev, when not available. + * Fix gotools configury. + * Configure with + --disable-libstdcxx-dual-abi --with-default-libstdcxx-abi=c++98 + While libstdc++ provides a dual ABI to support both the c++98 and c++11 + ABI, there is no committment on compatibility of the old experimental + c++11 ABI from GCC 4.9 and the stable c++11 ABI in GCC 5. + Closes: #784655. + + -- Matthias Klose Fri, 08 May 2015 18:48:49 +0200 + +gcc-5 (5.1.1-4) unstable; urgency=medium + + * Update to SVN 20150503 (r222751, 5.1.1) from the gcc-5-branch. + - Fix build failure on alpha. + * Fix applying the cross-biarch patch for stage1 builds. + * Fix libstdc++ symbols files for kfreebsd-amd64. + * Remove libn32phobos-5-dev from the control file. + * Really disable gnat on x32. + + -- Matthias Klose Sat, 02 May 2015 19:18:57 +0200 + +gcc-5 (5.1.1-3) unstable; urgency=high + + * Update to SVN 20150430 (r222660, 5.1.1) from the gcc-5-branch. + * Fix libstdc++ symbols files for kfreebsd-i386. + * PR libstdc++/62258, fix for std::uncaught_exception, taken from the trunk. + LP: #1439451. + * Backport patches for gccgo (not yet applied): + - Consider multi-result calls in escape analysis. + - Propagate escape info from closures to enclosed variables. + - Analyze function values and conversions. + - Use backend interface for stack allocation. + * More libstdc++ symbols updates for the Hurd and KFreeBSD. + * config-ml.in: Add D support. + * Update cross-biarch.diff to support D and Go. + * Apply the cross-biarch patch for every cross build. + + -- Matthias Klose Thu, 30 Apr 2015 15:42:05 +0200 + +gcc-5 (5.1.1-2) unstable; urgency=medium + + * Update to SVN 20150428 (r222550, 5.1.1) from the gcc-5-branch. + * Fix the gnat build dependency. + * Don't build go and gofmt for cross compilers. + + -- Matthias Klose Tue, 28 Apr 2015 23:57:14 +0200 + +gcc-5 (5.1.1-1) unstable; urgency=medium + + * GCC 5.1.0 release. + * Update to SVN 20150424 (r222416, 5.1.1) from the gcc-5-branch. + * Update NEWS files. + * Apply the ada-bootstrap-compare patch for snapshot builds as well. + * Update libasan, libgomp and libstdc++ symbols files. + * Don't ignore errors in dh_makeshlibs and dh_shlibdeps anymore, symbols + files should be uptodate now. + * Split out the sjlj build related things from the ada-acats patch into + a new ada-acats-sjlj patch. + * Don't build libx32phobos-5-dev when not building x32 multilibs. + * Fix standard C++ include directory for cross builds. Closes: #783241. + * Ignore bootstrap comparison failure on ia64. Filed upstream as + PR middle-end/65874. + * gccgo: Add (don't yet apply) a patch to implement escape analysis (taken + from the trunk). Turned off by default, enable with -fgo-optimize-alloc. + + -- Matthias Klose Fri, 24 Apr 2015 18:42:39 +0200 + +gcc-5 (5.1~rc1-1) experimental; urgency=medium + + * GCC 5.1 release candidate 1. + * Update to SVN 20150414 (r222066) from the gcc-5-branch. + * Update GDC to the gcc-5 branch, 20140414. + * Don't build libobjc, when not building the common libraries. + * Don't run the gccjit tests on KFreeBSD. Works around #782444:. + * Fix not building libs built by the next GCC version. + + -- Matthias Klose Tue, 14 Apr 2015 02:03:53 +0200 + +gcc-5 (5-20150410-1) experimental; urgency=medium + + * Update to SVN 20150410 + + [ Matthias Klose ] + * Fix /usr/include/c++/5.0.0 symlink. + * Re-enable building the D frontend. Closes: #782254. + * gccgo: Install libnetgo. + + [ Samuel Thibault ] + * Fix ada builds on the Hurd and KFreeBSD. Closes: #781424. + + -- Matthias Klose Sat, 11 Apr 2015 02:24:08 +0200 + +gcc-5 (5-20150404-1) experimental; urgency=medium + + * Update to SVN 20150404. + * Don't explicitly configure --with-gxx-include-dir and an absolute path, + so the toolchain remains relocatible. Instead, canonicalize the include + path names at runtime. + * Don't link libgnatprj using --no-allow-shlib-undefined on older releases. + * Don't build libmpx on older releases. + * Remove the work around to build libgccjit on arm64. + * Fix the libgccjit build using the just built compiler. + * Don't break other gcc, gcj, gnat -base packages for backports, only + needed for dist-upgrades. + * Don't add -gtoggle to STAGE3_CFLAGS (disabling the bootstrap comparison). + Instead, ignore the one differing file (gcc/ada/a-except.o) for now. + See #781457, PR ada/65618. + * Update libasan, libtsan, libgfortran and libstdc++ symbols files. + * Add symbols files for libmpx, libgccjit and libcc1. + + -- Matthias Klose Sat, 04 Apr 2015 21:53:45 +0200 + +gcc-5 (5-20150329-1) experimental; urgency=medium + + * Update to SVN 20150329. + * Fix building the gnat-5-doc package. + * Fix gnat build dependencies. + * Fix installation of the gnat upstream ChangeLog. Closes: #781451. + * Restore the bootstrap-debug.mk patch to the ada-mips patch + for debugging purposes. See #781457. + + -- Matthias Klose Sun, 29 Mar 2015 18:53:29 +0200 + +gcc-5 (5-20150327-1) experimental; urgency=medium + + * Update to SVN 20150327. + * Update libcc1 build support. + * Fix syntax in libstdc++ symbols file. Closes: #780991. + * Fix PR go/65417: Add support for PPC32 relocs to debug/elf. LP: #1431388. + * Fix PR go/65462: Fix go get dependencies. LP: #1432497. + * Limit the omp.h multilib fix to Linux. Closes: #778440. + * For ICEs, dump the preprocessed source file to stderr when in a + distro build environment. + * Remove the bootstrap-debug.mk patch from the ada-mips patch. + * gnat related work (partly based on #780640): + - Update patches for GCC 5. + - Build the gnat packages from the gcc-5 source package. + - Don't build a gnat-base package from the gcc-5 source. + - Stop building the gnat-5-sjlj package for now, patch needs an update. + - Fix the packaging when not building the gnat-5-sjlj package. + - Don't apply the ada-symbolic-tracebacks, patch needs an update. + - Fix the libgnatprj build, build with -DIN_GCC. + * Replace cloog/ppl build bits with isl build bits. + + -- Matthias Klose Fri, 27 Mar 2015 21:05:16 +0100 + +gcc-5 (5-20150321-1) experimental; urgency=medium + + * Update to SVN 20150321. + * Move the libcc1plugin from the gcc-5-plugin-dev package into the + gcc-5 package. + + -- Matthias Klose Sat, 21 Mar 2015 15:01:15 +0100 + +gcc-5 (5-20150316-1) experimental; urgency=medium + + * Update to SVN 20150316. + - Fix bootstrap failures on armel, armhh and arm64. + * Configure with --enable-checking=yes (instead of =release). + + -- Matthias Klose Tue, 17 Mar 2015 00:30:27 +0100 + +gcc-5 (5-20150314-1) experimental; urgency=medium + + * Update to SVN 20150314. + - libgo: Add arm64 to the pointer size map (Michael Hudson). + - libgo: Add ppc to the pointer size map. + - PR go/65404, enable cgo on arm64 and powerpc. LP: #1431032. + - Fix PR/tree-optimization 65418. Closes: #778163. + - Fix PR c++/65370. Closes: #778073. + * Enable libmpx builds on amd64 and i386. + * Update the gcc-multiarch patch for mips64 (YunQiang Su). + Closes: #776402, #780271. + * Remove pr52306 and pr52714 patches, applied upstream. Closes: #780468. + + -- Matthias Klose Sat, 14 Mar 2015 14:48:19 +0100 + +gcc-5 (5-20150307-1) experimental; urgency=medium + + * Update to SVN 20150307. + - Update gccgo to Go 1.4.2. + * Enable libsanitizer for AArch64 and POWERPC LE (asan, ubsan). + * Remove the support to build empty libsanitizer packages on powerpc + and ppc64; libsanitizer should be stable on these architectures. + * Fix libcc1.so symlink. Closes: #779341. + * Revert the fix for PR65150 on armel and armhf to restore bootstrap. + * Don't strip the libgo library, or some things won't work as documented, + like runtime.Callers. Still keep the -dbg packages and check if some + debug information can be stripped. + * gccgo-5: Install alternatives for go and gofmt. + + -- Matthias Klose Sat, 07 Mar 2015 12:20:59 +0100 + +gcc-5 (5-20150226-1) experimental; urgency=medium + + * Update to SVN 20150226. + - Fix PR c/65040 (closes: #778514), PR tree-optimization/65053 + (closes: #778070, #778071), PR c++/64898 (closes: #778472). + * Allow not to strip the compiler executables to be able to print backtraces + for ICEs. + * Fix gnat build on mips64el (James Cowgill). Addresses: #779191. + * Fix the hppa64 cross build (John David Anglin). Closes: #778658. + * Fix libstdc++ pretty printers for Python3. Closes: #778436. + + -- Matthias Klose Thu, 26 Feb 2015 08:18:23 +0100 + +gcc-5 (5-20150205-1) experimental; urgency=medium + + * Update to SVN 20150205. + * Update GDC for GCC 5. + * Build GDC multilib packages. + * Update cross-install-location.diff for gcc-5. Closes: #776100. + * Configure --with-default-libstdcxx-abi=c++11 for development, + --with-default-libstdcxx-abi=c++98 for backports. + * Apply proposed patch for PR target/64893 (AArch64), build using + 4.9 on AArch64 for now. + * Don't disable bootstrap mode for the jit build on arm64, gets + miscompiled. + * Allow one to build using gettext built with a newer GCC. + + -- Matthias Klose Thu, 05 Feb 2015 18:31:17 +0100 + +gcc-5 (5-20150127-1) experimental; urgency=medium + + * Update to SVN 20150127. + * More symbol file updates. + * Fix libbacktrace and libsanitizer multilib builds. + * Fix libssp builds on 64bit architectures. + * Update hardening testsuite patches for GCC 5. + + -- Matthias Klose Tue, 27 Jan 2015 14:10:30 +0100 + +gcc-5 (5-20150121-1) experimental; urgency=medium + + * GCC 5 (SVN trunk 20150121). + * Build new binary packages libcc1-0, libgccjit0, libgccjit-5-dev, + libgccjit-5-dbg, libgccjit-5-doc. + * Update symbols files (still incomplete). + + -- Matthias Klose Wed, 21 Jan 2015 21:02:05 +0100 + +gcc-4.9 (4.9.2-10) UNRELEASED; urgency=medium + + * Update to SVN 20150120 (r219885) from the gcc-4_9-branch. + - Fix PR libstdc++/64476, PR libstdc++/60966, PR libstdc++/64239, + PR libstdc++/64649, PR libstdc++/64584, PR libstdc++/64585, + PR libstdc++/64646, + PR middle-end/63704 (ice on valid), PR target/64513 (x86), + PR rtl-optimization/64286 (wrong code), PR tree-optimization/64563 (ice), + PR middle-end/64391 (ice on valid), PR c++/54442 (ice on valid), + PR target/64358 (rs6000, wrong code), PR target/63424 (AArch64, ice on + valid), PR target/64479 (SH), PR rtl-optimization/64536, PR target/64505 + (rs6000), PR target/61413 (ARM, wrong code), PR target/64507 (SH), + PR target/64409 (x32, ice on valid), PR c++/64487 (ice on valid), + PR c++/64352, PR c++/64251 (rejects valid), PR c++/64297 (ice on valid), + PR c++/64029 (ice on valid), PR c++/63657 (diagnostic), PR c++/38958 + (diagnostic), PR c++/63658 (rejects valid), PR ada/64492 (build), + PR fortran/64528 (ice on valid), PR fortran/63733 (wrong code), + PR fortran/56867 (wrong code), PR fortran/64244 (ice on valid). + * Update the Linaro support to the 4.9-2015.01 release. + + -- Matthias Klose Tue, 20 Jan 2015 12:45:13 +0100 + +gcc-4.9 (4.9.2-10) unstable; urgency=medium + + * Really add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Use the final binutils 2.25 release. + * Tighten the gcc-4.9 dependency on libgcc-4.9-dev (YunQiang Su). + + -- Matthias Klose Thu, 25 Dec 2014 18:10:51 +0100 + +gcc-4.9 (4.9.2-9) unstable; urgency=medium + + * Update to SVN 20141220 (r218987) from the gcc-4_9-branch. + - Fix PR libstdc++/64302, PR libstdc++/64303, PR c++/60955, + PR rtl-optimization/64010 (wrong code), PR sanitizer/64265 (wrong code). + * Add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Fix mips64el multilib cross builds. Closes: #772665. + * libphobos-4.x-dev: Stop providing libphobos-dev, now a real package. + + -- Matthias Klose Sat, 20 Dec 2014 07:47:15 +0100 + +gcc-4.9 (4.9.2-8) unstable; urgency=medium + + * Update to SVN 20141214 (r218721) from the gcc-4_9-branch. + - Fix PR tree-optimization/62021 (ice), PR middle-end/64225 (missed + optimization), PR libstdc++/64239, PR rtl-optimization/64037 (wrong + code), PR target/64200 (x86, ice), PR tree-optimization/64269 (ice). + * Don't build libphobos multilibs, there is no gdc-multilib build. + * Really disable the sanitizer libs on powerpc, ppc64 and ppc64el. + * Paste config.log files to stdout in case of build errors. + + -- Matthias Klose Sun, 14 Dec 2014 18:43:49 +0100 + +gcc-4.9 (4.9.2-7) unstable; urgency=medium + + * Update to SVN 20141210 (r218575) from the gcc-4_9-branch. + - Fix PR libstdc++/64203, PR target/55351 (SH), PR tree-optimization/61686, + PR bootstrap/64213. + - libgcc hppa backports. + * Fix cross builds with dpkg-architecture unconditionally exporting + target variables. For now specify the target architecture + in debian/target. This still needs to work with older dpkg versions, + so don't "simplify" the packaging. Closes: #768167. + + -- Matthias Klose Wed, 10 Dec 2014 13:32:42 +0100 + +gcc-4.9 (4.9.2-6) unstable; urgency=medium + + * Update to SVN 20141209 (r218510) from the gcc-4_9-branch. + - Fix PR libstdc++/63840, PR libstdc++/61947, PR libstdc++/64140, + PR target/50751 (SH), PR target/64108 (x86, ice), + PR rtl-optimization/64037 (wrong-code), PR c++/56493 (performance), + PR c/59708, PR ipa/64153, PR target/64167) (wrong code, + closes: #771974), PR target/59593 (ARM, wrong code), + PR middle-end/63762 (ARM. wrong code), PR target/63661 (x86, + wrong code), PR target/64113 (alpha, wrong code), PR c++/64191. + - Allow one to build with ISL 0.14. + + -- Matthias Klose Tue, 09 Dec 2014 11:00:08 +0100 + +gcc-4.9 (4.9.2-5) unstable; urgency=medium + + * Update to SVN 20141202 (r218271) from the gcc-4_9-branch. + - Fix PR middle-end/64111 (ice), PR ipa/63551 (wrong code). + PR libstdc++/64102 (closes: #770843), PR target/64115 (powerpc). + * Move libphobos2.a into the gcc_lib_dir. Closes: #771647. + * Fix typo in last powerpcspe patch. Closes: #771654. + + -- Matthias Klose Tue, 02 Dec 2014 17:42:07 +0100 + +gcc-4.9 (4.9.2-4) unstable; urgency=medium + + * Update to SVN 20141128 (r218142) from the gcc-4_9-branch. + -PR PR target/56846 (ARM), PR libstdc++/63497, + PR middle-end/63738 (wrong code), PR tree-optimization/62238 (ice), + PR tree-optimization/61927 (wrong code), + PR tree-optimization/63605 (wrong code), PR middle-end/63665 (wrong code), + PR fortran/63938 (OpenMP), PR middle-end/64067 (ice), + PR tree-optimization/63915 (wrong code), PR sanitizer/63913 (ice valid), + PR rtl-optimization/63659 (wrong code). + * Don't let stage1 multilib builds depend on the multilib libc-dev. + Closes: #771243. + * Fix an exception problem on powerpcspe (Roland Stigge). Closes: #771324. + * Remove unsupported with_deps_on_target_arch_pkgs configurations. + Closes: #760770, #766924, #770413. + + -- Matthias Klose Fri, 28 Nov 2014 15:26:23 +0100 + +gcc-4.9 (4.9.2-3) unstable; urgency=medium + + * Update to SVN 20141125 (r218048) from the gcc-4_9-branch. + - PR target/53976 (SH), PR target/63783 (SH), PR target/51244 (SH), + PR target/60111 (SH), PR target/63673 (ppc), + PR tree-optimization/61750 (ice), PR target/63947 (x86, wrong code), + PR tree-optimization/62167 (wrong code), PR c++/63849 (ice), + PR ada/47500. + + [ Aurelien Jarno ] + * Always configure sh4-linux with --with-multilib-list=m4,m4-nofpu, + even with multilib disabled, as it doesn't produce additional + libraries. + + [ Matthias Klose ] + * gcc-4.9-base: Add Breaks: gcc-4.7-base (<< 4.7.3). Closes: #770025. + + -- Matthias Klose Tue, 25 Nov 2014 17:04:19 +0100 + +gcc-4.9 (4.9.2-2) unstable; urgency=medium + + * Update to SVN 20141117 (r217768) from the gcc-4_9-branch. + - Fix PR rtl-optimization/63475, PR rtl-optimization/63483 (gfortran + aliasing fixes for alpha), PR target/63538 (x86), PR ipa/63838 (wrong + code), PR target/61535 (sparc), PR c++/63265 (diagnostic), PR ada/42978. + * Fix PR c/61553 (ice on illegal code), backported from the trunk. + Closes: #767668. + * Disable building the sanitizer libs on powerpc and ppc64. Not yet + completely ported, and causing kernel crashes running the tests. + * Update the Linaro support to the 4.9-2014.11 release. + + -- Matthias Klose Tue, 18 Nov 2014 00:34:01 +0100 + +gcc-4.9 (4.9.2-1) unstable; urgency=medium + + * GCC 4.9.2 release. + * Update GDC from the 4.9 branch. + + [ Matthias Klose ] + * Allow one to build the gcc-base package only. + + [Ludovic Brenta] + Merge from gnat-4.9 (4.9.1-4) unstable; urgency=low. + * debian/patches/ada-libgnatvsn.diff: compile the version.o of + libgnatvsn.{a,so} with -DBASEVER=$(FULLVER) to align it with the + change made in gcc-base-version.diff, which is compiled into gcc and + gnat1. Fixes: #759038. + * debian/patches/ada-revert-pr63225.diff: new; preserve the aliversion + compatibility of libgnatvsn4.9-dev with -3. + + Merge from gnat-4.9 (4.9.1-3) unstable; urgency=low + Merge from gnat-4.9 (4.9.1-2) unstable; urgency=low + + [Svante Signell] + * debian/patches/ada-hurd.diff: update and bring up to par with + ada-kfreebsd.diff. + + [Ludovic Brenta] + * Rebuild with newer dpkg. Fixes: #761248. + + Merge from gnat-4.9 (4.9.1-1) unstable; urgency=low + + * New upstream release. Build-depend on gcc-4.9-source (>= 4.9.1). + Fixes: #755490. + * debian/rules.d/binary-ada.mk: install the test-summary file in package + gnat-4.9 instead of gnat-4.9-base. test-summary is actually + architecture-dependent. This change reflects what happens in gcc-4.9 + and gcc-4.9-base as well. Fixes: #749869. + + Merge from gnat-4.9 (4.9.0-2) unstable; urgency=low + + * Lintian warnings: + * debian/control.m4 (gnat-4.9-base): Multi-Arch: same. + * debian/patches/ada-749574.diff: new. Fixes: #749574. + + -- Matthias Klose Tue, 04 Nov 2014 02:58:33 +0100 + +gcc-4.9 (4.9.1-19) unstable; urgency=medium + + * GCC 4.9.2 release candidate. + * Update to SVN 20141023 (r216594) from the gcc-4_9-branch. + * Install sanitizer header files. + * Apply patch for PR 60655, taken from the trunk. + * Fix typo in the libstdc++ HTML docs. Closes: #766498. + * Use doxygen's copy of jquery.js for the libstdc++ docs. Closes: #766499. + * Force self-contained cross builds. + * Don't build functionally non-equivalent cross compilers. + * Update the Linaro support to the 4.9-2014.10-1 release. + + -- Matthias Klose Fri, 24 Oct 2014 14:20:00 +0200 + +gcc-4.9 (4.9.1-18) unstable; urgency=medium + + * Update to SVN 20141018 (r216426) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Update libstdc++ symbols file for powerpcspe (Roland Stigge). + Closes: #765078. + + -- Matthias Klose Sat, 18 Oct 2014 16:28:09 +0200 + +gcc-4.9 (4.9.1-17) unstable; urgency=medium + + * Update to SVN 20141015 (r216240) from the gcc-4_9-branch. + - Fix PR c++/63405 (ice) Closes: #761549. + - Fix PR ipa/61144 (wrong code). Closes: #748681. + + -- Matthias Klose Wed, 15 Oct 2014 10:29:23 +0200 + +gcc-4.9 (4.9.1-16) unstable; urgency=medium + + * Update to SVN 20140930 (r215717) from the gcc-4_9-branch. + * Don't suggest libvtv and binutils-gold. Closes: #761612. + + -- Matthias Klose Tue, 30 Sep 2014 11:37:48 +0200 + +gcc-4.9 (4.9.1-15) unstable; urgency=medium + + * Update to SVN 20140919 (r215401) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Extend the fix for PR target/63190 (AArch64). Closes: #758964. + * Apply proposed fix for Linaro #331, LP: #1353729 (AArch64). + + [ Aurelien Jarno ] + * Default to mips64 ISA on mips64el, with tuning for mips64r2. + + -- Matthias Klose Fri, 19 Sep 2014 20:17:27 +0200 + +gcc-4.9 (4.9.1-14) unstable; urgency=medium + + * Update to SVN 20140912 (r215228) from the gcc-4_9-branch. + * Update the Linaro support to the 4.9-2014.09 release. + * Fix installation of the libstdc++ documentation. Closes: #760872. + + -- Matthias Klose Fri, 12 Sep 2014 19:15:23 +0200 + +gcc-4.9 (4.9.1-13) unstable; urgency=medium + + * Update to SVN 20140908 (r215008) from the gcc-4_9-branch. + * Enable cgo on AArch64 (Michael Hudson). LP: #1361940. + * Update the Linaro support from the Linaro/4.9 branch. + * Fix PR target/63190 (AArch64), taken from the trunk. Closes: #758964. + + -- Matthias Klose Mon, 08 Sep 2014 09:56:50 +0200 + +gcc-4.9 (4.9.1-12) unstable; urgency=medium + + [ Samuel Thibault ] + * boehm-gc: use anonymous mmap instead of brk also on hurd-*. + Closes: #753791. + + -- Matthias Klose Sun, 31 Aug 2014 18:40:46 +0200 + +gcc-4.9 (4.9.1-11) unstable; urgency=medium + + * Update to SVN 20140830 (r214759) from the gcc-4_9-branch. + * Update cross installation patches for the branch. + * Use the base version (4.9) when accessing files in gcc_lib_dir. + + -- Matthias Klose Sat, 30 Aug 2014 22:05:47 +0200 + +gcc-4.9 (4.9.1-10) unstable; urgency=medium + + * Update to SVN 20140830 (r214751) from the gcc-4_9-branch. + * Fix jni symlinks in /usr/lib/jvm. Closes: #759558. + * Update the Linaro support from the Linaro/4.9 branch. + - Fixes Aarch64 cross build on i386. + + -- Matthias Klose Sat, 30 Aug 2014 04:47:19 +0200 + +gcc-4.9 (4.9.1-9) unstable; urgency=medium + + * Update to SVN 20140824 (r214405) from the gcc-4_9-branch. + * Fix -dumpversion output to print the full version number. + Addresses: #759038. LP: #1360404. + Use the GCC base version for the D include dir name. + + -- Matthias Klose Sun, 24 Aug 2014 10:09:28 +0200 + +gcc-4.9 (4.9.1-8) unstable; urgency=medium + + * Update to SVN 20140820 (r214215) from the gcc-4_9-branch. + * Fix PR middle-end/61294, -Wmemset-transposed-args, taken from the trunk. + LP: #1352836. + * Update the Linaro support to 4.9-2014.08. + * Fix PR tree-optimization/59586, graphite segfault, taken from the trunk. + LP: #1227789. + * Fix multilib castrated cross builds on mips64el (YunQiang Su, Helmut + Grohne). Closes: #758408. + * Apply Proposed patch for PR target/62040 (AArch64). LP: #1351227. + Closes: #757738. + + -- Matthias Klose Wed, 20 Aug 2014 11:36:40 +0200 + +gcc-4.9 (4.9.1-7) unstable; urgency=medium + + * Build-depend on dpkg-dev (>= 1.17.11). + + -- Matthias Klose Thu, 14 Aug 2014 22:12:29 +0200 + +gcc-4.9 (4.9.1-6) unstable; urgency=medium + + * Update to SVN 20140813 (r213955) from the gcc-4_9-branch. + * Really fix the GFDL build on AArch64. Closes: #757153. + * Disable Ada for snapshot builds on kfreebsd-i386, kfreebsd-amd64. + Local patch needs an update and upstreaming. + * Apply the local ada-mips patch for snapshot builds too. + * Disable Ada for snapshot builds on mips, mipsel. Bootstrap comparision + failure. Local patch needs upstreaming. + * Disable Ada for snapshot builds on hurd-i386, build dependencies are + not installable. + * Don't build the sanitizer libs for sparc snapshot builds. + * Proposed backport for PR libstdc++/61841. Closes: #749290. + + -- Matthias Klose Thu, 14 Aug 2014 17:53:43 +0200 + +gcc-4.9 (4.9.1-5) unstable; urgency=medium + + * Update to SVN 20140808 (r213759) from the gcc-4_9-branch. + - Fix PR tree-optimization/61964. LP: #1347147. + * Fix libphobos cross build. + + -- Matthias Klose Fri, 08 Aug 2014 17:28:55 +0200 + +gcc-4.9 (4.9.1-4) unstable; urgency=high + + * Update to SVN 20140731 (r213317) from the gcc-4_9-branch. + - CVE-2014-5044, fix integer overflows in array allocation in libgfortran. + Closes: #756325. + * Build libphobos on armel and armhf. Closes: #755390. + * Fix java.security symlink. Closes: #756484. + + -- Matthias Klose Thu, 31 Jul 2014 10:15:27 +0200 + +gcc-4.9 (4.9.1-3) unstable; urgency=medium + + * Update to SVN 20140727 (r213100) from the gcc-4_9-branch. + * Fix the GFDL build on AArch64. + * Fix PR libobjc/61920, libobjc link failure on powerpc*. Closes: #756096. + + -- Matthias Klose Sun, 27 Jul 2014 15:25:24 +0200 + +gcc-4.9 (4.9.1-2) unstable; urgency=medium + + * Update to SVN 20140724 (r213031) from the gcc-4_9-branch. + + * Fix installing test logs and summaries. + * Warn about ppc ELFv2 ABI issues, which will change in GCC 4.10. + * Don't gzip the xz compressed testsuite logs and summaries. + * Build libphobos on armel and armhf. Closes: #755390. + * Update the Linaro support to the 4.9-2014.07 release. + + -- Matthias Klose Thu, 24 Jul 2014 23:59:49 +0200 + +gcc-4.9 (4.9.1-1) unstable; urgency=medium + + * GCC 4.9.1 release. + * Update GDC form the 4.9 branch (20140712). + + -- Matthias Klose Wed, 16 Jul 2014 17:15:14 +0200 + +gcc-4.9 (4.9.0-11) unstable; urgency=medium + + * GCC 4.9.1 release candidate 1. + * Update to SVN 20140712 (r212479) from the gcc-4_9-branch. + - Fix PR middle-end/61725. Closes: #754548. + + * Add libstdc++ symbols files for mips64 and mips64el (Yunqiang Su). + Closes: #745372. + * Set java_cpu to ppc64 on ppc64el. + * Build AArch64 from the Linaro 4.9-2014.06 release. + * Re-enable running the testsuite on KFreeBSD and the Hurd. + * Re-enable running the libstdc++ testsuite on arm*, mips* and hppa. + + -- Matthias Klose Sat, 12 Jul 2014 13:10:46 +0200 + +gcc-4.9 (4.9.0-10) unstable; urgency=medium + + * Update to SVN 20140704 (r212295) from the gcc-4_9-branch. + + * Explicitly set cpu_32 to ultrasparc for sparc64 builds. + * Fix --with-long-double-128 for sparc32 when defaulting to 64-bit. + * Ignore missing libstdc++ symbols on armel and hppa. The future and + exception_ptr implementation is incomplete. For more information see + https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html. + + -- Matthias Klose Fri, 04 Jul 2014 15:55:09 +0200 + +gcc-4.9 (4.9.0-9) unstable; urgency=medium + + * Update to SVN 20140701 (r212192) from the gcc-4_9-branch. + * Update libstdc++ symbols files for ARM. + * Configure --with-cpu-32=ultrasparc on sparc64. + + -- Matthias Klose Tue, 01 Jul 2014 10:47:11 +0200 + +gcc-4.9 (4.9.0-8) unstable; urgency=medium + + * Update to SVN 20140624 (r211959) from the gcc-4_9-branch. + + * Don't ignore dpkg-shlibdeps errors for libstdc++6, left over from initial + 4.9 uploads. + * Update libgcc1 symbols for sh4. Closes: #751919. + * Stop building the libvtv packages. Not usable unless the build is + configured with --enable-vtable-verify, which comes with a performance + penalty just for the stubs in libstdc++. + * Update libstdc++ and libvtv symbols files for builds configured with + --enable-vtable-verify. + * Remove version requirement for dependency on make. Closes: #751891. + * Fix removal of python byte-code files in libstdc++6. Closes: #751435. + * Fix a segfault in the driver from calling free on non-malloc'd area. + * Drop versioned build dependency on gdb, and apply the pretty printer + patch for libstdc++ based on the release. + * Add support to build with isl-0.13. + + -- Matthias Klose Wed, 25 Jun 2014 20:08:09 +0200 + +gcc-4.9 (4.9.0-7) unstable; urgency=medium + + * Update to SVN 20140616 (r211699) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Fix patch application for powerpcspe (Helmit Grohne). Closes: #751001. + + Update context for powerpc_remove_many. + + Drop gcc-powerpcspe-ldbl-fix applied upstream. + + [ Aurelien Jarno ] + * Fix PR c++/61336, taken from the trunk. + + -- Matthias Klose Mon, 16 Jun 2014 10:59:16 +0200 + +gcc-4.9 (4.9.0-6) unstable; urgency=medium + + * Update to SVN 20140608 (r211353) from the gcc-4_9-branch. + * Fix -Wno-format when -Wformat-security is the default (Steve Beattie). + LP: #1317305. + * Don't install the libstdc++ pretty printer file into the debug directory, + but into the gdb auto-load directory. + * Fix the removal of the libstdc++6 package, removing byte-compiled pretty + printer files and pycache directories. + * Fix PR c++/61046, taken from the trunk. LP: #1313102. + * Fix installation of gcc-{ar,nm,ranlib} man pages for snapshot builds. + Closes: #745906. + * Update patches for snapshot builds. + + -- Matthias Klose Sun, 08 Jun 2014 11:57:07 +0200 + +gcc-4.9 (4.9.0-5) unstable; urgency=medium + + * Update to SVN 20140527 (r210956) from the gcc-4_9-branch. + * Limit systemtap-sdt-dev build dependency to enumerated linux architectures. + * Build libitm on AArch64, patch taken from the trunk. + * Update the testsuite to allow more testcases to pass with hardening options + turned on (Steve Beattie). LP: #1317307. + * Revert the fix for PR rtl-optimization/60969, causing bootstrap failure + on ppc64el. + * Fix PR other/61257, check for working sys/sdt.h. + * Drop the libstdc++-arm-wno-abi patch, not needed anymore in 4.9. + + -- Matthias Klose Tue, 27 May 2014 08:58:07 +0200 + +gcc-4.9 (4.9.0-4) unstable; urgency=medium + + * Update to SVN 20140518 (r210592) from the gcc-4_9-branch. + * Update the local ada-libgnatprj patch for AArch64. Addresses: #748233. + * Update the libstdc++v-python3 patch. Closes: #748317, #738341, 747903. + * Build-depend on systemtap-sdt-dev, on every architecure, doesn't seem to hurt + on architectures where it is not supported. Closes: #748315. + * Update the gcc-default-format-security patch (Steve Beattie). LP: #1317305. + * Apply the proposed patch for PR c/57653. Closes: #734345. + + -- Matthias Klose Sun, 18 May 2014 23:29:43 +0200 + +gcc-4.9 (4.9.0-3) unstable; urgency=medium + + * Update to SVN 20140512 (r210323) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Update build dependencies for ada enabled snapshot builds. + * Fix PR tree-optimization/60902, taken from the trunk. Closes: #746944. + * Ensure that the common libs (built from the next GCC version) are + available when building without common libs. + * Fix java.security symlink in libgcj15. Addresses: #746786. + * Move the libstdc++ gdb pretty printers into libstdc++6, install the + -gdb.py files into /usr/share/gdb/auto-load. + * Set the 'Multi-Arch: same' attribute for packages, cross built with + with_deps_on_target_arch_pkgs=yes (Helmit Grohne). Closes: #716795. + * Build the gcc-X.Y-base package with with_deps_on_target_arch_pkgs=yes + (Helmit Grohne). Addresses: #744782. + * Apply the proposed patches for PR driver/61106, PR driver/61126. + Closes: #747345. + + [ Aurelien Jarno ] + * Fix libasan1 symbols file for sparc and sparc64. + + -- Matthias Klose Tue, 13 May 2014 02:15:27 +0200 + +gcc-4.9 (4.9.0-2) unstable; urgency=medium + + * Update to SVN 20140503 (r210033) from the gcc-4_9-branch. + - Fix PR go/60931, garbage collector issue with non 4kB system page size. + LP: #1304754. + + [Matthias Klose] + * Fix libgcc-dev dependency on gcc, when not building libgcc. + * Fix gnat for snapshot builds on ppc64el. + * Update the libsanitizer build fix for sparc. + * Install only versioned gcc-ar gcc-nm gcc-ranlib binaries for the hppa64 + cross compiler. Install hppa64 alternatives. Addresses: #745967. + * Fix the as and ld symlinks for the hppa64 cross compiler. + * Add the gnat backport for AArch64. + * Update gnat patches not to use tabs and too long lines. + * libgnatvsn: Use CC and CXX passed from the toplevel makefile, drop gnat + build dependency on g++. Addresses: #746688. + + Merge from gnat-4.9 (4.9.0-1) unstable; urgency=low: + + [Ludovic Brenta] + * debian/patches/ada-hurd.diff: refresh for new upstream version that + restores POSIX compliance in System.OS_Interface.timespec. + * debian/patches/ada-kfreebsd.diff: make System.OS_Interface.To_Timespec + consistent with s-osinte-posix.adb. + [Nicolas Boulenguez] + * rules.conf (Build-Depends): mention gnat before gnat-x.y so that + buildds can bootstrap 4.9 in unstable. Fixes: #744724. + + -- Matthias Klose Sat, 03 May 2014 14:00:41 +0200 + +gcc-4.9 (4.9.0-1) unstable; urgency=medium + + * GCC 4.9.0 release. + * Update to SVN 20140423 (r209695) from the gcc-4_9-branch. + + [Matthias Klose] + * Fix PR target/59758 (sparc), libsanitizer build failure (proposed patch). + * Update gold architectures. + * Update NEWS files. + * Remove more mudflap left overs. Closes: #742606. + * Add new libraries src/libvtv and src/libcilkrts to + cross-ma-install-location.diff (Helmur Grohne). Closes: #745267. + * Let lib*gcc-dev depend on the corresponding libtsan packages. + * Build the liblsan packages (amd64 only). + * Install the libcilkrts spec file. + * Build the D frontend and libphobos from the gdc trunk. + + Merge from gnat-4.9 (4.9-20140411-1) unstable; urgency=medium + + [Nicolas Boulenguez] + * Revert g4.9-base to Architecture: all. Fixes: #743833. + * g4.9 Breaks/Replaces -base 4.6.4-2 and 4.9-20140330-1. Fixes: #743376. + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff: refresh. + + Merge from gnat-4.9 (4.9-20140406-1) experimental; urgency=low + + * debian/patches/ada-arm.diff: new. Improve support for ZCX on this + architecture. + * debian/patches/rules.patch: apply architecture- and Ada-specific + patches before Debian-specific patches. + * debian/patches/ada-link-lib.diff, + debian/patches/ada-libgnatvsn.diff, + debian/patches/ada-libgnatprj.diff: refresh for the new upstream + sources. + + Merge from gnat-4.9 (4.9-20140330-3) experimental; urgency=low + + [Nicolas Boulenguez] + * Install debian_packaging.mk to gnat-x.y, not -base. Fixes: #743375. + * rules.conf (Build-Depends): gnatgcc symlink provided by gnat-4.9 | + gnat-4.6 (>= 4.6.4-2) | gnat (>= 4.1 and << 4.6.1). + + Merge from gnat-4.9 (4.9-20140330-2) experimental; urgency=medium + + * Uploading to unstable was a mistake. Upload to experimental. + + Merge from gnat-4.9 (4.9-20140330-1) unstable; urgency=medium + + [Nicolas Boulenguez] + * patches/ada-ppc64.diff: replace undefined variable arch with + target_cpu; this overrides the patch proposed by Ulrich Weigand as + it is more correct; approved by Ludovic Brenta. Fixes: #742590. + * control.m4: Break/Replace: dh-ada-library 5.9. Fixes: #743219. + + Merge from gnat-4.9 (4.9-20140322-1) experimental; urgency=low + + [Nicolas Boulenguez] + * debian/control.m4: + (Suggests): suggest the correct version of ada-reference-manual. + (Vcs-Svn): specify the publicly accessible repository. + * Receive debian_packaging.mk from dh-ada-library (not library specific). + * Receive gnatgcc symlink from gnat (useful outside default compiler). + * debian/source/local-options: new. + + [Ludovic Brenta] + * debian/control.m4: conflict with gnat-4.7, gnat-4.8. + * debian/patches/ada-default-project-path.diff: when passed options such + as -m32 or -march, do not look for the RTS in + /usr/share/ada/adainclude but in + /usr/lib/gcc/$target_triplet/$version/{,rts-}$arch. Still look + for project files in /usr/share/ada/adainclude. + * debian/rules.d/binary-ada.mk, debian/rules.defs, debian/rules.patch: + Switch to ZCX by default on arm, armel, armhf; built SJLJ as the + package gnat-4.9-sjlj like on all other architectures. This is made + possible by the new upstream version. + * debian/patches/ada-hurd.diff (s-osinte-gnu.ads): change the type of + timespec.tv_nsec from long to time_t, for compatibility with + s-osinte-posix.adb, even though this violates POSIX. Better solution + to come from upstream. Fixes: #740286. + + -- Matthias Klose Wed, 23 Apr 2014 13:35:43 +0200 + +gcc-4.9 (4.9-20140411-2) unstable; urgency=medium + + * Disable running the testsuite on kfreebsd, hangs the buildds. + * Stop building the sanitizer libs on sparc, fails to build. No reaction + from the Debian port maintainers and upstream. See PR sanitize/59758. + + -- Matthias Klose Sat, 12 Apr 2014 15:42:34 +0200 + +gcc-4.9 (4.9-20140411-1) unstable; urgency=medium + + * GCC 4.9.0 release candidate 1. + * Configure for i586-linux-gnu on i386. + + -- Matthias Klose Fri, 11 Apr 2014 19:57:07 +0200 + +gcc-4.9 (4.9-20140406-1) experimental; urgency=medium + + [Matthias Klose] + * Include include and include-fixed header files into the stage1 + gcc-4.9 package. + * Explicitly configure with --disable-multilib on sparc64 when no + multilibs are requested (Helmut Grohne). Addresses: #743342. + * Drop mudflap from cross-install-location.diff since mudflap was removed + from gcc 4.9. Closes: #742606 + * Build gnat in ppc64el snapshot builds. + * Apply the ada-ppc64 patch for snapshot builds as well. + * Fix PR target/60609 (ARM), proposed patch (Charles Baylis). LP: #1295653. + * Include the gnu triplet prefixed gcov and gcc-{ar,nm,ranlib} binaries. + * Add replaces when upgrading from a standalone gccgo build. + + [Yunqiang Su] + * Lower default optimization for mips64/n32 to mips3/mips64(32). + Closes: #742617. + + -- Matthias Klose Sun, 06 Apr 2014 02:24:16 +0200 + +gcc-4.9 (4.9-20140330-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140330. + + [Matthias Klose] + * Update symbols files. + * debian/patches/ada-ppc64.diff: Fix for ppc64el (Ulrich Weigand). + * Fix cross building targeting x32 (Helmut Grohne). Addresses: #742539. + + [Ludovic Brenta] + * debian/control.m4 (Build-Depends), debian/rules.conf: remove + AUTOGEN_BUILD_DEP and hardcode autogen. It is called by + fixincludes/genfixes during bootstrap and also when building gnat-*, + not just when running checks on gcc-*. + + -- Matthias Klose Sun, 30 Mar 2014 09:46:29 +0100 + +gcc-4.9 (4.9-20140322-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140322. + - Fixes build error on the Hurd. Closes: #740153. + + [Matthias Klose] + * Re-apply lost patch for config.gcc for mips64el. Closes: #741543. + + Merge from gnat-4.9 (4.9-20140218-3) UNRELEASED; urgency=low + + [Nicolas Boulenguez] + * debian/control.m4: suggest the correct version of + ada-reference-manual. + + [Ludovic Brenta] + * debian/control.m4: conflict with gnat-4.7, gnat-4.8. + + Merge from gnat-4.9 (4.9-20140218-2) experimental; urgency=low + + * debian/patches/ada-hurd.diff (Makefile.in): match *86-pc-gnu but + not *86-linux-gnu, the target tripled used by GNU/Linux. + + Merge from gnat-4.9 (4.9-20140218-1) experimental; urgency=low + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff: refresh and fix compiler + warnings. + * debian/patches/ada-link-lib.diff (.../ada/gcc-interface/Make-lang.in): + do not try to install the gnattools, this is the job of + gnattools/Makefile.in. + * debian/patches/ada-ajlj.diff: specify EH_MECHANISM to sub-makes even + when making install-gnatlib. + + [Xavier Grave] + * debian/patches/ada-kfreebsd.diff: refresh. + * debian/rules.patch: re-enable the above. + + -- Matthias Klose Sat, 22 Mar 2014 14:19:43 +0100 + +gcc-4.9 (4.9-20140303-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140303. + + -- Matthias Klose Tue, 04 Mar 2014 02:13:20 +0100 + +gcc-4.9 (4.9-20140218-1) experimental; urgency=medium + + * Fix gij wrapper script on hppa. Closes: #739224. + + -- Matthias Klose Tue, 18 Feb 2014 23:59:31 +0100 + +gcc-4.9 (4.9-20140205-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140205. + * Install the libsanitizer spec file. + * Fix building standalone gccgo, including the libgcc packages. + * On AArch64, use "generic" target, if no other default. + + -- Matthias Klose Wed, 05 Feb 2014 12:53:52 +0100 + +gcc-4.9 (4.9-20140122-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140122. + * Update libstdc++ -dbg and -doc conflicts. + * Link libstdc++ tests requiring libpthread symbols with --no-as-needed. + * armhf: Fix ffi_call_VFP with no VFP arguments (Will Newton). + * Apply proposed patch for PR target/59799, allow passing arrays in + registers on AArch64 (Michael Hudson). + + -- Matthias Klose Wed, 22 Jan 2014 21:28:56 +0100 + +gcc-4.9 (4.9-20140116-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140116. + * Fix PR target/59588 (AArch64), backport proposed patch. LP: #1263576. + * Fix call frame information in ffi_closure_SYSV on AArch64. + + -- Matthias Klose Fri, 17 Jan 2014 00:31:19 +0100 + +gcc-4.9 (4.9-20140111-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140111. + * Update libstdc++ -dbg and -doc conflicts. Closes: #734913. + * Disable libcilkrts on KFreeBSD and the Hurd. See #734973. + + -- Matthias Klose Sat, 11 Jan 2014 13:11:16 +0100 + +gcc-4.9 (4.9-20140110-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140110. + + -- Matthias Klose Fri, 10 Jan 2014 18:03:07 +0100 + +gcc-4.9 (4.9-20140109-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot. + + -- Matthias Klose Thu, 09 Jan 2014 18:57:46 +0100 + +gcc-4.8 (4.8.2-11) unstable; urgency=low + + * Update to SVN 20131230 (r206241) from the gcc-4_8-branch. + * Don't build x32 multilibs for wheezy backports. + * Set the goarch to arm64 for aarch64-linux-gnu. + * Fix statically linked gccgo binaries on AArch64 (Michael Hudson). + LP: #1261604. + * Merge accumulated Ada changes from gnat-4.8. + * Update gnat build dependencies when not built from a separate source. + * Default to -mieee on alpha again (Michael Cree). Closes: #733291. + * Prepare gnat package for cross builds. + + -- Matthias Klose Mon, 30 Dec 2013 08:52:29 +0100 + +gcc-4.8 (4.8.2-10) unstable; urgency=low + + * Update to SVN 20131213 (r205948) from the gcc-4_8-branch. + * Add missing commit in libjava for gcc-linaro. + + -- Matthias Klose Fri, 13 Dec 2013 01:01:47 +0100 + +gcc-4.8 (4.8.2-9) unstable; urgency=low + + * Update to SVN 20131212 (r205924) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Fix libitm symbols files for ppc64. + * Update libatomic symbol file for arm64 and ppc64. + * libgcj-dev: Drop dependencies on gcj-jre-lib and gcj-jdk. + * Fix permissions of some override files. + * Let cross compilers conflict with gcc-multilib (providing + /usr/include/asm for the non-default multilib). + * Configure --with-long-double-128 on powerpcspe (Roland Stigge). + Closes: #731941. + * Update the Linaro support to the 4.8-2013.12 release. + * Update the ibm branch to 20131212. + + [ Aurelien Jarno ] + * patches/note-gnu-stack.diff: restore and rebase lost parts. + + -- Matthias Klose Thu, 12 Dec 2013 12:34:55 +0100 + +gcc-4.8 (4.8.2-8) unstable; urgency=medium + + * Update to SVN 20131203 (r205647) from the gcc-4_8-branch. + * Fix PR libgcc/57363, taken from the trunk. + + -- Matthias Klose Wed, 04 Dec 2013 01:21:10 +0100 + +gcc-4.8 (4.8.2-7) unstable; urgency=low + + * Update to SVN 20131129 (r205535) from the gcc-4_8-branch. + * Introduce aarch64 goarch. + * libgo: Backport fix for calling a function or method that takes or returns + an empty struct via reflection. + * go frontend: Backport fix for the generated hash functions of types that + are aliases for structures containing unexported fields. + * Skip Go testcase on AArch64 which hangs on the buildds. + * Fix freetype includes in libjava/classpath. + + -- Matthias Klose Fri, 29 Nov 2013 18:19:12 +0100 + +gcc-4.8 (4.8.2-6) unstable; urgency=low + + * Update to SVN 20131128 (r205478) from the gcc-4_8-branch. + + [ Matthias Klose ] + * gcc-4.8-base: Breaks gcc-4.4-base (<< 4.4.7). Closes: #729963. + * Update the gcc-as-needed patch for mips*. Closes: #722067. + * Use dpkg-vendor information for distribution specific settings. + Closes: #697805. + * Check for the sys/auxv.h header file. + * On AArch64, make the frame grow downwards, taken from the trunk. + Enable ssp on AArch64. + * Pass -fuse-ld=gold to gccgo on targets supporting split-stack. + + [ Aurelien Jarno ] + * Update README.Debian for s390 and s390x. + + [ Thorsten Glaser ] + * m68k-ada.diff: Add gcc-4.8.0-m68k-ada-pr48835-2.patch and + gcc-4.8.0-m68k-ada-pr51483.patch by Mikael Pettersson, to + fix more CC0-specific and m68k/Ada-specific problems. + * m68k-picflag.diff: New, backport from trunk, by Andreas Schwab, + to avoid relocation errors when linking big shared objects. + * pr58369.diff: New, backport from trunk, by Jeffrey A. Law, + to fix ICE while building boost 1.54 on m68k. + * pr52306.diff: Disables -fauto-inc-dec by default on m68k to + work around ICE when building C++ code (e.g. Qt-related). + + -- Matthias Klose Thu, 28 Nov 2013 10:29:09 +0100 + +gcc-4.8 (4.8.2-5) unstable; urgency=low + + * Update to SVN 20131115 (r204839) from the gcc-4_8-branch. + * Update the Linaro support to the 4.8-2013.11 release. + * Add missing replaces in libgcj14. Closes: #729022. + + -- Matthias Klose Sat, 16 Nov 2013 20:15:09 +0100 + +gcc-4.8 (4.8.2-4) unstable; urgency=low + + * Really fix disabling the gdc tests. + + -- Matthias Klose Wed, 13 Nov 2013 00:44:35 +0100 + +gcc-4.8 (4.8.2-3) unstable; urgency=low + + * Update to SVN 20131112 (r204704) from the gcc-4_8-branch. + * Don't ship java.security in both libgcj14 and gcj-4.8-headless. + Closes: #729022. + * Disable gdc tests on architectures without libphobos port. + + -- Matthias Klose Tue, 12 Nov 2013 18:08:44 +0100 + +gcc-4.8 (4.8.2-2) unstable; urgency=low + + * Update to SVN 20131107 (r204496) from the gcc-4_8-branch. + * Build ObjC, Obj-C++ and Go for AArch64. + * Fix some gcj symlinks. Closes: #726792, #728403. + * Stop building libmudflap (removed in GCC 4.9). + + -- Matthias Klose Thu, 07 Nov 2013 01:40:15 +0100 + +gcc-4.8 (4.8.2-1) unstable; urgency=low + + * GCC 4.8.2 release. + + * Update to SVN 20131017 (r203751) from the gcc-4_8-branch. + * Update the Linaro support to the 4.8-2013.10 release. + * Fix PR c++/57850, option -fdump-translation-unit not working. + * Don't run the testsuite on aarch64. + * Fix PR target/58578, wrong-code regression on ARM. LP: #1232017. + * [ARM] Fix bug in add patterns due to commutativity modifier, + backport from trunk. LP: #1234060. + * Build libatomic on AArch64. + * Fix dependency generation for the cross gcc-4.8 package. + * Make the libstdc++ pretty printers compatible with Python3, if + gdb is built with Python3 support. + * Fix loading of libstdc++ pretty printers. Closes: #701935. + * Don't let gcc-snapshot build-depend on gnat on AArch64. + + -- Matthias Klose Thu, 17 Oct 2013 14:37:55 +0200 + +gcc-4.8 (4.8.1-10) unstable; urgency=low + + * Update to SVN 20130904 (r202243) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Don't rely on the most recent Debian release name for configuration + of the package. Addresses: #720263. Closes: #711824. + * Fix a cross build issue without DEB_* env vars set (Eleanor Chen). + Closes: #718614. + * Add packaging support for mips64(el) and mipsn32(el) including multilib + configurations (YunQiang Su). Addresses: #708143. + * Fix gcc dependencies for stage1 builds (YunQiang Su). Closes: #710240. + * Fix boehm-gc test failures with a linker defaulting to + --no-copy-dt-needed-entries. + * Fix libstdc++ and libjava test failures with a linker defaulting + to --as-needed. + * Mark the libjava/sourcelocation test as expected to fail on amd64 cpus. + * Fix some gcc and g++ test failures for a compiler with hardening + defaults enabled. + * Fix gcc-default-format-security.diff for GCC 4.8. + * Run the testsuite again on armel and armhf. + * Disable running the testsuite on mips. Fails on the buildds, preventing + migration to testing for three months. No feedback from the mips porters. + + [ Thorsten Glaser ] + * Merge several old m68k-specific patches from gcc-4.6 package: + - libffi-m68k: Rebased against gcc-4.8 and libffi 3.0.13-4. + - m68k-revert-pr45144: Needed for Ada. + - pr52714: Revert optimisation that breaks CC0 arch. + * Fix PR49847 (Mikael Pettersson). Closes: #711558. + * Use -fno-auto-inc-dec for PR52306 (Mikael Pettersson). + + -- Matthias Klose Wed, 04 Sep 2013 21:30:07 +0200 + +gcc-4.8 (4.8.1-9) unstable; urgency=low + + * Update to SVN 20130815 (r201764) from the gcc-4_8-branch. + * Enable gomp on AArch64. + * Update the Linaro support to the 4.8-2013.08 release. + + -- Matthias Klose Thu, 15 Aug 2013 10:47:38 +0200 + +gcc-4.8 (4.8.1-8) unstable; urgency=low + + * Fix PR rtl-optimization/57878, taken from the 4.8 branch. + * Fix PR target/57909 (ARM), Linaro only. + + -- Matthias Klose Mon, 22 Jul 2013 13:03:57 +0200 + +gcc-4.8 (4.8.1-7) unstable; urgency=low + + * Update to SVN 20130717 (r200995) from the gcc-4_8-branch. + - Go 1.1.1 updates. + * Define CPP_SPEC for aarch64. + * Don't include in libgcc/libgcc2.c, taken from the trunk. + Closes: #696267. + * boehm-gc: use mmap instead of brk also on kfreebsd-* (Petr Salinger). + Closes: #717024. + + -- Matthias Klose Thu, 18 Jul 2013 02:02:13 +0200 + +gcc-4.8 (4.8.1-6) unstable; urgency=low + + * Update to SVN 20130709 (r200810) from the gcc-4_8-branch. + + [ Aurelien Jarno ] + * Add 32-bit biarch packages on sparc64. + + [ Matthias Klose ] + * Fix multiarch include path for aarch64. + * Update the Linaro support to the 4.8-2013.07 release. + * Revert the proposed fix for PR target/57637 (ARM only). + * Let gfortran-4.8 provide gfortran-mod-10. Addresses #714730. + + [ Iain Buclaw ] + * Avoid compiler warnings redefining D builtin macros. + + -- Matthias Klose Tue, 09 Jul 2013 16:18:16 +0200 + +gcc-4.8 (4.8.1-5) unstable; urgency=low + + * Update to SVN 20130629 (r200565) from the gcc-4_8-branch. + + [ Aurelien Jarno ] + * Don't pass --with-mips-plt on mips/mipsel. + + [ Matthias Klose ] + * Fix documentation builds with texinfo-5.1. + * Update the ARM libsanitizer backport from the 4.8 Linaro branch. + * libphobos-4.8-dev provides libphobos-dev (Peter de Wachter). + * The gdc cross compiler doesn't depend on libphobos-4.8-dev. + * Work around libgo build failure on ia64. PR 57689. #714090. + * Apply proposed fix for PR target/57637 (ARM only). + + -- Matthias Klose Sat, 29 Jun 2013 14:59:45 +0200 + +gcc-4.8 (4.8.1-4) unstable; urgency=low + + * Update to SVN 20130619 (r200219) from the gcc-4_8-branch. + - Bump the libgo soname (change in type layout for functions that take + function arguments). + - Fix finding the liblto_plugin.so without x permissions set (see + PR driver/57651). Closes: #712704. + * Update maintainer list. + * Fall back to the binutils version of the binutils build dependency + if the binutils version used for the build cannot be determined. + * For ARM multilib builds, use libsf/libhf system directories to lookup + files for the non-default multilib (for now, only for the cross compilers). + * Split out a gcj-4.8 package, allow to build a gcj cross compiler. + * Allow one to cross build gcj. + * Don't include object.di in the D cross compiler, but depend on gdc instead. + * Allow one to cross build gdc. + * Pass --hash-style=gnu instead of --hash-style=both to the linker. + + -- Matthias Klose Wed, 19 Jun 2013 23:48:02 +0200 + +gcc-4.8 (4.8.1-3) unstable; urgency=low + + * Update to SVN 20130612 (r200018) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Prepare gdc for cross builds, and multiarch installation. + * Prepare gnat to build out of the gcc-4.8 source package, not + building the gnat-4.8-base package anymore. + * Don't build a gcj cross compiler by default (not yet tested). + * Disable D on s390 (doesn't terminate the D testsuite). + * Build libphobos on x32. + * Fix build with DEB_BUILD_OPTIONS="nolang=d". + * Disable D for arm64. + * Update the Linaro support to the 4.8-2013.06 release. + * Fix cross building a native compiler. + * Work around dh_shlibdeps not working on target libraries (see #698881). + * Add build dependency on kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any]. + * Add handling for unwind inside signal trampoline for kfreebsd (Petr + Salinger). Closes: #712016. + * Let gcc depend on the binutils upstream version it was built with. + Addresses #710142. + * Force a build using binutils 2.23.52 in unstable. + + [ Iain Buclaw ] + * Update gdc to 20130610. + * Build libphobos on kFreeBSD. + + -- Matthias Klose Wed, 12 Jun 2013 16:47:25 +0200 + +gcc-4.8 (4.8.1-2) unstable; urgency=low + + * Update to SVN 20130604 (r199596) from the gcc-4_8-branch. + * Force arm mode for libjava on armhf. + * Fix gdc build failure on kFreeBSD and the Hurd. + + -- Matthias Klose Tue, 04 Jun 2013 17:28:06 +0200 + +gcc-4.8 (4.8.1-1) unstable; urgency=low + + * GCC 4.8.1 release. + Support for C++11 ref-qualifiers has been added to GCC 4.8.1, making G++ + the first C++ compiler to implement all the major language features of + the C++11 standard. + * Update to SVN 20130603 (r199596) from the gcc-4_8-branch. + * Build java packages from this source package. Works aroud ftp-master's + overly strict interpretation of the Built-Using attribute. + * Build D and libphobos packages from this source package. + * Disable the non-default multilib test runs for libjava and gnat. + + -- Matthias Klose Mon, 03 Jun 2013 09:28:11 +0200 + +gcc-4.8 (4.8.0-9) unstable; urgency=low + + * Update to SVN 20130529 (r199410) from the gcc-4_8-branch. + * Drop build dependency on automake, not used anymore. + * Build with binutils from unstable (the 4.8.0-8 package was accidentally + built with binutils from experimental). Closes: #710142. + * Explicity configure with --disable-lib{atomic,quadmath,sanitizer} when + not building these libraries. Closes: #710224. + + -- Matthias Klose Wed, 29 May 2013 16:59:50 +0200 + +gcc-4.8 (4.8.0-8) unstable; urgency=medium + + * Update to SVN 20130527 (r199350) from the gcc-4_8-branch (4.8.1 rc2). + - Fix PR tree-optimization/57230 (closes: #707118). + + * Remove gdc-doc.diff. + * libgo: Overwrite the setcontext_clobbers_tls check on mips*, fails + on some buildds. + * Update the Linaro support to the 4.8-2013.05 release. + * Use the %I spec when building the object file for the gcj main function. + * Fix PR c++/57211, don't warn about unused parameters of defaulted + functions. Taken from the trunk. Closes: #705066. + * Update symbols files for powerpcspe (Roland Stigge). Closes: #709383. + * Build zh_TW.UTF-8 locale to fix libstdc++ test failures. + * Keep prev-* symlinks to fix plugin.exp test failures. + + -- Matthias Klose Mon, 27 May 2013 15:43:08 +0200 + +gcc-4.8 (4.8.0-7) unstable; urgency=medium + + * Update to SVN 20130512 (r198804) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Revert the r195826 patch, backported for the 4.8 branch. + * Tighten build dependency on libmpc-dev to ensure using libmpc3. + * Re-add build dependency on locales. + * Enable multilib build for gdc. + * Add build-deps on libn32gcc1 and lib64gcc1 on mips/mipsel. + * Fix libgcc-dbg dependencies on hppa and m68k. Closes: #707745. + * Install host specific libstdc++ headers into the host include dir. + Closes: #707753. + * Enable Go for sparc64. + * Fix host specific c++ include dir on kfreebsd-amd64. Closes: #707957. + + [ Thorsten Glaser ] + * Regenerate m68k patches. Closes: #707766. + + [ Aurelien Jarno ] + * Fix libgcc1 symbols file for sparc64. + + -- Matthias Klose Sun, 12 May 2013 19:26:50 +0200 + +gcc-4.8 (4.8.0-6) unstable; urgency=low + + * Update to SVN 20130507 (r198699) from the gcc-4_8-branch. + + [ Samuel Thibault ] + * Backport r195826 to fix gdb build on hurd-i386. + + [ Matthias Klose ] + * Drop build dependency on locales for this upload. + + -- Matthias Klose Wed, 08 May 2013 01:17:15 +0200 + +gcc-4.8 (4.8.0-5) unstable; urgency=low + + * Update to SVN 20130506 (r198641) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Stop building the spu cross compilers on powerpc and ppc64. + * Merge back changes from gnat-4.8 4.8.0-1~exp2. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.diff: do not include indepsw.o in the + library, it is used only in the gnattools. + + -- Matthias Klose Mon, 06 May 2013 21:49:44 +0200 + +gcc-4.8 (4.8.0-4) experimental; urgency=low + + * Update to SVN 20130421 (r198115) from the gcc-4_8-branch. + * Ignore the return value for dh_shlibdeps for builds on precise/ARM. + * Use target specific names for libstdc++ baseline files. LP: #1168267. + * Update gcc-d-lang.diff for GDC port. + * Don't use extended libstdc++-doc build dependencies for older releases. + * In gnatlink, pass the options and libraries after objects to the + linker to avoid link failures with --as-needed. Addresses: #680292. + * Build gcj for aarch64-linux-gnu. + * Update the Linaro support to the 4.8-2013.04 release. + * Fix gdc build on architectures not providing libphobos. + + -- Matthias Klose Mon, 22 Apr 2013 01:36:19 +0200 + +gcc-4.8 (4.8.0-3) experimental; urgency=low + + * Update to SVN 20130411 (r197813) from the gcc-4_8-branch. + + [ Iain Buclaw ] + * Port GDC to GCC 4.8.0 release. + + -- Matthias Klose Thu, 11 Apr 2013 19:18:24 +0200 + +gcc-4.8 (4.8.0-2) experimental; urgency=low + + * Update to SVN 20130328 (r197185) from the gcc-4_8-branch. + * Update NEWS files. + * Apply proposed patch for PR c++/55951. Closes: #703945. + * Configure with --disable-libatomic for hppa64. Closes: #704020. + + -- Matthias Klose Thu, 28 Mar 2013 06:10:29 +0100 + +gcc-4.8 (4.8.0-1) experimental; urgency=low + + * GCC 4.8.0 release. + * Fix build failure on powerpcspe (Roland Stigge). Closes: #703074. + + -- Matthias Klose Fri, 22 Mar 2013 07:47:12 -0700 + +gcc-4.8 (4.8-20130318-1) experimental; urgency=low + + * GCC snapshot 20130318, taken from the trunk. + - Fix the build failures on ARM. + * Install the libasan_preinit.o files. Closes: #703229. + + -- Matthias Klose Mon, 18 Mar 2013 16:18:25 -0700 + +gcc-4.8 (4.8-20130315-1) experimental; urgency=low + + * GCC snapshot 20130315, taken from the trunk. + + -- Matthias Klose Fri, 15 Mar 2013 18:51:15 -0700 + +gcc-4.8 (4.8-20130308-1) experimental; urgency=low + + * GCC snapshot 20130308, taken from the trunk. + + -- Matthias Klose Fri, 08 Mar 2013 12:08:12 +0800 + +gcc-4.8 (4.8-20130222-1) experimental; urgency=low + + * GCC snapshot 20130222, taken from the trunk. + * Update libasan symbols files. + + -- Matthias Klose Sat, 23 Feb 2013 04:47:15 +0100 + +gcc-4.8 (4.8-20130217-1) experimental; urgency=low + + * GCC snapshot 20130217, taken from the trunk. + + * Update libasan symbols files. + * On alpha, link with --no-relax. Update libgcc1 symbols files (Michael + Cree). Closes: #699220. + + -- Matthias Klose Mon, 18 Feb 2013 03:12:31 +0100 + +gcc-4.8 (4.8-20130209-1) experimental; urgency=low + + * GCC snapshot 20130209, taken from the trunk. + + [ Matthias Klose ] + * Add a Build-Using attribute for each binary package, which can be + built from the gcc-4.7-source package (patch derived from a proposal by + Ansgar Burchardt). + - Use it for cross-compiler packages. + - Not yet used when building gcj, gdc or gnat using the gcc-source package. + These packages don't require an exact version of the gcc-source package, + but just a versions which is specified by the build dependencies. + * Fix dh_shlibdeps calls for the libgo packages. + * libstdc-doc: Depend on libjs-jquery. + * Update libstdc++ symbols files. + * Downgrade the priority of the non-default multilib libasan packages. + + [ Thibaut Girka ] + * Fix dh_shlibdeps and dh_gencontrol cross-build mangling for + libgfortran-dev packages. + + -- Matthias Klose Sat, 09 Feb 2013 17:00:06 +0100 + +gcc-4.8 (4.8-20130127-1) experimental; urgency=low + + * GCC snapshot 20130127, taken from the trunk. + + [ Matthias Klose ] + * Fix MULTILIB_OS_DIRNAME for the default multilib on x32. + + [ Thibaut Girka ] + * Fix installation path for libatomic and libsanitizer when building a + cross-compiler with with_deps_on_target_arch_pkgs. + * Fix regexp used to list patched autotools files. + + -- Matthias Klose Sun, 27 Jan 2013 21:02:34 +0100 + +gcc-4.8 (4.8-20130113-1) experimental; urgency=low + + * GCC snapshot 20130113, taken from the trunk. + * Always configure --with-system-zlib. + * Search library dependencies in the build-sysroot too. + * Don't complain about missing .substvars files when trying to mangle + these files. + * Add ARM multilib packages to the control file for staged cross builds. + * Fix ARM multilib shlibs dependency generation for cross builds. + * Don't call dh_shlibdeps for staged cross builds. These packages + are never shipped, and the information is irrelevant. + * Build the libasan and libtsan packages before libstdc++. + * Bump build dependencies on isl and cloog. + * Don't ship libiberty.a in gcc-4.8-hppa64. Closes: #659556. + + -- Matthias Klose Sun, 13 Jan 2013 16:42:33 +0100 + +gcc-4.8 (4.8-20130105-1) experimental; urgency=low + + * GCC snapshot 20130105, taken from the trunk. + * Keep the debug link for libstdc++6. Closes: #696854. + * Update libgfortran symbols file for the trunk. + * Fix libstdc++ symbols files for sparc 128bit symbols. + * Update libgcc and libstdc++ symbols files for s390. + * Keep the rt.jar symlink in the gcj-jre-headless package. + * Explicitly search multiarch and multilib system directories when + calling dh_shlibdeps. + * Let gjdoc accept -source 1.5|1.6|1.7. Addresses: #678945. + * Fix build configured with --enable-java-maintainer-mode. + * Don't ship .md5 files in the libstdc++-doc package. + + -- Matthias Klose Sat, 05 Jan 2013 13:47:51 +0100 + +gcc-4.8 (4.8-20130102-1) experimental; urgency=low + + * GCC snapshot 20130102, taken from the trunk. + + [ Matthias Klose ] + * Resolve libgo dependencies with the built runtime libraries. + * Fix g++-4.8-multilib dependencies. + + [ Thibaut Girka ] + * Prepare for optional dependencies on the packages built on the + target architecture. + * When using the above, + - use the same settings for gcc_lib_dir, sysroot, header and C++ header + locations as for the native build. + - install libraries into the multiarch directories. + - use cpp-4.x- instead of gcc-4.x-base to collect doc files. + + -- Matthias Klose Wed, 02 Jan 2013 14:51:59 +0100 + +gcc-4.8 (4.8-20121218-1) experimental; urgency=low + + * GCC snapshot 20121217, taken from the trunk. + * Fix dependency generation for asan and atomic multilibs. + * Fix libobjc-dbg dependencies on libgcc-dbg packages. + * Fix MULTIARCH_DIRNAME definition for powerpcspe (Roland Stigge). + Closes: #695661. + * Move .jar symlinks from the -jre-lib into the -jre-headless package. + + -- Matthias Klose Tue, 18 Dec 2012 16:44:42 +0100 + +gcc-4.8 (4.8-20121217-1) experimental; urgency=low + + * GCC snapshot 20121217, taken from the trunk. + * Fix package builds with the common libraries provided by a newer + gcc-X.Y package. + * Drop build-dependency on libelf. + * Drop the g++-multilib build dependency, use the built compiler to + check which multilib variants can be run. Provide an asm symlink for + the build. + * Stop configuring cross compilers --with-headers --with-libs. + * Always call dh_shlibdeps with -l, pointing to the correct dependency + packages. + * Fix cross build stage1 package installation, only including the target + files in the gcc package. + * Explicitly configure with --enable-multiarch when doing builds + supporting the multiarch layout. + * Only configure --with-sysroot, --with-build-sysroot when values are set. + * Revert: For stage1 builds, include gcc_lib_dir files in the gcc package. + * Allow multilib enabled stage1 and stage2 cross builds. + * Don't check glibc version to configure --with-long-double-128. + * Don't auto-detect multilib osdirnames. + * Don't set a LD_LIBRARY_PATH when calling dh_shlibdeps in cross builds. + * Allow building a gcj cross compiler. + * Pretend that wheezy has x32 support (sid is now known as wheezy :-/). + + -- Matthias Klose Mon, 17 Dec 2012 18:37:14 +0100 + +gcc-4.8 (4.8-20121211-1) experimental; urgency=low + + * GCC snapshot 20121211, taken from the trunk. + * Fix build failure on multilib configurations. + + -- Matthias Klose Tue, 11 Dec 2012 08:04:30 +0100 + +gcc-4.8 (4.8-20121210-1) experimental; urgency=low + + * GCC snapshot 20121210, taken from the trunk. + * For cross builds, don't use the multiarch location for the C++ headers. + * For cross builds, fix multilib inter package dependencies. + * For cross builds, fix libc6 dependencies for non-default multilib packages. + * Build libasan packages on powerpc, ppc64. + * Only run the libgo testsuite for flags configured in RUNTESTFLAGS. + * Remove the cross-includes patch, not needed anymore with --with-sysroot=/. + * For cross builds, install into /usr/lib/gcc-cross to avoid file conflicts + with the native compiler for the target architecture. + * For cross builds, don't add /usr/local/include to the standard include + path, however /usr/local/include/ is still on the path. + * For cross builds, provide symbols files based on the symbols files for + the native build. Not picked up by dh_makeshlibs yet. + * Drop the g++-multilib build dependency, use the built compiler to + check which multilib variants can be run. + * Fix spu cross build on powerpc/ppc64. + * Make libgcj packages Multi-Arch: same, append the Debian architecture + name to the gcj java home. + * Don't encode versioned build dependencies on binutils and dpkg-dev in + the control file (makes the package cross-buildable). + * Only include gengtype for native builds. Needs upstream changes. + See #645018. + * Fix cross build failure with --enable-libstdcxx-debug. + * Only install libbacktrace if it is built. + * When cross building the native compiler, configure --with-sysroot=/ + and without --without-isl. + + -- Matthias Klose Mon, 10 Dec 2012 14:40:14 +0100 + +gcc-4.8 (4.8-20121128-1) experimental; urgency=low + + [ Matthias Klose ] + * Update patches for GCC 4.8. + * Update debian/copyright for libatomic, libbacktrace, libsanitizer. + * Remove the soversion from the libstdc++*-dev packages. + * Build libatomic and libasan packages. + * Install the static libbacktrace library and header files. + * Update build-indep dependencies for building the libstdc++ docs. + * Fix build failure in libatomic with x32 multilibs, handle -mx32 like -m64. + * Apply proposed fix for PR fortran/55395, supposed to fix the build + failure on armhf and powerpc. + * For hardened builds, disable gcc-default-format-security for now, causing + build failure building the target libstdc++ library. + * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. + * Fix gnat build failure on kfreebsd. + * Rename the gccgo info to gccgo-4.8 on installation. + * Install the libitm documentation (if built). + * Rename the gccgo info to gccgo-4.8 on installation, install into gccgo-4.8. + * Include libquadmath documentation in the gcc-4.8-doc package. + * Build libtsan packages. + * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. + * For stage1 builds, include gcc_lib_dir files in the gcc package. + * Point to gcc's README.Bugs when building gcj packages. Addresses: #623987. + + [ Thibaut Girka ] + * Fix libstdc++ multiarch include path for cross builds. + + -- Matthias Klose Sun, 28 Nov 2012 12:55:27 +0100 + +gcc-4.7 (4.7.2-12) experimental; urgency=low + + * Update to SVN 20121127 (r193840) from the gcc-4_7-branch. + - Fix PR middle-end/55331 (ice on valid), PR tree-optimization/54976 (ice + on valid), PR tree-optimization/54894 (ice on valid), + PR middle-end/54735 (ice on valid), PR c++/55446 (wrong code), + PR fortran/55314 (rejects valid). + + [ Matthias Klose ] + * Fix x32 multiarch name (x86_64-linux-gnux32). + * gcc-4.7-base: Add break to gcc-4.4-base (<< 4.4.7). Closes: #690172. + * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. + * For stage1 builds, include gcc_lib_dir files in the gcc package. + + [ Thibaut Girka ] + * Fix libstdc++ multiarch include path for cross builds. + + -- Matthias Klose Tue, 27 Nov 2012 11:02:10 +0100 + +gcc-4.7 (4.7.2-11) experimental; urgency=low + + * Update to SVN 20121124 (r193776) from the gcc-4_7-branch. + - Fix PR libgomp/55411, PR libstdc++/55413, PR middle-end/55142, + PR fortran/55352. + + * Update build-indep dependencies for building the libstdc++ docs. + * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. + * Pass --hash-style=gnu instead of --hash-style=both. + * Link using --hash-style=gnu on arm64 by default. + * Split multiarch patches into local and upstreamed parts. + * Fix PR54974: Thumb literal pools don't handle PC rounding (Matthew + Gretton-Dann). LP: #1049614, #1065509. + * Rename the gccgo info to gccgo-4.7 on installation, install into gccgo-4.7. + * Include libquadmath documentation in the gcc-4.7-doc package. + * Don't pretend to understand .d files, no D frontend available for 4.7. + * Fix the multiarch c++ include path for multilib'd targets. LP: #1082344. + * Make explicit --{en,dis}able-multiarch options effecitive (Thorsten Glaser). + + -- Matthias Klose Sat, 24 Nov 2012 03:57:00 +0100 + +gcc-4.7 (4.7.2-10) experimental; urgency=low + + * Update to SVN 20121118 (r193598) from the gcc-4_7-branch. + - Fix PR target/54892 (ARM, LP: #1065122), PR rtl-optimization/54870, + PR rtl-optimization/53701, PR target/53975 (ia64), + PR tree-optimization/54902 (LP: #1065559), PR middle-end/54945, + PR target/55019 (ARM), PR c++/54984, PR target/55175, + PR tree-optimization/53708, PR tree-optimization/54985, + PR libstdc++/55169, PR libstdc++/55047, PR libstdc++/55123, + PR libstdc++/54075, PR libstdc++/28811, PR libstdc++/54482, + PR libstdc++/55028, PR libstdc++/55215, PR middle-end/55219, + PR tree-optimization/54986, PR target/55204, PR debug/54828, + PR tree-optimization/54877, PR c++/54988, PR other/52438, + PR fortran/54917, PR libstdc++/55320, PR libstdc++/53841. + + [ Matthias Klose ] + * Update the Linaro support to the 4.7-2012.11 release. + * Define MULTIARCH_DIRNAME for arm64 (Wookey). + * Let the lib*objc-dev packages depend on the lib*gcc-dev packages. + * Let the libstdc++-dev package depend on the libgcc-dev package. + * Drop the dependency of the libstdc++-dev package on g++, make + libstdc++-dev and libstdc++-pic Multi-Arch: same. Closes: #678623. + * Install override files before calling dh_fixperms. + * Backport the libffi arm64 port. + * Build libx32gcc-dev, libx32objc-dev and libx32gfortran-dev packages. + * Allow conditional building of the x32 multilibs. + * Fix libmudflap build failure for x32 multilibs. + * Fix dependency on glibc for triarch builds. + * Add build-{arch,indep} targets. + * Fix libquadmath x32 multilib builds on kernels which don't support x32. + * Fix location of x32 specific C++ header files. + * Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++, + only if the optimization level is > 0. + * Keep the host alias when building multilib libraries which need to + be cross-built on some architectures/buildds. + * Update arm64 from the aarch64 branch 20121105. + * Fix PR other/54411, libiberty: objalloc_alloc integer overflows + (CVE-2012-3509). + * Use /usr/include//c++/4.x as the include directory + for host dependent c++ header files. + * Add alternative libelf-dev build dependency. Closes: #690952. + * Always build the aarch64-linux-gnu target from the Linaro branch. + * Add __gnu_* symbols to the libgcc1 symbols file for armel and armhf. + * For powerpcspe prevent floating point register handling when there + are none available (Roland Stigge). Closes: #693328. + * Don't apply hurd-pthread.diff for trunk builds, integrated + upstream (Samuel Thibault). Addresses: #692538. + * Again, suggest graphite runtime dependencies. + * Clean up libstdc++ man pages. Closes: #692445. + + [ Thibaut Girka ] + * Split out lib*gcc-dev packages. + * Split out lib*objc-dev packages. + * Split out lib*gfortran-dev packages. + + [ Daniel Schepler ] + * Add support for x32. Closes: #667005. + * New patch hjl-x32-gcc-4_7-branch.diff to incorporate changes from + that branch, including --with-abi=mx32 option. + * Split out lib*stdc++-dev packages. + + [ Marcin Juszkiewicz ] + * lib*-dev packages for cross builds are not Multi-Arch: same. LP: #1070694. + * Remove conflicts for armhf/armel cross packages. + + -- Matthias Klose Sun, 18 Nov 2012 17:54:15 +0100 + +gcc-4.7 (4.7.2-4) unstable; urgency=low + + * Fix PR c++/54858 (ice on valid), taken from the branch. + * Build again Go on armel and armhf. + + -- Matthias Klose Tue, 09 Oct 2012 12:00:59 +0200 + +gcc-4.7 (4.7.2-3) unstable; urgency=low + + * Revert the fix PR c/33763, and just disable the sorry message, + taken from the branch. Closes: #678589. LP: #1062343. + * Update libgo to 1.0.3. + * Go fixes: + - Fix a, b, c := b, a, 1 when a and b already exist. + - Fix some type reflection strings. + - Fix parse of (<- chan <- chan <- int)(x). + - Fix handling of omitted expression in switch. + - Better error for switch on non-comparable type. + * Fix PR debug/53135 (ice on valid), PR target/54703 (x86, wrong code), + PR c++/54777 (c++11, rejects valid), taken from the 4.7 branch. + * gcc-4.7-base: ensure smooth upgrades from squeeze by adding + Breaks: gcj-4.4-base (<< 4.4.6-9~), gnat-4.4-base (<< 4.4.6-3~) + as in gcc-4.4-base (multiarch patches re-worked in 4.6.1-8/4.4.6-9). + Fixes some squeeze->wheezy upgrade paths where apt chooses to hold back + gcc-4.4-base and keep gcj-4.4-base installed instead of upgrading + gcc-4.4-base and removing the obsolete gcj-4.4-base (Andreas Beckmann). + Closes: #677582. + * Add arm64 support, partly based on Wookey's patches (only applied for + arm64). Disabled for arm64 are ssp, gomp, mudflap, boehm-gc, Ada, ObjC, + Obj-C++ and Java). + + -- Matthias Klose Fri, 05 Oct 2012 20:00:30 +0200 + +gcc-4.7 (4.7.2-2) unstable; urgency=low + + * Fix PR tree-optimization/54563 (ice on valid), PR target/54564 (fma builtin + fix), PR c/54552 (ice on valid), PR lto/54312 (memory hog), PR c/54103 (ice + on valid), PR middle-end/54638 (memory corruption), taken from the 4.7 + branch. + * Go fixes, taken from the 4.7 branch. + * On ARM, don't warn anymore that 4.4 has changed the `va_list' mangling, + taken from the trunk. + * Mention the NEWS changes for all uploads. Closes: #688278. + + -- Matthias Klose Fri, 21 Sep 2012 11:58:10 +0200 + +gcc-4.7 (4.7.2-1) unstable; urgency=low + + * GCC 4.7.2 release. + * Issues addressed after the release candidate: + - PR c++/53661 (wrong warning), LTO backport from trunk, documentation fix. + * Update NEWS files. + + -- Matthias Klose Thu, 20 Sep 2012 12:19:07 +0200 + +gcc-4.7 (4.7.1-9) unstable; urgency=low + + * GCC 4.7.2 release candidate 1. + * Update to SVN 20120914 (r191306) from the gcc-4_7-branch. + - Fix PR libstdc++/54388, PR libstdc++/54172, PR libstdc++/54172, + PR debug/54534, PR target/54536 (AVR), PR middle-end/54515 (ice on valid), + PR c++/54506 (rejects valid), PR c++/54341 (ice on valid), + PR c++/54253 (ice on valid), PR c/54559 (closes: #687496), + PR gcov-profile/54487, PR c++/53839, PR c++/54511, PR c++/53836, + PR fortran/54556. + * Update the Linaro support to the 4.7-2012.09 release. + - Adds support for the NEON vext instruction when shuffling. + - Backports improvements to scheduling transfers between VFP and core + registers. + - Backports support for the UBFX instruction on certain bit extract idioms. + + -- Matthias Klose Fri, 14 Sep 2012 19:12:47 +0200 + +gcc-4.7 (4.7.1-8) unstable; urgency=low + + * Update to SVN 20120908 (r191092) from the gcc-4_7-branch. + - Fix PR libstdc++/54376, PR libstdc++/54297, PR libstdc++/54351, + PR libstdc++/54297, PR target/54461 (AVR), PR target/54476 (AVR), + PR target/54220 (AVR), PR fortran/54208 (rejects valid), + PR middle-end/53667 (wrong code), PR target/54252 (ARM, wrong code), + PR rtl-optimization/54455 (ice on valid), PR driver/54335 (docs), + PR tree-optimization/54498 (wrong code), PR target/45070 (wrong code), + PR tree-optimization/54494 (wrong code), PR target/54436 (x86), + PR c/54428 (ice on valid), PR c/54363 (ice on valid, closes: #684635), + PR rtl-optimization/54369 (mips, sparc, wrong code), PR middle-end/54146, + PR target/46254 (ice on valid), PR rtl-optimization/54088 (ice on valid), + PR target/54212 (ARM, wrong code), PR c++/54197 (wrong code), + PR lto/53572, PR tree-optimization/53922 (wrong code). + - Go fixes. + + [ Nobuhiro Iwamatsu ] + * Remove sh4-enable-ieee.diff, -mieee enabled by default. Closes: #685975. + + [ Matthias Klose ] + * Fix PR c++/54341, PR c++/54253, taken from the trunk. Closes: #685430. + * Update libitm package description. Closes: #686802. + + -- Matthias Klose Fri, 07 Sep 2012 22:16:55 +0200 + +gcc-4.7 (4.7.1-7) unstable; urgency=low + + * Update to SVN 20120814 (r190380) from the gcc-4_7-branch. + - Fix PR libstdc++/54036, PR target/53961 (x86), PR libstdc++/54185, + PR rtl-optimization/53942, PR rtl-optimization/54157. + + [ Thibaut Girka ] + * Fix cross compilers for 64bit architectures when using + DEB_CROSS_NO_BIARCH. + * Fix glibc dependency for multiarch enabled builds for architectures + with a different libc-dev package name. + + [ Aurelien Jarno ] + * powerpc64: Fix non-multilib builds. + + [ Matthias Klose ] + * Fix syntax error generating the control file for cross builds. + Closes: #682104. + * spu build: Move static libraries to version specific directories. + Closes: #680022. + * Don't run the libstdc++ tests on mipsel, times out on the buildds. + * Update the Linaro support to the 4.7-2012.08 release. + + -- Matthias Klose Tue, 14 Aug 2012 13:58:03 +0200 + +gcc-4.7 (4.7.1-6) unstable; urgency=low + + * Update to SVN 20120731 (r190015) from the gcc-4_7-branch. + - Fix PR libstdc++/54075, PR libstdc++/53270, PR libstdc++/53978, + PR target/33135 (SH), PR target/53877 (x86), PR rtl-optimization/52250, + PR middle-end/54017, PR target/54029, PR target/53961 (x86), + PR target/53110 (x86), PR rtl-optimization/53908, PR c++/54038, + PR c++/54026, PR c++/53995, PR c++/53989, PR c++/53549 (closes: #680931), + PR c++/53953. + + -- Matthias Klose Tue, 31 Jul 2012 20:00:56 +0200 + +gcc-4.7 (4.7.1-5) unstable; urgency=high + + * Update to SVN 20120713 (r189464) from the gcc-4_7-branch. + - Fix PR libstdc++/53657, PR c++/53733 (DR 1402), PR target/53811, + PR target/53853. + + -- Matthias Klose Fri, 13 Jul 2012 16:59:59 +0200 + +gcc-4.7 (4.7.1-4) unstable; urgency=medium + + * Update to SVN 20120709 (r189388) from the gcc-4_7-branch. + - Fix PR libstdc++/53872, PR libstdc++/53830, PR bootstrap/52947, + PR middle-end/52786, PR middle-end/50708, PR tree-optimization/53693, + PR middle-end/52621, PR middle-end/53433, PR fortran/53732, + PR libstdc++/53578, PR c++/53882 (closes: #680521), PR c++/53826. + * Update the Linaro support to the 4.7-2012.07 release. + * Fix build on pre-multiarch releases (based on a patch from Chip Salzenberg). + Closes: #680590. + + -- Matthias Klose Mon, 09 Jul 2012 18:58:47 +0200 + +gcc-4.7 (4.7.1-3) unstable; urgency=low + + * Update to SVN 20120703 (r189219) from the gcc-4_7-branch. + - Fix PR preprocessor/37215, PR middle-end/38474, PR target/53595 (AVR), + PR middle-end/53790, PR debug/53682, PR target/53759 (x86), + PR c++/53816, PR c++/53821, PR c++/51214, PR c++/53498, PR c++/53305, + PR c++/52988 (wrong code), PR c++/53202 (wrong code), PR c++/53594. + - The change for PR libstdc++/49561 was reverted. The std::list size is + now the same again in c++98 and c++11 mode. + * Revert the local std::list work around. + * Build using isl instead of ppl for snapshot builds. + + -- Matthias Klose Tue, 03 Jul 2012 15:07:14 +0200 + +gcc-4.7 (4.7.1-2) unstable; urgency=medium + + * Update to SVN 20120623 (r188906) from the gcc-4_7-branch. + - Fix PR rtl-optimization/53700 (closes: #677678), PR target/52908, + PR libstdc++/53270, PR libstdc++/53678, PR gcov-profile/53744, + PR c++/52637, PR middle-end/53470, PR c++/53651, PR c++/53137, + PR c++/53599, PR fortran/53691, PR fortran/53685, PR ada/53592. + * Update NEWS files for 4.7.1. + * Bump gcc/FULL-VERSION to 4.7.1. + * Update the Linaro support to the 4.7-2012.06 release. + * Restore std::list ABI compatibility in c++11 mode. The upstream behaviour + can be enabled defining __CXX0X_STD_LIST_ABI_INCOMPAT__. This work around + will be replaced with an upstream solution. + * Fix PR debug/53682, taken from the trunk. Closes: #677606. + * Use $(with_gccbase) and $(with_gccxbase) to determine whether to enable it + in the control file (Thibaut Girka). + * When building a cross-compiler, runtime libraries for the target + architecture may be cross-built. Tell debhelper/dpkg-dev those packages + are indeed for a foreign architecture (Thibaut Girka). + + -- Matthias Klose Sat, 23 Jun 2012 11:58:35 +0200 + +gcc-4.7 (4.7.1-1) unstable; urgency=low + + * GCC 4.7.1 release. + + -- Matthias Klose Fri, 15 Jun 2012 00:38:27 +0200 + +gcc-4.7 (4.7.0-13) unstable; urgency=low + + * Update to SVN 20120612 (r188457) from the gcc-4_7-branch. + - Fix PR c++/53602 (LP: #1007616). + + * Document the changed ssp-buffer-size default in Ubuntu 10.10 and + later (Kees Cook). LP: #990141. + * Fix PR c++/26155, ICE after error with namespace alias. LP: #321883. + * Fix PR c++/53599 (reverting the fix for PR c++/53137). + Closes: #676729. LP: #1010896. + * Fix manual page names for cross builds (Thibaut Girka). Closes: #675516. + * Remove dpkg-cross build dependency for cross builds (Thibaut Girka). + Closes: #675511. + + -- Matthias Klose Tue, 12 Jun 2012 15:47:57 +0200 + +gcc-4.7 (4.7.0-12) unstable; urgency=low + + * Update to SVN 20120606 (r188261) from the gcc-4_7-branch (release + candidate 1 or 4.7.1). + - Fix PR libstdc++/52007, PR c++/53524, PR target/53559, + PR middle-end/47530, PR middle-end/53471, PR middle-end/52979, + PR target/46261, PR tree-optimization/53550, PR middle-end/52080, + PR middle-end/52097, PR middle-end/48124, PR middle-end/53501, + PR target/52667, PR target/52642, PR middle-end/48493, PR c++/53524, + PR c++/52973, PR c++/52725, PR c++/53137, PR c++/53484, PR c++/53500, + PR c++/52905, PR fortran/53521. + - Go and libgo updates. + * Include README.Debian in README.Debian.. + * Fix PR c/33763, proposed patch from the issue. Closes: #672411. + * Fix build failure in libgo with hardening defaults. + + -- Matthias Klose Wed, 06 Jun 2012 13:22:27 +0200 + +gcc-4.7 (4.7.0-11) unstable; urgency=low + + * Update to SVN 20120530 (r188035) from the gcc-4_7-branch. + - Fix PR c++/53356, PR c++/53491, PR c++/53503, PR c++/53220, + PR middle-end/53501, PR rtl-optimization/53519, + PR tree-optimization/53516, PR tree-optimization/53438, + PR target/52999, PR middle-end/53008. + + [ Matthias Klose ] + * Build-depend on netbase when building Go. Closes: #674306. + + [ Marcin Juszkiewicz ] + * Use the multiarch default for staged builds. + + -- Matthias Klose Thu, 31 May 2012 08:25:08 +0800 + +gcc-4.7 (4.7.0-10) unstable; urgency=low + + * Update to SVN 20120528 (r187927) from the gcc-4_7-branch. + - Fix PR rtl-optimization/52528, PR lto/52178, PR target/53435, + PR ada/52362, PR target/53385, PR middle-end/53460, + PR tree-optimization/53465, PR target/53448, PR tree-optimization/53408, + PR ada/52362, PR fortran/53389. + * Fix warning building libiberty/md5.c. PR other/53285. Closes: #674830. + + -- Matthias Klose Mon, 28 May 2012 11:30:36 +0800 + +gcc-4.7 (4.7.0-9) unstable; urgency=low + + * Update to SVN 20120522 (r187756) from the gcc-4_7-branch. + - Fix PR bootstrap/53183, PR tree-optimization/53436, + PR tree-optimization/53366, PR tree-optimization/53409, + PR tree-optimization/53410, PR c/53418, PR target/53416, + PR middle-end/52584, PR debug/52727, PR tree-optimization/53364, + PR target/53358, PR rtl-optimization/52804, PR target/46098, + PR target/53256, PR c++/53209, PR c++/53301, PR ada/52494, + PR fortran/53310 + * Update the Linaro support to the 4.7-2012.05 release. + + -- Matthias Klose Tue, 22 May 2012 13:01:33 +0800 + +gcc-4.7 (4.7.0-8) unstable; urgency=low + + * Update to SVN 20120509 (r187339) from the gcc-4_7-branch. + - Fix PR libstdc++/53193, PR target/53272, PR tree-optimization/53239, + PR tree-optimization/53195, PR target/52999, PR target/53228, + PR tree-optimization/52633, PR tree-optimization/52870, PR target/48496, + PR target/53199, PR target/52684, PR lto/52605, PR plugins/53126, + PR debug/53174, PR target/53187, PR tree-optimization/53144, + PR c++/53186, PR fortran/53255, PR fortran/53111, PR fortran/52864. + - Fix plugin check in gcc-{ar,nm,ranlib}-4.7. + * Install man pages for gcc-{ar,nm,ranlib}-4.7. + + -- Matthias Klose Mon, 07 May 2012 21:56:42 +0200 + +gcc-4.7 (4.7.0-7) unstable; urgency=low + + * Update to SVN 20120502 (r187039) from the gcc-4_7-branch. + - Fix PR libstdc++/53115, PR tree-optimization/53163, + PR rtl-optimization/53160, PR middle-end/53136, PR fortran/53148. + - libgo fix for mips. + * Fix setting MULTILIB_DEFAULTS for ARM multilib builds. + * Build Go on mips. + * Revert: Don't build multilib gnat on armel and armhf. + * Fix multiarch patch for alpha (Michael Cree). Closes: #670571. + * Fix Go multilib packaging issue for mips and mipsel. + + -- Matthias Klose Wed, 02 May 2012 12:42:01 +0200 + +gcc-4.7 (4.7.0-6) unstable; urgency=low + + * Update to SVN 20120430 (r186964) from the gcc-4_7-branch. + - Fix PR target/53138. + * Build Go on ARM. + * Treat wheezy the same as sid in more places (Peter Green). + Addresses: #670821. + + -- Matthias Klose Mon, 30 Apr 2012 13:06:21 +0200 + +gcc-4.7 (4.7.0-5) unstable; urgency=medium + + * Update to SVN 20120428 (r186932) from the gcc-4_7-branch. + - Fix PR c/52880, PR target/53065, PR tree-optimization/53085, + PR c/51527, PR target/53120. + + [ Matthias Klose ] + * Don't build multilib gnat on armel and armhf. + * Don't try to run the libstdc++ testsuite if the C++ frontend isn't built. + * Install the unwind-arm-common.h header file. + * Fix ARM biarch package builds. + + [ Aurelien Jarno ] + * Reenable parallel builds on GNU/kFreeBSD. + * Fix libgcc building on MIPS N32/64. Closes: #669858. + * Add libn32gcc1 and lib64gcc1 symbols files on mips and mipsel. + + -- Matthias Klose Sat, 28 Apr 2012 11:59:36 +0200 + +gcc-4.7 (4.7.0-4) unstable; urgency=low + + * Update to SVN 20120424 (r186746) from the gcc-4_7-branch. + - Fix PR libstdc++/52924, PR libstdc++/52591, PR middle-end/52894, + PR testsuite/53046, PR libstdc++/53067, PR libstdc++/53027, + PR libstdc++/52839, PR bootstrap/52840, PR libstdc++/52689, + PR libstdc++/52699, PR libstdc++/52822, PR libstdc++/52942, + PR middle-end/53084, PR middle-end/52999, PR c/53060, + PR tree-optimizations/52891, PR target/53033, PR target/53020, + PR target/52932, PR middle-end/52939, PR tree-optimization/52969, + PR c/52862, PR target/52775, PR tree-optimization/52943, PR c++/53003, + PR c++/38543, PR c++/50830, PR c++/50303, PR c++/52292, PR c++/52380, + PR c++/52465, PR c++/52824, PR c++/52906. + + [ Matthias Klose ] + * Update the Linaro support to the 4.7-2012.04 release. + * Set the ARM hard-float linker path according to the consensus: + http://lists.linaro.org/pipermail/cross-distro/2012-April/000261.html + * Reenable the spu build on ppc64. Closes: #668272. + * Update and reenable the gcc-cloog-dl patch. + + [ Samuel Thibault ] + * ada-s-osinte-gnu.adb.diff, ada-s-osinte-gnu.ads.diff, + ada-s-taprop-gnu.adb.diff, gcc_ada_gcc-interface_Makefile.in.diff: + Add ada support for GNU/Hurd, thanks Svante Signell for the patches + and bootstrap! (Closes: #668426). + + -- Matthias Klose Tue, 24 Apr 2012 08:44:15 +0200 + +gcc-4.7 (4.7.0-3) unstable; urgency=low + + * Update to SVN 20120409 (r186249) from the gcc-4_7-branch. + - Fix PR libitm/52854, PR libstdc++/52476, PR target/52717, + PR tree-optimization/52406, PR c++/52596, PR c++/52796, + PR fortran/52893, PR fortran/52668. + + [ Matthias Klose ] + * Re-add missing dependency on libgcc in gcc-multilib. Closes: #667519. + * Add support for GNU locales for GNU/Hurd (Svante Signell). + Closes: #667662. + * Reenable the spu build on ppc64. Closes: #664617. + * Apply proposed patch for PR52894, stage1 bootstrap failure on hppa + (John David Anglin). Closes: #667969. + + [ Nobuhiro Iwamatsu ] + * Fix cross build targeting sh4. Closes: #663028. + * Enable -mieee by default on sh4. Closes: #665328. + + -- Matthias Klose Mon, 09 Apr 2012 22:24:14 +0200 + +gcc-4.7 (4.7.0-2) unstable; urgency=low + + * Update to SVN 20120403 (r186107) from the gcc-4_7-branch. + - Fix PR middle-end/52547, PR libstdc++/52540, PR libstdc++/52433, + PR target/52507, PR target/52505, PR target/52461, PR target/52508, + PR c/52682, PR target/52610, PR middle-end/52640, PR target/50310, + PR target/48596, PR target/48806, PR middle-end/52547, R target/52496, + PR rtl-optimization/52543, PR target/52461, PR target/52488, + PR target/52499, PR target/52148, PR target/52496, PR target/52484, + PR target/52506, PR target/52505, PR target/52461, PR other/52545, + PR c/52577, PR c++/52487, PR c++/52671, PR c++/52582, PR c++/52521, + PR fortran/52452, PR target/52737, PR target/52698, PR middle-end/52693, + PR middle-end/52691, PR middle-end/52750, PR target/52692, + PR middle-end/51893, PR target/52737, PR target/52736, PR middle-end/52720, + PR c++/52672, PR c++/52718, PR c++/52685, PR c++/52759, PR c++/52743, + PR c++/52746, PR libstdc++/52799, PR libgfortran/52758, + PR middle-end/52580, PR middle-end/52493, PR tree-optimization/52678, + PR tree-optimization/52701, PR tree-optimization/52754, + PR tree-optimization/52835. + + [ Matthias Klose ] + * Update NEWS files for 4.7. + * Include -print-multiarch option in gcc --help output. Closes: #656998. + * Don't build Go on MIPS. + * Update alpha-ieee.diff for 4.7. + * Update gcc-multiarch.diff for sh4 (untested). Closes: #665935. + * Update gcc-multiarch.diff for hppa (untested). Closes: #666162. + * Re-add build dependency on doxygen. + + [ Samuel Thibault ] + * debian/patches/ada-bug564232.diff: Enable on hurd too. + * debian/patches/ada-libgnatprj.diff: Add hurd configuration. + + -- Matthias Klose Tue, 03 Apr 2012 16:30:58 +0200 + +gcc-4.7 (4.7.0-1) unstable; urgency=low + + * GCC 4.7.0 release. + + -- Matthias Klose Fri, 23 Mar 2012 05:44:37 +0100 + +gcc-4.7 (4.7.0~rc2-1) experimental; urgency=low + + * GCC-4.7 release candidate 2 (r185376). + * libgo: Work around parse error of struct timex_ on ARM. + * Update libstdc++6 symbols files. + * Allow building Go from a separate source package. + * Don't configure with --enable-gnu-unique-object on kfreebsd and hurd. + * Include -print-multiarch option in gcc --help output. Closes: #656998. + * Disable Go on mips* (PR go/52586). + + -- Matthias Klose Wed, 14 Mar 2012 15:49:39 +0100 + +gcc-4.7 (4.7.0~rc1-2) experimental; urgency=low + + * Update to SVN 20120310 (r185183) from the gcc-4_6-branch. + * Always configure with --enable-gnu-unique-object. LP: #949805. + * Enable Go for ARM on releases with working getcontext/setcontext. + + -- Matthias Klose Sat, 10 Mar 2012 23:29:45 +0100 + +gcc-4.7 (4.7.0~rc1-1) experimental; urgency=low + + * GCC-4.7 release candidate 1 (r184777). + + [ Marcin Juszkiewicz ] + * Fix ARM sf/hf multilib dpkg-shlibdeps dependency generation. + + [ Matthias Klose ] + * PR go/52218, don't build Go on ARM, getcontext/setcontext exists, + but return ENOSYS. + * Fix multiarch build on ia64. + * Fix path calculation for the libstdc++ -gdb.py file when installed into + multiarch locations. Closes: #661385. LP: #908163. + * Disable Go on sparc (libgo getcontext/setcontext check failing). + + [ Thorsten Glaser ] + * Apply patch from Alan Hourihane to fix err_bad_abi testcase on m68k. + + [ Jonathan Nieder ] + * libstdc++6: Depends on libc (>= 2.11) for STB_GNU_UNIQUE support + (Eugene V. Lyubimkin). Closes: #584572. + * libstdc++6, libobjc2, libgfortran3, libmudflap0, libgomp1: Breaks + pre-multiarch gcc. Closes: #651550. + * libstdc++6: Lower priority from required to important. Closes: #661118. + + [Samuel Thibault] + * Remove local patch, integrated upstream. Closes: ##661859. + + -- Matthias Klose Fri, 02 Mar 2012 18:42:56 +0100 + +gcc-4.7 (4.7-20120210-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120210 (r184114). + * kbsd-gnu.diff: Remove, integrated upstream. + * Strip whitespace from with_libssp definition. Closes: #653255. + * Remove soft-float symbols from 64bit powerpc libgcc1 symbols files. + * Fix control file generation for cross packages. LP: #913734. + + -- Matthias Klose Fri, 10 Feb 2012 21:38:12 +0100 + +gcc-4.7 (4.7-20120205-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120205 (r183903). + * Enable Go on arm*, ia64, mips*, powerpc, s390*, sparc*. + * libgo: Fix ioctl macro extracton. + * Fix PR middle-end/52074, ICE in libgo on powerpc. + * Revert: * Install static libc++{98,11} libraries. + * Don't strip a `/' sysroot from the C++ include directories. + Closes: #658442. + + -- Matthias Klose Sun, 05 Feb 2012 09:16:03 +0100 + +gcc-4.7 (4.7-20120129-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120129 (r183674). + * Configure --with-sysroot for wheezy and sid. + * Install static libc++{98,11} libraries. + * Install libstdc++ gdb.py file into /usr/lib/debug. + * Just copy libstdc++convenience.a for the libstdc++_pic installation. + * Remove trailing dir separator from system root. + + -- Matthias Klose Sun, 29 Jan 2012 08:19:27 +0100 + +gcc-4.7 (4.7-20120121-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120121 (r183370). + + [ Matthias Klose ] + * Fix C++ include paths when configured --with-system-root. + + [ Marcin Juszkiewicz ] + * Fix control file generation for ARM multiarch cross builds. + + -- Matthias Klose Sat, 21 Jan 2012 20:24:29 +0100 + +gcc-4.7 (4.7-20120107-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120107 (r182981). + + * On armel/armhf, allow g*-multilib installation using the runtime + libraries of the corresponding multiarch architecture. + * Fix location of .jinfo files. Addresses: #654579. + * Replace Fortran 95 with Fortran in package descriptions. + + -- Matthias Klose Sat, 07 Jan 2012 21:24:56 +0100 + +gcc-4.7 (4.7-20111231-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20111231 (r182754). + + [ Aurelien Jarno ] + * Re-enable parallel builds on kfreebsd-i386, as the problem from bug + #637236 only affects kfreebsd-amd64. + + [ Matthias Klose ] + * Fix generating libphobos dependency for gdc. Addresses: #653078. + * Link libmudflapth.so with -lpthread. + + -- Matthias Klose Sat, 31 Dec 2011 09:42:13 +0100 + +gcc-4.7 (4.7-20111222-1) experimental; urgency=low + + * Update to SVN 20111222 (r182617) from the trunk. + + [Matthias Klose] + * Remove obsolete ARM patch. + * Install loongson.h header. + * Update libgcc and libstdc++ symbols files. + + [Samuel Thibault] + * Update hurd patch for 4.7, fixing build failure. Closes: #652693. + + [Robert Millan] + * Update kbsd-gnu.diff for the trunk. + + -- Matthias Klose Thu, 22 Dec 2011 10:52:01 +0100 + +gcc-4.7 (4.7-20111217-2) experimental; urgency=low + + * Don't provide 4.6.x symlinks. + * Disable multilib for armhf. + * Fix spu installation. + + -- Matthias Klose Sun, 18 Dec 2011 17:22:10 +0100 + +gcc-4.7 (4.7-20111217-1) experimental; urgency=low + + * GCC-4.7 snapshot build. + - Including the GFDL documentation; will stay in experimental + until the 4.7.0 release sometime next year. + * Update patches for the trunk. + * Update symbols files. + * Build libitm packages. + + -- Matthias Klose Sat, 17 Dec 2011 23:19:46 +0100 + +gcc-4.6 (4.6.2-9) unstable; urgency=medium + + * Update to SVN 20111217 (r182430) from the gcc-4_6-branch. + - Fix PR c++/51331. + * Fix build dependencies for armel/armhf. + + -- Matthias Klose Sat, 17 Dec 2011 10:40:26 +0100 + +gcc-4.6 (4.6.2-8) unstable; urgency=low + + * Update to SVN 20111216 (r182407) from the gcc-4_6-branch. + - Fix PR tree-optimization/51485, PR tree-optimization/50569, PR c++/51248, + PR c++/51406, PR c++/51161, PR rtl-optimization/49720, PR fortran/50923, + PR fortran/51338, PR fortran/51550, PR fortran/47545, PR fortran/49050, + PR fortran/51075. + + [ Matthias Klose ] + * gdc-4.6: Provide -{gdc,gdmd}-4.6 symlinks. + + [Ludovic Brenta] + Merge from gnat-4.6 (4.6.2-2) unstable; urgency=low + [Євгеній Мещеряков] + * debian/patches/pr47818.diff: new. Fixes: #614402. + * debian/rules.patch: apply it. + + Merge from gnat-4.6 (4.6.2-1) unstable; urgency=low + [Ludovic Brenta] + * Suggest ada-reference-manual-{html,info,pdf,text} instead of just + ada-reference-manual which no longer exists. + * Do not suggest gnat-gdb, superseded by gdb. + * Downgrade libgnat{vsn,prj}4.6-dev to priority extra; they conflict + with their 4.4 counterparts and priority optional packages may not + conflict with one another, per Policy 2.5. + + -- Matthias Klose Fri, 16 Dec 2011 16:59:30 +0100 + +gcc-4.6 (4.6.2-7) unstable; urgency=medium + + * Update to SVN 20111210 (r182189) from the gcc-4_6-branch. + - Fix PR rtl-optimization/51469, PR tree-optimization/51466, + PR tree-optimization/50078, PR target/51408, PR fortran/51310, + PR fortran/51448. + + -- Matthias Klose Sat, 10 Dec 2011 20:12:33 +0100 + +gcc-4.6 (4.6.2-6) unstable; urgency=low + + * Update to SVN 20111208 (r182120) from the gcc-4_6-branch. + - Fix PR c++/51265, PR bootstrap/50888, PR target/51393 (ix86), + PR target/51002 (AVR), PR target/51345 (AVR), PR debug/48190, + PR fortran/50684, PR fortran/51218, PR target/50906 (closes: #650318), + PR tree-optimization/51315 (closes: #635126), PR tree-optimization/50622, + PR fortran/51435, PR debug/51410, PR c/51339, PR rtl-optimization/48721, + PR middle-end/51323 (LP: #897583), PR middle-end/50074, + PR middle-end/50074. + + [ Matthias Klose ] + * Run the libstdc++ testsuite on all architectures again. Closes: #622699. + * Apply proposed patch for PR target/50906 (powerpcspe only). Closes: #650318. + * Fix PR target/49030 (ARM), taken from Linaro. Closes: #633479. + * Fix PR target/50193 (ARM), taken from Linaro. Closes: #642127. + * Install the libstdc++.so-gdb.py file. LP: #883269. + * Fix PR c++/50114, backport from trunk. LP: #827806. + * Merge changes to allow gcc-snapshot cross builds, taken from Linaro. + * Update the Linaro support to the 4.6 branch. + + [ Marcin Juszkiewicz ] + * Fix issues with gcc-snapshot cross builds. + * Allow building Linaro binary packages in a single package. + * Apply hardening patches for cross builds when enabled for native builds. + + -- Matthias Klose Thu, 08 Dec 2011 17:14:35 +0100 + +gcc-4.6 (4.6.2-5) unstable; urgency=low + + * Update to SVN 20111121 (r181596) from the gcc-4_6-branch. + - Fix PR c++/50870, PR c++/50608, PR target/47997, PR target/48108, + PR target/45233, PR middle-end/51077, PR target/30282, PR c++/50608, + PR target/50979, PR target/4810, PR rtl-optimization/51187, + PR target/50493, PR target/49992, PR target/49641, PR c++/51150, + PR target/50678, PR libstdc++/51142, PR libstdc++/51133. + + [ Matthias Klose ] + * Use the default gcc as stage1 compiler for all architectures. + + [ Marcin Juszkiewicz ] + * debian/control.m4: Use BASEDEP in more places. + * Work around debhelper not calling the correct strip for cross builds. + * Drop dpkg-cross build dependency for cross builds. + + -- Matthias Klose Mon, 21 Nov 2011 22:26:49 +0100 + +gcc-4.6 (4.6.2-4) unstable; urgency=low + + * Update to SVN 20111103 (r180830) from the gcc-4_6-branch. + - Fix PR target/50691, PR c++/50901, PR target/50945, + PR rtl-optimization/47918, PR libstdc++/50880. + + * Configure the armel build by explicitly passing --with-arch=armv4t + --with-float=soft. + * libffi: Simplify PowerPC assembly and avoid CPU-specific string + instructions (Kyle Moffett). + * Fix MULTIARCH_DIRNAME on powerpcspe (Kyle Moffett). Closes: #647324. + + -- Matthias Klose Thu, 03 Nov 2011 12:03:41 -0400 + +gcc-4.6 (4.6.2-3) unstable; urgency=low + + * disable parallel builds on kfreebsd-* even if DEB_BUILD_OPTIONS + enables them (continued investigation for #637236). + + -- Ludovic Brenta Sat, 29 Oct 2011 00:42:46 +0200 + +gcc-4.6 (4.6.2-2) unstable; urgency=low + + * Update to SVN 20111028 (r180603) from the gcc-4_6-branch. + - Fix PR target/50875. + + * Fix gcj, gdc and gnat builds, broken by the stage1 cross-compiler + package dependency fixes. + * Update the Linaro support to the 4.6 branch. + * Fix gcc-4.6-hppa64 installation. Closes: #646805. + * For ARM hard float, set the dynamic linker to + /lib/arm-linux-gnueabihf/ld-linux.so.3. + * Don't use parallel builds on kfreebsd. + + -- Matthias Klose Fri, 28 Oct 2011 16:36:55 +0200 + +gcc-4.6 (4.6.2-1) unstable; urgency=low + + * GCC 4.6.2 release. + + * Fix libgcc installation into /usr/lib/gcc//4.6. Closes: #645021. + * Fix stage1 cross-compiler package dependencies (Kyle Moffett). + Closes: #644439. + + -- Matthias Klose Wed, 26 Oct 2011 13:10:44 +0200 + +gcc-4.6 (4.6.1-16) unstable; urgency=medium + + * Update to SVN 20111019 (r180208) from the gcc-4_6-branch. + - Fix PR target/49967 (ia64), PR tree-optimization/50189, PR fortran/50273, + PR tree-optimization/50700, PR c/50565 (closes: #642144), + PR target/49965 (sparc), PR middle-end/49801, PR c++/49216, + PR c++/49855, PR c++/49896, PR c++/44473, PR c++/50611, PR fortran/50659, + PR tree-optimization/50723, PR tree-optimization/50712, PR obj-c++/48275, + PR c++/50618, PR fortran/47023, PR fortran/50570, PR fortran/50718, + PR libobjc/49883, PR libobjc/50002, PR target/50350, PR middle-end/50386, + PR middle-end/50326, PR target/50737, PR c++/50787, PR c++/50531, + PR fortran/50016, PR target/50737. + + [ Matthias Klose ] + * Fix libjava installation into /usr/lib/gcc//4.6. + * Fix powerpc and ppc64 libffi builds (Kyle Moffett). + * Apply proposed patch for PR target/50350. Closes: #642313. + * Re-apply the fix for PR tree-optimization/49911 on ia64. + * Apply proposed patch for PR target/50106 (ARM). + + [Xavier Grave] + * debian/patches/address-clauses-timed-entry-calls.diff: new; backport + bug fix about address clauses and timed entry calls. + + [Ludovic Brenta] + * debian/patches/ada-kfreebsd-gnu.diff: new; provide dummy + implementations of some optional POSIX Threads functions missing in + GNU/kFreeBSD. Closes: #642128. + + -- Matthias Klose Thu, 20 Oct 2011 00:24:13 +0200 + +gcc-4.6 (4.6.1-15) unstable; urgency=low + + * Update to SVN 20111010 (r179753) from the gcc-4_6-branch. + - Fix PR target/50652. + * Update the Linaro support to the 4.6-2011.10-1 release. + * Fix gcc-spu installation. + * Restore symlink for subminor GCC version. Closes: #644849. + + -- Matthias Klose Mon, 10 Oct 2011 17:10:40 +0200 + +gcc-4.6 (4.6.1-14) unstable; urgency=low + + * Update to SVN 20111008 (r179710) from the gcc-4_6-branch. + - Fix PR inline-asm/50571, PR c++/46105, PR c++/50508, PR libstdc++/50529, + PR libstdc++/49559, PR c++/40831, PR fortran/48706, PR target/49049, + PR tree-optimization/49279, PR fortran/50585, PR fortran/50625, + PR libstdc++/48698. + + [ Matthias Klose ] + * Configure and build to install into /usr/lib/gcc//4.6. + Closes: #643891. + * libgcc1: Versioned break to gcc-4.3. + * Fix gcc-multiarch for i386-linux-gnu with disabled multilibs. + * libffi: Fix PowerPC soft-floating-point support (Kyle Moffett). + + [ Marcin Juszkiewicz ] + * Enable gcc-snapshot cross builds. + + [ Iain Buclaw ] + * Port gdc to GCC-4.6. + + [ Aurelien Jarno ] + * Backport fix for PR target/49696 from the trunk (Closes: #633443). + + -- Matthias Klose Sat, 08 Oct 2011 14:40:49 +0200 + +gcc-4.6 (4.6.1-13) unstable; urgency=low + + * Update to SVN 20110926 (r179207) from the gcc-4_6-branch. + - Fix PR tree-optimization/50472, PR tree-optimization/50413, + PR tree-optimization/50412, PR c++/20039, PR c++/42844, + PR libstdc++/50510, PR libstdc++/50509. + * Revert the fix for PR tree-optimization/49911, bootstrap error on ia64. + * libffi: Define FFI_MMAP_EXEC_WRIT on kfreebsd-* (Petr Salinger). + + -- Matthias Klose Mon, 26 Sep 2011 19:59:55 +0200 + +gcc-4.6 (4.6.1-12) unstable; urgency=low + + * Update to SVN 20110924 (r179140) from the gcc-4_6-branch. + - Fix PR target/50464, PR target/50341, PR middle-end/49886, + PR target/50091, PR c++/50491, PR c++/50442 (Closes: #642176). + + -- Matthias Klose Sat, 24 Sep 2011 10:39:32 +0200 + +gcc-4.6 (4.6.1-11) unstable; urgency=low + + * Update to SVN 20110917 (r178926) from the gcc-4_6-branch. + - Fix PR c++/50424, PR c++/48320, PR fortran/49479. + + [ Matthias Klose ] + * Update the Linaro support to the 4.6-2011.09-1 release. + + [ Aurelien Jarno ] + * gcc.c (for_each_path): Allocate memory for multiarch suffix. + + -- Matthias Klose Sat, 17 Sep 2011 10:53:36 +0200 + +gcc-4.6 (4.6.1-10) unstable; urgency=medium + + * Update to SVN 20110910 (r178746) from the gcc-4_6-branch. + - Fix PR middle-end/50266, PR tree-optimization/49911, + PR tree-optimization/49518, PR tree-optimization/49628, + PR tree-optimization/49628, PR target/50310, PR target/50289, + PR c++/50255, PR c++/50309, PR c++/49267, PR libffi/49594. + - Revert fix for PR middle-end/49886, causing PR middle-end/50295. + + -- Matthias Klose Sat, 10 Sep 2011 03:38:48 +0200 + +gcc-4.6 (4.6.1-9) unstable; urgency=low + + * Update to SVN 20110903 (r178501) from the gcc-4_6-branch. + - Fix PR target/50090, PR middle-end/50116, PR target/50202, PR c/50179, + PR c++/50157, PR fortran/50163, PR libfortran/50192, + PR middle-end/49886, PR tree-optimization/50178, PR c++/50207, + PR c++/50089, PR c++/50220, PR c++/50234, PR c++/50224, + PR libstdc++/50268. + + [ Matthias Klose ] + * Fix gcc --print-multilib-osdir for non-biarch architectures. + * Fix multiarch for non-biarch builds. Closes: #635860. + * Move the lto plugin to the cpp packge. Closes: #639531. + + [ Thorsten Glaser ] + * [m68k] Disable multilib. Closes: #639303. + + -- Matthias Klose Sat, 03 Sep 2011 20:11:50 +0200 + +gcc-4.6 (4.6.1-8) unstable; urgency=low + + * Update to SVN 20110824 (r178027) from the gcc-4_6-branch. + Fix PR fortran/49792, PR tree-optimization/48739, PR target/50092, + PR c++/50086, PR c++/50054, PR fortran/50050, PR fortran/50130, + PR fortran/50129, PR fortran/49792, PR fortran/50109, PR c++/50024, + PR c++/46862. + + * Properly disable multilib builds for selected libraries on armel and armhf. + * Update and re-enable the gcc-ice patch. + * Update and re-enable the gcc-cloog-dl patch. + * Fix [ARM] PR target/50090: aliases in libgcc.a with default visibility, + taken from the trunk. + * Re-work the multiarch patches. + * Break older gcj-4.6 and gnat-4.6 versions, changed gcc_lib_dir. + * Omit the target alias from the go libdir. + * Linaro updates from the 4.6-2011.07-stable branch. + * Revert: + - libjava: Build with the system libffi PIC library. + * For native builds, gcc -print-file-name now resolve . and .., + and removes the subminor version number. + + -- Matthias Klose Wed, 24 Aug 2011 10:22:42 +0200 + +gcc-4.6 (4.6.1-7) unstable; urgency=low + + * Update to SVN 20110816 (r177780) from the gcc-4_6-branch. + - Fix PR middle-end/49923. + + [ Matthias Klose ] + * gcc-4.6-multilib: Depend on biarch quadmath library. Closes: #637174. + * Don't hard-code build dependency on gcc-multilib. + * Build-depends on python when building java. + * Fix thinko in java::lang::Class::finalize (taken from the trunk). + * Add support for ARM 64bit sync intrinsics (David Gilbert). Only + enable for armv7 or better. + * libjava: Build with the system libffi PIC library. + * Disable gnat multilib builds on armel and armhf. + + Merge from gnat-4.6 (4.6.1-4) unstable; urgency=low + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff + (src/gcc/ada/gcc-interface/Makefile.in): pass -iquote instead of -I- + to gnatgcc; fixes FTBFS on i386 and closes: #637418. + + Merge from gnat-4.6 (4.6.1-3) unstable; urgency=low + + [Євгеній Мещеряков] + * debian/patches/ada-mips.diff: do not use the alternate stack on mips, + as on mipsel. Closes: #566234. + + [Ludovic Brenta] + * debian/patches/pr49940.diff: new; copy the definition of function + lwp_self from s-osinte-freebsd.ads to s-osinte-kfreebsd-gnu.ads. + Closes: #636291. + * debian/patches/pr49944.diff: new. Closes: #636692. + * debian/patches/pr49819.diff: drop, merged upstream. + + -- Matthias Klose Tue, 16 Aug 2011 13:11:25 +0200 + +gcc-4.6 (4.6.1-6) unstable; urgency=low + + * Update to SVN 20110807 (r177547) from the gcc-4_6-branch. + - Fix PR rtl-optimization/49799, PR debug/49871, PR target/47364, + PR target/49866, PR tree-optimization/49671, PR target/39386, + PR ada/4981, PR fortran/45586, PR fortran/49791, PR middle-end/49897, + PR middle-end/49898, PR target/49920, PR target/47908 (closes: #635919), + PR c++/43886, PR c++/49593, PR c++/49803, PR c++/49924, PR c++/49260, + PR fortran/49885, PR fortran/48876, PR libstdc++/49925, PR target/50001, + PR tree-optimization/49948, PR c++/48993, PR c++/49921, PR c++/49669, + PR c++/49988, PR fortran/49112. + + [ Aurelien Jarno ] + * Update patches/kbsd-gnu.diff for recent changes. Closes: #635195. + * Add s390x support. + + [ Marcin Juszkiewicz ] + * Fixes for multilib cross builds. LP: #816852, #819147. + + [ Matthias Klose ] + * Fix libgo installation for cross builds. + * Only apply arm-multilib when building for multilib. + + -- Matthias Klose Sun, 07 Aug 2011 18:20:00 +0200 + +gcc-4.6 (4.6.1-5) unstable; urgency=low + + * Update to SVN 20110723 (r176672) from the gcc-4_6-branch. + - Fix PR target/49541, PR tree-optimization/49768, PR middle-end/49675, + PR target/49746, PR middle-end/49732, PR tree-optimization/49725, + PR target/49723, PR target/49541, PR tree-opt/49309, PR c++/49785, + PR ada/48711, PR ada/46350, PR fortran/49648, PR testsuite/49753, + PR tree-optimization/49309, PR tree-optimization/45819, PR target/49600, + PR fortran/49708, PR libstdc++/49293. + * Update the Linaro support to the 4.6-2011.07-0 release. + - Fix PR target/49335. LP: #791327. + * Update gcc-multiarch: + - Add -print-multiarch option. + - Fix library path for non-default multilib(s). + - Handle `.' in MULTILIB_DIRNAMES. + * Add support to build multilib on armel and armhf, only enable it for + Ubuntu/oneiric. LP: #810360. + * cpp-4.6: Add empty multiarch directories for the non-default multilibs, + needed for relative lookups from startfile_prefixes. + * Fix PR c++/49756, backport from trunk. LP: #721378. + * libgcc1: Add breaks to gcc-4.1 and gcc-4.3. Closes: #634821. + * Configure for DEB_TARGET_MULTIARCH defaults. + + -- Matthias Klose Sat, 23 Jul 2011 08:15:50 +0200 + +gcc-4.6 (4.6.1-4) unstable; urgency=low + + * Update to SVN 20110714 (r176280) from the gcc-4_6-branch. + - Fix PR tree-optimization/49094, PR target/39633, PR c++/49672, + PR fortran/49698, PR fortran/49690, PR fortran/49562, PR libfortran/49296, + PR target/49487, PR tree-optimization/49651, PR ada/48711. + + [ Matthias Klose ] + * Build Go on alpha for gcc-snapshot builds. + * For multicore ARM, clear both caches, not just the dcache (proposed + patch by Andrew Haley). + * Fix for PR rtl-optimization/{48830,48808,48792}, taken from the trunk. + LP: #807573. + * Fix PR tree-optimization/49169, optimisations strip the Thumb/ARM mode bit + off function pointers (Richard Sandiford). LP: #721531. + + [ Marcin Juszkiewicz ] + * Define DEB_TARGET_MULTIARCH macro. + * debian/rules2: Macro and configuration consolidation. + + -- Matthias Klose Thu, 14 Jul 2011 19:38:49 +0200 + +gcc-4.6 (4.6.1-3) unstable; urgency=medium + + * Update to SVN 20110709 (r176108) from the gcc-4_6-branch. + - Fix PR target/49335, PR tree-optimization/49618, PR c++/49598, + PR fortran/49479, PR target/49621, PR target/46779, PR target/49660, + PR c/49644, PR debug/49522, PR debug/49522, PR middle-end/49640, + PR c++/48157, PR c/49644, PR fortran/48926. + - Apparently fixes a boost issue. Closes: #632938. + * Apply proposed patch for PR fortran/49690. Closes: #631204. + + * README.Debian: New section 'Former and/or inactive maintainers'. + + -- Matthias Klose Sun, 10 Jul 2011 00:04:34 +0200 + +gcc-4.6 (4.6.1-2) unstable; urgency=medium + + * Update to SVN 20110705 (r175840) from the gcc-4_6-branch. + - Fix PR target/47997, PR c++/49528, PR c++/49440, PR c++/49418, + PR target/44643, PR tree-optimization/49615, PR tree-optimization/49572, + PR target/34734, PR tree-optimization/49539, PR tree-optimizations/49516, + PR target/49089, PR rtl-optimization/49014, PR target/48273, + PR fortran/49466, PR libfortran/49296, PR libffi/46660, PR debug/49262, + PR rtl-optimization/49472, PR rtl-optimization/49619, PR fortran/49623, + PR fortran/49540. + + [Ludovic Brenta, Євгеній Мещеряков, Xavier Grave] + * Adjust patches to GCC 4.6. + * Remove patches merged upstream: + - debian/patches/ada-arm-eabi.diff + - debian/patches/ada-bug589164.diff + - debian/patches/ada-bug601133.diff + - debian/patches/ada-gnatvsn.diff + - debian/patches/ada-mips.diff + - debian/patches/ada-polyorb-dsa.diff + + [Ludovic Brenta] + * debian/patches/ada-acats.diff: set LD_LIBRARY_PATH, ADA_INCLUDE_PATH + and ADA_OBJECTS_PATH so that the GNAT testsuite runs. + * debian/patches/adalibgnat{vsn,prj}.diff, + debian/rules.d/binary-ada.mk: install libgnat{vsn,prj}.so.* in the correct + multiarch directory. + * debian/control.m4, debian/rules.d/binary-ada.mk: move the SJLJ version + of the Ada run-time library to a new package, gnat-4.6-sjlj. + * debian/control.m4 (libgnatvsn4.6, libgnatvsn4.6-dbg, libgnatprj4.6, + libgnatprj4.6-dbg): pre-depend on multiarch-support and add + Multi-Arch: same. + + [Nicolas Boulenguez] + * debian/rules.d/binary-ada.mk: add gnathtml to the package gnat-4.6. + * debian/gnat.1: remove the version number of GCC. Mention gnathtml. + + [ Matthias Klose ] + * Do not install the spu and hppa64 cross compilers into the multiarch path. + * Update the Linaro support to 20110704. + + [ Thorsten Glaser ] + * Apply changes from src:gcc-4.4 for m68k support. Closes: #632380. + - debian/rules.defs: Remove m68k from locale_no_cpus. + - debian/patches/gcc-multiarch.diff: Add m68k multiarch_mappings. + - debian/patches/pr43804.diff: Fix backported from SVN. + - debian/rules.patch: Add pr43804. + + -- Matthias Klose Tue, 05 Jul 2011 10:45:56 +0200 + +gcc-4.6 (4.6.1-1) unstable; urgency=low + + * GCC 4.6.1 release. + + [Ludovic Brenta] + * debian/patches/ada-gnatvsn.diff, + debian/patches/ada-polyorb-dsa.diff: remove backports, no longer + needed. + + [ Matthias Klose ] + * Fix plugin header installation. Closes: #631082. + * Stop passing -Wno-error=unused-but-set-parameter and + -Wno-error=unused-but-set-variable if -Werror is present. + This was a temporary workaround introduced in 4.6.0~rc1-2. Closes: #615157. + * gcc-4.6-spu: Install the lto plugin. Closes: #631772. + + -- Matthias Klose Mon, 27 Jun 2011 13:54:04 +0200 + +gcc-4.6 (4.6.0-14) unstable; urgency=low + + * Update to SVN 20110616 (r175102) from the gcc-4_6-branch. + - Fix PR debug/48459, PR fortran/49103, PR rtl-optimization/49390, + PR c++/49117, PR c++/49369, PR c++/49290, PR target/44618, + PR tree-optimization/49419 (closes: #630567). + * Update the Linaro support to the 4.6-2011.06-0 release. + + -- Matthias Klose Thu, 16 Jun 2011 16:10:33 +0200 + +gcc-4.6 (4.6.0-13) unstable; urgency=low + + * Update to SVN 20110611 (r174958) from the gcc-4_6-branch. + * Extend multiarch support for mips/mipsel. + * Fix control files for gcj multiarch builds. + * Update libstdc++ symbols files. + + -- Matthias Klose Sat, 11 Jun 2011 20:49:42 +0200 + +gcc-4.6 (4.6.0-12) unstable; urgency=medium + + * Update to SVN 20110608 (r174800) from the gcc-4_6-branch. + - PR target/49186, PR rtl-optimization/49235, PR tree-optimization/48702, + PR tree-optimization/49243, PR c++/49134, PR target/49238, + PR gcov-profile/49299, PR c++/48780, PR c++/49298, PR fortran/49268. + * Fix c++ biarch header installation on i386. LP: #793411. + * Enable multiarch. + * Add multiarch attributes for gnat and libgnat packages. + * Add multiarch attributes for libgcj* packages. + * Adjust build dependency on multiarch glibc. + + -- Matthias Klose Wed, 08 Jun 2011 11:26:52 +0200 + +gcc-4.6 (4.6.0-11) unstable; urgency=low + + * Update to SVN 20110604 (r174637) from the gcc-4_6-branch. + - Fix PR c++/49165, PR tree-optimization/49218, PR target/45263, + PR target/43700, PR target/43995, PR tree-optimization/49217, + PR c++/49223, PR c++/47049, PR c++/47277, PR c++/48284, PR c++/48657, + PR c++/49176, PR fortran/48955, PR tree-optimization/49038, + PR tree-optimization/49093, PR middle-end/48985, PR middle-end/48953, + PR c++/49276, PR fortran/49265, PR fortran/45786. + * Configure the hppa64 and spu cross builds with --enable-plugin. + + -- Matthias Klose Sat, 04 Jun 2011 16:12:27 +0200 + +gcc-4.6 (4.6.0-10) unstable; urgency=high + + * Update to SVN 20110526 (r174290) from the gcc-4_6-branch. + - Fix PR target/44643, PR c++/49165, PR tree-optimization/49161, + PR target/49128, PR tree-optimization/44897, PR target/49133, + PR c++/44994, PR c++/49156, PR c++/45401, PR c++/44311, PR c++/44311, + PR c++/45698, PR c++/46145, PR c++/46245, PR c++/46696, PR c++/47184, + PR c++/48935, PR c++/45418, PR c++/45080, PR c++/48292, PR c++/49136, + PR c++/49042, PR c++/48884, PR c++/49105, PR c++/47263, PR c++/47336, + PR c++/47544, PR c++/48617, PR c++/48424, PR libstdc++/49141, + PR libobjc/48177. + * Proposed fix for PR tree-optimization/48702, PR tree-optimization/49144. + Closes: #627795. + * Proposed fix for PR fortran/PR48955. + * Add some conditionals to build the package on older releases. + + -- Matthias Klose Thu, 26 May 2011 16:00:49 +0200 + +gcc-4.6 (4.6.0-9) unstable; urgency=low + + * Update to SVN 20110524 (r174102) from the gcc-4_6-branch. + - Fix PR lto/49123, PR debug/49032, PR c/49120, PR middle-end/48973, + PR target/49104, PR middle-end/49029, PR c++/48647, PR c++/48945, + PR c++/48780, PR c++/49066, PR libstdc++/49058, PR target/49104. + * Use gcc-4.4 as the bootstrap compiler for kfreebsd to work around + a bootstrap issue. + + -- Matthias Klose Tue, 24 May 2011 09:41:35 +0200 + +gcc-4.6 (4.6.0-8) unstable; urgency=low + + * Update to SVN 20110521 (r173994) from the gcc-4_6-branch. + - Fix PR target/48986, PR preprocessor/48677, PR tree-optimization/48975, + PR tree-optimization/48822, PR debug/48967, PR debug/48159, + PR target/48857, PR target/48495, PR tree-optimization/48837, + PR tree-optimization/48611, PR tree-optimization/48794, PR c++/48859, + PR c++/48574, PR fortran/48889, PR target/49002, PR lto/48207, + PR tree-optimization/49039, PR tree-optimization/49018, PR lto/48703, + PR tree-optimization/48172, PR tree-optimization/48172, PR c++/48873, + PR tree-optimization/49000, PR c++/48869, PR c++/49043, PR c++/49082, + PR c++/48948, PR c++/48745, PR c++/48736, PR bootstrap/49086, + PR tree-optimization/49079, PR tree-optimization/49073. + * Update the Linaro support to the 4.6-2011.05-0 release. + * pr45979.diff: Update to the version from the trunk. + + -- Matthias Klose Sat, 21 May 2011 12:19:10 +0200 + +gcc-4.6 (4.6.0-7) unstable; urgency=low + + * Update to SVN 20110507 (r173528) from the gcc-4_6-branch. + - Fix PR middle-end/48597, PR c++/48656, PR fortran/48112, + PR fortran/48279, PR fortran/48788, PR tree-optimization/48809, + PR target/48262, PR fortran/48462, PR fortran/48746, + PR fortran/48810, PR fortran/48800, PR libstdc++/48760, + PR libgfortran/48030, PR preprocessor/48192, PR lto/48846, + PR target/48723, PR fortran/48894, PR target/48900, PR target/48252, + PR c++/40975, PR target/48252, PR target/48774, PR c++/48838, + PR c++/48749, PR ada/48844, PR fortran/48720, PR libstdc++/48750, + PR c++/48909, PR c++/48911, PR c++/48446, PR c++/48089. + + * Fix issue with volatile bitfields vs. inline asm memory constraints, + taken from the trunk, apply for ARM only. Addresses: #625825. + + -- Matthias Klose Sat, 07 May 2011 14:54:51 +0200 + +gcc-4.6 (4.6.0-6) unstable; urgency=low + + * Update to SVN 20110428 (r173059) from the gcc-4_6-branch. + - Fix PR c/48685 (closes: #623161), PR tree-optimization/48717, PR c/48716, + PR c/48742, PR debug/48768, PR tree-optimization/48734, + PR tree-optimization/48731, PR other/48748, PR c++/42687, PR c++/48726, + PR c++/48707, PR fortran/48588, PR libstdc++/48521, PR c++/48046, + PR preprocessor/48740. + * Update the ibm/gcc-4_6-branch to 20110428. + * Use gcc-4.6 as bootstrap compiler on kfreebsd-*. + + -- Matthias Klose Thu, 28 Apr 2011 10:33:52 +0200 + +gcc-4.6 (4.6.0-5) unstable; urgency=low + + * Update to SVN 20110421 (r172845) from the gcc-4_6-branch. + - Fix PR target/48288, PR tree-optimization/48611, PR lto/48148, + PR lto/48492, PR fortran/47976, PR c++/48594, PR c++/48657, + PR c++/46304, PR target/48708, PR middle-end/48695. + + * Update the Linaro support to the 4.6-2011.04-0 release. + + -- Matthias Klose Thu, 21 Apr 2011 22:50:25 +0200 + +gcc-4.6 (4.6.0-4) unstable; urgency=medium + + * Update to SVN 20110419 (r172584) from the gcc-4_6-branch. + - Fix PR target/48678, PR middle-end/48661, PR tree-optimization/48616, + PR lto/48538, PR c++/48537, PR c++/48632, PR testsuite/48675, + PR libstdc++/48635, PR libfortran/47571. + + [ Aurelien Jarno ] + * Enable SSP on mips/mipsel. + + [ Matthias Klose ] + * (Build-)depend on binutils 2.21.51. + + -- Matthias Klose Tue, 19 Apr 2011 23:45:16 +0200 + +gcc-4.6 (4.6.0-3) unstable; urgency=high + + * Update to SVN 20110416 (r172584) from the gcc-4_6-branch. + - Fix PR rtl-optimization/48143, PR target/48142, PR target/48349, + PR debug/48253, PR fortran/48291, PR target/16292, PR c++/48280, + PR c++/48212, PR c++/48369, PR c++/48281, PR c++/48265, PR lto/48246, + PR libstdc++/48398, PR bootstrap/48431, PR tree-optimization/48377, + PR debug/48343, PR rtl-optimization/48144, PR debug/48466, PR c/48517, + PR middle-end/48335, PR c++/48450, PR target/47829, PR c++/48534, + PR c++/48523, PR libstdc++/48566, PR libstdc++/48541, PR target/48366, + PR libstdc++/48465, PR middle-end/48591, PR target/48605, + PR middle-end/48591, PR target/48090, PR tree-optimization/48195, + PR rtl-optimization/48549, PR c++/48594, PR c++/48570, PR c++/48574, + PR fortran/48360, PR fortran/48456, PR libstdc++/48631, + PR libstdc++/48635, PR libstdc++/48476. + + [ Matthias Klose ] + * libjava-jnipath.diff: Add /usr/lib//jni as jnipath too. + * Add mudflap support for varargs (patch taken from the trunk). + * gcc-4.6-plugin-dev: Install gtype.state. + * Bootstrap with gcc-4.4 -g -O2 on armel. + * Fix linker plugin configuration. Closes: #620661. + * Update the Linaro support for GCC-4.6. + * gcc-snapshot builds: + - Fix build with multiarch changes. + - Use gcc-snapshot as the bootstrap compiler on armel. + - Re-enable building java in the gcc-snapshot package. + * Build supporting multiarch on wheezy/sid. + * Adjust (build)-dependency to new libgmp-dev name. + + [ Marcin Juszkiewicz ] + * Configure stage1 cross builds with --disable-libquadmath. + + -- Matthias Klose Sat, 16 Apr 2011 17:02:30 +0200 + +gcc-4.6 (4.6.0-2) unstable; urgency=low + + * Update to SVN 20110329 (r171700) from the gcc-4_6-branch. + - Fix PR bootstrap/48135, PR target/47553, PR middle-end/48269, + PR tree-optimization/48228, PR middle-end/48134, PR middle-end/48031, + PR other/48179, PR other/48221, PR other/48234, PR target/48237, + PR debug/48204, PR c/42544, PR c/48197, PR rtl-optimization/48141, + PR rtl-optimization/48141, PR c++/48166, PR c++/48296, PR c++/48289, + PR c++/47999, PR c++/48313, Core 1232, Core 1148, PR c++/47504, + PR c++/47570, PR preprocessor/48248, PR c++/48319. + + [ Matthias Klose ] + * Update NEWS files. + * Configure the hppa64 cross build with --disable-libquadmath. + * Don't build armhf from the Linaro branch. + * Don't try to build Go on sh4. + + [ Marcin Juszkiewicz ] + * Fixes issues with staged cross builds. LP: #741855, #741853. + * Fix libdir setting for multiarch enabled cross builds. LP: #741846. + * Drop alternatives for cross builds. LP: #676454. + + -- Matthias Klose Tue, 29 Mar 2011 23:22:07 +0200 + +gcc-4.6 (4.6.0-1) unstable; urgency=low + + * GCC 4.6.0 release. + + * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618865. + * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, + taken from the trunk. + * Fix PR target/47487 ICE building libgo, taken from the trunk. + * Merge multiarch changes from the gcc-4.5 package. + * Apply proposed patch to reduce the overhead of dwarf2 location tracking. + Addresses: #618748. + + -- Matthias Klose Sat, 26 Mar 2011 03:03:21 +0100 + +gcc-4.6 (4.6.0~rc1-3) experimental; urgency=low + + * GCC 4.6.0 release candidate 2. + + -- Matthias Klose Tue, 22 Mar 2011 22:11:42 +0100 + +gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low + + [ Loic Minier ] + * Rework config/vxworks-dummy.h installation snippet to test + DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% + sh% sparc%) as to also install this header on other ports targetting the + relevant upstream CPUs such as armhf. Add a comment pointing at the + upstream bug. + * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches + arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals + armel. Add a comment pointing at the Debian bug and indicating that this + is only useful for older dpkg-dev versions. + * debian/rules.def: fix "armel" entry to "arm" in list of + DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. + * debian/rules2: drop commented out GCC #42509 workaround as this was fixed + upstream in 4.4+. + * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for + arm as ths is what the Debian arm, armel and armhf port use. + * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid + duplication, as a comment called out for. + * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding + whether to enable profiledbootstrap. + * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. + * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. + * Patched a couple of comments mentioning armel to also mention armhf. + * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported + from a patch sent on the upstream mailing-list. + + [ Matthias Klose ] + * Update libstdc++ symbols files. + * Update libgfortran symbols files. + + -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 + +gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low + + * Update to SVN 20110320 (r171192) from the gcc-4_6-branch. + + [ Matthias Klose ] + * Update gcc-default-ssp* patches for the release candidate. + * Pass -Wno-error=unused-but-set-parameter if -Werror is present (temporary + for rebuild tests). + * Always configure --with-plugin-ld, always install liblto_plugin.so. + + [ Marcin Juszkiewicz ] + * Add conflicts with -4.5-*dev packages. Closes: #618450. + + [ Petr Salinger] + * Disable lock-2.c test on kfreebsd-*. Closes: #618988. + * Re-enable parallel builds on kfreebsd. + * Package lto_plugin for kfreebsd-* and Hurd. + + -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 + +gcc-4.6 (4.6.0~rc1-1) experimental; urgency=low + + * Build from the GCC 4.6.0 release candidate tarball. + + [ Matthias Klose ] + * Disable Go on powerpc. Closes: #615827. + * Fix lintian errors for the -plugin-dev package. + * Update kbsd-gnu.diff (Petr Salinger). Closes: #615826. + * Disable parallel builds on kfreebsd (Petr Salinger). + * Update gmp (build) dependencies. + * Update GFDL compliant builds. Closes: #609161. + * For GFDL compliant builds, build a dummy s-tm-texi without access + to the texinfo sources. + + [ Aurelien Jarno ] + * Import symbol files for kfreebsd-amd64, kfreebsd-i386, sh4 and + sparc64 from gcc-4.5. + + -- Matthias Klose Mon, 14 Mar 2011 19:01:08 +0100 + +gcc-4.6 (4.6-20110227-1) experimental; urgency=low + + [ Matthias Klose ] + * Update libquadmath symbols file. + * gcc-4.6-plugin-dev: Install gengtype. + + [ Sebastian Andrzej Siewior ] + * Remove -many on powerpcspe (__SPE__). + * Remove classic FPU opcodes from libgcc if target has no support for them + (powerpcspe). + + -- Matthias Klose Sun, 27 Feb 2011 22:33:45 +0100 + +gcc-4.6 (4.6-20110216-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Pass --no-add-needed by default to the linker. See + http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols + in indirect dependent shared libraries" for more information. + + -- Matthias Klose Wed, 16 Feb 2011 23:55:32 +0100 + +gcc-4.6 (4.6-20110125-1) experimental; urgency=low + + * debian/copyright: Add unicode copyright for + libjava/classpath/resource/gnu/java/locale/* files. Addresses: #609161. + + -- Matthias Klose Wed, 26 Jan 2011 03:42:10 +0100 + +gcc-4.6 (4.6-20110123-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Don't run the libstdc++ testsuite on mipsel, times out on the buildd. + + [ Marcin Juszkiewicz ] + * Fix biarch/triarch cross builds. + - dpkg-shlibdeps failed to find libraries for 64 or n32 builds + - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. + + -- Matthias Klose Sun, 23 Jan 2011 12:14:49 +0100 + +gcc-4.6 (4.6-20110116-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Update patches for the trunk. + * Pass -Wno-error=unused-but-set-variable if -Werror is present (temporary + for rebuild tests). + * Work around PR libffi/47248, force a read only eh frame section. + + -- Matthias Klose Sun, 16 Jan 2011 23:28:28 +0100 + +gcc-4.6 (4.6-20110105-1) experimental; urgency=low + + [ Matthias Klose ] + * Rename and update libobjc symbols files. + * Update cloog/ppl build dependencies. + * Adjust libstdc++ configure and paths for stylesheets and dtds. + * Update copyright for libquadmath, libgo, gcc/go/gofrontend. + * Enable Go for more architectures. + * DP: libgo: Fix GOARCH for i386 biarch, add GOARCH for powerpc + + [ Kees Cook ] + * Update hardening patches for GCC-4.6. LP: #696990. + + -- Matthias Klose Wed, 05 Jan 2011 22:29:57 +0100 + +gcc-4.6 (4.6-20101220-1) maverick; urgency=low + + * GCC snapshot, taken from the trunk. + + -- Matthias Klose Tue, 21 Dec 2010 00:16:19 +0100 + +gcc-4.5 (4.5.2-7) unstable; urgency=low + + * Update to SVN 20110323 (r171351) from the gcc-4_5-branch. + - Fix PR c++/47125, PR fortran/47348, PR libstdc++/48114, + PR libfortran/48066, PR target/48171, PR target/47862. + PR preprocessor/48192. + + [ Steve Langasek ] + * Make dpkg-dev versioned build-dependency conditional on whether we want + to build for multiarch. + * Add a new patch, gcc-multiarch+biarch.diff, used only when building for + multiarch to set our multilib paths to the correct relative directories. + * debian/rules.defs: support turning on multiarch build by architecture; + but don't enable this yet, we still need to wait for dpkg-dev. + * When DEB_HOST_MULTIARCH is available (i.e., with the next dpkg upload), + use it as our multiarch path. + * debian/rules.d/binary-java.mk: jvm-exports path is /usr/lib/jvm-exports, + not $(libdir)/jvm-exports. + * OTOH, libgcj_bc *is* in $(libdir). + * the spu build is not a multiarch build; look in the correct + non-multiarch directory. + * debian/rules2: pass --libdir also for stageX builds, needed in order to + successfully build for multiarch. + * debian/rules2: $(usr_lib) for a cross-build should not include the + multiarch dir as part of the path. + * debian/patches/gcc-multiarch+biarch.diff: restore the original intent of + the patch, namely, that the multilib dir for the default variant is + always equal to libdir (the multiarch dir), and we walk up the tree + to find lib for the secondary variant. + * debian/patches/gcc-multiarch+biarch32.diff: apply the same multilib + directory rewriting for biarch paths with multiarch as we do without; + still needed in the near term. + * Put our list of patches in README.Debian.$(DEB_TARGET_ARCH) instead of + in README.Debian, so that the individual files are architecture-neutral + and play nicely with multiarch. LP: #737846. + * Add a comment at the bottom of README.Debian with a pointer to the new + file listing the patches. + + [ Loic Minier ] + * Rework config/vxworks-dummy.h installation snippet to test + DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% + sh% sparc%) as to also install this header on other ports targetting the + relevant upstream CPUs such as armhf. Add a comment pointing at the + upstream bug. + * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches + arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals + armel. Add a comment pointing at the Debian bug and indicating that this + is only useful for older dpkg-dev versions. + * debian/rules.def: fix "armel" entry to "arm" in list of + DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. + * debian/rules2: drop commented out GCC #42509 workaround as this was fixed + upstream in 4.4+. + * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for + arm as ths is what the Debian arm, armel and armhf port use. + * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid + duplication, as a comment called out for. + * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding + whether to enable profiledbootstrap. + * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. + * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. + * Patched a couple of comments mentioning armel to also mention armhf. + * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported + from a patch sent on the upstream mailing-list. + + [ Matthias Klose ] + * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, + taken from the trunk. + * Fix PR preprocessor/48192, make conditional macros not defined for + #ifdef, proposed patch. + * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618864. + * Fix issue with volatile bitfields, default to -fstrict-volatile-bitfields + again on armel for Linaro builds. LP: #675347. + + -- Matthias Klose Wed, 23 Mar 2011 15:44:01 +0100 + +gcc-4.5 (4.5.2-6) unstable; urgency=low + + * Update to SVN 20110312 (r170895) from the gcc-4_5-branch. + - Fix PR tree-optimization/45967, PR tree-optimization/47278, + PR target/47862, PR c++/44629, PR c++/45651, PR c++/47289, PR c++/47705, + PR c++/47488, PR libgfortran/47778, PR c++/48029. + + [ Steve Langasek ] + * Make sure our libs Pre-Depend on 'multiarch-support' when building for + multiarch. + * debian/patches/gcc-multiarch*, debian/rules.patch: use i386 in the + multiarch path for amd64 / kfreebsd-amd64, not i486 or i686. This lets + us use a common set of paths on both Debian and Ubuntu, regardless of + the target default optimization level. + * debian/rules.conf: when building for multiarch, we need to be sure we + are building against a libc-dev that supports the corresponding paths. + (the referenced version number for this needs to be bumped once this is + officially in the archive.) + + [ Matthias Klose ] + * Don't run the libmudflap testsuite on hppa; times out on the buildd. + * Don't run the libstdc++ testsuite on mipsel; times out on the buildd. + * Post Linaro 4.5-2011.03-0 release changes (up to 20110313). + * Undefine LINK_EH_SPEC before redefining it to turn off warnings on + powerpc. + * Update gmp (build) dependencies. + + [ Aurelien Jarno ] + * Add symbol files on kfreebsd-i386. + * Add symbol files on kfreebsd-amd64. + * Add symbol files on sparc64. + * Add symbol files on sh4. + + -- Matthias Klose Sun, 13 Mar 2011 17:30:48 +0100 + +gcc-4.5 (4.5.2-5) unstable; urgency=low + + * Update to SVN 20110305 (r170696) from the gcc-4_5-branch. + - Fix PR target/43810, PR fortran/47886, PR tree-optimization/47615, + PR middle-end/47639, PR tree-optimization/47890, PR libfortran/47830, + PR tree-optimization/46723, PR target/45261, PR target/45808, + PR c++/46159, PR c++/47904, PR fortran/47886, PR libstdc++/47433, + PR target/42240, PR fortran/47878, PR libfortran/47694. + * Update the Linaro support to the 4.5-2011.03-0 release. + - Fix LP: #705689, LP: #695302, LP: #710652, LP: #710623, LP: #721021, + LP: #721021, LP: #709453. + + -- Matthias Klose Sun, 06 Mar 2011 02:58:01 +0100 + +gcc-4.5 (4.5.2-4) unstable; urgency=low + + * Update to SVN 20110222 (r170382) from the gcc-4_5-branch. + - Fix PR target/43653, PR fortran/47775, PR target/47840, + PR libfortran/47830. + + [ Matthias Klose ] + * Don't apply a patch twice. + * Build libgcc_s with -fno-stack-protector, when not building from the + Linaro branch. + * Backport proposed fix for PR tree-optimization/46723 from the trunk. + + [ Steve Langasek ] + * debian/control.m4: add missing Multi-Arch: same for libgcc4; make sure + Multi-Arch: same doesn't get set for libmudflap when building an + Architecture: all cross-compiler package. + * debian/rules2: use $libdir for libiberty.a. + * debian/patches/gcc-multiarch-*.diff: make sure we're using the same + set_multiarch_path definition for all variants. + + [ Sebastian Andrzej Siewior ] + * PR target/44364 + * Remove -many on powerpcspe (__SPE__) + * Remove classic FPU opcodes from libgcc if target has no support for them + (powerpcspe) + + -- Matthias Klose Wed, 23 Feb 2011 00:35:54 +0100 + +gcc-4.5 (4.5.2-3) experimental; urgency=low + + * Update to SVN 20110215 (r170181) from the gcc-4_5-branch. + - Fix PR rtl-optimization/44469, PR tree-optimization/47411, + PR bootstrap/44699, PR target/44392, PR fortran/47331, PR fortran/47448, + PR pch/14940, PR rtl-optimization/47166, PR target/47272, PR target/47580, + PR tree-optimization/47541, PR target/44606, PR boehm-gc/34544, + PR fortran/47569, PR libstdc++/47709, PR libstdc++/46914, PR libffi/46661. + * Update the Linaro support to the 4.5 2011.02-0 release. + * Pass --no-add-needed by default to the linker. See + http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols + in indirect dependent shared libraries" for more information. + + -- Matthias Klose Wed, 16 Feb 2011 15:29:26 +0100 + +gcc-4.5 (4.5.2-2) experimental; urgency=low + + * Update to SVN 20110123 (r169142) from the gcc-4_5-branch. + - Fix PR target/46915, PR target/46729, PR libgcj/46774, PR target/47038, + PR target/46685, PR target/45447, PR tree-optimization/46758, + PR tree-optimization/45552, PR tree-optimization/43023, + PR middle-end/46734, PR fortran/45338, PR preprocessor/39213, + PR target/43309, PR fortran/46874, PR tree-optimization/47286, + PR tree-optimization/44592, PR target/47201, PR c/47150, PR target/46880, + PR middle-end/45852, PR tree-optimization/43655, PR debug/46893, + PR rtl-optimization/46804, PR rtl-optimization/46865, PR target/41082, + PR tree-optimization/46864, PR fortran/45777, PR tree-optimization/47365, + PR tree-optimization/47167, PR target/47318, PR target/46655, + PR fortran/47394, PR libstdc++/47354. + + [ Matthias Klose ] + * Update the Linaro support to the 4.5 2011.01-1 release. + * Don't build packages now built from the gcc-4.6 package for architectures + with a sucessful gcc-4.6 build. + + [ Kees Cook ] + * debian/patches/gcc-default-ssp.patch: do not ignore -fstack-protector-all + (LP: #691722). + + [ Marcin Juszkiewicz ] + * Fix biarch/triarch cross builds. + - dpkg-shlibdeps failed to find libraries for 64 or n32 builds + - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. + + -- Matthias Klose Sun, 23 Jan 2011 11:54:52 +0100 + +gcc-4.5 (4.5.2-1) experimental; urgency=low + + * GCC 4.5.2 release. + + -- Matthias Klose Sat, 18 Dec 2010 14:14:38 +0100 + +gcc-4.5 (4.5.1-12) experimental; urgency=low + + * Update to SVN 20101129 (r167272) from the gcc-4_5-branch. + - Fix PR fortran/45742, PR tree-optimization/46498, PR target/45807, + PR target/44266, PR rtl-optimization/46315, PR tree-optimization/44545, + PR tree-optimization/46491, PR rtl-optimization/46571, PR target/31100, + PR c/46547, PR fortran/46638, PR tree-optimization/46675, PR debug/46258, + PR ada/40777. + + [ Matthias Klose ] + * Use lib instead of lib64 as the 64bit system dir on biarch + architectures defaulting to 64bit. Closes: #603597. + * Fix powerpc and s390 builds when biarch is disabled. + * Backport PR bootstrap/44768, miscompilation of dpkg on ARM + with -O2 (Chung-Lin Tang). LP: #674146. + * Update libgcc2 symbols file. Closes: #602099. + + [ Marcin Juszkiewicz ] + * Do not depend on target mpfr and zlib -dev packages for cross builds. + LP: #676027. + + [ Konstantinos Margaritis ] + * Add support for new target architecture `armhf'. Closes: #603948. + + -- Matthias Klose Mon, 22 Nov 2010 08:12:08 +0100 + +gcc-4.5 (4.5.1-11) experimental; urgency=low + + * Update to SVN 20101114 (r166728) from the gcc-4_5-branch. + - Fix PR fortran/45742. + * Don't hardcode debian/patches when referencing patches. Closes: #600502. + + -- Matthias Klose Sun, 14 Nov 2010 08:36:27 +0100 + +gcc-4.5 (4.5.1-10) experimental; urgency=low + + * Update to SVN 20101112 (r166653) from the gcc-4_5-branch. + - Fix PR rtl-optimization/44691, PR tree-optimization/46355, + PR tree-optimization/46177, PR c/44772, PR tree-optimization/46099, + PR middle-end/43690, PR tree-optimization/46165, PR middle-end/46419, + PR tree-optimization/46107, PR tree-optimization/45314, PR debug/45939, + PR rtl-optimization/46237, PR middle-end/44569, PR middle-end/44569, + PR tree-optimization/45902, PR target/46153, PR rtl-optimization/46226, + PR tree-optimization/46167, PR target/46098, PR target/45946, + PR fortran/42169, PR middle-end/46019, PR c/45969, PR c++/45894, + PR c++/46160, PR c++/45983, PR fortran/46152, PR fortran/46140, + PR libstdc++/45999, PR libgfortran/46373, PR libgfortran/46010, + PR fortran/46007, PR c++/46024. + * Update the Linaro support to the 4.5 2010.11 release. + * Update gcc-4.5 source dependencies. Closes: #600503. + * ARM: Fix Thumb-1 reload ICE with nested functions (Julian Brown), + taken from the trunk. + * Fix earlyclobbers on some arm.md DImode shifts (may miscompile "x >> 1"), + taken from the trunk. Closes: #600888. + + -- Matthias Klose Fri, 12 Nov 2010 18:34:47 +0100 + +gcc-4.5 (4.5.1-9) experimental; urgency=low + + * Update to SVN 20101014 (r165474) from the gcc-4_5-branch. + - Fix PR target/45820, PR tree-optimization/45854, PR target/45843, + PR target/43764, PR rtl-optimization/43358, PR bootstrap/44621, + PR libffi/45677, PR middle-end/45869, PR middle-end/45569, + PR tree-optimization/45752, PR fortran/45748, PR libstdc++/45403, + PR libstdc++/45924, PR libfortran/45710, PR bootstrap/44455, + PR java/43839, PR debug/45656, PR debug/44832, PR libstdc++/45711, + PR tree-optimization/45982. + + [ Matthias Klose ] + * Update the Linaro support to the 4.5 2010.10 release. + * Just try to build java on mips/mipsel (was disabled in 4.5.0-9, when + java was built from the same source package). Addresses: #599976. + * Remove the gpc packaging support. + * Fix libmudflap.so symlink. Addresses: #600161. + * Fix pch test failures with heap randomization on armel (PR pch/45979). + + [ Kees Cook ] + * Don't enable -fstack-protector with -ffreestanding. + + -- Matthias Klose Thu, 14 Oct 2010 19:17:41 +0200 + +gcc-4.5 (4.5.1-8) experimental; urgency=low + + * Update to SVN 20100925 (r164618) from the gcc-4_5-branch. + - Fix PR middle-end/44763, PR java/44095, PR target/35664, + PR rtl-optimization/41085, PR rtl-optimization/45051, + PR target/45694, PR middle-end/45678, PR middle-end/45678, + PR middle-end/45704, PR rtl-optimization/45728, PR libfortran/45532, + PR rtl-optimization/45695, PR rtl-optimization/42775, PR target/45726, + PR tree-optimization/45623, PR tree-optimization/45709, PR debug/43628, + PR tree-optimization/45709, PR rtl-optimization/45593, PR fortran/45081, + * Find 32bit system libraries on sparc64, s390x. + * Remove README.Debian from the source package to avoid confusion for + readers of the packaging. + * Don't include info files and man pages in hppa64 and spu builds. + Closes: #597435. + * Apply proposed patch for PR mudflap/24619 (instrumentation of dlopen) + (Brian M. Carlson) Closes: #507514. + + -- Matthias Klose Sat, 25 Sep 2010 14:11:39 +0200 + +gcc-4.5 (4.5.1-7) experimental; urgency=low + + * Update to SVN 20100914 (r164279) from the gcc-4_5-branch. + - Fix PR target/40959, PR middle-end/45567, PR debug/45660, + PR rtl-optimization/41087, PR rtl-optimization/44919, PR target/36502, + PR target/42313, PR target/44651. + * Add support to build from the Linaro 4.5 2010.09 release. + * gcc-4.5-plugin-dev: Install config/arm/arm-cores.def. + * Remove non-existing URL's in README.c++ (Osamu Aoki). Closes: #596406. + * Don't provide c++abi2-dev for g++ cross builds. + * Don't pass -mimplicit-it=thumb if -mthumb to as on ARM, rejected upstream. + + -- Matthias Klose Tue, 14 Sep 2010 12:52:34 +0200 + +gcc-4.5 (4.5.1-6) experimental; urgency=low + + * Update to SVN 20100909 (r164132) from the gcc-4_5-branch. + - Fix PR middle-end/45312, PR bootstrap/43847, PR middle-end/44554, + PR middle-end/40386, PR other/45443, PR c++/45200, PR c++/45293, + PR c++/45558, PR fortran/45595, PR fortran/45530, PR fortran/45489, + PR fortran/45019, PR libstdc++/45398. + + [ Matthias Klose ] + * Tighten binutils dependencies to 2.20.1-14. + + [ Marcin Juszkiewicz ] + * Fix the gcc-4.5-plugin-dev package name for cross builds. LP: #631474. + * Build the gcc-4.5-plugin-dev for stage1 cross builds. + * Fix priorities and sections for some cross packages. + + [ Al Viro ] + * Fix installation of libgcc_s.so as a linker script for biarch builds. + + [ Kees Cook ] + * Push glibc stack traces into stderr when building the package. + * debian/patches/gcc-default-ssp.patch: Lower ssp-buffer-size to 4. + + -- Matthias Klose Fri, 10 Sep 2010 21:25:37 +0200 + +gcc-4.5 (4.5.1-5) experimental; urgency=low + + * Always add dependencies on multilib library packages in *-multilib + packages. + * Fix installation of libgcc_s.so on architectures when libgcc_s.so is + a linker script, not a symlink (Steve Langasek). Closes: #595474. + * Remove the lib32gcc1 preinst script. Closes: #595495. + + -- Matthias Klose Sat, 04 Sep 2010 12:41:40 +0200 + +gcc-4.5 (4.5.1-4) experimental; urgency=low + + * Update to SVN 20100903 (r163833) from the gcc-4_5-branch. + - Fix PR target/45070, PR middle-end/45458, PR rtl-optimization/45353, + PR middle-end/45423, PR c/45079, PR tree-optimization/45393, + PR c++/44991, PR middle-end/45484, PR debug/45500, PR lto/45496. + + [ Matthias Klose ] + * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package + on armel, mipsel and sparc64 too. + * Cleanup packaging files in gcc-source package. + * [ARM] Provide __builtin_expect() hints in linux-atomic.c (backport). + + [ Al Viro ] + * Fix builds with disabled biarch library packages. + * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch + to using them in rules.d/*; as the result, most of the explicit pathnames + in there are gone _and_ we get uniformity across different flavours. + * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch + to using them in rules.d/*; as the result, most of the explicit pathnames + in there are gone _and_ we get uniformity across different flavours. + * Merge bi-/tri-arch stuff in binary-gcc.mk. + * Merge rules for libgcc biarch variants. + * Merge rules for libstdc++ biarch variants. Fix n32 variant of + libstdc++-dbg removing _pic.a from the wrong place. + * Merge libgfortran rules. + * Merge rules for cxx-multi and objc-multi packages. + * Enable gcc-hppa64 in cross-gcc-to-hppa build. + + [ Marcin Juszkiewicz ] + * Create libgcc1 and gcc-*-base packages for stage2 cross builds. + LP: #628855. + + -- Matthias Klose Fri, 03 Sep 2010 18:09:40 +0200 + +gcc-4.5 (4.5.1-3) experimental; urgency=low + + * Update to SVN 20100829 (r163627) from the gcc-4_5-branch. + - Fix PR target/45327, PR middle-end/45292, PR fortran/45344, + PR target/41484, PR rtl-optimization/44858, PR rtl-optimization/45400, + PR tree-optimization/45260, PR c++/45315. + + [ Matthias Klose ] + * Don't run the libstdc++ testsuite on armel on the buildds. + * Integrate and extend bi/tri-arch cross builds patches. + * Fix dependencies for mips* triarch library packages depend on *both* lib64* + and libn32* packages. Closes: #594540. + * Tighten binutils dependencies to 2.20.1-13. + * Update LAST_UPDATED file when applying upstream updates. + + [ Al Viro ] + * Bi/tri-arch cross builds patches. + * Fix installation paths in bi/tri-arch libobjc and libmudflap packages. + * Merge rules for all flavours of libgomp, libmudflap, libobjc. + * Crossbuild fix for lib32gomp (use $(PFL)/lib32 instead of $(lib32)). + * gcc-4.5: libgcc_s.so.1 symlink creation on cross-builds. + * Enable gcc-multilib for cross-builds and fix what needs fixing. + * Enable g++-multilib for cross-builds, fix pathnames. + * Enable gobjc/gobjc++ multilib for cross-builds, fixes. + * Enable gfortran multilib for cross-builds, fix paths. + * Multilib dependency fixes for cross-builds. + + -- Matthias Klose Sun, 29 Aug 2010 18:24:37 +0200 + +gcc-4.5 (4.5.1-2) experimental; urgency=low + + * Update to SVN 20100818 (r163323) from the gcc-4_5-branch. + - Fix PR target/41089, PR tree-optimization/44914, PR c++/45112, + PR fortran/44929, PR middle-end/45262, PR debug/45259, PR debug/45055, + PR target/44805, PR middle-end/45034, PR tree-optimization/45109, + PR target/44942, PR fortran/31588, PR fortran/43954, PR fortran/44660, + PR fortran/42051, PR fortran/44064, PR fortran/45151, PR libstdc++/44963, + PR tree-optimization/45241, PR middle-end/44632 (closes: #585925), + PR libstdc++/45283, PR target/45296. + + [ Matthias Klose ] + * Allow overwriting of the PF macro used in the build from the environment + (Jim Heck). Closes: #588381. + * Fix libc-dbg build dependency for java enabled builds. Addresses: #591424. + * gcj: Align data in .rodata.jutf8.* sections, patch taken from the trunk. + * Configure with --enable-checking+release. LP: #612822. + * Add the complete packaging to the -source package. LP: #608650. + * Drop the gcc-ix86-asm-generic32.diff patch. + * Tighten (build-) dependency on cloog-ppl (>= 0.15.9-2). + * Apply proposed patch for PR middle-end/45292. + * Re-enable running the libstdc++ testsuite on armel and ia64 on the buildds. + + [ Steve Langasek ] + * s,/lib/,/$(libdir)/, throughout debian/rules*; a no-op in the current + case, but required for us to find the libraries when building for + multiarch + * Don't append multiarch paths to any multilib paths except for the default; + our biarch (multilib) builds need to remain independent of multiarch in + the near term, so we want to make sure we can find /usr/lib32 without + /usr/lib/i486-linux-gnu being available. + * debian/control.m4, debian/rules.conf: conditionally set packages to be + Multi-Arch: yes when MULTIARCH is defined. + + [ Marcin Juszkiewicz ] + * Allow building intermediate stages for cross builds. LP: #603497. + + -- Matthias Klose Wed, 18 Aug 2010 07:00:12 +0200 + +gcc-4.5 (4.5.1-1) experimental; urgency=low + + * GCC-4.5.1 release. + * Update to SVN 20100731 (r162781) from the gcc-4_5-branch. + - Fix PR tree-optimization/45052, PR target/43698. + * Apply proposed fixes for PR c++/45112, PR c/45079. + * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package + on armel, mips, mipsel, sh4, sparc, sparc64. Closes: #590054. + * Link executables statically when `static' is passed in DEB_BUILD_OPTIONS + (Jim Heck). Closes: #590102. + * Stop building java packages from the gcc-4.5 source package. + + -- Matthias Klose Sat, 31 Jul 2010 16:30:20 +0200 + +gcc-4.5 (4.5.0-10) experimental; urgency=low + + * Update to SVN 20100725 (r162508) from the gcc-4_5-branch. + - Fix PR tree-optimization/45047, PR c++/43016, PR c++/45008. + * Disable building gcj/libjava on mips/mipsel (fails to link libgcj). + * Update libstdc++6 symbols files. + + -- Matthias Klose Sun, 25 Jul 2010 16:39:11 +0200 + +gcc-4.5 (4.5.0-9) experimental; urgency=low + + * Update to SVN 20100723 (r162448) from the gcc-4_5-branch (post + GCC-4.5.1 release candidate 1). + - Fix PR debug/45015, PR target/44942, PR tree-optimization/44900, + PR tree-optimization/44977, PR c++/44996, PR fortran/44929, + PR fortran/30668, PR fortran/31346, PR fortran/34260, + PR fortran/40011. + + [ Marcin Juszkiewicz ] + * Fix dependencies on cross library packages. + * Copy all debian/rules* files to the -source package. + + [ Matthias Klose ] + * Fix versioned build dependency on gcc-4.x-source package for cross builds. + LP: #609060. + * Set Vcs attributes in control file. + + -- Matthias Klose Fri, 23 Jul 2010 13:08:07 +0200 + +gcc-4.5 (4.5.0-8) experimental; urgency=low + + * Update to SVN 20100718 (r161892) from the gcc-4_5-branch. + - Fixes: PR target/44531, PR bootstrap/44820, PR target/44597, + PR target/44705, PR middle-end/44777, PR debug/44694, PR c++/44039, + PR tree-optimization/43801, PR target/44575, PR debug/44104, + PR middle-end/44671, PR middle-end/44686, PR tree-optimization/44357, + PR debug/44694, PR middle-end/43866, PR debug/42278, PR c++/44059, + PR tree-optimization/43905, PR middle-end/44133, PR tree-optimize/44063, + PR tree-optimization/44683, PR rtl-optimization/43332, PR debug/44610, + PR middle-end/44684, PR tree-optimization/44393, PR middle-end/44674, + PR c++/44628, PR c++/44587, PR fortran/44582, PR fortran/43841, + PR fortran/43843, PR libstdc++/44708, PR tree-optimization/44886, + PR target/43888, PR tree-optimization/44284, PR middle-end/44828, + PR middle-end/41355, PR c++/44703, PR ada/43731, PR fortran/44773, + PR fortran/44847. + + [ Marcin Juszkiewicz ] + * debian/rules2: Merge rules.d includes. + * Properly -name -dbg packages for cross builds. + * Various cross build fixes. + * Build libmudflap packages for cross builds. + * Fix generation of maintainer scripts for cross packages. + * Build a gcc-base package for cross builds. + + [ Kees Cook ] + * Fix additional libstdc++ testsuite failures for hardening defaults. + + [ Samuel Thibault ] + * Update hurd patch for 4.5, fixing build failure. Closes: #584819. + + [ Matthias Klose ] + * gcc-arm-implicit-it.diff: Only pass -mimplicit-it=thumb when in + thumb mode (Andrew Stubbs). + + -- Matthias Klose Sun, 18 Jul 2010 10:53:51 +0200 + +gcc-4.5 (4.5.0-7) experimental; urgency=low + + * Update to SVN 20100625 (r161383) from the gcc-4_5-branch. + - Fixes: PR bootstrap/44426, PR target/44546, PR target/44261, + PR target/43740, PR libstdc++/44630 (closes: #577458), + PR c++/44627 (LP: #503668), PR target/39690, PR target/44615, + PR fortran/44556, PR c/44555. + - Update libstdc++'s pretty printer for python2.6. Closes: #585202. + + [ Matthias Klose ] + * Fix libstdc++ symbols files for powerpc and sparc. + * Add maintainer scripts for cross packages. + + [ Samuel Thibault ] + * Update hurd patch for 4.5, fixing build failure. Closes: #584454, + #584819. + + [ Marcin Juszkiewicz ] + * Merge the rules.d/binary-*-cross.mk files into rules.d/binary-*.mk. + + -- Matthias Klose Fri, 25 Jun 2010 15:57:38 +0200 + +gcc-4.5 (4.5.0-6) experimental; urgency=low + + [ Matthias Klose ] + + * Update to SVN 20100617 (r161901) from the gcc-4_5-branch. Fixes: + PR target/44169, PR bootstrap/43170, PR objc/35996, PR objc++/32052, + PR objc++/23716, PR lto/44464, PR rtl-optimization/42461, PR fortran/44536, + PR tree-optimization/44258, PR tree-optimization/44423, PR target/44534, + PR bootstrap/44426, PR tree-optimization/44508, PR tree-optimization/44507, + PR lto/42776, PR target/44481, PR debug/41371, PR bootstrap/37304, + PR target/44067, PR debug/41371, PR debug/41371, PR target/44075, + PR c++/44366, PR c++/44401, PR fortran/44347, PR fortran/44430, + PR lto/42776, PR libstdc++/44487, PR other/43838, PR libgcj/44216. + * debian/patches/cross-fixes.diff: Update for 4.5 (Marcin Juszkiewicz). + * debian/patches/libstdc++-pic.diff: Fix installation for cross builds. + * Fix PR bootstrap/43847, --enable-plugin for cross builds. + * Export long double versions of "C" math library for arm-linux-gnueabi, + m68k-linux-gnu (ColdFire), mips*-linux-gnu (o32 ABI), sh*-linux-gnu + (not 32 bit). Merge the libstdc++-*-ldbl-compat.diff patches. + * Merge binary-libgcc.mk packaging changes into binary-libgcc-cross.mk + (Loic Minier). + * Update libgcc and libstdc++ symbols files. + + [ Aurelien Jarno ] + + * libstdc++-mips-ldbl-compat.diff: On MIPS provide the long double + versions of "C" math functions in libstdc++ as we need to keep the + ABI. Closes: #584610. + + -- Matthias Klose Thu, 17 Jun 2010 14:56:14 +0200 + +gcc-4.5 (4.5.0-5) experimental; urgency=low + + * Update to SVN 20100602 (r160097) from the gcc-4_5-branch. Fixes: + PR target/44338, PR middle-end/44337, PR tree-optimization/44182, + PR target/44161, PR c++/44358, PR fortran/44360, PR lto/44385. + * Fix PR target/44261, taken from the trunk. Closes: #582787. + * Fix passing the expanded -iplugindir option. + * Disable broken profiled bootstrap on alpha. + * On ix86, pass -mtune=generic32 in 32bit mode to the assembler, when + configured for i586-linux-gnu or i686-linux-gnu. + + -- Matthias Klose Thu, 03 Jun 2010 00:44:37 +0200 + +gcc-4.5 (4.5.0-4) experimental; urgency=low + + * Update to SVN 20100527 (r160047) from the gcc-4_5-branch. Fixes: + PR rtl-optimization/44164, PR middle-end/44069, PR target/44199, + PR lto/44196, PR target/43733, PR target/44245, PR target/43869, + PR debug/44223, PR tree-optimization/44038, PR tree-optimization/43949, + PR debug/44205, PR debug/44178, PR bootstrap/43870, PR target/44202, + PR target/44074, PR lto/43455, PR lto/42653, PR lto/42425, PR lto/43080, + PR lto/43946, PR c++/43382, PR c++/41510, PR c++/44193, PR c++/44157, + PR c++/44158, PR lto/44256, PR libstdc++/44190, PR lto/44312, + PR target/43636, PR target/43726, PR c++/43555PR libstdc++/40497. + + [ Matthias Klose ] + + * Enable multilibs again on powerpcspe. Closes: #579780. + * Fix setting CC for REVERSE_CROSS build (host == target,host != build). + Closes: #579779. + * Fix setting biarch_cpu macro. + * Don't bother with un-normalized paths in .la files, just remove them. + * debian/locale-gen: Update locales needed for the libstdc++-v3 testsuite. + * If libstdc++6 is built from newer gcc-4.x source, run the libstdc++-v3 + testsuite against the installed lib too. + * Configure with --enable-secureplt on powerpcspe. + + [ Aurelien Jarno ] + + * Fix $(distrelease) on non-official archives. Fix powerpcspe, sh4 and + sparc64 builds. + + -- Matthias Klose Sun, 30 May 2010 12:52:02 +0200 + +gcc-4.5 (4.5.0-3) experimental; urgency=low + + * Update to SVN 20100519 (r159556) from the gcc-4_5-branch. Fixes: + PR c++/43704, PR fortran/43339, PR middle-end/43337, PR target/43635, + PR tree-optimization/43783, PR tree-optimization/43796, PR middle-end/43570, + PR libgomp/43706, PR libgomp/43569, PR middle-end/43835, PR c/43893, + PR tree-optimization/43572, PR tree-optimization/43845, PR libgcj/40860, + PR target/43744, PR debug/43370, PR c++/43880, PR middle-end/43671, + PR debug/43972, PR target/43921, PR c++/38064, PR c++/43953, + PR fortran/43985, PR fortran/43592, PR fortran/40539, PR c++/43787, + PR middle-end/44085, PR middle-end/44071, PR middle-end/43812, + PR debug/44028, PR rtl-optimization/44012, PR target/44046, + PR documentation/44016, PR fortran/44036, PR fortran/40728, + PR libstdc++/44014, PR lto/44184, PR bootstrap/42347, PR middle-end/44102, + PR c++/44127, PR debug/44136, PR target/44088, PR tree-optimization/44124, + PR fortran/43591, PR fortran/44135, PR libstdc++/43259. + + [ Matthias Klose ] + * Revert gcj-arm-no-merge-exidx-entries patch, fixed by PR libgcj/40860. + * Don't run the libstdc++-v3 testsuite on the ia64 buildds. Timeouts. + * Backport two libjava fixes from the trunk to run josm with gcj. + * Ubuntu only: + - Pass --hash-style=gnu instead of --hash-style=both to the linker. + * Preliminary architecture port for powerpcspe (Kyle Moffett). + Closes: #579780. + * Update configury to be able to target i686 instead of i486 on i386. + + [ Aurelien Jarno] + * Don't link with --hash-style=both on mips/mipsel as GNU hash is not + compatible with the MIPS ABI. + * Default to -mplt on mips(el), -march=mips2 and -mtune=mips32 on 32-bit + mips(el), -march=mips3 and -mtune=mips64 on 64-bit mips(el). + + -- Matthias Klose Wed, 19 May 2010 09:48:20 +0200 + +gcc-4.5 (4.5.0-2) experimental; urgency=low + + * Update to SVN 20100419 from the gcc-4_5-branch. + - Fix PR tree-optimization/43627, c++/43641, PR c++/43621, PR c++/43611, + PR fortran/31538, PR fortran/30073, PR target/43662, + PR tree-optimization/43572, PR tree-optimization/43771. + * Install the linker plugin. + * Search the linker plugin as a readable, not an executable file. + * Link with --hash-style=both on mips/mipsel. + * On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop + is not passed. + * Sequel to PR40521, fix -g to generate .eh_frame on ARM. + * On ARM, let gcj pass --no-merge-exidx-entries to the linker. + * Build-depend/depend on binutils snapshot. + * Update NEWS.html and NEWS.gcc. + + -- Matthias Klose Mon, 19 Apr 2010 15:22:55 +0200 + +gcc-4.5 (4.5.0-1) experimental; urgency=low + + * GCC 4.5.0 release. + * Always apply biarch patches. + * Build the lto-linker plugin again. Closes: #575448. + * Run the libstdc++v3 testsuite on armel again. + * Fix --enable-libstdcxx-time documentation, show configure result. + * On linux targets always pass --no-add-needed to the linker. + * Update the patch to search for plugins in a default plugin directory. + * Fix java installations in snapshot builds. + * Configure --with-plugin-ld=ld.gold. + * Linker selection: ld is used by default, to use the gold linker, + pass -fuse-linker-plugin (no other side effects if -flto/-fwhopr + is not passed). To force ld.bfd or ld.gold, pass -B/usr/lib/compat-ld + for ld.bfd or /usr/lib/gold-ld for ld.gold. + * Don't apply the gold-and-ld patch for now. + * Stop building the documentation for dfsg compliant builds. Closes: #571759. + + -- Matthias Klose Wed, 14 Apr 2010 13:29:20 +0200 + +gcc-4.5 (4.5-20100404-1) experimental; urgency=low + + * Update to SVN 20100404 from the trunk. + * Fix build failures building cross compilers configure --with-ld. + * lib32gcc1: Set priority to `extra'. + * Apply proposed patch to search for plugins in a default plugin directory. + * In snapshot builds, use for javac/ecj1 the jvm provided by the package. + * libstdc++-arm-ldbl-compat.diff: On ARM provide the long double versions + of "C" math functions in libstdc++; these are dropped when built + against glibc-2.11. + + -- Matthias Klose Sun, 04 Apr 2010 15:51:25 +0200 + +gcc-4.5 (4.5-20100321-1) experimental; urgency=low + + * Update to SVN 20100321 from the trunk. + * gcj-4.5-jre-headless: Stop providing java-virtual-machine. + * gcj-4.5-plugin-dev: Don't suggest mudflap packages. + * Apply proposed patch to enable both gold and ld in a single toolchain. + New option -fuse-ld=ld.bfd, -fuse-ld=gold. + + -- Matthias Klose Sun, 21 Mar 2010 11:45:48 +0100 + +gcc-4.5 (4.5-20100227-1) experimental; urgency=low + + * Update to SVN 20100227 from the trunk. + * Don't run the libstdc++-v3 testsuite on arm*-*-linux-gnueabi, when + defaulting to thumb mode (Timeouts on the Ubuntu buildd). + + -- Matthias Klose Sat, 27 Feb 2010 08:29:55 +0100 + +gcc-4.5 (4.5-20100222-1) experimental; urgency=low + + * Update to SVN 20100222 from the trunk. + - Install additional header files needed by plugins. Closes: #562881. + * gcc-4.5-plugin-dev: Should depend on libgmp3-dev. Closes: #566366. + * Update libstdc++6 symbols files. + + -- Matthias Klose Tue, 23 Feb 2010 02:16:22 +0100 + +gcc-4.5 (4.5-20100216-0ubuntu1~ppa1) lucid; urgency=low + + * Update to SVN 20100216 from the trunk. + * Don't call dh_makeshlibs with -V for shared libraries with + symbol files. + * Don't run the libstdc++-v3 testsuite in thumb mode on armel + to work around buildd timeout (see PR target/42509). + + -- Matthias Klose Wed, 17 Feb 2010 02:06:02 +0100 + +gcc-4.5 (4.5-20100204-1) experimental; urgency=low + + * Update to SVN 20100204 from the trunk. + + -- Matthias Klose Thu, 04 Feb 2010 19:44:19 +0100 + +gcc-4.5 (4.5-20100202-1) experimental; urgency=low + + * Update to SVN 20100202 from the trunk. + - gcc-stack_chk_fail-check.diff: Remove, applied upstream. + * Update libstdc++6 symbol files. + * Build gnat in snapshot builds on arm. + * Configure with --enable-checking=yes for snapshot builds, and for + 4.5 builds before the release. + * Temporary workaround: On arm-linux-gnueabi run the libstdc++v3 testsuite + with -Wno-abi. + * When building the hppa64 cross compiler, add $(builddir)/gcc to + LD_LIBRARY_PATH to find the just built libgcc6. Closes: #565862. + * On sh4-linux, use sh as java architecture name instead of sh4. + * On armel, build gnat-4.5 using gcc-snapshot. + * Revert the bump of the libgcc soversion on hppa (6 -> 4). + + -- Matthias Klose Tue, 02 Feb 2010 19:35:25 +0100 + +gcc-4.5 (4.5-20100107-1) experimental; urgency=low + + [ Matthias Klose ] + * Update to SVN 20100107 from the trunk. + * Revert the workaround for the alpha build (PR bootstrap/42511 is fixed). + * testsuite-hardening-format.diff: Add a fix for the libstdc++ testsuite. + * Build-depend again on autogen. + * Work around PR lto/41569 (installation bug when configured with + --enabled-gold). + * On armel run the testsuite both in arm and thumb mode, when the + distribution is supporthing tumb processors. + * Work around PR target/42509 (armel), not setting BOOT_CFLAGS, but + applying libcpp-arm-workaround.diff. + + [ Nobuhiro Iwamatsu ] + * Update gcc-multiarch patch for sh4. + + -- Matthias Klose Thu, 07 Jan 2010 16:34:57 +0100 + +gcc-4.5 (4.5-20100106-0ubuntu1) lucid; urgency=low + + * Update to SVN 20100106 from the trunk. + * gcj-4.5-jdk: Include /usr/lib/jvm-exports. + * Rename libgcc symbols file for hppa. + * On alpha and armel, set BOOT_CFLAGS to -g -O1 to work around bootstrap + failures (see PR target/42509 (armel) and PR bootstrap/42511 (alpha)). + * Base the source build-dependency on the package version instead of the + gcc version. + + -- Matthias Klose Wed, 06 Jan 2010 14:17:29 +0100 + +gcc-4.5 (4.5-20100103-1) experimental; urgency=low + + * Update to SVN 20100103 from the trunk. + + [ Samuel Thibault ] + * Update hurd patch for 4.5. Closes: #562802. + + [ Aurelien Jarno ] + * Remove patches/kbsd-gnu-ada.diff (merged upstream). + + [ Matthias Klose ] + * libgcj11: Move .so symlinks into gcj-4.5-jdk. Addresses: #563280. + * gcc-snapshot: On sparc64, use gcc-snapshot as bootstrap compiler. + * Don't use expect-tcl8.3 on hppa anymore. + * Merge gnat-4.4 changes back from 4.4.2-5. + * Bump libgcc soversion on hppa (4 -> 6). + * Default to v9a (ultrasparc) on sparc*-linux. + + -- Matthias Klose Sun, 03 Jan 2010 17:25:27 +0100 + +gcc-4.5 (4.5-20091226-1) experimental; urgency=low + + * Update to SVN 20091226 from the trunk. + * Fix powerpc spu installation. + * Enable multiarch for sh4. + * Fix libffi multilib test runs. + * Configure the hppa -> hppa64 cross compiler --with-system-zlib. + * gcc-4.5-hppa64: Don't ship info dir file. + * lib32stdc++6{,-dbg}: Add dependency on 32bit glibc. + + -- Matthias Klose Sat, 26 Dec 2009 15:38:23 +0100 + +gcc-4.5 (4.5-20091223-1) experimental; urgency=low + + * Update to SVN 20091223 from the trunk. + + [ Matthias Klose ] + * Update hardening patches for 4.5. + * Don't call install-info directly, depend on dpkg | install-info instead. + * Add conflicts with packages built from GCC 4.4 sources. + * On ARM, pass --hash-style=both to ld. + * Update libgfortran3 symbols file. + * Update libstdc++6 symbols file. + + [ Arthur Loiret ] + * debian/rules.conf (gen_no_archs): Handle multiple arm ports. + + -- Matthias Klose Wed, 23 Dec 2009 18:02:24 +0100 + +gcc-4.5 (4.5-20091220-1) experimental; urgency=low + + * Update to SVN 20091220 from the trunk. + - Remove patches applied upstream: arm-boehm-gc-locks.diff, + arm-gcc-gcse.diff, deb-protoize.diff, gcc-arm-thumb2-sched.diff, + gcc-atom-doc.diff, gcc-atom.diff, gcc-build-id.diff, + gcc-unwind-debug-hook.diff, gcj-use-atomic-builtins-doc.diff, + gcj-use-atomic-builtins.diff, libjava-atomic-builtins-eabi.diff, + libjava-nobiarch-check-snap.diff, lp432222.diff, pr25509-doc.diff, + pr25509.diff, pr39429.diff, pr40133.diff, pr40134.diff, rev146451.diff, + s390-biarch-snap.diff, sh4-scheduling.diff, sh4_atomic_update.diff. + - Update patches: gcc-multiarch.diff, gcc-textdomain.diff, + libjava-nobiarch-check.diff, libjava-subdir.diff, libstdc++-doclink.diff, + libstdc++-man-3cxx.diff, libstdc++-pic.diff, note-gnu-stack.diff, + rename-info-files.diff, s390-biarch.diff. + * Stop building the protoize package, removed from the GCC 4.5 sources. + * gcc-4.5: Install lto1, lto-wrapper, and new header files for intrinsics. + * libstdc++6-4.5-dbg: Install the python files for use with gdb. + * Build java packages from the gcc-4.5 source package. + + -- Matthias Klose Sun, 20 Dec 2009 10:56:56 +0100 + +gcc-4.4 (4.4.2-6) unstable; urgency=low + + * Update to SVN 20091220 from the gcc-4_4-branch (r155367). + Fix PR c++/42387, PR c++/41183. + + [ Matthias Klose ] + * Apply svn-doc-updates.diff for non DFSG builds. + * gcc-snapshot: + - Remove patches integrated upstream: pr40133.diff. Closes: #561550. + + [ Nobuhiro Iwamatsu ] + * Backport linux atomic ops changes for sh4 from the trunk. Closes: #561550. + * Backport from trunk: [SH] Not run scheduling before reload as default. + Closes: #561429. + + [ Arthur Loiret ] + * Apply spu patches independently of the hardening patches; fix build + failure on powerpc. + + -- Matthias Klose Sun, 20 Dec 2009 10:20:19 +0100 + +gcc-4.4 (4.4.2-5) unstable; urgency=low + + * Update to SVN 20091212 from the gcc-4_4-branch (r155122). + Revert the fix for PR libstdc++/42261, fix PR fortran/42268, + PR target/42263, PR target/42263, PR target/41196, PR target/41939, + PR rtl-optimization/41574. + + [ Matthias Klose ] + * Regenerate svn-updates.diff. + * Disable biarch testsuite runs for libffi (broken and unused). + * Support xz compression of source tarballs. + * Fix typo in PR libstdc++/40133 to do the link tests. + * gcc-snapshot: + - Remove patches integrated upstream: pr40134-snap.diff. + - Update s390-biarch.diff for trunk. + + [ Aurelien Jarno ] + * Add sparc64 support: disable multilib and install the libraries + in /lib. + + -- Matthias Klose Sun, 13 Dec 2009 10:28:19 +0100 + +gcc-4.4 (4.4.2-4) unstable; urgency=low + + * Update to SVN 20091210 from the gcc-4_4-branch (r155122), Fixes: + PR target/42165, PR target/42113, PR libgfortran/42090, + PR middle-end/42049, PR c++/42234, PR fortran/41278, PR libstdc++/42261, + PR libstdc++/42273 PR java/41991. + + [ Matthias Klose ] + * gcc-arm-thumb2-sched.diff: Don't restrict reloads to LO_REGS for Thumb-2. + * PR target/40134: Don't redefine LIB_SPEC on hppa. + * PR target/42263, fix wrong code bugs in SMP support on ARM, backport from + the trunk. + * Pass -mimplicit-it=thumb to as by default on ARM, when configured + --with-mode=thumb. + * Fix boehm-gc build on ARM --with-mode=thumb. + * ARM: Don't copy uncopyable instructions in gcse.c (backport from trunk). + * Build the spu cross compiler for powerpc from the cell-4_4-branch. + * gcj: add option -fuse-atomic-builtins (backport from the trunk). + + [ Arthur Loiret ] + * Make svn update interdiffs more readable. + + -- Matthias Klose Thu, 10 Dec 2009 04:29:36 +0100 + +gcc-4.4 (4.4.2-3) unstable; urgency=low + + * Update to SVN 20091118 from the gcc-4_4-branch (r154294). + Fix PR PR c++/9381, PR c++/21008, PR c++/35067, PR c++/36912, PR c++/37037, + PR c++/37093, PR c++/38699, PR c++/39786, c++/36959, PR c++/41754, + PR c++/41876, PR c++/41967, PR c++/41972, PR c++/41994, PR c++/42059, + PR c++/42061, + PR fortran/41772, PR fortran/41850, PR fortran/41909, + PR middle-end/40946, PR middle-end/41317, R tree-optimization/41643, + PR target/41900, PR rtl-optimization/41917, PR middle-end/41963, + PR middle-end/42029. + * Snapshot builds: + - Patch updates. + - Configure with --disable-browser-plugin. + * Configure with --disable-libstdcxx-pch on hppa. + * Backport armel patches form the trunk: + - Fix PR objc/41848 - workaround ObjC and -fsection-anchors. + - Enable scheduling for Thumb-2, including the fix for PR target/42031. + - Fix PR target/41939, EABI violation in accessing values below the stack. + + -- Matthias Klose Wed, 18 Nov 2009 08:37:18 -0600 + +gcc-4.4 (4.4.2-2) unstable; urgency=low + + * Update to SVN 20091031 from the gcc-4_4-branch (r153603). + - Fix PR debug/40521, PR target/40913, PR middle-end/22072, + PR target/41665, PR c++/38798, PR c++/40092, PR c++/37875, + PR c++/37204, PR fortran/41755, PR libstdc++/40654, PR libstdc++/40826, + PR target/41702, PR c/41842, PR target/41762, PR c++/40808, + PR fortran/41777, PR libstdc++/40852. + * Snapshot builds: + - Configure with --enable-plugin, disable the gcjwebplugin by a patch. + Addresses: #551200. + - Proposed patch for PR lto/41652, compile lto-plugin with + -D_FILE_OFFSET_BITS=64 + - Allow disabling the ada build via DEB_BUILD_OPTIONS nolang=ada. + * Fixes for reverse cross builds. + * On sparc default to v9 in 32bit mode. + * Fix __stack_chk_fail check for cross builds configured --with-headers. + * Apply some fixes for uClibc cross builds (Jonas Meyer, Hector Oron). + + -- Matthias Klose Sat, 31 Oct 2009 14:16:03 +0100 + +gcc-4.4 (4.4.2-1) unstable; urgency=low + + * GCC 4.4.2 release. + - Fixes PR target/26515, PR target/41680, PR rtl-optimization/41646, + PR c++/39863, PR c++/41038. + * Fix setting timeout for testsuite runs. + * gcj-4.4/gcc-snapshot: Drop build-dependency on libgconf2-dev, disabled + by default. + * gcj-4.4: Run the libffi testsuite as well. + * Add explicit build dependency on zlib1g-dev. + * Fix cross builds, add support for gomp and gfortran (only tested for + non-biarch targets). + * (Build-)depend on binutils-2.20. + * Fix up omp.h for multilibs (taken from Fedora). + + -- Matthias Klose Sun, 18 Oct 2009 02:31:32 +0200 + +gcc-4.4 (4.4.1-6) unstable; urgency=low + + * Snapshot builds: + - Add build dependency on libelfg0-dev (>= 0.8.12). + - Add build dependency on binutils-gold where available. + - Suggest binutils-gold; not perfect, it is required when using + -use-linker-plugin. + - Work around installation failure in the lto-plugin (PR lto/41569). + - Install java home symlinks in /usr/lib/jvm. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + * PR debug/40521: + - Apply patch for PR debug/40521, taken from the trunk. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + - Depend on binutils (>= 2.19.91.20091005). + * Update to SVN 20091005 from the gcc-4_4-branch (r152450). + - Fixes PR fortran/41479. + * In the test summary, add more information about package versions + used for the build. + + -- Matthias Klose Wed, 07 Oct 2009 02:12:56 +0200 + +gcc-4.4 (4.4.1-5) unstable; urgency=medium + + * Update to SVN 20091003 from the gcc-4_4-branch (r152174). + - Fixes PR target/22093, PR c/39779, PR libffi/40242, PR target/40473, + PR debug/40521, PR c/41049, PR debug/41065, PR ada/41100, + PR tree-optimization/41101, PR libgfortran/41328, PR libffi/41443, + PR fortran/41515. + * Updates for snapshot builds: + - Fix build dependency on automake for snapshot builds. + - Update patches pr40134-snap and libjava-nobiarch-check-snap. + * Fix lintian errors in libstdc++ packages and lintian warnings in the + source package. + * Add debian/README.source. + * Don't apply PR libstdc++/39491 for the trunk anymore. + * Install java home symlinks for snapshot builds in /usr/lib/jvm, + including javac. Depend on ecj. Addresses #536102. + * Fix build failure on armel with -mfloat-abi=softfp. + * Don't pessimize the code for newer armv6 and armv7 processors. + * libjava: Use atomic builtins For Linux ARM/EABI, backported from the + trunk. + * Proposed patch to fix wrong-code on powerpc (Alan Modra). LP: #432222. + * Link against -ldl instead of -lcloog -lppl. Exit with an error when using + the Graphite loop transformation infrastructure without having the + libcloog-ppl0 package installed (patch taken from Fedora). Packages + using these optimizations should build-depend on libcloog-ppl0. + gcc-4.4: Suggest the cloog runtime libraries. + * Install a hook _Unwind_DebugHook, called during unwinding. Intended as + a hook for a debugger to intercept exceptions. CFA is the CFA of the + target frame. HANDLER is the PC to which control will be transferred + (patch taken from Fedora). + + -- Matthias Klose Sat, 03 Oct 2009 13:33:05 +0100 + +gcc-4.4 (4.4.1-4) unstable; urgency=low + + * Update to SVN 20090911 from the gcc-4_4-branch (r151649). + - Fixes PR target/34412, PR middle-end/41094, PR target/40718, + PR fortran/41062, PR libstdc++/41005, PR target/41184, + PR bootstrap/41180, PR c++/41127, PR fortran/41258, + PR rtl-optimization/40861, PR target/41315, PR fortran/39876. + + [ Matthias Klose ] + * Avoid underscores in doc-base document id's to workaround a + dh_installdocs bug. + * Update file names for the Ada user's guide. + * Set Homepage attribute for packages. + * Update the patch for gnat on armel. + * gcj-4.4-jdk: Depend on libantlr-java. Addresses: #546062. + * Backport patch for PR tree-optimization/41101 from the trunk. + Closes: #541816. + * Update libstdc++6.symbols for symbols introduced with the fix + for PR libstdc++/41005. + * Apply proposed patches for PR libstdc++/40133 and PR target/40134. + Add symbols exception propagation support in libstdc++ on armel + to the libstdc++6 symbols. + + [ Ludovic Brenta] + Merge from gnat-4.4 (4.4.1-3) unstable; urgency=low + * debian/rules.defs, debian/rules.d/binary-ada.mk, debian/rules.patch: + better support for architectures that support only one exception + handling mechanism (SJLJ or ZCX). + + -- Matthias Klose Sat, 12 Sep 2009 03:18:17 +0200 + +gcc-4.4 (4.4.1-3) unstable; urgency=low + + * Update to SVN 20090822 from the gcc-4_4-branch (r151011). + - Fixes PR tree-optimization/41016, PR tree-optimization/41011, + PR tree-optimization/41008, PR tree-optimization/40991, + PR tree-optimization/40964, PR target/8603 (closes: #161432), + PR target/41019, PR target/41015, PR target/40957, PR target/40934, + PR rtl-optimization/41033, PR middle-end/41047, PR middle-end/41006, + PR fortran/41070, PR fortran/40995, PR fortran/40847, PR debug/40990, + PR debug/37801, PR c/41046, PR c/40948, PR c/40866, PR bootstrap/41018, + PR middle-end/41123,PR target/40971, PR c++/41131, PR fortran/41102, + PR libfortran/40962. + + [ Arthur Loiret ] + * Only use -fno-stack-protector when known to the stage1 compiler. + + [ Aurelien Jarno ] + * lib32* packages: remove the Pre-Depends: libc6-i386 (>= 2.9-18) and + upgrade the Conflicts: libc6-i386 from (<< 2.9-18) to (<< 2.9-22). + Closes: #537466. + * kbsd-gnu-ada.dpatch: add support for kfreebsd-amd64. + + [ Matthias Klose ] + * Build gnat on armel, the gnat-4.4 build still failing, gcc-snapshot + builds good enough to build itself. + * Merge enough of the gnat-4.4 changes back to allow a combined build + from the gcc-4.4 source. + * Build libgnatprj for armel. + * On armel build just one version of the ada run-time library. + * Update auto* build dependencies for snapshot builds. + * Apply proposed patch for PR target/40718. + + -- Matthias Klose Sun, 23 Aug 2009 11:50:38 +0200 + +gcc-4.4 (4.4.1-2) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090808 from the gcc-4_4-branch (r150577). + - Fixes PR target/40832, PR rtl-optimization/40710, + PR tree-optimization/40321, PR build/40010, PR fortran/40727, + PR build/40010, PR rtl-optimization/40924, PR c/39902, + PR middle-end/40943, PR target/40577, PR c++/39987, PR debug/39706, + PR c++/40948, PR c++/40749, PR fortran/40851, PR fortran/40878, + PR target/40906. + * Bump GCC version required in dependencies to 4.4.1. + * Enable Ada for snapshot builds on all archs with a gnat package + available in the archive. + * Build-depend on binutils 2.19.51.20090805, needed at least for armel. + + [ Aurelien Jarno ] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + -- Matthias Klose Sat, 08 Aug 2009 10:17:39 +0200 + +gcc-4.4 (4.4.1-1) unstable; urgency=low + + * GCC 4.4.1 release. + - Fixes PR target/39943, PR tree-optimization/40792, PR c++/40780, + PR middle-end/40747, PR libstdc++/40691, PR libfortran/40714, + PR tree-optimization/40813 (ICE in OpenJDK build on sparc). + * Apply proposed patch for PR target/39429, an ARM wrong-code error. + * Fix a typo in the arm back-end (proposed patch). + * Build-depend on libmpc-dev for snapshot builds. + * Fix build failure in cross builds (Hector Oron). Closes: #522597. + * Run the testsuite as part of the build target, not the install target. + + -- Matthias Klose Wed, 22 Jul 2009 13:24:39 +0200 + +gcc-4.4 (4.4.0-11) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20090715 from the gcc-4_4-branch (r149690). + - Corresponds to the 4.4.1 release candidate. + - Fixes PR target/38900, PR debug/40666, PR middle-end/40669, + PR middle-end/40328, PR target/40587, PR middle-end/40585, + PR c++/40566, PR tree-optimization/40542, PR c/39902, + PR tree-optimization/40579, PR tree-optimization/40550, PR c++/40684, + PR c++/35828, PR c++/37816, PR c++/40639, PR c++/40633, PR c++/40619, + PR c++/40595, PR fortran/40440, PR fortran/40551, PR fortran/40638, + PR fortran/40443, PR libstdc++/40600, PR rtl-optimization/40667, PR c++/40740, + PR c++/36628, PR c++/37206, PR c++/40689, PR c++/40502, PR middle-end/40747. + * Backport of PR c/25509, new option -Wno-unused-result. LP: #305176. + * gcc-4.4: Depend on libgomp1, even if not building the libgomp1 package. + * Add proposed patches for PR libstdc++/40133, PR target/40134; don't apply + yet. + + [Emilio Pozuelo Monfort] + * Backport build-id support, configure with --enable-linker-build-id. + + -- Matthias Klose Tue, 14 Jul 2009 16:09:33 -0400 + +gcc-4.4 (4.4.0-10) unstable; urgency=low + + [ Arthur Loiret ] + * debian/rules.patch: Record the auto* calls to run them once only. + + [ Matthias Klose ] + * Update to SVN 20090627 from the gcc-4_4-branch (r149023). + - Fixes PR other/40024. + * Fix typo, adding blacklisted symbols to the libgcc1 symbols file on armel. + * On mips/mipsel use -O2 in STAGE1_CFLAGS until binutils is updated. + + -- Matthias Klose Sun, 28 Jun 2009 10:13:08 +0200 + +gcc-4.4 (4.4.0-9) unstable; urgency=high + + * Update to SVN 20090624 from the gcc-4_4-branch (r148821). + - Fix PR objc/28050 (LP: #362217), PR libstdc++/40297, PR c++/40342. + * Continue the well planned lib32 transition on amd64, adding pre-dependencies + on libc6-i386 (>= 2.9-18) on Debian. Closes: #533767. + * Enable SSP on arm and armel, run the testsuite with -fstack-protector. + LP: #375189. + * Fix spu fortran build in gcc-snapshot builds. + * Add missing symbols for 64bit libgfortran library. + * Update libstdc++ symbol files for sparc 64bit, adding symbols + for exception propagation support. + * Explicitely add __aeabi symbols to the libgcc1 symbols file on armel. + Closes: #533843. + + -- Matthias Klose Wed, 24 Jun 2009 23:46:02 +0200 + +gcc-4.4 (4.4.0-8) unstable; urgency=medium + + * Let all 32bit libs conflict with libc6-i386 (<< 2.9-17). Closes: #533767. + * Update to SVN 20090620 from the gcc-4_4-branch (r148747). + - Fixes PR fortran/39800, PR fortran/40402. + * Work around tar bug on kfreebsd unpacking java class file updates (#533356). + + -- Matthias Klose Sat, 20 Jun 2009 15:15:22 +0200 + +gcc-4.4 (4.4.0-7) unstable; urgency=medium + + * Update to SVN 20090618 from the gcc-4_4-branch (r148685). + - Fixes PR middle-end/40446, PR middle-end/40389, PR middle-end/40460, + PR fortran/40168, PR target/40470. + * On amd64, install 32bit libraries into /lib32 and /usr/lib32. + * lib32gcc1, lib32gomp1, lib32stdc++6: Conflict with libc6-i386 (= 2.9-15), + libc6-i386 (= 2.9-16). + * Handle serialver alternative in -jdk install scripts, not in -jre-headless. + + -- Matthias Klose Fri, 19 Jun 2009 01:36:00 +0200 + +gcc-4.4 (4.4.0-6) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090612 from the gcc-4_4-branch (r148433). + - Fixes PR c++/38064, PR c++/40139, PR target/40017, PR target/40266, + PR bootstrap/40027, PR tree-optimization/40087, PR target/39856, + PR rtl-optimization/40105, PR target/39942, PR middle-end/40204, + PR debug/40109, PR tree-optimization/39999, PR libfortran/37754, + PR fortran/22423, PR libfortran/39667, PR libfortran/39782, + PR libfortran/38668, PR libfortran/39665, PR libfortran/39702, + PR libfortran/39709, PR libfortran/39665i, PR libgfortran/39664, + PR fortran/38654, PR libfortran/37754, PR libfortran/37754, + PR libfortran/25561, PR libfortran/37754, PR middle-end/40291, + PR target/40017, PR middle-end/40340, PR c++/40308, PR c++/40311, + PR c++/40306, PR c++/40307, PR c++/40370, PR c++/40372, PR c++/40373, + PR c++/40381, PR fortran/40019, PR fortran/39893. + * gcj-4.4-jdk: Depend on libecj-java-gcj instead of libecj-java. + * Let gjdoc --version use the Configuration class instead of + version.properties (Alexander Sack). LP: #385682. + * Preserve libgcc_s.so linker scripts. Closes: #532263. + + [Ludovic Brenta] + * debian/patches/ppc64-ada.dpatch, + debian/patches/ada-mips.dpatch, + debian/patches/ada-mipsel.dpatch: remove, merged upstream. + * debian/patches/*ada*.dpatch: + - rename to *.diff; + - remove the dpatch prologue shell script + - refresh with quilt -p ab and without time stamps + - adjust to GCC 4.4 + * debian/patches/ada-library-project-files-soname.diff, + debian/patches/ada-polyorb-dsa.diff, + debian/patches/pr39856.diff: new. + * debian/rules.patch: adjust accordingly. + * debian/rules.defs: re-enable Ada. + * debian/rules2: do a lean bootstrap when building Ada. + * debian/rules.d/binary-ada.mk: do not build gnatbl or gprmake anymore, + removed upstream. + + -- Matthias Klose Fri, 12 Jun 2009 18:34:13 +0200 + +gcc-4.4 (4.4.0-5) unstable; urgency=medium + + * Update to SVN 20090517 from the gcc-4_4-branch (r147630). + - Fixes PR tree-optimization/40062, PR middle-end/39986, + PR middle-end/40057, PR fortran/39879, PR libstdc++/40038, + PR middle-end/40035, PR target/37179, PR middle-end/39666, + PR tree-optimization/40074, PR fortran/40018, PR fortran/38863, + PR middle-end/40147, PR fortran/40018, PR target/40153. + + [ Matthias Klose ] + * Update libstdc++ symbols files. + * Update libgcc, libobjc, libstdc++ symbols files for armel. + * Fix version symlink in gcc_lib_dir. Closes: #527837. + * Fix symlinks for javac and header files in /usr/lib/jvm. + Closes: #528084. + * Don't build the stage1 compiler with -O with recent binutils (trunk). + * Revert doing link tests to check for the atomic builtins, disabling + exception propagation support in libstdc++ on armel. See PR40133, PR40134. + * On mips/mipsel don't run the java testsuite with -mabi=64. + * Default to armv4 for the gcc-snapshot package as well. Closes: #523936. + * Mention GCC trunk in the gcc-snapshot package description. Closes: #526309. + * Remove unneed '..' elements from symlinks in JAVA_HOME. + * Fix some lintian warnings for gcc-snapshot. + + [ Arthur Loiret ] + * Add missing dir separator to multiarch path. Closes: #527537. + + -- Matthias Klose Sun, 17 May 2009 11:15:52 +0200 + +gcc-4.4 (4.4.0-4) unstable; urgency=medium + + * Update to SVN 20090506 from the gcc-4_4-branch (r147161). + - Fixes PR rtl-optimization/39914, PR testsuite/39776, + PR tree-optimization/40022, PR libstdc++/39909. + + [ Matthias Klose ] + * gcc-4.4-source: Don't depend on gcc-4.4-base, depend on quilt + and patchutils. + * On armel, link the shared libstdc++ with both -lgcc_s and -lgcc. + * Update libgcc and libstdc++ symbol files for mips and mipsel. + * Update libstdc++ symbol files for armel and hppa, adding symbols + for exception propagation support. + * Add ARM EABI symbols to libstdc++ symbol files for armel. + * Add libobjc symbols file for armel. + * Fix PR libstdc++/40038, missing ceill/tanhl symbols in libstdc++. + + [ Aurelien Jarno ] + * Fix libc name for biarch packages on kfreebsd-amd64. + + -- Matthias Klose Wed, 06 May 2009 15:10:36 +0200 + +gcc-4.4 (4.4.0-3) unstable; urgency=low + + * libstdc++-doc: Install the man pages again. + * Fix build configuration for the GC enabled ObjC runtime library. + * Fix thinko in autotools_files, resulting in autoconf not run in + some cases. + * Do link tests to check for the atomic builtins, enables exception + propagation support in libstdc++ on armel and hppa. + + -- Matthias Klose Sun, 03 May 2009 23:38:56 +0200 + +gcc-4.4 (4.4.0-2) unstable; urgency=low + + [ Samuel Thibault ] + * Enable java build on the hurd. + + [ Matthias Klose ] + * libobjc2.symbols.armel: Remove, use the default one. + * Address PR libstdc++/39491, removing __signbitl from the libstdc++6 + symbols file on hppa. + * libstdc++6.symbols.armel: Fix error introduced with copy from the + arm symbols file. + * libstdc++6.symbols.*: Don't assume exception propagation support + enabled for all architectures (although it should on armel, hppa, + sparc). + * Disable the build of the ObjC garbage collection library on mips*, + working around a build failure. + + -- Matthias Klose Sat, 02 May 2009 14:22:35 +0200 + +gcc-4.4 (4.4.0-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090429 from the gcc-4_4-branch (r146989). + * Configure java enabled builds with --enable-java-home. + * Integrate the bits previously found in java-gcj-compat. + * Rename the packages using the naming schema used for OpenJDK: + gcj-X.Y-{jre-headless,jre,jre-lib,jdk,source}. The packages + {gij,gcj,gappletviewer}-X.Y and libgcjN-{jar,source} are gone. + * Build the libgcj documentation with the just built gjdoc. + * Don't use profiled bootstrap when building the gcj source. + * Apply proposed patch for PR target/39856. + * Fix some lintian warnings. + * Don't include debug symbols for libstdc++.so.6, if the library is + built by a newer GCC version. + * Adjust hrefs to point to the local libstdc++ documentation. LP: #365414. + * Update libgcc, libgfortran, libobjc, libstdc++ symbol files. + * gcc-4.4: Include libssp_nonshared.a. + * For ix86, set the java architecture directory to i386. + + [ Samuel Thibault ] + * Update Hurd changes. + * Configure with --enable-clocale=gnu on hurd-i386. + * debian/patches/hurd-pthread.diff: Reapply. + + -- Matthias Klose Thu, 30 Apr 2009 00:30:20 +0200 + +gcc-4.4 (4.4.0-1~exp2) experimental; urgency=low + + * Update to SVN 20090423 from the gcc-4_4-branch. + + [ Aurelien Jarno ] + * kbsd-gnu.diff: remove parts merged upstream. + + [ Matthias Klose ] + * Remove conflicts/replaces for *-spu packages. + * Configure the spu cross compiler without --with-sysroot and + --enable-multiarch. + * Fix and reenable the gfortran-spu build. + * Work around build failures with missing libstdc++ baseline files. + * Install gjdoc man page. + * Fix java configuration with --enable-java-home and include symlinks + for JAVA_HOME in /usr/lib/jvm. + * Apply proposed fix for PR middle-end/39794. + * Install libstdc++ man pages with suffix .3cxx instead of .3. + Closes: #525244. + * lib*stdc++6-{dbg,doc}: Add conflicts to the corresponding 4.3 packages. + + -- Matthias Klose Thu, 23 Apr 2009 18:11:49 +0200 + +gcc-4.4 (4.4.0-1~exp1) experimental; urgency=low + + * Final GCC 4.4.0 release. + + * Don't build the Fortran SPU cross compiler, currently broken. + * spu cross build: Build without spucache and spumea64. + * Configure --with-arch-32=i486 on amd64, i386, and kfreebsd-{amd64,i386}, + --with-arch-32=i586 on hurd-i386, --with-cpu=atom on lpia. + * Build using profiled bootstrap. + * Remove the gcc-4.4-base.postinst. Addresses: #524708. + * Update debian/copyright: Include runtime library exception, remove + D and Phobas license. + * Apply proposed patch for PR libstdc++/39491, missing symbol in libstdc++ + on hppa. + * Remove unsused soft-fp functions in the 64bit libgcc on powerpc (PR39828). + * Update NEWS files for 4.4. + * Build again libgfortran for the non-default multilib configuration. + * Restore missing chunks in note-gnu-stack.diff, lost during the conversion + to quilt. + + -- Matthias Klose Wed, 22 Apr 2009 00:53:16 +0200 + +gcc-4.4 (4.4-20090418-1) experimental; urgency=low + + * Update to SVN 20090418 from the gcc-4_4-branch. + + [ Arthur Loiret ] + * Update patches: + - boehm-gc-nocheck, cross-include, libjava-rpath, link-libs: + Rebase on trunk. + - gcc-m68k-pch, libjava-debuginfo, libjava-loading-constraints: + Remove, merged in trunk. + - cell-branch, cell-branch-doc: Remove, there is no upstream cell 4.4 + branch yet. + - gdc-fix-build-kbsd-gnu, svn-gdc-updates, gpc-4.1, gpc-gcc-4.x, + gpc-names: Remove, gpc and gdc are not ported to GCC 4.4 yet. + - svn-class-updates, svn-doc-updates, svn-updates: Make empty. + - Refresh all others, and convert them all to quilt. + + * Build system improvements: + - Partial rewrite/refactor of rules files. + - Switch patch system to quilt. + - Autogenerate debian/copyright. + - Use the autoconf2.59 package. + + * multilib/multiarch support improvements: Closes: #369064, #484589. + - mips-triarch.diff: Replace with a newer version (approved upstream). + - s390-biarch.diff: Ditto. + - debian/rules2: Configure with --enable-targets=all on mips-linux, + mipsel-linux and s390-linux. + - gcc-multiarch.diff: New, add multiarch include directories and + libraries path to the system paths. + - debian/rules2: Configure with --enable-multiarch. Configure spu build + with --with-multiarch-defaults=spu-elf. + - multiarch-include.diff: Remove. + - debian/multiarch.inc: Ditto. + + * cross-compilers changes: + - Never build a separated -base package, don't symlink any doc dir. + - Build gobjc again. + + * Run the 64-bit tests with -mabi=64 instead of -m64 on mips/mipsel to + hopefully fix the massive failure. + * Always set $(distribution) to "Debian" on mips/mipsel, workarounds FTBFS + on those archs due to a kernel bug triggered by lsb_release call. + Adresses: #524416. + * debian/rules.patch: Only apply the ada-nobiarch-check patch when ada is + enabled. Remove gpc and gdc patches. + * debian/rules.unpack (install_autotools_stamp): Remove. + * debian/rules.defs (configure_dependencies): Remove autotools dependency. + * debian/rules.conf: Add a copyright-file target. + * debian/control.m4: Build-Depends on autoconf2.59 and patchutils. + Make gcc-4.4-source Depends on autoconf2.59. + Add myself to Uploaders. + * debian/rules.d/binary-source.mk: Don't build and install an embedded + copy or autoconf2.59 in gcc-4.4-source. + * debian/copyright.in: New. + + [ Matthias Klose ] + * Build gcj on hppa. + * Add support to build vfp optimized runtime libraries on armel. + * gcc-4.4-spu: Depend on newlib-spu. + * Fix sections of -dbg and java packages. + * gcc-default-ssp.dpatch: Set the default as well, when calling the + preprocessor. LP: #346126. + * Build-depend on quilt. + * Keep the copyright file in the archive. + * Remove conflict of the gcc-X.Y-source packages. + * Update removal of gfdl doc files for 4.4. + * Don't re-run the autotools (introduced with the switch to quilt). + * On arm and armel, install the arm_neon.h header. LP: #360819. + * When hardening options are turned on by default, patch the testsuite + to handle the hardening defaults (Kees Cook). + * Only run the patch target once. Avoids multiple autotool runs, but + doesn't reflect changes in the series file anymore. + * libgcj-doc: Fix documentation title. + * Fix gcj source build with recent build changes. + * Don't check for libraries in DEB_BUILD_OPTIONS/nolang. + * gappletviewer: Include missing binary. + + [ Aurelien Jarno ] + * Remove: patches/kbsd-gnu-ada.dpatch (merged upstream). + * kbsd-gnu.diff: add fix for stuff broken by upstream. + + -- Matthias Klose Mon, 20 Apr 2009 01:34:26 +0200 + +gcc-4.4 (4.4-20090317-1) experimental; urgency=low + + * Initial upload of GCC-4.4, based on trunk 20090317 (r144904). + + [Matthias Klose] + * Branch from the gcc-4.3 packaging. + * Remove *-trunk patches, update remaining patches for the trunk. + * Remove patches integrated upstream: libobjc-gc-link, libjava-file-support, + libjava-realloc-leak, libjava-armel-ldflags, libstdc++-symbols-hppa, + gcc-m68k-pch, libjava-extra-cflags, libjava-javah-bridge-tgts, + hppa-atomic-builtins, armel-atomic-builtins, libssp-gnu, libobjc-armel, + gfortran-armel-updates, sparc-biarch, libjava-xulrunner-1.9. + * Update patches for 4.4, mostly using the patches converted for quilt by + Arthur Loiret. + * debian/patches/libjava-soname.dpatch: Remove, unmodifed upstream library. + * debian/patches/gcc-driver-extra-langs.dpatch: Search Ada files in subdir. + * debian/rules.unpack, debian/rules.d/binary-source.mk: Update for included + autoconf tarball. + * debian/rules.d/binary-{gcc,java}.mk: Install new header files. + * debian/libgfortran3.symbols.common: Remove symbol not generated by + gfortran (__iso_c_binding_c_f_procpointer@GFORTRAN_1.0), PR38871. + * debian/rules.conf: Update for 4.4. + * Fix build dependencies and configure options for 4.4, which were applied + for snapshot builds only. + + [Arthur Loiret] + * Update patches from debian/patches: + - Remove backported fixes: + PR ada: pr10768.dpatch, pr15808.dpatch, pr15915.dpatch, pr16086.dpatch, + pr16087.dpatch, pr16098.dpatch, pr17985.dpatch, pr18680.dpatch, + pr22255.dpatch, pr22387.dpatch, pr28305.dpatch, pr28733.dpatch, + pr29015.dpatch, pr30740.dpatch, pr30827.dpatch pr33688.dpatch, + pr34466.dpatch, pr35050.dpatch, pr35792.dpatch. + PR target: pr27880.dpatch, pr28102.dpatch, pr30961.dpatch, + pr35965.dpatch, pr37661.dpatch. + PR libgcj: pr24170.dpatch, pr35020.dpatch. + PR gcov-profile: pr38292.dpatch. + PR other: pr28322.dpatch. + * debian/rules.patch: Update. + * debian/symbols/libgomp1.symbols.common: Add new symbols from OpenMP 3.0. + + -- Matthias Klose Tue, 17 Mar 2009 02:28:01 +0100 + +gcc-4.3 (4.3.3-5) unstable; urgency=low + + Merge from gnat-4.3 (4.3.3-1): + + [Petr Salinger] + * debian/patches/ada-libgnatprj.dpatch: enable support for GNU/kFreeBSD. + Fixes: #512277. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: attempt to fix ACATS tests (not entirely + successful yet). + * New upstream version. Fixes: #514565. + + [Matthias Klose] + * Update to SVN 20090301 from the gcc-4_3-branch. + - Fix PR c/35446, PR c++/38950, PR fortran/38852, PR fortran/39006, + PR c++/39225 (closes: #516727), PR c++/38950, PR target/38056, + PR target/39228, PR middle-end/36578, PR inline-asm/39058, + PR middle-end/37861. + * Don't provide the 4.3.2 symlink in gcc_lib_dir anymore. + * Require binutils-2.19.1. + + -- Matthias Klose Sun, 01 Mar 2009 14:18:09 +0100 + +gcc-4.3 (4.3.3-4) unstable; urgency=low + + * Fix Fix PR gcov-profile/38292 (wrong profile information), taken + from the trunk. + * Update to SVN 20090215 from the gcc-4_3-branch. + Fix PR c/35435, PR tree-optimization/39100, PR rtl-optimization/39076, + PR c/35433, PR tree-optimization/39041, PR target/38988, + PR middle-end/38969, PR c++/36897, PR c++/39054, PR c/39035, PR c/35434, + PR c/36432, PR target/38991, PR c/39084, PR target/39118. + * Reapply the fix for PR middle-end/38615. + * Include autoconf-2.59 sources into the source package, and install as + part of the gcc-4.3-source package. + * Explicitely use autoconf-1.9. + * Disable building the gcjwebplugin. + * Don't configure with --enable-cld on amd64 and i386. + + -- Matthias Klose Sun, 15 Feb 2009 23:40:09 +0100 + +gcc-4.3 (4.3.3-3) unstable; urgency=medium + + * Revert fix for PR middle-end/38615. Closes: #513420. + + -- Matthias Klose Thu, 29 Jan 2009 07:05:15 +0100 + +gcc-4.3 (4.3.3-2) unstable; urgency=low + + * Update to SVN 20090127 from the gcc-4_3-branch. + - Fix PR tree-optimization/38359. Closes: #492505. + - Fix PR tree-optimization/38932 (ice-on-valid-code), PR target/38931 + (ice-on-valid-code), PR rtl-optimization/38879 (wrong-code), + PR c++/23287 (rejects-valid), PR fortran/38907 (ice-on-valid-code), + PR fortran/38859 (wrong-code), PR fortran/38657 (rejects-valid), + PR fortran/38672 (ice-on-valid-code). + * Fix PR middle-end/38969, taken from the trunk. Closes: #513007. + + -- Matthias Klose Tue, 27 Jan 2009 23:42:45 +0100 + +gcc-4.3 (4.3.3-1) unstable; urgency=low + + * GCC-4.3.3 release (no changes compared to the 4.3.2-4 upload). + * Fix PR middle-end/38615 (wrong code, taken from the trunk). + + -- Matthias Klose Sat, 24 Jan 2009 14:43:09 +0100 + +gcc-4.3 (4.3.2-4) unstable; urgency=medium + + * Update to SVN 20090119 from the gcc-4_3-branch. + - Fix PR tree-optimization/36765 (wrong code). + * Remove patch for PR 34571, applied upstream (fix build failure on alpha). + * Apply proposed patch for PR middle-end/38902 (wrong code). + + -- Matthias Klose Tue, 20 Jan 2009 00:22:41 +0100 + +gcc-4.3 (4.3.2-3) unstable; urgency=low + + * Update to SVN 20090117 from the gcc-4_3-branch (4.3.3 release candidate). + - Fix PR target/34571, PR debug/7055, PR tree-optimization/37194, + PR tree-optimization/38529, PR fortran/38763, PR fortran/38765, + PR fortran/38669, PR fortran/38487, PR fortran/35681, PR fortran/38657, + PR c++/36019, PR c++/31488, PR c++/37646, PR c++/36334, PR c++/38357, + PR c++/31260, PR c++/38877, PR libstdc++/36801, PR libgcj/38396. + - debian/patches/libgcj-bc.dpatch: Remove, applied upstream. + * Fix PR middle-end/38616 (wrong code with -fstack-protector). + * Update backport for PR28322 (Gunther Nikl). + + -- Matthias Klose Sat, 17 Jan 2009 21:09:35 +0100 + +gcc-4.3 (4.3.2-2) unstable; urgency=low + + * Update to SVN 20090110 from the gcc-4_3-branch. + - Fix PR target/36654, PR tree-optimization/38752, PR fortran/38675, + PR fortran/37469, PR libstdc++/38000. + + -- Matthias Klose Sat, 10 Jan 2009 18:32:34 +0100 + +gcc-4.3 (4.3.2-2~exp5) experimental; urgency=low + + * Adjust build-dependencies for cross builds. Closes: #499998. + * Update to SVN 20081231 from the gcc-4_3-branch. + - Fix PR middle-end/38565, PR target/38062, PR bootstrap/38383, + PR target/38402, PR testsuite/35677, PR tree-optimization/38478, + PR target/38054, PR middle-end/29056, PR testsuite/28870, + PR target/38254. + - Fix PR libstdc++/37144, PR c++/37582, PR libstdc++/38080. + - Fix PR fortran/38602, PR fortran/38602, PR fortran/38487, + PR fortran/38113, PR fortran/35983, PR fortran/35937, PR testsuite/36889. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081217. + * debian/patches/libobjc-armel.dpatch: Don't define EH_USES. + * Apply the Atomic builtins patch for PARISC. + + -- Matthias Klose Thu, 18 Dec 2008 00:34:46 +0100 + +gcc-4.3 (4.3.2-2~exp4) experimental; urgency=low + + * Update to SVN 20081130 from the gcc-4_3-branch. + - Fix PR bootstrap/33304, PR middle-end/37807, PR middle-end/37809, + PR rtl-optimization/37489, PR target/35574, PR c/37924, + PR tree-optimization/37879, PR middle-end/37858, PR middle-end/37870, + PR target/38016, PR target/37939, PR rtl-optimization/37769, + PR target/37909, PR fortran/37597, PR fortran/35820, PR fortran/37445, + PR fortran/PR35769, PR fortran/37903, PR fortran/37749. + - Fix PR target/37640, PR tree-optimization/37868, PR bootstrap/33100, + PR other/38214, PR c++/37142, PR c++/35405, PR c++/37563, PR c++/38030, + PR c++/37932, PR c++/38007. + - Fix PR fortran/37836, PR fortran/38171, PR fortran/35681, + PR fortran/37792, PR fortran/37926, PR fortran/38033, PR fortran/36526. + - Fix PR target/38287. Closes: #506713. + * Atomic builtins using kernel helpers for PARISC and ARM Linux/EABI, taken + from the trunk. + + -- Matthias Klose Mon, 01 Dec 2008 01:29:51 +0100 + +gcc-4.3 (4.3.2-2~exp3) experimental; urgency=low + + * Update to SVN 20081117 from the gcc-4_3-branch. + * Add build dependencies on spu packages for snapshot builds. + * Add build dependency on libantlr-java for snapshot builds. + * Disable fortran on spu for snapshot builds. + * Add dependency on binutils-{hppa64,spu} for snapshot builds. + + -- Matthias Klose Mon, 17 Nov 2008 21:57:51 +0100 + +gcc-4.3 (4.3.2-2~exp2) experimental; urgency=low + + * Update to SVN 20081023 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37882 (wrong code), + - Fortran regression fixes: PR fortran/37787, PR fortran/37723. + * Use gij-4.3 for builds in java maintainer mode. + * Don't run the testsuite with -fstack-protector for snapshot builds. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081023. + Don't disable multilibs, install additional components in the gcc-4.3-spu + package. + * Enable building the spu cross compiler for powerpc and ppc64 snapshot + builds. + * Apply proposed patch for PR tree-optimization/37868 (wrong code). + * Apply proposed patch to parallelize make check. + * For biarch builds, disable the gnat testsuite for the non-default + architecture (no biarch support in gnat yet). + + -- Matthias Klose Thu, 23 Oct 2008 22:06:38 +0200 + +gcc-4.3 (4.3.2-2~exp1) experimental; urgency=low + + * Update to SVN 20081017 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37408 (wrong code), + PR tree-optimization/36630, PR tree-optimization/37102 (wrong code), + PR c/35437 (ice on invalid code), PR middle-end/37731 (wrong code), + PR target/37603 (wrong code, hppa), PR tree-optimization/35737 (ice on + valid code), PR middle-end/36575 (wrong code), PR c/37645 (ice on valid + code), PR tree-optimization/37539 (compile time hog), PR middle-end/37236 + (ice on invalid code), PR tree-optimization/36343 (wrong code), + PR rtl-optimization/37544 (wrong code), PR target/35620 (ice on valid + code), PR target/35713 (ice on valid code, wrong code), PR c/35712 (wrong + code), PR target/37466 (wrong code, AVR). + - C++ regression fixes: PR c++/37389 (LP: #252301), PR c++/37555 (ice on + invalid code). + - Fortran regression fixes: PR fortran/37199, PR fortran/36214, + PR fortran/35770, PR fortran/36454, PR fortran/36374, PR fortran/37274, + PR fortran/37583, PR fortran/36700, PR fortran/35945, PR fortran/37626, + PR fortran/37504, PR fortran/37580, PR fortran/37706, PR fortran/35680, + PR fortran/37794. + * Remove obsolete patches: ada-driver.dpatch, pr33148.dpatch. + * Fix naming of bridge targets in gjavah (wrong header generation). + * Fix PR target/37661, SPARC64 int-to-TFmode conversions. + * Include the complete test summaries in a binary package, to allow + regression checking from the previous build. + * Tighten inter-package dependencies to (>= 4.3.2-1). + * Drop the 4.3.1 symlink in gcc_lib_dir, add a 4.3.3 symlink to 4.3. + + -- Matthias Klose Fri, 17 Oct 2008 23:26:50 +0200 + +gcc-4.3 (4.3.2-1) unstable; urgency=medium + + [Matthias Klose] + * Final gcc-4.3.2 release (regression fixes). + - Remove the generated install docs from the tarball (GFDL licensed). + - C++ regression fixes: PR debug/37156. + - general regression fixes: PR debug/37156, PR target/37101. + - Java regression fixes: PR libgcj/8995. + * Update to SVN 20080905 from the gcc-4_3-branch. + - C++ regression fixes: PR c++/36741 (wrong diagnostic), + - general regression fixes: PR target/37184 (ice on valid code), + PR target/37191 (ice on valid code), PR target/37197 (ice on valid code), + PR middle-end/36817 (ice on valid code), PR middle-end/36548 (wrong code), + PR middle-end/37125 (wrong code), PR c/37261 (wrong diagnostic), + PR target/37168 (ice on valid code), PR middle-end/36449 (wrong code), + PR middle-end/37248 (missed optimization), PR target/36332 (wrong code). + - Fortran regression fixes: PR fortran/37193 (rejects valid code). + * Move symlinks in gcc_lib_dir from cpp-4.3 to gcc-4.3-base. Closes: #497369. + * Don't build-depend on autogen on architectures where it is not installable + (needed for the fixincludes testsuite only); don't build-depend on it for + source packages not running the fixincludes testsuite. + + [Ludovic Brenta] + * Add sdefault.ads to libgnatprj4.3-dev. Fixes: #492866. + * turn gnatvsn.gpr and gnatprj.gpr into proper library project files. + * Unconditionally build-depend on gnat when building gnat-4.3. + Fixes: #487564. + * (debian/rules.d/binary-ada.mk): Add a symlink libgnat.so to + /usr/lib/libgnat-4.3.so in the adalib directory. Fixes: #493814. + * (debian/patches/ada-sjlj.dpatch): remove dangling symlinks from all + adalib directories. + * debian/patches/ada-alpha.dpatch: remove, applied upstream. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16086.dpatch: new; backport from GCC 4.4. + Closes: #248172. + * debian/patches/pr35792.dpatch: new; backport from GCC 4.4. + * debian/patches/pr15808.dpatch (fixes: #246392), + debian/patches/pr30827.dpatch: new; backport from the trunk. + + -- Matthias Klose Fri, 05 Sep 2008 22:52:58 +0200 + +gcc-4.3 (4.3.1-9) unstable; urgency=low + + * Update to SVN 20080814 from the gcc-4_3-branch. + - C++/libstdc++ regression fixes: PR c++/36688, PR c++/37016, PR c++/36999, + PR c++/36405, PR c++/36767, PR c++/36852. + - general regression fixes: PR target/36613, PR rtl-optimization/36998, + PR middle-end/37042, PR middle-end/35432, PR target/35659, + PR middle-end/37026, PR middle-end/36691, PR tree-optimization/36991, + PR rtl-optimization/35542, PR bootstrap/35752, PR rtl-optimization/36419, + PR debug/36278, PR preprocessor/36649, PR rtl-optimization/36929, + PR tree-optimization/36830, PR c/35746, PR middle-end/37014, + PR middle-end/37103. + - Fortran regression fixes: PR fortran/36132. + - Java regression fixes: PR libgcj/31890. + - Fixes PR middle-end/37090. Closes: #494815. + + -- Matthias Klose Thu, 14 Aug 2008 18:02:52 +0000 + +gcc-4.3 (4.3.1-8) unstable; urgency=low + + * Undo Revert PR tree-optimization/36262 on i386 (PR 36917 is invalid). + + -- Matthias Klose Fri, 25 Jul 2008 21:47:52 +0200 + +gcc-4.3 (4.3.1-7) unstable; urgency=low + + * Update to SVN 20080722 from the gcc-4_3-branch. + - Fix PR middle-end/36811, infinite loop building with -O3. + - C++/libstdc++ regression fixes: PR c++/36407, PR c++/34963, + PR libstdc++/36832, PR libstdc++/36552, PR libstdc++/36729. + - Fortran regression fixes: PR fortran/36366, PR fortran/36824. + - general regression fixes: PR middle-end/36877, PR target/36780, + PR target/36827, PR rtl-optimization/35281, PR rtl-optimization/36753, + PR target/36827, PR target/36784, PR target/36782, PR middle-end/36369, + PR target/36780, PR target/35492, PR middle-end/36811, + PR rtl-optimization/36419, PR target/35802, PR target/36736, + PR target/34780. + * Revert PR tree-optimization/36262 on i386, causing miscompilation of + OpenJDK hotspot. + * gij/gcj: Don't remove alternatives on upgrade. Addresses: #479950. + + -- Matthias Klose Tue, 22 Jul 2008 23:55:54 +0200 + +gcc-4.3 (4.3.1-6) unstable; urgency=low + + * Start the logwatch script on alpha as well to avoid timeouts in + the testsuite. + + -- Matthias Klose Mon, 07 Jul 2008 11:31:58 +0200 + +gcc-4.3 (4.3.1-5) unstable; urgency=low + + * Update to SVN 20080705 from the gcc-4_3-branch. + - Fix PR target/36634, wrong-code on powerpc with -msecure-plt. + * Fix PR target/35965, PIC + -fstack-protector on arm/armel. Closes: #469517. + * Don't run the libjava testsuite with -mabi=n32. + * Update patch for PR other/28322, that unknown -Wno-* options do not + cause errors, but warnings instead. + * On m68k, add -fgnu89-inline when in gnu99 mode (requested by Michael + Casadeval for the m68k port). Closes: #489234. + + -- Matthias Klose Sun, 06 Jul 2008 01:39:30 +0200 + +gcc-4.3 (4.3.1-4) unstable; urgency=low + + * Revert: debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * Remove obsolete multiarch-lib patch. + + -- Matthias Klose Mon, 30 Jun 2008 23:05:17 +0200 + +gcc-4.3 (4.3.1-3) unstable; urgency=medium + + [Arthur Loiret] + * debian/rules2: + - configure sh4-linux with --with-multilib-list=m4,m4-nofpu + and --with-cpu=sh4. + - configure sparc-linux with --enable-targets=all on snapshot builds + (change already in 4.3.1-1). + * debian/rules.patch: Don't apply sh4-multilib.dpatch. + + [Matthias Klose] + * Update to SVN 20080628 from the gcc-4_3-branch. + - Fix PR target/36533, wrong-code with incorrectly assumed aligned_operand. + Closes: #487115. + * debian/rules.defs: Remove hurd-i386 from ssp_no_archs (Samuel Thibault). + Closes: #483613. + * Do not create a /usr/lib/gcc//4.3.0 symlink. + * debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * libjava/classpath: Set and use EXTRA_CFLAGS (taken from the trunk). + + -- Matthias Klose Sat, 28 Jun 2008 16:00:38 +0200 + +gcc-4.3 (4.3.1-2) unstable; urgency=low + + * Update to SVN 20080610 from the gcc-4_3-branch. + - config.gcc: Fix quoting for in the enable_cld test. + * Use GNU locales on hurd-i386 (Samuel Thibault). Closes: #485395. + * libstdc++-doc: Fix URL's for locally installed docs. Closes: #485133. + * libjava: On armel apply kludge to fix unwinder infinitely looping 'til + it runs out of memory. + * Adjust dependencies to require GCC 4.3.1. + + -- Matthias Klose Wed, 11 Jun 2008 00:35:38 +0200 + +gcc-4.3 (4.3.1-1) unstable; urgency=high + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16087.dpatch: new. Fixes: #248173. + * Correct the patches from the previous upload. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: really run the just-built gnat, not the + bootstrap gnat. + * debian/rules2: when running the Ada test suite, do not run the multilib + tests as gnat does not support multilib yet. + * Run the ACATS testsuite again (patch it so it correctly finds gnatmake). + + [Thiemo Seufer] + * debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-mips{,el}.dpatch: complete support for mips and mipsel. + Fixes: #482433. + + [Matthias Klose] + * GCC-4.3.1 release. + * Do not include standard system paths in libgcj pkgconfig file. + * Suggest the correct libmudflap0-dbg package. + * Fix PR libjava/35020, taken from the trunk. + * Apply proposed patch for PR tree-optimization/36343. + * On hurd-i386 with -fstack-protector do not link with libssp_nonshared + (Samuel Thibault). Closes: #483613. + * Apply proposed patch for PR tree-optimization/34244. + * Remove debian-revision in symbols files. + * Fix installation of all biarch -multilib packages which are not triarch. + * Fix some lintian warnings. + * Include library symlinks in gobjc and gfortran multilib packages, when + not building the library packages. + * Fix sections in doc-base files. + * Don't apply the sparc-biarch patch when building the gcc-snapshot package. + * libjava: Add @file support for gjavah & gjar. + * Apply patch for PR rtl-optimization/36111, taken from the trunk. + + * Closing reports reported against gcc-4.0 and fixed in gcc-4.3: + - General + + Fix PR optimization/3511, inlined strlen() could be smarter. + Close: #86251. + - C + + Fix PR c/9072, Split of -Wconversion in two different flags. + Closes: #128950, #226952. + - C++/libstdc++ + + PR libstdc++/24660, implement versioning weak symbols in libstdc++. + Closes: #328421. + - Architecture specific: + - mips + + PR target/26560, unable to find a register to spill in class + 'FP_REGS'. Closes: #354439. + - sparc + + Fix PR rtl-optimization/23454, ICE in invert_exp_1. Closes: #340951. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR tree-optimization/30132, ICE in find_lattice_value. Closes: #400484. + + PR other/29534, ICE in "gcc -O -ftrapv" with decreasing array index. + Closes: #405065. + + Incorrect SSE2 code generation for vector initialization. + Closes: #406442. + + Fix segfault in cc1 due to infinite loop in error() when using -ftrapv. + Closes: #458072. + + Fix regression in code size with -Os compared to GCC-3.3. + Closes: #348298. + - C++ + + Fix initialization of global variables with non-constant initializer. + Closes: #446067. + + Fix ICE building muse. Closes: #429385. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.3: + - C++ + + PR c++/28705, ICE: in type_dependent_expression_p. Closes: #406324. + + PR c++/7302, -Wnon-virtual-dtor should't complain of protected dtor. + Closes: #356316. + + PR c++/28316, PR c++/24791, PR c++/20133, ICE in instantiate_decl. + Closes: #327346, #355909. + - Fortran + + PR fortran/31639, ICE in gfc_conv_constant. Closes: #401496. + - Java + + Fix ICE using gcj with --coverage. Closes: #416326. + + PR libgcj/29869, LogManager class loading failure. Closes: #399251 + + PR swing/29547 setText (String) of JButton does not work + with HTML code. Closes: #392791. + + PR libgcj/29178, CharsetEncoder.canEncode() gives different results + than Sun version. Closes: #388596. + + PR java/8923, ICE when modifying a variable decleared "final static". + Closes: #351512. + + PR java/22507, segfault building Apache Cocoon. Closes: #318534. + + PR java/2499, class members should be inherited from implemented + interfaces. Closes: #225434. + + PR java/10581, ICE compiling freenet. Closes: #186922. + + PR libgcj/28340, gij ignores -Djava.security.manager. Closes: #421098. + + PR java/32846, build failure on GNU/Hurd. Closes: #408888. + + PR java/29194, fails to import package from project. Closes: #369873. + + PR libgcj/31700, -X options not recognised by JNI_CreateJavaVM. + Closes: #426742. + + java.util.Calendar.setTimeZone fails to set ZONE_OFFSET. + Closes: #433636. + - Architecture specific: + - alpha + + C++, fix segfault in constructor with -Os. Closes: #438436. + - hppa + + PR target/30131, ICE in propagate_one_insn. Closes: #397341. + - m32r + + PR target/28508, assembler error (operand out of range). + Closes: #417542. + - m68k + + PR target/34688, ICE in output_operand. Closes: #459429. + * Closing reports reported against gcc-4.2 and fixed in gcc-4.3: + - General + + PR tree-optimization/33826, wrong code generation for infinitely + recursive functions. Closes: #445536. + - C++ + + PR c++/24791, ICE on invalid instantiation of template's static member. + Closes: #446698. + + [Aurelien Jarno] + * Really apply arm-funroll-loops.dpatch on arm and armel. Closes: #476460. + + -- Matthias Klose Sat, 07 Jun 2008 23:16:21 +0200 + +gcc-4.3 (4.3.0-5) unstable; urgency=medium + + * Update to SVN 20080523 from the gcc-4_3-branch. + - Remove gcc-i386-emit-cld patch. + - On Debian amd64 and i386 configure with --enable-cld. + * Fix PR tree-optimization/36129, ICE with -fprofile-use. + * Add spu build dependencies independent of the architecture. + * Move arm -funroll-loops fix to arm-funroll-loops from + gfortran-armel-updates. Apply it on both arm and armel. + Closes: #476460. + * Use iceape-dev as a build dependency for Java enabled builds. + * Build the sru cross compiler from a separate source dir without applying + the hardening patches. + + -- Matthias Klose Fri, 23 May 2008 10:12:02 +0200 + +gcc-4.3 (4.3.0-4) unstable; urgency=low + + [ Aurelien Jarno ] + * Fix gnat-4.3 build on mips/mipsel. + * Update libgcc1 symbols for hurd-i386. + + [ Arthur Loiret ] + * Make gcc-4.3-spu Recommends newlib-spu. Closes: #476088 + * Build depend on spu build dependencies only when building + as gcc-4.x source package. + * Disable spu for snapshot builds. + * Support sh4 targets: + - sh4-multilib.dpatch: Add, fix multilib (m4/m4-nofpu) for sh4-linux + - multiarch-include.dpatch: Don't apply on sh4. + + [ Matthias Klose ] + * Stop building libffi packages. + * Update to SVN 20080501 from the gcc-4_3-branch. + - Fix PR target/35662, wrong gfortran code on mips/mipsel. Closes: #476427. + - Fixes mplayer build on powerpc. Closes: #475153. + * Stop building gij/gcj on alpha, arm and hppa. Closes: #459560. + * libstdc++6-4.3-doc: Fix file location in doc-base file. Closes: #476253. + * debian/patches/template.dpatch: Remove the `exit 0' line. + * Fix alternative names for amd64 cross builds. Addresses: #466422. + * debian/copyright: Update to GPLv3, remove the text of the GFDL + and reference the copy in common-licenses. + * Generate the locale data for the testsuite, if the locales package + is installed (not a dependency on all archs). + * Update libgcc2 symbols for m68k, libstdc++6 symbols for arm, m68k, mips + and mipsel. + * Do not include a symbols file for libobjc_gc.so. + * Add four more symbols to libgcj_bc, patch taken from the trunk. + * Adjust names of manual pages in the spu build on powerpc. + * ARM EABI (armel) updates (Andrew Jenner, Julian Brown): + - Add Objective-C support. + - Fortran support patches. + - Fix ICE in gfortran.dg/vector_subscript_1.f90 for -Os -mthumb reload. + * Build ObjC and Obj-C++ packages on armel. + * Reenable running the testsuite on m68k. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/gnalasup_to_lapack.dpatch: new. + * debian/patches/pr34466.dpatch, + debian/patches/pr22255.dpatch, + debian/patches/pr33688.dpatch, + debian/patches/pr10768.dpatch, + debian/patches/pr28305.dpatch, + debian/patches/pr17985.dpatch (#278685) + debian/patches/pr15915.dpatch, + debian/patches/pr16098.dpatch, + debian/patches/pr18680.dpatch, + debian/patches/pr28733.dpatch, + debian/patches/pr22387.dpatch, + debian/patches/pr29015.dpatch: new; backport Ada bug fixes from GCC 4.4. + * debian/patches/rules.patch: apply them. + * debian/patches/pr35050.dpatch: update. + + [Andreas Jochens] + * debian/patches/ppc64-ada.dpatch: update, adding support for ppc64. + (#476868). + + [Ludovic Brenta] + * Apply ppc64-ada.dpatch whenever we build libgnat, not just on ppc64. + * debian/patches/pr28322.dpatch: never pass -Wno-overlength-strings to + the bootstrap compiler, as the patch breaks the detection of whether + the bootstrap compiler supports this option or not. + Fixes: #471192. Works around #471767. + * Merge Aurélien Jarno's mips patch. Fixes: #472854. + + [ Samuel Tardieu ] + * debian/patches/pr30740.dpatch: new Ada bug fix. + * debian/patches/pr35050.dpatch: new Ada bug fix. + + [ Xavier Grave ] + * debian/patches/ada-mips{,el}.dpatch: new; split mips/mipsel support + into new patches, out of ada-sjlj.dpatch. + * debian/rules.d/binary-ada.mk: fix the version number of libgnarl-4.3.a. + + [Roman Zippel] + * PR target/25343, fix gcc.dg/pch/pch for m68k. + + -- Matthias Klose Thu, 01 May 2008 21:08:09 +0200 + +gcc-4.3 (4.3.0-3) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20080401 from the gcc-4_3-branch. + - Fix PR middle-end/35705 (hppa only). + * Update libstdc++6 symbols for hurd-i386. Closes: #472334. + * Update symbol files for libgomp (ppc64). + * Only apply the gcc-i386-emit-cld patch on amd64 and i386 architectures. + * Update libstdc++ baseline symbols for hppa. + * Install powerpc specific header files new in 4.3. + * gcc-4.3-hppa64: Don't include the install tools in the package. + + [ Aurelien Jarno ] + * Fix gobjc-4.3-multilib dependencies. Closes: #473455. + * Fix gnat-4.3 build on mips/mipsel. + * patches/ada-alpha.dpatch: new patch to fix gnat-4.3 build on alpha. + Closes: #472852. + * patches/config-ml.dpatch: also check for n32 multidir. + + [ Arthur Loiret ] + * Build-Depends on binutils (>= 2.18.1~cvs20080103-2) on mips and mipsel, + required for triarch. + * libstdc++-pic.dpatch: Update, don't fail anymore if shared lib is disabled. + + [ Andreas Jochens ] + * Fix build failures on ppc64. Closes: #472917. + - gcc-multilib64dir.dpatch: Remove "msoft-float" and "nof" from MULTILIB + variables. + - Removed ppc64-biarch.dpatch. + - Add debian/lib32gfortan3.symbols.ppc64. + + [ Arthur Loiret, Matthias Klose ] + * Build compilers for spu-elf target on powerpc and ppc64. + - Add gcc-4.3-spu, g++-4.3-spu and gfortran-4.3-spu packages. + - Partly based on the work in Ubuntu on the spu toolchain. + + -- Matthias Klose Tue, 01 Apr 2008 23:29:21 +0000 + +gcc-4.3 (4.3.0-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080321 from the gcc-4_3-branch. + - Remove some broken code that attempts to enforce linker + constraints. Closes: #432541. + * Temporary fix, will be removed once a fixed kernel is available + in testing: Emit cld instruction when stringops are used (i386). + Do not expose the -mcld option until added upstream. Closes: #469567. + * Update NEWS files. + * libjava: Don't leak upon failed realloc (taken from the trunk). + * debian/rules2: The build is not yet prepared to take variables from + the environment; unexport and unset those. + + [Arthur Loiret/Aurelien Jarno] + * MIPS tri-arch support: + - mips-triarch.dpatch: new patch to default to o32 and follow the + glibc convention for n32 & 64 bit names. + - Rename $(biarch) and related vars into $(biarch64). + - Fix biarchsubdir to allow triarch. + - Add biarchn32 support. + - Add mips and mipsel to biarch64 and biarchn32 archs. + - Update binary rules for biarchn32 and libn32 targets. + - Fix multilib deps for triarch. + - control.m4: Add libn32 packages. + + -- Matthias Klose Sat, 22 Mar 2008 00:06:33 +0100 + +gcc-4.3 (4.3.0-1) unstable; urgency=low + + [Matthias Klose] + * GCC-4.3.0, final release. + * Update to SVN 20080309 from the gcc-4_3-branch. + * Build from a modified tarball, without GFDL documentation with + invariant sections and cover texts. + * debian/rules.unpack: Avoid make warnings. + * debian/rules.d/binary-cpp.mk: Add 4.3.0 symlink in gcclibdir. + * Stop building treelang (removed upstream). + * gcj-4.3: Hardcode libgcj-bc dependency, don't run dh_shlibdeps on ecj1. + + [Aurelien Jarno] + * Update libssp-gnu.dpatch and reenable it. + + -- Matthias Klose Sun, 09 Mar 2008 15:18:08 +0100 + +gcc-4.3 (4.3.0~rc2-1) unstable; urgency=medium + + * Update to SVN 20080301 from the gcc-4_3-branch. + * Include the biarch libobjc_gc library in the packages. + * Link libobjc_gc with libgcjgc_convenience.la. + * Add new symbols to libstdc++6 symbol files, remove the symbols for + support (reverted upstream for the 4.3 branch). + * Disable running the testsuite on m68k. + * Update PR other/28322, ignore only unknown -W* options. + + -- Matthias Klose Sat, 01 Mar 2008 15:09:16 +0100 + +gcc-4.3 (4.3-20080227-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080227 from the gcc-4_3-branch. + * Fix PR other/28322, GCC new warnings and compatibility. + Addresses: #367657. + + [Hector Oron] + * Fix cross-compile builds. Closes: #467471. + + -- Matthias Klose Thu, 28 Feb 2008 00:30:38 +0100 + +gcc-4.3 (4.3-20080219-1) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20080219 from the gcc-4_3-branch. + * Apply proposed patch for PR target/34571 (alpha). + * libgcj9-dev: Don't claim that the package contains the static + libraries. + * libjava-xulrunner1.9.dpatch: Add configure check for xulrunner-1.9. + Name the alternative xulrunner-1.9-javaplugin.so. + * libgcj-doc: Don't include the examples; these cannot be built + with the existing Makefile anyway. Addresses: #449608. + * Manpages for gc-analyze and grmic are GFDL. Don't include these when + building DFSG compliant packages. + * Fix build failure building amd64 cross-target libstdc++ packages + (Tim Bagot). Addresses: #464365. + * Fix typos in rename-info-files patch (Richard Guenther). + * Fix PR libgcj/24170. + + [Aurelien Jarno] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + [Ludovic Brenta] + * debian/rules.defs: Temporarily disable the testsuite when building gnat. + * debian/patches/libffi-configure.dpatch: run autoconf in the top-level + directory, where we've changed configure.ac; not in src/gcc. + * debian/patches/ada-sjlj.dpatch: do not run autoconf since we don't + change configure.ac. + * debian/control.m4 (gnat-4.3-doc): conflict with gnat-4.[12]-doc. + Closes: #464801. + + -- Matthias Klose Tue, 19 Feb 2008 23:20:45 +0000 + +gcc-4.3 (4.3-20080202-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080202 from the trunk. + - Fix PR c/35017, pedwarns about valid code. Closes: #450506. + - Fix PR target/35045, wrong code generation with -O3 on i386. + Closes: #463478. + * gcj-4.3: On armel depend on g++-4.3. + * Re-enable build of libobjc_gc, using the internal version of boehm-gc. + Closes: #212248. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch, + debian/patches/ada-gcc-name.dpatch, + debian/patches/ada-symbolic-tracebacks.dpatch, + debian/patches/ada-link-lib.dpatch, + debian/patches/ada-libgnatvsn.dpatch, + debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-sjlj.dpatch: adjust to GCC 4.3. + * debian/README.gnat, debian/TODO, + debian/rules.d/binary-ada.mk: merge from gnat-4.2. + * debian/README.maintainers: add instructions for patching GCC. + * debian/patches/ada-driver.dpatch: remove, no longer used. + * debian/patches/libffi-configure.dpatch: do not patch the top-level + configure anymore; instead, rerun autoconf. This allows removing the + patch cleanly. + * debian/rules2: use gnatgcc as the bootstrap compiler, not gcc-4.2. + + -- Matthias Klose Sat, 02 Feb 2008 19:58:48 +0100 + +gcc-4.3 (4.3-20080127-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080126 from the trunk. + * Tighten build dependency on doxygen. + * Update libstdc++ patches to current svn. + * gij-4.3: Provide java*-runtime-headless instead of java*-runtime. + + [ Aurelien Jarno] + * debian/multiarch.inc: change mipsel64 into mips64el. + + -- Matthias Klose Sun, 27 Jan 2008 01:33:35 +0100 + +gcc-4.3 (4.3-20080116-1) unstable; urgency=medium + + * Update to SVN 20080116 from the trunk. + * Update debian/watch. + * Build libgomp documentation without building libgomp. Addresses: #460660. + * Handle lzma compressed tarballs. + * Fix dependency generation for the gcc-snapshot package: Addresses: #454667. + * Restore lost chunk in libjava-subdir.dpatch. + + -- Matthias Klose Wed, 16 Jan 2008 20:33:50 +0100 + +gcc-4.3 (4.3-20080112-1) unstable; urgency=low + + * Update to SVN 20080112 from the trunk. + * Tighten build-dependency on dpkg-dev (closes: #458894). + * Update symbol definitions for alpha. + * Build-depend on libmpfr-dev for all source packages. + + -- Matthias Klose Sun, 13 Jan 2008 00:40:28 +0100 + +gcc-4.3 (4.3-20080104-1) unstable; urgency=low + + * Update to SVN 20080104 from the trunk. + * Update symbol definitions for alpha, hppa, ia64, mips, mipsel, powerpc, + s390, sparc. + + -- Matthias Klose Fri, 04 Jan 2008 07:34:15 +0100 + +gcc-4.3 (4.3-20080102-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080102 from the trunk. + - Fix 64bit biarch builds (addresses: #447443). + * debian/rules.d/binary-java.mk: Reorder packaging to get shlibs + dependencies right. + * Use lib instead of lib64 as multilibdir on amd64 and ppc64. + * Build the java plugin always using libxul-dev. + * Add libgcj_bc to the libgcj9-0 shlibs file. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2, libgfortran3, + lib32gfortran3, lib64gfortran3. + Adjust build dependencies on dpkg-dev and debhelper. + * Do not build the java packages from the gcc-4.3 source package. + + [ Aurelien Jarno ] + * Disable amd64-biarch patch on kfreebsd-amd64. + + -- Matthias Klose Wed, 02 Jan 2008 23:48:14 +0100 + +gcc-4.3 (4.3-20071124-1) experimental; urgency=low + + [ Matthias Klose ] + * Update to SVN 20071124 from the trunk. + * Fix dependencies of lib*gcc1-dbg packages. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + + [ Aurelien Jarno ] + * Update kbsd-gnu patch. + * Remove kbsd-gnu-ada patch (merged upstream). + + -- Matthias Klose Sat, 24 Nov 2007 13:14:29 +0100 + +gcc-4.3 (4.3-20070930-1) experimental; urgency=low + + [Matthias Klose] + * Update to SVN 20070929 from the trunk. + * Update debian patches to the current trunk. + * Regenerate the control file. + * On powerpc-linux-gnu and i486-linux-gnu cross-compile the 64bit + multilib libraries to allow a sucessful build on 32bit kernels + (our buildds). Although we won't get 64bit test results this way ... + * Remove the build dependency on expect-tcl8.3. + * Fix MULTILIB_OSDIRNAMES for cross builds targeted for amd64 and ppc64. + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Always set STAGE1_CFLAGS to -g -O2, only pass other settings + when configuring when required. + * Configure --with-bugurl, adjust the bug reporting instructions. + * gcc-4.3: Install new cpuid.h header. + * Fix installation of the s390 libstdc++ biarch headers. + * Install new bmmintrin.h, mmintrin-common.h headers. + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + -- Matthias Klose Sun, 30 Sep 2007 12:06:02 +0200 + +gcc-4.3 (4.3-20070902-1) experimental; urgency=low + + * Upload to experimental. + + -- Matthias Klose Sun, 2 Sep 2007 20:51:16 +0200 + +gcc-4.3 (4.3-20070902-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070902 from the trunk. + * Fix the build logic for the Ubuntu i386 buildd; we can't build biarch. + * Only remove libgcj9's classmap db if no other libgcj9* library is + installed. + * A lot more updates for 4.3 packaging. + + -- Matthias Klose Sat, 01 Sep 2007 21:01:43 +0200 + +gcc-4.3 (4.3-20070901-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070901 from the trunk. + * First gcc-4.3 package build. + - Update patches for the *-linux-gnu builds. + - Update build files for 4.3. + * Add proposed patch for PR middle-end/33029. + * gcj-4.3: Install gc-analyze. + + -- Matthias Klose Sat, 1 Sep 2007 20:52:16 +0200 + +gcc-4.2 (4.2.2-7) unstable; urgency=low + + * Update to SVN 20080114 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34762. LP: #182412. + * Update debian/watch. Closes: #459259. Addresses: #459391, #459392. + * Build libgomp documentation without building libgomp. Closes: #460660. + * Restore gomp development files. Closes: #460736. + + -- Matthias Klose Mon, 14 Jan 2008 23:20:04 +0100 + +gcc-4.2 (4.2.2-6) unstable; urgency=low + + * Update to SVN 20080113 from the ubuntu/gcc-4_2-branch. + * Adjust build-dependency on debhelper, dpkg-dev. + * Fix gnat-4.2 build failure (addresses: #456867). + * Do not build packages built from the gcc-4.3 source. + + -- Matthias Klose Sun, 13 Jan 2008 13:48:49 +0100 + +gcc-4.2 (4.2.2-5) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080102 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/32889, ICE in delete_output_reload. + Closes: #444873, #445336, #451047. + - Fix PR target/34215, ICE in assign_386_stack_local. + Closes: #446714, #452451. + - Fix PR target/33848, reference to non-existent label at -O1 on + mips/mipsel. Closes: #441633. + * debian/rules.d/binary-java.mk: dpkg-shlibsdeps can't handle the dangling + symlink to libgcj_bc.so.1. Remove it temporarily. + * Add libgcj_bc to the libgcj8-1 shlibs file. + * Fix build failures for gnat-4.2, gpc-4.2, gdc-4.2 introduced by recent + gdc changes. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2. Adjust build + dependencies on dpkg-dev and debhelper. + Adjust build-dependency on dpkg-dev. + + [Arthur Loiret] + * Fix gdc-4.2 build failure. + * Update gdc to upstream SVN 20071124. + - d-bi-attrs: Support attributes on declarations in other modules. + - d-codegen.cc (IRState::attributes): Support constant declarations as + string arguments. + * Enable libphobos: + - gdc-4.2.dpatch: Fix ICEs. + - gdc-4.2-build.dpatch: Update, make it cleaner. + * Install libphobos in the private gcc lib dir. + * gdc-4.2.dpatch: Update from gdc-4.1.dpatch. + - gcc/tree-sra.c: Do not use SRA on structs with aliased fields created + for anonymous unions. + - gcc/predict.c: Add null-pointer check. + * debian/rules.defs: Disable phobos on hurd-i386. + - gdc-hurd-proc_maps.dpatch: Remove. + + -- Matthias Klose Wed, 02 Jan 2008 15:49:30 +0100 + +gcc-4.2 (4.2.2-4) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20071123 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34130, wrong code with some __builtin_abs expressions. + Closes: #452108. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + * Use gcc-multilib as build-dependency instead of gcc-4.1-mulitlib. + * Support for fast-math on hurd-i386 (Michael Banck). Closes: #451520. + * Fix again profiling support on the Hurd (Thomas Schwinge). Closes: #434937. + + [Arthur Loiret] + * Merge gdc-4.1 patches and build infrastructure: + - gdc-4.2.dpatch: Add, setup gcc-4.2.x for D. + - gdc-4.2-build.dpatch: Add, update gdc builtins and driver objs. + - gdc-driver-zlib.dpatch: Add, use up-to-date system zlib. + - gdc-driver-defaultlib.dpatch: Add, add -defaultlib/-debuglib switches. + - gdc-driver-nophobos.dpatch: Add, disable libphobos when unsupported. + - gdc-libphobos-build.dpatch: Add, enable libphobos build when supported. + - gdc-fix-build.dpatch: Add, fix build on non-biarched 64bits targets. + - gdc-libphobos-std-format.dpatch: Add, replace assert when formating a + struct on non-x86_64 archs by a FormatError. + - gdc-arm-unwind_ptr.dpatch: Add, fix build on arm. + - gdc-mips-gcc-config.dpatch: Add, fix build on mips. + - gdc-hurd-proc_maps.dpatch: Add, fix build on hurd. + + -- Matthias Klose Sat, 24 Nov 2007 12:01:06 +0100 + +gcc-4.2 (4.2.2-3) unstable; urgency=low + + * Update to SVN 20071014 from the ubuntu/gcc-4_2-branch. + - Fix build failure in libjava on mips/mipsel. + * Make 4.2.2-2 a requirement for frontends built from separate sources. + Addresses: #446596. + + -- Matthias Klose Sun, 14 Oct 2007 14:13:00 +0200 + +gcc-4.2 (4.2.2-2) unstable; urgency=low + + * Update to SVN 20071011 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33448, ICE in create_tmp_var. Closes: #439687. + - Remove debian/patches/pr31899.dpatch, applied upstream. + - Remove debian/patches/pr33381.dpatch, applied upstream. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + + -- Matthias Klose Thu, 11 Oct 2007 23:41:52 +0200 + +gcc-4.2 (4.2.2-1) unstable; urgency=low + + * Update to SVN 20071008 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.2 release. + * Fix dependencies of lib*gcc1-dbg packages. Closes: #445190. + * Remove libjava-armeabi patch integrated upstream. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * Apply proposed patch for PR debug/31899. Closes: #445268. + + * Add niagara2 optimization support (David Miller). + + -- Matthias Klose Mon, 08 Oct 2007 21:12:41 +0200 + +gcc-4.2 (4.2.1-6) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070929 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33382, ICE (closes: #441481). + - Fix PR tree-optimization/28544 (4.2.1, closes: #380482). + - Fix PR libffi/28313, port to mips64 (closes: #358235). + * Fix PR tree-optimization/33099, PR tree-optimization/33381, + wrong code generation with VRP/SCEV. Closes: #440545, #443576. + * Update Hurd fixes (Samuel Thibault). + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Add -g to BOOT_CFLAGS, set STAGE1_CFLAGS to -g -O, only pass + other settings when required. + * Fix installation of the s390 libstdc++ biarch headers. + * Allow the powerpc build on a 32bit machine (without running the + biarch testsuite). + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Drop the build dependency on expect-tcl8.3 (the hppa testsuite seems + to complete sucessfully with the expect package). + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR rtl-optimization/21299, error in invalid asm statement. + Closes: #380121. + - C++ + + PR libstdc++/19664, libstdc++ headers have pop/push of the visibility + around the declarations (closes: #307207, #324290, #423547). + + PR c++/21581, functions in anonymous namespaces default to "hidden" + visibility (closes: #278310). + + PR c++/4882, specialization of inner template using outer template + argument (closes: #269513). + + PR c++/6634, wrong parsing of "long long double" (closes: #247112). + + PR c++/10891, code using dynamic_cast causes segfaults when -fno-rtti + is used (closes: #188943). + + PR libstdc++/14991, stream::attach(int fd) porting entry out-of-date. + Closes: #178561. + + PR libstdc++/31638, string usage leads to warning with -Wcast-align. + Closes: #382153. + + Fix memory hog seen with g++-4.1. Closes: #411234. + - Fortran + + PR fortran/29228, ICE in gfc_trans_deferred_array (closes: #387222). + + PR fortran/24285, allow dollars everywhere in format (closes: #324600). + + PR libfortran/28354, 0.99999 printed as 0. instead of 1. by + format(f3.0). Closes: #397671. + + Fix ICE in gfc_get_extern_function_decl (closes: #396292). + - Architecture specific: + - i386 + + Fix error with -m64 (unable to find a register to spill in class + 'DIREG'). Closes: #430049. + - mips + + Fix ICE in tsubst (closes: #422303). + - s390 + + Fix ICE (segmentation fault) building dcmtk (closes: #435736). + + [Roman Zippel] + * Update the m68k patches. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + [Ludovic Brenta and Xavier Grave] + * Add a version of the Ada run-time library using the setjump/longjump + exception handling mechanism (static library only). Use with + gnatmake --RTS=sjlj. Particularly useful for distributed (Annex E) + programs. + * Restore building libgnatvsn-dev and libgnatprj-dev. + + -- Matthias Klose Sat, 29 Sep 2007 11:19:40 +0200 + +gcc-4.2 (4.2.1-5) unstable; urgency=low + + * Update to SVN 20070825 from the ubuntu/gcc-4_2-branch. + - Fix PR debug/32610, LP: #121911. + * Apply proposed patches: + - Improve debug info for packed arrays with constant bounds + (PR fortran/22244). + - Fix ICE in rtl_for_decl_init on const vector initializers + (PR debug/32914). + - Fix (neg (lt X 0)) optimization (PR rtl-optimization/33148). + - Fix libgcc.a(tramp.o) on ppc32. + - Fix redundant reg/mem stores/moves (PR target/30961). + * Update the -fdirectives-only backport. + * gappletviewer-4.2: Include the gcjwebplugin binary. LP: #131114. + * Update gpc patches and build support (not yet enabled). + * Fix gcc-snapshot hppa64 install target. + * Set the priority of the source package to optional. + * Remove .la files from the biarch libstdc++ debug packages, + conflict with the 3.4 package. Closes: #440490. + + [Arthur Loiret] + * Add build support for GDC. + + -- Matthias Klose Mon, 27 Aug 2007 01:39:32 +0200 + +gcc-4.2 (4.2.1-4) unstable; urgency=medium + + * gcc-4.2: Include missing std*.h header files. + + -- Matthias Klose Tue, 14 Aug 2007 11:14:35 +0200 + +gcc-4.2 (4.2.1-3) unstable; urgency=low + + * Update to SVN 20070812 from the ubuntu/gcc-4_2-branch. + * debian/rules.defs: Fix typo, run the checks in biarch mode too. + * libgcj8-awt: Loosen dependency on gcj-4.2-base. + * Build only needed multilib libraries when building as gcj or gnat. + * Always build biarch libgomp in biarch builds. + * debian/rules2: Adjust testsuite logs files for logwatch.sh. + * Include header files from $/gcc_lib_dir)/include-fixed. + * Backport from trunk: -fdirectives-only (when preprocessing, handle + directives, but do not expand macros). + * Report an ICE to apport (if apport is available and the environment + variable GCC_NOAPPORT is not set) + * Fix gcj build failure on the Hurd (Samuel Thibault). Closes: #437470. + + -- Matthias Klose Sun, 12 Aug 2007 21:11:00 +0200 + +gcc-4.2 (4.2.1-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070804 from the ubuntu/gcc-4_2-branch (20070804): + - Merge gcc-4_2-branch SVN 20070804. + - Imported classpath CVS 20070727. + - Bump the libgcj soname, add conflict with java-gcj-compat (<< 1.0.76-4). + - Remove patches integrated in the branches: pr32862. + - Update patches: libjava-subdir, libjava-jar. + - Add regenerated class files: svn-class-updates. + + * Fix profiling support on the Hurd (Michael Casadeval). Closes: #434937. + * Fix build on kfreebsd-amd64 (Aurelien Jarno). Closes: #435053. + * Period of grace is over, run the testsuite on m68k-linux again. + * Update infrastructure for the gcc-source package (Bastian Blank). + * Update profiling on the Hurd (Samuel Thibault, Michael Casadevall). + Closes: #433539. + * debian/rules2: Allow DEB_BUILD_OPTIONS=parallel= to overwrite NJOBS. + * Allow lang=, nolang= in DEB_BUILD_OPTIONS; deprecating + WITHOUT_LANG, and WITHOUT_CHECK. + * debian/rules.defs, debian/rules.conf: Cache some often used macros. + + * Preliminary work: Enable Java for ARM EABI (Andrew Haley), build + libffi for armel. + * gcj: Don't build the browser plugin in gcc-snapshot builds to get + rid of the xulrunner dependency. + * gcjwebplugin: Register for more browsers (package currently not built). + * gij/boehm-gc: Use sysconf as fallback, if reading /proc/stat fails. + Closes: #422469. + * libjava: Avoid dependency on MAXHOSTNAMELEN (Samuel Thibault). + * gcj: On arm and armel, use the ecj1 binary built from the ecj package. + * gcj: Don't require javac without java maintainer mode, remove build + dependencies on gcj and ecj, add build dependency on libecj-java. + + -- Matthias Klose Sun, 05 Aug 2007 15:56:07 +0200 + +gcc-4.2 (4.2.1-1) unstable; urgency=medium + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.c: remove all trace of + the function convert_addresses from adaint.c. Fixes FTBFS on alpha, + s390 and possibly other platforms. Closes: #433633. + * debian/control.m4: list myself as uploader if the source package name + is gnat. Relax build-dependency on gnat-4.2-source. + * debian/control.m4, debian/rules.conf: Build-depend on libmpfr-dev only + if building Fortran. + + [Matthias Klose] + * debian/rules.conf: Fix breakage of Fortran build dependencies introduced + by merge of the Ada bits. + * Don't include the gccbug binary anymore in the gcc package; upstream bug + reports should be reported to the upstream bug tracker at + http://gcc.gnu.org/bugzilla. + * Don't build and test libjava for the biarch architecture. + * Install gappletviewer man page. Addresses: #423094. + * debian/patches/m68k-java.dpatch: Readd. + * gjar: support @ arguments. + * Update to SVN 20070726 from the ubuntu/gcc-4_2-branch. + - Fix mips/mipsel builds. + * libmudflap0: Fix update leaving an empty doc dir. Closes: #428306. + * arm/armel doesn't have ssp support. Closes: #433172. + * Update kbsd-gnu-ada patch (Aurelien Jarno): Addresses: #434754. + * gcj-4.2: Build depend on gcj-4.2 to build the classpath examples files + for the binary-indep target. + * Fix PR java/32862, bugs in EnumMap implementation. Addresses: #423160. + + [Arthur Loiret] + * Fix cross builds targeting x86_64. Closes: LP: #121834. + + -- Matthias Klose Thu, 26 Jul 2007 21:46:03 +0200 + +gcc-4.2 (4.2.1-0) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070719 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.1 release. + - debian/patches/arm-gij.dpatch: Remove. Closes: #433714. + * Apply proposed patch for PR tree-optimization/32723. + * Tighten build dependency on libmpfr-dev. + * On ia64, apply proposed patch for PR target/27880. Closes: #433719. + + [Hector Oron] + * Fix cross and reverse-cross builds. Closes: #432356. + + -- Matthias Klose Thu, 19 Jul 2007 17:59:37 +0200 + +gnat-4.2 (4.2-20070712-1) unstable; urgency=low + + * debian/rules.d/binary-ada.mk, debian/control.m4: + disable building libgnatvsn-dev and libgnatprj-dev, as they conflict + with packages from gnat-4.1. Will reenable them for the transition to + gnat-4.2. + * Upload as gnat-4.2. Closes: #432525. + + -- Ludovic Brenta Sat, 14 Jul 2007 15:12:34 +0200 + +gcc-4.2 (4.2-20070712-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070712 from the ubuntu/gcc-4_2-branch. + - 4.2.1 RC2, built from SVN. + - same as gcc-4_2-branch, plus backport of gcc/java, boehm-gc, libffi, + libjava, zlib from the trunk. + - debian/patches/arm-libffi.dpatch: Remove. + - Fixes ICE in update_equiv_regs. Closes: #432604. + * debian/control.m4: Restore build dependency on dejagnu. + * debian/patches/arm-gij.dpatch: Update. + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #432599. + + -- Matthias Klose Fri, 13 Jul 2007 08:07:51 +0200 + +gcc-4.2 (4.2-20070707-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070707 from the ubuntu/gcc-4_2-branch. + - debian/patches/libjava-soname.dpatch: Remove. + - debian/patches/disable-configure-run-check.dpatch: Update. + * Only suggest multilib packages on multilib architectures. + * Point ICE messages to the 4.2 docdir. + * Explicitely use fastjar to build gcj-4.1. Addresses: #416001. + * Configure with --enable-libgcj on m32r (Kazuhiro Inaoka). + * Include the hppa64 cross compiler on hppa snapshot builds. + * debian/patches/arm-libffi.dpatch: Update. + * libgcj-doc: Include the generated documentation. + * Fix building the libjava/classpath examples. + * Support reverse cross builds (Neil Williams). Closes: #431086. + + -- Matthias Klose Sat, 07 Jul 2007 10:59:26 +0200 + +gcc-4.2 (4.2-20070627-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN gcc-4_2-branch/20070626. + * Update to SVN trunk/20070626 (gcc/java, libjava, libffi, boehm-gc). + * On mips*-linux, always imply -lpthread for -pthread (Thiemo Seufer). + Addresses: #428741. + * Fix libstdc++ cross builds (Arthur Loiret). Closes: #430395. + * README.Debian: Point to debian-toolchain for general toolchain topics. + * Use the generated locales for the libstdc++ build to fix the setting + of the gnu locale model. Closes: #428926, #429660. + * For ix86 lpia targets, configure --with-tune=i586. + * Make build dependency on gcc-4.1-multilib architecture specific. + * Do not ignore bootstrap comparision failure on ia64. + + [Ludovic Brenta] + * ada-link-lib.dpatch: update to apply cleanly on GCC 4.2. + * ada-libgnat{vsn,prj}.dpatch: adjust to GCC 4.2. Reenable in rules.patch. + * rules.conf: do not build libgomp as part of gnat-4.2. + * rules.conf, control.m4: build-depend on libz-dev, lib32z-dev or + lib64-dev only when building Java. + * rules2, rules.defs: $(with_mudflap): remove, use $(with_libmudflap) only. + * config.m4, binary-ada.mk: tighten dependencies; no Ada package depends + on gcc-4.2-base anymore. + * TODO: rewrite. + * README.gnat: include in gnat-4.2-base. Remove outdated information. + * README.maintainers: new. Include in gnat-4.2-base. + + [Hector Oron] + * Merge DEB_CROSS_INDEPENDENT with DEB_CROSS. + * Disables libssp0 for arm and armel targets when cross compiling. + * Updates README.cross. + * Fixes linker mapping problem on binary-libstdcxx-cross.mk. Closes: #430688. + + -- Matthias Klose Wed, 27 Jun 2007 21:54:08 +0200 + +gcc-4.2 (4.2-20070609-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070609. + - Remove patches integrated upstream: pr30052, hppa-caller-save-pic-tls. + * Update to SVN trunk/20070609 (gcc/java, libjava, libffi, boehm-gc). + - Remove patches integrated upstream: libjava-qt-peer, + classpath-config-guess. + * Do not build with --enable-java-maintainer-mode. + * debian/rules.patch: Comment out m68k-peephole, requires m68k-split_shift. + * Add target to apply patches up to a specific patch (Wouter Verhelst). + Closes: #424855. + * libstdc++6-4.2-*: Add conflicts with 4.1 packages. Closes: #419511. + * Apply proposed fix for PR target/28102. Closes: #426905. + * Fix build failure for cross compiler builds (Jiri Palecek). Closes: #393897. + * Update build macros for kfreebsd-amd64. Closes: #424693. + + -- Matthias Klose Sat, 9 Jun 2007 06:54:13 +0200 + +gcc-4.2 (4.2-20070528-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070528. + * Add backport for PR middle-end/20218. + * Add proposed PTA solver backport, PR tree-optimization/30052. + * Add backport for PR target/31868. + * Reenable the testsuite for arm, mips, mipsel. + + -- Matthias Klose Mon, 28 May 2007 09:03:04 +0200 + +gcc-4.2 (4.2-20070525-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070525. + * Update to SVN trunk/20070520 (gcc/java, libjava, libffi, boehm-gc). + * Do not explicitely configure for __cxa_atexit. + * libstdc++6-4.2-doc: Conflict with libstdc++6-4.1-doc. Closes: #424896. + * Update m68k patches: + - Remove patches applied upstream: m68k-jumptable, m68k-gc, + - Reenable patches: m68k-save_pic, m68k-dwarf, m68k-limit_reload, + m68k-prevent-qipush, m68k-peephole, m68k-return, m68k-sig-unwind, + m68k-align-code m68k-align-stack, m68k-symbolic-operand, + m68k-bitfield-offset. + - Update: m68k-return, m68k-secondary-addr-reload, m68k-notice-move + m68k-secondary-addr-reload, m68k-notice-move. + - TODO: m68k-split_shift, m68k-dwarf3, m68k-fpcompare. + * Update the kfreebsd and arm patches (Aurelien Jarno). Closes: #425011. + * Temporarily disable the testsuite on slow architectures to get the + package built soon. + + -- Matthias Klose Fri, 25 May 2007 07:14:36 +0200 + +gcc-4.2 (4.2-20070516-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070516. + * Update to SVN trunk/20070516 (gcc/java, libjava, libffi, boehm-gc). + * Merge changes from gcc-4.1_4.1.2-7. + * Update NEWS files. + + -- Matthias Klose Wed, 16 May 2007 02:33:57 +0200 + +gcc-4.2 (4.2-20070502-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070502. + - Remove pr11953 patch, integrated upstream. + * Update to SVN trunk/20070502 (gcc/java, libjava, libffi, boehm-gc). + * Adjust tetex/tex-live build dependency. + * Fix gobjc-4.2's, gobjc++-4.2's dependency on libobjc2. + * Tighten (build) dependency on binutils. Addresses: #421197. + * gfortran-4.2: Depend on libgfortran2, provide the libgfortran.so + symlink. Adresses: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + + -- Matthias Klose Wed, 2 May 2007 18:46:57 +0200 + +gcc-4.2 (4.2-20070405-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070405. + * Update to SVN trunk/20070405 (gcc/java, libjava, libffi, boehm-gc). + * gcc-4.2-hppa64: Don't depend on libc6-dev. + * Robustify setting of make's -j flag. Closes: #410919. + * gcc-snapshot: Use the install_snap_stamp target for installation. + + -- Matthias Klose Thu, 5 Apr 2007 23:56:35 +0200 + +gcc-4.2 (4.2-20070307-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070307. + * Update to SVN trunk/20070307 (gcc/java, libjava, libffi, boehm-gc). + * Build gnat from separate sources. + * Merge changes from gcc-4.1-4.1.2-1. + * Install into /usr/lib/gcc//4.2, to ease upgrades + between subminor versions. + * Configure --with-gxx-include-dir=/usr/include/c++/4.2 + + -- Matthias Klose Thu, 8 Mar 2007 02:52:00 +0100 + +gcc-4.2 (4.2-20070210-1) experimental; urgency=low + + * Merge Java backport from Ubuntu: + - Update to SVN gcc-4_2-branch/20070210. + - Update to SVN trunk/20070210 (gcc/java, libjava). + - Backout trunk specific gcc/java changes. + - Build-depend on gcj-4.1 and ecj-bootstrap. + - gcj-4.2: Depend on ecj-bootstrap, recommend ecj-bootstrap-gcj. + - Merge libgcj8-awt-gtk back into libgcj8-awt; the Qt peers + are disabled by upstream again. + - Generate manual pages for the classpath tools from the classpath + documentation. + - Adopt packaging for the merged libjava. + - Update patches for the merged libjava: libjava-lib32-properties, + i386-biarch, reporting, libjava-soname, libjava-subdir, + libjava-lib32subdir. + - Remove obsolete patches: libjava-plugin-binary, libjava-ia32fix, + libstdc++-docfixes. + + * Set priority of development packages to optional. + * debian/libgcjGCJ.postrm: Don't fail on purge when directories + don't exist anymore. Closes: #406017. + * debian/patches/gcc-textdomain.dpatch: Update for 4.2. + * Generate and install libgomp docs into gcc-4.2-doc. + + -- Matthias Klose Sat, 10 Feb 2007 16:53:11 +0100 + +gcc-4.2 (4.2-20070105-1) experimental; urgency=low + + * Update to SVN 20070105. + * Add tetex-extra to Build-Depend-Indep (libstd++ doxygen docs), + fix doxygen build (libstdc++-docfixes.dpatch). + * Enable parallel build by default on SMP machines. + + -- Matthias Klose Fri, 5 Jan 2007 22:42:18 +0100 + +gcc-4.2 (4.2-20061217-1) experimental; urgency=low + + * Update to SVN 20061217. + * Merge changes from gcc-4.1_4.1.1-16 to gcc-4.1_4.1.1-21. + * Update patches to the current branch. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Link using --hash-style=gnu (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + + -- Matthias Klose Sun, 17 Dec 2006 15:54:54 +0100 + +gcc-4.2 (4.2-20061003-1) experimental; urgency=low + + * libgcj.postinst: Remove /var/lib/gcj-4.2 on package removal. + * Don't install backup files in the doc directory, only one gcc-4.1 + upgrade was broken. Closes: #389366. + * Merge gcc-biarch-generic.dpatch into i386-biarch.dpatch. + * Update link-libs.dpatch. + * Merge libgfortran2-dev into gfortran-4.2. + + -- Matthias Klose Tue, 3 Oct 2006 16:26:38 +0000 + +gcc-4.2 (4.2-20060923-1) experimental; urgency=low + + * Update to SVN 20060923. + * Remove patches applied upstream: kbsd-gnu-java, kbsd-gnu. + + -- Matthias Klose Sat, 23 Sep 2006 15:11:36 +0200 + +gcc-4.2 (4.2-20060905-1) experimental; urgency=low + + * Update to SVN 20060905. + * Merge changes from gcc-4.1 (4.1.1-10 - 4.1.1-12). + * Move gomp development files into gcc and gfortran. + * Build-depend on binutils (>= 2.17). + + -- Matthias Klose Tue, 5 Sep 2006 03:33:00 +0200 + +gcc-4.2 (4.2-20060818-1) experimental; urgency=low + + * Update to SVN 20060818. + - libjava-libgcjbc.dpatch: Remove, applied upstream. + * Merge changes from the Ubuntu gcj-4.2 package: + - libjava-soname.dpatch: Remove, applied upstream. + - libjava-native-libdir.dpatch: update. + - libffi-without-libgcj.dpatch: Remove, new libffi-configure to + enable --disable-libffi. + - Changes required for the classpath-0.92 update: + - New packages gappletviewer-4.2, gcjwebplugin-4.2. + - gij-4.2: Add keytool alternative. + - gcj-4.2: Add jarsigner alternative. + - libgcj8-dev: Remove conflicts with older libgcjX-dev packages. + - lib32gcj8: Populate the /usr/lib32/gcj-4.2 directory. + - libjava-library-path.dpatch: + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Adresses: #364820. + - Add more debugging symbols to libgcj8-dbg. Adresses: #383705. + - Fix and renable the biarch build for sparc. + * Disable gnat for alpha, fails to build. + * Configure without --enable-objc-gc, fails to build. + + -- Matthias Klose Sat, 19 Aug 2006 18:25:50 +0200 + +gcc-4.2 (4.2-20060709-1) experimental; urgency=low + + * Test build, SVN trunk 20060709. + * Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + * Rename libmudflap0-dev to libmudflap0-4.2-dev. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. + * Merge changes from the gcc-4.1 package. + + -- Matthias Klose Sun, 9 Jul 2006 14:28:03 +0200 + +gcc-4.2 (4.2-20060617-1) experimental; urgency=low + + * Test build, SVN trunk 20060617. + + [Matthias Klose] + * Configure using --enable-objc-gc, using the internal boehm-gc. + * Build-depend on bison (>= 1:2.3). + * Build the QT based awt peer library, not yet the same functionality + as the GTK based peer library. + * Update libjava-* patches. + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and + DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 17 Jun 2006 19:02:01 +0200 + +gcc-4.2 (4.2-20060606-1) experimental; urgency=low + + * Test build, SVN trunk 20060606. + * Remove obsolete patches, update patches for 4.2. + * Update the biarch-include patches to work with mips-triarch. + * Disable Ada, not yet updated. + * New packages: libgomp*. + * Remove fastjar, not included upstream anymore. + + -- Matthias Klose Tue, 6 Jun 2006 10:52:28 +0200 + +gcc-4.1 (4.1.2-12) unstable; urgency=high + + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #427185. + * m68k-libffi2.dpatch: Update. Closes: #425399. + + -- Matthias Klose Mon, 4 Jun 2007 23:53:23 +0200 + +gcc-4.1 (4.1.2-11) unstable; urgency=low + + * Update to SVN 20070601. + * Build the libmudflap0-dev package again. + * Don't build libffi, when the packages are not built. + + -- Matthias Klose Fri, 1 Jun 2007 23:55:22 +0200 + +gcc-4.1 (4.1.2-10) unstable; urgency=low + + * Regenerate the control file. + + -- Matthias Klose Wed, 30 May 2007 00:29:29 +0200 + +gcc-4.1 (4.1.2-9) unstable; urgency=low + + * Update to SVN 20070528. + * Don't build packages now built from the gcc-4.2 source (arm, m68k, + mips, mipsel). + * Add backport for PR middle-end/20218. + * Add backport for PR target/31868. + + -- Matthias Klose Tue, 29 May 2007 00:01:12 +0200 + +gcc-4.1 (4.1.2-8) unstable; urgency=low + + * Update to SVN 20070518. + * Don't build packages now built from the gcc-4.2 source. + + [ Aurelian Jarno ] + * Update libffi patch for ARM. Closes: #425011. + * arm-pr30486, arm-pr28516, arm-unbreak-eabi-armv4t: New. + * Disable FFI, Java, ObjC for armel. + + -- Matthias Klose Sun, 20 May 2007 10:31:24 +0200 + +gcc-4.1 (4.1.2-7) unstable; urgency=low + + * Update to SVN 20070514. + * Link using --hash-style=both on supported architectures. Addresses: #421790. + * On hppa, build ecjx as a native binary. + * note-gnu-stack.dpatch: Fix ARM comment marker (Daniel Jacobowitz). + Closes: #422978. + * Add build dependency on libxul-dev for *-freebsd. Closes: #422995. + * Update config.guess/config.sub and build gcjwebplugin on GNU/kFreeBSD + (Aurelian Jarno). Closes: #422995. + * Disable ssp on hurd-i386. Closes: #423757. + + -- Matthias Klose Mon, 14 May 2007 08:40:08 +0200 + +gcc-4.1 (4.1.2-6) unstable; urgency=low + + * Update libjava from the gcc-4.1 Fedora branch 20070504. + * gfortran-4.1: Fix the target of the libgfortran.so symlink. + Closes: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * Readd build dependency on binutils on arm. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + * Fix wrong code generation on hppa when TLS variables are used. + Closes: #422421. + + -- Matthias Klose Sun, 6 May 2007 10:00:23 +0200 + +gcc-4.1 (4.1.2-5) unstable; urgency=low + + * Update to SVN 20070429. + * Update libjava from the gcc-4.1 Fedora branch 20070428. + * Update m68k patches: + - Remove pr25514, pr27736, applied upstream. + - Update m68k-java. + * Link using --hash-style=gnu/both. + * Tighten (build) dependency on binutils. Closes: #421197. + * gij-4.1: Add a conflict with java-gcj-compat (<< 1.0.69). + * gfortran-4.1: Depend on libgfortran1, provide the libgfortran.so + symlink. Closes: #421362. + * gcc-4.1, gcc-4.1-multilib: Fix compatibility symlinks. Closes: #421382. + * Temporarily remove build dependency on locales on arm, hppa, m68k, mipsel. + * Temporarily remove build dependency on binutils on arm. + * Fix FTBFS on GNU/kFreeBSD (Aurelian Jarno). Closes: #421423. + * gij-4.1 postinst: Create /var/lib/gcj-4.1. Closes: #421526. + + -- Matthias Klose Mon, 30 Apr 2007 08:13:32 +0200 + +gcc-4.1 (4.1.2-4) unstable; urgency=medium + + * Update to SVN 20070423. + - Remove pr11953, applied upstream. + - Fix ld version detection in libstdc++v3. + * Update libjava from the gcc-4.1 Fedora branch 20070423. + * Merge libgfortran1-dev into gfortran-4.1. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Don't link using --hash-style=gnu/both; loosen dependency on binutils. + * Don't revert the patch to fix PR c++/27227. + + -- Matthias Klose Mon, 23 Apr 2007 23:13:14 +0200 + +gcc-4.1 (4.1.2-3) experimental; urgency=low + + * Update to SVN 20070405. + * Update libjava from the gcc-4.1 Fedora branch 20070405. + * Robustify setting of make's -j flag. Closes: #414316. + * Only build the libssp packages, when building the common libraries. + * gcc-4.1-hppa64: Don't depend on libc6-dev. + + -- Matthias Klose Fri, 6 Apr 2007 00:28:29 +0200 + +gcc-4.1 (4.1.2-2) experimental; urgency=low + + * Update to SVN 20070306. + * Update libjava from the gcc-4.1 Fedora branch 20070306. + + [Matthias Klose] + * Don't install gij-wrapper anymore, directly register gij as a java + alternative. + * Don't install gcjh-wrapper anymore. + * Don't use exact versioned dependencies on gcj-base for libgcj and + libgcj-awt. + * Fix glibc build dependency for alpha. + * Support -ffast-math on hurd-i386 (Samuel Thibault). Closes: #413342. + * Update kfreebsd-amd64 patches (Aurelien Jarno). Closes: #406015. + * gij: Consistently use $(dbexecdir) to reference the gcj sub dir. + * Install into /usr/lib/gcc//4.1, to ease upgrades + between minor versions. + Add compatibility symlinks in /4.1.2 to build gnat-4.1 + and gcj-4.1 from separate sources. + + -- Matthias Klose Wed, 7 Mar 2007 03:51:47 +0100 + +gcc-4.1 (4.1.2-1) experimental; urgency=low + + [Matthias Klose] + * Update to gcc-4.1.2. + * Update libjava backport patches, split out boehm-gc-backport patch. + * Enable the cpu-default-generic patch (i386, amd64), backport from 4.2. + * Correct mfctl instruction syntax (hppa), backport from the trunk. + * Backport PR java/9861 (name mangling updates). + * gcc.c (main): Call expandargv (backport from 4.2). + * Apply gcc dwarf2 unwinding patches from the trunk. + * Apply backport for PR 20208 on amd64 i386 powerpc ppc64 sparc s390. + * Apply patches from the 4.1 branch for PR rtl-optimization/28772, + PR middle-end/30313, PR middle-end/30473, PR c++/30536, PR debug/30189, + PR fortran/30478, PR rtl-optimization/30787, PR tree-optimization/30823, + PR rtl-optimization/28173, PR ada/30684, bug in pointer dependency test, + PR rtl-optimization/30931, PR fortran/25392, PR fortran/30400, + PR libgfortran/30910, PR libgfortran/30918, PR fortran/29441, + PR target/30634. + * Update NEWS files. + * Include a backport of the ecj+generics java updates as + gcj-ecj-20070215.tar.bz2. Install it into the gcc-4.1-source package. + * Do not build fastjar anymore from this source. + * debian/control.m4: Move expect-tcl8.3 before dejagnu. + * Work around firefox/icewhatever dropping plugin dependencies on xpcom. + * Refactor naming of libgcj packages in the build files. + * Make libstdc++-doc's build dependencies depending on the source package. + * Do not build packages on architectures, which are already built by gcc-4.2. + + * Merge the gcj generics backport from Ubuntu: + + - Merge the Java bits (eclipse based compiler, 1.5 compatibility, + classpath generics) from the gcc-4.1 Fedora branch. + - Drop all previous patches from the classpath-0.93 merge, keep + the boehm-gc backport (splitted out as a separate patch). + - Add a gcj-ecj-generics.tar.bz2 tarball, containing gcc/java, libjava, + config/unwind_ipinfo.m4, taken from the Fedora branch. + - Drop the libjava-hppa, libjava-plugin-binary, pr29362, pr29805 patches + integrated in the backport. + - Update patches for the merge: reporting, libjava-subdir, i386-biarch, + classpath-tooldoc, pr26885 + - Add libjava-dropped, libjava-install; dropped chunks from the merge. + - Add pr9861-nojava mangling changes, non-java parts for PR 9861. + - Add gcc-expandv, expand `@' parameters on the commandline; backport + from the trunk. + - Disable the m68k-gc patch, needs update for the merge. + - Configure --with-java-home set for 1.5.0. + - Configure with --enable-java-maintainer-mode to build the header + and class files on the fly. + - Add build dependency on ecj-bootstrap, configure --with-ecj-jar. + - Build an empty libgcj-doc package; gjdoc currently cannot handle + generics. + - Apply gcc dwarf2 unwinding patches from the trunk, allowing the Events + testcase to pass. + - Tighten dependencies on shared libraries. + - Use /usr/lib/gcj-4-1-71 as private gcj subdir. + - Bump the libgcj soversion to 71, rename the libgcj7-0 package + to libgcj7-1, rename the libgcj7-awt package to libgcj7-1-awt. + - gij-4.1: Add and provide alternatives for gorbd, grmid, gserialver. + - gcj-4.1: Remove gcjh, gcjh-wrapper, gjnih. + - gcj-4.1: Add and provide alternatives for jar, javah, native2ascii, + tnameserv. + - gcj-4.1: Add dependency on ecj-bootstrap, recommend fastjar, + ecj-bootstrap-gcj. + - Add build dependency on ecj-bootstrap version providing the GCCMain + class. + - libgcj7-1: Recommend libgcj7-1-awt. + - Add build dependency on libmagic-dev. + - Build-depend on gcj-4.1; build our own ecj1 and gjdoc before + starting the build. + - Make ecj1 available when running the testsuite. + - Fix build failure on sparc-linux. + - Fix gjavah compatibility problems (PR cp-tools/3070[67]). + - Fixed driver issue source files (PR driver/30714). + - Add (rudimentary) manual pages for classpath tools. + + [Kevin Brown] + * debian/control.m4, debian/rules.d/binary-ada.mk: provide new packages + containing debugging symbols for Ada libraries: libgnat-4.1-dbg, + libgnatprj4.1-dbg, and libgnatvsn4.1-dbg. Adresses: #401385. + + -- Matthias Klose Sat, 3 Mar 2007 23:12:08 +0100 + +gcc-4.1 (4.1.1ds2-30) experimental; urgency=low + + * Update to SVN 20070106. + * Do not revert the fixes for PR 25878, PR 29138, PR 29408. + * Don't build the packages built by gcc-4.2 source. + * debian/patches/note-gnu-stack.dpatch: Add .note.GNU-stack sections + for gcc's crt files, libffi and boehm-gc. Taken from FC. Closes: #382741. + * Merge from Ubuntu: + - Backport g++ visibility patches from the FC gcc-4_1-branch. + - Update the long-double patches; require glibc-2.4 as a build dependency + on alpha, powerpc, sparc, s390. Bump the shlibs dependencies to + require 4.1.1-21. + - On powerpc-linux configure using --enable-secureplt. Closes: #382748. + - When using the cpu-default-generic patch, build for generic x86-64 + on amd64 and i386 biarch. + - Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + * gij-4.1: Recommends libgcj7-awt instead of suggesting it. Closes: #394917. + * Split the gcc-long-double patch into a code and doc part. + * Set priority of development packages to optional. + * Add support for kfreebsd-amd64 (Aurelian Jarno). Closes: #406015. + + -- Matthias Klose Sat, 6 Jan 2007 10:35:42 +0100 + +gcc-4.1 (4.1.1ds2-22) unstable; urgency=high + + * Enable -pthread for GNU/Hurd (Michael Banck). Closes: #400031. + * Update the m68k-fpcompare patch (Roman Zippel). Closes: #401585. + + -- Matthias Klose Sun, 10 Dec 2006 12:35:06 +0100 + +gcc-4.1 (4.1.1ds2-20) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061115. + - Fix PR tree-optimization/27891, ICE in tree_split_edge. + Closes: #370248, #391657, #394630. + - Fix PR tree-optimization/9814, duplicate of PR tree-optimization/29797. + Closes: #181096. + * Apply the libjava/net backport from the redhat/gcc-4_1-branch. + * Apply proposed patch for PR java/29805. + + [Roman Zippel] + * Build the ObjC and ObjC++ compilers in cross builds. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize + symbolic operands in addresses. + * debian/patches/m68k-bitfield-offset.dpatch: Only use constant offset + for register bitfields (combine expects shifts, but does a rotate). + * debian/patches/m68k-bitfield-offset.dpatch: Update and apply. + + [Daniel Jacobowitz] + * Don't try to use _Unwind_Backtrace on SJLJ targets. + See bug #387875, #388505, GCC PR 29206. + + -- Matthias Klose Wed, 15 Nov 2006 08:59:53 -0800 + +gcc-4.1 (4.1.1ds2-19) unstable; urgency=low + + * Fix typo in arm-pragma-pack.dpatch. + + -- Matthias Klose Sat, 28 Oct 2006 11:04:00 +0200 + +gcc-4.1 (4.1.1ds2-18) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20061028. + * Fix #pragma pack on ARM (Paul Brook). Closes: #394703. + * Revert PR c++/29138, PR c++/29408. Closes: #392559. + * Revert PR c++/25878. Addresses: #387989. + * fastjar: Provide jar. Closes: #395397. + + [Ludovic Brenta] + * debian/control.m4 (libgnatprj-dev): depend on libgnatvsn-dev. + debian/gnatprj.gpr: with gnatvsn.gpr. Closes: #395000. + + -- Matthias Klose Thu, 26 Oct 2006 23:51:10 +0200 + +gcc-4.1 (4.1.1ds2-17) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061020. + - Fix PR debug/26881, ICE in dwarf2out_finish. Closes: #377613. + - Fix PR PR c++/29408, parse error for valid code. Closes: #392327, #393010. + - Fix PR c++/29435, segfault with sizeof and templates. Closes: #393071. + - Fix PR target/29338, segfault with -finline-limit on arm. Closes: 390620. + - Fix 3.4/4.0 backwards compatibility problem in libstdc++. + * Fix PR classpath/29362, taken from the redhat/gcc-4_1-branch. + * Remove the INSTALL directory from the source tarball. Closes: #392974. + * Disable building the static libgcj; non-functional, and cutting + down build times. + * libgcj7-0: Tighten dependency on libgcj-common. + * libgcj7-dev: Install .pc file as libgcj-4.1.pc. + * README.cross: Updated (Hector Oron). Addresses: #380251. + * config-ml.dpatch: Use *-linux-gnu as *_GNU_TYPE. Closes: #394034. + + [Nikita V. Youshchenko] + * Fix typo in the cross build scripts. Closes: #391445. + + [Falk Hueffner] + * alpha-no-ev4-directive.dpatch: Fix kernel build failure. + + [Roman Zippel] + * debian/patches/m68k-align-code.dpatch: Use "move.l %a4,%a4" to advance + within code. + * debian/patches/m68k-align-stack.dpatch: Try to keep the stack word aligned. + * debian/patches/m68k-dwarf3.dpatch: Emit correct dwarf info for cfa offset + and register with -fomit-frame-pointer. + * debian/patches/m68k-fpcompare.dpatch: Bring fp compare early to its + desired form to relieve reload. Closes: #390879. + * debian/patches/m68k-prevent-swap.dpatch: Don't swap operands + during reloads. + * debian/patches/m68k-reg-inc.dpatch: Reinsert REG_INC notes after splitting + an instruction. + * debian/patches/m68k-secondary-addr-reload.dpatch: Add secondary reloads + to allow reload to get byte values into addr regs. Closes: #385327. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize symbolic + operands in addresses. + * debian/patches/m68k-limit_reload.dpatch: Remove, superseded by + m68k-secondary-addr-reload.dpatch. + * debian/patches/m68k-notice-move.dpatch: Apply, was checked in in -16. + * debian/patches/m68k-autoinc.dpatch: Updated, don't attempt to increment + the register, if it's used multiple times in the instruction . + + -- Matthias Klose Sat, 21 Oct 2006 00:25:05 +0200 + +gcc-4.1 (4.1.1ds1-16) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061008. + - Fix PR c++/29226, ICE in make_decl_rtl. Closes: #388263. + * libgcj7-0: Fix package removal. Closes: #390874. + * Configure with --disable-libssp on architectures that don't + support it (alpha, hppa, ia64, m68k, mips, mipsel). + * On hppa, remove build-dependency on dash. + * gij/gcj: Do not install slave links for the non DFSG manpages. + Closes: #390425, #390532. + * libgcj-common: rebuild-gcj-db: Don't do anything, if no classmap + files are found. Closes: #390966. + * Fix PR libstdc++/11953, extended for all linux architectures. + Closes: #391268. + * libffi4-dev: Conflict with libffi. Closes: #387561. + * Backport PR target/27880 to the gcc-4_1-branch. Patch by Steve Ellcey. + Closes: #390693. + * On ia64, don't use _Unwind_GetIPInfo in libjava and libstdc++. + * Add a README.ssp with minimal documentation about stack smashing + protection. Closes: #366094. + * Do not build libgcj-common from the gcc-4.1/gcj-4.1 sources anymore. + + [Roman Zippel] + * debian/patches/m68k-notice-move.dpatch: Don't set cc_status + for fp move without fp register. + + -- Matthias Klose Sun, 8 Oct 2006 02:21:49 +0200 + +gcc-4.1 (4.1.1ds1-15) unstable; urgency=medium + + * Update to SVN 20060927. + - Fix PR debug/29132, exception handling on mips. Closes: #389468, #390042. + - Fix typo in gcc documentation. Closes: #386180. + - Fix PR target/29230, wrong code generation on arm. Closes: #385505. + * libgcj-common: Ignore exit value of gcj-dbtool in rebuild-gcj-db on + arm, m68k, hppa. Adresses: #388505. + * libgcj-common: Replaces java-gcj-compat-dev and java-gcj-compat. + Closes: #389539. + * libgcj-common: /usr/share/gcj/debian_defaults: Define gcj_native_archs. + * Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-27; + remove libjava-str2double.dpatch, pr28661.dpatch. + * Disable ssp on hppa, not supported. + * i386-biarch.dpatch: Avoid warnings about macro redefinitions. + + -- Matthias Klose Fri, 29 Sep 2006 22:32:41 +0200 + +gcc-4.1 (4.1.1ds1-14) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060920. + - Fix PR c++/26957. Closes: #373257, #386910. + - Fix PR rtl-optimization/28243. Closes: #378325. + * Remove patch for PR rtl-optimization/28634, applied upstream. + * Fix FTBFS on GNU/kFreeBSD (fallout from the backport of classpath-0.92). + (Petr Salinger). Closes: #385974. + * Merge from Ubuntu: + - Do not encode the subminor version in the jar files. + - Fix typo for the versioned gcj subdirectory in lib32gcj-0. + - When running the i386 binaries on amd64, adjust the properties + java.home, gnu.classpath.home.url, sun.boot.class.path, + gnu.gcj.precompiled.db.path. + - Configure the 32bit build on amd64 + --with-java-home=/usr/lib32/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre. + - Configure --with-long-double-128 for glibc-2.4 on alpha, powerpc, ppc64, + s390, s390x, sparc, sparc64. + - Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-20. + - Fix PR java/29013, invalid byte code generation. Closes: #386926. + - debian/patches/gcc-pfrs-2.dpatch: Apply a fix for a regression in the + backport of PR 28946 from the trunk (H.J. Lu). + * Backport PR classpath/28661 from the trunk. + * Don't ship the .la files for the java modules. Closes: #386228. + * gcj-4.1: Remove dangling symlink. Closes: #386430. + * gij: Suggest java-gcj-compat, gcj: Suggest java-gcj-compat-dev. + Closes: #361942. + * Fix infinite loop in string-to-double conversion on 64bit targets. + Closes: #348792. + * gij-4.1: Ignore exit value of gcj-dbtool in postinst. Adresses: #388505. + * libgcj-common: Move rebuild-gcj-db from java-gcj-compat into libgcj-common. + * On hppa, install a wrapper around gij-4.1 to ignore unaligned memory + accesses. Works around buildd configurations enabling this check by + default. Addresses: #364819. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.dpatch: Build mlib-tgt-linux.adb instead of + mlib-tgt.adb. Closes: #387826. + * debian/patches/ada-pr15802.dpatch: Backport from the trunk. + Closes: #246384. + * debian/control.m4 (gnat-4.1): do not provide gnat (supplied by + gcc-defaults instead); conflict with gnat-4.2 which will soon be in + unstable. + + [Roman Zippel] + * debian/patches/m68k-dwarf2.dpatch: Recognize stack adjustments also + in the src of an instruction. + * debian/patches/m68k-jumptable.dpatch: Don't force byte offset when + accessing the jumptable, gas can generate the correct offset size instead. + * debian/patches/m68k-peephole.dpatch: Convert some text peepholes to rtl + peepholes, so the correct DWARF2 information can be generated for stack + manipulations (Keep a few peepholes temporarily disabled). + * debian/patches/m68k-peephole-note.dpatch: Don't choke on notes while + reinserting REG_EH_REGION notes. + * debian/patches/m68k-return.dpatch: Don't use single return if fp register + have to be restored. Closes: #386864. + * debian/patches/m68k-sig-unwind.dpatch: Add support for unwinding over + signal frames. + * Fix PR rtl-optimization/27736, backport from the trunk. + * Add java support for m68k. Closes: #312830, #340874, #381022. + + -- Matthias Klose Sun, 24 Sep 2006 19:36:31 +0200 + +gcc-4.1 (4.1.1ds1-13) unstable; urgency=medium + + * Update to SVN 20060901; remove patches applied upstream: + - PR target/24367. + - PR c++/26670. + * Apply proposed patch for PR fortran/28908. + * Fix biarch symlinks in lib64stdc++ for cross builds. + * Fix biarch symlinks in lib32objc on amd64. + + -- Matthias Klose Fri, 1 Sep 2006 00:04:05 +0200 + +gcc-4.1 (4.1.1ds1-12) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060830. + * Add backport of PR other/26208, bump libgcc1 shlibs dependency. + * Add backport of PR c++/26670. Closes: #356548. + * Apply proposed patch for PR target/24367 (s390). + * Add /usr/lib/jni to the libjava dlsearch path. Closes: #364820. + * Build without GFDL licensed docs. Closes: #384036. + - debian/patches/{svn-doc-updates,pr25524-doc,pr26885-doc}.dpatch: + Split out -doc specific patches. + - debian/*.texi, debian/porting.html: Add dummy documentation. + - debian/rules.unpack, debian/rules.patch: Update for non-gfdl build. + - fastjar.texi: Directly define the gcctabopt and gccoptlist macros. + + * Merge from Ubuntu: + - Backport the classpath-0.92, libjava, gcc/java merge from the + redhat/gcc-4_1-branch branch. + - Apply the proposed patch for PR libgcj/28698. + - Change the libgcj/libgij sonames. Rename libgcj7 to libgcj7-0. + - Do not remove the rpath from libjvm.so and libjawt.so. Some + configure scripts rely on being able to link that libraries + directly. + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Closes: #364820. + - Add debugging symbols for more binary packages to libgcj7-dbg. + Closes: #383705. + - libgcj7-dev: Remove conflicts with older libgcjX-dev packages. + - Do not build the libgcj-bc and lib32gcj-bc packages anymore from + the gcj-4.1 source. + + [Roman Zippel] + * debian/patches/m68k-limit_reload.dpatch: Correctly limit reload class. + Closes: #375522. + * debian/patches/m68k-split_shift.dpatch: Use correct predicates for long long + shifts and use more splits. Closes: #381572. + * debian/patches/m68k-prevent-qipush.dpatch: Prevent combine from creating + a byte push on the stack (invalid on m68k). Closes: #385021. + * debian/patches/m68k-autoinc.dpatch: Recognize a few more autoinc possibilities. + * debian/patches/pr25514.dpatch: Backport from the trunk. + * debian/patches/m68k-gc.dpatch: Change STACKBOTTOM to LINUX_STACKBOTTOM + so it works with 2.6 kernels. + * Other m68k bug reports fixed in 4.1.1-11 and 4.1.1-12: + Closes: #378599, #345574, #344041, #323426, #340293. + * Build the stage1 compiler using -g -O2; saves a few hours build time + and apparently is working at the moment. + + -- Matthias Klose Tue, 29 Aug 2006 21:37:28 +0200 + +gcc-4.1 (4.1.1-11) unstable; urgency=low + + * The "Our priority are our users, remove the documentation!" release. + + [Matthias Klose] + * Fix build failure building the hppa->hppa64 cross compiler. + * Update to SVN 20060814. + - Fix directory traversal vulnerability in fastjar. Closes: #368397. + CVE-2006-3619. + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + * Remove patch for PR rtl-optimization/28075, applied upstream. + * Apply proposed patch for PR rtl-optimization/28634, rounding problem with + -fdelayed-branch on hppa/mips. Closes: #381710. + * Fixed at least in 4.1.1-10: boost::date_time build failure. + Closes: #382352. + * Build-depend on make (>= 3.81), add make (>= 3.81) as dependency to + gcc-4.1-source. Closes: #381117. + * Backport of libffi from the trunk; needed for the java backport in + experimental. + * libffi4-dev: Install the libffi_convenience library as libffi_pic.a. + * When building a package without the GFDL'd documentation, don't create + the alternative's slave links for manual pages for the java tools. + * Do not build the -doc packages and derived manual pages licensed under + the GFDL with invariant sections or cover texts. + * Only build the libssp package, if the target libc doesn't provide + ssp support. + * Run the complete testsuite, when building a standalone gcj package. + + [Roman Zippel] + * debian/patches/m68k-fjump.dpatch: + Always use as fjcc pseudo op, we rely heavily on as to generate the + right size for the jump instructions. Closes: #359281. + * debian/patches/m68k-gc.dpatch: + The thread suspend handler has to save all registers. + Reenable MPROTECT_VDB, it should work, otherwise it's probably a kernel bug. + * debian/patches/m68k-save_pic.dpatch: + Correctly save the pic register, when not done by reload(). + (fixes _Unwind_RaiseException and thus exception handling). + * debian/patches/m68k-libffi.dpatch: Add support for closures. + * debian/patches/m68k-bitfield.dpatch: Avoid propagation of mem expression + past a zero_extract lvalue. + * debian/patches/m68k-dwarf.dpatch: Correct the dwarf frame information, + but preserve compatibility. + + [Christian Aichinger] + * Fix building a cross compiler targeted for ia64. Closes: #382627. + + -- Matthias Klose Tue, 15 Aug 2006 00:41:00 +0200 + +gcc-4.1 (4.1.1-10) unstable; urgency=low + + * Update to SVN 20060729. + - Fix PR c++/28225, segfault in type_dependent_expression_p. + Closes: #376148. + * Apply proposed patch for PR rtl-optimization/28075. + Closes: #373820. + * Apply proposed backport and proposed patch for PR rtl-optimization/28221. + Closes: #376084. + * libgcj7-jar: Loosen dependency on gcj-4.1-base. + * Add ssp header files to the private gcc includedir. + * Do not build the Ada packages from the gcc-4.1 source, introducing + a new gnat-4.1 source package. + * Build libgnat on alpha and s390 as well. + * Do not build the gnat-4.1-doc package (GFDL with invariant sections or + cover texts). + * Remove references to the stl-manual package. Closes: #378698. + + -- Matthias Klose Sat, 29 Jul 2006 22:08:59 +0200 + +gcc-4.1 (4.1.1-9) unstable; urgency=low + + * Update to SVN 20060715. + - Fix PR c++/28016, do not emit uninstantiated static data members. + Closes: #373895, #376871. + * Revert the patch to fix PR c++/27227. Closes: #378321. + * multiarch-include.dpatch: Renamed from biarch-include.dpatch; + apply for all architectures. + * Do not build the java compiler in gcc-4.1 package, just include the + options and specs in the gcc driver. + * Remove gnat-4.0 as an alternative build dependency. + * Add a patch to enable -fstack-protector by default for C, C++, ObjC, ObjC++. + The patch is disabled by default. + + -- Matthias Klose Sat, 15 Jul 2006 17:07:29 +0200 + +gcc-4.1 (4.1.1-8) unstable; urgency=medium + + * Update to SVN 20060708. + - Fix typo in gcov documentation. Closes: #375140. + - Fix typo in gccint documentation. Closes: #376412. + - [alpha], Fix -fvisibility-inlines-hidden segfaults on reference to + static method. PR target/27082. Closes: #369642. + + * Fix ppc64 architecture string in debian/multiarch.inc. Closes: #374535. + * Fix conflict, replace and provide libssp0-dev for cross compilers. + Closes: #377012. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. Closes: #376660. + * Backport fix for PR libmudflap/26864 from the trunk. Closes: #26864. + * README.C++: Remove non-existing URL. Closes: #347601. + * gij-4.1: Provide java2-runtime. Closes: #360906. + + * Closed reports reported against gcc-3.0 and fixed in gcc-4.1: + - C++ + + PR libstdc++/13943, call of overloaded `llabs(int)' is ambiguous. + Closes: #228645. + - Java + + Fixed segmentation fault on compiling bad program. Closes: #165635 + * Closed reports reported against gcc-3.3 and fixed in gcc-4.1: + - Stack protector available. Closes: #213994, #233208. + - Better documentation of -finline-limit option. Closes: #296047. + * Closed reports reported against gcc-3.4 and fixed in gcc-4.1: + - General + + Fixed [unit-at-a-time] Using -O2 cannot detect missing return + statement in a function. Closes: #276843. + - C++ + + PR13943, call of overloaded `llabs(int)' is ambiguous. Closes: #228645. + + PR c++/21280, #pragma interface, templates, and "inline function used + but never defined". Closes: #364412. + - Architecture specific: + - m68k + + Segfault building glibc. Closes: #353618. + + ICE when trying to build boost. Closes: #321486. + * Closed reports reported against gcc-4.0 and fixed in gcc-4.1: + - General + + Handling of #pragma GCC visibility for builtin functions. + Closes: #330279. + + gettext interpretation the two conditional strings as one. + Closes: #227193. + + ICE due to if-conversion. Closes: #335078. + + Fix unaligned accesses with __attribute__(packed) and memcpy. + Closes: #355297. + + Fix ICE in expand_expr_real_1, at expr.c. Closes: #369817. + - Ada + + Link error not finding -laddr2line. Closes: #322849. + + ICE on invalid code. Closes: #333564. + - C++ + + libstdc++: bad thousand separator with fr_FR.UTF-8. Closes: #351786. + + The Compiler uses less memory than 4.0. Closes: #336225. + + Fix "fails to compare reverse map iterators". Closes: #362840. + + Fix "fail to generate code for base destructor defined inline with + pragma interface". Closes: #356435. + + Fix ICE in cp_expr_size, at cp/cp-objcp-common.c. Closes: #317455. + + Fix wrong warning: control may reach end of non-void function. + Closes: #319309. + + Fix bogus warning "statement has no effect" with template and + statement-expression. Closes: #336915. + + Fixed segfault on syntax error. Closes: #349087. + + Fix ICE with __builtin_constant_p in template argument. + Closes: #353366. + + Implement DR280 (fixing "no operator!= for const_reverse_iterator"). + Closes: #244894. + - Fortran + + Fix wrong behaviour in unformatted writing. Closes: #369547. + - Java + + Fixed segfault on -fdump-tree-all-all. Closes: #344265. + + Fixed ant code completion in eclipse generating a nullpointer + exception. Closes: #337510. + + Fixed abort in gnu_java_awt_peer_gtk_GtkImage.c. Closes: #343112. + + Fixed assertion failure in gij with rhdb-explain. Closes: #335650. + + Fixed assertion failure when calling JTabbedPane.addTab(null, ...). + Closes: #314704. + + Fixed error when displaying empty window with bound larger than the + displayed content. Closes: #324502. + + Fixed: Exception in JComboBox.removeAllItems(). Closes: #314706. + + Fixed assertian error in gnu_java_awt_peer_gtk_GtkImage.c. + Closes: #333733. + - libmudflap + + PR libmudflap/23170, libmudflap should not use functions marked + obsolescent by POSIX/SUS. Closes: #320398. + - Architecture specific: + - m68k + + FTBFS building tin. Closes: #323016. + + ICE with -g -fomit-frame-pointer. Closes: #331150. + + ICE in instantiate_virtual_regs_lossage. Closes: #333536. + + Wrong code generation with loop unrolling. Closes: #342121. + + ICEs while building gst-ffmpeg. Closes: #343692. + - mips + + Fix gjdoc build failure. Closes: #344986. + + Fix link failure for static libs and object files when xgot + needs to be used. Closes: #274942. + * gnat bug reports fixed since gnat-3.15p: + - GNAT miscounts UTF8 characters in string with -gnaty. Closes: #66175. + - Bug box from "with Text_IO" when compiling optimized. Closes: #243795. + - Nonconforming parameter lists not detected. Closes: #243796. + - Illegal use clause not detected. Closes: #243797. + - Compiler enters infinite loop on illegal program with tagged records. + Closes: #243799. + - Compiler crashes on illegal program (missing discriminant, unconstrained + parent). Closes: #243800. + - Bug box at sinfo.adb:1215 on illegal program. Closes: #243801. + - Bug box at sinfo.adb:1651 on illegal program. Closes: #243802. + - Illegal program not detected (entry families). Closes: #243803. + - Illegal program not detected, RM 10.1.1(14). Closes: #243807. + - Bug box at exp_ch9.adb:7254 on illegal code. Closes: #243812. + - Illegal program not detected, RM 4.1.4(14). Closes: #243816. + - Bug box in Gigi, code=116, on legal program. Closes: #244225. + - Illegal program not detected, 12.7(10) (generic parameter is visible, + shouldn't be). Closes: #244483. + - Illegal program not detected, ambiguous aggregate. Closes: #244496. + - Bug box at sem_ch3.adb:8003. Closes: #244940. + - Bug box in Gigi, code=103, on illegal program. Closes: #244945. + - Legal program rejected, overloaded procedures. Closes: #246188. + - Bug box in Gigi, code=999, on legal program. Closes: #246388. + - Illegal program not detected, RM 10.1.6(3). Closes: #246389. + - Illegal program not detected, RM 3.10.2(24). Closes: #247014. + - Illegal program not detected, RM 3.9(17). Closes: #247015. + - Legal program rejected. Closes: #247016. + - Legal program rejected. Closes: #247021. + - Illegal program not detected, RM 4.7(3). Closes: #247022. + - Illegal program not detected, RM 3.10.2(27). Closes: #247562. + - Legal program rejected, "limited type has no stream attributes". + Closes: #247563. + - Wrong output from legal program. Closes: #247565. + - Compiler enters infinite loop on illegal program. Closes: #247567. + - Illegal program not detected, RM 8.6(31). Closes: #247568. + - Legal program rejected, visible declaration not seen. Closes: #247572. + - Illegal program not detected, RM 8.2(9). Closes: #247573. + - Wrong output from legal program, dereferencing access all T'Class. + Closes: #248171. + - Compiler crashes on illegal program, RM 5.2(6). Closes: #248174. + - Cannot find generic package body, RM 1.1.3(4). Closes: #248677. + - Illegal program not detected, RM 3.4.1(5). Closes: #248679. + - Compiler ignores legal override of abstract subprogram. Closes: #248686. + - Bug box, Assert_Failure at sinfo.adb:2365 on illegal program. + Closes: #251266. + - Ada.Numerics.Generic_Elementary_Functions.Log erroneout with -gnatN. + Closes: #263498. + - Bug box, Assert_Failure at atree.adb:2906 or Gigi abort, code=102 + with -gnat -gnatc. Closes: #267788. + - Bug box in Gigi, code=116, 'Unrestricted_Access of a protected + subprogram. Closes: #269775. + - Stack overflow on illegal program, AI-306. Closes: #276225. + - Illegal program not detected, RM B.1(24). Closes: #276226. + - Wrong code generated with -O -fPIC. Closes: #306833. + - Obsolete: bashism's in debian/rules file. Closes: #370681. + - Supports more debian architectures. Closes: #171477. + + -- Matthias Klose Sat, 8 Jul 2006 16:24:47 +0200 + +gcc-4.1 (4.1.1-7) unstable; urgency=low + + * Prefer gnat-4.1 over gnat-4.0 as a build dependency. + * libssp0: Set priority to standard. + + -- Matthias Klose Sun, 2 Jul 2006 10:22:50 +0000 + +gcc-4.1 (4.1.1-6) unstable; urgency=low + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Matthias Klose] + * libjava: Change the default for enable_hash_synchronization_default + on PA-RISC. Tighten the libgcj7 shlibs version on hppa. + * Update to SVN 20060630. + * Apply proposed patch for PR 26991. + * Don't use the version for the libstdc++ shlibs dependency for the libgcj + shlibs dependency. + * Merge from Ubuntu edgy: + - Fix %g7 usage in TLS, add patch sparc-g7.dpatch, fixes glibc-2.4 build + failure on sparc (Fabio M. Di Nitto). + - Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + - Run the testsuite with -fstack-protector as well. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 1 Jul 2006 01:49:55 +0200 + +gcc-4.1 (4.1.1-5) unstable; urgency=low + + * Fix build error running with dpkg-buildpackage -rsudo. + + -- Matthias Klose Wed, 14 Jun 2006 01:54:13 +0200 + +gcc-4.1 (4.1.1-4) unstable; urgency=low + + * Really do not backout the fix for PR c++/26068. + Closes: #372152, #372559. + * Update fastjar version string to 4.1. + * Disable pascal again. + + -- Matthias Klose Mon, 12 Jun 2006 20:29:57 +0200 + +gcc-4.1 (4.1.1-3) unstable; urgency=low + + * Update to SVN 20060608, do not revert the fix for PR c++/26068. + Closes: #372152, #372559. + * Fix build failures for Pascal, enable Pascal on all architectures. + * Fix another build failure on GNU/kFreeBSD (Aurelien Jarno). + Closes: #370661. + * Fix build fauilure in gcc/p with parallel make. + * Remove cross-configure patch (Kazuhiro Inaoka). Closes: #370649. + * Only build the gcc-4.1-source package, when building from the gcc-4.1 + source. + * Fix upgrade problem from standalone gcj-4.1. + * Fix build error using bison-2.2, build-depend on bison (>= 2.3). + Closes: #372605. + * Backport PR libstdc++/25524 from the trunk, update the biarch-include + patch. mips triarch support can be added more easily. + + -- Matthias Klose Mon, 12 Jun 2006 00:23:45 +0200 + +gcc-4.1 (4.1.1-2) unstable; urgency=low + + * Update to SVN 20060604. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + - Fix PR target/27158, ICE in extract_insn with -maltivec. + Closes: #362307. + * Revert PR c++/26068 to work around PR c++/27884 (Martin Michlmayr). + Closes: #370308. + * Mention Ada in copyright, update copyright file (Ludovic Brenta). + Closes: #366744. + * Fix kbsd-gnu-java.dpatch (Petr Salinger). Closes: #370320. + * Don't include version control files in gcc-4.1-source. + + -- Matthias Klose Sun, 4 Jun 2006 19:13:37 +0000 + +gcc-4.1 (4.1.1-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20060601. + * Reenable the gpc build. + * PR libgcj/26483, libffi patch for IA-64 denorms, taken from trunk. + * Disable Ada for m32r targets. Closes: #367595. + * lib32gfortran1: Do not create empty directory /usr/lib32. Closes: #367999. + * gcc-4.1: Add a conflict to the gcj-4.1 version with a different + gcc_libdir. + * Build gij/gcj for GNU/k*BSD. Closes: #367166. + * Update hurd-changes patch (Michael Banck). Closes: #369690. + * debian/copyright: Add exception for the gpc runtime library. + * Update gpc/gpc-doc package descriptions. + + [Ludovic Brenta] + * patches/ada-libgnatprj.dpatch: add prj-pars.ad[bs] and sfn_scan.ad[bs] + to libgnatprj; remove them from gnatmake. + + -- Matthias Klose Thu, 1 Jun 2006 20:35:54 +0200 + +gcc-4.1 (4.1.0-4) unstable; urgency=low + + [Ludovic Brenta] + * Fix a stupid bug whereby fname.ad{b,s} would be included in both + libgnatvsn-dev and libgnatprj-dev, preventing use of gnatprj.gpr. + Closes: #366733. + + -- Matthias Klose Thu, 11 May 2006 04:34:50 +0200 + +gcc-4.1 (4.1.0-3) unstable; urgency=low + + * Update to SVN 20060507. + * debian/rules.d/binary-java.mk: Use $(lib32) everywhere. Closes: #365388. + * Always configure hppa64-linux-gnu with + --includedir=/usr/hppa64-linux-gnu/include. + * Make libgnatvsn4.1 and libgnatprj4.1 priority optional. Closes: #365900. + * Call autoconf2.13 explicitely in the Ada patches, build-depend on + autoconf2.13. Closes: #365780. + * Fix libgnatprj-dev and libgnatvsn-dev dependencies on their shared + libraries. + * Deduce softfloat and vfp (ARM) configure options (Pjotr Kourzanov). + * Update proposed patch for PR26885 (May 2 version). + * Build the libxxstdc++-dbg packages, when not building the library pacakges. + * Do not include the _pic library in the libxxstdc++-dbg packages. + + -- Matthias Klose Sun, 7 May 2006 15:29:53 +0200 + +gcc-4.1 (4.1.0-2) unstable; urgency=medium + + * Update to SVN 20060428. + * Apply proposed patches for PR26885. + + * Keep libffi doc files in its own directory. Closes: #360466. + * Update ppc64 patches for 4.1 (Andreas Jochens). Closes: #360498. + * Fix PR tree-optimization/26763, wrong-code, taken from the 4.1 branch. + Closes: #356896. CVE-2006-1902. + * hppa-cbranch, hppa-cbranch2 patches: Fix for PR target/26743, + PR target/11254, PR target/10274, backport from trunk (Randolph Chung). + * Let libgccN provide -dcv1 when cross-compiling (Pjotr Kourzanov). + Closes: #363289. + * (Build-)depend on glibc-2.3.6-7. Closes: #360895, #361904. + * Fix a pedantic report about a package description. Add a hint that + we do not like bug reports with locales other than "C". Closes: #361409. + * Enable the libjava interpreter on mips/mipsel. + * gcc-4.1-source: Depend on gcc-4.1-base. + * gnat-4.1: Fix permissions of .ali files. + * Build lib32gcj7 on amd64. + * debian/patches/ada-gnatvsn.dpatch: New. Apply proposed fix for + PR27194. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch: new. Change the + default search path for project files to the one specified + by the Debian Policy for Ada: /usr/share/ada/adainclude. + * debian/patches/ada-symbolic-tracebacks.dpatch: new. Enable support for + symbolic tracebacks in exceptions. + * debian/patches/ada-missing-lib.dpatch: remove, superseded by the above. + * debian/patches/ada-link-lib.dpatch: changed. + - Instead of building libada as a target library only, build it as + both a host and, if different, target library. + - Build the GNAT tools in their top-level directory; do not use + recursive makefiles. + - Link the GNAT tools dynamically against libgnat. + - Apply proposed fix for PR27300. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatvsn.dpatch: new. + - Introduce a new shared library named libgnatvsn, containing + common components of GNAT under the GNAT-Modified GPL, for + use in GNAT tools, ASIS, GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatprj.dpatch: new. + - Introduce a new shared library named libgnatprj, containing the + GNAT Project Manager, i.e. the parts of GNAT that parses project + files (*.gpr). Licensed under pure GPL; for use in GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-acats.dpatch: new. + - When running the ACATS, look for the gnat tools in their new + directory (build/gnattools), and for the shared libraries in + build/gcc/ada/rts, build/libgnatvsn and build/libgnatprj. + * debian/gnatvsn.gpr, debian/gnatprj.gpr: new. + * debian/rules.d/binary-ada.mk, debian/control.m4: new binary packages: + libgnatvsn-dev, libgnatvsn4.1, libgnatprj-dev, libgnatprj4.1. Place + the *.gpr files in their respective -dev packages. + + -- Matthias Klose Sat, 29 Apr 2006 00:32:09 +0200 + +gcc-4.1 (4.1.0-1) unstable; urgency=low + + * libstdc++CXX-BV-dev.preinst: Remove (handling of c++ include dir for 4.0). + * libgcj-common: Move removal of docdir from preinst into postinst. + * libgcj7: Move removal of docdir from preinst into postinst. + * Drop alternative build dependency on gnat-3.4, not built anymore. + * Fix PR libgcj/26103, wrong exception thrown (4.1 branch). + * debian/patches/libjava-stacktrace.dpatch: Add support to print file names + and line numbers in stacktraces. + * Add debugging symbols for libgcjawt and lib-gnu-java-awt-peer-gtk + in the libgcj7-dbg and lib32gcj7-dbg packages. + * Remove dependency of the libgcj-dbg packages on the libgcj-dev packages, + add recommendations on binutils and libgcj-dev. Mention the requirement + of binutils for the stacktraces. + * Fix upgrade from version 4.0.2-9, loosing the Debian changelog. + Closes: #355439. + * gij/gcj: Install one alternative for each command, do not use slave + links for rmiregistry, javah, rmic. Ubuntu #26781. Closes: #342557. + * Fix for PR tree-optimization/26587, taken from the 4.1 branch. + * Fix PR libstdc++/26526 (link failure when _GLIBCXX_DEBUG is defined). + * Configure with --enable-clocale=gnu, even if not building C++ packages. + * Remove runtime path from biarch libraries as well. + * PR middle-end/26557 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #349083. + * PR tree-optimization/26672 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #356231. + * PR middle-end/26004 (rejects-vaild-code, regression), taken from + the gcc-4_1-branch. + * When building as standalone gcj, build libgcc4 (hppa only) and fastjar. + * Configure --with-cpu=v8 on sparc. + * debian/patches/libjava-hppa.dpatch: pa/pa32-linux.h + (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O is defined. + (John David Anglin). Closes: #353346. + * Point to the 4.1 version of README.Bugs (closes: #356230). + * Disable the libmudflap testsuite on alpha (getting killed). + + -- Matthias Klose Sat, 18 Mar 2006 23:00:39 +0100 + +gcc-4.1 (4.1.0-0) experimental; urgency=low + + * GCC 4.1.0 final release. + * Build the packages for the Java language from a separate source. + * Update NEWS.html, NEWS.gcc. + * libgcj-doc: Auto generated API documentation for libgcj7, classpath + example programs. + * Add gjdoc to Build-Depends-Indep. + * On amd64, build-depend on libc6-dev-i386 instead of ia32-libs-dev. + * Internal ssp headers now installed in the gcc libdir. + * Do not build gcj-4.1-base when building the gcc-4.1 packages. + * When building as gcj-4.1, use the tarball from the gcc-4.1-source + package. + + [Ludovic Brenta] + * Allow one to enable and disable NLS and bootstrapping from the environment. + - Adding "nls" to WITHOUT_LANG disables NLS support. + - If WITH_BOOTSTRAP is set, debian/rules2 calls configure + --enable-bootstrap=$(WITH_BOOTSTRAP) and just "make". If + WITH_BOOTSTRAP is unset, it calls configure without a bootstrapping + option and calls "make profiledbootstrap" or "make bootstrap-lean" + depending on the target CPU. + Currently overwritten to default to "bootstrap". + + -- Matthias Klose Thu, 2 Mar 2006 00:03:45 +0100 + +gcc-4.1 (4.1ds9-0exp9) experimental; urgency=low + + * Update to GCC 4.1.0 release candidate 1 (gcc-4.1.0-20060219 tarball). + * Update gcc-version patch for gcc-4.1. + * libgccN, libstdc++N*: Fix upgrade of /usr/share/doc symlinks. + * libjava awt & swing update, taken from trunk 2006-02-16. + * libgcj7-dev: Suggest libgcj-doc, built from a separate source package. + * Shorten build-dependency line (work around buildd problems + on arm* and mips*). + * New patch gcc-ice-hack (saving the preprocessed source on an ICE), + taken from Fedora. + + -- Matthias Klose Mon, 20 Feb 2006 10:07:23 +0100 + +gcc-4.1 (4.1ds8-0exp8) experimental; urgency=low + + * Update to SVN 20060212, taken from the 4.1 release branch. + * libgccN: Fix upgrade of /usr/share/doc/libgccN symlink. + + -- Matthias Klose Sun, 12 Feb 2006 19:48:31 +0000 + +gcc-4.1 (4.1ds7-0exp7) experimental; urgency=low + + * Update to SVN 20060127, taken from the 4.1 release branch. + - On hppa, bump the libgcc soversion to 4. + * Add an option not to depend on the system -base package for cross compiler + (Ian Wienand). Closes: #347484. + * Remove workaround increasing the stack size limit for some architectures, + not needed anymore on ia64. + * On amd64, build-depend on libc6-dev-i386, depend on libc6-i386, where + available. + * libstdc++6: Properly upgrade the doc directory. Closes: #346171. + * libstdc++6: Add a conflict to scim (<< 1.4.2-1). Closes: #343313. + * Set default 32bit ix86 architecture to i486. + + -- Matthias Klose Fri, 27 Jan 2006 22:23:22 +0100 + +gcc-4.1 (4.1ds6-0ubuntu6) experimental; urgency=low + + * Update to SVN 20060107, taken from the 4.1 release branch. + - Remove fix for PR ada/22533, fixed by patch for PR c++/23171. + * Remove binary packages from the control file, which aren't built + yet on any architecture. + * gcc-hppa64: Use /usr/hppa64-linux-gnu/include as location for the glibc + headers, tighten glibc (build-)dependency. + * libffi [arm]: Add support for closures, libjava [arm]: enable the gij + interpreter (Phil Blundell). Addresses: #337263. + * For the gcj standalone build, include cc1 into the gcj-4.1 package, + needed for linking java programs compiled to native code. + + -- Matthias Klose Sat, 7 Jan 2006 03:36:33 +0100 + +gcc-4.1 (4.1ds4-0exp4) experimental; urgency=low + + * Update to SVN 20051210, taken from the 4.1 release branch. + * Prepare to build the java packages from it's own source (merged + from Ubuntu). + - Build the java packages from the gcc-4.1 source, as long as packages + are prepared for experimental. + - When built as gcj, run only the libjava testsuite, don't build the + libstdc++ debug packages, don't package the gcc source. + - Loosen package dependencies, when java packages are built from + separate sources. + - Fix gcj hppa build, when java packages are built from separate sources. + - gij-4.1: Install test-summary, when doing separate builds. + - Allow java packages be installed independent from other packages built + from the source package. + - Rename libgcj7-common to libgcj7-jar. + - Introduce a gcj-4.1-base package to completely separate the two and not + duplicate the changelog in each gcj/gij package. + * Java related changes: + - libjava-xml-transform: Update from classpath trunk, needed for + eclipse (Michael Koch), applied upstream. + - Fix java wrapper scripts to point to 4.1 (closes: #341710). + - Reenable java on mips and mipsel. + - Fix libgcj6 dependency. Ubuntu #19935. + - Add libxt-dev as a java build dependency. autoconf explicitely checks + for X11/Intrinsic.h. + * Ada related changes: + - Apply proposed fix for PR ada/22533, reenable ada on alpha, powerpc, + mips, mipsel and s390. + - Add Ada support for GNU/kFreeBSD (Aurelien Jarno). Closes: #341356. + - Remove ada bootstrap workaround for alpha. + * Build a separate gcc-4.1-source package (Bastian Blank). Closes: #333922. + * Remove obsolete patch: libstdc++-automake. + * Remove patch integrated upstream: libffi-mips. + * Fix the installation of the hppa64 compiler in snapshot builds. + * Rename libgfortran0* to libgfortran1* (upstream soversion change). + * Add a dependency on libc-dev for all compilers / -dev packages except + gcc (which can be used for kernel builds without libc-dev). + * libffi4-dev: Fix package description. + * On amd64, install 32bit libraries into /emul/ia32-linux/usr/lib. + Addresses: #341147. + * Fix installation of biarch libstdc++ headers on amd64. + * Configure --with-tune=i686 on ix86 architectures (on Ubuntu with + -mtune=pentium4). Remove the cpu-default-* patches. + * debian/control.m4: Fix libxxgcc package names. + * Update the build infrastructure to build cross compilers + (Nikita V. Youshchenko). + * Tighten binutils (build-)dependency. Closes: #342484. + * Symlink more doc directories. + * debian/control.m4: Explicitely set Architecture for biarch packages. + + -- Matthias Klose Sat, 10 Dec 2005 16:56:45 +0100 + +gcc-4.1 (4.1ds1-0ubuntu1) UNRELEASED; urgency=low + + * Build Java packages only. + * Update to SVN 20051121, taken from the 4.1 release branch. + - Remove libjava-saxdriver-fix patch, applied upstream. + - Remove ada-gnat-version patch, applied upstream. + * Fix FTBFS in biarch builds on 32bit kernels. + * Update libstdc++-doc doc-base file (closes: #339046). + * Remove obsolete patch: gcc-alpha-ada_fix. + * Fix installation of biarch libstdc++ headers (Ubuntu #19655). + * Fix sparc and s390 biarch patches to build the 64bit libffi. + * Work around biarch build failure in libjava/classpath/native/jni/midi-alsa. + * Install spe.h header on powerpc. + * Add libasound build dependencies. + * libgcj: Fix installation of libgjsmalsa library. + * Remove patches not used anymore: libjava-no-rpath, i386-config-ml-nomf, + libobjc, multiarch-include, disable-biarch-check-mf, gpc-profiled, + gpc-no-gpidump, libgpc-shared, acats-expect. + * Fix references to manuals in gnat(1). Ubuntu #19772. + * Remove build dependency on xlibs-dev, add libxtst-dev. + * Do not configure with --disable-werror. + * Merge *-config-ml patches into one config-ml patch, configure the biarch + libs in debian/rules.defs. + * debian/gcj-wrapper: Accept -Xss. + * Do not build biarch java on Debian (missing biarch libasound). + * Do not build the java packages from this source package, avoiding + dependencies on X. + + -- Matthias Klose Mon, 21 Nov 2005 20:29:43 +0100 + +gcc-4.1 (4.1ds0-0exp0) experimental; urgency=low + + * Configure libstdc++ using the default allocator. + * Update to 20051112, taken from the svn trunk. + + -- Matthias Klose Sat, 12 Nov 2005 23:47:01 +0100 + +gcc-4.1 (4.1ds0-0ubuntu0) breezy; urgency=low + + * UNRELEASED + * First snapshot of gcc-4.1 (CVS 20051019). + - adds SSP support (closes: #213994, #233208). + * Remove patches applied upstream/not needed anymore. + * Update patches for 4.1: link-libs, gcc-textdomain, libjava-dlsearch-path, + rename-info-files, reporting, classmap-path, i386-biarch, sparc-biarch, + libjava-biarch-awt, ada-gcc-name. + * Disable patches: + - 323016, m68k, necessary for 4.1? + * debian/copyright: Update for 4.1. + * debian/control, debian/control.m4, debian/rules.defs, debian/rules.conf: + Update for 4.1, add support for Obj-C++ and SSP. + * Fix generation of Ada docs in info format. + * Set Ada library version to 4.1. + * Drop gnat-3.3 as an alternative build dependency. + * Use fortran instead of f95 for the build files. + * Update build support for awt peer libs. + * Add packaging support for SSP library. + * Add packaging support for Obj-C++. + * Run the testsuite for -march=i686 on i386 and amd64 as well. + * Fix generation of Pascal docs in html format. + * Update config-ml patches to build libssp biarch. + * Disable libssp for hppa64 build. + * libgcj7-dev: Install jni_md.h. + * Disable gnat for powerpc, currently fails to build. + * Add biarch runtime lib packages for ssp, mudflap, ffi. + * Do not explicitely configure with --enable-java-gc=boehm, which is the + default. + * libjava-saxdriver-fix: Fix a problem in the Aelfred2 SAX parser. + * libstdc++6-4.0-dev: Depend on the libc-dev package. Ubuntu #18885. + * Build-depend on expect-tcl8.3 on all architectures. + * Build-depend on lib32z1-dev on amd64 and ppc64, drop build dependency on + amd64-libs. + * Disable ada on alpha mips mipsel powerpc s390, currently broken. + + -- Matthias Klose Wed, 19 Oct 2005 11:02:31 +0200 + +gcc-4.0 (4.0.2-3) unstable; urgency=low + + * Update to CVS 20051015, taken from the gcc-4_0-branch. + - gcc man page fixes (closes: #327254, #330099). + - PR java/19870, PR java/20338, PR java/21844, PR java/21540: + Remove Debian patches. + - Applied libjava-echo-fix patch. + - Fix PR target/24284, ICE (Segmentation fault) on sparc-linux. + Closes: #329840. + - Fix PR c++/23797, ICE on typename outside template. Closes: #325545. + - Fix PR c++/22551, ICE in tree_low_cst. Closes: #318932. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.2-3 (new symbol). + * Update generated Ada files. + * Fix logic to disable mudflap and Obj-C++ via the environment. + * Remove f77 build bits. + * gij-4.0: Remove /var/lib/gcj-4.0/classmap.db on purge (closes: #330800). + * Let gcj-4.0 depend on libgcj6-dev, instead of recommending it. This is + not necessary for byte-code compilations, but for compilations to native + code. For compilations to byte-code, use a better compiler like ecj + for now (found in the ecj-bootstrap package). + * Disable biarch setup in cross compilers (Josh Triplett). Closes: #333952. + * Fix with_libnof logic for cross-compilations (Josh Triplett). + Closes: #333951. + * Depend on binutils (>= 2.16.1cvs20050902-1) on the alpha architecture. + Closes: #333954. + * On i386, build-depend on libc6-dev-amd64. Closes: #329108. + * (Build-)depend on glibc 2.3.5-5. + + -- Matthias Klose Sun, 2 Oct 2005 14:25:54 +0200 + +gcc-4.0 (4.0.2-2) unstable; urgency=low + + * Update to CVS 20051001, taken from the gcc-4_0-branch. Includes the + changes between 4.0.2 RC3 and the final 4.0.2 release, missing from + the upstream tarball. Remove patches applied upstream (gcc-c-decl, + pr23182, pr23043, pr23367, pr23891, pr21418, pr24018). + * On ix86 architectures run the testsuite for -march=i686 as well. + * Build libffi on the Hurd (closes: #328705). + * Add big-endian arm (armeb) support (Lennert Buytenhek). Closes: #330730. + * Update libjava xml to classpath CVS HEAD 20050930 (Michael Koch). + * Reapply patch to make -mieee the default on alpha-linux. Closes: #330826. + * Add workaround not to make libmudflap _start/_end not small data on + mips/mipsel, taken from CVS HEAD. + * Don't build the nof libraries on powerpc. + * Number crunching time on m68k, reenable gfortran on m68k-linux-gnu. + + -- Matthias Klose Sat, 1 Oct 2005 15:42:10 +0200 + +gcc-4.0 (4.0.2-1) unstable; urgency=low + + * GCC 4.0.2 release. + * lib64stdc++6: Set priority to optional. + * Fix bug in StreamSerializer, seen with eclipse-3.1 (Ubuntu 12744). + Backport from CVS HEAD, Michael Koch. + * Apply java patches, proposed for the 4.0 branch: PR java/24018, + PR libgcj/23182, PR java/19870, PR java/21844, PR libgcj/23367, + PR java/20338. + * Update the expect/pty test to actually call expect directly, rather + than test for the existence of PTYs, since a working expect is what + we really care about, not random device files (Adam Conrad). + Closes: #329715. + * Add build dependencies on lib64z1-dev. + * gcc-c-decl.dpatch: Fix C global decl handling regression in 4.0.2 from + 4.0.1 + + -- Matthias Klose Thu, 29 Sep 2005 19:50:08 +0200 + +gcc-4.0 (4.0.1-9) unstable; urgency=low + + * Update to CVS 20050922, taken from the gcc-4_0-branch (4.0.2 RC3). + * Apply patches: + - Fix PR java/21418: Order of source files matters when compiling, + backported from mainline. + - Fix for PR 23043, backported form mainline. + - Proposed patch for #323016 (m68k only). Patch by Roman Zippel. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.1-9 (new symbol). + * Fail the build early, if the system doesn't have any pty devices + created in /dev. Needed for running the testsuite. + * Update hurd changes again (closes: #328973). + + -- Matthias Klose Thu, 22 Sep 2005 07:28:18 +0200 + +gcc-4.0 (4.0.1-8) unstable; urgency=medium + + * Update to CVS 20050917, taken from the gcc-4_0-branch. + - Fix FTBFS for boost, introduced in 4.0.1-7 (closes: #328684). + * Fix PR java/23891, eclipse bootstrap. + * Set priority of gcc-4.0-hppa64 package to standard. + * Bump standards version to 3.6.2. + * Fix java wrapper script, mishandles command line options with arguments. + Patch from Olly Betts. Closes: #296456. + * Bump epoch of the lib32gcc1 package to the same epoch as for the the + libgcc1 and lib64gcc1 packages. + * Fix some lintian warnings. + * Build libffi on the Hurd (closes: #328705). + * For biarch builds, disable the testsuite for the non-default architecture + for runtime libraries, which are not built by default (libjava). + * Add gsfonts-x11 to Build-Depends-Indep to avoid warnings from doxygen. + * Install Ada .ali files read-only. + + -- Matthias Klose Sat, 17 Sep 2005 10:35:23 +0200 + +gcc-4.0 (4.0.1-7) unstable; urgency=low + + * Update to CVS 20050913, taken from the gcc-4_0-branch. + - Fix PR c++/19004, ICE in uses_template_parms (closes: #284777). + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR libstdc++/23417, make bits/stl_{list,tree}.h -Weffc++ clean. + Closes: ##322170. + * Install 'altivec.h' on ppc64 (closes: #323945). + * Install locale data with the versioned package name (closes: #321591). + * Fix fastjar build without building libjava. + * On hppa, don't build using gcc-3.3 when ada is disabled. + * On m68k, don't build the stage1 compiler using -O. + + * Ludovic Brenta + - Allow the choice whether or not to build with NLS. + - Fix a typo whereby libffi was always enabled on i386. + + -- Matthias Klose Tue, 13 Sep 2005 23:23:11 +0200 + +gcc-4.0 (4.0.1-6) unstable; urgency=low + + * Update to CVS 20050821, taken from the gcc-4_0-branch. + - debian/patches/pr21562.dpatch: Removed, applied upstream. + - debian/patches/libjava-awt-name.dpatch: Updated. + - debian/patches/classpath-20050618.dpatch: Updated. + * Use all available CPU's for the check target, unless USE_NJOBS == no. + * debian/patches/biarch-include.dpatch: Include + /usr/local/include/-linux-gnu before including /usr/local/include. + * Fix biarch system include directories for the non-default architecture. + * Prefer gnat-4.0 over gnat-3.4 over gnat-3.3 as a build-dependency. + + -- Matthias Klose Thu, 18 Aug 2005 18:36:23 +0200 + +gcc-4.0 (4.0.1-5) unstable; urgency=low + + * Update to CVS 20050816, taken from the gcc-4_0-branch. + - Fix PR middle-end/23369, wrong code generation for funcptr comparison + on hppa. Closes: #321785. + - Fix PR fortran/23368 ICE with NAG routines (closes: #322912). + * Build-depend on libcairo2-dev (they say, that's the final package name ...) + * libgcj: Search /usr/lib/gcj-4.0 for dlopened libraries, place a copy + of the .la files in the libgcj6 package into this directory. + Closes: #322576. + * Tighten the dependencies between the compiler packages to the same + version and release. Use some substitution variables for control file + generation. + * Remove build dependencies for gpc. + * Don't use '/emul/ia32-linux' on ppc64 (closes: #322890). + * Synchronize with Ubuntu. + + -- Matthias Klose Tue, 16 Aug 2005 22:45:47 +0200 + +gcc-4.0 (4.0.1-4ubuntu1) breezy; urgency=low + + * Jeff Bailey + + Enable i386 biarch using biarch glibc (not yet enabled for unstable). + - debian/rules.d/binary-libgcc.mk: Make i386 lib64gcc1 depend on + libc6-amd64 + - debian/control.m4: Suggest libc6-amd64 rather than amd64-libs. + - debian/rules.conf: Build-Dep on libc6-dev-amd64 [i386] + Build-Dep on binutils >= 2.16.1-2ubuntu3 + - debian/rules2: Enable biarch build in Ubuntu. + + * Matthias Klose + + - Add shlibs file and dependency information for the lib32gcc1 package. + - debian/patches/gcc-textdomain.dpatch: Update (closes: #321591). + - Set priority of gcc-4.0-base and libstdc++6 packages to `required'. + Closes: #321016. + - libffi-hppa.dpatch: Remove, applied upstream. + + -- Matthias Klose Mon, 8 Aug 2005 19:39:02 +0200 + +gcc-4.0 (4.0.1-4) unstable; urgency=low + + * Enable the biarch compiler for powerpc (closes: #268023). + * Update to CVS 20050806, taken from the gcc-4_0-branch. + * Build depend on libcairo0.6.0-dev (closes: #321540). + * Fix Ada build on the hurd (closes: #321350). + * Update libffi for mips (Thiemo Seufer). Closes: #321100. + * Fix segfault on 64bit archs in the AWT Gtk peer library (Dan Frazier). + Closes: #320915. + * Add libXXgcc1 build dependencies for biarch builds. + + -- Matthias Klose Sun, 7 Aug 2005 07:01:59 +0000 + +gcc-4.0 (4.0.1-3) unstable; urgency=medium + + * Update to CVS 20050725, taken from the gcc-4_0-branch. + - Fix ICE with -O and -mno-ieee-fp/-ffast-math (closes: #319087). + * Synchronize with Ubuntu. + * Fix applying hurd specific patches for the hurd build (closes: #318443). + * Do not build-depend on libmpfr-dev on architectures, where fortran + is not built. + * Apply biarch include patch on ppc64 as well (closes: #318603). + * Correct libstdc++-dev package description (closes: #319082). + * debian/rules.defs: Replace DEB_TARGET_GNU_CPU with DEB_TARGET_ARCH_CPU. + * gcc-4.0-hppa64: Rename hppa64-linux-gcc to hppa64-linux-gnu-gcc. + Closes: #319818. + + -- Matthias Klose Mon, 25 Jul 2005 10:43:06 +0200 + +gcc-4.0 (4.0.1-2ubuntu3) breezy; urgency=low + + * Update to CVS 20050720, taken from the gcc-4_0-branch. + - Fix PR22278, volatile issues, seen when building xorg. + * Build against new libcairo1-dev (0.5.2). + + -- Matthias Klose Wed, 20 Jul 2005 12:29:50 +0200 + +gcc-4.0 (4.0.1-2ubuntu2) breezy; urgency=low + + * Acknowledge that i386 biarch builds still need to be fixed for glibc-2.3.5. + + -- Matthias Klose Tue, 19 Jul 2005 08:29:30 +0000 + +gcc-4.0 (4.0.1-2ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + * Update to CVS 20050718, taken from the gcc-4_0-branch. + - Fix PR c++/22132 (closes: #318488), upcasting a const class pointer + to struct the class derives from generates wrong code. + * Build biarch runtime libraries for Fortran and ObjC. + * Apply proposed patch for PR22309 (crash with mt_allocator if libstdc++ + is dlclosed). Closes: #293466. + + -- Matthias Klose Mon, 18 Jul 2005 17:10:18 +0200 + +gcc-4.0 (4.0.1-2) unstable; urgency=low + + * Don't apply the patch to make -mieee the default on alpha-linux-gnu. + Causes the bootstrap to fail on alpha-linux-gnu. + + -- Matthias Klose Tue, 12 Jul 2005 00:14:12 +0200 + +gcc-4.0 (4.0.1-1) unstable; urgency=high + + * GCC 4.0.1 final release. See /usr/share/doc/gcc-4.0/NEWS.{gcc,html}. + * Build fastjar on mips/mipsel, fix fastjar build without building java. + * Disable the comparision check on unstable/ia64. adaint.o differs, + currently cannot be reproduced with glibc-2.3.5 and binutils-2.16.1. + * libffi/hppa: Fix handling of 3 and 5-7 byte struct returns. + * amd64: Fix libgcc symlinks to point to /usr/lib32, instead of /lib32. + * On powerpc, don't build with -j >1, apparently doesn't succeeds + on the Debian buildd. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (Tyson Whitehead). + * Disable multiarch-includes; redo biarch-includes to include the paths + for the non-default biarch, when called with -m32/-m64. + * Move new java headers from libstdc++-dev to libgcj-dev, add replaces + line. + * Update classpath patch to work with cairo-0.5.1. Patch provided by + Michael Koch. + * Further classpath updates for gnu.xml and javax.swing.text.html. + Patch provided by Michael Koch. + * Require binutils (>= 2.16.1) as a build dependency and a dependency. + * On i386, require amd64-libs-dev (>= 1.2). + * Update debian/NEWS.{html,gcc}. + + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.3 and fixed in gcc-3.4: + - General: + + PR rtl-optimization/2960: Duplicate loop conditions even with -Os + Closes: #94701. + + PR optimization/3995: i386 optimisation: joining tests. + Closes: #105309. + + PR rtl-optimization/11635: Unnecessary store onto stack, more + curefully expand union cast (closes: #202016). + + PR target/7618: vararg disallowed in virtual function. Closes: #205404. + + Large array problem on 64 bit platforms (closes: #209152). + + Mark more strings as translatable (closes: #227129). + + PR gcc/14711: ICE when compiling a huge source file Closes: #234711. + + Better code generation for if(!p) return NULL;return p; + Closes: #242318. + + PR rtl-optimization/16152: Perl ftbfs on {ia64,arm,m68k}-linux. + Closes: #255801. + + ICE (segfault) while compiling Linux 2.6.9 (closes: #277206). + + Link error building memtest (closes: #281445). + - Ada: + + PR ada/12450: Constraint error for valid input (closes: #210844). + + PR ada/13620: miscompilation of array initializer with + -O3 -fprofile-arcs. Closes: #226244. + - C: + + PR c/6897: Code produced with -fPIC reserves EBX, but compiles + bad __asm__ anyway (closes: #73065). + + PR c/9209: On i386, gcc-3.0 allows $ in indentifiers but not the asm. + Closes: #121282. + + PR c/11943: Accepts invalid declaration "int x[2, 3];" in C99 mode. + Closes: #177303. + + PR c/11942: restrict keyword broken in C99 mode. Closes: #187091. + + PR other/11370: -Wunreachable-code gives false complaints. + Closes: #196600. + + PR c/11369: Too relaxed checking with -Wstrict-prototypes. + Closes: #197504. + + PR c/11445: False positive warning with -Wunreachable-code. + Closes: #200140. + + PR c/11459: -stdc=c90 -pedantic warns about C90's non long-long + support when in C99 mode. Closes: #200392. + + PR c/456: Handling of constant expressions. Closes: #225935. + + ICE on invalid #define with -traditional (closes: #242916). + + No warning when initializing a variable with itself, new option + -Winit-self (closes: #293957). + - C++: + + C++ parse error (closes: #42946). + + PR libstdc++/9073: Replacement for __STL_ASSERTIONS (libstdc++v3 + debug mode). Closes: #128993. + + Parse errors in nested constructor calls (closes: #138561). + + PR optimization/1823: -ftrapv aborts with pointer difference due to + division optimization. Closes: #169862. + + ICE on invalid code (closes: #176101). + + PR c++/10199: ICE handling method parametrized by template. + Closes: #185604. + + High memory usage building packages OpenOffice.org and MythTV. + Closes: #194345, #194513. + + Improved documentation of std::lower_bound (closes: #196380). + + ICE in regenerate_decl_from_template (closes: #197674). + + PR c++/11444: Function fails to propagate up class tree + (template-related). Closes: #198042. + + ICE when using namespaced typedef of primitive type as struct. + Closes: #198261. + + Bug using streambuf / iostream to read from a named pipe. + Closes: #216105. + + PR c++/11437: ICE in lookup_name_real (closes: #200011). + + Add large file support (LFS) in libstdc++ (closes: #220000). + + PR c++/13621: ICE compiling a statement expression returning type + string (closes: #224413). + + g++ doesn't find inherited inner class after template instantiation. + Closes: #227518. + + PR libstdc++/13928: Add whatis info in man pages generated by doxygen. + Closes: #229642. + + Missing symbol _M_setstate in libstdc++ (closes: #232709). + + Unable to parse declaration of inline constructor explicit + specialization (closes: #234709). + + ICE (segfault) on invalid C++ code (closes: #246031). + + ICE in lookup_tempate_function (closes: #262441). + + Undefined symbols in libstdc++, when using specials char_traits. + Closes: #266110. + + PR libstdc++/16011: Outputting numbers with ostream in the locale fr_BE + causes infinite recursion (closes: #270795). + + ICE in tree_low_cst (closes: #276291). + + ICE in in expand_call (closes: #283503). + + typeof operator is misparsed in a template function (closes: #288555). + + ICE in tree_low_cs (closes: #291374). + + Improve uninformative error messages (closes: #292961, #293076). + + ICE on array initialization (closes: #294560). + + Failure to build xine-lib with -finline-functions (closes: #306854). + - Java: + + Fix error finding files in subdirectories (closes: #195480). + + Implement java.text.CollationElementIterator lacks getOffset(). + Closes: #259789. + - Treelang: + + Pointer truncation on 64bit architectures (closes: #308367). + - Architecture specific: + - alpha + + PR debug/10695: ICE on alpha while building agistudio. + Closes: #192568. + + ICE when building fceu (closes: #228018, #252764). + - amd64 + + Miscompilation of Objective-C code (closes: #250174). + + g++ hangs compiling k3d on amd64 (closes: #285364). + - arm + + PR target/19008: gcc -O3 -fPIC produces wrong code via auto inlining. + Closes: #285238. + - i386 + + PR target/4106: i386 -fPIC asm ebx clobber no error. + Closes: #153472. + + PR target/10984: x86/sse2 ICEs on vector intrinsics. Closes: #166940. + + Wrong code generation on at least ix86 (closes: #275655). + - m68k + + PR target/9201: ICE compiling octave-2.1 (closes: #175478). + + ICE in verify_initial_elim_offsets (closes: #204407, #257012). + + g77 generates invalid assembly code (closes: #225621). + + ICE in verify_local_live_at_start (closes #245584). + - powerpc + + PR optimization/12828: -floop-optimize is unstable on PowerPC (float + to int conversion problem). Closes: #218219. + + PR target/13619: ICE building altivec code in ffmpeg. + Closes: #226148. + + PR target/20046: Miscompilation of bind 9.3.0. Closes: #292958. + - sparc + + ICE (segfault) while building atlas3 on sparc32 (closes: #249108). + + Wrong optimization on sparc32 when building linux kernel. + Closes: #254626. + + * Closed reports reported against gcc-3.3 or gcc-3.4 and fixed in gcc-4.0: + - General: + + PR rtl-optimization/6901: Optimizer improvement (removing unused + local variables). Closes: #67206. + + PR middle-end/179: Failure to detect use of unitialized variable + with -O -Wall. Closes: #117765. + + ICE building glibc's nptl on amd64 (closes: #260710, #307993). + + PR middle-end/17827: ICE in make_decl_rtl. Closes: #270854. + + PR middle-end/21709: ICE on compile-time complex NaN. Closes: #305344. + - Ada: + + PR ada/10889: Convention Fortran matrices mishandled in generics. + Closes: #192135. + + PR ada/13897: Implement tasking on powerpc. Closes: #225346. + - C: + + PR c/13072: Bogus warning with VLA in switch. Closes: #218803. + + PR c/13519: typeof(nonconst+const) is const. Closes: #208981. + + PR c/12867: Incorrect warning message (void format, should be void* + format). Closes: #217360. + + PR c/16066: PR 16066] i386 loop strength reduction bug. + Closes: #254659. + - C++: + + PR c++/13518: -Wnon-virtual-dtor doesn't always work. Closes: #212260. + + PR translation/16025: ICE with unsupported locale(closes: #242158). + + PR c++/15125: -Wformat doesn't warn for different types in fprintf. + Closes: #243507. + + PR c++/15214: Warn only if the dtor is non-private or the class has + friends. (closes: #246639). + + PR libstdc++/17218: Unknown subjects in generated libstdc++ manpages. + Closes: #262934. + + PR libstdc++/17223: Missing .so references in generated libstdc++ + manpages. Closes: #262956. + + libstdc++-doc: Improve man pages (closes: #280910). + + PR c++/19006: ICE in tree_low_cst. Closes: #285692. + + g++ does not check arguments to fprintf. Closes: #281847. + - Java: + + PR java/7304: gcj ICE (closes: #152501). + + PR libgcj/7305: Installation of headers not directly in /usr/include. + Closes: #195483. + + PR libgcj/11941: libgcj timezone handling (closes: #203212). + + PR java/14709: gcj fails to wait for its child processes on exec(). + Closes: #238432. + + PR libgcj/21703: gcj hangs when rapidly calling String.intern(). + Closes: #275547. + + SocketChannel.get(ByteBuffer) returns 0 at EOF. Closes: #281602. + + PR java/19711: gcj segfaults instead of reporting the ambiguous + expression. Closes: #286715. + + Static libgcj contains repeated archive members (closes: #298263). + - Architecture specific: + - alpha + + Unaligned accesses with ?-operator (closes: #301983). + - arm + + Compilation error of glibc-2.3.4 on arm (closes: #298508). + - m68k + + ICE in add_insn_before (closes: #248432). + - mips + + Fix o32 ABI breakage in gcc 3.3/3.4 (closes: #270620). + - powerpc + + ICE in extract_insn (closes: #311128). + + * Closing bug reports as wontfix: + - g++ defines _GNU_SOURCE when using the libstdc++ header files. + Behaviour did change since 3.0. Closes: #126703, #164872. + + -- Matthias Klose Sat, 9 Jul 2005 17:10:54 +0000 + +gcc-4.0 (4.0.0ds2-12) unstable; urgency=high + + * Update to CVS 20050701, taken from the gcc-4_0-branch. + * Apply proposed patch for MMAP configure fix; aka PR 19877. Backport + from mainline. + * Disable Fortran on m68k. Currently FTBFS. + * Split multiarch-include/lib patches. Update multiarch-include patch. + * Fix FTBFS of the hppa64-linux cross compiler. Don't add the + multiarch include dirs when cross compiling. + * Configure --with-java-home, as used by java-gcj-compat. + Closes: #315646. + * Make libgcj-dbg packages priority extra. + * Set the path of classmap.db to /var/lib/gcj-@gcc_version@. + * On m68k, do not create the default classmap.db in the gcj postinst. + See #312830. + * On amd64, install the 32bit libraries into /emul/ia32-linux/usr/lib. + Restore the /usr/lib32 symlink. + * On amd64, don't reference lib64, but instead lib (lib64 is a symlink + to lib). Closes: #293050. + * Remove references to build directories from the .la files. + * Make cpp-X.Y conflict with earlier versions of gcc-X.Y, g++-X.Y, gobjc-X.Y, + gcj-X.Y, gfortran-X.Y, gnat-X.Y, treelang-X.Y, if a path component in + the gcc library path changes (i.e. version or target alias). + * Disable Ada for sh3 sh3eb sh4 sh4eb. + * For gcj-4.0, add a conflict to libgcj4-dev and libgcj5-dev. + Closes: #316499. + + -- Matthias Klose Sat, 2 Jul 2005 11:04:35 +0200 + +gcc-4.0 (4.0.0ds1-11) unstable; urgency=low + + * debian/rules.defs: Disable Ada for alpha. + * debian/rules.conf: Fix typo in type-handling replacement code. + * Don't ship an empty libgcj6-dbg package. + + -- Matthias Klose Thu, 23 Jun 2005 09:03:21 +0200 + +gcc-4.0 (4.0.0ds1-10) unstable; urgency=medium + + * debian/patches/libstdc++-api-compat.dpatch: Apply proposed patch + to fix libstdc++ 3.4.5/4.0 compatibility. + * type-handling output became insane. Don't use it anymore. + * Drop the reference to the stl-manual package (closes: #314983). + * Disable java on GNU/kFreeBSD targets, requested by Robert Millan. + Closes: #315140. + * Terminate the acats-killer process, even if the build is aborted + by the user (closes: #314405). + * debian/rules.defs: Define DEB_TARGET_ARCH_{OS,CPU}. + * Start converting the use of DEB_*_GNU_* to DEB_*_ARCH_* in the build + files. + * Do not configure with --enable-gtk-cairo. Needs newer gtk. Drop + build dependency on libcairo-dev. + * Fix setting of the system header directory for the hurd (Michael Banck). + Closes: #315386. + * Fix FTBFS on hurd-i386: MAXPATHLEN issue (Michael Banck). Closes: #315384. + + -- Matthias Klose Wed, 22 Jun 2005 19:45:50 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu2) breezy; urgency=low + + * Fix version number in libgcj shlibs file. + + -- Matthias Klose Sun, 19 Jun 2005 10:34:02 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu1) breezy; urgency=low + + * Update to 4.0.1, release candidate 2. + * libstdc++ shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Rename libawt to libgcjawt to avoid conflicts with other + libawt implementations (backport from HEAD). + * Update classpath awt, swing and xml parser for HTML support in swing. + Taken from classpath CVS HEAD 2005-06-18. Patch provided by Michael Koch. + * Remove the libgcj-buffer-strategy path, part of the classpath update. + * libgcj shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Require cairo-0.5 as build dependency. + * gij-4.0: Provide java1-runtime. + * gij-4.0: Provide an rmiregistry alternative (using grmiregistry-4.0). + * gcj-4.0: Provide an rmic alternative (using grmic-4.0). + * libgcj6-dev conflicts with libgcj5-dev, libgcj4-dev, not libgcj6. + Closes: #312741. + * libmudflap-entry-point.dpatch: Correct name of entry point on mips/mipsel. + * Apply proposed patch for PR 18421 and PR 18719 (m68k only). + * Apply proposed path for PR 21562. + * Add build dependency on dpkg (>= 1.13.7). + * On linux systems, configure for -linux-gnu. + * Configure the hppa64 cross compiler to target hppa64-linux-gnu. + * (Build-)depend on binutils-2.16.1. + * libstdc{32,64}++6-4.0-dbg: Depend on libstdc++6-4.0-dev. + * gnat-4.0: only depend on libgnat, when a shared libgnat is built. + * gfortran-4.0: Depend on libgmp3c2 | libgmp3. + * On hppa, explicitely use gcc-3.3 as a build dependency in the case + that Ada is disabled. + * libmudflap: Always build the library for the non-default biarch + architecture, or else the test results show link failures. + + -- Matthias Klose Sat, 18 Jun 2005 00:42:55 +0000 + +gcc-4.0 (4.0.0-9) unstable; urgency=low + + * Upload to unstable. + + -- Matthias Klose Wed, 25 May 2005 19:02:20 +0200 + +gcc-4.0 (4.0.0-8ubuntu3) breezy; urgency=low + + * debian/control: Regenerate. + + -- Matthias Klose Sat, 4 Jun 2005 10:56:27 +0200 + +gcc-4.0 (4.0.0-8ubuntu2) breezy; urgency=low + + * Fix powerpc-config-ml patch. + + -- Matthias Klose Fri, 3 Jun 2005 15:47:52 +0200 + +gcc-4.0 (4.0.0-8ubuntu1) breezy; urgency=low + + * powerpc biarch support: + - Enable powerpc biarch support, build lib64gcc1 on powerpc. + - Add patch to disable libstdc++'s configure checking, if it can't run + 64bit binaries on 32bit kernels (Sven Luther). + - Apply the same patch to the other runtime librararies as well. + - Run the testsuite with -m64, if we can execute 64bit binaries. + - Add libc6-dev-ppc64 as build dependency for powerpc. + * 32bit gcj libs for amd64. + * debian/logwatch.sh: Don't remove logwatch pid file on exit (suggested + by Ryan Murray). + * Update to CVS 20050603, taken from the gcc-4_0-branch. + * g++-4.0 provides c++abi2-dev. + * Loosen dependencies on packages of architecture `all' to not break + binary only uploads. + * Build libgfortran for biarch as well, else the testsuite will fail. + + -- Matthias Klose Fri, 3 Jun 2005 13:38:19 +0200 + +gcc-4.0 (4.0.0-8) experimental; urgency=low + + * Synchronize with Ubuntu. + + -- Matthias Klose Mon, 23 May 2005 01:56:28 +0000 + +gcc-4.0 (4.0.0-7ubuntu7) breezy; urgency=low + + * Fix build failures for builds with disabled testsuite. + * Adjust debian/rules conditionals to work with all dpkg versions. + * Build separate lib32stdc6-4.0-dbg/lib64stdc6-4.0-dbg packages. + * Add the debugging symbols of the optimzed libstdc++ build in the + lib*stdc++6-dbg packages as well. + * Build a libgcj6-dbg package. + * Update to CVS 20050522, taken from the gcc-4_0-branch. + * Add Ada support for the ppc64 architecture (Andreas Jochens): + * debian/patches/ppc64-ada.dpatch + - Add gcc/ada/system-linux-ppc64.ads, which has been copied from + gcc/ada/system-linux-ppc.ads and changed to use 'Word_Size' 64 + instead of 32. + - gcc/ada/Makefile.in: Use gcc/ada/system-linux-ppc64.ads on powerpc64. + * debian/rules.patch + - Use ppc64-ada patch on ppc64. + * debian/rules.d/binary-ada.mk + Place the symlinks libgnat.so, libgnat-4.0.so, libgnarl.so, + libgnarl-4.0.so in '/usr/lib' instead of '/adalib'. + Closes: #308948. + * Add libc6-dev-i386 as an alternative build dependency for amd64. + Closes: #305690. + + -- Matthias Klose Sun, 22 May 2005 22:14:20 +0200 + +gcc-4.0 (4.0.0-7ubuntu6) breezy; urgency=low + + * Don't trust dpkg-architecture (1.13.4), it "hurds" ... + + -- Matthias Klose Wed, 18 May 2005 11:36:38 +0200 + +gcc-4.0 (4.0.0-7ubuntu5) breezy; urgency=low + + * libgcj6-dev: Don't provide libgcj-dev. + + -- Matthias Klose Wed, 18 May 2005 00:30:32 +0000 + +gcc-4.0 (4.0.0-7ubuntu4) breezy; urgency=low + + * Update to CVS 20050517, taken from the gcc-4_0-branch. + * Apply proposed patch for PR21293. + + -- Matthias Klose Tue, 17 May 2005 23:05:40 +0000 + +gcc-4.0 (4.0.0-7ubuntu2) breezy; urgency=low + + * Update to CVS 20050515, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 15 May 2005 23:48:00 +0200 + +gcc-4.0 (4.0.0-7ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + + -- Matthias Klose Mon, 9 May 2005 19:35:29 +0200 + +gcc-4.0 (4.0.0-7) experimental; urgency=low + + * Update to CVS 20050509, taken from the gcc-4_0-branch. + * Remove the note from the fastjar package description, stating, that + fastjar is incomplete compared to the "standard" jar utility. + * Fix typo in build depends. dpkg-checkbuilddeps doesn't like a comma + inside []. + * Tighten shlibs dependencies to require the current version. + + -- Matthias Klose Mon, 9 May 2005 19:02:03 +0200 + +gcc-4.0 (4.0.0-6) experimental; urgency=low + + * Update to CVS 20050508, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 8 May 2005 14:08:28 +0200 + +gcc-4.0 (4.0.0-5ubuntu1) breezy; urgency=low + + * Temporarily disable the i386 biarch build. Remove the amd64-libs-dev + build dependency, add (build-)conflict (<= 1.1ubuntu1). + + -- Matthias Klose Sat, 7 May 2005 16:56:21 +0200 + +gcc-4.0 (4.0.0-5) breezy; urgency=low + + * gnat-3.3 and gnat-4.0 are alternative build dependencies (closes: #308002). + * Update to CVS 20050507, taken from the gcc-4_0-branch. + * gcj-4.0: Install gjnih. + * Add libgcj buffer strategy framework (Thomas Fitzsimmons), needed for OOo2. + Backport from 4.1. + * Fix all lintian errors and most of the warnings. + + -- Matthias Klose Sat, 7 May 2005 12:26:15 +0200 + +gcc-4.0 (4.0.0-4) breezy; urgency=low + + * Still prefer gnat-3.3 over gnat-4.0 as a build dependency. + + -- Matthias Klose Fri, 6 May 2005 22:30:43 +0200 + +gcc-4.0 (4.0.0-3) breezy; urgency=low + + * Update to CVS 20050506, taken from the gcc-4_0-branch. + * Update priority of java alternatives to 40. + * Move gcj-dbtool to gij package, move the default classmap.db to + /var/lib/gcj-4.0/classmap.db. Create it in the postinst. + * Fix gcc-4.0-hppa64 postinst (closes: #307762). + * Fix gcc-4.0-hppa64, gij-4.0 and gcj-4.0 postinst, to not ignore errors + from update-alternatives. + * Fix gcc-4.0-hppa64, fastjar, gij-4.0 and gcj-4.0 prerm, + to not ignore errors from update-alternatives. + + -- Matthias Klose Fri, 6 May 2005 17:50:58 +0200 + +gcc-4.0 (4.0.0-2) experimental; urgency=low + + * GCC 4.0.0 release. + * Update to CVS 20050503, taken from the gcc-4_0-branch. + * Add gnat-4.0 as an alternative build dependency (closes: #305690). + + -- Matthias Klose Tue, 3 May 2005 15:41:26 +0200 + +gcc-4.0 (4.0.0-1) experimental; urgency=low + + * GCC 4.0.0 release. + + -- Matthias Klose Sun, 24 Apr 2005 11:28:42 +0200 + +gcc-4.0 (4.0ds11-0pre11) breezy; urgency=low + + * CVS 20050413, taken from the gcc-4_0-branch. + * Add proposed patches for PR20126, PR20490, PR20929. + + -- Matthias Klose Wed, 13 Apr 2005 09:43:00 +0200 + +gcc-4.0 (4.0ds10-0pre10) experimental; urgency=low + + * gcc-4.0.0-20050410 release candidate 1, built from the prerelease tarball. + - C++ fix for "optimizer breaks function inlining". Closes: #302989. + * Append the GCC version to the fastjar/grepjar version string. + * Use short file names in the libstdc++ docs (closes: #301140). + * Fix libstdc++-dbg dependencies (closes: #303866). + + -- Matthias Klose Mon, 11 Apr 2005 13:16:01 +0200 + +gcc-4.0 (4.0ds9-0pre9) experimental; urgency=low + + * CVS 20050326, taken from the gcc-4_0-branch. + * Reenable Ada on ia64. + * Build libgnat on hppa, sparc, s390 again. + * ppc64 support (Andreas Jochens): + * debian/control.m4 + - Add libc6-dev-powerpc [ppc64] to the Build-Depends. + - Change the Description for lib32gcc1: s/ia32/32 bit Version/ + * debian/rules.defs + - Define 'biarch_ia32' for ppc64 to use the same 32 bit multilib + facilities as amd64. + * debian/rules.d/binary-gcc.mk + - Correct an error in the 'files_gcc' definition for biarch_ia32 + (replace '64' by '32'). + * debian/rules2 + - Do not use '--disable-multilib' on powerpc64-linux. + Use '--disable-nof --disable-softfloat' instead. + * debian/rules.d/binary-libstdcxx.mk + - Put the 32 bit libstdc++ files in '/usr/lib32'. + * debian/rules.patch + - Apply 'ppc64-biarch' patch on ppc64. + * debian/patches/ppc64-biarch.dpatch + - MULTILIB_OSDIRNAMES: Use /lib for native 64 bit libraries and + /lib32 for 32 bit libraries. + - Add multilib handling to src/config-ml.in (taken from + amd64-biarch.dpatch). + * Rename biarch_ia32 to biarch32, as suggsted by Andreas. + * Use /bin/dash on hppa. + * Reenable the build of the hppa64 compiler. + * Enable parallel builds by defaults (set environment variale USE_NJOBS=no + or USE_NJOBS= to modify the default, which is to use the + number of available processors). + + -- Matthias Klose Sat, 26 Mar 2005 19:07:30 +0100 + +gcc-4.0 (4.0ds8-0pre8) experimental; urgency=low + + * CVS 20050322, taken from the gcc-4_0-branch. + - Add proposed fix for PR19406. + * Configure --with-gtk-cairo only if version 0.3.0 is found. + * Split out gcc-4.0-locales package. Better chance of getting + bug reports in english language. + + -- Matthias Klose Tue, 22 Mar 2005 14:20:24 +0100 + +gcc-4.0 (4.0ds7-0pre7) experimental; urgency=low + + * CVS 20050304, taken from the gcc-4_0-branch. + * Build the treelang compiler. + + -- Matthias Klose Fri, 4 Mar 2005 21:29:56 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu6) hoary; urgency=low + + * Fix lib32gcc1 symlink on amd64. Ubuntu #7099. + + -- Matthias Klose Thu, 3 Mar 2005 00:17:26 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu5) hoary; urgency=low + + * Add patch from PR20160, avoid creating archives with components + that have duplicate basenames. + + -- Matthias Klose Wed, 2 Mar 2005 14:22:04 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu4) hoary; urgency=low + + * CVS 20050301, taken from the gcc-4_0-branch. + Test builds on i386, amd64, powerpc, ia64, check libgcc_s.so.1. + * Add fastjar-4.0 binary and manpage. Some java packages append it + for all java related tools. + * Add libgcj6-src package for source code availability in IDE's. + * On hppa, disable the build of the hppa64 cross compiler, disable + java, disable running the testsuite (request by Lamont). + * On amd64, lib32gcc1 replaces ia32-libs.openoffice.org (<< 1ubuntu3). + * Build-Depend on libcairo1-dev, configure with --enable-gtk-cairo. + Work around libtool problems install libjawt. + Install jawt header files in libgcj6-dev. + * Add workaround for PR debug/19769. + + -- Matthias Klose Tue, 1 Mar 2005 11:26:19 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu3) hoary; urgency=low + + * Drop libgmp3-dev (<< 4.1.4-3) as an alterntative build dependency. + + -- Matthias Klose Thu, 10 Feb 2005 15:16:27 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu2) hoary; urgency=low + + * Disable Ada for powerpc. + + -- Matthias Klose Wed, 9 Feb 2005 16:47:07 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu1) hoary; urgency=low + + * Avoid build dependency on type-handling. + * Install 32bit libs on amd64 in /lib32 and /usr/lib32. + + -- Matthias Klose Wed, 9 Feb 2005 08:27:21 +0100 + +gcc-4.0 (4.0ds5-0pre6) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050208. + * Build-depend on graphviz (moved to main), remove the pregenerated + libstdc++ docs from the diff. + * Fix PR19162, libobjc build failure on arm-linux (closes: #291497). + + -- Matthias Klose Tue, 8 Feb 2005 11:47:31 +0000 + +gcc-4.0 (4.0ds4-0pre5) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050125. + * Call the 4.0 gcx versions in the java wrappers (closes: #291075). + * Correctly install libgij (closes: #291077). + * libgcj6-dev: Add conflicts to other libgcj-dev packages (closes: #290950). + + -- Matthias Klose Mon, 24 Jan 2005 23:59:54 +0100 + +gcc-4.0 (4.0ds3-0pre4) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050115. + * Update cross build patches (Nikita V. Youshchenko). + * Enable Ada on i386, amd64, mips, mipsel, powerpc, sparc, s390. + Doesn't yet bootstrap on alpha, hppa, ia64. + + -- Matthias Klose Sat, 15 Jan 2005 18:44:03 +0100 + +gcc-4.0 (4.0ds2-0pre3) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041224. + + -- Matthias Klose Wed, 22 Dec 2004 00:31:44 +0100 + +gcc-4.0 (4.0ds1-0pre2) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041205. + * Lot's of merges and updates from the gcc-3.4 packages. + + -- Matthias Klose Sat, 04 Dec 2004 12:14:51 +0100 + +gcc-4.0 (4.0ds0-0pre1) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041114. + - Addresses many issues with the libstdc++ man pages (closes: #278549). + * Disable Ada on hppa, ia64, mips, mipsel, powerpc, s390 and sparc, at least + these are known to be broken at the time of the snapshot. + * Minor kbsd.gnu build fixes (Robert Millan). Closes: #273004. + * For amd64, add missing libstdc++ files to 'libstdc++6-dev' package. + (Andreas Jochens). Fixes: #274362. + * Update libffi-mips patch (closes: #274096). + * Updated i386-biarch patch. Don't build 64bit libstdc++, ICE. + * Update sparc biarch patch. + * Fix symlinks for gfortran manpage (closes: #278548). + * Update cross build patches (Nikita V. Youshchenko). + * Update Ada patches (Ludovic Brenta). + + -- Matthias Klose Sat, 13 Nov 2004 10:38:25 +0100 + +gcc-4.0 (4.0-0pre0) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20040912. + + * Matthias Klose + + - Integrate accumulated packaging patches from gcc-3.4. + - Rename libstdc++6-* packages to libstdc++6-4-* (closes: #261693). + - libffi4-dev: conflict with libffi3-dev (closes: #265939). + + * Robert Millan + + * control.m4: + - s/locale_no_archs !hurd-i386/locale_no_archs/g + (This is now handled in rules.defs. [1]) + - s/procps [check_no_archs]/procps [linux_gnu_archs]/g [2] + - Add type-handling to build-deps. [3] + * rules.conf: + - Don't require (>= $(libc_ver)) for libc0.1-dev. [4] + - Generate *_no_archs variables with type-handling and use them for + for m4's -D parameters. [3] + * rules.defs: + - use filter instead of findstring [1]. + - s/netbsd-elf-gnu/netbsdelf-gnu/g [5]. + - enable java for kfreebsd-gnu [6] + - enable ffi for kfreebsd-gnu and knetbsd-gnu [6] + - enable libgc for kfreebsd-gnu [6] + - enable checks for kfreebsd-gnu and knetbsd-gnu [7] + - enable locales for kfreebsd-gnu and gnu [1] [8]. + * Closes: #264025. + + -- Matthias Klose Sun, 12 Sep 2004 12:52:56 +0200 + +gcc-3.5 (3.5ds1-0pre1) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040724. + * Install locale data with versioned package name (closes: #260497). + * Fix libgnat symlinks. + + -- Matthias Klose Sat, 24 Jul 2004 21:26:23 +0200 + +gcc-3.5 (3.5-0pre0) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040718. + + -- Matthias Klose Sun, 18 Jul 2004 12:26:00 +0200 + +gcc-3.4 (3.4.1-1) experimental; urgency=low + + * gcc-3.4.1 final release. + - configured wth --enable-libstdcxx-allocator=mt. + * Fixes for generating cross compiler packages (Jeff Bailey). + + -- Matthias Klose Fri, 2 Jul 2004 22:49:05 +0200 + +gcc-3.4 (3.4.0-4) experimental; urgency=low + + * gcc-3.4.1 release candidate 1. + * Add logic to build biarch compiler on powerpc (disabled, needs lib64c). + * Don't build the libg2c0 package on mipsel-linux (no clear answer on + debian-mips, if the libg2c0's built by gcc-3.3 and gcc-3.4 are compatible + (post-sarge issue). + * Don't use gcc-2.95 as bootstrap compiler on m68k anymore. + + -- Matthias Klose Sat, 26 Jun 2004 22:40:20 +0200 + +gcc-3.4 (3.4.0-3) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040613. + * On sparc, set the the build target to sparc64-linux, build with + switch defaulting to code generation for v7. To generate code for + sparc64, use the -m64 switch. + * Add missing doc-base files to -doc packages. + * Add portability patches and kbsd-gnu patch (Robert Millan). + Closes: #251293, #251294. + * Apply fixes for cross build (Nikita V. Youshchenko). + * Do not include the precompiled libstdc++ header files into the -dev + package (still experimental). Closes: #251707. + * Reflect renaming of Ada user's guide. + * Move AWT peer libraries for libgcj into it's own package (fixes: #247791). + + -- Matthias Klose Mon, 14 Jun 2004 00:03:18 +0200 + +gcc-3.4 (3.4.0-2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040516. + * Do not provide the /usr/hppa64-linux/include in the gcc-hppa64 package, + migrated to libc6-dev. Adjust dependencies. + * Integrate gpc test results into the GCC test summary. + * gnatchop calls gcc-3.4 (closes: #245438). + * debian/locale-gen.sh: Update for recent libstdc+++ testsuite. + * debian/copyright: Add libstdc++-v3's exception clause. + * Add libffi update for mips (Thiemo Seufer). + * Reference Debian specific bug reporting instructions. + * Update README.Bugs. + * Fix FTBFS for libstdc++-doc. + * Update libjava patch for hppa (Randolph Chung). + * Fix installation of ffitarget.h header file. + * On amd64-linux, configure --without-multilib, disable Ada. + + -- Matthias Klose Sun, 16 May 2004 07:53:39 +0200 + +gcc-3.4 (3.4.0-1) experimental; urgency=low + + * gcc-3.4.0 final release. + + * Why experimental? + - Do not interfer with packages currently built from gcc-3.3 sources, + i.e. libgcc1, libobjc1, libffi2, libffi2-dev, libg2c0. + - Biarch sparc compiler doesn't built yet. + - Use of configure flags affecting binary ABI's not yet determined. + - Several ABI bugs have been fixed. Unfortunately, these changes will break + binary compatibility with earlier releases on several architectures: + alpha, mips, sparc, + - hppa and m68k changed sjlj based exception handling to dwarf2 based + exception handling. + + See NEWS.html or http://gcc.gnu.org/gcc-3.4/changes.html for more + specific information. + + -- Matthias Klose Tue, 20 Apr 2004 20:54:56 +0200 + +gcc-3.4 (3.4ds3-0pre4) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040403. + * Add gpc tarball, gpc patches for 3.4 (Waldek Hebisch). + * Reenable sparc-biarch patches (closes: #239856). + * Build the shared libgnat library, needed to fix FTBFS for some + Ada library packages (Ludovic Brenta). + Currently enabled for hppa, i386, ia64. + + -- Matthias Klose Sat, 3 Apr 2004 08:47:55 +0200 + +gcc-3.4 (3.4ds1-0pre2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040320. + * For libstdc++6-doc, add a conflict to libstdc++5-3.3-doc (closes: #236560). + * For libstdc++6-dbg, add a conflict to libstdc++5-3.3-dbg (closes: #236798). + * Reenable s390-biarch patches. + * Update the cross compiler build files (Nikita V. Youshchenko). + + -- Matthias Klose Sat, 20 Mar 2004 09:15:10 +0100 + +gcc-3.4 (3.4ds0-0pre1) experimental; urgency=low + + * Start gcc-3.4 packaging, get rid of the epoch for most of the + packages. + + -- Matthias Klose Sun, 22 Feb 2004 16:00:03 +0100 + +gcc-3.3 (1:3.3.3ds6-6) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040401. + - Fixed ICE in emit_move_insn_1 on legal code (closed: #223215). + - Fix PR 14755, miscompilation of loops with bitfield counter. + Closes: #241255. + - Fix PR 16040, crash in function initializing const data with + reinterpret_cast-ed pointer-to-member function crashes (closes: #238621). + - Remove patches integrated upstream. + * Reenable build of gpidump on powerpc and s390. + + -- Matthias Klose Thu, 1 Apr 2004 23:51:54 +0200 + +gcc-3.3 (1:3.3.3ds6-5) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040321. + - Fix PR target/13889 (ICE on valid code on m68k). + * Fix FTFBS on s390. Do not build gpc's gpidump on s390. + * Reenable gpc on arm. + + -- Matthias Klose Mon, 22 Mar 2004 07:37:26 +0100 + +gcc-3.3 (1:3.3.3ds6-4) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040320. + - Revert patch for PR14640 (with this, at least mozilla-firefox was + miscompiled on x86 (closes: #238621). + * Update the gpc tarball (there were two releases with the same name ...). + * Reenable gpc on alpha and ia64. + + -- Matthias Klose Sat, 20 Mar 2004 07:39:24 +0100 + +gcc-3.3 (1:3.3.3ds5-3) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040314. + - Fixes miscompilation with -O -funroll-loops on powerpc (closes: #229567). + - Fix ICE in dwarf-2 on code using altivec (closes: #203835). + * Update hurd-changes patch. + * Add libgcj4-dev as a recommendation for gcj (closes: #236547). + * debian/copyright: Added exemption to static linking of libgcc. + + * Phil Blundell: + - debian/patches/arm-ldm.dpatch, debian/patches/arm-gotoff.dpatch: Update. + + -- Matthias Klose Sun, 14 Mar 2004 09:56:06 +0100 + +gcc-3.3 (1:3.3.3ds5-2) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040306. + - Fixes bootstrap comparision error on ia64. + - Allows ghc build with gcc-3.3. + - On amd64, don't imply 3DNow! for -m64 by default. + - Some arm specific changes + - Fix C++/13944: exception in constructor of a class to be thrown is not + caught. Closes: #228099. + * Enable the build of gcc-3.3-hppa64 on hppa. + Add symlinks for as and ld to point to hppa64-linux-{as,ld}. + * gcj-3.3 depends on g++-3.3, recommends gij-3.3. gij-3.3 suggests gcj-3.3. + * Fix libgc2c-pic compatibility links (closes: #234333). + The link will be removed for gcc-3.4. + * g77-3.3: Conflict with other g77-x.y packages. + * Tighten shlibs dependencies to latest released versions. + + * Phil Blundell: + - debian/patches/arm-233633.dpatch: New Fixes problems with half-word + loads on ARMv3 architecture. (Closes: #233633) + - debian/patches/arm-ldm.dpatch: New. Avoids inefficient epilogue for + leaf functions in PIC code on ARM. + + -- Matthias Klose Sat, 6 Mar 2004 10:57:14 +0100 + +gcc-3.3 (1:3.3.3ds5-1) unstable; urgency=medium + + * gcc-3.3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + + -- Matthias Klose Mon, 16 Feb 2004 08:59:52 +0100 + +gcc-3.3 (1:3.3.3ds4-0pre4) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040214 (2nd gcc-3.3.3 prerelease). + * Fix title of libstdc++'s html main index (closes: #196381). + * Move libg2c libraray files out of the gcc specific libdir to /usr/lib. + For g77-3.3 add conflicts to other g77 packages. Closes: #224848. + * Update the stack protector patch to 3.3-7, but don't apply it by default. + Closes: #230338. + * On arm, use arm6 as the cpu default (backport from mainline, PR12527). + * Add libffi and libjava support for hppa (Randolph Chung). Closes: #232615. + + -- Matthias Klose Sat, 14 Feb 2004 09:26:15 +0100 + +gcc-3.3 (1:3.3.3ds3-0pre3) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040125. + - Fixed PR11350, undefined labels with -Os -fPIC (closes: #195911). + - Fixed PR11793, ICE in extract_insn, at recog.c (closes: #203835). + - Fixed PR13544, removed backport for PR12862. + - Integrated backport for PR12441. + * Fixed since 3.3: java: not implemented interface methods of abstract + classes not found (closes: #225438). + * Disable pascal on arm architecture (currently broken). + * Update the build files to build a cross compiler (Nikita V. Youshchenko). + See debian/README.cross in the source package. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (closes: #212912). + (Tyson Whitehead) + + -- Matthias Klose Sun, 25 Jan 2004 17:41:04 +0100 + +gcc-3.3 (1:3.3.3ds2-0pre2) unstable; urgency=medium + + * Update to gcc-3.3.3 CVS 20040110. + - Fixes compilation not terminating at -O1 on hppa (closes: #207516). + * Add backport to fix PR12441 (closes: #224576). + * Revert backport to 3.3 branch to fix PR12862, which introduced another + regression (PR13544). Closes: #225663. + * Tighten dependency of gnat-3.3 on gcc-3.3 (closes: #226273). + * Disable treelang build for cross compiler build. + * Disable pascal on alpha and ia64 architectures (currently broken). + + -- Matthias Klose Sat, 10 Jan 2004 12:33:59 +0100 + +gcc-3.3 (1:3.3.3ds1-0pre1) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031229. + - Fixes bootstrap error on ia64-linux. + - Fix -pthread on mips{,el}-linux (closes: #224875). + - Fix -Wformat for C++ (closes: #217075). + * Backport from mainline: Preserve inline-ness when redeclaring + a function template (closes: #195264). + * Add missing intrinsics headers on ix86 (closes: #224593). + * Fix location of libg2c libdir in libg2c.la file (closes: #224848). + + -- Matthias Klose Mon, 29 Dec 2003 10:36:29 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0.1) unstable; urgency=high + + * NMU + * Fixed mips(el) spec file for -pthread: (Closes: #224875) + * [debian/patches/mips-pthread.dpatch] New. + * [debian/rules.patch] Added it to debian_patches. + + -- J.H.M. Dassen (Ray) Sat, 27 Dec 2003 15:51:47 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031206. + - Fixes ICE in verify_local_live_at_start (hppa). Closes: #201550. + - Fixes miscompilation of linux-2.6/sound/core/oss/rate.c. + Closes: #219949. + * Add missing unwind.h to gcc package (closes: #220846). + * Regenerate control file to fix build dependencies for m68k. + * More gpc only patches to fix test failures on m68k. + * Reenable gpc for the Hurd (closes: #189851). + + -- Matthias Klose Sat, 6 Dec 2003 10:29:07 +0100 + +gcc-3.3 (1:3.3.2ds5-4) unstable; urgency=low + + * Update libffi-dev package description (closes: #219508). + * For gij and libgcj fix dependency on the libstdc++ package, if + the latter isn't installed during the build. + * Apply patch to emit .note.GNU-stack section on linux arches + which by default need executable stack. + * Prefer gnat-3.3 over gnat-3.2 as a build dependency. + * Update the pascal tarball (different version released with the + same name). + * Add pascal patches to address various gpc testsuite failures. + On alpha and ia64, build gpc from the 20030830 version. Reenable + the build on m68k. + Remove the 20030507 gpc version from the tarball. + * Apply patch to build the shared ada libs and link the ada tools + against the shared libs. Not enabled by default, because gnat + and gnatlib are rebuilt during install. (Ludovic Brenta) + + -- Matthias Klose Sun, 9 Nov 2003 22:34:33 +0100 + +gcc-3.3 (1:3.3.2ds4-3) unstable; urgency=low + + * Fix rules to omit inclusion of gnatpsta in mips(el) gnat package. + + -- Matthias Klose Sun, 2 Nov 2003 14:29:59 +0100 + +gcc-3.3 (1:3.3.2ds4-2) unstable; urgency=medium + + * s390-ifcvt patch added. Fixes gcl miscompilation (closes: #217240). + (Gerhard Tonn) + * Fix an infinite loop in g++ compiling lufs, regression from 3.3.1. + * Fix a wrong code generation bug on alpha. + (Falk Hueffner) + * Update NEWS files. + * Add Falk Hueffner to the Debian GCC maintainers. + * Enable ada on mips and mipsel, but don't build the gnatpsta tool. + + -- Matthias Klose Wed, 29 Oct 2003 00:12:37 +0100 + +gcc-3.3 (1:3.3.2ds4-1) unstable; urgency=medium + + * Update to gcc-3.3.2. + * Update NEWS files. + * Miscompilation in the pari package at -O3 fixed (closes: #198172). + * On alpha-linux, revert -mieee as the default (Falk Hueffner). + Reopens: #212912. + * Add ia64-unwind patch (Jeff Bailey). + * Closed reports reported against gcc-2.96 (ia64), fixed at least in gcc-3.3: + - ICE in verify_local_live_at_start, at flow.c:2733 (closes: #135404). + - Compilation failure of stlport (closes: #135224). + - Infinite loop compiling cssc's pfile.cc with -O2 (closes: #115390). + - Added missing some string::compare() members (closes: #141199). + - header declares std::pow (closes: #161853). + - does have at() method (closes: #59776). + - Fixed error in stl_deque.h (closes: #69530). + - Fixed problem with bastring (closes: #75759, #96539). + - bad_alloc and std:: namespace problem (closes: #75120). + - Excessive warnings from headers with -Weffc++ (closes: #76827). + + -- Matthias Klose Fri, 17 Oct 2003 08:07:01 +0200 + +gcc-3.3 (1:3.3.2ds3-0pre5) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20031005. + - Fixes cpp inserting a spurious newline (closes: #210478, #210482). + - Fixes generation of unrecognizable insn compiling kernel source + on alpha (closes: #202762). + - Fixes ICE in add_abstract_origin_attribute (closes: #212406). + - Fixes forward declaration in libstdc++ (closes: #209386). + - Fixes ICE in in extract_insn, at recog.c on alpha (closes: #207564). + * Make libgcj-common architecture all (closes: #211909). + * Build depend on: flex-old | flex (<< 2.5.31). + * Fix spec linking libraries with -pthread on powerpc (closes: #211054). + * debian/patches/arm-gotoff.dpatch: fix two kinds of PIC lossage. + (Phil Blundell) + * debian/patches/arm-common.dpatch: fix excessive alignment of common + blocks causing binutils testsuite failures. + (Phil Blundell) + * Update priorities in debian/control to match the archive. + (Ryan Murray) + * s390-nonlocal-goto patch added. Fixes some pascal testcase failures. + (Gerhard Tonn) + * On alpha-linux, make -mieee default and add -mieee-disable switch + to turn default off (closes: #212912). + (Tyson Whitehead) + * Add gpc upstream patch for memory corruption fix. + + -- Matthias Klose Sun, 5 Oct 2003 19:53:49 +0200 + +gcc-3.3 (1:3.3.2ds2-0pre4) unstable; urgency=low + + * Add gcc-unsharing_lhs patch (closes: #210848) + + -- Ryan Murray Fri, 19 Sep 2003 22:51:19 -0600 + +gcc-3.3 (1:3.3.2ds2-0pre3) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030908. + * PR11716 (Michael Eager, Dan Jacobowitz): + Make GCC think that the maximum length of a short branch is + 64K instead of 128K. It's a big hammer, but it works. + Closes: #207915. + * Downgrade gpc to 20030507 on alpha and ia64 (closes: #208717). + + -- Matthias Klose Mon, 8 Sep 2003 21:49:52 +0200 + +gcc-3.3 (1:3.3.2ds1-0pre2) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030831. + - Fix java NullPointerException detection with 2.6 kernels. + Closes: #206377. + - Fix bug in C++ typedef handling (closes: #205402). + - Fix -Wunreachable-code giving false complaints (closes: #196600). + * Update to gpc-20030830. + * Don't include /usr/share/java/repository into the class path according + to the new version of th Debian Java policy (closes: #205643). + * Build-Depend/Depend on libgc-dev. + + -- Matthias Klose Sun, 31 Aug 2003 08:56:53 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre1) unstable; urgency=low + + * Remove the build dependency on locales for now. + + -- Matthias Klose Fri, 15 Aug 2003 07:48:18 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.2 CVS 20030812. + - Fixes generation of wrong code for XDM-AUTHORIZATION-1 key generation + and/or validation. Closes: #196090. + * Update NEWS files. + * Change ix86 default CPU type for code generation: + - i386-linux -> i486-linux + - i386-gnu -> i586-gnu + - i386-freebsd-gnu -> i486-freebsd-gnu + Use -march=i386 to target i386 CPUs. + + -- Matthias Klose Tue, 12 Aug 2003 10:31:28 +0200 + +gcc-3.3 (1:3.3.1ds3-1) unstable; urgency=low + + * gcc-3.3.1 (taken from CVS 20030805). + - C++: Fix declaration conflicts (closes: #203351). + - Fix ICE on ia64 (closes: #203840). + + -- Matthias Klose Tue, 5 Aug 2003 20:38:02 +0200 + +gcc-3.3 (1:3.3.1ds2-0rc2) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030728. + - Fix ICE in extract_insn, at recog.c:2148 on m68k. + Closes: #177840, #180375, #190818. + - Fix ICE while building libquicktime on alpha (closes: #192576). + - Fix failure to deal with using and private inheritance (closes: #202696). + * On sparc, /usr/lib was added to the library search path. Fix it. + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Fix error building the gcl package on arm (closes: #199835). + + -- Matthias Klose Mon, 28 Jul 2003 20:39:07 +0200 + +gcc-3.3 (1:3.3.1ds1-0rc1) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030722 (3.3.1 release candidate 1). + - Fix ICE in copy_to_mode_reg on 64-bit targets (closes: #189365). + - Remove documentation about multi-line strings (closes: #194391). + - Correctly document -falign-* parameters (closes: #198269). + - out-of-class specialization of a private nested template class. + Closes: #193830. + - Tighten shlibs dependency due to new symbols in libgcc. + * README.Debian for libg2c0, describing the need for g77-x.y when + working with the g2c header and library (closes: #189059). + * Call make with -j, if USE_NJOBS is set and non-empty + in the environment. + * Add another two m68k patches, partly replacing the workarounds provided + by Roman Zippel. + * Add the stack protector patch, but don't apply it by default. Edit + debian/rules.patch to apply it (closes: #171699, #189494). + * Remove wrong symlinks from gnat package (closes: #201882). + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - SMP kernel compilation on alpha (closes: #134197, #146883). + - ICE on arm while building imagemagick (closes: #173475). + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Miscompilation of octave2.1 on hppa (closes: #192296, #193804). + + -- Matthias Klose Sun, 13 Jul 2003 10:26:30 +0200 + +gcc-3.3 (1:3.3.1ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.1 CVS 20030626. + - Fix ICE on arm compiling xfree86 (closes: #195424). + - Fix ICE on arm compiling fftw (closes: #186185). + - Fix ICE on arm in change_address_1, affecting a few packages. + Closes: #197099. + - Fix ICE in merge_assigned_reloads building Linux 2.4.2x sched.c. + Closes: #195237. + - Do not warn about failing to inline functions declared in system headers. + Closes: #193049. + - Fix ICE on mips{,el} in propagate_one_insn (closes: #194330, #196091). + - Fix ICE on m68k in reg_overlap_mentioned_p (closes: #194749). + - Build crtbeginT.o on m68k (closes: #197613). + * Fix g++ man page symlink (closes: #196271). + * mips/mipsel: Depend on binutils (>= 2.14.90.0.4). Closes: #196744. + * Disable treelang on powerpc (again). Closes: #196915. + * Pass -encoding in gcj-wrapper. + + -- Matthias Klose Fri, 27 Jun 2003 00:14:43 +0200 + +gcc-3.3 (1:3.3ds9-3) unstable; urgency=low + + * Closing more reports, fixed in 3.2/3.3: + - ICE building texmacs on m68k (closes: #177433). + - libstdc++: doesn't define trunc(...) (closes: #105285). + - libstdc++: setw is ignored for strings output (closes: #52382, #76645). + * Add build support to omit the manual pages and info docs from the + packages, disabled by default. Wait for a Debian statement, which can + be cited. Adresses: #193787. + * Reenable the m68k-const patch, don't run the g77 testsuite on m68k. + Addresses ICEs (#177840, #190818). + * Update arm-xscale patch. + * libstdc++: use __attribute__(__unknown__), instead of (unknown). + Closes: #195796. + * Build-Depend on glibc (>= 2.3.1) to prevent incorrect builds on woody. + Request from Adrian Bunk. + * Add treelang-update patch (Tim Josling), reenable treelang on powerpc. + * Add -{cpp,gcc,g++,gcj,g77} symlinks (addresses: #189466). + * Make sure not to build using binutils-2.14.90.0.[12]. + + -- Matthias Klose Mon, 2 Jun 2003 22:35:45 +0200 + +gcc-3.3 (1:3.3ds9-2) unstable; urgency=medium + + * Correct autoconf-related snafu in newly added ARM patches (Phil Blundell). + * Correct libgcc1 dependency (closes: #193689). + * Work around ldd/dpkg-shlibs failure on s390x. + + -- Matthias Klose Sun, 18 May 2003 09:40:15 +0200 + +gcc-3.3 (1:3.3ds9-1) unstable; urgency=low + + * gcc-3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + * First merge of i386/x86-64 biarch support (Arnd Bergmann). + Disabled by default. Closes: #190066. + * New gpc-20030507 version. + * Upstream gpc update to fix netbsd build failure (closes: #191407). + * Add arm-xscale.dpatch, arm-10730.dpatch, arm-tune.dpatch, copied + from gcc-3.2 (Phil Blundell). + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.1.x, gcc-3.2.x and fixed in gcc-3.3: + - General: + + GCC accepts multi-line strings without \ or " " &c (closes: #2910). + + -print-file-name sometimes fails (closes: #161615). + + ICE: reporting routines re-entered (closes: #179597, #180937). + + Misplaced paragraph in gcc documentation (closes: #179363). + + Error: suffix or operands invalid for `div' (closes: #150558). + + builtin memcmp() could be optimised (closes: #85535). + - Ada: + + Preelaborate, exceptions, and -gnatN (closes: #181679). + - C: + + Duplicate loop conditions even with -Os (closes: #94701). + + ICE (signal 11) (closes: #65686). + - C++: + + C++ error on virtual function which uses ... (closes: #165829). + + ICE when warning about cleanup nastiness in switch statements + (closes: #184108). + + Fails to compile virtual inheritance with variable number of + argument method (closes: #151357). + + xmmintrin.h broken for c++ (closes: #168310). + + Stack corruption with variable-length automatic arrays and virtual + destructors (closes: #188527). + + ICE on illegal code (closes: #184862). + + _attribute__((unused)) is ignored in C++ (closes: #45440). + + g++ handles &(void *)foo bizzarely (closes: #79225). + + ICE (with wrong code, though) (closes: #81122). + - Java: + + Broken zip file handling (closes: #180567). + - ObjC: + + @protocol forward definitions do not work (closes: #80468). + - Architecture specific: + - alpha + + va_start is off by one (closes: #186139). + + ICE while building kseg/ddd (closes: #184753). + + g++ -O2 optimization error (closes: #70743). + - arm + + ICE with -O2 in change_address_1 (closes: #180750). + + gcc optimization error with -O2, affecting bison (closes: #185903). + - hppa + + ICE in insn_default_length (closes: #186447). + - ia64 + + gcc-3.2 fails w/ optimization (closes: #178830). + - i386 + + unnecessary generation of instruction cwtl (closes: #95318). + + {athlon} ICE building mplayer (closes: #184800). + + {pentium4} ICE while compiling mozilla with -march=pentium4 + (closes: #187910). + + i386 optimisation: joining tests (closes: #105309). + - m68k + + ICE in instantiate_virtual_regs_1 (closes: #180493). + + gcc optimizer bug on m68k (closes: #64832). + - powerpc + + ICE in extract_insn, at recog.c:2175 building php3 (closes: #186299). + + ICE with -O -Wunreachable-code (closes: #189702). + - s390 + + Operand out of range at assembly time when using -O2 + (closes: #178596). + - sparc + + gcc-3.2 regression (wrong code) (closes: #176387). + + ICE in mem_loc_descriptor when optimizing (closes: #178909). + + ICE in gen_reg_rtx when optimizing (closes: #178965). + + Optimisation leads to unaligned access in memcpy (closes: #136659). + + * Closed reports reported against gcc-3.0 and fixed in gcc-3.2.x: + - General: + + Use mkstemp instead of mktemp (closed: #127802). + - Preprocessor: + + Fix redundant error message from cpp (closed: #100722). + - C: + + Optimization issue on ix86 (pointless moving) (closed: #97904). + + Miscompilation of allegro on ix86 (closed: #105741). + + Fix generation of ..ng references for static aliases (alpha-linux). + (closed: #108036). + + ICE compiling pari on hppa (closed: #111613). + + ICE on ia64 in instantiate_virtual_regs_1 (closed: #121668). + + ICE in c-typeck.c (closed: #123687). + + ICE in gen_subprogram_die on alpha (closed: #127890). + + SEGV in initialization of flexible char array member (closed: #131399). + + ICE on arm compiling lapack (closed: #135967). + + ICE in incomplete_type_error (closed: #140606). + + Fix -Wswitch (also part of -Wall) (closed: #140995). + + Wrong code in mke2fs on hppa (closed: #150232). + + sin(a) * sin(b) gives wrong result (closed: #164135). + - C++: + + Error in std library headers on arm (closed: #107633). + + ICE nr. 19970302 (closed: #119635). + + std::wcout does not perform encoding conversions (closed: #128026). + + SEGV, when compiling iostream.h with -fPIC (closed: #134315). + + Fixed segmentation fault in included code for (closed: #137017). + + Fix with exception handling and -O (closed: #144232). + + Fix octave-2.1 build failure on ia64 (closed: #144584). + + nonstandard overloads in num_get facet (closed: #155900). + + ICE in expand_end_loop with -O (closed: #158371). + - Fortran: + + Fix blas build failure on arm (closed: #137959). + - Java: + + Interface members are public by default (closed: #94974). + + Strange message with -fno-bounds-check in combination with -W. + (closed: #102353). + + Crash in FileWriter using IOException (closed: #116128). + + Fix ObjectInputStream.readObject() calling constructors. + (closed: #121636). + + gij: better error reporting on `class not found' (closed: #125649). + + Lockup during .java->.class compilation (closed: #141899). + + Compile breaks using temporary inner class instance (closed: #141900). + + Default constructor for inner class causes broken bytecode. + (closed: #141902). + + gij-3.2 linked against libgcc1 (closed: #165180). + + gij-wrapper understands -classpath parameter (closed: #146634). + + gij-3.2 doesn't ignore -jar when run as "java" (closed: #167673). + - ObjC: + + ICE on alpha (closed: #172353). + + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - General: + + Undocumented option -pthread (closes: #165110). + + stdbool.h broken (closes: #167439). + + regparm/profiling breakage (closes: #20695). + + another gcc optimization error (closes: #51456). + + ICE in `output_fix_trunc' (closes: #55967). + + Fix "Unable to generate reloads for" (closes: #58219, #131890). + + gcc -c -MD x/y.c -o x/y.o leaves y.d in cwd (closes: #59232). + + Compiler error with -O2 (closes: #67631). + + ICE (unrecognizable insn) compiling php4 (closes: #83550, #84969). + + Another ICE (closes: #90666). + + man versus info inconsistency (-W and -Wall) (closes: #93708). + + ICE on invalid extended asm (closes: #136630). + + ICE in `emit_no_conflict_block' compiling perl (closes: #154599). + + ICE in `gen_tagged_type_instantiation_die'(closes: #166766). + + ICE on __builtin_memset(s, 0, -1) (closes: #170994). + + -Q option to gcc appears twice in the documentation (closes: #137382). + + New options for specifying targets:- -MQ and -MT (closes: #27878). + + Configure using --enable-nls (closes: #51651). + + gcc -dumpspecs undocumented (closes: #65406). + - Preprocessor: + + cpp fails to parse macros with varargs correctly(closes: #154767). + + __VA_ARGS__ stringification crashes preprocessor if __VA_ARGS__ is + empty (closes: #152709). + + gcc doesn't handle empty args in macro function if there is only + one arg(closes: #156450). + - C: + + Uncaught floating point exception causes ICE (closes: #33786). + + gcc -fpack-struct doesn't pack structs (closes: #64628). + + ICE in kernel (matroxfb) code (closes: #151196). + + gcc doesn't warn about unreachable code (closes: #158704). + + Fix docs for __builtin_return_address(closes: #165992). + + C99 symbols in limits.h not defined (closes: #168346). + + %zd printf spec generates warning, even in c9x mode (closes: #94891). + + Update GCC attribute syntax (closes: #12253, #43119). + - C++ & libstdc++-v3: + + template and virtual inheritance bug (closes: #152315). + + g++ has some troubles with nested templates (closes: #21255). + + vtable thunks implementation is broken (closes: #34876, #35477). + + ICE for templated friend (closes: #42662). + + ICE compiling mnemonic (closes: #42989). + + Deprecated: result naming doesn't work for functions defined in a + class (closes: #43170). + + volatile undefined ... (closes: #50529). + + ICE concerning templates (closes: #53698). + + Program compiled -O3 -malign-double segfaults in ofstream::~ofstream + (closes: #56867). + + __attribute__ ((constructor)) doesn't work with C++ (closes: #61806). + + Another ICE (closes: #65687). + + ICE in `const_hash' (closes: #72933). + + ICE on illegal code (closes: #83221). + + Wrong code with -O2 (closes: #83363). + + ICE on template class (closes: #85934). + + No warning for missing return in non-void member func (closes: #88260). + + Not a bug/fixed in libgcc1: libgcc.a symbols end up exported by + shared libraries (closes: #118670). + + ICE using nested templates (closes: #118781). + + Another ICE with templates (closes: #127489). + + More ICEs (closes: #140427, #141797). + + ICE when template declared after use(closes: #148603). + + template function default arguments are not handled (closes: #157292). + + Warning when including stl.h (closes: #162074). + + g++ -pedantic-errors -D_GNU_SOURCE cannot #include + (closes: #151671). + + c++ error message improvement suggestion (closes: #46181). + + Compilation error in stl_alloc.h with -fhonor-std (closes: #59005). + + libstdc++ has no method at() in stl_= (closes: #68963). + - Fortran: + + g77 crash (closes: #130415). + - ObjC: + + ICE: program cc1obj got fatal signal 11 (closes: #62309). + + Interface to garbage collector is undocumented. (closes: #68987). + - Architecture specific: + - alpha + + Can't compile with define gnu_source with stdio and curses + (closes: #97603). + + Header conflicts on alpha (closes: #134558). + + lapack-dev: cannot link on alpha (closes: #144602). + + ICE `fixup_var_refs_1' (closes: #43001). + + Mutt segv on viewing list of attachments (closes: #47981). + + ICE building open-amulet (closes: #48530). + + ICE compiling hatman (closes: #55291). + + dead code removal in switch() broken (closes: #142844). + - arm + + Miscompilation using -fPIC on arm (closes: #90363). + + infinite loop with -O on arm (closes: #151675). + - i386 + + ICE when using -mno-ieee-fp and -march=i686 (closes: #87540). + - m68k + + Optimization (-O2) broken on m68k (closes: #146006). + - mips + + g++ exception catching does not work... (closes: #105569). + + update-menus gets Bus Error (closes: #120333). + - mipsel + + aspell: triggers ICE on mipsel (closes: #128367). + - powerpc + + -O2 produces wrong code (gnuchess example) (closes: #131454). + - sparc + + Misleading documentation for -malign-{jump,loop,function}s + (closes: #114029). + + Sparc GCC issue with -mcpu=ultrasparc (closes: #172956). + + flightgear: build failure on sparc (closes: #88694). + + -- Matthias Klose Fri, 16 May 2003 07:13:57 +0200 + +gcc-3.3 (1:3.3ds8-0pre9) unstable; urgency=high + + * gcc-3.3 second prerelease. + - Fixing exception handling on s390 (urgency high). + * Reenabled gpc build (I had it disabled ...). Closes: #192347. + + -- Matthias Klose Fri, 9 May 2003 07:32:14 +0200 + +gcc-3.3 (1:3.3ds8-0pre8) unstable; urgency=low + + * gcc-3.3 prerelease. + - Fixes gcj ICE (closes: #189545). + * For libstdc++ use the i486 atomicity implementation, introduced with + 0pre6, left out in 0pre7 (closes: #191684). + * Add README.Debian for treelang (closes: #190812). + * Apply NetBSD changes (Joel Baker). Closes: #191551. + * New symbols in libgcc1, tighten the shlibs dependency. + * Disable testsuite run on mips/mipsel because of an outdated libc-dev + package. + * Do not build libffi with debug information, although configuring + with --enable-debug. + + -- Matthias Klose Tue, 6 May 2003 06:53:49 +0200 + +gcc-3.3 (1:3.3ds7-0pre7) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030429). + * Revert upstream libstdc++ change (closes: #191145, #191147, #191148, + #191149, #149159, #149151, and other reports). + Sorry for not detecting this before the upload, seems to be + broken on i386 "only". + * hurd-i386: Use /usr/include, not /include. + * Disable gpc on hurd-i386 (closes: #189851). + * Disable building the debug version of libstdc++ on powerpc-linux + (fixes about 200 java test cases). + * Install libstdc++v3 man pages (closes: #127263). + + -- Matthias Klose Tue, 29 Apr 2003 23:28:44 +0200 + +gcc-3.3 (1:3.3ds6-0pre6) unstable; urgency=high + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030426). + * libstdc++-doc: Fix index.html link (closes: #189424). + * Revert back to the i486 atomicity implementation, that was used + for gcc-3.2 as well. Reopens: #184446, #185662. Closes: #189983. + For this reason, tighten the libstdc++5 shlibs dependency. See + http://lists.debian.org/debian-devel/2003/debian-devel-200304/msg01895.html + Don't build the ix86 specfic libstdc++ libs anymore. + + -- Matthias Klose Sun, 27 Apr 2003 19:47:54 +0200 + +gcc-3.3 (1:3.3ds5-0pre5) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030415). + * Disable treelang on powerpc. + * Disable gpc on m68k. + * Install locale data. Conflict with gcc-3.2 (<= 1:3.2.3-0pre8). + * Fix generated bits/atomicity.h (closes: #189183). + * Tighten libgcc1 shlibs dependency (new symbol _Unwind_Backtrace). + + -- Matthias Klose Wed, 16 Apr 2003 00:37:05 +0200 + +gcc-3.3 (1:3.3ds4-0pre4) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030412). + * Avoid sparc64 dependencies for libgcc1 on sparc (Clint Adams). + * Make the default sparc 32bit target v8 instead of v7. This mainly + enables hardmul, which should speed up v8 and v9 systems by a large + margin (Ben Collins). + * Tighten binutils dependency for sparc. + * On i386, build libstdc++ optimized for i486 and above. The library + in /usr/lib is built for i386. Closes: #184446, #185662. + * Add gpc build (from gcc-snapshot package). + * debian/control: Include all packages, that _can_ be built from + this source package (except the cross packages). + * Add m68k patches: m68k-const, m68k-subreg, m68k-loop. + * Run the 3.3 testsuite a second time with the installed gcc-3.2 + to check for regressions (promised, only this time, and for the + final release ;). Add build dependencies (gobjc-3.2, g77-3.2, g++-3.2). + + -- Matthias Klose Sat, 12 Apr 2003 10:11:11 +0200 + +gcc-3.3 (1:3.3ds3-0pre3) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030331). + * Reenable java on arm. + * Build-Depend on binutils-2.13.90.0.18-1.3 on m68k. Fixes all + bprob/gcov testsuite failures. + * Enable C++ build on arm. + * Enable the sparc64 build. + + -- Matthias Klose Mon, 31 Mar 2003 23:24:54 +0200 + +gcc-3.3 (1:3.3ds2-0pre2) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030317). + * Disable building the gcc-3.3-nof package. + * Disable Ada on mips and mipsel. + * Remove the workaround to build Ada on powerpc. + * Add GNU Free documentation license to copyright file. + * Update the sparc64 build patches (Clint Adams). Not yet enabled. + * Disable C++ on arm (Not yet tested). + * Add fix for ICE on powerpc (see: #184684). + + -- Matthias Klose Sun, 16 Mar 2003 21:40:57 +0100 + +gcc-3.3 (1:3.3ds1-0pre1) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030310). + * Add gccbug manpage. + * Don't build libgnat package (no shared library). + * Configure with --enable-sjlj-exceptions on hppa and m68k for + binary compatibility with libstdc++ built with gcc-3.2. + * Disable Java on arm-linux (never seen it sucessfully bootstrap). + * Install non-conflicting baseline README. + * multilib *.so and *.a moved to /usr/lib/gcc-lib/... , so that several + compiler versions can be installed concurrently. + * Remove libstdc++-incdir patch applied upstream. + * libstdc++ 64 bit development files now handled in -dev target. + (Gerhard Tonn) + * Drop build dependencies for gpc (tetex-bin, help2man, libncurses5-dev). + * Add libstdc++5-3.3-dev confict to libstdc++5-dev (<= 1:3.2.3-0pre3). + * Enable builds on m68k (all but C++ for the moment). gcc-3.3 bootstraps, + while gcc-3.2 doesn't. + + -- Matthias Klose Mon, 10 Mar 2003 23:41:00 +0100 + +gcc-3.3 (1:3.3ds0-0pre0) unstable; urgency=low + + * First gcc-3.3 package, built for s390 only. All other architectures + build the gcc-3.3-base package only. + To build the package on other architectures, edit debian/rules.defs + (macro no_dummy_archs). + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030301). + * Don't include the gcc locale files (would conflict with 3.2). + * Remove libffi-install-fix patch. + * Fix netbsd-i386 patches. + * Change priority of libstdc++5 and gcc-3.2-base to important. + * Install gcjh-wrapper for javah. + * gij suggests fastjar, gcj recommends fastjar. + * Allow builds using automake1.4 | automake (<< 1.5). + * Backport fix for to output more correct line numbers. + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Apply cross compilation patches submitted by Bastian Blank. + * Replace s390-biarch patch and copy s390-config-ml patch from 3.2 + (Gerhard Tonn). + * Configure using --enable-debug. + * Add infrastructure to only build a subset of binary packages. + * Rename libstdc++-{dev,dbg,pic,doc} packages. + * Build treelang compiler. + + -- Matthias Klose Sat, 1 Mar 2003 12:56:42 +0100 + +gcc-3.2 (1:3.2.3ds2-0pre3) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030228) + - Fixes bootstrap failure on alpha-linux. + - Fixes ICE on m68k (closes: #177016). + * Build Pascal with -O1 on powerpc, disable Pascal on arm, m68k and + sparc (due to wrong code generation for fwrite in glibc, + see PR optimization/9279). + * Apply cross compilation patches submitted by Bastian Blank. + + -- Matthias Klose Fri, 28 Feb 2003 20:26:30 +0100 + +gcc-3.2 (1:3.2.3ds1-0pre2) unstable; urgency=medium + + * gcc-3.2.3 prerelease (CVS 20030221) + - Fixes ICE on hppa (closes: #181813). + * Patch for ffitest in s390-java.dpatch deleted, since already fixed + upstream. (Gerhard Tonn) + * Build crtbeginT.o on m68k-linux (closes: #179807). + * Install gcjh-wrapper for javah (closes: #180218). + * gij suggests fastjar, gcj recommends fastjar (closes: #179298). + * Allow builds using automake1.4 | automake (<< 1.5) (closes: #180048). + * Backport fix for to output more correct line numbers (closes: #153965). + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Disable gpc on arm due to wrong code generation for fwrite in + glibc (see PR optimization/9279). + + -- Matthias Klose Sat, 22 Feb 2003 19:58:20 +0100 + +gcc-3.2 (1:3.2.3ds0-0pre1) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030210) + - Fixes long millicode calls on hppa (closes: #180520) + * New gpc-20030209 version. Remove gpc-update.dpatch and gpc-testsuite.dptch + as they are no longer needed. + * Fix netbsd-i386 patches (closes: #180129, #179931) + * m68k-bootstrap.dpatch: backport gcse.c changes from 3.3/MAIN to 3.2 + * Change priority of libstdc++5 and gcc-3.2-base to important. + + -- Ryan Murray Tue, 11 Feb 2003 06:18:09 -0700 + +gcc-3.2 (1:3.2.2ds8-1) unstable; urgency=low + + * gcc-3.2.2 release. + - Fixes ICE, regression from 2.95 (closes: #176117). + - Fixes ICE, regression from 2.95 (closes: #179161). + * libstdc++ for biarch installs now upstream to usr/lib64, + therefore mv usr/lib/64 usr/lib64 no longer necessary. (Gerhard Tonn) + + -- Ryan Murray Wed, 5 Feb 2003 01:35:29 -0700 + +gcc-3.2 (1:3.2.2ds7-0pre8) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030130). + * update s390 libffi patch + * debian/control: add myself to uploaders and change libc12-dev depends to + libc-dev on i386 (closes: #179128) + * Build-Depend on procps so that ps is available for logwatch + + -- Ryan Murray Fri, 31 Jan 2003 04:00:15 -0700 + +gcc-3.2 (1:3.2.2ds6-0pre7) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030128). + - Update needed for hppa. + - Fixes ICE on arm, regression from 2.95.x (closes: #168086). + - Can use default bison (1.875). + * Apply netbsd build patches (closes: #177674, #178328, #178325, + #178326, #178327). + * Run the logwatch script on "slow" architectures (arm, m68k) only. + * autoreconf.dpatch: Only update libtool.m4, which is newer conceptually + than libtool 1.4 (Ryan Murray). + * Apply autoreconf patch universally (Ryan Murray). + * More robust gij/gcj wrapper scripts, include /usr/lib/jni in default + JNI search path (Ben Burton). Closes: #167932. + * Build crtbeginT.o on m68k (closes: #177036). + * Fixed libc-dev source dependency (closes: #178602). + * Tighten shlib dependency to the current package version; should be + 1:3.2.2-1 for the final release (closes: #178867). + + -- Matthias Klose Tue, 28 Jan 2003 21:59:30 +0100 + +gcc-3.2 (1:3.2.2ds5-0pre6) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20030123). + * Build locales needed by the libstdc++ testsuite. + * Update config.{guess,sub} files from autotools-dev (closes: #177674). + * Disable Ada and Java on netbsd-i386 (closes: #177679). + * gnat: Add suggests for gnat-doc and ada-reference-manual. + + -- Matthias Klose Thu, 23 Jan 2003 22:16:53 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre5.1) unstable; urgency=low + + * Readd build dependency `locales' on arm. locales is now installable + * Add autoreconf patch for mips{,el}. (closes: #176311) + + -- Ryan Murray Wed, 22 Jan 2003 14:31:14 -0800 + +gcc-3.2 (1:3.2.2ds4-0pre5) unstable; urgency=low + + * Remove build dependency `libc6-dev-sparc64 [sparc]' for now. + * Remove build dependency `locales' on arm. locales is uninstallable + on arm due to the missing glibc-2.3. + * Use bison-1.35. bison-1.875 causes an hard error on the reduce/reduce + conflict in objc-parse.y. + + -- Matthias Klose Fri, 10 Jan 2003 10:10:43 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre4) unstable; urgency=low + + * Try building with gcc-2.95 on m68k-linux. Building gcc-3.2 with gcc-3.2 + does not work for me. m68k-linux doesn't look good at all ... + * Fix s390 build error. + * Add locales to build dependencies. A still unsolved issue is the + presence of the locales de_DE, en_PH, en_US, es_MX, fr_FR and it_IT, + or else some tests in the libstdc++ testsuite will fail. + * Put all -nof files in the -nof package (closes: #175253). + * Correctly exit logwatch script (closes: #175251). + * Install linker-map.gnu file for libstdc++_pic (closes: #175144). + * Install versioned gpcs docs only (closes: #173844). + * Include gpc test results in gpc package. + * Link local libstdc++ documentation to local source-level documentation. + * Clarify libstdc++ description (so version and library version). + Closes: #175799. + * Include library in libstdc++-dbg package (closes: #176005). + + -- Matthias Klose Wed, 8 Jan 2003 23:39:50 +0100 + +gcc-3.2 (1:3.2.2ds3-0pre3) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021231). + - Fix loop count computation for preconditioned unrolled loops. + Closes: #162919. + - Fix xmmintrin.h (_MM_TRANSPOSE4_PS) CVS 20021027 (closes: #163647). + - Fix [PR 8601] strlen/template interaction causes ICE CVS 20021201. + Closes: #166143. + * Watch the log files, which are written during the testsuite runs and print + out a message, if there is still activity. No more buildd timeouts on arm + and m68k ... + * Remove gpc's reference to librx1g-dev package (closes: #172953). + * Remove trailing dots on package descriptions. + * Fix external reference to cpp.info in gcc.info (closes: #174598). + + -- Matthias Klose Tue, 31 Dec 2002 13:47:52 +0100 + +gcc-3.2 (1:3.2.2ds2-0pre2) unstable; urgency=medium + + * Friday, 13th upload, so what do you expect ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021212). + * Fix gnat build (autobuild maintainers: please revert back to gnat-3.2 + (<= 1:3.2.1ds6-1) for building gnat-3.2, if the build fails building + gnatlib and gnattools). + * Really disable sparc64 support. + + -- Matthias Klose Fri, 13 Dec 2002 00:26:37 +0100 + +gcc-3.2 (1:3.2.2ds1-0pre1) unstable; urgency=low + + * A candidate for the transition ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021210). + - doc/invoke.texi: Remove last reference to -a (closes: #171748). + * Disable sparc64 support. For now please use egcs64 to build sparc64 + kernels. + * Disable Pascal on the sparc architecture (doesn't bootstrap). + + -- Matthias Klose Tue, 10 Dec 2002 22:33:13 +0100 + +gcc-3.2 (1:3.2.2ds0-0pre0) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021202). + - Should fix _Pragma expansion within macros (closes: #157416). + * New gpc-20021128 version. Run check using EXTRA_TEST_PFLAGS=-g0 + * Add tetex-bin to build dependencies (gpc needs it). Closes: #171203. + + -- Matthias Klose Tue, 3 Dec 2002 08:22:33 +0100 + +gcc-3.2 (1:3.2.1ds6-1) unstable; urgency=low + + * gcc-3.2.1 final release. + * Build gpc-20021111 for all architectures. hppa and i386 are + known to work. For the other architectures, send the usual FTBFS ... + WARNING: this gpc version is an alpha version, especially debug info + doesn't work well, so use -g0 for compiling. If you need a stable + gpc compiler, use gpc-2.95. + * Encode the gpc upstream version in the package name, the gpc release + date in the version number (requested by gpc upstream). + * Added libncurses5-dev and libgmp3-dev as build dependencies for the + gpc tests and runtime. + * Clean CVS files as well (closes: #169101). + * s390-biarch.dpatch added, backported from CVS (Gerhard Tonn). + * s390-config-ml.dpatch added, disables biarch for java, + libffi and boehm-gc on s390. They need a 64 bit runtime + during build which is not yet available on s390 (Gerhard Tonn). + * Biarch support for packaging adapted (Gerhard Tonn). + biarch variable added and with-sparc64 variable substituted in + most places by biarch. + dh_shlibdeps is applied only to 32 bit libraries on s390, since + ldd for 64 bit libraries don't work on 32 bit runtime. + Build dependency to libc6-dev-s390x added. + + -- Matthias Klose Wed, 20 Nov 2002 00:20:58 +0100 + +gcc-3.2 (1:3.2.1ds5-0pre6) unstable; urgency=medium + + * gcc-3.2.1 prerelease. + * Removed arm patch integrated upstream. + * Adjust gnat build dependency (closes: #167116). + * Always configure with --enable-clocale=gnu. The autobuilders do have + locales installed, but not generated the "de_DE" locale needed for + the autoconf test in libstdcc++-v3/aclocal.m4. + * libstdc++ documentaion: Don't compresss '*.txt' referenced by html pages. + + -- Matthias Klose Tue, 12 Nov 2002 07:19:44 +0100 + +gcc-3.2 (1:3.2.1ds4-0pre5) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20021103). + * sparc64-build.dpatch: Updated. Lets sparc boostrap again. + * s390-loop.dpatch removed, already fixed upstream (Gerhard Tonn). + * bison.dpatch: Removed, patch submitted upstream. + * backport-java-6865.dpatch: Apply again during build. + * Tighten glibc dependency (closes: #166703). + + -- Matthias Klose Sun, 3 Nov 2002 12:22:02 +0100 + +gcc-3.2 (1:3.2.1ds3-0pre4) unstable; urgency=high + + * gcc-3.2.1 snapshot (CVS 20021020). + - Expansion of _Pragma within macros fixed (closes: #157416). + * FTBFS: With the switch to bison-1.50 (and 1.75), gcc-3.2 fails to build from + source on Debian unstable systems. This is fixed in gcc HEAD, but not on + the current release branch. + HELP NEEDED: + - check what is missing from the patches in debian/patches/bison.dpatch. + This is a backport of the bison related patches, but showing regressions + in the gcc testsuite, so it cannot be applied. + - build gcc using byacc (bootstrap currently fails using byacc). + - build bison-1.35 in it's own package (the current 1.35-3 package fails + to build form source). + - and finally ask upstream to backport the patch to the branch. It's not + helpful not beeing able to follow the stable branch. Maybe we should + just switch to gcc HEAD as BSD does ... + As a terrible workaround, build the sources from CVS first on a machine, + with bison-1.35 installed, then package the tarball, so the bison + generated files are not rebuilt. + + * re-add lost patch: configure with --enable-__cxa_atexit (closes: #163422), + Therefore urgency high. + * gcj-wrapper, gij-wrapper: Accept names starting with `.' (closes: #163172, + #164009). + * Point g++ manpage to correct g++ version (closes: #162843). + * Support for i386-freebsd-gnu (closes: #163883). + * s390-java.dpatch replaced with backport from cvs head (Gerhard Tonn). + * Disable the testsuite run on the Hurd (closes: #159650). + * s390-loop.dpatch added, fixes runtime problem (Gerhard Tonn). + * debian/patches/bison.dpatch: Backport for bison-1.75 compatibility. + Don't use it due to regressions. + * debian/patches/backport-java-6865.dpatch: Directly applied in the + included tarball because of bison problems. + * Make fixincludes priority optional, so linda can depend on it. + * Tighten binutils dependency. + + -- Matthias Klose Sun, 20 Oct 2002 10:52:49 +0200 + +gcc-3.2 (1:3.2.1ds2-0pre3) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020923). + * Run the libstdc++ check-abi script. Results are put into the file + /usr/share/doc/libstdc++5/README.libstdc++-baseline in the libstdc++5-dev + package. This file contains a new baseline, if no baseline for this + architecture is included in the gcc sources. + * gcj-wrapper: Accept files starting with an underscore, accept + path names (closes: #160859, #161517). + * Explicitely call automake-1.4 when rebuilding Makefiles (closes: #161438). + * Let installed fixincludes script find files in /usr/lib/fixincludes. + * debian/rules.patch: Add .NOTPARALLEL as target, so that patches are + applied sequentially (closes: #159395). + + -- Matthias Klose Tue, 24 Sep 2002 07:36:56 +0200 + +gcc-3.2 (1:3.2.1ds1-0pre2) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020913). Welcome back m68k in bootstrap land! + * Fix arm-tune.dpatch (closes: #159354). + * Don't overwrite LD_LIBRARY_PATH in build (closes: #158459). + * --disable-__cxa_atexit on NetBSD (closes: #159620). + * Reenable installation of message catalogs (disabled in 3.2-0pre2). + Closes: #160175. + * Ben Collins + - Re-enable sparc64 build. This time, it's part of the default compiler. + I have disabled 64/alt libraries as they are too much overhead. All + libraries build 64bit, but currently only libgcc/libstdc++ include the + 64bit libraries. + Closes: #160404. + * Depend on autoconf2.13, instead of autoconf. + * Phil Blundell + - debian/patches/arm-update.dpatch: Fix python2.2 build failure. + + -- Matthias Klose Sat, 7 Sep 2002 08:05:02 +0200 + +gcc-3.2 (1:3.2.1ds0-0pre1) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20020829). + New g++ option -Wabi: + Warn when G++ generates code that is probably not compatible with the + vendor-neutral C++ ABI. Although an effort has been made to warn about + all such cases, there are probably some cases that are not warned about, + even though G++ is generating incompatible code. There may also be + cases where warnings are emitted even though the code that is generated + will be compatible. + The current version of the ABI is 102, defined by the __GXX_ABI_VERSION + macro. + * debian/NEWS.*: Updated. + * Fix libstdc++-dev dependency on libc-dev for the Hurd (closes: #157004). + * Add versioned expect build dependency. + * Tighten binutils dependency to 2.13.90.0.4. + * debian/patches/arm-tune.dpatch: Increase stack limit for configure. + * 3.2-0pre4 did build gnat-3.2 compilers for all architectures. Build-Depend + on gnat-3.2 now (closes: #156734). + * Remove bashism's in gcj-wrapper (closes: #157982). + * Add -cp and -classpath options to gij(1). Backport from HEAD (#146634). + * Add fastjar documentation. + + -- Matthias Klose Fri, 30 Aug 2002 10:35:00 +0200 + +gcc-3.2 (1:3.2ds0-0pre4) unstable; urgency=low + + * Correct build dependency on gnat-3.1. + + -- Matthias Klose Mon, 12 Aug 2002 01:21:58 +0200 + +gcc-3.2 (1:3.2ds0-0pre3) unstable; urgency=low + + * gcc-3.2 upstream prerelease. + * Disable all configure options, which are standard: + --enable-threads=posix --enable-long-long, --enable-clocale=gnu + + -- Matthias Klose Fri, 9 Aug 2002 21:59:08 +0200 + +gcc-3.2 (1:3.2ds0-0pre2) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020802). + * Fix g++-include dir. + * Don't install the locale files (temporarily, until we don't build + gcc-3.1 anymore). + * New package libgcj-common to avoid conflict with classpath package. + + -- Matthias Klose Sat, 3 Aug 2002 09:08:34 +0200 + +gcc-3.2 (1:3.2ds0-0pre1) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020729). + + -- Matthias Klose Mon, 29 Jul 2002 20:36:54 +0200 + +gcc-3.1 (1:3.1.1ds3-1) unstable; urgency=low + + * gcc-3.1.1 release. Following this release we will have a gcc-3.2 + release soon, which is gcc-3.1.1 plus some C++ ABI changes. Once + gcc-3.2 hits the archives, gcc-3.1.1 will go away. + * Don't build the sparc64 compiler. The packaging/patches are + currently broken. + * Add missing headers on m68k and powerpc. + * Install libgcc_s_nof on powerpc. + * Install libffi's copyright and doc files (closes: #152198). + * Remove dangling symlink (closes: #149002). + * libgcj3: Add a conflict to the classpath package (closes: #148664). + * README.C++: Fix URLs. + * libstdc++-dbg: Install into /usr/lib/debug, document it. + * backport-java-6865.dpatch: backport from HEAD. + * Fix typo in gcj docs (closes: #148890). + * Change libstdc++ include dir: /usr/include/c++/3.1. + * libstdc++-codecvt.dpatch: New patch (closes: #149776). + * Build libstdc++-pic package. + * Move 64bit libgcc in its own package libgcc1-64 (closes: #147249). + * Tighten glibc dependency. + + -- Matthias Klose Mon, 29 Jul 2002 00:34:49 +0200 + +gcc-3.1 (1:3.1.1ds2-0pre3) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch). + * Updated s390-java patch (Gerhard Tonn). + * Don't use -O in STAGE1_FLAGS on m68k. + * Fix `-classpath' option in gcj-wrapper script (closes: #150142). + * Remove g++-cxa-atexit patch, use --enable-__cxa_atexit configure option. + + -- Matthias Klose Wed, 3 Jul 2002 23:52:58 +0200 + +gcc-3.1 (1:3.1.1ds1-0pre2) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch), fixing an ObjC regression. + * Welcome m68k to bootstrap land (thanks to Andreas Schwab). + * Add javac wrapper for gcj-3.1 (Michael Koch). + * Remove dangling symlink in /usr/share/doc/gcc-3.1 (closes: #149002). + + -- Matthias Klose Fri, 7 Jun 2002 00:26:05 +0200 + +gcc-3.1 (1:3.1.1ds0-0pre1) unstable; urgency=low + + * Updated to CVS 2002-05-31 (gcc-3_1-branch). + * Change priorities from fastjar and gij-wrapper-3.1 from 30 to 31. + * Update arm-tune patch. + * Install xmmintrin.h header on i386 (closes: #148181). + * Install altivec.h header on powerpc. + * Call correct gij in gij-wrapper (closes: #148662, #148682). + + -- Matthias Klose Wed, 29 May 2002 22:47:40 +0200 + +gcc-3.1 (1:3.1ds2-2) unstable; urgency=low + + * Tighten binutils dependency. + * Fix libstdc include dir for multilibs (Dan Jacobowitz). + + -- Matthias Klose Tue, 21 May 2002 08:03:49 +0200 + +gcc-3.1 (1:3.1ds2-1) unstable; urgency=low + + * GCC 3.1 release. + * Ada cannot be built by the autobuilders for the first time. Do it by hand. + gnatgcc and gnatbind need to be in the PATH. + * Build with CC=gnatgcc, when building the Ada compiler. + * Hurd fixes. + * Don't build the sparc64 compiler; the hack isn't up to date and glibc + isn't converted to use /lib64 and /usr/lib64. + * m68k-linux shows bootstrap comparision failures. If you want to build + the compiler anyway and ignore the bootstrap comparision failure, edit + debian/rules.patch and uncomment the patch to ignore the failure. See + /usr/share/doc/gcc-3.1/BOOTSTRAP_COMPARISION_FAILURE for the differences. + + -- Matthias Klose Wed, 15 May 2002 09:53:00 +0200 + +gcc-3.1 (1:3.1ds1-0pre6) unstable; urgency=low + + * Build from the "final prerelease" tarball (gcc-3.1-20020508.tar.gz). + * Build gnat-3.1-doc package. + * Build fastjar package without building java packages. + * Hurd fixes. + * Updated sparc64-build patch. + * Add s390-ada patch (Gerhard Tonn). + * Undo the dwarf2 support for hppa from -0pre5. + + -- Matthias Klose Thu, 9 May 2002 17:21:09 +0200 + +gcc-3.1 (1:3.1ds0-0pre5) unstable; urgency=low + + * Use /usr/include/g++-v3-3.1 as C++ include dir. + * Update s390-java patch (Gerhard Tonn). + * Tighten binutils dependency (gas patch for m68k-linux). + * Use gnat-3.1 as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * dwarf2 support hppa: a snapshot of the gcc/config/pa directory + from the trunk dated 2002-05-02. + + -- Matthias Klose Fri, 3 May 2002 22:51:37 +0200 + +gcc-3.1 (1:3.1ds0-0pre4) unstable; urgency=low + + * Use gnat-5.00w as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * Don't build the shared libgnat library. It assumes an existing shared + libiberty library. + * Don't install the libgcjgc library. + + -- Matthias Klose Thu, 25 Apr 2002 08:48:04 +0200 + +gcc-3.1 (1:3.1ds0-0pre3) unstable; urgency=low + + * Build fastjar on all architectures. + * Update m68k patches. + * Update s390-java patch (Gerhard Tonn). + + -- Matthias Klose Sun, 14 Apr 2002 15:34:47 +0200 + +gcc-3.1 (1:3.1ds0-0pre2) unstable; urgency=low + + * Add Ada support. To successfully build, a working gnatbind and gcc + driver with Ada support is needed. + * Apply needed arm patches from 3.0.4. + + -- Matthias Klose Sat, 6 Apr 2002 13:17:08 +0200 + +gcc-3.1 (1:3.1ds0-0pre1) unstable; urgency=low + + * First try for gcc-3.1. + + -- Matthias Klose Mon, 1 Apr 2002 23:39:30 +0200 + +gcc-3.0 (1:3.0.4ds3-6) unstable; urgency=medium + + * Second try at fixing sparc build problems. + + -- Phil Blundell Sun, 24 Mar 2002 14:49:26 +0000 + +gcc-3.0 (1:3.0.4ds3-5) unstable; urgency=medium + + * Enable java on ARM. + * Create missing directory to fix sparc build. + + -- Phil Blundell Fri, 22 Mar 2002 20:21:59 +0000 + +gcc-3.0 (1:3.0.4ds3-4) unstable; urgency=low + + * Link with system zlib (closes: #136359). + + -- Matthias Klose Tue, 12 Mar 2002 20:47:59 +0100 + +gcc-3.0 (1:3.0.4ds3-3) unstable; urgency=low + + * Build libf2c (pic and non-pic) with -mieee on alpha-linux. + + -- Matthias Klose Sun, 10 Mar 2002 00:37:24 +0100 + +gcc-3.0 (1:3.0.4ds3-2) unstable; urgency=medium + + * Apply hppa-build patch (Randolph Chung). Closes: #136731. + * Make libgcc1 conflict/replace with libgcc1-sparc64. Closes: #135709. + * gij-3.0 provides the `java' command. Closes: #128947. + * Depend on binutils (>= 2.11.93.0.2-2), allows stripping of libgcj.a + again. Closes: #99307. + * Update README.cross pointing to the README of the toolchain-source + package. + + -- Matthias Klose Wed, 6 Mar 2002 21:53:34 +0100 + +gcc-3.0 (1:3.0.4ds3-1) unstable; urgency=low + + * Final gcc-3.0.4 release. + * debian/rules.d/binary-java.mk: Fix dormant typo, exposed by removing the + duplicate libgcj dependency and adding the gij-3.0 package. + Closes: #134005. + * New patch by Phil Blundell to fix scalapack build error on m68k. + + -- Matthias Klose Wed, 20 Feb 2002 23:59:43 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020210) unstable; urgency=low + + * Make the base package dependent on the binary-arch target. Closes: #133433. + * Get libstdc++ on arm woring (define _GNU_SOURCE). Closes: #133435. + + -- Matthias Klose Mon, 11 Feb 2002 20:31:12 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020209) unstable; urgency=high + + * Update to CVS sources (20020209 gcc-3_0-branch). + * Apply patch to fix bootstrap error on arm-linux (submitted upstream + by Phil Blundell). Closes: #130422. + * Make base package architecture any. + * Decouple versioned shlib dependencies from release number for + libobjc as well. + + -- Matthias Klose Sat, 9 Feb 2002 01:30:11 +0100 + +gcc-3.0 (1:3.0.4ds1-0pre020203) unstable; urgency=medium + + * One release critical bug outstanding: + - bootstrap error on arm. + * Update to CVS sources (20020203 gcc-3_0-branch). + * Fixed upstream: PR c/3504: Correct documentation of __alignof__. + Closes: #85445. + * Remove libgcc-powerpc patch, integrated upstream (closes: #131977). + * Tighten binutils build dependency (to address #126162). + * Move jv-convert to gcj package (closes: #131985). + + -- Matthias Klose Sun, 3 Feb 2002 14:47:14 +0100 + +gcc-3.0 (1:3.0.4ds0-0pre020127) unstable; urgency=low + + * Two release critical bugs outstanding: + - bootstrap error on arm. + - bus errors for C++ and java executables on sparc (see the testsuite + results). + * Update to CVS sources (20020125 gcc-3_0-branch). + * Enable java support for s390 architecture (patch from Gerhard Tonn). + * Updated NEWS file for 3.0.3. + * Disable building the gcc-sparc64, but build a multilibbed compiler + for sparc as the default. + * Disabled the subreg-byte patch for sparc (request from Ben Collins). + * Fixed reference to libgcc1 package in README (closes: #126218). + * Do recommend libc-dev, not depend on it. For low-end or embedded systems + the dependency on libc-dev can make the difference between + having enough or having too little space to build a kernel. + * README.cross: Updated by Hakan Ardo. + * Decouple versioned shlib dependencies from release number. Closes: #118391. + * Fix diversions for gcc-3.0-sparc64 package (closes: #128178), + unconditionally remove `sparc64-linux-gcc' alternative. + * g77/README.libg2c.Debian: New file mentioning `libg2c-pic'. The next + g77 version (3.1) does build a static and shared library (closes: #104250). + * Fix formatting errors in the synopsis of the java man pages. Maybe the + reason for #127571. Closes: #127571. + * fastjar: Fail for the (currently incorrect) -u option. Addresses: #116145. + Add alternative for `jar' using priority 30 (closes: #118648). + * jv-convert: Add --help option and man page. Backport from HEAD branch. + * libgcj2-dev: Remove duplicate dependency (closes: #127805). + * Giving up and make just another new package gij-X.Y with only the gij-X.Y + binary for policy conformance (closes: #127111). + * gij: Provides an alternative for `java' (priority 30) using a wrapper + script (Stephen Zander) (closes: #128974). Added simple manpage. + + -- Matthias Klose Sun, 27 Jan 2002 13:33:41 +0100 + +gcc-3.0 (1:3.0.3ds3-1) unstable; urgency=low + + * Final gcc-3.0.3 release. + * Do not compress .txt files in libstdc++ docs referenced from html + pages (closes: #124136). + * libstdc++-dev suggests libstdc++-doc. + * debian/patches/gcc-ia64-NaT.dpatch: Update (closes: #123685). + + -- Matthias Klose Fri, 21 Dec 2001 02:54:11 +0100 + +gcc-3.0 (1:3.0.3ds2-0pre011215) unstable; urgency=low + + * Update to CVS sources (011215). + * libstdc++ documentation updated upstream (closes: #123790). + * debian/patches/gcc-ia64-NaT.dpatch: Disable. Fixes bootstrap error + on ia64 (#123685). + + -- Matthias Klose Sat, 15 Dec 2001 14:43:21 +0100 + +gcc-3.0 (1:3.0.3ds1-0pre011210) unstable; urgency=medium + + * Update to CVS sources (011208). + * Supposed to fix powerpc build error (closes: #123155). + + -- Matthias Klose Thu, 13 Dec 2001 07:26:05 +0100 + +gcc-3.0 (1:3.0.3ds0-0pre011209) unstable; urgency=medium + + * Update to CVS sources (011208). Frozen for upstream 3.0.3 release. + * Apply contrib/PR3145.patch, a backport of Nathan Sidwell's patch to + fix PR c++/3145, the infamous "virtual inheritance" bug. This affected + especially KDE2 (eg. artsd). Franz Sirl + * cc1plus segfault in strength reduction fixed upstream. Closes: #122547. + * debian/patches/gcc-ia64-NaT.dpatch: Add patch to avoid a bug that can + cause miscompiled userapps to crash the kernel. Closes: #121924. + * Reenable shared libgcc for powerpc. Fixed upstream. + http://gcc.gnu.org/ml/gcc-patches/2001-11/msg00340.html + debian/patches/libgcc-powerpc.dpatch: New patch. + * Add upstream changelogs. + * Remove gij alternative. Move to gij package. + + -- Matthias Klose Sun, 9 Dec 2001 09:36:48 +0100 + +gcc-3.0 (1:3.0.2ds4-4) unstable; urgency=medium + + * Disable building of libffi on mips and mipsel. + (closes: #117503). + * Enable building of shared libgcc on s390 + (closes: #120452). + + -- Christopher C. Chimelis Sat, 1 Dec 2001 06:15:29 -0500 + +gcc-3.0 (1:3.0.2ds4-3) unstable; urgency=medium + + * Fix logic to build libffi without java (closes: #117503). + + -- Matthias Klose Sun, 4 Nov 2001 14:34:50 +0100 + +gcc-3.0 (1:3.0.2ds4-2) unstable; urgency=medium + + * Enable java for ia64 (Jeff Licquia). Closes: #116798. + * Allow building of libffi without gcj (Jeff Licquia). + New libffi packages for arm hurd-i386 mips mipsel, + still missing: hppa, s390. + * debian/NEWS.gcc: Add 3.0.2 release notes. + * debian/patches/hppa-align.dpatch: New patch from Alan Modra, + submitted by Randolph Tausq. + + -- Matthias Klose Thu, 25 Oct 2001 23:59:31 +0200 + +gcc-3.0 (1:3.0.2ds4-1) unstable; urgency=medium + + * Final gcc-3.0.2 release. The source tarball is not the released + tarball, but taken from CVS 011024). + * Remove patch for s390, included upstream. + + -- Matthias Klose Wed, 24 Oct 2001 00:49:40 +0200 + +gcc-3.0 (1:3.0.2ds3-0pre011014) unstable; urgency=low + + * Update to CVS sources (011014). Frozen for upstream 3.0.2 release. + Closes: #109351, #114099, #114216, #105741 (allegro3938). + * Added debian/patches/fastjar.dpatch, which makes fastjar extract + filenames correctly (previously, some had incorrect names on extract). + Closes: #113236. + * Priorities fixed in the past (closes: #94404). + + -- Matthias Klose Sun, 14 Oct 2001 13:19:43 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010923) unstable; urgency=low + + * Bootstraps on powerpc again (closes: #112777). + + -- Matthias Klose Sun, 23 Sep 2001 01:32:11 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010922) unstable; urgency=low + + * Update to CVS sources (010922). + * Fixed upstream (closes: #111801). #105569 on hppa. + * Update hppa patch (Matt Taggart). + * Fix libstdc++-dev package description (closes: #112758). + * debian/rules.d/binary-objc.mk: Fix build error (closes: #112462). + * Make gobjc-3.0 conflict with gcc-3.0-sparc64 (closes: #111772). + + -- Matthias Klose Sat, 22 Sep 2001 09:34:49 +0200 + +gcc-3.0 (1:3.0.2ds1-0pre010908) unstable; urgency=low + + * Update to CVS sources (010908). + * Update hppa patch (Matt Taggart). + * Depend on libgc6-dev, not libgc5-dev, which got obsolete (during + the freeze ...). However adds s390 support (closes: #110189). + * debian/patches/m68k-reload.dpatch: New patch (Roman Zippel). + Fixes #89023. + * debian/patches/gcc-sparc.dpatch: New patch ("David S. Miller"). + Fixes libstdc++ testsuite failures on sparc. + + -- Matthias Klose Sat, 8 Sep 2001 14:26:20 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010826) unstable; urgency=low + + * gcc-3.0-nof: Fix symlink to gcc-3.0-base doc directory. + * debian/patches/gcj-without-rpath: New patch. + * Remove self dependency on libgcj package. + * Handle diversions for upgrades from 3.0 and 3.0.1 -> 3.0.2 + in gcc-3.0-sparc64 package. + * Build libg2c.a with -fPIC -DPIC and name the result libg2c-pic.a. + Link with this library to avoid linking with non-pic code. + Use this library when building dynamically loadable objects (python + modules, gimp plugins, ...), which need to be linked against g2c or + a library which is linked against g2c (i.e. lapack). + Packages needing '-lg2c-pic' must have a build dependency on + 'g77-3.0 (>= 1:3.0.2-0pre010826). + + -- Matthias Klose Sun, 26 Aug 2001 13:59:03 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010825) unstable; urgency=low + + * Update to CVS sources (010825). + * Add libc6-dev-sparc64 to gcc-3.0-sparc64 and to sparc build dependencies. + * Remove conflicts on egcc package (closes: #109718). + * Fix gcc-3.0-nof dependency. + * s390 patches against gcc-3.0.1 (Gerhard Tonn). + * debian/control: Require binutils (>= 2.11.90.0.27) + + -- Matthias Klose Sat, 25 Aug 2001 10:59:15 +0200 + +gcc-3.0 (1:3.0.1ds3-1) unstable; urgency=low + + * Final gcc-3.0.1 release. + * Changed upstream: default of -flimit-inline is 600 (closes: #106716). + * Add fastjar man page (submitted by "The Missing Man Pages Project", + http://www.netmeister.org/misc/m2p2i/) (closes: #103051). + * Fixed in last upload as well: #105246. + * debian/patches/cpp-memory-leak.dpatch: New patch + * Disable installation of shared libgcc on s390 (Gerhard Tonn). + + -- Matthias Klose Mon, 20 Aug 2001 20:47:13 +0200 + +gcc-3.0 (1:3.0.1ds2-0pre010811) unstable; urgency=high + + * Update to CVS sources (010811). Includes s390 support. + * Add xlibs-dev to Build-Depends (libgcj). + * Enable java for powerpc, disable java for ia64. + * Enable ObjC garbage collection for all archs, which have a libgc5-dev + package. + * New patch libstdc++-codecvt (Michael Piefel) (closes: #104614). + * Don't strip static libgcj library (work around binutils bug #107812). + * Handle diversions for upgrade 3.0 -> 3.0.1 in gcc-3.0-sparc64 package + (closes: #107569). + + -- Matthias Klose Sat, 11 Aug 2001 20:42:15 +0200 + +gcc-3.0 (1:3.0.1ds1-0pre010801) unstable; urgency=high + + * Update to CVS sources (010801). (closes: #107012). + * Remove build dependency on non-free graphviz and include pregenerated + docs (closes: #107124). + * Fixed in 3.0.1 (closes: #99307). + * Updated m68k-updates patch (Roman Zippel). + * Another fix for ia64 packaging bits (Randolph Chung). + + -- Matthias Klose Tue, 31 Jul 2001 21:52:55 +0200 + +gcc-3.0 (1:3.0.1ds0-0pre010727) unstable; urgency=high + + * Update to CVS sources (010727). + * Add epoch to source version. Change '.dsx' to 'dsx', so that + 3.1.1ds0 gt 3.1ds7 (closes: #106538). + + -- Matthias Klose Sat, 28 Jul 2001 09:56:29 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010723) unstable; urgency=high + + * ia64 packaging bits (Randolph Chung) (closes: #106252). + + -- Matthias Klose Mon, 23 Jul 2001 23:02:03 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010721) unstable; urgency=high + + * Update to CVS sources (010721). + - Remove patches applied upstream: libstdc++-limits.dpatch, + objc-data-references + - Updated other patches. + * Fix gij alternative (closes: #103468, #103883). + * Patch to fix bootstrap on sparc (closes: #103568). + * Corrected (closes: #105371) and updated README.Debian. + * m68k patches for sucessful bootstrap (Roman Zippel). + * Add libstdc++v3 porting hints to README.Debian and README.C++. + * m68k md fix (#105622) (Roman Zippel). + * debian/rules2: Disable non-functional ulimit on Hurd (#105884). + * debian/control: Require binutils (>= 2.11.90.0.24) + * Java is enabled for alpha (closes: #87300). + + -- Matthias Klose Sun, 22 Jul 2001 08:24:04 +0200 + +gcc-3.0 (3.0.ds9-4) unstable; urgency=high + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. If sparc doesn't build, + then IMHO it's better to remove it from testing. + * debian/control.m4: Set uploaders field. Adjust description of + gcc-3.0 (binary) package (closes: #102271, #102620). + * Separate gij.1 in it's own pseudo man page (closes: #99523). + * debian/patches/java-manpages.dpatch: New patch. + * libgcj: Install unversioned gij. + + -- Matthias Klose Tue, 3 Jul 2001 07:38:08 +0200 + +gcc-3.0 (3.0.ds9-3) unstable; urgency=high + + * Reenable configuration with posix threads on i386 (lost in hurd-i386 + merge). + + -- Matthias Klose Sun, 24 Jun 2001 22:21:45 +0200 + +gcc-3.0 (3.0.ds9-2) unstable; urgency=medium + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. + * Add libgcc0 and libgcc300 to the build conflicts (#102041). + * debian/README.FIRST: Removed (#101534). + * Updated subreg-byte patch (doc files). + * Disable java for the Hurd, mips and mipsel (#101570). + * Patch for building on the Hurd (#101708) (Jeff Bailey ). + * Packaging fixes for the Hurd (#101711) (Jeff Bailey ). + * Include pregenerated doxygen (1.2.6) docs for libstdc++-v3 (#101557). + The current doxygen-1.2.8.1 segaults. + * C++: Enable -fuse-cxa-atexit by default (#101901). + * Correct mail address in gccbug (#101743). + * Make rules resumable after failure in binary-xxx targets (#101637). + + -- Matthias Klose Sun, 24 Jun 2001 16:04:53 +0200 + +gcc-3.0 (3.0.ds9-1) unstable; urgency=low + + * Final 3.0 release. + * Update libgcc version number (#100983, #100988, #101069, #101115, #101328). + * Updated hppa-build patch (Matt Taggart ). + * Disable java for hppa. + * Updated subreg-byte patch for sparc (Ben Collins). + + -- Matthias Klose Mon, 18 Jun 2001 18:26:04 +0200 + +gcc-3.0 (3.0.ds8-0pre010613) unstable; urgency=low + + * Update patches for recent (010613 23:13 +0200) CVS sources. + * Fix packaging bugs (#100459, #100447, #100483). + * Build-Depend on gawk, mawk doesn't work well with test_summary. + + -- Matthias Klose Wed, 13 Jun 2001 23:13:38 +0200 + +gcc-3.0 (3.0.ds7-0pre010609) unstable; urgency=low + + * Fix build dependency for the hurd (#99164). + * Update patches for recent (010609) CVS sources. + * Disable java on powerpc (link error in libjava). + * gcc-3.0-base.postinst: Don't prompt for non-interactive installs (#100110). + + -- Matthias Klose Sun, 10 Jun 2001 09:45:57 +0200 + +gcc-3.0 (3.0.ds6-0pre010526) unstable; urgency=high + + * Urgency "high" for replacing the gcc-3.0 snapshots in testing, which + now are incompatile due to the changed ABIs. + * Upstream begins tagging with "gcc-3_0_pre_2001mmdd". + * Tighten dependencies to install only binary packages derived from + one source (#98851). Tighten libc6-dev dependency to match libc6. + + -- Matthias Klose Sun, 27 May 2001 11:35:31 +0200 + +gcc-3.0 (3.0.ds6-0pre010525) unstable; urgency=low + + * ATTENTION: The ABI (exception handling) changed. No upgrade path from + earlier snapshots (you had been warned in the postinst ...) + Closing #93597, #94576, #96448, #96461. + You have to rebuild + * HELP is appreciated for scanning the Debian BTS and sending followups + to bug reports!!! + * Should we name debian gcc uploads? What about a "still seeking + g++ maintainer" upload? + * Fixed in gcc-3.0: #97030 + * Update patches for recent (010525) CVS sources. + * Make check depend on build target (fakeroot problmes). + * debian/rules.d/binary-libgcc.mk: new file, build first. + * Free memory detection on the hurd for running the testsuite. + * Update debhelper build dependency. + * libstdc++-doc: Include doxygen generated docs. + * Fix boring packaging bugs, too tired for appropriate changelogs ... + #93343, #96348, #96262, #97134, #97905, #96451, #95812, #93157 + * Fixed bugs: #87000. + + -- Matthias Klose Sat, 26 May 2001 23:10:42 +0200 + +gcc-3.0 (3.0.ds5-0pre010510) unstable; urgency=low + + * Update patches for recent (010506) CVS sources. + * New version of source, as of 2001-05-10 + * New version of gpc source, as of 2001-05-06 (disabled by default). + * Make gcc-3.0-sparc64 provide an alternative for sparc64-linux-gcc, + since it can build kernels just fine (it seems) + * Add hppa patch from Matt Taggart + * Fix objc info inclusion...now merged with gcc info + * Do not install the .la for libstdc++, since it confuses libtool linked + applications when libstdc++3-dev and libstdc++2.10-dev are both + installed (closes #97905). + * Fixed gcc-base and libgcc section/prio to match overrides + + -- Ben Collins Mon, 7 May 2001 00:08:52 +0200 + +gcc-3.0 (3.0.ds5-0pre010427) unstable; urgency=low + + * Fixed priority for fastjar from optional to extra + * New version of source, as of 2001-04-27 + * Fix description of libgcj-dev + * libffi-install: Make libffi installable + * Add libffi and libffi-dev packages. libffi is only enabled for java + targets right now. Perhaps more will be enabled later. + * Fixes to build cross compiler package (for avr) + (Hakan Ardo ). + * Better fixincludes description (#93157). + * Remove all remnants of libg++ + * Remove all hacks around libstdc++ version. Since we are strictly v3 now, + we can treat it like a normal shared lib, and not worry about all those + ABI changes. + * Remove all cruft control scripts. Note, debhelper will create scripts + that it needs to. It will do the doc link stuff and the ldconfig stuff + explicitly. + * Clean up the SONAME parsing stuff, make it a little more cleaner over + all the lib packages + * Make libffi install when built (IOW, whenever java is enabled). This + should obsolete the libffi package, which is old and broken + * Revert to normal sonames, except for ia64 (for now) + * Remove all references to dh_testversion, since they are deprecated for + Build-Depends + * Fix powerpc nof build + * Remove all references to the MULTILIB stuff, since the arches are + using specialized builds anyway (nof, softfloat). + * Added 64bit sparc64 package (gcc-3.0-sparc64, libgcc0-sparc64) + * Removed obsolete shlibs.local file + + -- Ben Collins Sun, 15 Apr 2001 21:33:15 -0400 + +gcc-3.0 (3.0.ds4-0pre010403) unstable; urgency=low + + * debian/README: Updated for gcc-3.0 + * debian/rules.patch: Added subreg-byte patch for sparc + * debian/rules.unpack: Update to current CVS for gcc tarball name + * debian/patches/subreg-byte.dpatch: sparc subreg-byte support + * debian/patches/gcc-rawhide.dpatch: Removed + debian/patches/gpc-2.95.dpatch: Removed + debian/patches/sparc32-rfi.dpatch: Removed + debian/patches/temporary.dpatch: Removed + * Moving to unstable now + * debian/patches/gcc-ppc-disable-shared-libgcc.dpatch: New patch, + disables shared libgcc for powerpc target, since it isn't compatible + with the EABI objects. + * Create $(with_shared_libgcc) var + * debian/rules.d/binary-gcc.mk: Use this new variable to determine if + the libgcc package actually has any files + + -- Ben Collins Tue, 3 Apr 2001 23:00:55 -0400 + +gcc-3.0 (3.0.ds2-0pre010223) experimental; urgency=low + + * New snapshot. Use distinct shared object names for shared libraries: + we don't know if binary API's still change until the final release. + * Versioned package names. + * debian/control.m4: New file. Add gcc-base, libgcc0, libobjc1, + libstdc++-doc, libgcj1, libgcj1-dev, fastjar, fixincludes packages. + Remove gcc-docs package. + * debian/gcov.1: Remove. + * debian/*: Remove 2.95.x support. Prepare for 3.0. + * debian/patches: Remove 2.95.x patches. + * Changed source package name. It's not allowed anymore to overwrite + source packages with different content. Introducing a 'debian source + element' (.ds), which is stripped again from the version number + for the binary packages. + * Fixed bugs and added functionality: + #26436, #27878, #33786, #34876, #35477, #42662, #46181, #42989, + #47981, #48530, #50529, #51227, #51456, #51651, #52382, #53698, + #55291, #55967, #56867, #58219, #59005, #59232, #59776, #64628, + #65687, #67631, #68632, #68963, #68987, #69530, #72933, #75120, + #75759, #76645, #76827, #83221, #87540 + * libgcj fixes: 42894, #51266, #68560, #71187, #79984 + + -- Matthias Klose Sat, 24 Feb 2001 13:41:11 +0100 + +gcc-2.95 (2.95.3-2.001222) experimental; urgency=low + + * New upstream version 2.95.3 experimental (CVS 20001222). + * debian/control.in: Versioned package names, removal of snapshot logic. + Remove fake gcc-docs package. + * Reserve -1 release numbers for woody. + * Updated to gpc-20001218. + + -- Matthias Klose Fri, 22 Dec 2000 19:53:03 +0100 + +gcc (2.95.2-20) unstable; urgency=low + + * Apply patch from gcc-2_95-branch; remove ulimit for make check. + + -- Matthias Klose Sun, 10 Dec 2000 17:01:13 +0100 + +gcc (2.95.2-19) unstable; urgency=low + + * Added testsuite-20001207 from current snapshots. We'll need results + for 2.95.2 to make sure there are no regressions against that release. + Dear build daemons and porters to other architectures, please send an + email to gcc-testresults@gcc.gnu.org. + You can do this by running "debian/rules mail-summary". + * Updated to gpc-20001206. + * Added S/390 patch prepared by Chu-yeon Park (#78983). + * debian/patches/libio.dpatch: Fix iostream doc (fixes #77647). + * debian/patches/gcc-doc.dpatch: Update URL (fixes #77542). + * debian/patches/gcc-reload1.dpatch Patch from the gcc-bug list which + fixes a problem in "long long" on i[345]86 (i686 was not affected). + + -- Matthias Klose Sat, 9 Dec 2000 12:30:32 +0100 + +gcc (2.95.2-18) unstable; urgency=low + + * debian/control.in: Fix syntax errors (fixes #76146, #76458). + Disable gpc on the hurd by request (#75686). + * debian/patches/arm-various.dpatch: Patches from Philip Blundell + for ARM arch (fixes #75801). + * debian/patches/gcc-alpha-mi-thunk.dpatch: Patches from Chris Chimelis + for alpha arch. + * debian/patches/g77-docs.dpatch: Adjust g77 docs (fixes #72594). + * Update gpc to gpc-20001118. + * Reenable gpc for alpha. + * debian/README.C++: Merge debian/README.libstdc++ and C++ FAQ information + provided by Matt Zimmermann. + * Build gcj only on architectures, where libgcj-2.95.1 can be built as well. + Probably needs some adjustments ... + * Conditionalize for chill, fortran, java, objc and chill. + + * NOT APPLIED: + debian/patches/libstdc++-bastring.dpatch: Apply fix (fixes #75759). + + -- Matthias Klose Sun, 19 Nov 2000 10:40:41 +0100 + +gcc (2.95.2-17) unstable; urgency=low + + * Disable gpc for alpha. + * Include gpc-cpp in gpc package (fixes #74492). + * Don't build gcc-docs compatibility package anymore. + + -- Matthias Klose Wed, 11 Oct 2000 06:16:53 +0200 + +gcc (2.95.2-16) unstable; urgency=low + + * Applied the emdebian/cross compiler patch and documentation + (Frank Smith ). + * Applied patch for avr target (Hakan Ardo ). + * debian/control.in: Add awk to Build-Depends. + Tighten libc6-dev dependency for libstdc++-dev (fixes #73031, + #72531, #72534). + * Disable libobjc_gc for m68k again (fixes #74380). + * debian/patches/arm-namespace.dpatch: Apply patch from Philip + Blundell to fix name space pollution on arm + (fixes #70937). + * Fix more warnings in STL headers (fixes #69352, #71943). + + -- Matthias Klose Mon, 9 Oct 2000 21:51:41 +0200 + +gcc (2.95.2-15) unstable; urgency=low + + * debian/control.in: Add libgc5-dev to build depends (fixes #67015). + * debian/rules.def: Build GC enabled ObjC runtime for sparc. + * Bug #58741 fixed (in some version since 2.95.2-5). + * debian/control.in: Recommend librx1g-dev, libgmp2-dev, libncurses5-dev + (unit dependencies). + * Patches from Marcus Brinkmann for the hurd (fixes #67763): + - debian/rules.defs: Disable objc_gc on hurd-i386. + Disable libg++ on GNU systems. + - debian/rules2: Set correct names of libstdc++/libg++ + libraries on GNU systems. + Write out correct shlibs and shlibs.local file content. + - Keep _G_config.h for the Hurd. + * Apply patch for ObjC linker warnings. + * Don't apply gcj backport patch for sparc. + * Apply libio compatability patch + * debian/glibcver.sh: generate appropriate version for glibc + * debian/rules.conf: for everything after glibc 2.1, we always append + "-glibc$(ver)" to the C++ libs for linux. + * Back down gpc to -13 version (-14 wont compile on anything but i386 + and m68k becuase of gpc). + * Remove extraneous and obsolete sparc64 patches/files from debian/* + + -- Ben Collins Thu, 21 Sep 2000 08:08:35 -0400 + +gcc-snapshot (20000901-2.2) experimental; urgency=low + + * New snapshot. + * debian/rules2: Move tradcpp0 to cpp package. + + -- Matthias Klose Sat, 2 Sep 2000 01:14:28 +0200 + +gcc-snapshot (20000802-2.1) experimental; urgency=low + + * New snapshot. + * debian/rules2: Fixes. tradcpp0 is in gcc package, not cpp. + + -- Matthias Klose Thu, 3 Aug 2000 07:40:05 +0200 + +gcc-snapshot (20000720-2) experimental; urgency=low + + * New snapshot. + * Enable libstdc++-v3. + * debian/rules2: Don't use -D for /usr/bin/install. + + -- Matthias Klose Thu, 20 Jul 2000 22:33:37 +0200 + +gcc (2.95.2-14) unstable; urgency=low + + * Update gpc patch. + + -- Matthias Klose Wed, 5 Jul 2000 20:51:16 +0200 + +gcc (2.95.2-13) frozen unstable; urgency=low + + * Update debian/README: document how to compile 2.0.xx kernels; don't + register gcc272 as an alternative for gcc (closes #62419). + Clarify compiler setup (closes #65548). + * debian/control.in: Make libstdc++-dev depend on current version of g++. + * Undo CVS update from release -8 (problems on alpha, #55263). + + -- Matthias Klose Mon, 19 Jun 2000 23:06:48 +0200 + +gcc (2.95.2-12) frozen unstable; urgency=low + + * debian/gpc.postinst: Correct typo introduced with -11 (fixes #64193). + * debian/patches/gcc-rs600.dpatch: ppc codegen fix (fixes #63933). + + -- Matthias Klose Sun, 21 May 2000 15:56:05 +0200 + +gcc (2.95.2-11) frozen unstable; urgency=medium + + * Upload to unstable again (fixes critical #63784). + * Fix doc-base files (fixes important #63810). + * gpc wasn't built in -10 (fixes #63977). + * Make /usr/bin/pc an alternative (fixes #63888). + * Add SYSCALLS.c.X to gcc package. + + -- Matthias Klose Sun, 14 May 2000 22:17:44 +0200 + +gcc (2.95.2-10) frozen; urgency=low + + * debian/control.in: make gcc conflict on any version of egcc + (slink to potato upgrade problem, fixes grave #62084). + * Build protoize programs, separate out in new package (fixes #59436, + #62911). + * Create dummy gcc-docs package for smooth update from slink (fixes #62537). + * Add doc-base support for all -doc packages (fixes #63380). + + -- Matthias Klose Mon, 1 May 2000 22:24:28 +0200 + +gcc (2.95.2-9) frozen unstable; urgency=low + + * Disable the sparc-bi-arch.dpatch (patch from Ben Collins, built + for sparc as NMU 8.1) (fixes critical #61529 and #61511). + "Seems that when you compile gcc 2.95.x for sparc64-linux and compile + sparc32 programs, the code is not the same as sparc-linux compile for + sparc32 (this is a bug, and is fixed in gcc 2.96 CVS)." + * debian/patches/gcj-vs-iconv.dpatch: Option '--encoding' for + encoding of input files. Patch from Tom Tromey + backported to 2.95.2 (fixes #42895). + Compile a Latin-1 encoded file with `gcj --encoding=Latin1 ...'. + * debian/control.in: gcc, g++ and gobjc suggest their corresponding + task packages (fixes #59623). + + -- Matthias Klose Sat, 8 Apr 2000 20:19:15 +0200 + +gcc (2.95.2-8) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000313. + * debian/rules2: configure with --enable-java-gc=no for sparc. Fixes + gcj side of #60535. + * debian/rules.patch: Disable gcc-emit-rtl patch for all archs but + alpha. Disable g++-is-tree patch ("just for 2.95.1"). + * debian/README: Update for gcc-2.95. + + -- Matthias Klose Mon, 27 Mar 2000 00:03:16 +0200 + +gcc (2.95.2-7) frozen unstable; urgency=low + + * debian/patches/gcc-empty-struct-init.dpatch; Apply patch from + http://gcc.gnu.org/ml/gcc-patches/2000-02/msg00637.html. Fixes + compilation of 2.3.4x kernels. + * debian/patches/gcc-emit-rtl.dpatch: Apply patch from David Huggins-Daines + (backport from 2.96 CVS to fix #55263). + * debian/patches/gcc-pointer-arith.dpatch: Apply patch from Jim Kingdon + (backport from 2.96 CVS to fix #54951). + + -- Matthias Klose Thu, 2 Mar 2000 23:16:43 +0100 + +gcc (2.95.2-6) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000220. + * Remove dangling symlink probably left over from libstdc++2.9 + package (fixes #53661). + * debian/patches/gcc-alpha-complex-float.dpatch: Fixed patch by + David Huggins-Daines (fixes #58486). + * debian/g++.{postinst,prerm}: Remove outdated g++FAQ registration + (fixes #58253). + * debian/control.in: gcc-doc replaces gcc-docs (fixes #58108). + * debian/rules2: Include some fixed headers (asm, bits, linux, ...). + * debian/patches/{gcc-alpha-ev5-fix,libstdc++-valarray}.dpatch: Remove. + Applied upstream. + * debian/patches/libstdc++-bastring.dpatch: Add patch from + sicard@bigruth.solsoft.fr (fixes #56715). + + -- Matthias Klose Sun, 20 Feb 2000 15:08:13 +0100 + +gcc (2.95.2-5) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000116. + * Add more build dependencies (fixes #53204). + * debian/patches/gcc-alpha-complex-float.dpatch: Patch from + Joel Klecker to compile glibc correctly on alpha. + "Should fix the g77 problems too." + * debian/patches/{libio,libstdc++-wall2}.dpatch. Remove patches + applied upstream. + + -- Matthias Klose Sun, 16 Jan 2000 19:16:54 +0100 + +gcc (2.95.2-4) unstable; urgency=low + + * debian/patches/libio.dpatch: Patch from Martin v. Loewis. + (fixes: #35628). + * debian/patches/libstdc++-deque.dpatch: Patch from Martin v. Loewis. + (fixes: #52689). + * debian/control.in: Updated Build-Depends, removed outdated README.build. + Fixes #51246. + * Tighten dependencies to cpp (>= 2.95.2-4) (closes: #50294). + * debian/rules.patch: Really do not apply patches/gcj-backport.dpatch. + Fixes #51636. + * Apply updated sparc-bi-arch.dpatch from Ben Collins. + * libstdc++: Define wstring type, if __ENABLE_WSTRING is defined. Request + from the author of the War FTP Daemon for Linux ("Jarle Aase" + ). + * debain/g++.preinst: Remove dangling sysmlinks (fixes #52359). + + -- Matthias Klose Sun, 19 Dec 1999 21:53:48 +0100 + +gcc (2.95.2-3) unstable; urgency=low + + * debian/rules2: Don't install $(gcc_lib_dir)/include/asm; these are + headers fixed for glibc-1.x (closes: #49434). + * debian/patches/cpp-dos-newlines.dpatch: Keep CR's without + following LF (closes: #49186). + * Bug #37358 (internal compiler errors when building vdk_0.6.0-5) + fixed in gcc-2.95.? (closes: #37358). + * Apply patch gcc-alpha-ev5-fix from Richard Henderson + (should fix #48527 and #46963). + * debian/README.Bugs: Documented non bug #44554. + * Applied patch from Alexandre Oliva to fix gpc boostrap on alpha. + Reenabled gpc on all architectures. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991108. + * Explicitely generate postinst/prerm chunks for usr/doc transition. + debhelper currently doesn't handle generation for packages with + symlinked directories. + * debian/patches/libstdc++-wall3.dpatch: Fix warnings in stl_deque.h + and stl_rope.h (closes: #46444, #46720). + * debian/patches/gcj-backport.dpatch: Add file, don't apply (yet). + + -- Matthias Klose Wed, 10 Nov 1999 18:58:45 +0100 + +gcc (2.95.2-2) unstable; urgency=low + + * New gpc-19991030 snapshot. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991103. + * Reintegrated sparc patches (bcollins@debian.org), which were lost + in 2.95.2-1. + * debian/rules2: Only install $(gcc_lib_dir)/include/asm, when existing. + * debian/patches/gpc-2.95.{dpatch,diff}: updated patch to drop + initialization in stor-layout.c. + * debian/NEWS.gcc: Updated for gcc-2.95.2. + * debian/bugs/bug-...: Removed testcases for fixed bugs. + * debian/patches/...dpatch: Removed patches applied upstream. + * debian/{rules2,g++.postinst,g++.prerm}: Handle c++ alternative. + * debian/changelog: Merged gcc272, egcs and snapshot changelogs. + + -- Matthias Klose Tue, 2 Nov 1999 23:09:23 +0200 + +gcc (2.95.2-1.1) unstable; urgency=low + + * Most of the powerpc patches have been applied upstream. Remove all + but ppc-ice, ppc-andrew-dwarf-eh, and ppc-descriptions. + * mulilib-install.dpatch was definitely a bad idea. Fix it properly + by using install -D. + * Also, don't make directories before installing any more. Simplifies + rules a (tiny) bit. + * Do not build with LDFLAGS=-s. Everything gets stripped out anyway by + dh_strip -a -X_debug; so leave the binaries in the build tree with + debugging symbols for simplified debugging of the packages. + + -- Daniel Jacobowitz Sat, 30 Oct 1999 12:40:12 -0400 + +gcc (2.95.2-1) unstable; urgency=low + + * gcc-2.95.2 release (taken from the CVS archive). -fstrict-aliasing + is disabled upstream. + + -- Matthias Klose Mon, 25 Oct 1999 10:26:19 +0200 + +gcc (2.95.2-0pre4) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991021. + * Updated gpc to gpc-19991018 snapshot (closes: #33037, #47453). + Enable gpc for all architectures ... + * Document gcc exit codes (closes: #43863). + * According to the bug submitter (Sergey V Kovalyov ) + the original source of these CERN librarties is outdated now. The latest + version of cernlibs compiles and works fine with slink (closes #31546). + * According to the bug submitter (Gergely Madarasz ), + the problem triggered on i386 cannot be reproduced with the current + jade and php3 versions anymore (closes: #35215). + * Replace corrupted m68k-pic.dpatch (from Roman Hodek and Andreas Schwab + and apply to + all architectures (closes: #48011). + * According to the bug submitter (Herbert Xu ) + this bug "probably has been fixed". Setting it to severity "fixed" + (fixes: #39616), will close it later ... + * debian/README.Bugs: Document throwing C++ exceptions "through" C + libraries (closes: #22769). + + -- Matthias Klose Fri, 22 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre3) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991019. + * Apply NMU patches (closes: #46217). + * debian/control.in: Fix egcs64 conflict-dependency for sparc + architecture (closes: #47088). + * debian/rules2: dbg-packages share doc dir with lib packages + (closes #45067). + * debian/patches/gcj-debian-policy.dpatch: Patch from Stephane + Bortzmeyer to conform to Debian policy (closes: #44463). + * debian/bugs/bug-*: Added test cases for new bug reports. + * debian/patches/libstdc++-bastring.dpatch: Patch by Richard Kettlewell + (closes #46550). + * debian/rules.patch: Apply libstdc++-wall2 patch (closes #46609). + * debian/README: Fix typo (closes: #45253). + * debian/control.in: Remove primary/secondary distinction; + dbg-packages don't provide their normal counterparts (closes #45206). + * debian/rules.patch: gcc-combine patch applied upstream. + * debian/rules2: Only use mail if with_check is set (off by default). + * debian/rules.conf: Tighten binutils dependency to 2.9.5.0.12. + + -- Matthias Klose Tue, 19 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre2.0.2) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for another bug; the patch + is in CVS already, too. + * Applied another patch by Andreas Schwab to fix %a5 restauration in + some cases. + + -- Roman Hodek Thu, 30 Sep 1999 16:09:15 +0200 + +gcc (2.95.2-0pre2.0.1) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for serious bugs; the patches + are already checked into gcc CVS and should be in the next official + version, too. + * Applied two patches by Andreas Schwab to fix -fpic and loop optimization. + + -- Roman Hodek Mon, 27 Sep 1999 15:32:49 +0200 + +gcc (2.95.2-0pre2) unstable; urgency=low + + * Fixed in 2.95.2 (closes: #43478). + * Previous version had Pascal examples missing in doc directory. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.2-0pre1) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19990828. + * Apply work around memory corruption (just for 2.95.1) by + Daniel Jacobowitz . + * debian/patches/libstdc++-wall2.dpatch: Patch from Franck Sicard + to fix some warnings (closes: #44670). + * debian/patches/libstdc++-valarray.dpatch: Patch from Hideaki Fujitani + to fix a bug in valarray_array.h. + * Applied NMU from Jim Pick minus the jump.c and fold-const.c patches + already in the gcc-2_95-branch (closes: #44690). + * Conform to debian-java policy (closes: #44463). + * Move docs to /usr/share/doc (closes: #44782). + * Remove debian/patches/gcc-align.dpatch applied upstream. + * debian/*.postinst: Call install-info only, when configuring. + * debian/*.{postinst,prerm}: Add #DEBHELPER# comments to handle + /usr/doc -> /usr/share/doc transition. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.1-2.1) unstable; urgency=low + + * Non-maintainer upload. + * ARM platform no longer needs library-prefix patch. + * Updated patches from Philip Blundell. + + -- Jim Pick Wed, 8 Sep 1999 20:14:07 -0700 + +gcc (2.95.1-2) unstable; urgency=low + + * debian/gcc.{postinst,prerm}: gcc provides an alternative for + sparc64-linux-gcc. + * Applied patch from Ben Collins to enable bi-architecture (32/64) + support for sparc. + * Rebuild debian/control and debian/rules.parameters after unpacking. + * debian/rules2: binary-indep. Conditionalize on with_pascal. + + -- Matthias Klose Sat, 4 Sep 1999 13:47:30 +0200 + +gcc (2.95.1-1) unstable; urgency=low + + * Updated to release gcc-2.95.1 and cvs updates of the gcc-2_95-branch + until 19990828. + * debian/README.gcc: Updated NEWS file to include 2.95 and 2.95.1 news. + * debian/README.java: New file. + * debian/rules.defs: Disabled gpc for alpha, arm. Disabled ObjC-GC + for alpha. + * debian/rules [clean]: Remove debian/rules.parameters. + * debian/rules2 [binary-arch]: Call dh_shlibdeps with LD_LIBRARY_PATH set + to installation dir of libstdc++. Why isn't this the default? + * debian/control.in: *-dev packages do not longer conflict with + libg++272-dev package. + * Apply http://egcs.cygnus.com/ml/gcc-patches/1999-08/msg00599.html. + * Only define BAD_THROW_ALLOC, when using exceptions (fixes #43462). + * For ObjC (when configured with GC) recommend libgc4-dev, not libgc4. + * New version of 68060 build patch. + * debian/rules.conf: For m68k, depend on binutils version 2.9.1. + + -- Matthias Klose Sat, 28 Aug 1999 18:16:31 +0200 + +gcc (2.95.1-0pre2) unstable; urgency=medium + + * gpc is back again (fixes grave #43022). + * debian/patches/gpc-updates.dpatch: Patches sent to upstream authors. + * Work around the fatal dependtry assertion failure bug in dpkg (hint + from "Antti-Juhani Kaijanaho" , fixes important #43072). + + -- Matthias Klose Mon, 16 Aug 1999 19:34:14 +0200 + +gcc (2.95.1-0pre1) unstable; urgency=low + + * Updated to cvs 19990815 gcc-2_95-branch; included install docs and + FAQ from 2.95 release; upload source package as well. + * Source package contains tarballs only (gcc, libg++, installdocs). + * debian/rules: Splitted into debian/rules{,.unpack,.patch,.conf,2}. + * debian/gcc.postinst: s/any key/RETURN; warn only when upgrading from + pre 2.95 version; reference /usr/doc, not /usr/share/doc. + * Checked syntax for attributes of functions; checked for #35068; + checked for bad gmon.out files (at least with libc6 2.1.2-0pre5 and + binutils 2.9.1.0.25-2 the problem doesn't show up anymore). + * debian/patches/cpp-macro-doc.dpatch: Document macro varargs in cpp.texi. + * gcc is primary compiler for all platforms but m68k. Setting + severity of #22513 to fixed. + * debian/patches/gcc-default-arch.dpatch: New patch to enable generation + of i386 instruction as default (fixes #42743). + * debian/rules: Removed outdated gcc NEWS file (fixes #42742). + * debian/patches/libstdc++-out-of-mem.dpatch: Throw exception instead + of aborting when out of memory (fixes #42622). + * debian/patches/cpp-dos-newlines.dpatch: Handle ibackslashes after + DOS newlines (fixes #29240). + * Fixed in gcc-2.95.1: #43001. + * Bugs closed in this version: + Closes: #11525, #12253, #22513, #29240, #35068, #36182, #42584, #42585, + #42602, #42622, #42742 #42743, #43001, #43002. + + -- Matthias Klose Sun, 15 Aug 1999 10:31:50 +0200 + +gcc (2.95-3) unstable; urgency=high + + * Provide /lib/cpp again (fixes important bug #42524). + * Updated to cvs 19990805 gcc-2_95-branch. + * Build with the default scheduler. + * Apply install-multilib patch from Dan Jacobowitz. + * Apply revised cpp-A- patch from Dan Jacobowitz. + + -- Matthias Klose Fri, 6 Aug 1999 07:25:19 +0200 + +gcc (2.95-2) unstable; urgency=low + + * Remove /lib/cpp. This driver uses files from /usr/lib/gcc-lib anyway. + * The following bugs are fixed (compared to egcs-1.1.2). + Closes: #4429, #20889, #21122, #26369, #28417, #28261, #31416, #35261, + #35900, #35906, #38246, #38872, #39098, #39526, #40659, #40991, #41117, + #41290, #41302, #41313. + * The following by Joel Klecker: + - Adopt dpkg-architecture variables. + - Go back to SHELL = bash -e or it breaks where /bin/sh is not bash. + - Disabled the testsuite, it is not included in the gcc 2.95 release. + + -- Matthias Klose Sat, 31 Jul 1999 18:00:42 +0200 + +gcc (2.95-1) unstable; urgency=low + + * Update for official gcc-2.95 release. + * Built without gpc. + * debian/rules: Remove g++FAQ from rules, which is outdated. + For ix86, build for i386, not i486. + * Apply patch from Jim Pick for building multilib package on arm. + + -- Matthias Klose Sat, 31 Jul 1999 16:38:21 +0200 + +gcc (2.95-0pre10) unstable; urgency=low + + * Use ../builddir-gcc-$(VER) by default instead of ./builddir; upstream + strongly advises configuring outside of the source tree, and it makes + some things much easier. + * Add patch to prevent @local branches to weak symbols on powerpc (fixes + apt compilation). + * Add patch to make cpp -A- work as expected. + * Renamed debian/patches/ppc-library-prefix.dpatch to library-prefix.dpatch; + apply on all architectures. + * debian/control.in: Remove snapshot dependencies. + * debian/*.postinst: Reflect use of /usr/share/{info,man}. + + -- Daniel Jacobowitz Thu, 22 Jul 1999 19:27:12 -0400 + +gcc (2.95-0pre9) unstable; urgency=low + + * The following bugs are fixed (compared to egcs-1.1.2): #4429, #20889, + #21122, #26369, #28417, #28261, #35261, #38246, #38872, #39526, #40659, + #40991, #41117, #41290. + * Updated to CVS gcc-19990718 snapshot. + * debian/control.in: Removed references to egcs in descriptions. + Changed gcj's Recommends libgcj-dev to Depends. + * debian/rules: Apply ppc-library-prefix for alpha as well. + * debian/patches/arm-config.dpatch: Updated patch sent by Jim Pick. + + -- Matthias Klose Sun, 18 Jul 1999 12:21:07 +0200 + +gcc (2.95-0pre8) unstable; urgency=low + + * Updated CVS. + * debian/copyright: s%doc/copyright%share/common-licenses% + * debian/README.Bugs: s/egcs.cygnus.com/gcc.gnu.org/ s/egcs-bugs/gcc-bugs/ + * debian/patches/reporting.dpatch: Remake diff for current sources. + * debian/libstdc++-dev.postinst: It's /usr/share/info/iostream.info. + * debian/rules: Current dejagnu snapshot reports a framework version + of 1.3.1. + + -- Joel Klecker Sun, 18 Jul 1999 02:09:57 -0700 + +gcc-snapshot (19990714-0pre6) experimental; urgency=low + + * Updated to CVS gcc-19990714 snapshot. + * Applied ARM patch (#40515). + * Converted DOS style linefeeds in debian/patches/ppc-* files. + * debian/rules: Reflect change in gcc/version.c; use sh -e as shell: + for some obscure reason, bash -e doesn't work. + * Reflect version change for libstdc++ (2.10). Remove libg++-name + patch; libg++ now has version 2.8.1.3. Removed libc version from + the package name. + + -- Matthias Klose Wed, 14 Jul 1999 18:43:57 +0200 + +gcc-snapshot (19990625-0pre5.1) experimental; urgency=low + + * Non-maintainer upload. + * Added ARM specific patch. + + -- Jim Pick Tue, 29 Jun 1999 22:36:08 -0700 + +gcc-snapshot (19990625-0pre5) experimental; urgency=low + + * Updated to CVS gcc-19990625 snapshot. + + -- Matthias Klose Fri, 25 Jun 1999 16:11:53 +0200 + +gcc-snapshot (19990609-0pre4.1) experimental; urgency=low + + * Added and re-added a few last PPC patches. + + -- Daniel Jacobowitz Sat, 12 Jun 1999 16:48:01 -0500 + +gcc-snapshot (19990609-0pre4) experimental; urgency=low + + * Updated to CVS egcs-19990611 snapshot. + + -- Matthias Klose Fri, 11 Jun 1999 10:20:09 +0200 + +gcc-snapshot (19990609-0pre3) experimental; urgency=low + + * CVS gcc-19990609 snapshot. + * New gpc-19990607 snapshot. + + -- Matthias Klose Wed, 9 Jun 1999 19:40:44 +0200 + +gcc-snapshot (19990524-0pre1) experimental; urgency=low + + * egcs-19990524 snapshot. + * First snapshot of the gcc-2_95-branch. egcs-1.2 is renamed to gcc-2.95, + which is now the "official" successor to gcc-2.8.1. The full version + name is: gcc-2.95 19990521 (prerelease). + * debian/control.in: Changed maintainers to `Debian GCC maintainers'. + * Moved all version numbers to epoch 1. + * debian/rules: Major changes. The support for secondary compilers + was already removed for the egcs-1.2 snapshots. Many fixes by + Joel Klecker . + - Send mail to Debian maintainers for successful builds. + - Fix VER and VERNO sed expressions. + - Replace remaining GNUARCH occurrences. + * New gpc snapshot (but don't build). + * debian/patches/valarray.dpatch: Backport from libstdc++-v3. + * debian/gcc-doc.*: Info is now gcc.info* (Joel Klecker ). + * Use cpp driver provided by the package. + * New script c89 (fixes #28261). + + -- Matthias Klose Sat, 22 May 1999 16:10:36 +0200 + +egcs (1.1.2-2) unstable; urgency=low + + * Integrate NMU's for arm and sparc (fixes #37582, #36857). + * Apply patch for the Hurd (fixes #37753). + * Describe open bugs in TODO.Debian. Please have a look if you can help. + * Update README / math functions section (fixes #35906). + * Done by J.H.M. Dassen (Ray) : + - At Richard Braakman's request, made -dbg packages for libstdc++ + and libg++. + - Provide egcc(1) (fixes lintian error). + + -- Matthias Klose Sun, 16 May 1999 14:30:56 +0200 + +egcs-snapshot (19990502-1) experimental; urgency=low + + * New snapshot. + + -- Matthias Klose Thu, 6 May 1999 11:51:02 +0200 + +egcs-snapshot (19990418-2) experimental; urgency=low + + * Merged Rays changes to build debug packages. + + -- Matthias Klose Wed, 21 Apr 1999 16:54:56 +0200 + +egcs-snapshot (19990418-1) experimental; urgency=low + + * New snapshot. + * Disable cpplib. + + -- Matthias Klose Mon, 19 Apr 1999 11:32:19 +0200 + +egcs (1.1.2-1.2) unstable; urgency=low + + * NMU for arm + * Added arm-optimizer.dpatch with optimizer workaround for ARM + + -- Jim Pick Mon, 19 Apr 1999 06:17:13 -0700 + +egcs (1.1.2-1.1) unstable; urgency=low + + * NMU for sparc + * Included dpatch to modify the references to gcc/crtstuff.c so that + __register_frame_info is not a weak reference. This allows potato to + remain binary compatible with slink, while still retaining compatibility + with other sparc/egcs1.1.2 distributions. Diff in .dpatch format has + been sent to the maintainer with a note it may not be needed for 1.1.3. + + -- Ben Collins Tue, 27 Apr 1999 10:15:03 -0600 + +egcs (1.1.2-1) unstable; urgency=low + + * Final egcs-1.1.2 release built for potato as primary compiler + for all architectures except m68k. + + -- J.H.M. Dassen (Ray) Thu, 8 Apr 1999 13:14:29 +0200 + +egcs-snapshot (19990321-1) experimental; urgency=low + + * New snapshot. + * Disable gpc. + * debian/rules: Simplified (no secondary compiler, bumped all versions + to same epoch, libapi patch is included upstream). + * Separated out cpp documentation to cpp-doc package. + * Fixed in this version: #28417. + + -- Matthias Klose Tue, 23 Mar 1999 02:11:18 +0100 + +egcs (1.1.2-0slink2) stable; urgency=low + + * Applied H.J.Lu's egcs-19990315.linux patch. + * Install faq.html and egcs-1.1.2 announcment. + + -- Matthias Klose Tue, 23 Mar 1999 01:14:54 +0100 + +egcs (1.1.2-0slink1) stable; urgency=low + + * Final egcs-1.1.2 release; compiled with glibc-2.0 for slink on i386. + * debian/control.in: gcc provides egcc, when FIRST_PRIMARY defined. + * Fixes #30767, #32278, #34252, #34352. + * Don't build the libstdc++.so.2.9 library on architectures, which have + switched to glibc-2.1. + + -- Matthias Klose Wed, 17 Mar 1999 12:55:59 +0100 + +egcs (1.1.1.63-2.2) unstable; urgency=low + + * Non-maintainer upload. + * Incorporate patch from Joel Klecker to fix snapshot packages + by moving/removing the application of libapi. + * Disable the new libstdc++-dev-config and the postinst message in + glibc 2.1 versions. + + -- Daniel Jacobowitz Mon, 12 Mar 1999 14:16:02 -0500 + +egcs (1.1.1.63-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Compile with glibc 2.1 release version. + * New upstream version egcs-1.1.2 pre3. + * Miscellaneous rules updates (see changelog.snapshot). + * New set of powerpc-related patches from Franz Sirl, + . + * Disable libgcc.dpatch (new solution implemented upstream). Remove it. + * Also pass $target to config.if. + * Enable Dwarf2 EH for powerpc. Bump the C++ binary version. No + loss in -backwards- compatibility as far as I can tell, so add a + compatibility symlink, and add to shlibs file. + * Add --no-backup-if-mismatch to the debian/patches/*.dpatch files, + to prevent bogus .orig's in diffs. + * Merged with (unreleased) 1.1.1.62-1 and 1.1.1.63-{1,2} packages from + Matthias Klose . + * Stop adding a backwards compatibility link for egcs-nof on powerpc. + To my knowledge, nothing uses it. Do add the libstdc++ API change + link, though. + + -- Daniel Jacobowitz Mon, 8 Mar 1999 14:24:01 -0500 + +egcs (1.1.1.63-2) stable; urgency=low + + * Provide a libstdc++ with a shared object name, which is compatible + to other distributions. Documented the change in README.Debian, + the libstdc++-2.9.postinst and the libstdc++-dev-config script. + + -- Matthias Klose Fri, 12 Mar 1999 00:36:20 +0100 + +egcs (1.1.1.63-1.1) unstable; urgency=low + + * Non-Maintainer release. + * Build against glibc 2.1. + * Make egcs the primary compiler on i386. + * Also confilct with egcc (<< FIRST_PRIMARY) + if FIRST_PRIMARY is defined. + (this tells dpkg that gcc completely obsoletes egcc) + * Remove hjl-12 patch again, HJL says it should not be + necessary with egcs 1.1.2. + (as per forwarded reply from Christopher Chimelis) + * Apply libapi patch in clean target before regenerating debian/control + and remove the patch afterward. Otherwise, the libstdc++ and libg++ + package names are generated wrong on a glibc 2.1 system. + + -- Joel Klecker Tue, 9 Mar 1999 15:31:02 -0800 + +egcs (1.1.1.63-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre3. + * Applied improved libstdc++ warning patch from Rob Browning. + + -- Matthias Klose Tue, 9 Mar 1999 16:14:07 +0100 + +egcs (1.1.1.62-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre2. + * New upstream version libg++-2.8.1.3. + * Readded ARM support + * Readded hjl-12 per request from Christopher C Chimelis + + + -- Matthias Klose Fri, 26 Feb 1999 09:54:01 +0100 + +egcs-snapshot (19990224-0.1) experimental; urgency=low + + * New snapshot. + * Add the ability to disable CPPLIB by setting CPPLIB=no in + the environment. + * Disable gpc for powerpc; I spent a long time getting it to + make correctly, and then it goes and ICEs. + + -- Daniel Jacobowitz Tue, 24 Feb 1999 23:34:12 -0500 + +egcs (1.1.1.61-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre1. + * debian/control.in: Applied patch from bug report #32987. + * Split up H.J.Lu's hjl-19990115-linux patch into several small + chunks: libapi, arm-mips, libgcc, hjl-other. The changelog.Linux + aren't included in the separate chunks. Please refer to the + unmodified hjl-19990115-linux patch file in the egcs source pkg. + * Apply warning patch to fix the annoying spew you get if you try to + use ropes or deques with -Wall (which makes -Wall mostly useless for + spotting errors in your own code). Fixes #32996. + * debian/rules: Unapply patches in the exact reverse order they were + applied. + + -- Matthias Klose Sat, 20 Feb 1999 22:06:21 +0100 + +egcs (1.1.1-5) frozen unstable; urgency=medium + + * Move libgcc.map file to g++ package, where gcc is the secondary + compiler (fixes #32329, #32605, #32631). + * Prepare to rename libstdc++2.9 package for glibc-2.1 (fixes #32148). + * Apply NMU patch for arm architecure (fixes #32367). + * Don't apply hjl-12 patch for alpha architectures (requested by the + alpha developers, Christopher C Chimelis ). + * Call makeinfo with --no-validate to fix obscure build failure on alpha. + * Build gpc info files in doc subdirectory. + * Remove c++filt diversion (C++ name demangling patch is now in binutils, + fixes #30820 and #32502). + + -- Matthias Klose Sun, 31 Jan 1999 23:19:35 +0100 + +egcs (1.1.1-4.1) unstable; urgency=low + + * Non-maintainer upload. + * Pascal doesn't build for ARM. + + -- Jim Pick Sun, 24 Jan 1999 16:13:34 -0800 + +egcs (1.1.1-4) frozen unstable; urgency=high + + * Don't strip compiler libraries libgcc.a libobjc.a libg2c.a libgpc.a + * Move Pascal examples to the right place (fixes #32149, part 1). + * Add dependencies for switching from secondary to primary compiler, + if FIRST_PRIMARY is defined (fixes #32149, part 2). + + -- Matthias Klose Wed, 20 Jan 1999 16:51:30 +0100 + +egcs (1.1.1-3) frozen unstable; urgency=low + + * Updated with the H.J.Lu's hjl-19990115-linux patch (fixes the + __register_frame_info problems, mips and arm port included). + * Update gpc to 19990118 (beta release candidate). + * Strip static libraries (fixes #31247 and #31248). + * Changed maintainer address. + + -- Matthias Klose Tue, 19 Jan 1999 16:34:28 +0100 + +egcs (1.1.1-2) frozen unstable; urgency=low + + * Moved egcs-docs, g77-doc and gpc-doc packages to doc section. + * Downgraded Recommends: egcs-docs to Suggests: egcs-docs dependencies + (for archs, where egcs is the primary compiler). + * Add 'Suggests: stl-manual' dependency to libstdc++2.9-dev. + * Applied one more alpha patch: + ftp://ftp.yggdrasil.com/private/hjl/egcs/1.1.1/egcs-1.1.1.diff.12.gz + * Applied PPro optimization patch. + * Apply emit-rtl-nan patch. + * Upgraded to libg++-2.8.1.2a-19981218.tar.gz. + * Upgraded to gpc-19981218. + * Make symlinks for gobjc, libstdc++2.9-dev and libg++2.8.2 doc directories. + + -- Matthias Klose Wed, 23 Dec 1998 18:04:53 +0200 + +egcs-snapshot (19981211-1) experimental; urgency=low + + * New snapshot. + * Adapted gpc to egcs-2.92.x (BOOT_CFLAGS must include -g). + * New libg++-2.8.1.2a-19981209.tar.gz. + * debian/rules: new target mail-summary. + + -- Matthias Klose Fri, 11 Dec 1998 18:14:53 +0200 + +egcs (1.1.1-1) frozen unstable; urgency=high + + * Final egcs-1.1.1 release. + * The last version depended on a versioned libc6 again. + * Add lost dependency for libg++ on libstdc++. + * Added debian-libstdc++.sh script to generate a libstdc++ on a Linux + system, which doesn't use the libapi patch. + + -- Matthias Klose Wed, 2 Dec 1998 12:06:15 +0200 + +egcs (1.1.0.91.59-2) frozen unstable; urgency=high + + * Fixes bugs from libc6 2.0.7u-6 upload without dependency line + Conflicts: libstdc++-2.9 (<< 2.91.59): #30019, #30066, #30078. + * debian/copyright: Updated URLs. + * gcc --help now mentions /usr/doc/debian/bug-reporting.txt. + * Install README.Debian and include information about patches applied. + * Depend on unversioned libc6 on i386, such that libstdc++2.9 can be used + on a hamm system. + + -- Matthias Klose Fri, 27 Nov 1998 18:32:02 +0200 + +egcs (1.1.0.91.59-1) frozen unstable; urgency=low + + * This is egcs-1.1.1 prerelease #3, compiled with libc6 2.0.7u-6. + * Added dependency for libstdc++2.9-dev on g++ (fixes #29631). + * Package g77 provides f77 (fixes #29817). + * Already fixed in earlier egcs-1.1 releases: #2493, #25271, #10620. + * Bugs reported for gcc-2.7.x and fixed in the egcs version of gcc: + #2493, #4430, #4954, #5367, #6047, #10612, #12375, #20606, #24788, #26100. + * Upgraded libg++ to libg++-2.8.1.2a-19981114. + * Upgraded gpc to gpc-19981124. + * Close #25869: egcs and splay maintainers are unable to reproduce this + bug with the current Debian packages. Bug submitter doesn't respond. + * Close #25407: egcs maintainer cannot reproduce this bug with the current + Debian compiler. Bug submitter doesn't respond. + * Use debhelper 1.2.7 for building. + * Replace the libstdc++ and libg++ compatibility links with fake libraries. + + -- Matthias Klose Wed, 25 Nov 1998 12:11:42 +0200 + +egcs (1.1.0.91.58-5) frozen unstable; urgency=low + + * Applied patch to build on the m68060. + * Added c++filt and c++filt.1 to the g++ package. + * Updated gpc to gpc-981105; fixes some regressions compared to egcs-1.1. + * Separated out g77 and gpc doumentation to new packages g77-doc and gpc-doc. + * Closed bugs (#22158). + * Close #20248; on platforms where gas and gld are the default versions, + it makes no difference to configure with or without enable-ld. + * Close #24349. The bugs are in the amulet source. + See http://www.cs.cmu.edu/afs/cs/project/amulet/www/FAQ.html#GCC28x + * Rename gcc.info* files to egcs.info* (fixes #24088). + * Documented known bugs (and workarounds) in BUGS.Debian. + * Fixed demangling of C++ names (fixes #28787). + * Applied patch form aspell to libstdc++/stl/stl_rope.h. + * Updated from cvs 16 Nov 1998. + + -- Matthias Klose Tue, 17 Nov 1998 09:41:24 +0200 + +egcs-snapshot (19981115-2) experimental; urgency=low + + * New snapshot. Disabled gpc. + * New packages g77-doc and gpc-doc. + + -- Matthias Klose Mon, 16 Nov 1998 12:48:09 +0200 + +egcs (1.1.0.91.58-3) frozen unstable; urgency=low + + * Previous version installed in potato, not slink. + * Updated from cvs 3 Nov 1998. + + -- Matthias Klose Tue, 3 Nov 1998 18:34:44 +0200 + +egcs (1.1.0.91.58-2) unstable; urgency=low + + * [debian/rules]: added targets to apply and unapply patches. + * [debian/README.patches]: New file. + * Moved patches dir to debian/patches. debian/rules has to select + the patches to apply. + * Manual pages for genclass and gcov (fixes #5995, #20950, #22196). + * Apply egcs-1.1-reload patch needed for powerpc architecture. + * Fixed bugs (#17768, #20252, #25508, #27788). + * Reapplied alpha patch (#20875). + * Fixes first part of #22513, extended README.Debian (combining C & C++). + * Already fixed in earlier egcs-1.1 releases: #17963, #20252, #20524, + #20640, #22450, #24244, #24288, #28520. + + -- Matthias Klose Fri, 30 Oct 1998 13:41:45 +0200 + +egcs (1.1.0.91.58-1) experimental; urgency=low + + * New upstream version. That's the egcs-1.1.1 prerelease plus patches from + the cvs archive upto 29 Oct 1998. + * Merged files from the egcs and snapshot packages. + * Updated libg++ to libg++-2.8.1.2 (although the Debian package name is still + 2.8.2). + * Moved patches dir to patches-1.1. + * Dan Jacobowitz: + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this branch). + * Fake snapshots drop the -snap-main. + + -- Matthias Klose Thu, 29 Oct 1998 15:15:19 +0200 + +egcs-snapshot (1.1-19981019-5.1) experimental; urgency=low + + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this + branch). + * Fake snapshots drop the -snap-main. + + -- Daniel Jacobowitz Mon, 19 Oct 1998 22:19:23 -0400 + +egcs (1.1b-5) unstable; urgency=low + + * [debian/control.in] Fixed typo in dependencies (#28076, #28087, #28092). + + -- J.H.M. Dassen (Ray) Sun, 18 Oct 1998 22:56:51 +0200 + +egcs (1.1b-4) unstable; urgency=low + + * Strengthened g++ dependency on libstdc++_LIB_SO_-dev from + `Recommends' to `Depends'. + * Updated README.Debian for egcs-1.1. + * Updated TODO. + + -- Matthias Klose Thu, 15 Oct 1998 12:38:47 +0200 + +egcs-snapshot (19981005-0.1) experimental; urgency=low + + * Make libstdc++2.9-snap-main and libg++-snap-main provide + their mainstream equivalents and put those equivalents into + their shlibs file. + * Package gcj, the GNU Compiler for Java(TM). + + * New upstream version of egcs (The -regcs_latest_snapshot branch). + * Build without libg++ entirely. + * Leave out gpc for now - the internals are sufficiently different + that it does not trivially compile. + * Include an experimental reload patch for powerpc - this is, + in the words of its author, not release quality, but it allows + powerpc linuxthreads to function. + * On architectures where we are the primary compiler, let snapshots + build with --prefix=/usr and conflict with the stable versions. + * Package chill, a front end for the language Chill. + * Other applied patches from debian/patches/: egcs-patches and + builtin-apply-patch. + * Use reload.c revision 1.43 to avoid a nasty bug. + + -- Daniel Jacobowitz Wed, 7 Oct 1998 00:27:42 -0400 + +egcs (1.1b-3.1) unstable; urgency=low + + * NMU to fix the egcc -> gcc link once and for all + + -- Christopher C. Chimelis Tue, 22 Sep 1998 16:11:19 -0500 + +egcs (1.1b-3) unstable; urgency=low + + * Oops. The egcc -> gcc link on archs where gcc is egcc was broken. + Thanks to Chris Chimelis for pointing this out. + + -- J.H.M. Dassen (Ray) Mon, 21 Sep 1998 20:51:35 +0200 + +egcs (1.1b-2) unstable; urgency=low + + * New upstream spellfix release (Debian revision is 2 as the internal + version numbers didn't change). + * Added egcc -> gcc symlink on architectures where egcc is the primary C + compiler. Thus, maintainers of packages that require egcc, can now + simply use "egcc" without conditionals. + * Porters: we hope/plan to make egcs's gcc the default C compiler on all + platforms once the 2.2.x kernels are available. Please test this version + thoroughly, and give us a GO / NO GO for your architecture. + * Some symbols cpp used to predefine were removed upstream in order to clean + up the cpp namespace, but imake requires them for determining the proper + settings for LinuxMachineDefines (see /usr/X11R6/lib/X11/{Imake,linux}.cf), + thus we put them back. Thanks to Paul Slootman for reporting his imake + problems on Alpha. + * [gcc/config/alpha/linux.h] Added -D__alpha to CPP_PREDEFINES . + Thanks to Chris Chimelis for the alpha-only 1.1a-1.1 NMU which fixed + this already. + * [gcc/config/i386/linux.h] Added -D__i386__ to CPP_PREDEFINES . + * [gcc/config/sparc/linux.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/sparc/linux64.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/m68k/linux.h] Has -Dmc68000 in CPP_PREDEFINES . + * [gcc/config/rs6000/linux.h] Has -Dpowerpc in CPP_PREDEFINES . + * [gcc/config/arm/linux.h] Has -Darm in CPP_PREDEFINES . + * [gcc/config/i386/gnu.h] Has -Di386 in CPP_PREDEFINES . + * Small fixes and updates in README. + * Changes affecting the source package only: + * [gcc/Makefile.in, gcc/cp/Make-lang.in, gcc/p/Make-lang.in] + Daniel Jacobowitz: Ugly hacks of various kinds to make cplib2.txt get + properly regenerated with multilib. + * [debian/TODO] Created. + * [INSTALL/index.html] Fixed broken link. + + -- J.H.M. Dassen (Ray) Sun, 20 Sep 1998 14:05:15 +0200 + +egcs (1.1a-1) unstable; urgency=low + + * New upstream release. + * Added README.libstdc++ . + * Updated Standards-Version. + * Matthias: + * Downgraded gobjc dependency on egcs-docs from Recommends: to Suggests: . + * [libg++/Makefile.in] Patched not to rely on a `-f' flag of `ln'. + + -- J.H.M. Dassen (Ray) Wed, 2 Sep 1998 19:57:43 +0200 + +egcs (1.1-1) unstable; urgency=low + + * egcs-1.1 prerelease (from the last Debian package only the version file + changed). + * "Final" gpc Beta 2.1 gpc-19980830. + * Included libg++ and gpc in the .orig tarball. so that diffs are getting + smaller. + * debian/control.in: Changed maintainer address to galenh-egcs@debian.org. + * debian/copyright: Updated URLs. + + -- Matthias Klose Mon, 31 Aug 1998 12:43:13 +0200 + +egcs (1.0.99.56-0.1) unstable; urgency=low + + * New upstream snapshot 19980830 from CVS (called egcs-1.1 19980830). + * New libg++ snapshot 980828. + * Put all patches patches subdirectory; see patches/README in the source. + * debian/control.in: readded for libg++2.8.2-dev: + Replaces: libstdc++2.8-dev (<= 2.90.29-0.5) + * Renamed libg++2.9 package to libg++2.8.2. + * gcc/p/gpc-decl.c: Fix from Peter@Gerwinski.de; fixes optimization errors. + * patches/gpc-patch2: Fix from Peter@Gerwinski.de; fixes alpha errors. + * debian/rules: New configuration flag for building with and without + libstdc++api patch; untested without ... + + -- Matthias Klose Sun, 30 Aug 1998 12:04:22 +0200 + +egcs (1.0.99-0.6) unstable; urgency=low + + * PowerPC fixes. + * On powerpc, generate the -msoft-float libs and package them + as egcs-nof. + * Fix signed char error in gpc. + * Create a libg++.so.2.9 compatibility symlink. + + -- Daniel Jacobowitz Tue, 25 Aug 1998 11:44:09 -0400 + +egcs (1.0.99-0.5) unstable; urgency=low + + * New upstream snapshot 19980824. + * New gpc snapshot gpc-980822; reenabled gpc for alpha. + + -- Matthias Klose Tue, 25 Aug 1998 01:21:08 +0200 + +egcs (1.0.99-0.4) unstable; urgency=low + + * New upstream snapshot 19980819. Should build glibc 2.0.9x on PPC. + + -- Matthias Klose Wed, 19 Aug 1998 14:18:07 +0200 + +egcs (1.0.99-0.3) unstable; urgency=low + + * New upstream snapshot 19980816. + * debian/rules: build correct debian/control and debian/*.shlibs + * Enabled Haifa scheduler for ix86. + + -- Matthias Klose Mon, 17 Aug 1998 16:29:35 +0200 + +egcs (1.0.99-0.2) unstable; urgency=low + + * New upstream snapshot: egcs-19980812, minor changes only. + * Fixes for building on `primary' targets. + * Disabled gpc on `alpha' architecture. + * Uses debhelper 1.1.6 + * debian/control.in: Replace older snapshot versions in favor of newer + normal versions. + * debian/rules: Fixes building of binary-arch target only. + + -- Matthias Klose Thu, 13 Aug 1998 11:59:41 +0200 + +egcs (1.0.99-0.1) unstable; urgency=low + + * New upstream version: pre egcs-1.1 version. + * Many changes ... for details see debian/changelog.snapshot in the + source package. + * New packages libstdc++2.9 and libstdc++2.9-dev. + * New libg++ snapshot 980731: new packages libg++2.9 and libg++2.9-dev. + * New gpc snapshot gpc-980729: new package gpc. + * Uses debhelper 1.1 + + -- Matthias Klose Mon, 10 Aug 1998 13:00:27 +0200 + +egcs-snapshot (19980803-4) experimental; urgency=low + + * rebuilt debian/control. + + -- Matthias Klose Wed, 5 Aug 1998 08:51:47 +0200 + +egcs-snapshot (19980803-3) experimental; urgency=low + + * debian/rules: fix installation locations of NEWS, header and + `undocumented' files. + * man pages aren't compressed for the snapshot package. + + -- Matthias Klose Tue, 4 Aug 1998 17:34:31 +0200 + +egcs-snapshot (19980803-2) experimental; urgency=low + + * debian/rules: Uses debhelper. Old in debian/rules.old. + renamed postinst, prerm files for use with debhelper. + * debian/{libg++2.9,libstdc++2.9}/postinst: call ldconfig only, + when called for configure. + * egcs-docs is architecture independent package. + * new libg++ snapshot 980731. + * installed libstdc++ api patch (still buggy). + + -- Matthias Klose Mon, 3 Aug 1998 13:20:59 +0200 + +egcs-snapshot (19980729-1) experimental; urgency=low + + * New snapshot version 19980729 from CVS archive. + * New gpc snapshot gpc-980729. + * Let gcc/configure decide about using the Haifa scheduler. + * Remove -DDEBIAN. That was needed for the security improvements with + regard to the /tmp problem. egcs-1.1 chooses another approach. + * Save test-protocol and extract gpc errors to gpc-test-summary. + * Tighten binutils dependency to 2.9.1. + * debian/rules: new build-info target + * debian/{control.in,rules}: _SO_ and BINUTILSV substitution. + * debian/rules: add dependency for debian/control. + * debian/rules: remove bin/c++filt + * TODO: next version will use debhelper; the unorganized moving of + files becomes unmanageable ... + * TODO: g++ headers in stdc++ package? check! + + -- Matthias Klose Thu, 30 Jul 1998 12:10:20 +0200 + +egcs-snapshot (19980721-1) experimental; urgency=low + + * Unreleased. Infinite loops in executables made by gpc. + + -- Matthias Klose Wed, 22 Jul 1998 18:07:20 +0200 + +egcs-snapshot (19980715-1) experimental; urgency=low + + * New snapshot version from CVS archive. + * New gpc snapshot gpc-980715. + * New libg++ version libg++-2.8.2-980708. Changed versioning + schema for library. The major versions of libc, libstdc++ and the + g++ interface are coded in the library name. Use this new schema, + but provide a symlink to our previous schema, since the library + seems to be binary compatible. + * [debian/rules]: Fixed bug in build target, when bootstrap returns + with an error + + -- Matthias Klose Wed, 15 Jul 1998 10:55:05 +0200 + +egcs-snapshot (19980701-1) experimental; urgency=low + + * New snapshot version from CVS archive. + Two check programs in libg++ had to be manually killed to finish the + testsuite (tBag and tSet). + * New gpc snapshot gpc-980629. + * Incorporated debian/rules changes from egcs-1.0.3a-0.5 (but don't remove + gcc/cp/parse.c gcc/c-parse.c gcc/c-parse.y gcc/objc/objc-parse.c + gcc/objc/objc-parse.y, since these files are part of the release). + * Disable the -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP -DDEBIAN flags for the + snapshot. egcs-1.1 will have another solution. + * Don't bootstrap the snapshot with -fno-force-mem. Internal compiler + error :-( + * libf2c.a and f2c.h have changed names to libg2c.a and g2c.h and + have moved again into the gcc-lib dir. They are installed under + libg2c.a and g2c.h. Is it necessary to provide links f2c -> g2c ? + * debian/rules: reflect change of build dir of libraries. + + -- Matthias Klose Wed, 2 Jul 1998 13:15:28 +0200 + +egcs-snapshot (19980628-0.1) experimental; urgency=low + + * New upstream snapshot version. + * Non-maintainer upload; Matthias appears to be absent currently. + * Updated shlibs. + * Merged changes from regular egcs: + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, + so the .diff.gz becomes smaller. + * [debian/rules] Partial sync/update with the one for the regular egcs + version. + * [debian/rules] Make gcc/p/configure executable. + + -- J.H.M. Dassen (Ray) Wed, 1 Jul 1998 07:12:15 +0200 + +egcs (1.0.3a-0.6) frozen unstable; urgency=low + + * Some libg++ development files were in libstdc++2.8-dev rather than + libg++2.8-dev. Fixed this and dealt with upgrading from the earlier + versions (fixes #23908; this bug is not marked release-critical, but + is annoying and can be quite confusing for users. Therefore, I think + this fix should go in 2.0). + + -- J.H.M. Dassen (Ray) Tue, 30 Jun 1998 11:10:14 +0200 + +egcs (1.0.3a-0.5) frozen unstable; urgency=low + + * Fixed location of .hP files (Fixes #23448). + * [debian/rules] simplified extraction of the files for libg++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 17 Jun 1998 09:33:41 +0200 + +egcs (1.0.3a-0.4) frozen unstable; urgency=low + + * [gcc/gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; #ifdef HAVE_MKSTEMP delete the tempfile created + as a side effect. (fixes #23123 for egcs). + * [gcc/collect2.c] There's still a vulnerability here; I don't see how + I can fix it without leaving behind tempfiles though. + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, so the + .diff.gz becomes smaller. + + -- J.H.M. Dassen (Ray) Sat, 13 Jun 1998 09:06:52 +0200 + +egcs-snapshot (19980608-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 9 Jun 1998 14:07:44 +0200 + +egcs (1.0.3a-0.3) frozen unstable; urgency=high (security fixes) + + * [gcc/toplev.c] set flag_force_mem to 1 at optimisation level 3 or higher. + This works around #17768 which is considered release-critical. + * Changes by Matthias: + * [debian/README] Documentation of the compiler situation for Objective C. + * [debian/rules, debian/control.*] Generate control file from a master + file. + * [debian/rules] Updates for Pascal and Fortran parts; brings it in sync + with the one for the egcs snapshots. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + * Really compile -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP (really fixes #19453 + for egcs). + * [gcc/gcc.c] A couple of temp files weren't marked for deletion. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:56:22 +0200 + +egcs (1.0.3a-0.2) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for egcs). + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [gcc/choose-temp.c, libiberty/choose-temp.c]: use mktemp(3) if compiled + -DUSE_MKSTEMP . + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc/gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [gcc/f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + * Run the testsuite (this requires the dejagnu package in experimental; + unfortunately, it is difficult to distinguish this version from the one + in frozen). + if possible, and log the results in warn_summary and bootstrap-summary. + * [gcc/choose-temp.c, libiberty/choose-temp.c]: s|returh|return| in + comment. + * Added notes on the Debian compiler setup [debian/README] to the + development packages. + * Matthias: + * [libg++/etc/lf/Makefile.in] Replaced "-ltermcap" by "-lncurses". + * [debian/rules] Updated so it can be used for both egcs releases and + snapshots easily; added support for the GNU Pascal Compiler gpc. + * [contrib/test_summary, contrib/warn_summary] Added from CVS. + * Run compiler checks and include results in /usr/doc/. + * Updates to the README. + * [debian/rules] Use assignments to speed up startup. + * [debian/rules] Show the important variables at the start of the build + process. + * [debian/control.secondary] Added a dependency of gobjc on egcc on + architectures where egcs provides the secondary compiler, as + /usr/bin/egcc is the compiler driver for gobjc. (Fixes #22829). + * [debian/control.*] Bumped Standards-Version; used shorter version + numbers in the dependency relationships (esthetic difference only); + fixed typo. + + -- J.H.M. Dassen (Ray) Tue, 26 May 1998 21:47:41 +0200 + +egcs-snapshot (19980525-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 26 May 1998 18:04:06 +0200 + +egcs-snapshot (19980517-1) experimental; urgency=low + + * "Initial" release of the egcs-snapshot package; many debian/* files + derived from the egcs-1.0.3a-0.1 package (maintained by Galen Hazelwood + , NMU's by J.H.M. Dassen (Ray) ) + * The egcs-snapshot packages can coexist with the packages of the + egcs release. Package names have a '-ss' appended. + * All packages are installed in a separate tree (/usr/lib/egcs-ss following + the FHSS). + * Made all snapshot packages extra, all snapshot packages conflict + with correspondent egcs packages, which are newer than the snapshot. + * Included libg++-2.8.1-980505. + * Included GNU Pascal (gpc-980511). + * Haifa scheduler enabled for all snapshot packages. + * Run compiler checks and include results in /usr/doc/. + * Further information in /usr/doc//README.snapshot. + + -- Matthias Klose Wed, 20 May 1998 11:14:06 +0200 + +egcs (1.0.3a-0.1) frozen unstable; urgency=low + + * New upstream release egcs-2.90.29 980515 (egcs-1.0.3 release) + (we were using 1.0.3-prerelease). This includes the Haifa patches + we had since 1.0.3-0.2 and the gcc/objc/thr-posix.c patch we had + since 1.0.3-0.1; the differences with 1.0.3-prerelease + patches + we had is negligable. + * iostream info documentation was in the wrong package (libg++2.8-dev). + Now it's in libstdc++2.8-dev. (Thanks to Jens Rosenboom for bringing + this to my attention). As 1.0.3-0.3 didn't make it out of Incoming, + I'm not adding "Replaces:" for this; folks who had 1.0.3-0.3 installed + already know enough to use --force-overwrite. + * [gcc/objc/objc-act.c] Applied patch Matthias Klose supplied me with that + demangles Objective C method names in gcc error messages. + * Explicitly disable Haifa scheduling on Alpha, to make it easier to use + this package's diff with egcs snapshots, which may turn on Haifa + scheduling even though it is still unstable. (Requested by Chris Chimelis) + * Don't run "configure" again if builddir already exists (makes it faster + to restart builds in case one is hacking internals). Requested by + Johnnie Ingram. + * [gcc/gbl-ctors.h] Don't use extern declaration for atexit on glibc 2.1 + and higher (the prototype has probably changed; having the declaration + broke Sparc compiles). + * [debian/rules] Determine all version number automatically (from the + version string in gcc/version.c). + * [debian/copyright] Updated FTP locations; added text about libg++ (fixes + #22465). + + -- J.H.M. Dassen (Ray) Sat, 16 May 1998 17:41:44 +0200 + +egcs (1.0.3-0.3) frozen unstable; urgency=low + + * Made an "egcs-doc" package containing documentation for egcs (e)gcc, + g++, gobjc, so that administrators can choose whether to have this + documenation or the documentation that comes with the GNU gcc package. + Dependency on this is Recommends: on architectures where egcs provides + the primary C compiler; Suggests: on the others (where GNU gcc is still + the primary C compiler). + * Use the g++ FAQ from gcc/cp rather than libg++, as that version is more + up to date. + * Added iostream info documentation to libstdc++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 13 May 1998 08:46:10 +0200 + +egcs (1.0.3-0.2) frozen unstable; urgency=low + + * Added libg++ that works with egcs, found at + ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980505.tar.gz + (fixes #20587 (Severity: important)). + * The "libg++" and "libg++-dev" virtual packages now refer to the GNU + extensions. + * Added the g++ FAQ that comes with libg++ to the g++ package. + * libg++/Makefile.in: added $(srcdir) to rule for g++FAQ.info so that it + builds OK in builddir. + * Added -D__i386__ to the cpp predefines on intel. + * Patches Matthias supplied me with: + * Further 1.0.3 prerelease patches from CVS. + This includes patches to the Haifa scheduler. Alpha porters, please + check if this makes the Haifa scheduler OK again. + * Objective C patches from CVS. + + -- J.H.M. Dassen (Ray) Fri, 8 May 1998 14:43:20 +0200 + +egcs (1.0.3-0.1) frozen unstable; urgency=low (high for maintainers that use objc) + + * bug fixes only in new upstream version + * Applied patches from egcs CVS archive (egcs_1_03_prerelease) + (see gcc/ChangeLog in the egcs source package). + * libstdc++2.8-dev no longer Provides: libg++-dev (fixes #21153). + * libstdc++2.8-dev now Conflicts: libg++27-dev (bo), + libg++272-dev (hamm) [regular packages] rather than + Conflicts: libg++-dev [virtual package] to prepare the way for "libg++" + to be used as a virtual package for a new libg++ package (i.e. an up to + date one, which not longer contains libstdc++, but only the GNU + extensions) that is compatible with the egcs g++ packages. Such a package + isn't available yet. Joel Klecker tried building libg++2.8.1.1a within + egcs's libstdc++ setup, but it appears to need true gcc 2.8.1 . + * Filed Severity: important bugs against wxxt1-dev (#21707) because these + still depend on libg++-dev, which is removed in this version. + A fixed libsidplay1-dev has already been uploaded. + * libstdc++2.8 is now Section: base and Priority: required (as dselect is + linked against it). + * Disabled Haifa scheduling on Alpha again; Chris Chimelis reported + that this caused problems on some machines. + * [gcc/extend.texi] + ftp://maya.idiap.ch/pub/tmb/usenix88-lexic.ps.Z is no longer available; + use http://master.debian.org/~karlheg/Usenix88-lexic.pdf . + (fixes the egcs part of #20002). + * Updated Standards-Version. + * Changed chmod in debian/rules at Johnie Ingram's request. + * Rather than hardwire the Debian part of the packages' version number, + extract it from debian/changelog . + * Use gcc/objc/thr-posix.c from 980418 egcs snapshot to make objc work. + (Fixes #21192). + * Applied workaround for the GNUstep packages on sparc systems. + See README.sparc (on sparc packages only) in the doc directory. + This affects the other compilers as well. + * Already done in 1.0.2-0.7: the gobjc package now provides a virtual + package objc-compiler. + + -- J.H.M. Dassen (Ray) Tue, 28 Apr 1998 12:05:28 +0200 + +egcs (1.0.2-0.7) frozen unstable; urgency=low + + * Separated out Objective-C compiler. + * Applied patch from http://www.cygnus.com/ml/egcs/1998-Apr/0614.html + + -- Matthias Klose Fri, 17 Apr 1998 10:25:48 +0200 + +egcs (1.0.2-0.6) frozen unstable; urgency=low + + * Due to upstream changes (libg++ is now only the GNU specific C++ + classes, and is no longer maintained; libstdc++ contains the C++ + standard library, including STL), the virtual "libg++-dev" + package's meaning has become confusing. Therefore, new or updated + packages should no longer use the virtual "libg++-dev" package. + * Corrected g++'s Recommends to libstdc++2.8-dev (>=2.90.27-0.1). + The previous version had Recommends: libstdc++-dev (>=2.90.27-0.1) + which doesn't work, as libstc++-dev is a virtual package. + * Bumped Standards-Version. + + -- J.H.M. Dassen (Ray) Tue, 14 Apr 1998 11:52:08 +0200 + +egcs (1.0.2-0.5) frozen unstable; urgency=low (high for maintainers of packages that use libstdc++) + + * Modified shlibs file for libstdc++ to generate versioned dependencies, + as it is not link compatible with the 1.0.1-x versions in + project/experimental. (Fixes #20247, #20033) + Packages depending on libstd++ should be recompiled to fix their + dependencies. + * Strenghtened g++'s Recommends: libstdc++-dev to the 1.0.2 version or + newer. + * Fixed problems with the unknown(7) symlink for gcov. + * Reordering links now works. + + -- Adam Heath Sun, 12 Apr 1998 13:09:30 -0400 + +egcs (1.0.2-0.4) frozen unstable; urgency=low + + * Unreleased. This is the version Adam Heath received from me. + * Replaces: gcc (<= 2.7.2.3-3) so that the overlap with the older gcc + packages (including bo's gcc_2.7.2.1-8) is handled properly + (fixes #19931, #19672, #20217, #20593). + * Alpha architecture (fixes #20875): + * Patched gcc/config/alpha/linux.h for the gmon functions to operate + properly. + * Made egcs the primary C compiler. + * Enabled Hafia scheduling. + * Lintian-detected problems: + * E: libstdc++2.8: ldconfig-symlink-before-shlib-in-deb usr/lib/libstdc++.so.2.8 + * E: egcc: binary-without-manpage gcov + Reported as wishlist bug; added link to undocumented(7). + * W: libstdc++2.8: non-standard-executable-perm usr/lib/libstdc++.so.2.8.0 0555 + * E: libstdc++2.8: shlib-with-executable-bit usr/lib/libstdc++.so.2.8.0 0555 + + -- J.H.M. Dassen (Ray) Fri, 10 Apr 1998 14:46:46 +0200 + +egcs (1.0.2-0.3) frozen unstable; urgency=low + + * Really fixed dependencies. + + -- J.H.M. Dassen (Ray) Mon, 30 Mar 1998 11:30:26 +0200 + +egcs (1.0.2-0.2) frozen unstable; urgency=low + + * Fixed dependencies. + + -- J.H.M. Dassen (Ray) Sat, 28 Mar 1998 13:58:58 +0100 + +egcs (1.0.2-0.1) frozen unstable; urgency=low + + * New upstream version; it now has -Di386 in CPP_PREDEFINES. + * Only used the debian/* patches from 1.0.1-2; the rest of it appears + to be in 1.0.2 already. + + -- J.H.M. Dassen (Ray) Fri, 27 Mar 1998 11:47:14 +0100 + +egcs (1.0.1-2) unstable; urgency=low + + * Integrated pre-release 1.0.2 patches + * Split out g++ + * egcs may now provide either the primary or secondary C compiler + + -- Galen Hazelwood Sat, 14 Mar 1998 14:15:32 -0700 + +egcs (1.0.1-1) unstable; urgency=low + + * New upstream version + * egcs is now the standard Debian gcc! + * gcc now provides c-compiler (#15248 et al.) + * g77 now provides fortran77-compiler + * g77 dependencies now correct (#16991) + * /usr/doc/gcc/changelog.gz now has correct permissions (#16139) + + -- Galen Hazelwood Sat, 7 Feb 1998 19:22:30 -0700 + +egcs (1.0-1) experimental; urgency=low + + * First official release + + -- Galen Hazelwood Thu, 4 Dec 1997 16:30:11 -0700 + +egcs (970917-1) experimental; urgency=low + + * New upstream snapshot (There's a lot of stuff here as well, including + a new libstdc++, but it _still_ won't build...) + * eg77 driver now works properly + + -- Galen Hazelwood Wed, 17 Sep 1997 20:44:29 -0600 + +egcs (970904-1) experimental; urgency=low + + * New upstream snapshot + + -- Galen Hazelwood Sun, 7 Sep 1997 18:25:06 -0600 + +egcs (970814-1) experimental; urgency=low + + * Initial packaging (of initial snapshot!) + + -- Galen Hazelwood Wed, 20 Aug 1997 00:36:28 +0000 + +gcc272 (2.7.2.3-12) unstable; urgency=low + + * Compiled on a glibc-2.0 based system. + * Reflect move of manpage to /usr/share in gcc.postinst as well. + * Moved gcc272-docs to section doc, priority optional. + + -- Matthias Klose Sat, 28 Aug 1999 13:42:13 +0200 + +gcc272 (2.7.2.3-11) unstable; urgency=low + + * Follow Debian policy for GNU system type (fixes #42657). + * config/i386/linux.h: Remove %[cpp_cpu] from CPP_SPEC. Stops gcc-2.95 + complaining about obsolete spec operators (using gcc -V 2.7.2.3). + Patch suggested by Zack Weinberg . + + -- Matthias Klose Sun, 15 Aug 1999 20:12:21 +0200 + +gcc272 (2.7.2.3-10) unstable; urgency=low + + * Renamed source package to gcc272. The egcs source package is renamed + to gcc, because it's now the "official" GNU C compiler. + * Changed maintainer address to "Debian GCC maintainers". + * Install info and man stuff to /usr/share. + + -- Matthias Klose Thu, 27 May 1999 12:29:23 +0200 + +gcc (2.7.2.3-9) unstable; urgency=low + + * debian/{postinst,prerm}-doc: handle gcc272.info, not gcc.info. + Fixes #36306. + + -- Matthias Klose Tue, 20 Apr 1999 07:32:58 +0200 + +gcc (2.7.2.3-8) unstable; urgency=low + + * Make gcc-2.7 the secondary compiler. Rename gcc package to gcc272. + On i386, sparc and m68k, this package is compiled against glibc2.0. + * The cpp package is built from the egcs source package. + + -- Matthias Klose Mon, 29 Mar 1999 22:48:50 +0200 + +gcc (2.7.2.3-7) frozen unstable; urgency=low + + * Separated out ObjC compiler to gobjc27 package. + * Changed maintainer address. + * Synchronized README.Debian with egcs-1.1.1-3. + + -- Matthias Klose Tue, 29 Dec 1998 19:05:26 +0100 + +gcc (2.7.2.3-6) frozen unstable; urgency=low + + * Link with -lc on i386, m68k, sparc, when building shared libraries + (fixes #25122). + + -- Matthias Klose Thu, 3 Dec 1998 12:12:12 +0200 + +gcc (2.7.2.3-5) frozen unstable; urgency=low + + * Updated maintainer info. + * Updated Standards-Version; made lintian-clean. + * gcc-docs can coexist with the latest egcs-docs, so added (<= version) to + the Conflicts. + * Updated the README and renamed it to README.Debian . + * Put a reference to /usr/doc/gcc/README.Debian in the info docs. + * Updated description of g++272 . + * Clean up generated info files, to keep the diff small. + + -- J.H.M. Dassen (Ray) Tue, 17 Nov 1998 20:05:59 +0100 + +gcc (2.7.2.3-4.8) frozen unstable; urgency=high + + * Non-maintainer release + * Fix type in extended description + * Removed wrong test in postinst + * Add preinst to clean up some stuff from an older gcc package properly + and stop man complaining about dangling symlinks + + -- Wichert Akkerman Fri, 17 Jul 1998 18:48:32 +0200 + +gcc (2.7.2.3-4.7) frozen unstable; urgency=high + + * Really fixed gcc-docs postinst (Fixes #23470), so that `gcc-docs' + becomes installable. + + -- J.H.M. Dassen (Ray) Mon, 15 Jun 1998 07:53:40 +0200 + +gcc (2.7.2.3-4.6) frozen unstable; urgency=high + + * [gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; + #ifdef HAVE_MKSTEMP delete the tempfile created as a side effect. + (fixes #23123 for gcc). + * gcc-docs postinst was broken (due to a broken line) (fixes #23391, #23401). + * [debian/control] description for gcc-docs said `egcs' where it should have + said `gcc' (fixes #23396). + + -- J.H.M. Dassen (Ray) Thu, 11 Jun 1998 12:48:50 +0200 + +gcc (2.7.2.3-4.5) frozen unstable; urgency=high + + * The previous version left temporary files behind, as they were not + marked for deletion afterwards. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:49:14 +0200 + +gcc (2.7.2.3-4.4) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for gcc): + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [cp/g++.c, collect2.c, gcc.c] If compiled -DHAVE_MKSTEMP use mkstemp(3) + rather than mktemp(3). + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + + -- J.H.M. Dassen (Ray) Sat, 30 May 1998 17:27:03 +0200 + +gcc (2.7.2.3-4.3) frozen unstable; urgency=high + + * The "alpha" patches from -4 affected a lot more than alpha support, + and in all likeliness broke compilation of libc6 2.0.7pre3-1 + and 2.0.7pre1-4 . I removed them by selective application of the + diff between -4 and -4. (should fix #22292). + * Fixed reference to the trampolines paper (fixes #20002 for Debian; + this still needs to be forwarded). + * This is for frozen too. (obsoletes #22390 (request to move -4.2 to + frozen)). + * Split of gcc-docs package, so that the gcc can be succesfully installed + on systems that have egcs-docs installed. + * Added the README on the compiler situation that's already in the egcs + packages. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + + -- J.H.M. Dassen (Ray) Thu, 28 May 1998 20:03:59 +0200 + +gcc (2.7.2.3-4.2) unstable; urgency=low + + * Still for unstable, as I have received no feedback about the g++272 + package yet. + * gcc now Provides: objc-compiler . + * Clean up /etc/alternatives/{g++,g++.1.gz} if they are dangling. + (fixes #19765, #20563) + + -- J.H.M. Dassen (Ray) Wed, 22 Apr 1998 12:40:45 +0200 + +gcc (2.7.2.3-4.1) unstable; urgency=low + + * Bumped Standards-Version. + * Forked off a g++272 package (e.g. for code that uses the GNU extensions + in libg++); for now this is in "unstable" only; feedback appreciated. + * Some cleanup (lintian): permissions, absolute link, gzip manpage. + + -- J.H.M. Dassen (Ray) Fri, 17 Apr 1998 13:05:25 +0200 + +gcc (2.7.2.3-4) unstable; urgency=low + + * Added alpha patches + * Only build C and objective-c compilers, split off g++ + + -- Galen Hazelwood Sun, 8 Mar 1998 21:16:39 -0700 + +gcc (2.7.2.3-3) unstable; urgency=low + + * Added patches for m68k + * Added patches for sparc (#13968) + + -- Galen Hazelwood Fri, 17 Oct 1997 18:25:21 -0600 + +gcc (2.7.2.3-2) unstable; urgency=low + + * Added g77 support (g77 0.5.21) + + -- Galen Hazelwood Wed, 10 Sep 1997 18:44:54 -0600 + +gcc (2.7.2.3-1) unstable; urgency=low + + * New upstream version + * Now using pristine source + * Removed misplaced paragraph in cpp.texi (#10877) + * Fix security bug for temporary files (#5298) + * Added Suggests: libg++-dev (#12335) + * Patched objc/thr-posix.c to support conditions (#12502) + + -- Galen Hazelwood Mon, 8 Sep 1997 12:20:07 -0600 + +gcc (2.7.2.2-7) unstable; urgency=low + + * Made cc and c++ managed through alternates mechanism (for egcs) + + -- Galen Hazelwood Tue, 19 Aug 1997 22:37:03 +0000 + +gcc (2.7.2.2-6) unstable; urgency=low + + * Tweaked Objective-C thread support (#11069) + + -- Galen Hazelwood Wed, 9 Jul 1997 11:56:57 -0600 + +gcc (2.7.2.2-5) unstable; urgency=low + + * More updated m68k patches + * Now conflicts with libc5-dev (#10006, #10112) + * More strict Depends: cpp, prevents version mismatch (#9954) + + -- Galen Hazelwood Thu, 19 Jun 1997 01:29:02 -0600 + +gcc (2.7.2.2-4) unstable; urgency=low + + * Moved to unstable + * Temporarily removed fortran support (waiting for new g77) + * Updated m68k patches + + -- Galen Hazelwood Fri, 9 May 1997 13:35:14 -0600 + +gcc (2.7.2.2-3) experimental; urgency=low + + * Built against libc6 (fixes bug #8511) + + -- Galen Hazelwood Fri, 4 Apr 1997 13:30:10 -0700 + +gcc (2.7.2.2-2) experimental; urgency=low + + * Fixed configure to build crt{begin,end}S.o on i386 + + -- Galen Hazelwood Tue, 11 Mar 1997 16:15:02 -0700 + +gcc (2.7.2.2-1) experimental; urgency=low + + * Built for use with libc6-dev (experimental purposes only!) + * Added m68k patches from Andreas Schwab + + -- Galen Hazelwood Fri, 7 Mar 1997 12:44:17 -0700 + +gcc (2.7.2.1-7) unstable; urgency=low + + * Patched to support g77 0.5.20 + + -- Galen Hazelwood Thu, 6 Mar 1997 22:20:23 -0700 + +gcc (2.7.2.1-6) unstable; urgency=low + + * Added (small) manpage for protoize/unprotoize (fixes bug #6904) + * Removed -lieee from specs file (fixes bug #7741) + * No longer builds aout-gcc + + -- Galen Hazelwood Mon, 3 Mar 1997 11:10:20 -0700 + +gcc (2.7.2.1-5) unstable; urgency=low + + * debian/control now lists cpp in section "interpreters" + * Re-added Objective-c patches for unstable + + -- Galen Hazelwood Wed, 22 Jan 1997 10:27:52 -0700 + +gcc (2.7.2.1-4) stable unstable; urgency=low + + * Changed original source file so dpkg-source -x works + * Removed Objective-c patches (unsafe for stable) + * Built against rex's libc, so fixes placed in -3 are available to + those still using rex + + -- Galen Hazelwood Tue, 21 Jan 1997 11:11:53 -0700 + +gcc (2.7.2.1-3) unstable; urgency=low + + * New (temporary) maintainer + * Updated to new standards and source format + * Integrated aout-gcc into gcc source package + * Demoted aout-gcc to Priority "extra" + * cpp package description more clear (fixes bug #5428) + * Removed cpp "Replaces: gcc" (fixes bug #5762) + * Minor fix to invoke.texi (fixes bug #2909) + * Added latest Objective-C patches for GNUstep people (fixes bug #4657) + + -- Galen Hazelwood Sun, 5 Jan 1997 09:57:36 -0700 diff --git a/compat b/compat new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/compat @@ -0,0 +1 @@ +11 diff --git a/control b/control new file mode 100644 index 0000000..5237ce5 --- /dev/null +++ b/control @@ -0,0 +1,5778 @@ +Source: gcc-15 +Section: devel +Priority: optional +Maintainer: Debian GCC Maintainers +Uploaders: Matthias Klose +Standards-Version: 4.7.4 +Build-Depends: debhelper (>= 11), dpkg-dev (>= 1.17.14), g++-multilib [amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32] , + libc6.1-dev (>= 2.23-1~) [alpha ia64] | libc0.3-dev (>= 2.23-1~) [hurd-amd64 hurd-i386] | libc6-dev (>= 2.23-1~), libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], lib32gcc-s1 [amd64 ppc64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el sparc64 x32], libn32gcc-s1 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], lib64gcc-s1 [i386 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el], libc6-dev-mipsn32 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el], libc6-dev-x32 [amd64 i386], libx32gcc-s1 [amd64 i386], libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-amd64 hurd-i386] | libc6-dbg, + linux-libc-dev [m68k], + m4, libtool, autoconf2.69, gcc-16-base, + dwz, libunwind8-dev [ia64], libatomic-ops-dev [ia64], + gawk, lzma, xz-utils, patchutils, + libzstd-dev, zlib1g-dev, systemtap-sdt-dev [linux-any], + binutils:native (>= 2.39), binutils-hppa64-linux-gnu:native (>= 2.39) [hppa amd64 i386 x32], + gperf, bison, flex, + gettext, nvptx-tools [amd64 arm64 ppc64el], amdgcn-tools-21 [amd64], + texinfo, locales-all, sharutils, + procps, gnat-15:native [!arc !ia64 !sh3 !sh3eb !sh4eb], g++-15:native, netbase, gdc-15:native [!alpha !arc !ia64 !m68k !sh4 !s390 !hurd-amd64 !hurd-i386], python3:any, cargo [!alpha !hppa !ia64 !m68k !sh4 !x32 !hurd-amd64 !hurd-i386], + libisl-dev (>= 0.20), libmpc-dev (>= 1.0), libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), lib32z1-dev [amd64], lib64z1-dev [i386], unzip , + dejagnu [!alpha !hurd-amd64 !hurd-i386] , git [!alpha !hurd-amd64 !hurd-i386] , python3-pytest [!alpha !hppa !m68k !sh4 !x32] , python3-check-jsonschema [!alpha !hppa !m68k !sh4 !x32] , chrpath, lsb-release, quilt, time, + pkgconf, libgc-dev, + g++-15-for-host , gobjc-15-for-host [!avr] , gfortran-15-for-host , gdc-15-for-host [!alpha !arc !ia64 !m68k !sh4 !s390 !hurd-amd64 !hurd-i386] , gccgo-15-for-host [!arc !avr !hppa !loong64 !m68k !sh4] , gnat-15-for-host [!arc !ia64 !sh3 !sh3eb !sh4eb] , gm2-15-for-host [!powerpc !ppc64 !sh4] , gcobol-15-for-host [!alpha !arc !hppa !loong64 !m68k !mips !mipsel !mips64 !mips64el !powerpc !ppc64 !s390x !sh4 !sparc !sparc64 !x32 !i386 !hurd-i386 !arm !armel !armhf !hurd-amd64 !hurd-i386] , ga68-15-for-host , +Build-Depends-Indep: doxygen , graphviz , ghostscript , texlive-latex-base , xsltproc , libxml2-utils , docbook-xsl-ns , +Homepage: https://gcc.gnu.org/ +Vcs-Browser: https://salsa.debian.org/toolchain-team/gcc/tree/gcc-15-debian +Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git -b gcc-15-debian +XS-Testsuite: autopkgtest +Rules-Requires-Root: binary-targets + +Package: gcc-15-base +Architecture: any +Multi-Arch: same +Section: libs +Depends: ${misc:Depends} +Replaces: ${base:Replaces} +Breaks: ${base:Breaks} +Description: GCC, the GNU Compiler Collection (base package) + This package contains files common to all languages and libraries + contained in the GNU Compiler Collection (GCC). + +Package: libgcc-15-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Recommends: ${dep:libcdev} +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, + ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, + ${dep:libtsan}, ${dep:libubsan}, ${dep:libhwasan}, ${dep:libvtv}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +Breaks: libtsan2 (<< 12-20211113-2~) +Replaces: libtsan2 (<< 12-20211113-2~) +Multi-Arch: same +Description: GCC support library (development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: lib64gcc-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Recommends: ${dep:libcdev} +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (64bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: lib32gcc-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Recommends: ${dep:libcdev} +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (32 bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libn32gcc-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Recommends: ${dep:libcdev} +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (n32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libx32gcc-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Recommends: ${dep:libcdev} +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (x32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: gcc-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: cpp-15-alpha-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-alpha-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-alpha-linux-gnu +Description: GNU C compiler for the alpha-linux-gnu architecture + This is the GNU C compiler for the alpha-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: cpp-15-x86-64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-x86-64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-x86-64-linux-gnu +Description: GNU C compiler for the x86_64-linux-gnu architecture + This is the GNU C compiler for the x86_64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: cpp-15-arm-linux-gnueabi (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-arm-linux-gnueabi (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-arm-linux-gnueabi +Description: GNU C compiler for the arm-linux-gnueabi architecture + This is the GNU C compiler for the arm-linux-gnueabi architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: cpp-15-arm-linux-gnueabihf (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-arm-linux-gnueabihf (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-arm-linux-gnueabihf +Description: GNU C compiler for the arm-linux-gnueabihf architecture + This is the GNU C compiler for the arm-linux-gnueabihf architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: cpp-15-aarch64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-aarch64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-aarch64-linux-gnu +Description: GNU C compiler for the aarch64-linux-gnu architecture + This is the GNU C compiler for the aarch64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: cpp-15-i686-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-i686-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-i686-linux-gnu +Description: GNU C compiler for the i686-linux-gnu architecture + This is the GNU C compiler for the i686-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: cpp-15-loongarch64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-loongarch64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-loongarch64-linux-gnu +Description: GNU C compiler for the loongarch64-linux-gnu architecture + This is the GNU C compiler for the loongarch64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: cpp-15-mipsel-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsel-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsel-linux-gnu +Description: GNU C compiler for the mipsel-linux-gnu architecture + This is the GNU C compiler for the mipsel-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: cpp-15-mips64-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mips64-linux-gnuabi64 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mips64-linux-gnuabi64 +Description: GNU C compiler for the mips64-linux-gnuabi64 architecture + This is the GNU C compiler for the mips64-linux-gnuabi64 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: cpp-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mips64el-linux-gnuabi64 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mips64el-linux-gnuabi64 +Description: GNU C compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU C compiler for the mips64el-linux-gnuabi64 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: cpp-15-mips64-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mips64-linux-gnuabin32 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mips64-linux-gnuabin32 +Description: GNU C compiler for the mips64-linux-gnuabin32 architecture + This is the GNU C compiler for the mips64-linux-gnuabin32 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: cpp-15-powerpc-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-powerpc-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-powerpc-linux-gnu +Description: GNU C compiler for the powerpc-linux-gnu architecture + This is the GNU C compiler for the powerpc-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: cpp-15-powerpc64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-powerpc64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-powerpc64-linux-gnu +Description: GNU C compiler for the powerpc64-linux-gnu architecture + This is the GNU C compiler for the powerpc64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: cpp-15-powerpc64le-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-powerpc64le-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-powerpc64le-linux-gnu +Description: GNU C compiler for the powerpc64le-linux-gnu architecture + This is the GNU C compiler for the powerpc64le-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: cpp-15-m68k-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-m68k-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-m68k-linux-gnu +Description: GNU C compiler for the m68k-linux-gnu architecture + This is the GNU C compiler for the m68k-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: cpp-15-riscv64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-riscv64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-riscv64-linux-gnu +Description: GNU C compiler for the riscv64-linux-gnu architecture + This is the GNU C compiler for the riscv64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: cpp-15-sh4-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-sh4-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-sh4-linux-gnu +Description: GNU C compiler for the sh4-linux-gnu architecture + This is the GNU C compiler for the sh4-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: cpp-15-sparc-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-sparc-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-sparc-linux-gnu +Description: GNU C compiler for the sparc-linux-gnu architecture + This is the GNU C compiler for the sparc-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: cpp-15-sparc64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-sparc64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-sparc64-linux-gnu +Description: GNU C compiler for the sparc64-linux-gnu architecture + This is the GNU C compiler for the sparc64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: cpp-15-s390x-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-s390x-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-s390x-linux-gnu +Description: GNU C compiler for the s390x-linux-gnu architecture + This is the GNU C compiler for the s390x-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: cpp-15-x86-64-linux-gnux32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-x86-64-linux-gnux32 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-x86-64-linux-gnux32 +Description: GNU C compiler for the x86_64-linux-gnux32 architecture + This is the GNU C compiler for the x86_64-linux-gnux32 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: cpp-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mips64el-linux-gnuabin32 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mips64el-linux-gnuabin32 +Description: GNU C compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU C compiler for the mips64el-linux-gnuabin32 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: cpp-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa32r6-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa32r6-linux-gnu +Description: GNU C compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU C compiler for the mipsisa32r6-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: cpp-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa32r6el-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa32r6el-linux-gnu +Description: GNU C compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU C compiler for the mipsisa32r6el-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: cpp-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa64r6-linux-gnuabi64 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa64r6-linux-gnuabi64 +Description: GNU C compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU C compiler for the mipsisa64r6-linux-gnuabi64 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: cpp-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa64r6el-linux-gnuabi64 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa64r6el-linux-gnuabi64 +Description: GNU C compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU C compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: cpp-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa64r6-linux-gnuabin32 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa64r6-linux-gnuabin32 +Description: GNU C compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU C compiler for the mipsisa64r6-linux-gnuabin32 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: cpp-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa64r6el-linux-gnuabin32 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa64r6el-linux-gnuabin32 +Description: GNU C compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU C compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), + cpp-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU C compiler for the host architecture + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gcc-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15 (>= ${gcc:Version}), cpp-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU C compiler for the build architecture + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package. + +Package: gcc-15 +Architecture: any +Depends: gcc-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + cpp-15 (= ${gcc:Version}), + binutils (>= ${binutils:Version}), + ${misc:Depends} +Recommends: ${dep:libcdev} +Replaces: cpp-15 (<< 7.1.1-8) +Suggests: ${gcc:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler +Description: GNU C compiler + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: gcc-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU C compiler (multilib support) + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gcc-15-test-results +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), ${misc:Depends} +Replaces: g++-5 (<< 5.2.1-28) +Description: Test results for the GCC test suite + This package contains the test results for running the GCC test suite + for a post build analysis. + +Package: gcc-15-plugin-dev +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), libgmp-dev (>= 2:5.0.1~), libmpc-dev (>= 1.0), ${shlibs:Depends}, ${misc:Depends} +Description: Files for GNU GCC plugin development. + This package contains (header) files for GNU GCC plugin development. It + is only used for the development of GCC plugins, but not needed to run + plugins. + +Package: gcc-15-hppa64-linux-gnu +Architecture: hppa amd64 i386 x32 +Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), + binutils-hppa64-linux-gnu | binutils-hppa64, + ${shlibs:Depends}, ${misc:Depends} +Description: GNU C compiler (cross compiler for hppa64) + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: cpp-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for alpha-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + alpha-linux-gnu architecture but not the compiler. + +Package: cpp-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for x86_64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + x86_64-linux-gnu architecture but not the compiler. + +Package: cpp-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for arm-linux-gnueabi + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + arm-linux-gnueabi architecture but not the compiler. + +Package: cpp-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for arm-linux-gnueabihf + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + arm-linux-gnueabihf architecture but not the compiler. + +Package: cpp-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for aarch64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + aarch64-linux-gnu architecture but not the compiler. + +Package: cpp-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for i686-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + i686-linux-gnu architecture but not the compiler. + +Package: cpp-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for loongarch64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + loongarch64-linux-gnu architecture but not the compiler. + +Package: cpp-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsel-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsel-linux-gnu architecture but not the compiler. + +Package: cpp-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mips64-linux-gnuabi64 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mips64-linux-gnuabi64 architecture but not the compiler. + +Package: cpp-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mips64el-linux-gnuabi64 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mips64el-linux-gnuabi64 architecture but not the compiler. + +Package: cpp-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mips64-linux-gnuabin32 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mips64-linux-gnuabin32 architecture but not the compiler. + +Package: cpp-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for powerpc-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + powerpc-linux-gnu architecture but not the compiler. + +Package: cpp-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for powerpc64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + powerpc64-linux-gnu architecture but not the compiler. + +Package: cpp-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for powerpc64le-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + powerpc64le-linux-gnu architecture but not the compiler. + +Package: cpp-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for m68k-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + m68k-linux-gnu architecture but not the compiler. + +Package: cpp-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for riscv64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + riscv64-linux-gnu architecture but not the compiler. + +Package: cpp-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for sh4-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + sh4-linux-gnu architecture but not the compiler. + +Package: cpp-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for sparc-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + sparc-linux-gnu architecture but not the compiler. + +Package: cpp-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for sparc64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + sparc64-linux-gnu architecture but not the compiler. + +Package: cpp-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for s390x-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + s390x-linux-gnu architecture but not the compiler. + +Package: cpp-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for x86_64-linux-gnux32 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + x86_64-linux-gnux32 architecture but not the compiler. + +Package: cpp-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mips64el-linux-gnuabin32 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mips64el-linux-gnuabin32 architecture but not the compiler. + +Package: cpp-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa32r6-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa32r6-linux-gnu architecture but not the compiler. + +Package: cpp-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa32r6el-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa32r6el-linux-gnu architecture but not the compiler. + +Package: cpp-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa64r6-linux-gnuabi64 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa64r6-linux-gnuabi64 architecture but not the compiler. + +Package: cpp-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa64r6el-linux-gnuabi64 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa64r6el-linux-gnuabi64 architecture but not the compiler. + +Package: cpp-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa64r6-linux-gnuabin32 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa64r6-linux-gnuabin32 architecture but not the compiler. + +Package: cpp-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa64r6el-linux-gnuabin32 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa64r6el-linux-gnuabin32 architecture but not the compiler. + +Package: cpp-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), cpp-15${target:suffix} (>= ${gcc:SoftVersion}), ${misc:Depends} +Description: GNU C preprocessor for the host architecture + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor configured for the host architecture but not + the compiler. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: cpp-15-for-build +Architecture: all +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (>= ${gcc:SoftVersion}), cpp-15 (>= ${gcc:Version}), ${misc:Depends} +Description: GNU C preprocessor for the build architecture + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor configured for the build architecture but not + the compiler. + . + This is a dependency package. + +Package: cpp-15 +Architecture: any +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), cpp-15${target:suffix} (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor but not the compiler. + +Package: gcc-15-locales +Architecture: all +Depends: gcc-15-base (>= ${gcc:SoftVersion}), cpp-15 (>= ${gcc:SoftVersion}), ${misc:Depends} +Recommends: gcc-15 (>= ${gcc:SoftVersion}) +Description: GCC, the GNU compiler collection (native language support files) + Native language support for GCC. Lets GCC speak your language, + if translations are available. + . + Please do NOT submit bug reports in other languages than "C". + Always reset your language settings to use the "C" locales. + +Package: g++-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-alpha-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the alpha-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + alpha-linux-gnu architecture. + +Package: g++-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-x86-64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the x86_64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + x86_64-linux-gnu architecture. + +Package: g++-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-arm-linux-gnueabi +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the arm-linux-gnueabi architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + arm-linux-gnueabi architecture. + +Package: g++-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-arm-linux-gnueabihf +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the arm-linux-gnueabihf architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + arm-linux-gnueabihf architecture. + +Package: g++-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-aarch64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the aarch64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + aarch64-linux-gnu architecture. + +Package: g++-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-i686-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the i686-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + i686-linux-gnu architecture. + +Package: g++-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-loongarch64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-loongarch64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the loongarch64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + loongarch64-linux-gnu architecture. + +Package: g++-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsel-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsel-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsel-linux-gnu architecture. + +Package: g++-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mips64-linux-gnuabi64 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mips64-linux-gnuabi64 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mips64-linux-gnuabi64 architecture. + +Package: g++-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mips64el-linux-gnuabi64 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mips64el-linux-gnuabi64 architecture. + +Package: g++-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mips64-linux-gnuabin32 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mips64-linux-gnuabin32 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mips64-linux-gnuabin32 architecture. + +Package: g++-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-powerpc-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the powerpc-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + powerpc-linux-gnu architecture. + +Package: g++-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-powerpc64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the powerpc64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + powerpc64-linux-gnu architecture. + +Package: g++-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-powerpc64le-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the powerpc64le-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + powerpc64le-linux-gnu architecture. + +Package: g++-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-m68k-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-m68k-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the m68k-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + m68k-linux-gnu architecture. + +Package: g++-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-riscv64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the riscv64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + riscv64-linux-gnu architecture. + +Package: g++-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sh4-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-sh4-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the sh4-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + sh4-linux-gnu architecture. + +Package: g++-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-sparc-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the sparc-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + sparc-linux-gnu architecture. + +Package: g++-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-sparc64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the sparc64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + sparc64-linux-gnu architecture. + +Package: g++-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-s390x-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the s390x-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + s390x-linux-gnu architecture. + +Package: g++-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-x86-64-linux-gnux32 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the x86_64-linux-gnux32 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + x86_64-linux-gnux32 architecture. + +Package: g++-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mips64el-linux-gnuabin32 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mips64el-linux-gnuabin32 architecture. + +Package: g++-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa32r6-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa32r6-linux-gnu architecture. + +Package: g++-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa32r6el-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa32r6el-linux-gnu architecture. + +Package: g++-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa64r6-linux-gnuabi64 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa64r6-linux-gnuabi64 architecture. + +Package: g++-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa64r6el-linux-gnuabi64 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa64r6el-linux-gnuabi64 architecture. + +Package: g++-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa64r6-linux-gnuabin32 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa64r6-linux-gnuabin32 architecture. + +Package: g++-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa64r6el-linux-gnuabin32 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa64r6el-linux-gnuabin32 architecture. + +Package: g++-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), g++-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU C++ compiler for the host architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the host architecture. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: g++-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:Version}), ${misc:Depends}, + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}) +Description: GNU C++ compiler for the build architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + arch_gnu architecture. + . + This is a dependency package. + +Package: g++-15 +Architecture: any +Depends: g++-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} +Provides: c++-compiler, c++abi2-dev +Suggests: ${gxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Description: GNU C++ compiler + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + +Package: g++-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), g++-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libcxxbiarchdbg} +Description: GNU C++ compiler (multilib support) + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgccjit15 +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev, binutils, ${dep:libcdev}, + ${shlibs:Depends}, ${misc:Depends} +Breaks: python-gccjit (<< 0.4-4), python3-gccjit (<< 0.4-4) +Description: GCC just-in-time compilation (shared library) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit-15-doc +Section: doc +Architecture: all +Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libgccjit-5-doc, libgccjit-6-doc, libgccjit-7-doc, libgccjit-8-doc, + libgccjit-9-doc, libgccjit-10-doc, libgccjit-11-doc, libgccjit-12-doc, + libgccjit-13-doc, libgccjit-14-doc, +Description: GCC just-in-time compilation (documentation) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit-15-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), libgccjit15 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Suggests: libgccjit-15-dbg +Description: GCC just-in-time compilation (development files) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +#Package: libgdiagnostics`'PV-doc +#Section: doc +#Architecture: all +#Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +#Conflicts: libgdiagnostics-14-doc, +#Description: GCC diagnostic-handling code wrapped into a library (documentation) +# GCCs diagnostic-handling code covers things like +# - quoting pertinent source code (with a cache) +# - underlining points and ranges in the source code, possibly with labels +# - emitting fix-it hints +# - generating patches from fix-it hints +# - SARIF output + +Package: libgdiagnostics-15-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), libgdiagnostics0 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Suggests: libgdiagnostic-15-dbg +Description: GCC diagnostic-handling code wrapped into a library (development files) + GCCs diagnostic-handling code covers things like + - quoting pertinent source code (with a cache) + - underlining points and ranges in the source code, possibly with labels + - emitting fix-it hints + - generating patches from fix-it hints + - SARIF output + +Package: gcc-15-diagnostics +Section: devel +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), libgdiagnostics0 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GCC diagnostic tools + Currently only provides the sarif-replay command-line tool, which takes + SARIF files as input, and uses libdiagnostics to replay any diagnostics + within them as if they were GCC diagnostics. + +Package: gobjc++-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-alpha-linux-gnu (= ${gcc:Version}), g++-15-alpha-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-alpha-linux-gnu +Description: GNU Objective-C++ compiler for the alpha-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + alpha-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-x86-64-linux-gnu (= ${gcc:Version}), g++-15-x86-64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-x86-64-linux-gnu +Description: GNU Objective-C++ compiler for the x86_64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + x86_64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-arm-linux-gnueabi (= ${gcc:Version}), g++-15-arm-linux-gnueabi (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-arm-linux-gnueabi +Description: GNU Objective-C++ compiler for the arm-linux-gnueabi architecture + This is the GNU Objective-C++ compiler for the + arm-linux-gnueabi architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-arm-linux-gnueabihf (= ${gcc:Version}), g++-15-arm-linux-gnueabihf (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-arm-linux-gnueabihf +Description: GNU Objective-C++ compiler for the arm-linux-gnueabihf architecture + This is the GNU Objective-C++ compiler for the + arm-linux-gnueabihf architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-aarch64-linux-gnu (= ${gcc:Version}), g++-15-aarch64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-aarch64-linux-gnu +Description: GNU Objective-C++ compiler for the aarch64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + aarch64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-i686-linux-gnu (= ${gcc:Version}), g++-15-i686-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-i686-linux-gnu +Description: GNU Objective-C++ compiler for the i686-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + i686-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-loongarch64-linux-gnu (= ${gcc:Version}), g++-15-loongarch64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-loongarch64-linux-gnu +Description: GNU Objective-C++ compiler for the loongarch64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + loongarch64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsel-linux-gnu (= ${gcc:Version}), g++-15-mipsel-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsel-linux-gnu +Description: GNU Objective-C++ compiler for the mipsel-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + mipsel-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), g++-15-mips64-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mips64-linux-gnuabi64 +Description: GNU Objective-C++ compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Objective-C++ compiler for the + mips64-linux-gnuabi64 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), g++-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mips64el-linux-gnuabi64 +Description: GNU Objective-C++ compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Objective-C++ compiler for the + mips64el-linux-gnuabi64 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), g++-15-mips64-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mips64-linux-gnuabin32 +Description: GNU Objective-C++ compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Objective-C++ compiler for the + mips64-linux-gnuabin32 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-powerpc-linux-gnu (= ${gcc:Version}), g++-15-powerpc-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-powerpc-linux-gnu +Description: GNU Objective-C++ compiler for the powerpc-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + powerpc-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-powerpc64-linux-gnu (= ${gcc:Version}), g++-15-powerpc64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-powerpc64-linux-gnu +Description: GNU Objective-C++ compiler for the powerpc64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + powerpc64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-powerpc64le-linux-gnu (= ${gcc:Version}), g++-15-powerpc64le-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-powerpc64le-linux-gnu +Description: GNU Objective-C++ compiler for the powerpc64le-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + powerpc64le-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-m68k-linux-gnu (= ${gcc:Version}), g++-15-m68k-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-m68k-linux-gnu +Description: GNU Objective-C++ compiler for the m68k-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + m68k-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-riscv64-linux-gnu (= ${gcc:Version}), g++-15-riscv64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-riscv64-linux-gnu +Description: GNU Objective-C++ compiler for the riscv64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + riscv64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-sh4-linux-gnu (= ${gcc:Version}), g++-15-sh4-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-sh4-linux-gnu +Description: GNU Objective-C++ compiler for the sh4-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + sh4-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-sparc-linux-gnu (= ${gcc:Version}), g++-15-sparc-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-sparc-linux-gnu +Description: GNU Objective-C++ compiler for the sparc-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + sparc-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-sparc64-linux-gnu (= ${gcc:Version}), g++-15-sparc64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-sparc64-linux-gnu +Description: GNU Objective-C++ compiler for the sparc64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + sparc64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-s390x-linux-gnu (= ${gcc:Version}), g++-15-s390x-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-s390x-linux-gnu +Description: GNU Objective-C++ compiler for the s390x-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + s390x-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-x86-64-linux-gnux32 (= ${gcc:Version}), g++-15-x86-64-linux-gnux32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-x86-64-linux-gnux32 +Description: GNU Objective-C++ compiler for the x86_64-linux-gnux32 architecture + This is the GNU Objective-C++ compiler for the + x86_64-linux-gnux32 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), g++-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mips64el-linux-gnuabin32 +Description: GNU Objective-C++ compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Objective-C++ compiler for the + mips64el-linux-gnuabin32 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), g++-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa32r6-linux-gnu +Description: GNU Objective-C++ compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + mipsisa32r6-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), g++-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa32r6el-linux-gnu +Description: GNU Objective-C++ compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + mipsisa32r6el-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), g++-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa64r6-linux-gnuabi64 +Description: GNU Objective-C++ compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Objective-C++ compiler for the + mipsisa64r6-linux-gnuabi64 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), g++-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa64r6el-linux-gnuabi64 +Description: GNU Objective-C++ compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Objective-C++ compiler for the + mipsisa64r6el-linux-gnuabi64 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), g++-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa64r6-linux-gnuabin32 +Description: GNU Objective-C++ compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Objective-C++ compiler for the + mipsisa64r6-linux-gnuabin32 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), g++-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa64r6el-linux-gnuabin32 +Description: GNU Objective-C++ compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Objective-C++ compiler for the + mipsisa64r6el-linux-gnuabin32 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gobjc++-15${target:suffix} (>= ${gcc:SoftVersion}), + gobjc-15-for-host (= ${gcc:Version}), g++-15-for-host (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Objective-C++ compiler for the host architecture + This is the GNU Objective-C++ compiler for the host architecture, + which compiles Objective-C++ on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gobjc++-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gobjc++-15 (>= ${gcc:Version}), + gobjc-15-for-build (= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), g++-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Objective-C++ compiler for the build architecture + This is the GNU Objective-C++ compiler for the build architecture, + which compiles Objective-C++ on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gobjc++-15 +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), gobjc++-15${target:suffix} (= ${gcc:Version}), gobjc-15 (= ${gcc:Version}), g++-15 (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler +Description: GNU Objective-C++ compiler + This is the GNU Objective-C++ compiler, which compiles + Objective-C++ on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gobjc++-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), gobjc++-15 (= ${gcc:Version}), g++-15-multilib (= ${gcc:Version}), gobjc-15-multilib (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Objective-C++ compiler (multilib support) + This is the GNU Objective-C++ compiler, which compiles Objective-C++ on + platforms supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gobjc-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-alpha-linux-gnu +Description: GNU Objective-C compiler for the alpha-linux-gnu architecture + This is the GNU Objective-C compiler for the alpha-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-x86-64-linux-gnu +Description: GNU Objective-C compiler for the x86_64-linux-gnu architecture + This is the GNU Objective-C compiler for the x86_64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-arm-linux-gnueabi +Description: GNU Objective-C compiler for the arm-linux-gnueabi architecture + This is the GNU Objective-C compiler for the arm-linux-gnueabi + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-arm-linux-gnueabihf +Description: GNU Objective-C compiler for the arm-linux-gnueabihf architecture + This is the GNU Objective-C compiler for the arm-linux-gnueabihf + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-aarch64-linux-gnu +Description: GNU Objective-C compiler for the aarch64-linux-gnu architecture + This is the GNU Objective-C compiler for the aarch64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-i686-linux-gnu +Description: GNU Objective-C compiler for the i686-linux-gnu architecture + This is the GNU Objective-C compiler for the i686-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-loongarch64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-loongarch64-linux-gnu +Description: GNU Objective-C compiler for the loongarch64-linux-gnu architecture + This is the GNU Objective-C compiler for the loongarch64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsel-linux-gnu +Description: GNU Objective-C compiler for the mipsel-linux-gnu architecture + This is the GNU Objective-C compiler for the mipsel-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mips64-linux-gnuabi64 +Description: GNU Objective-C compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Objective-C compiler for the mips64-linux-gnuabi64 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mips64el-linux-gnuabi64 +Description: GNU Objective-C compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Objective-C compiler for the mips64el-linux-gnuabi64 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mips64-linux-gnuabin32 +Description: GNU Objective-C compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Objective-C compiler for the mips64-linux-gnuabin32 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-powerpc-linux-gnu +Description: GNU Objective-C compiler for the powerpc-linux-gnu architecture + This is the GNU Objective-C compiler for the powerpc-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-powerpc64-linux-gnu +Description: GNU Objective-C compiler for the powerpc64-linux-gnu architecture + This is the GNU Objective-C compiler for the powerpc64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-powerpc64le-linux-gnu +Description: GNU Objective-C compiler for the powerpc64le-linux-gnu architecture + This is the GNU Objective-C compiler for the powerpc64le-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-m68k-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-m68k-linux-gnu +Description: GNU Objective-C compiler for the m68k-linux-gnu architecture + This is the GNU Objective-C compiler for the m68k-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-riscv64-linux-gnu +Description: GNU Objective-C compiler for the riscv64-linux-gnu architecture + This is the GNU Objective-C compiler for the riscv64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sh4-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-sh4-linux-gnu +Description: GNU Objective-C compiler for the sh4-linux-gnu architecture + This is the GNU Objective-C compiler for the sh4-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-sparc-linux-gnu +Description: GNU Objective-C compiler for the sparc-linux-gnu architecture + This is the GNU Objective-C compiler for the sparc-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-sparc64-linux-gnu +Description: GNU Objective-C compiler for the sparc64-linux-gnu architecture + This is the GNU Objective-C compiler for the sparc64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-s390x-linux-gnu +Description: GNU Objective-C compiler for the s390x-linux-gnu architecture + This is the GNU Objective-C compiler for the s390x-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-x86-64-linux-gnux32 +Description: GNU Objective-C compiler for the x86_64-linux-gnux32 architecture + This is the GNU Objective-C compiler for the x86_64-linux-gnux32 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mips64el-linux-gnuabin32 +Description: GNU Objective-C compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Objective-C compiler for the mips64el-linux-gnuabin32 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa32r6-linux-gnu +Description: GNU Objective-C compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Objective-C compiler for the mipsisa32r6-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa32r6el-linux-gnu +Description: GNU Objective-C compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Objective-C compiler for the mipsisa32r6el-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa64r6-linux-gnuabi64 +Description: GNU Objective-C compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Objective-C compiler for the mipsisa64r6-linux-gnuabi64 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa64r6el-linux-gnuabi64 +Description: GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabi64 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa64r6-linux-gnuabin32 +Description: GNU Objective-C compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Objective-C compiler for the mipsisa64r6-linux-gnuabin32 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa64r6el-linux-gnuabin32 +Description: GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabin32 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Objective-C compiler for the host architecture + This is the GNU Objective-C compiler for the host architecture, + which compiles Objective-C on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gobjc-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gobjc-15 (>= ${gcc:Version}), ${misc:Depends}, + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}) +Description: GNU Objective-C compiler for the build architecture + This is the GNU Objective-C compiler for the build architecture, + which compiles Objective-C on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gobjc-15 +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15${target:suffix} (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc-compiler +Description: GNU Objective-C compiler + This is the GNU Objective-C compiler, which compiles + Objective-C on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gobjc-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Objective-C compiler (multilib support) + This is the GNU Objective-C compiler, which compiles Objective-C on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libobjc-15-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), libobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: Runtime library for GNU Objective-C applications (development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib64objc-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), lib64objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (64bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib32objc-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), lib32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (32bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libn32objc-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), libn32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (n32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libx32objc-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (x32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: gfortran-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the alpha-linux-gnu architecture + This is the GNU Fortran compiler for the alpha-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the x86_64-linux-gnu architecture + This is the GNU Fortran compiler for the x86_64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the arm-linux-gnueabi architecture + This is the GNU Fortran compiler for the arm-linux-gnueabi architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the arm-linux-gnueabihf architecture + This is the GNU Fortran compiler for the arm-linux-gnueabihf architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the aarch64-linux-gnu architecture + This is the GNU Fortran compiler for the aarch64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the i686-linux-gnu architecture + This is the GNU Fortran compiler for the i686-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-loongarch64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the loongarch64-linux-gnu architecture + This is the GNU Fortran compiler for the loongarch64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsel-linux-gnu architecture + This is the GNU Fortran compiler for the mipsel-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Fortran compiler for the mips64-linux-gnuabi64 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Fortran compiler for the mips64el-linux-gnuabi64 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Fortran compiler for the mips64-linux-gnuabin32 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the powerpc-linux-gnu architecture + This is the GNU Fortran compiler for the powerpc-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the powerpc64-linux-gnu architecture + This is the GNU Fortran compiler for the powerpc64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the powerpc64le-linux-gnu architecture + This is the GNU Fortran compiler for the powerpc64le-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-m68k-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the m68k-linux-gnu architecture + This is the GNU Fortran compiler for the m68k-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the riscv64-linux-gnu architecture + This is the GNU Fortran compiler for the riscv64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sh4-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the sh4-linux-gnu architecture + This is the GNU Fortran compiler for the sh4-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the sparc-linux-gnu architecture + This is the GNU Fortran compiler for the sparc-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the sparc64-linux-gnu architecture + This is the GNU Fortran compiler for the sparc64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the s390x-linux-gnu architecture + This is the GNU Fortran compiler for the s390x-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the x86_64-linux-gnux32 architecture + This is the GNU Fortran compiler for the x86_64-linux-gnux32 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Fortran compiler for the mips64el-linux-gnuabin32 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Fortran compiler for the mipsisa32r6-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Fortran compiler for the mipsisa32r6el-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Fortran compiler for the mipsisa64r6-linux-gnuabi64 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Fortran compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Fortran compiler for the mipsisa64r6-linux-gnuabin32 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Fortran compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gfortran-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Fortran compiler for the host architecture + This is the GNU Fortran compiler for the host architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gfortran-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gfortran-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Fortran compiler for the build architecture + This is the GNU Fortran compiler for the build architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gfortran-15 +Architecture: any +Depends: gfortran-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} +Provides: fortran95-compiler, ${fortran:mod-version} +Suggests: ${gfortran:multilib}, gfortran-15-doc +Description: GNU Fortran compiler + This is the GNU Fortran compiler, which compiles + Fortran on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gfortran-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), gfortran-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Fortran compiler (multilib support) + This is the GNU Fortran compiler, which compiles Fortran on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgfortran-15-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), libgfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: Runtime library for GNU Fortran applications (development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib64gfortran-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), lib64gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib32gfortran-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), lib32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libn32gfortran-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), libn32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libx32gfortran-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: gccgo-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the alpha-linux-gnu architecture + This is the GNU Go compiler for the alpha-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the x86_64-linux-gnu architecture + This is the GNU Go compiler for the x86_64-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the arm-linux-gnueabi architecture + This is the GNU Go compiler for the arm-linux-gnueabi architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the arm-linux-gnueabihf architecture + This is the GNU Go compiler for the arm-linux-gnueabihf architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the aarch64-linux-gnu architecture + This is the GNU Go compiler for the aarch64-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the i686-linux-gnu architecture + This is the GNU Go compiler for the i686-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsel-linux-gnu architecture + This is the GNU Go compiler for the mipsel-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Go compiler for the mips64-linux-gnuabi64 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Go compiler for the mips64el-linux-gnuabi64 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Go compiler for the mips64-linux-gnuabin32 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the powerpc-linux-gnu architecture + This is the GNU Go compiler for the powerpc-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the powerpc64-linux-gnu architecture + This is the GNU Go compiler for the powerpc64-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the powerpc64le-linux-gnu architecture + This is the GNU Go compiler for the powerpc64le-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the riscv64-linux-gnu architecture + This is the GNU Go compiler for the riscv64-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the sparc-linux-gnu architecture + This is the GNU Go compiler for the sparc-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the sparc64-linux-gnu architecture + This is the GNU Go compiler for the sparc64-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the s390x-linux-gnu architecture + This is the GNU Go compiler for the s390x-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the x86_64-linux-gnux32 architecture + This is the GNU Go compiler for the x86_64-linux-gnux32 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Go compiler for the mips64el-linux-gnuabin32 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Go compiler for the mipsisa32r6-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Go compiler for the mipsisa32r6el-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Go compiler for the mipsisa64r6-linux-gnuabi64 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Go compiler for the mipsisa64r6el-linux-gnuabi64 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Go compiler for the mipsisa64r6-linux-gnuabin32 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Go compiler for the mipsisa64r6el-linux-gnuabin32 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gccgo-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Go compiler for the host architecture + This is the GNU Go compiler for the host architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gccgo-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gccgo-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Go compiler for the build architecture + This is the GNU Go compiler for the build architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + . + This is a dependency package. + +Package: gccgo-15 +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), gccgo-15${target:suffix} (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} +Provides: go-compiler +Suggests: ${go:multilib}, gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Description: GNU Go compiler + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gccgo-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), gccgo-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libgobiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libgobiarchdbg} +Description: GNU Go compiler (multilib support) + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgo-15-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), libgo24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib64go-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), lib64go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib32go-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), lib32go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libn32go-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), libn32go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libx32go-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libgo24 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications + Library needed for GNU Go applications linked against the + shared library. + +Package: lib64go24 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (64bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib32go24 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: Runtime library for GNU Go applications (32bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: libn32go24 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib32go24 [amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mipsn32r6 mipsn32r6el] +Description: Runtime library for GNU Go applications (n32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libx32go24 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (x32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libstdc++-15-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), + libstdc++6 (>= ${gcc:Version}), ${dep:libcdev}, ${misc:Depends} +Suggests: libstdc++-15-doc +Provides: libstdc++-dev +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libstdc++-15-pic +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (shared library subset kit) + This is used to develop subsets of the libstdc++ shared libraries for + use on custom installation floppies and in embedded systems. + . + Unless you are making one of those, you will not need this package. + +Package: libstdc++6-15-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Depends: gcc-15-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + , ${shlibs:Depends}, ${misc:Depends} +Provides: +Multi-Arch: same +Recommends: libstdc++-15-dev (= ${gcc:Version}) +Conflicts: libstdc++5-dbg, libstdc++5-3.3-dbg, libstdc++6-dbg, + libstdc++6-4.0-dbg, libstdc++6-4.1-dbg, libstdc++6-4.2-dbg, + libstdc++6-4.3-dbg, libstdc++6-4.4-dbg, libstdc++6-4.5-dbg, + libstdc++6-4.6-dbg, libstdc++6-4.7-dbg, libstdc++6-4.8-dbg, + libstdc++6-4.9-dbg, libstdc++6-5-dbg, libstdc++6-6-dbg, + libstdc++6-7-dbg, libstdc++6-8-dbg, libstdc++6-9-dbg, + libstdc++6-10-dbg, libstdc++6-11-dbg, libstdc++6-12-dbg, + libstdc++6-13-dbg, libstdc++6-14-dbg, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: lib32stdc++-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), + lib32stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: lib32stdc++6-15-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Depends: gcc-15-base (= ${gcc:Version}), lib32stdc++6 (>= ${gcc:Version}), + libstdc++-15-dev (= ${gcc:Version}), , + ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib32stdc++6-dbg, lib32stdc++6-4.0-dbg, + lib32stdc++6-4.1-dbg, lib32stdc++6-4.2-dbg, lib32stdc++6-4.3-dbg, + lib32stdc++6-4.4-dbg, lib32stdc++6-4.5-dbg, lib32stdc++6-4.6-dbg, + lib32stdc++6-4.7-dbg, lib32stdc++6-4.8-dbg, lib32stdc++6-4.9-dbg, + lib32stdc++6-5-dbg, lib32stdc++6-6-dbg, lib32stdc++6-7-dbg, + lib32stdc++6-8-dbg, lib32stdc++6-9-dbg, lib32stdc++6-10-dbg, + lib32stdc++6-11-dbg, lib32stdc++6-12-dbg, lib32stdc++6-13-dbg, + lib32stdc++6-14-dbg, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: lib64stdc++-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), + lib64stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: lib64stdc++6-15-dbg +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: debug +Depends: gcc-15-base (= ${gcc:Version}), lib64stdc++6 (>= ${gcc:Version}), + libstdc++-15-dev (= ${gcc:Version}), , + ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib64stdc++6-dbg, lib64stdc++6-4.0-dbg, + lib64stdc++6-4.1-dbg, lib64stdc++6-4.2-dbg, lib64stdc++6-4.3-dbg, + lib64stdc++6-4.4-dbg, lib64stdc++6-4.5-dbg, lib64stdc++6-4.6-dbg, + lib64stdc++6-4.7-dbg, lib64stdc++6-4.8-dbg, lib64stdc++6-4.9-dbg, + lib64stdc++6-5-dbg, lib64stdc++6-6-dbg, lib64stdc++6-7-dbg, + lib64stdc++6-8-dbg, lib64stdc++6-9-dbg, lib64stdc++6-10-dbg, + lib64stdc++6-11-dbg, lib64stdc++6-12-dbg, lib64stdc++6-13-dbg, + lib64stdc++6-14-dbg, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: libn32stdc++-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), + libn32stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libn32stdc++6-15-dbg +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: debug +Depends: gcc-15-base (= ${gcc:Version}), libn32stdc++6 (>= ${gcc:Version}), + libstdc++-15-dev (= ${gcc:Version}), , + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libn32stdc++6-dbg, libn32stdc++6-4.0-dbg, + libn32stdc++6-4.1-dbg, libn32stdc++6-4.2-dbg, libn32stdc++6-4.3-dbg, + libn32stdc++6-4.4-dbg, libn32stdc++6-4.5-dbg, libn32stdc++6-4.6-dbg, + libn32stdc++6-4.7-dbg, libn32stdc++6-4.8-dbg, libn32stdc++6-4.9-dbg, + libn32stdc++6-5-dbg, libn32stdc++6-6-dbg, libn32stdc++6-7-dbg, + libn32stdc++6-8-dbg, libn32stdc++6-9-dbg, libn32stdc++6-10-dbg, + libn32stdc++6-11-dbg, libn32stdc++6-12-dbg, libn32stdc++6-13-dbg, + libn32stdc++6-14-dbg, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: libx32stdc++-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libx32stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libx32stdc++6-15-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Depends: gcc-15-base (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libstdc++-15-dev (= ${gcc:Version}), , + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libx32stdc++6-dbg, libx32stdc++6-4.6-dbg, + libx32stdc++6-4.7-dbg, libx32stdc++6-4.8-dbg, libx32stdc++6-4.9-dbg, + libx32stdc++6-5-dbg, libx32stdc++6-6-dbg, libx32stdc++6-7-dbg, + libx32stdc++6-8-dbg, libx32stdc++6-9-dbg, libx32stdc++6-10-dbg, + libx32stdc++6-11-dbg, libx32stdc++6-12-dbg, libx32stdc++6-13-dbg, + libx32stdc++6-14-dbg, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: libstdc++-15-doc +Build-Profiles: +Architecture: all +Section: doc +Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, + libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, + libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc, + libstdc++-4.8-doc, libstdc++-4.9-doc, libstdc++-5-doc, libstdc++-6-doc, + libstdc++-7-doc, libstdc++-8-doc, libstdc++-9-doc, libstdc++-10-doc, + libstdc++-11-doc, libstdc++-12-doc, libstdc++-13-doc, libstdc++-14-doc, +Description: GNU Standard C++ Library v3 (documentation files) + This package contains documentation files for the GNU stdc++ library. + . + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. + +Package: gnat-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-alpha-linux-gnu, gnat-8-alpha-linux-gnu, + gnat-9-alpha-linux-gnu, gnat-10-alpha-linux-gnu, + gnat-11-alpha-linux-gnu, gnat-12-alpha-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the alpha-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-x86-64-linux-gnu, gnat-8-x86-64-linux-gnu, + gnat-9-x86-64-linux-gnu, gnat-10-x86-64-linux-gnu, + gnat-11-x86-64-linux-gnu, gnat-12-x86-64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the x86_64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-arm-linux-gnueabi, gnat-8-arm-linux-gnueabi, + gnat-9-arm-linux-gnueabi, gnat-10-arm-linux-gnueabi, + gnat-11-arm-linux-gnueabi, gnat-12-arm-linux-gnueabi, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the arm-linux-gnueabi architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-arm-linux-gnueabihf, gnat-8-arm-linux-gnueabihf, + gnat-9-arm-linux-gnueabihf, gnat-10-arm-linux-gnueabihf, + gnat-11-arm-linux-gnueabihf, gnat-12-arm-linux-gnueabihf, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the arm-linux-gnueabihf architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-aarch64-linux-gnu, gnat-8-aarch64-linux-gnu, + gnat-9-aarch64-linux-gnu, gnat-10-aarch64-linux-gnu, + gnat-11-aarch64-linux-gnu, gnat-12-aarch64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the aarch64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-i686-linux-gnu, gnat-8-i686-linux-gnu, + gnat-9-i686-linux-gnu, gnat-10-i686-linux-gnu, + gnat-11-i686-linux-gnu, gnat-12-i686-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the i686-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-loongarch64-linux-gnu, gnat-8-loongarch64-linux-gnu, + gnat-9-loongarch64-linux-gnu, gnat-10-loongarch64-linux-gnu, + gnat-11-loongarch64-linux-gnu, gnat-12-loongarch64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the loongarch64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsel-linux-gnu, gnat-8-mipsel-linux-gnu, + gnat-9-mipsel-linux-gnu, gnat-10-mipsel-linux-gnu, + gnat-11-mipsel-linux-gnu, gnat-12-mipsel-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsel-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mips64-linux-gnuabi64, gnat-8-mips64-linux-gnuabi64, + gnat-9-mips64-linux-gnuabi64, gnat-10-mips64-linux-gnuabi64, + gnat-11-mips64-linux-gnuabi64, gnat-12-mips64-linux-gnuabi64, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mips64-linux-gnuabi64 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mips64el-linux-gnuabi64, gnat-8-mips64el-linux-gnuabi64, + gnat-9-mips64el-linux-gnuabi64, gnat-10-mips64el-linux-gnuabi64, + gnat-11-mips64el-linux-gnuabi64, gnat-12-mips64el-linux-gnuabi64, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mips64el-linux-gnuabi64 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mips64-linux-gnuabin32, gnat-8-mips64-linux-gnuabin32, + gnat-9-mips64-linux-gnuabin32, gnat-10-mips64-linux-gnuabin32, + gnat-11-mips64-linux-gnuabin32, gnat-12-mips64-linux-gnuabin32, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mips64-linux-gnuabin32 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-powerpc-linux-gnu, gnat-8-powerpc-linux-gnu, + gnat-9-powerpc-linux-gnu, gnat-10-powerpc-linux-gnu, + gnat-11-powerpc-linux-gnu, gnat-12-powerpc-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the powerpc-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-powerpc64-linux-gnu, gnat-8-powerpc64-linux-gnu, + gnat-9-powerpc64-linux-gnu, gnat-10-powerpc64-linux-gnu, + gnat-11-powerpc64-linux-gnu, gnat-12-powerpc64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the powerpc64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-powerpc64le-linux-gnu, gnat-8-powerpc64le-linux-gnu, + gnat-9-powerpc64le-linux-gnu, gnat-10-powerpc64le-linux-gnu, + gnat-11-powerpc64le-linux-gnu, gnat-12-powerpc64le-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the powerpc64le-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-m68k-linux-gnu, gnat-8-m68k-linux-gnu, + gnat-9-m68k-linux-gnu, gnat-10-m68k-linux-gnu, + gnat-11-m68k-linux-gnu, gnat-12-m68k-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the m68k-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-riscv64-linux-gnu, gnat-8-riscv64-linux-gnu, + gnat-9-riscv64-linux-gnu, gnat-10-riscv64-linux-gnu, + gnat-11-riscv64-linux-gnu, gnat-12-riscv64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the riscv64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-sh4-linux-gnu, gnat-8-sh4-linux-gnu, + gnat-9-sh4-linux-gnu, gnat-10-sh4-linux-gnu, + gnat-11-sh4-linux-gnu, gnat-12-sh4-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the sh4-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-sparc-linux-gnu, gnat-8-sparc-linux-gnu, + gnat-9-sparc-linux-gnu, gnat-10-sparc-linux-gnu, + gnat-11-sparc-linux-gnu, gnat-12-sparc-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the sparc-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-sparc64-linux-gnu, gnat-8-sparc64-linux-gnu, + gnat-9-sparc64-linux-gnu, gnat-10-sparc64-linux-gnu, + gnat-11-sparc64-linux-gnu, gnat-12-sparc64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the sparc64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-s390x-linux-gnu, gnat-8-s390x-linux-gnu, + gnat-9-s390x-linux-gnu, gnat-10-s390x-linux-gnu, + gnat-11-s390x-linux-gnu, gnat-12-s390x-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the s390x-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-x86-64-linux-gnux32, gnat-8-x86-64-linux-gnux32, + gnat-9-x86-64-linux-gnux32, gnat-10-x86-64-linux-gnux32, + gnat-11-x86-64-linux-gnux32, gnat-12-x86-64-linux-gnux32, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the x86_64-linux-gnux32 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mips64el-linux-gnuabin32, gnat-8-mips64el-linux-gnuabin32, + gnat-9-mips64el-linux-gnuabin32, gnat-10-mips64el-linux-gnuabin32, + gnat-11-mips64el-linux-gnuabin32, gnat-12-mips64el-linux-gnuabin32, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mips64el-linux-gnuabin32 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa32r6-linux-gnu, gnat-8-mipsisa32r6-linux-gnu, + gnat-9-mipsisa32r6-linux-gnu, gnat-10-mipsisa32r6-linux-gnu, + gnat-11-mipsisa32r6-linux-gnu, gnat-12-mipsisa32r6-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa32r6-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa32r6el-linux-gnu, gnat-8-mipsisa32r6el-linux-gnu, + gnat-9-mipsisa32r6el-linux-gnu, gnat-10-mipsisa32r6el-linux-gnu, + gnat-11-mipsisa32r6el-linux-gnu, gnat-12-mipsisa32r6el-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa32r6el-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa64r6-linux-gnuabi64, gnat-8-mipsisa64r6-linux-gnuabi64, + gnat-9-mipsisa64r6-linux-gnuabi64, gnat-10-mipsisa64r6-linux-gnuabi64, + gnat-11-mipsisa64r6-linux-gnuabi64, gnat-12-mipsisa64r6-linux-gnuabi64, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa64r6-linux-gnuabi64 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa64r6el-linux-gnuabi64, gnat-8-mipsisa64r6el-linux-gnuabi64, + gnat-9-mipsisa64r6el-linux-gnuabi64, gnat-10-mipsisa64r6el-linux-gnuabi64, + gnat-11-mipsisa64r6el-linux-gnuabi64, gnat-12-mipsisa64r6el-linux-gnuabi64, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa64r6el-linux-gnuabi64 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa64r6-linux-gnuabin32, gnat-8-mipsisa64r6-linux-gnuabin32, + gnat-9-mipsisa64r6-linux-gnuabin32, gnat-10-mipsisa64r6-linux-gnuabin32, + gnat-11-mipsisa64r6-linux-gnuabin32, gnat-12-mipsisa64r6-linux-gnuabin32, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa64r6-linux-gnuabin32 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa64r6el-linux-gnuabin32, gnat-8-mipsisa64r6el-linux-gnuabin32, + gnat-9-mipsisa64r6el-linux-gnuabin32, gnat-10-mipsisa64r6el-linux-gnuabin32, + gnat-11-mipsisa64r6el-linux-gnuabin32, gnat-12-mipsisa64r6el-linux-gnuabin32, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa64r6el-linux-gnuabin32 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gnat-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Ada compiler for the host architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gnat-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gnat-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Ada compiler for the build architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + . + This is a dependency package. + +Package: gnat-15 +Architecture: any +Pre-Depends: ${misc:Pre-Depends} +Depends: gnat-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), gcc-15 (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012, gnat-15-sjlj +Description: GNU Ada compiler + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: libgnat-15 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: runtime for applications compiled with GNAT (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library. + +Package: gdc-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the x86_64-linux-gnu architecture + This is the GNU D compiler for the x86_64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabi (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the arm-linux-gnueabi architecture + This is the GNU D compiler for the arm-linux-gnueabi architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabihf (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the arm-linux-gnueabihf architecture + This is the GNU D compiler for the arm-linux-gnueabihf architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the aarch64-linux-gnu architecture + This is the GNU D compiler for the aarch64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-i686-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the i686-linux-gnu architecture + This is the GNU D compiler for the i686-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-loongarch64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the loongarch64-linux-gnu architecture + This is the GNU D compiler for the loongarch64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsel-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsel-linux-gnu architecture + This is the GNU D compiler for the mipsel-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mips64-linux-gnuabi64 architecture + This is the GNU D compiler for the mips64-linux-gnuabi64 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mips64el-linux-gnuabi64 architecture + This is the GNU D compiler for the mips64el-linux-gnuabi64 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mips64-linux-gnuabin32 architecture + This is the GNU D compiler for the mips64-linux-gnuabin32 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the powerpc-linux-gnu architecture + This is the GNU D compiler for the powerpc-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the powerpc64-linux-gnu architecture + This is the GNU D compiler for the powerpc64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the powerpc64le-linux-gnu architecture + This is the GNU D compiler for the powerpc64le-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the riscv64-linux-gnu architecture + This is the GNU D compiler for the riscv64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the sparc-linux-gnu architecture + This is the GNU D compiler for the sparc-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the sparc64-linux-gnu architecture + This is the GNU D compiler for the sparc64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-s390x-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the s390x-linux-gnu architecture + This is the GNU D compiler for the s390x-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnux32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the x86_64-linux-gnux32 architecture + This is the GNU D compiler for the x86_64-linux-gnux32 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mips64el-linux-gnuabin32 architecture + This is the GNU D compiler for the mips64el-linux-gnuabin32 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa32r6-linux-gnu architecture + This is the GNU D compiler for the mipsisa32r6-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa32r6el-linux-gnu architecture + This is the GNU D compiler for the mipsisa32r6el-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU D compiler for the mipsisa64r6-linux-gnuabi64 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU D compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU D compiler for the mipsisa64r6-linux-gnuabin32 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU D compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gdc-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU D compiler (version 2) for the host architecture + This is the GNU D compiler for the host architecture, which compiles D on + platforms supported by gcc. It uses the gcc backend to generate optimised + code. + . + This compiler supports D language version 2. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gdc-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gdc-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU D compiler (version 2) for the build architecture + This is the GNU D compiler for the build architecture, which compiles D on + platforms supported by gcc. It uses the gcc backend to generate optimised + code. + . + This compiler supports D language version 2. + . + This is a dependency package. + +Package: gdc-15 +Architecture: any +Depends: gdc-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${misc:Depends} +Provides: gdc, d-compiler, d-v2-compiler +Replaces: gdc (<< 4.4.6-5) +Description: GNU D compiler (version 2) + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-multilib +Architecture: any +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gdc-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libphobosbiarchdev}${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2, multilib support) + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgphobos-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 arm64 armel armhf hppa i386 loong64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64 x32 +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgphobos6 (>= ${gdc:Version}), + zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib64gphobos6 (>= ${gdc:Version}), + lib64gcc-15-dev (= ${gcc:Version}), lib64z1-dev [!mips !mipsel !mipsn32 !mipsn32el !mipsr6 !mipsr6el !mipsn32r6 !mipsn32r6el], + ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (64bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib32gphobos6 (>= ${gdc:Version}), + lib32gcc-15-dev (= ${gcc:Version}), lib32z1-dev [!mipsn32 !mipsn32el !mips64 !mips64el !mipsn32r6 !mipsn32r6el !mips64r6 !mips64r6el], + ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (32bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libn32gphobos-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libn32gphobos6 (>= ${gdc:Version}), + libn32gcc-15-dev (= ${gcc:Version}), libn32z1-dev [!mips !mipsel !mips64 !mips64el !mipsr6 !mipsr6el !mips64r6 !mips64r6el], + ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (n32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libx32gphobos-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libx32gphobos6 (>= ${gdc:Version}), + libx32gcc-15-dev (= ${gcc:Version}), ${dep:libx32z}, ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (x32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libgphobos6 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 arm64 armel armhf hppa i386 loong64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64 x32 +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libgphobos68 +Breaks: dub (<< 1.16.0-1~) +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos6 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos6 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libn32gphobos6 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib32phobos6 [amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mipsn32r6 mipsn32r6el] +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libx32gphobos6 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: gm2-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-alpha-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the alpha-linux-gnu architecture + This is the GNU Modula-2 compiler for the alpha-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the x86_64-linux-gnu architecture + This is the GNU Modula-2 compiler for the x86_64-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabi (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the arm-linux-gnueabi architecture + This is the GNU Modula-2 compiler for the arm-linux-gnueabi architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabihf (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the arm-linux-gnueabihf architecture + This is the GNU Modula-2 compiler for the arm-linux-gnueabihf architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the aarch64-linux-gnu architecture + This is the GNU Modula-2 compiler for the aarch64-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-i686-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the i686-linux-gnu architecture + This is the GNU Modula-2 compiler for the i686-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-loongarch64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the loongarch64-linux-gnu architecture + This is the GNU Modula-2 compiler for the loongarch64-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsel-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsel-linux-gnu architecture + This is the GNU Modula-2 compiler for the mipsel-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Modula-2 compiler for the mips64-linux-gnuabi64 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Modula-2 compiler for the mips64el-linux-gnuabi64 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Modula-2 compiler for the mips64-linux-gnuabin32 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the powerpc64le-linux-gnu architecture + This is the GNU Modula-2 compiler for the powerpc64le-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-m68k-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the m68k-linux-gnu architecture + This is the GNU Modula-2 compiler for the m68k-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the riscv64-linux-gnu architecture + This is the GNU Modula-2 compiler for the riscv64-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the sparc-linux-gnu architecture + This is the GNU Modula-2 compiler for the sparc-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the sparc64-linux-gnu architecture + This is the GNU Modula-2 compiler for the sparc64-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-s390x-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the s390x-linux-gnu architecture + This is the GNU Modula-2 compiler for the s390x-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnux32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the x86_64-linux-gnux32 architecture + This is the GNU Modula-2 compiler for the x86_64-linux-gnux32 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Modula-2 compiler for the mips64el-linux-gnuabin32 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Modula-2 compiler for the mipsisa32r6-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Modula-2 compiler for the mipsisa32r6el-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabi64 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabin32 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gm2-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Modula-2 compiler for the host architecture + This is the GNU Modula-2 compiler for the host architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gm2-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gm2-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Modula-2 compiler for the build architecture + This is the GNU Modula-2 compiler for the build architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: gm2-15 +Architecture: any +Depends: gm2-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:SoftVersion}), ${dep:gm2cross}, ${misc:Depends} +Provides: gm2, m2-compiler +Description: GNU Modula-2 compiler (version 2) + This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms + supported by gcc. It uses the gcc backend to generate optimised code. + +Package: libgm2-15-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgm2-20 (>= ${gm2:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 standard library + This is the Modula-2 standard library that comes with the gm2 compiler. + +Package: libgm2-20 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: gm2-15-doc +Architecture: all +Section: doc +Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: gm2-15 +Description: Documentation for the GNU Modula-2 compiler (gm2) + Documentation for the GNU Modula-2 compiler in HTML and info format. + +Package: gccrs-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the x86_64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabi (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the arm-linux-gnueabi architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabihf (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the arm-linux-gnueabihf architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the aarch64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-i686-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the i686-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-loongarch64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the loongarch64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsel-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsel-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mips64-linux-gnuabi64 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mips64el-linux-gnuabi64 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mips64-linux-gnuabin32 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the powerpc-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the powerpc64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the powerpc64le-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the riscv64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the sparc-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the sparc64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-s390x-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the s390x-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mips64el-linux-gnuabin32 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa32r6-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa32r6el-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa64r6-linux-gnuabi64 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa64r6el-linux-gnuabi64 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa64r6-linux-gnuabin32 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa64r6el-linux-gnuabin32 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gccrs-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Rust compiler for the host architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gccrs-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gccrs-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Rust compiler for the build architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + This is a dependency package. + +Package: gccrs-15 +Architecture: any +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gccrs-15${target:suffix} (= ${gcc:Version}), g++-15 (>= ${gcc:SoftVersion}), ${misc:Depends} +Provides: gccrs, rust-compiler +Description: GNU Rust compiler + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gcobol-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the x86_64-linux-gnu architecture + This is the GNU COBOL compiler for the x86_64-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the aarch64-linux-gnu architecture + This is the GNU COBOL compiler for the aarch64-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mips64-linux-gnuabin32 architecture + This is the GNU COBOL compiler for the mips64-linux-gnuabin32 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the powerpc64le-linux-gnu architecture + This is the GNU COBOL compiler for the powerpc64le-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the riscv64-linux-gnu architecture + This is the GNU COBOL compiler for the riscv64-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU COBOL compiler for the mips64el-linux-gnuabin32 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU COBOL compiler for the mipsisa32r6-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU COBOL compiler for the mipsisa32r6el-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU COBOL compiler for the mipsisa64r6-linux-gnuabi64 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU COBOL compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU COBOL compiler for the mipsisa64r6-linux-gnuabin32 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU COBOL compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gcobol-15${target:suffix} (>= ${gcc:SoftVersion}), + g++-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU COBOL compiler for the host architecture + This is the GNU COBOL compiler for the host architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gcobol-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcobol-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), g++-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU COBOL compiler for the build architecture + This is the GNU COBOL compiler for the build architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: gcobol-15 +Architecture: any +Depends: gcobol-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:SoftVersion}), ${dep:gcobolcross}, ${misc:Depends} +Provides: gcobol, cobol-compiler +Description: GNU COBOL compiler + This is the GNU COBOL compiler, which compiles COBOL on platforms + supported by gcc. It uses the gcc backend to generate optimised code. + +Package: libgcobol-15-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgcobol1 (>= ${gcobol:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL standard library + This is the COBOL standard library that comes with the gcobol compiler. + +Package: libgcobol1 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +Package: ga68-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-alpha-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the alpha-linux-gnu architecture + This is the GNU Algol 68 compiler for the alpha-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the x86_64-linux-gnu architecture + This is the GNU Algol 68 compiler for the x86_64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-arm-linux-gnueabi (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the arm-linux-gnueabi architecture + This is the GNU Algol 68 compiler for the arm-linux-gnueabi architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-arm-linux-gnueabihf (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the arm-linux-gnueabihf architecture + This is the GNU Algol 68 compiler for the arm-linux-gnueabihf architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the aarch64-linux-gnu architecture + This is the GNU Algol 68 compiler for the aarch64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-i686-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the i686-linux-gnu architecture + This is the GNU Algol 68 compiler for the i686-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-loongarch64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the loongarch64-linux-gnu architecture + This is the GNU Algol 68 compiler for the loongarch64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsel-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsel-linux-gnu architecture + This is the GNU Algol 68 compiler for the mipsel-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Algol 68 compiler for the mips64-linux-gnuabi64 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Algol 68 compiler for the mips64el-linux-gnuabi64 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Algol 68 compiler for the mips64-linux-gnuabin32 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-powerpc-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the powerpc-linux-gnu architecture + This is the GNU Algol 68 compiler for the powerpc-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-powerpc64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the powerpc64-linux-gnu architecture + This is the GNU Algol 68 compiler for the powerpc64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the powerpc64le-linux-gnu architecture + This is the GNU Algol 68 compiler for the powerpc64le-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-m68k-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the m68k-linux-gnu architecture + This is the GNU Algol 68 compiler for the m68k-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the riscv64-linux-gnu architecture + This is the GNU Algol 68 compiler for the riscv64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-sh4-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the sh4-linux-gnu architecture + This is the GNU Algol 68 compiler for the sh4-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-sparc-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the sparc-linux-gnu architecture + This is the GNU Algol 68 compiler for the sparc-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-sparc64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the sparc64-linux-gnu architecture + This is the GNU Algol 68 compiler for the sparc64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-s390x-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the s390x-linux-gnu architecture + This is the GNU Algol 68 compiler for the s390x-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-x86-64-linux-gnux32 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the x86_64-linux-gnux32 architecture + This is the GNU Algol 68 compiler for the x86_64-linux-gnux32 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Algol 68 compiler for the mips64el-linux-gnuabin32 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Algol 68 compiler for the mipsisa32r6-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Algol 68 compiler for the mipsisa32r6el-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabi64 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabin32 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), ga68-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Algol 68 compiler for the host architecture + This is the GNU Algol 68 compiler for the host architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: ga68-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), ga68-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Algol 68 compiler for the build architecture + This is the GNU Algol 68 compiler for the build architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: ga68-15 +Architecture: any +Depends: ga68-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), gcc-15 (>= ${gcc:SoftVersion}), ${dep:ga68cross}, ${misc:Depends} +Provides: ga68, algol68-compiler +Description: GNU Algol 68 compiler + This is the GNU Algol 68 compiler, which compiles Algol 68 on platforms + supported by gcc. It uses the gcc backend to generate optimised code. + +Package: libga68-15-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libga68-1 (>= ${ga68:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 standard library + This is the Algol 68 standard library that comes with the ga68 compiler. + +Package: libga68-1 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +Package: ga68-15-doc +Architecture: all +Section: doc +Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: ga68-15 +Description: Documentation for the GNU Algol 68 compiler (ga68) + Documentation for the GNU Algol 68 compiler in HTML and info format. + +#Package: gcc`'PV-soft-float +#Architecture: arm armel armhf +#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} +#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float +#BUILT_USING`'dnl +#Description: GCC soft-floating-point gcc libraries (ARM) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. + +Package: gcc-15-offload-nvptx +Architecture: amd64 arm64 ppc64el +Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${dep:libcdev}, + nvptx-tools, libgomp-plugin-nvptx1 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GCC offloading compiler to NVPTX + The package provides offloading support for NVidia PTX. OpenMP and OpenACC + programs linked with -fopenmp will by default add PTX code into the binaries, + which can be offloaded to NVidia PTX capable devices if available. + +Package: libgomp-plugin-nvptx1 +Architecture: amd64 arm64 ppc64el +Multi-Arch: same +Section: libs +Depends: gcc-15-base (= ${gcc:Version}), libgomp1, ${shlibs:Depends}, ${misc:Depends} +Suggests: libcuda1 [amd64] | libnvidia-tesla-cuda1 [amd64 ppc64el] | libcuda1-any +Description: GCC OpenMP v4.5 plugin for offloading to NVPTX + This package contains libgomp plugin for offloading to NVidia + PTX. The plugin needs libcuda.so.1 shared library that has to be + installed separately. + +Package: gcc-15-offload-amdgcn +Architecture: amd64 +Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${dep:libcdev}, + libgomp-plugin-amdgcn1 (>= ${gcc:Version}), + amdgcn-tools-21 [amd64], ${shlibs:Depends}, ${misc:Depends} +Description: GCC offloading compiler to GCN + The package provides offloading support for AMD GCN. OpenMP and OpenACC + programs linked with -fopenmp will by default add GCN code into the binaries, + which can be offloaded to AMD GCN capable devices if available. + +Package: libgomp-plugin-amdgcn1 +Architecture: amd64 +Multi-Arch: same +Section: libs +Depends: gcc-15-base (= ${gcc:Version}), libgomp1, ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP v4.5 plugin for offloading to GCN + This package contains libgomp plugin for offloading to AMD GCN. + +Package: gcc-15-source +Multi-Arch: foreign +Architecture: all +Depends: make, quilt, patchutils, sharutils, gawk, lsb-release, time, m4, libtool, autoconf2.69, + ${misc:Depends} +Description: Source of the GNU Compiler Collection + This package contains the sources and patches which are needed to + build the GNU Compiler Collection (GCC). diff --git a/control.m4 b/control.m4 new file mode 100644 index 0000000..0ee6922 --- /dev/null +++ b/control.m4 @@ -0,0 +1,5350 @@ +divert(-1) + +define(`checkdef',`ifdef($1, , `errprint(`error: undefined macro $1 +')m4exit(1)')') +define(`errexit',`errprint(`error: undefined macro `$1' +')m4exit(1)') + +dnl The following macros must be defined, when called: +dnl ifdef(`SRCNAME', , errexit(`SRCNAME')) +dnl ifdef(`PV', , errexit(`PV')) +dnl ifdef(`ARCH', , errexit(`ARCH')) + +dnl The architecture will also be defined (-D__i386__, -D__powerpc__, etc.) + +define(`PN', `$1') +define(`MAINTAINER', `Debian GCC Maintainers ') + +define(`depifenabled', `ifelse(index(enabled_languages, `$1'), -1, `', `$2')') +define(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')') + +ifdef(`TARGET',`ifdef(`CROSS_ARCH',`',`undefine(`MULTIARCH')')') +define(`CROSS_ARCH', ifdef(`CROSS_ARCH', CROSS_ARCH, `all')) +define(`libdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +define(`libdevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +define(`libidevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +ifdef(`TARGET',`ifelse(CROSS_ARCH,`all',` +define(`libidevdep', `lib$2$1`'LS`'AQ (>= ifelse(`$4',`',`${gcc:SoftVersion}',`$4'))') +')') +ifelse(index(enabled_languages, `libdbg'), -1, ` +define(`libdbgdep', `') +',` +define(`libdbgdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +')`'dnl libdbg + +define(`BUILT_USING', ifelse(add_built_using,yes,`Built-Using: ${Built-Using} +')) +define(`TARGET_PACKAGE',`X-DH-Build-For-Type: target +') +define(`_for_each',`ifelse(`$3',`',`',`pushdef(`$1',`$3')$2`'popdef(`$1')`'$0(`$1',`$2',shift(shift(shift($@))))')') +define(`for_each_arch',`_for_each(`_arch',`dnl +pushdef(`arch_deb',`patsubst(_arch,`=.*',`')')dnl +pushdef(`arch_gnu',`patsubst(_arch,`.*=',`')')dnl +pushdef(`arch_gnusuffix',`-patsubst(arch_gnu,`_',`-')')dnl +$1`'popdef(`arch_gnusuffix')popdef(`arch_gnu')popdef(`arch_deb')',dnl +patsubst(ARCH_GNUTYPE_MAP,`\s+',`,'))') + +divert`'dnl +dnl -------------------------------------------------------------------------- +Source: SRCNAME +Section: devel +Priority: optional +ifelse(DIST,`Ubuntu',`dnl +Maintainer: Ubuntu Core developers +XSBC-Original-Maintainer: MAINTAINER +', `dnl +Maintainer: MAINTAINER +')dnl DIST +Uploaders: Matthias Klose +Standards-Version: 4.7.4 +ifdef(`TARGET',`dnl cross +Build-Depends: DEBHELPER_BUILD_DEP DPKG_BUILD_DEP + LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP + linux-libc-dev [m68k], + dwz, LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTO_BUILD_DEP + SOURCE_BUILD_DEP CROSS_BUILD_DEP + ISL_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP, + libzstd-dev, zlib1g-dev, BINUTILS_BUILD_DEP, + gawk, lzma, xz-utils, patchutils, + PKGCONF_BUILD_DEP libgc-dev, + zlib1g-dev, SDT_BUILD_DEP USAGE_BUILD_DEP + bison, flex, GNAT_BUILD_DEP GDC_BUILD_DEP GM2_BUILD_DEP + lsb-release, quilt, time +',`dnl native +Build-Depends: DEBHELPER_BUILD_DEP DPKG_BUILD_DEP GCC_MULTILIB_BUILD_DEP + LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBC_DBG_DEP + linux-libc-dev [m68k], + AUTO_BUILD_DEP BASE_BUILD_DEP + dwz, libunwind8-dev [ia64], libatomic-ops-dev [ia64], + gawk, lzma, xz-utils, patchutils, + libzstd-dev, zlib1g-dev, SDT_BUILD_DEP USAGE_BUILD_DEP + BINUTILS_BUILD_DEP, BUILD_DEP_FOR_BINUTILS + gperf, bison, flex, + gettext, OFFLOAD_BUILD_DEP + texinfo, LOCALES, sharutils, + procps, FORTRAN_BUILD_DEP GNAT_BUILD_DEP GO_BUILD_DEP GDC_BUILD_DEP GM2_BUILD_DEP RS_BUILD_DEP + ISL_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP PHOBOS_BUILD_DEP + CHECK_BUILD_DEP chrpath, lsb-release, quilt, time, + PKGCONF_BUILD_DEP libgc-dev, + TARGET_TOOL_BUILD_DEP +Build-Depends-Indep: LIBSTDCXX_BUILD_INDEP +')dnl +ifelse(regexp(SRCNAME, `gdc'),0,`dnl +Homepage: https://gdcproject.org/ +', `dnl +Homepage: https://gcc.gnu.org/ +')dnl SRCNAME +Vcs-Browser: https://salsa.debian.org/toolchain-team/gcc/tree/gcc-15-debian +Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git -b gcc-15-debian +XS-Testsuite: autopkgtest +Rules-Requires-Root: binary-targets + +ifelse(regexp(SRCNAME, `gcc-snapshot'),0,`dnl +Package: gcc-snapshot`'TS +Architecture: any +Depends: binutils`'TS (>= ${binutils:Version}), + ${dep:libcbiarchdev}, ${dep:libcdev}, ${dep:libunwinddev}, python3, + ${snap:depends}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${snap:recommends} +BUILT_USING`'dnl +Description: SNAPSHOT of the GNU Compiler Collection + This package contains a recent development SNAPSHOT of all files + contained in the GNU Compiler Collection (GCC). + . + The source code for this package has been exported from SVN trunk. + . + DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES! + . + This package will NEVER hit the testing distribution. It is used for + tracking gcc bugs submitted to the Debian BTS in recent development + versions of gcc. +',`dnl regexp SRCNAME +ifelse(regexp(SRCNAME, `gcc-toolchain'),0,`dnl +Package: gcc-toolchain`'PV`'TS +Architecture: any +Depends: + ${dep:libcbiarchdev}, ${dep:libcdev}, ${dep:libunwinddev}, python3, + ${snap:depends}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${snap:recommends} +BUILT_USING`'dnl +Description: Backport of the GNU Compiler Collection + This package contains the default GCC and binutils as found + in a newer Ubuntu LTS release. +',`dnl regexp SRCNAME +dnl default base package dependencies +define(`BASEDEP', `gcc`'PV`'TS-base (= ${gcc:Version})') +define(`SOFTBASEDEP', `gcc`'PV`'TS-base (>= ${gcc:SoftVersion})') + +ifdef(`TARGET',` +define(`BASELDEP', `gcc`'PV`'ifelse(CROSS_ARCH,`all',`-cross')-base`'GCC_PORTS_BUILD (= ${gcc:Version})') +define(`SOFTBASELDEP', `gcc`'PV`'ifelse(CROSS_ARCH, `all',`-cross')-base`'GCC_PORTS_BUILD (>= ${gcc:SoftVersion})') +',`dnl +define(`BASELDEP', `BASEDEP') +define(`SOFTBASELDEP', `SOFTBASEDEP') +') + +ifenabled(`gccbase',` +Package: gcc`'PV`'TS-base +Architecture: any +Multi-Arch: same +ifdef(`TARGET',`dnl',`Section: libs') +Depends: ${misc:Depends} +Replaces: ${base:Replaces} +Breaks: ${base:Breaks} +BUILT_USING`'dnl +Description: GCC, the GNU Compiler Collection (base package) + This package contains files common to all languages and libraries + contained in the GNU Compiler Collection (GCC). +ifdef(`BASE_ONLY', `dnl + . + This version of GCC is not yet available for this architecture. + Please use the compilers from the gcc-snapshot package for testing. +')`'dnl +')`'dnl gccbase + +ifenabled(`gcclbase',` +Package: gcc`'PV-cross-base`'GCC_PORTS_BUILD +Architecture: all +ifdef(`TARGET',`dnl',`Section: libs') +Depends: ${misc:Depends} +BUILT_USING`'dnl +Description: GCC, the GNU Compiler Collection (library base package) + This empty package contains changelog and copyright files common to + all libraries contained in the GNU Compiler Collection (GCC). +ifdef(`BASE_ONLY', `dnl + . + This version of GCC is not yet available for this architecture. + Please use the compilers from the gcc-snapshot package for testing. +')`'dnl +')`'dnl gcclbase + +ifenabled(`libgcc',` +Package: libgcc-s1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Provides: libgcc1`'LS (= ${gcc:EpochVersion}), ifdef(`TARGET',`libgcc-s1-TARGET-dcv1',`') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +ifdef(`LIBGCCPROTECTED', `XB-Important: yes +Protected: yes +')`'dnl +ifdef(`TARGET',`dnl +Breaks: libgcc1`'LS (<< 1:10) +Replaces: libgcc1`'LS (<< 1:10) +',`dnl +Breaks: ${libgcc:Breaks} +Replaces: libgcc1`'LS (<< 1:10) +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libgcc-s1`'LS (>= ${gcc:Version}), ${misc:Depends}, ${shlibs:Depends} +Provides: ifdef(`TARGET',`libgcc1-TARGET-dcv1',`') +ifdef(`MULTIxxxARCH', `Multi-Arch: same +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: libgcc-s1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(gcc-s1,,=,${gcc:Version}), ${misc:Depends} +ifdef(`MULTIARCH',`Multi-Arch: same +')dnl +Breaks: libgcc1-dbg`'LS (<< 1:10) +Replaces: libgcc1-dbg`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libgcc-s1-dbg`'LS, libdep(gcc1,,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`MULTIxxxARCH',`Multi-Arch: same +')dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg + +Package: libgcc-s2`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +ifdef(`TARGET',`dnl',`Section: libs') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +ifdef(`LIBGCCPROTECTED', `XB-Important: yes +Protected: yes +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Provides: libgcc2`'LS (= ${gcc:EpochVersion}), ifdef(`TARGET',`libgcc-s2-TARGET-dcv1')`' +ifdef(`TARGET',`dnl +Breaks: libgcc2`'LS (<< 1:10) +Replaces: libgcc2`'LS (<< 1:10) +',`dnl +Breaks: ${libgcc:Breaks} +Replaces: libgcc2`'LS (<< 1:10) +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc2`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libgcc-s2`'LS (>= ${gcc:Version}), ${misc:Depends}, ${shlibs:Depends} +ifdef(`TARGET',`Provides: libgcc-s2-TARGET-dcv1 +')`'dnl +ifdef(`MULTIxxxARCH', `Multi-Arch: same +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: libgcc-s2-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +Section: debug +Depends: BASELDEP, libdep(gcc-s2,,=,${gcc:Version}), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Breaks: libgcc2-dbg`'LS (<< 1:10) +Replaces: libgcc2-dbg`'LS (<< 1:10) +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc2-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +Section: debug +Depends: BASELDEP, libgcc-s2-dbg`'LS, libdep(gcc2,,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`MULTIxxxARCH',`Multi-Arch: same +')dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols, debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg + +Package: libgcc-s4`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`MULTIARCH', `Multi-Arch: same +ifdef(`LIBGCCPROTECTED', `XB-Important: yes +Protected: yes +')`'dnl +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Provides: libgcc4`'LS (= ${gcc:EpochVersion}) +ifdef(`TARGET',`dnl +Breaks: libgcc4`'LS (<< 1:10) +Replaces: libgcc4`'LS (<< 1:10) +',`dnl +Breaks: ${libgcc:Breaks} +Replaces: libgcc4`'LS (<< 1:10) +')`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc4`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libgcc-s4`'LS (>= ${gcc:Version}), ${misc:Depends}, ${shlibs:Depends} +ifdef(`MULTIxxxARCH', `Multi-Arch: same +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: libgcc-s4-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: debug +Depends: BASELDEP, libdep(gcc-s4,,=,${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Breaks: libgcc4-dbg`'LS (<< 1:10) +Replaces: libgcc4-dbg`'LS (<< 1:10) +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc4-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +Section: debug +Depends: BASELDEP, libgcc-s4-dbg`'LS, libdep(gcc4,,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`MULTIxxxARCH',`Multi-Arch: same +')dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols, debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg +')`'dnl libgcc + +ifenabled(`cdev',` +Package: libgcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, + ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, + ${dep:libtsan}, ${dep:libubsan}, ${dep:libhwasan}, ${dep:libvtv}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +Breaks: libtsan`'TSAN_SO`'LS (<< 12-20211113-2~) +Replaces: libtsan`'TSAN_SO`'LS (<< 12-20211113-2~) +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`lib64gcc',` +Package: lib64gcc-s1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64gcc1`'LS (= ${gcc:EpochVersion}), lib64gcc-s1-TARGET-dcv1 +',`')`'dnl +Breaks: lib64gcc1`'LS (<< 1:10) +Replaces: lib64gcc1`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (64bit) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: lib64gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, lib64gcc-s1`'LS (>= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') (64bit) + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: lib64gcc-s1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(gcc-s1,64,=,${gcc:Version}), ${misc:Depends} +Breaks: lib64gcc1-dbg`'LS (<< 1:10) +Replaces: lib64gcc1-dbg`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: lib64gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, lib64gcc-s1-dbg`'LS, libdep(gcc1,64,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg +')`'dnl lib64gcc + +ifenabled(`cdev',` +Package: lib64gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (64bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`lib32gcc',` +Package: lib32gcc-s1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +Conflicts: ${confl:lib32} +Breaks: lib32gcc1`'LS (<< 1:10) +Replaces: lib32gcc1`'LS (<< 1:10) +ifdef(`TARGET',`Provides: lib32gcc1`'LS (= ${gcc:EpochVersion}), lib32gcc-s1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library (32 bit Version) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: lib32gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, lib32gcc-s1`'LS (>= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} +Conflicts: ${confl:lib32} +ifdef(`TARGET',`Provides: lib32gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library (dependency package, 32bit) + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: lib32gcc-s1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(gcc-s1,32,=,${gcc:Version}), ${misc:Depends} +Breaks: lib32gcc1-dbg`'LS (<< 1:10) +Replaces: lib32gcc1-dbg`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: lib32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, lib32gcc-s1-dbg`'LS, libdep(gcc1,32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg +')`'dnl lib32gcc1 + +ifenabled(`cdev',` +Package: lib32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (32 bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`libn32gcc',` +Package: libn32gcc-s1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32gcc1`'LS (= ${gcc:EpochVersion}), libn32gcc-s1-TARGET-dcv1 +',`')`'dnl +Breaks: libn32gcc1`'LS (<< 1:10) +Replaces: libn32gcc1`'LS (<< 1:10) +ifdef(`TARGET',`dnl',`Conflicts: lib32gcc-s1 [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (n32) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libn32gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libn32gcc-s1`'LS, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32gcc1-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: lib32gcc1 [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (n32) + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: libn32gcc-s1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(gcc-s1,n32,=,${gcc:Version}), ${misc:Depends} +Breaks: libn32gcc1-dbg`'LS (<< 1:10) +Replaces: libn32gcc1-dbg`'LS (<< 1:10) +ifdef(`TARGET',`dnl',`Conflicts: lib32gcc-s1-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libn32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libn32gcc-s1-dbg`'LS, libdep(gcc1,n32,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32gcc1-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg +')`'dnl libn32gcc + +ifenabled(`cdev',` +Package: libn32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (n32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`libx32gcc',` +Package: libx32gcc-s1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32gcc1`'LS (= ${gcc:EpochVersion}), libx32gcc-s1-TARGET-dcv1 +',`')`'dnl +Breaks: libx32gcc1`'LS (<< 1:10) +Replaces: libx32gcc1`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (x32) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libx32gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libx32gcc-s1`'LS (>= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (x32) + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: libx32gcc-s1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(gcc-s1,x32,=,${gcc:Version}), ${misc:Depends} +Breaks: libx32gcc1-dbg`'LS (<< 1:10) +Replaces: libx32gcc1-dbg`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libx32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libx32gcc-s1-dbg`'LS, libdep(gcc1,x32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg +')`'dnl libx32gcc + +ifenabled(`cdev',` +ifenabled(`x32dev',` +Package: libx32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (x32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl x32dev +')`'dnl cdev + +ifenabled(`cdev',`dnl +for_each_arch(` +Package: gcc`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: cpp`'PV`'arch_gnusuffix (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,') + ifenabled(`gccxbase',` BASEDEP,') + ${dep:libcc1}, + binutils`'arch_gnusuffix (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), + gcc`'PV-locales (>= ${gcc:SoftVersion}), + libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), + libdbgdep(gomp`'GOMP_SO-dbg,), + libdbgdep(itm`'ITM_SO-dbg,), + libdbgdep(atomic`'ATOMIC_SO-dbg,), + libdbgdep(asan`'ASAN_SO-dbg,), + libdbgdep(lsan`'LSAN_SO-dbg,), + libdbgdep(tsan`'TSAN_SO-dbg,), + libdbgdep(ubsan`'UBSAN_SO-dbg,), + libdbgdep(hwasan`'HWASAN_SO-dbg,), +ifenabled(`libvtv',`',` + libdbgdep(vtv`'VTV_SO-dbg,), +')`'dnl + libdbgdep(quadmath`'QMATH_SO-dbg,), +Provides: c-compiler`'arch_gnusuffix +ifdef(`TARGET',`Conflicts: gcc-multilib +')`'dnl +BUILT_USING`'dnl +Description: GNU C compiler for the arch_gnu architecture + This is the GNU C compiler for the arch_gnu architecture, + a fairly portable optimizing compiler for C. +')`'dnl for_each_arch + +Package: gcc`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gcc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + cpp`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C compiler for the host architecture + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gcc`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gcc`'PV (>= ${gcc:Version}), cpp`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C compiler for the build architecture + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package. + +Package: gcc`'PV +Architecture: any +Depends: gcc`'PV`'${target:suffix} (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,') + ifenabled(`gccxbase',` BASEDEP,') + cpp`'PV (= ${gcc:Version}), + binutils (>= ${binutils:Version}), + ${misc:Depends} +Recommends: ${dep:libcdev} +Replaces: cpp`'PV (<< 7.1.1-8) +Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), + gcc`'PV-locales (>= ${gcc:SoftVersion}), + libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), + libdbgdep(gomp`'GOMP_SO-dbg,), + libdbgdep(itm`'ITM_SO-dbg,), + libdbgdep(atomic`'ATOMIC_SO-dbg,), + libdbgdep(asan`'ASAN_SO-dbg,), + libdbgdep(lsan`'LSAN_SO-dbg,), + libdbgdep(tsan`'TSAN_SO-dbg,), + libdbgdep(ubsan`'UBSAN_SO-dbg,), +ifenabled(`libvtv',`',` + libdbgdep(vtv`'VTV_SO-dbg,), +')`'dnl + libdbgdep(quadmath`'QMATH_SO-dbg), +Provides: c-compiler +BUILT_USING`'dnl +Description: GNU C compiler + This is the GNU C compiler, a fairly portable optimizing compiler for C. +')`'dnl + +ifenabled(`multilib',` +Package: gcc`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`testresults',` +Package: gcc`'PV-test-results +Architecture: any +Depends: BASEDEP, ${misc:Depends} +Replaces: g++-5 (<< 5.2.1-28) +BUILT_USING`'dnl +Description: Test results for the GCC test suite + This package contains the test results for running the GCC test suite + for a post build analysis. +')`'dnl testresults + +ifenabled(`plugindev',` +Package: gcc`'PV-plugin-dev`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), GMP_BUILD_DEP MPC_BUILD_DEP ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Files for GNU GCC plugin development. + This package contains (header) files for GNU GCC plugin development. It + is only used for the development of GCC plugins, but not needed to run + plugins. +')`'dnl plugindev +')`'dnl cdev + +ifenabled(`cdev',` +Package: gcc`'PV-hppa64-linux-gnu +Architecture: ifdef(`TARGET',`any',hppa amd64 i386 x32) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), + binutils-hppa64-linux-gnu | binutils-hppa64, + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C compiler (cross compiler for hppa64) + This is the GNU C compiler, a fairly portable optimizing compiler for C. +')`'dnl cdev + +ifenabled(`cdev',`dnl +for_each_arch(` +Package: cpp`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +ifdef(`TARGET',`dnl',`Section: interpreters') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}), cpp`'PV-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +BUILT_USING`'dnl +Description: GNU C preprocessor for arch_gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + arch_gnu architecture but not the compiler. +')`'dnl for_each_arch + +Package: cpp`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Section: ifdef(`TARGET',`devel',`interpreters') +Depends: BASEDEP, cpp`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C preprocessor for the host architecture + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor configured for the host architecture but not + the compiler. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: cpp`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Section: ifdef(`TARGET',`devel',`interpreters') +Depends: SOFTBASEDEP, cpp`'PV (>= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C preprocessor for the build architecture + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor configured for the build architecture but not + the compiler. + . + This is a dependency package. + +Package: cpp`'PV +Architecture: any +Section: interpreters +Depends: BASEDEP, cpp`'PV`'${target:suffix} (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +BUILT_USING`'dnl +Description: GNU C preprocessor + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor but not the compiler. +')`'dnl + +ifdef(`TARGET', `', ` +ifenabled(`gfdldoc',` +Package: cpp`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Description: Documentation for the GNU C preprocessor (cpp) + Documentation for the GNU C preprocessor in info `format'. +')`'dnl gfdldoc +')`'dnl native + +ifdef(`TARGET', `', ` +Package: gcc`'PV-locales +Architecture: all +Depends: SOFTBASEDEP, cpp`'PV (>= ${gcc:SoftVersion}), ${misc:Depends} +Recommends: gcc`'PV (>= ${gcc:SoftVersion}) +Description: GCC, the GNU compiler collection (native language support files) + Native language support for GCC. Lets GCC speak your language, + if translations are available. + . + Please do NOT submit bug reports in other languages than "C". + Always reset your language settings to use the "C" locales. +')`'dnl native +')`'dnl cdev + +ifenabled(`c++',` +ifenabled(`c++dev',`dnl +for_each_arch(` +Package: g++`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler`'arch_gnusuffix +Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg,) +BUILT_USING`'dnl +Description: GNU C++ compiler for the arch_gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + arch_gnu architecture. +')`'dnl for_each_arch + +Package: g++`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, g++`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C++ compiler for the host architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the host architecture. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: g++`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, g++`'PV (>= ${gcc:Version}), ${misc:Depends}, + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}) +BUILT_USING`'dnl +Description: GNU C++ compiler for the build architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + arch_gnu architecture. + . + This is a dependency package. + +Package: g++`'PV +Architecture: any +Depends: g++`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends} +Provides: c++-compiler, c++abi2-dev +Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +BUILT_USING`'dnl +Description: GNU C++ compiler + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. +')`'dnl TARGET + +ifenabled(`multilib',` +Package: g++`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, g++`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libcxxbiarchdbg} +BUILT_USING`'dnl +Description: GNU C++ compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl c++dev +')`'dnl c++ + +ifdef(`TARGET', `', ` +ifenabled(`ssp',` +Package: libssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Section: libs +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC stack smashing protection library + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: lib32ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarch32_archs +Section: libs +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC stack smashing protection library (32bit) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: lib64ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarch64_archs +Section: libs +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +BUILT_USING`'dnl +Description: GCC stack smashing protection library (64bit) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libn32ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarchn32_archs +Section: libs +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +ifdef(`TARGET',`dnl',`Conflicts: lib32ssp`'SSP_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC stack smashing protection library (n32) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libx32ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarchx32_archs +Section: libs +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +BUILT_USING`'dnl +Description: GCC stack smashing protection library (x32) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. +')`'dnl +')`'dnl native + +ifenabled(`libgomp',` +Package: libgomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +ifenabled(`libdbg',` +Package: libgomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(gomp`'GOMP_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. +')`'dnl libdbg + +Package: lib32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (32bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +ifenabled(`libdbg',` +Package: lib32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(gomp`'GOMP_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (32 bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. +')`'dnl libdbg + +Package: lib64gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (64bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +ifenabled(`libdbg',` +Package: lib64gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(gomp`'GOMP_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (64bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. +')`'dnl libdbg + +Package: libn32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32gomp`'GOMP_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (n32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +ifenabled(`libdbg',` +Package: libn32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(gomp`'GOMP_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32ssp`'GOMP_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (n32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libdbg + +ifenabled(`libx32gomp',` +Package: libx32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (x32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +ifenabled(`libdbg',` +Package: libx32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(gomp`'GOMP_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (x32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libdbg +')`'dnl libx32gomp +')`'dnl libgomp + +ifenabled(`libitm',` +Package: libitm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +ifenabled(`libdbg',` +Package: libitm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(itm`'ITM_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libdbg + +Package: lib32itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (32bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +ifenabled(`libdbg',` +Package: lib32itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(itm`'ITM_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (32 bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libdbg + +Package: lib64itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (64bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +ifenabled(`libdbg',` +Package: lib64itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(itm`'ITM_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (64bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libdbg + +#Package: libn32itm`'ITM_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32itm`'ITM_SO [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +#Package: libn32itm`'ITM_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(itm`'ITM_SO,n32,=), ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32itm`'ITM_SO-dbg [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32 debug symbols) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +ifenabled(`libx32itm',` +Package: libx32itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (x32) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. + +ifenabled(`libdbg',` +Package: libx32itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(itm`'ITM_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (x32 debug symbols) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. +')`'dnl libdbg +')`'dnl libx32itm +')`'dnl libitm + +ifenabled(`libatomic',` +Package: libatomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libdbg',` +Package: libatomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libdbg + +Package: lib32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (32bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libdbg',` +Package: lib32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (32 bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libdbg + +Package: lib64atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (64bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libdbg',` +Package: lib64atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (64bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libdbg + +Package: libn32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32atomic`'ATOMIC_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (n32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libdbg',` +Package: libn32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32atomic`'ATOMIC_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (n32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libdbg + +ifenabled(`libx32atomic',` +Package: libx32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (x32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libdbg',` +Package: libx32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (x32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libdbg +')`'dnl libx32atomic +')`'dnl libatomic + +ifenabled(`libasan',` +Package: libasan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libdbg',` +Package: libasan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(asan`'ASAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libdbg + +Package: lib32asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (32bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libdbg',` +Package: lib32asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(asan`'ASAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (32 bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libdbg + +Package: lib64asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (64bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libdbg',` +Package: lib64asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(asan`'ASAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (64bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libdbg + +#Package: libn32asan`'ASAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32asan`'ASAN_SO [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(asan`'ASAN_SO,n32,=), ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32asan`'ASAN_SO-dbg [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32 debug symbols) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libx32asan',` +Package: libx32asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (x32) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libdbg',` +Package: libx32asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(asan`'ASAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (x32 debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libdbg +')`'dnl libx32asan +')`'dnl libasan + +ifenabled(`libhwasan',` +Package: libhwasan`'HWASAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector + AddressSanitizer (HWASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libdbg',` +Package: libhwasan`'HWASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(hwasan`'LSAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (debug symbols) + AddressSanitizer (HWASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libdbg +')`'dnl libhwasan + +ifenabled(`liblsan',` +Package: liblsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (runtime) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +ifenabled(`libdbg',` +Package: liblsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(lsan`'LSAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. +')`'dnl libdbg + +ifenabled(`lib32lsan',` +Package: lib32lsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (32bit) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +ifenabled(`libdbg',` +Package: lib32lsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(lsan`'LSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (32 bit debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). +')`'dnl libdbg +')`'dnl lib32lsan + +ifenabled(`lib64lsan',` +#Package: lib64lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +ifenabled(`libdbg',` +#Package: lib64lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(lsan`'LSAN_SO,64,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. +')`'dnl libdbg +')`'dnl lib64lsan + +ifenabled(`libn32lsan',` +#Package: libn32lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32lsan`'LSAN_SO [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +ifenabled(`libdbg',` +#Package: libn32lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(lsan`'LSAN_SO,n32,=), ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32lsan`'LSAN_SO-dbg [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32 debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. +')`'dnl libdbg +')`'dnl libn32lsan + +ifenabled(`libx32lsan',` +Package: libx32lsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (x32) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +ifenabled(`libdbg',` +Package: libx32lsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(lsan`'LSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (x32 debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). +')`'dnl libdbg +')`'dnl libx32lsan +')`'dnl liblsan + +ifenabled(`libtsan',` +Package: libtsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (runtime) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`libdbg',` +Package: libtsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(tsan`'TSAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libdbg + +ifenabled(`lib32tsan',` +Package: lib32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (32bit) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`libdbg',` +Package: lib32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(tsan`'TSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (32 bit debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libdbg +')`'dnl lib32tsan + +ifenabled(`lib64tsan',` +Package: lib64tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`libdbg',` +Package: lib64tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(tsan`'TSAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libdbg +')`'dnl lib64tsan + +ifenabled(`libn32tsan',` +Package: libn32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32tsan`'TSAN_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`libdbg',` +Package: libn32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(tsan`'TSAN_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32tsan`'TSAN_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32 debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libdbg +')`'dnl libn32tsan + +ifenabled(`libx32tsan',` +Package: libx32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`libdbg',` +Package: libx32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(tsan`'TSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32 debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libdbg +')`'dnl libx32tsan +')`'dnl libtsan + +ifenabled(`libubsan',` +Package: libubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (runtime) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +ifenabled(`libdbg',` +Package: libubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libdbg + +ifenabled(`lib32ubsan',` +Package: lib32ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (32bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +ifenabled(`libdbg',` +Package: lib32ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (32 bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libdbg +')`'dnl lib32ubsan + +ifenabled(`lib64ubsan',` +Package: lib64ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (64bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +ifenabled(`libdbg',` +Package: lib64ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (64bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libdbg +')`'dnl lib64ubsan + +ifenabled(`libn32ubsan',` +#Package: libn32ubsan`'UBSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32ubsan`'UBSAN_SO [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. + +ifenabled(`libdbg',` +#Package: libn32ubsan`'UBSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,n32,=), ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32ubsan`'UBSAN_SO-dbg [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32 debug symbols) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. +')`'dnl libdbg +')`'dnl libn32ubsan + +ifenabled(`libx32ubsan',` +Package: libx32ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (x32) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +ifenabled(`libdbg',` +Package: libx32ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (x32 debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libdbg +')`'dnl libx32ubsan +')`'dnl libubsan + +ifenabled(`libvtv',` +Package: libvtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (runtime) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`libdbg',` +Package: libvtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(vtv`'VTV_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GNU vtable verification library (debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libdbg + +ifenabled(`lib32vtv',` +Package: lib32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GNU vtable verification library (32bit) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`libdbg',` +Package: lib32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(vtv`'VTV_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (32 bit debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libdbg +')`'dnl lib32vtv + +ifenabled(`lib64vtv',` +Package: lib64vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (64bit) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`libdbg',` +Package: lib64vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(vtv`'VTV_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (64bit debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libdbg +')`'dnl lib64vtv + +ifenabled(`libn32vtv',` +Package: libn32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32vtv`'VTV_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GNU vtable verification library (n32) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`libdbg',` +Package: libn32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(vtv`'VTV_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32vtv`'VTV_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GNU vtable verification library (n32 debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libdbg +')`'dnl libn32vtv + +ifenabled(`libx32vtv',` +Package: libx32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (x32) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`libdbg',` +Package: libx32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(vtv`'VTV_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (x32 debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libdbg +')`'dnl libx32vtv +')`'dnl libvtv + +ifenabled(`libbacktrace',` +Package: libbacktrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libdbg',` +Package: libbacktrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: stack backtrace library (debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libdbg + +Package: lib32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: stack backtrace library (32bit) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libdbg',` +Package: lib32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (32 bit debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libdbg + +Package: lib64backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (64bit) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libdbg',` +Package: lib64backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (64bit debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libdbg + +Package: libn32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32backtrace`'BTRACE_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: stack backtrace library (n32) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libdbg',` +Package: libn32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32backtrace`'BTRACE_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: stack backtrace library (n32 debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libdbg + +ifenabled(`libx32backtrace',` +Package: libx32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (x32) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libdbg',` +Package: libx32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (x32 debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libdbg +')`'dnl libx32backtrace +')`'dnl libbacktrace + +ifenabled(`libqmath',` +Package: libquadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +ifenabled(`libdbg',` +Package: libquadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libdbg + +Package: lib32quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (32bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +ifenabled(`libdbg',` +Package: lib32quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (32 bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libdbg + +Package: lib64quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (64bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +ifenabled(`libdbg',` +Package: lib64quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (64bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libdbg + +#Package: libn32quadmath`'QMATH_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32quadmath`'QMATH_SO [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. The library is used to provide on such +# targets the REAL(16) type in the GNU Fortran compiler. + +ifenabled(`libdbg',` +#Package: libn32quadmath`'QMATH_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(quadmath`'QMATH_SO,n32,=), ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32quadmath`'QMATH_SO-dbg [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32 debug symbols) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. +')`'dnl libdbg + +ifenabled(`libx32qmath',` +Package: libx32quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (x32) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +ifenabled(`libdbg',` +Package: libx32quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (x32 debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libdbg +')`'dnl libx32qmath +')`'dnl libqmath + +ifenabled(`libcc1',` +Package: libcc1-`'CC1_SO +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC cc1 plugin for GDB + libcc1 is a plugin for GDB. +')`'dnl libcc1 + +ifenabled(`libjit',` +Package: libgccjit`'GCCJIT_SO +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, libgcc`'PV-dev, binutils, ${dep:libcdev}, + ${shlibs:Depends}, ${misc:Depends} +Breaks: python-gccjit (<< 0.4-4), python3-gccjit (<< 0.4-4) +BUILT_USING`'dnl +Description: GCC just-in-time compilation (shared library) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +ifenabled(`libdbg',` +Package: libgccjit`'GCCJIT_SO-dbg +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, libgccjit`'GCCJIT_SO (= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC just-in-time compilation (debug information) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. +')`'dnl libdbg +')`'dnl libjit + +ifenabled(`jit',` +Package: libgccjit`'PV-doc +Section: doc +Architecture: all +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libgccjit-5-doc, libgccjit-6-doc, libgccjit-7-doc, libgccjit-8-doc, + libgccjit-9-doc, libgccjit-10-doc, libgccjit-11-doc, libgccjit-12-doc, + libgccjit-13-doc, libgccjit-14-doc, +Description: GCC just-in-time compilation (documentation) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit`'PV-dev +ifdef(`TARGET',`dnl',`Section: libdevel') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, libgccjit`'GCCJIT_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Suggests: libgccjit`'PV-dbg +Description: GCC just-in-time compilation (development files) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. +')`'dnl jit + +ifenabled(`libdiag',` +Package: libgdiagnostics`'DIAGNOSTICS_SO +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC diagnostic-handling code wrapped into a library (shared library) + GCCs diagnostic-handling code covers things like + - quoting pertinent source code (with a cache) + - underlining points and ranges in the source code, possibly with labels + - emitting fix-it hints + - generating patches from fix-it hints + - SARIF output + +ifenabled(`libdbg',` +Package: libgdiagnostics`'DIAGNOSTICS_SO-dbg +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, libgdiagnostics`'DIAGNOSTICS_SO (= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC diagnostic-handling code wrapped into a library (debug information) + GCCs diagnostic-handling code covers things like + - quoting pertinent source code (with a cache) + - underlining points and ranges in the source code, possibly with labels + - emitting fix-it hints + - generating patches from fix-it hints + - SARIF output +')`'dnl libdbg +')`'dnl libdiag + +ifenabled(`gdiag',` +#Package: libgdiagnostics`'PV-doc +#Section: doc +#Architecture: all +#Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +#Conflicts: libgdiagnostics-14-doc, +#Description: GCC diagnostic-handling code wrapped into a library (documentation) +# GCCs diagnostic-handling code covers things like +# - quoting pertinent source code (with a cache) +# - underlining points and ranges in the source code, possibly with labels +# - emitting fix-it hints +# - generating patches from fix-it hints +# - SARIF output + +Package: libgdiagnostics`'PV-dev +ifdef(`TARGET',`dnl',`Section: libdevel') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, libgdiagnostics`'DIAGNOSTICS_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Suggests: libgdiagnostic`'PV-dbg +Description: GCC diagnostic-handling code wrapped into a library (development files) + GCCs diagnostic-handling code covers things like + - quoting pertinent source code (with a cache) + - underlining points and ranges in the source code, possibly with labels + - emitting fix-it hints + - generating patches from fix-it hints + - SARIF output + +Package: gcc`'PV-diagnostics +ifdef(`TARGET',`dnl',`Section: devel') +Architecture: any +Depends: BASEDEP, libgdiagnostics`'DIAGNOSTICS_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC diagnostic tools + Currently only provides the sarif-replay command-line tool, which takes + SARIF files as input, and uses libdiagnostics to replay any diagnostics + within them as if they were GCC diagnostics. +')`'dnl gdiag + +ifenabled(`objpp',` +ifenabled(`objppdev',` +for_each_arch(` +Package: gobjc++`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: BASEDEP, gobjc`'PV`'arch_gnusuffix (= ${gcc:Version}), g++`'PV`'arch_gnusuffix (= ${gcc:Version}), ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler`'arch_gnusuffix +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler for the arch_gnu architecture + This is the GNU Objective-C++ compiler for the + arch_gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. +')`'dnl for_each_arch + +Package: gobjc++`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gobjc++`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gobjc`'PV`'-for-host (= ${gcc:Version}), g++`'PV`'-for-host (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler for the host architecture + This is the GNU Objective-C++ compiler for the host architecture, + which compiles Objective-C++ on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gobjc++`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gobjc++`'PV (>= ${gcc:Version}), + gobjc`'PV`'-for-build (= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), g++`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler for the build architecture + This is the GNU Objective-C++ compiler for the build architecture, + which compiles Objective-C++ on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gobjc++`'PV +Architecture: any +Depends: BASEDEP, gobjc++`'PV`'${target:suffix} (= ${gcc:Version}), gobjc`'PV (= ${gcc:Version}), g++`'PV (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler + This is the GNU Objective-C++ compiler, which compiles + Objective-C++ on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. +')`'dnl TARGET +')`'dnl obcppdev + +ifenabled(`multilib',` +Package: gobjc++`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gobjc++`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), gobjc`'PV-multilib`'TS (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler (multilib support) + This is the GNU Objective-C++ compiler, which compiles Objective-C++ on + platforms supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl obcpp + +ifenabled(`objc',` +ifenabled(`objcdev',` +for_each_arch(` +Package: gobjc`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends} +Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg,) +Provides: objc-compiler`'arch_gnusuffix +BUILT_USING`'dnl +Description: GNU Objective-C compiler for the arch_gnu architecture + This is the GNU Objective-C compiler for the arch_gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. +')`'dnl for_each_arch + +Package: gobjc`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gobjc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C compiler for the host architecture + This is the GNU Objective-C compiler for the host architecture, + which compiles Objective-C on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gobjc`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gobjc`'PV (>= ${gcc:Version}), ${misc:Depends}, + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}) +BUILT_USING`'dnl +Description: GNU Objective-C compiler for the build architecture + This is the GNU Objective-C compiler for the build architecture, + which compiles Objective-C on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gobjc`'PV +Architecture: any +Depends: BASEDEP, gobjc`'PV`'${target:suffix} (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc-compiler +BUILT_USING`'dnl +Description: GNU Objective-C compiler + This is the GNU Objective-C compiler, which compiles + Objective-C on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. +')`'dnl ifndef TARGET +ifenabled(`multilib',` +Package: gobjc`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Objective-C compiler, which compiles Objective-C on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +Package: libobjc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(objc`'OBJC_SO,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib64objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(objc`'OBJC_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(objc`'OBJC_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libn32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(objc`'OBJC_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +ifenabled(`x32dev',` +Package: libx32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(objc`'OBJC_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. +')`'dnl libx32objc +')`'dnl objcdev + +ifenabled(`libobjc',` +Package: libobjc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +ifelse(OBJC_SO,`2',`Breaks: ${multiarch:breaks} +',`')')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications + Library needed for GNU ObjC applications linked against the shared library. + +ifenabled(`libdbg',` +Package: libobjc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libdep(objc`'OBJC_SO,,=), libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libdbg +')`'dnl libobjc + +ifenabled(`lib64objc',` +Package: lib64objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64bit) + Library needed for GNU ObjC applications linked against the shared library. + +ifenabled(`libdbg',` +Package: lib64objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, libdep(objc`'OBJC_SO,64,=), libdbgdep(gcc-s`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libdbg +')`'dnl lib64objc + +ifenabled(`lib32objc',` +Package: lib32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32bit) + Library needed for GNU ObjC applications linked against the shared library. + +ifenabled(`libdbg',` +Package: lib32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, libdep(objc`'OBJC_SO,32,=), libdbgdep(gcc-s`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libdbg +')`'dnl lib32objc + +ifenabled(`libn32objc',` +Package: libn32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32objc`'OBJC_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32) + Library needed for GNU ObjC applications linked against the shared library. + +ifenabled(`libdbg',` +Package: libn32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libdep(objc`'OBJC_SO,n32,=), libdbgdep(gcc-s`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32objc`'OBJC_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libdbg +')`'dnl libn32objc + +ifenabled(`libx32objc',` +Package: libx32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32) + Library needed for GNU ObjC applications linked against the shared library. + +ifenabled(`libdbg',` +Package: libx32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libdep(objc`'OBJC_SO,x32,=), libdbgdep(gcc-s`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libdbg +')`'dnl libx32objc +')`'dnl objc + +ifenabled(`fortran',` +ifenabled(`fdev',`dnl +for_each_arch(`ifelse(index(` 'fortran_no_archs` ',` !'arch_deb` '),`-1',` +Package: gfortran`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran`'PV-doc, + libdbgdep(gfortran`'FORTRAN_SO-dbg), + libcoarrays-dev +BUILT_USING`'dnl +Description: GNU Fortran compiler for the arch_gnu architecture + This is the GNU Fortran compiler for the arch_gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. +')')`'dnl for_each_arch + +Package: gfortran`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gfortran`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Fortran compiler for the host architecture + This is the GNU Fortran compiler for the host architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gfortran`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gfortran`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Fortran compiler for the build architecture + This is the GNU Fortran compiler for the build architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gfortran`'PV +Architecture: any +Depends: gfortran`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends} +Provides: fortran95-compiler, ${fortran:mod-version} +Suggests: ${gfortran:multilib}, gfortran`'PV-doc +BUILT_USING`'dnl +Description: GNU Fortran compiler + This is the GNU Fortran compiler, which compiles + Fortran on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. +')`'dnl TARGET + +ifenabled(`multilib',` +Package: gfortran`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gfortran`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Fortran compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Fortran compiler, which compiles Fortran on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`gfdldoc',` +Package: gfortran`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Description: Documentation for the GNU Fortran compiler (gfortran) + Documentation for the GNU Fortran compiler in info `format'. +')`'dnl gfdldoc + +Package: libgfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',), libdep(gfortran`'FORTRAN_SO,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib64gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',64), libdep(gfortran`'FORTRAN_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',32), libdep(gfortran`'FORTRAN_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libn32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',n32), libdep(gfortran`'FORTRAN_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +ifenabled(`x32dev',` +Package: libx32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',x32), libdep(gfortran`'FORTRAN_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. +')`'dnl libx32gfortran +')`'dnl fdev + +ifenabled(`libgfortran',` +Package: libgfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications + Library needed for GNU Fortran applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libgfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,,=), libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libdbg +')`'dnl libgfortran + +ifenabled(`lib64gfortran',` +Package: lib64gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit) + Library needed for GNU Fortran applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: lib64gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libdbg +')`'dnl lib64gfortran + +ifenabled(`lib32gfortran',` +Package: lib32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32bit) + Library needed for GNU Fortran applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: lib32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32 bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libdbg +')`'dnl lib32gfortran + +ifenabled(`libn32gfortran',` +Package: libn32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32gfortran`'FORTRAN_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32) + Library needed for GNU Fortran applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libn32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32gfortran`'FORTRAN_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libdbg +')`'dnl libn32gfortran + +ifenabled(`libx32gfortran',` +Package: libx32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32) + Library needed for GNU Fortran applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libx32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libdbg +')`'dnl libx32gfortran +')`'dnl fortran + +ifenabled(`ggo',` +ifenabled(`godev',` +for_each_arch(`ifelse(index(` 'go_no_archs` ',` !'arch_deb` '),`-1',` +Package: gccgo`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ')libidevdep(go`'PV-dev,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg), +Conflicts: ${golang:Conflicts} +Breaks: libgo12`'LS (<< 8-20171209-2) +Replaces: libgo12`'LS (<< 8-20171209-2) +BUILT_USING`'dnl +Description: GNU Go compiler for the arch_gnu architecture + This is the GNU Go compiler for the arch_gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. +')')`'dnl for_each_arch + +Package: gccgo`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gccgo`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Go compiler for the host architecture + This is the GNU Go compiler for the host architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gccgo`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gccgo`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Go compiler for the build architecture + This is the GNU Go compiler for the build architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + . + This is a dependency package. + +Package: gccgo`'PV +Architecture: any +Depends: BASEDEP, gccgo`'PV`'${target:suffix} (= ${gcc:Version}), ifdef(`STANDALONEGO',`',`gcc`'PV (= ${gcc:Version}), ')${misc:Depends} +Provides: go-compiler +Suggests: ${go:multilib}, gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg), +Conflicts: ${golang:Conflicts} +BUILT_USING`'dnl +Description: GNU Go compiler + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. It uses the gcc backend to generate optimized code. +')`'dnl no-TARGET + +ifenabled(`multilib',` +Package: gccgo`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gccgo`'PV`'TS (= ${gcc:Version}), ifdef(`STANDALONEGO',,`gcc`'PV-multilib`'TS (= ${gcc:Version}), ')${dep:libgobiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libgobiarchdbg} +BUILT_USING`'dnl +Description: GNU Go compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`gfdldoc',` +Package: gccgo`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Documentation for the GNU Go compiler (gccgo) + Documentation for the GNU Go compiler in info `format'. +')`'dnl gfdldoc + +Package: libgo`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(go`'GO_SO,), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib64go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(go`'GO_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib32go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(go`'GO_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libn32go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(go`'GO_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +ifenabled(`x32dev',` +Package: libx32go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(go`'GO_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. +')`'dnl libx32go +')`'dnl godev + +ifenabled(`libggo',` +Package: libgo`'GO_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications + Library needed for GNU Go applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libgo`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libdep(go`'GO_SO,,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libdbg +')`'dnl libgo + +ifenabled(`lib64ggo',` +Package: lib64go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit) + Library needed for GNU Go applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: lib64go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, libdep(go`'GO_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libdbg +')`'dnl lib64go + +ifenabled(`lib32ggo',` +Package: lib32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32bit) + Library needed for GNU Go applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: lib32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, libdep(go`'GO_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32 bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libdbg +')`'dnl lib32go + +ifenabled(`libn32ggo',` +Package: libn32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32go`'GO_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32) + Library needed for GNU Go applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libn32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libdep(go`'GO_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32go`'GO_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libdbg +')`'dnl libn32go + +ifenabled(`libx32ggo',` +Package: libx32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32) + Library needed for GNU Go applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libx32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libdep(go`'GO_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libdbg +')`'dnl libx32go +')`'dnl ggo + +ifenabled(`c++',` +ifenabled(`libcxx',` +Package: libstdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${dep:libc}, ${shlibs:Depends}, ${misc:Depends} +Provides: ifdef(`TARGET',`libstdc++CXX_SO-TARGET-dcv1',`') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Conflicts: scim (<< 1.4.2-1) +Replaces: libstdc++CXX_SO`'PV-dbg`'LS (<< 4.9.0-3) +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libcxx + +ifenabled(`lib32cxx',` +Package: lib32stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libdep(gcc-s1,32), ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (32 bit Version) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib32cxx + +ifenabled(`lib64cxx',` +Package: lib64stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libdep(gcc-s1,64), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (64bit) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib64cxx + +ifenabled(`libn32cxx',` +Package: libn32stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libdep(gcc-s1,n32), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: lib32stdc++`'CXX_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (n32) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libn32cxx + +ifenabled(`libx32cxx',` +Package: libx32stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libdep(gcc-s1,x32), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (x32) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32cxx + +ifenabled(`c++dev',` +Package: libstdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev,,=), + libdep(stdc++CXX_SO,,>=), ${dep:libcdev}, ${misc:Depends} +ifdef(`TARGET',`',`dnl native +Suggests: libstdc++`'PV-doc +')`'dnl native +Provides: libstdc++-dev`'LS`'ifdef(`TARGET',`, libstdc++-dev-TARGET-dcv1') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libstdc++`'PV-pic`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdep(stdc++CXX_SO,), + libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libstdc++-pic-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (shared library subset kit)`'ifdef(`TARGET',` (TARGET)', `') + This is used to develop subsets of the libstdc++ shared libraries for + use on custom installation floppies and in embedded systems. + . + Unless you are making one of those, you will not need this package. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libstdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(stdc++CXX_SO,), + libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: ifdef(`TARGET',`libstdc++CXX_SO-dbg-TARGET-dcv1',`') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Recommends: libdevdep(stdc++`'PV-dev,) +Conflicts: libstdc++5-dbg`'LS, libstdc++5-3.3-dbg`'LS, libstdc++6-dbg`'LS, + libstdc++6-4.0-dbg`'LS, libstdc++6-4.1-dbg`'LS, libstdc++6-4.2-dbg`'LS, + libstdc++6-4.3-dbg`'LS, libstdc++6-4.4-dbg`'LS, libstdc++6-4.5-dbg`'LS, + libstdc++6-4.6-dbg`'LS, libstdc++6-4.7-dbg`'LS, libstdc++6-4.8-dbg`'LS, + libstdc++6-4.9-dbg`'LS, libstdc++6-5-dbg`'LS, libstdc++6-6-dbg`'LS, + libstdc++6-7-dbg`'LS, libstdc++6-8-dbg`'LS, libstdc++6-9-dbg`'LS, + libstdc++6-10-dbg`'LS, libstdc++6-11-dbg`'LS, libstdc++6-12-dbg`'LS, + libstdc++6-13-dbg`'LS, libstdc++6-14-dbg`'LS, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), + libdep(stdc++CXX_SO,32), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(stdc++CXX_SO,32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib32stdc++6-dbg`'LS, lib32stdc++6-4.0-dbg`'LS, + lib32stdc++6-4.1-dbg`'LS, lib32stdc++6-4.2-dbg`'LS, lib32stdc++6-4.3-dbg`'LS, + lib32stdc++6-4.4-dbg`'LS, lib32stdc++6-4.5-dbg`'LS, lib32stdc++6-4.6-dbg`'LS, + lib32stdc++6-4.7-dbg`'LS, lib32stdc++6-4.8-dbg`'LS, lib32stdc++6-4.9-dbg`'LS, + lib32stdc++6-5-dbg`'LS, lib32stdc++6-6-dbg`'LS, lib32stdc++6-7-dbg`'LS, + lib32stdc++6-8-dbg`'LS, lib32stdc++6-9-dbg`'LS, lib32stdc++6-10-dbg`'LS, + lib32stdc++6-11-dbg`'LS, lib32stdc++6-12-dbg`'LS, lib32stdc++6-13-dbg`'LS, + lib32stdc++6-14-dbg`'LS, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), + libdep(stdc++CXX_SO,64), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(stdc++CXX_SO,64), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib64stdc++6-dbg`'LS, lib64stdc++6-4.0-dbg`'LS, + lib64stdc++6-4.1-dbg`'LS, lib64stdc++6-4.2-dbg`'LS, lib64stdc++6-4.3-dbg`'LS, + lib64stdc++6-4.4-dbg`'LS, lib64stdc++6-4.5-dbg`'LS, lib64stdc++6-4.6-dbg`'LS, + lib64stdc++6-4.7-dbg`'LS, lib64stdc++6-4.8-dbg`'LS, lib64stdc++6-4.9-dbg`'LS, + lib64stdc++6-5-dbg`'LS, lib64stdc++6-6-dbg`'LS, lib64stdc++6-7-dbg`'LS, + lib64stdc++6-8-dbg`'LS, lib64stdc++6-9-dbg`'LS, lib64stdc++6-10-dbg`'LS, + lib64stdc++6-11-dbg`'LS, lib64stdc++6-12-dbg`'LS, lib64stdc++6-13-dbg`'LS, + lib64stdc++6-14-dbg`'LS, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), + libdep(stdc++CXX_SO,n32), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(stdc++CXX_SO,n32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: libn32stdc++6-dbg`'LS, libn32stdc++6-4.0-dbg`'LS, + libn32stdc++6-4.1-dbg`'LS, libn32stdc++6-4.2-dbg`'LS, libn32stdc++6-4.3-dbg`'LS, + libn32stdc++6-4.4-dbg`'LS, libn32stdc++6-4.5-dbg`'LS, libn32stdc++6-4.6-dbg`'LS, + libn32stdc++6-4.7-dbg`'LS, libn32stdc++6-4.8-dbg`'LS, libn32stdc++6-4.9-dbg`'LS, + libn32stdc++6-5-dbg`'LS, libn32stdc++6-6-dbg`'LS, libn32stdc++6-7-dbg`'LS, + libn32stdc++6-8-dbg`'LS, libn32stdc++6-9-dbg`'LS, libn32stdc++6-10-dbg`'LS, + libn32stdc++6-11-dbg`'LS, libn32stdc++6-12-dbg`'LS, libn32stdc++6-13-dbg`'LS, + libn32stdc++6-14-dbg`'LS, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`x32dev',` +Package: libx32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(stdc++CXX_SO,x32), + libdep(stdc++CXX_SO,x32), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl x32dev + +ifenabled(`libx32dbgcxx',` +Package: libx32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(stdc++CXX_SO,x32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: libx32stdc++6-dbg`'LS, libx32stdc++6-4.6-dbg`'LS, + libx32stdc++6-4.7-dbg`'LS, libx32stdc++6-4.8-dbg`'LS, libx32stdc++6-4.9-dbg`'LS, + libx32stdc++6-5-dbg`'LS, libx32stdc++6-6-dbg`'LS, libx32stdc++6-7-dbg`'LS, + libx32stdc++6-8-dbg`'LS, libx32stdc++6-9-dbg`'LS, libx32stdc++6-10-dbg`'LS, + libx32stdc++6-11-dbg`'LS, libx32stdc++6-12-dbg`'LS, libx32stdc++6-13-dbg`'LS, + libx32stdc++6-14-dbg`'LS, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32dbgcxx + +ifdef(`TARGET', `', ` +Package: libstdc++`'PV-doc +Build-Profiles: +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, + libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, + libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc, + libstdc++-4.8-doc, libstdc++-4.9-doc, libstdc++-5-doc, libstdc++-6-doc, + libstdc++-7-doc, libstdc++-8-doc, libstdc++-9-doc, libstdc++-10-doc, + libstdc++-11-doc, libstdc++-12-doc, libstdc++-13-doc, libstdc++-14-doc, +Description: GNU Standard C++ Library v3 (documentation files) + This package contains documentation files for the GNU stdc++ library. + . + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. +')`'dnl native +')`'dnl c++dev +')`'dnl c++ + +ifenabled(`ada',` +for_each_arch(`ifelse(index(` 'ada_no_archs` ',` !'arch_deb` '),`-1',` +Package: gnat`'-GNAT_V`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, gcc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat`'PV-doc, ada-reference-manual-2012 +ifdef(`TARGET',`',`dnl +Provides: gnat`'-GNAT_V-${libgnat:alihash} +')`'dnl +Conflicts: gnat-4.9, gnat-5`'TS, gnat-6`'TS, gnat-7`'TS, gnat-8`'TS, gnat-9`'TS, + gnat-10`'TS, gnat-11`'TS, gnat-12`'TS, gnat-13`'TS, gnat-14`'TS, + gnat-7`'arch_gnusuffix, gnat-8`'arch_gnusuffix, + gnat-9`'arch_gnusuffix, gnat-10`'arch_gnusuffix, + gnat-11`'arch_gnusuffix, gnat-12`'arch_gnusuffix, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +BUILT_USING`'dnl +Description: GNU Ada compiler for the arch_gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. +')')`'dnl for_each_arch + +Package: gnat`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gnat`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler for the host architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gnat`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gnat`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler for the build architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + . + This is a dependency package. + +Package: gnat`'-GNAT_V +Architecture: any +ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: gnat`'-GNAT_V`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: gnat`'PV-doc, ada-reference-manual-2012, gnat`'-GNAT_V-sjlj +BUILT_USING`'dnl +Description: GNU Ada compiler + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. +')`'dnl no-TARGET + +ifenabled(`adasjlj',` +Package: gnat`'-GNAT_V-sjlj`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, gnat`'-GNAT_V`'TS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler (setjump/longjump runtime library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides an alternative runtime library that handles + exceptions using the setjump/longjump mechanism (as a static library + only). You can install it to supplement the normal compiler. +')`'dnl adasjlj + +ifenabled(`libgnat',` +Package: libgnat`'-GNAT_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library. + +ifenabled(`libdbg',` +Package: libgnat`'-GNAT_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the debugging symbols. +')`'dnl libdbg +')`'dnl libgnat + +ifenabled(`lib64gnat',` +Package: lib64gnat`'-GNAT_V +Section: libs +Architecture: biarch64_archs +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (64 bits shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library for 64 bits architectures. +')`'dnl libgnat + +ifenabled(`gfdldoc',` +Package: gnat`'PV-doc +Architecture: all +Section: doc +Depends: ${misc:Depends} +Suggests: gnat`'PV +Conflicts: gnat-4.9-doc, + gnat-5-doc, gnat-6-doc, gnat-7-doc, gnat-8-doc, gnat-9-doc, gnat-10-doc, + gnat-11-doc, gnat-12-doc, gnat-13-doc, gnat-14-doc, +BUILT_USING`'dnl +Description: GNU Ada compiler (documentation) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the documentation in info `format'. +')`'dnl gfdldoc +')`'dnl ada + +ifenabled(`d ',`dnl +for_each_arch(`ifelse(index(` 'd_no_archs` ',` !'arch_deb` '),`-1',` +Package: gdc`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU D compiler (version 2) for the arch_gnu architecture + This is the GNU D compiler for the arch_gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. +')')`'dnl for_each_arch + +Package: gdc`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gdc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU D compiler (version 2) for the host architecture + This is the GNU D compiler for the host architecture, which compiles D on + platforms supported by gcc. It uses the gcc backend to generate optimised + code. + . + This compiler supports D language version 2. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gdc`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gdc`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU D compiler (version 2) for the build architecture + This is the GNU D compiler for the build architecture, which compiles D on + platforms supported by gcc. It uses the gcc backend to generate optimised + code. + . + This compiler supports D language version 2. + . + This is a dependency package. + +Package: gdc`'PV +Architecture: any +Depends: gdc`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${misc:Depends} +Provides: gdc, d-compiler, d-v2-compiler +Replaces: gdc (<< 4.4.6-5) +BUILT_USING`'dnl +Description: GNU D compiler (version 2) + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. +')`'dnl TARGET + +ifenabled(`multilib',` +Package: gdc`'PV-multilib`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: SOFTBASEDEP, gdc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libphobosbiarchdev}${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU D compiler (version 2, multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`libdevphobos',` +Package: libgphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Depends: BASELDEP, libgphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, lib64gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,64), ifdef(`TARGET',`',`lib64z1-dev [!mips !mipsel !mipsn32 !mipsn32el !mipsr6 !mipsr6el !mipsn32r6 !mipsn32r6el],') + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (64bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, lib32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,32), ifdef(`TARGET',`',`lib32z1-dev [!mipsn32 !mipsn32el !mips64 !mips64el !mipsn32r6 !mipsn32r6el !mips64r6 !mips64r6el],') + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (32bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdevn32phobos',` +Package: libn32gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libn32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,n32), ifdef(`TARGET',`',`libn32z1-dev [!mips !mipsel !mips64 !mips64el !mipsr6 !mipsr6el !mips64r6 !mips64r6el],') + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (n32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libn32phobos + +ifenabled(`libdevx32phobos',` +Package: libx32gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libx32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,x32), ifdef(`TARGET',`',`${dep:libx32z},') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (x32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libx32phobos +')`'dnl libdevphobos + +ifenabled(`libphobos',` +Package: libgphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libgphobos68`'LS +Breaks: dub (<< 1.16.0-1~) +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdbg',` +Package: libgphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libgphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libgphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libdbg + +Package: lib64gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdbg',` +Package: lib64gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, lib64gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: lib64gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libdbg + +Package: lib32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdbg',` +Package: lib32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, lib32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: lib32gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libdbg + +ifenabled(`libn32phobos',` +Package: libn32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32phobos`'PHOBOS_V [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdbg',` +Package: libn32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libn32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32phobos`'PHOBOS_V-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libdbg +')`'dnl libn32phobos + +ifenabled(`libx32phobos',` +Package: libx32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdbg',` +Package: libx32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libx32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libx32gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libdbg +')`'dnl libx32phobos + +')`'dnl libphobos +')`'dnl d + +ifenabled(`m2 ',`dnl +for_each_arch(`ifelse(index(` 'm2_no_archs` ',` !'arch_deb` '),`-1',` +Package: gm2`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:gm2cross}, libidevdep(gm2`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 compiler for the arch_gnu architecture + This is the GNU Modula-2 compiler for the arch_gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. +')')`'dnl for_each_arch + +Package: gm2`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gm2`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 compiler for the host architecture + This is the GNU Modula-2 compiler for the host architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gm2`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gm2`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 compiler for the build architecture + This is the GNU Modula-2 compiler for the build architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: gm2`'PV +Architecture: any +Depends: gm2`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gm2cross}, ${misc:Depends} +Provides: gm2, m2-compiler +BUILT_USING`'dnl +Description: GNU Modula-2 compiler (version 2) + This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms + supported by gcc. It uses the gcc backend to generate optimised code. +')`'dnl TARGET + +ifenabled(`multigm2lib',` +Package: gm2`'PV-multilib`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: SOFTBASEDEP, gm2`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgm2biarchdev}${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multigm2lib + +ifenabled(`libdevgm2',` +Package: libgm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Depends: BASELDEP, libgm2`'-GM2_V`'LS (>= ${gm2:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library + This is the Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`multigm2lib',` +Package: lib64gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, lib64gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (64bit development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: lib32gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, lib32gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,32), ifdef(`TARGET',`',`lib32z1-dev,') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (32bit development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdevn32gm2',` +Package: libn32gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libn32gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,n32), ifdef(`TARGET',`',`libn32z1-dev,') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (n32 development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libn32gm2 + +ifenabled(`libdevx32gm2',` +Package: libx32gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libx32gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,x32), ifdef(`TARGET',`',`${dep:libx32z},') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (x32 development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libx32gm2 +')`'dnl multigm2lib +')`'dnl libdevgm2 + +ifenabled(`libgm2',` +Package: libgm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdbg',` +Package: libgm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libgm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +Replaces: libgm268-dbg`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libdbg + +ifenabled(`multigm2lib',` +Package: lib64gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gm268`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdbg',` +Package: lib64gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, lib64gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +Replaces: lib64gm268-dbg`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libdbg + +Package: lib32gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gm268`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdbg',` +Package: lib32gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, lib32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +Replaces: lib32gm268-dbg`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libdbg + +ifenabled(`libn32gm2',` +Package: libn32gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32-gm2`'GM2_V [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdbg',` +Package: libn32gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libn32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32-gm2`'GM2_V-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libdbg +')`'dnl libn32gm2 + +ifenabled(`libx32gm2',` +Package: libx32gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdbg',` +Package: libx32gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libx32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libdbg +')`'dnl libx32gm2 +')`'dnl multigm2lib +')`'dnl libgm2 + +Package: gm2`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: gm2`'PV +Description: Documentation for the GNU Modula-2 compiler (gm2) + Documentation for the GNU Modula-2 compiler in HTML and info `format'. +')`'dnl m2 + +ifenabled(`rust ',` +for_each_arch(`ifelse(index(` 'rs_no_archs` ',` !'arch_deb` '),`-1',` +Package: gccrs`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Rust compiler for the arch_gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! +')')`'dnl for_each_arch + +Package: gccrs`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gccrs`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Rust compiler for the host architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gccrs`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gccrs`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Rust compiler for the build architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + This is a dependency package. + +Package: gccrs`'PV +Architecture: any +Depends: SOFTBASEDEP, gccrs`'PV`'${target:suffix} (= ${gcc:Version}), g++`'PV (>= ${gcc:SoftVersion}), ${misc:Depends} +Provides: gccrs, rust-compiler +BUILT_USING`'dnl +Description: GNU Rust compiler + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! +')`'dnl rust + +ifenabled(`cobol ',`dnl +for_each_arch(`ifelse(index(` 'cobol_no_archs` ',` !'arch_deb` '),`-1',` +Package: gcobol`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:gcobolcross}, + libidevdep(gcobol`'PV-dev,,=), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL compiler for the arch_gnu architecture + This is the GNU COBOL compiler for the arch_gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. +')')`'dnl for_each_arch + +Package: gcobol`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gcobol`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + g++`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL compiler for the host architecture + This is the GNU COBOL compiler for the host architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gcobol`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gcobol`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), g++`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL compiler for the build architecture + This is the GNU COBOL compiler for the build architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: gcobol`'PV +Architecture: any +Depends: gcobol`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gcobolcross}, ${misc:Depends} +Provides: gcobol, cobol-compiler +BUILT_USING`'dnl +Description: GNU COBOL compiler + This is the GNU COBOL compiler, which compiles COBOL on platforms + supported by gcc. It uses the gcc backend to generate optimised code. +')`'dnl TARGET + +ifenabled(`multigcobollib',` +Package: gcobol`'PV-multilib`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: SOFTBASEDEP, gcobol`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgcobolbiarchdev}${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU COBOL compiler, which compiles COBOL on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multigcobollib + +ifenabled(`libdevgcobol',` +Package: libgcobol`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Depends: BASELDEP, libgcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library + This is the COBOL standard library that comes with the gcobol compiler. + +ifenabled(`multigcobollib',` +Package: lib64gcobol`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, lib64gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), + libdevdep(gcc`'PV-dev,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (64bit development files) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +Package: lib32gcobol`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, lib32gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), + libdevdep(gcc`'PV-dev,32), ifdef(`TARGET',`',`lib32z1-dev,') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (32bit development files) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdevn32gcobol',` +Package: libn32gcobol`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libn32gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), + libdevdep(gcc`'PV-dev,n32), ifdef(`TARGET',`',`libn32z1-dev,') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (n32 development files) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libn32gcobol + +ifenabled(`libdevx32gcobol',` +Package: libx32gcobol`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libx32gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), + libdevdep(gcc`'PV-dev,x32), ifdef(`TARGET',`',`${dep:libx32z},') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (x32 development files) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libx32gcobol +')`'dnl multigcobollib +')`'dnl libdevgcobol + +ifenabled(`libgcobol',` +Package: libgcobol`'GCOBOL_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdbg',` +Package: libgcobol`'GCOBOL_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libgcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} +Replaces: libgcobol68-dbg`'LS +BUILT_USING`'dnl +Description: GNU COBOL standard library (debug symbols) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libdbg + +ifenabled(`multigcobollib',` +Package: lib64gcobol`'GCOBOL_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gcobol68`'LS +BUILT_USING`'dnl +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdbg',` +Package: lib64gcobol`'GCOBOL_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, lib64gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} +Replaces: lib64gcobol68-dbg`'LS +BUILT_USING`'dnl +Description: GNU COBOL standard library (debug symbols) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libdbg + +Package: lib32gcobol`'GCOBOL_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gcobol68`'LS +BUILT_USING`'dnl +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdbg',` +Package: lib32gcobol`'GCOBOL_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, lib32gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} +Replaces: lib32gcobol68-dbg`'LS +BUILT_USING`'dnl +Description: GNU COBOL standard library (debug symbols) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libdbg + +ifenabled(`libn32gcobol',` +Package: libn32gcobol`'GCOBOL_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdbg',` +Package: libn32gcobol`'GCOBOL_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libn32gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (debug symbols) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libdbg +')`'dnl libn32gcobol + +ifenabled(`libx32gcobol',` +Package: libx32gcobol`'GCOBOL_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdbg',` +Package: libx32gcobol`'GCOBOL_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libx32gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (debug symbols) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libdbg +')`'dnl libx32gcobol +')`'dnl multigcobollib +')`'dnl libgcobol + +ifenabled(`doccobol',` +Package: gcobol`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: gcobol`'PV +Description: Documentation for the GNU COBOL compiler (gcobol) + Documentation for the GNU COBOL compiler in HTML and info `format'. +')`'dnl doccobol +')`'dnl cobol + + +ifenabled(`algol ',`dnl +for_each_arch(`ifelse(index(` 'algol_no_archs` ',` !'arch_deb` '),`-1',` +Package: ga68`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: SOFTBASEDEP, gcc`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:ga68cross}, + libidevdep(ga68`'PV-dev,,=), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 compiler for the arch_gnu architecture + This is the GNU Algol 68 compiler for the arch_gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. +')')`'dnl for_each_arch + +Package: ga68`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, ga68`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 compiler for the host architecture + This is the GNU Algol 68 compiler for the host architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: ga68`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, ga68`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 compiler for the build architecture + This is the GNU Algol 68 compiler for the build architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: ga68`'PV +Architecture: any +Depends: ga68`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, gcc`'PV (>= ${gcc:SoftVersion}), ${dep:ga68cross}, ${misc:Depends} +Provides: ga68, algol68-compiler +BUILT_USING`'dnl +Description: GNU Algol 68 compiler + This is the GNU Algol 68 compiler, which compiles Algol 68 on platforms + supported by gcc. It uses the gcc backend to generate optimised code. +')`'dnl TARGET + +ifenabled(`multiga68lib',` +Package: ga68`'PV-multilib`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: SOFTBASEDEP, ga68`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libga68biarchdev}${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Algol 68 compiler, which compiles Algol 68 on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multiga68lib + +ifenabled(`libdevga68',` +Package: libga68`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Depends: BASELDEP, libga68-`'GA68_V`'LS (>= ${ga68:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library + This is the Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`multiga68lib',` +Package: lib64ga68`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, lib64ga68-`'GA68_V`'LS (>= ${ga68:Version}), + libdevdep(gcc`'PV-dev,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (64bit development files) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +Package: lib32ga68`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, lib32ga68-`'GA68_V`'LS (>= ${ga68:Version}), + libdevdep(gcc`'PV-dev,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (32bit development files) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdevn32ga68',` +Package: libn32ga68`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libn32ga68-`'GA68_V`'LS (>= ${ga68:Version}), + libdevdep(gcc`'PV-dev,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (n32 development files) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libn32ga68 + +ifenabled(`libdevx32ga68',` +Package: libx32ga68`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libx32ga68-`'GA68_V`'LS (>= ${ga68:Version}), + libdevdep(gcc`'PV-dev,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (x32 development files) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libx32ga68 +')`'dnl multiga68lib +')`'dnl libdevga68 + +ifenabled(`libga68',` +Package: libga68-`'GA68_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdbg',` +Package: libga68-`'GA68_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (debug symbols) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libdbg + +ifenabled(`multiga68lib',` +Package: lib64ga68-`'GA68_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdbg',` +Package: lib64ga68-`'GA68_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, lib64ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (debug symbols) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libdbg + +Package: lib32ga68-`'GA68_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdbg',` +Package: lib32ga68-`'GA68_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, lib32ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (debug symbols) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libdbg + +ifenabled(`libn32ga68',` +Package: libn32ga68-`'GA68_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdbg',` +Package: libn32ga68-`'GA68_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libn32ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (debug symbols) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libdbg +')`'dnl libn32ga68 + +ifenabled(`libx32ga68',` +Package: libx32ga68-`'GA68_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdbg',` +Package: libx32ga68-`'GA68_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libx32ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (debug symbols) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libdbg +')`'dnl libx32ga68 +')`'dnl multiga68lib +')`'dnl libga68 + +Package: ga68`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: ga68`'PV +Description: Documentation for the GNU Algol 68 compiler (ga68) + Documentation for the GNU Algol 68 compiler in HTML and info `format'. +')`'dnl algol + + +ifdef(`TARGET',`',`dnl +ifenabled(`libs',` +#Package: gcc`'PV-soft-float +#Architecture: arm armel armhf +#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} +#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float +#BUILT_USING`'dnl +#Description: GCC soft-floating-point gcc libraries (ARM) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. +')`'dnl commonlibs +')`'dnl + +ifenabled(`cdev',` +ifdef(`TARGET', `', ` +ifenabled(`gfdldoc',` +Package: gcc`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: gcc-docs (<< 2.95.2) +Replaces: gcc (<=2.7.2.3-4.3), gcc-docs (<< 2.95.2) +Description: Documentation for the GNU compilers (gcc, gobjc, g++) + Documentation for the GNU compilers in info `format'. +')`'dnl gfdldoc +')`'dnl native +')`'dnl cdev + +ifenabled(`olnvptx',` +Package: gcc`'PV-offload-nvptx +Architecture: nvptx_archs +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, + nvptx-tools, libgomp-plugin-nvptx`'GOMP_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC offloading compiler to NVPTX + The package provides offloading support for NVidia PTX. OpenMP and OpenACC + programs linked with -fopenmp will by default add PTX code into the binaries, + which can be offloaded to NVidia PTX capable devices if available. + +ifenabled(`gompnvptx',` +Package: libgomp-plugin-nvptx`'GOMP_SO +Architecture: nvptx_archs +Multi-Arch: same +Section: libs +Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} +Suggests: libcuda1 [amd64] | libnvidia-tesla-cuda1 [amd64 ppc64el] | libcuda1-any +BUILT_USING`'dnl +Description: GCC OpenMP v4.5 plugin for offloading to NVPTX + This package contains libgomp plugin for offloading to NVidia + PTX. The plugin needs libcuda.so.1 shared library that has to be + installed separately. +')`'dnl gompnvptx +')`'dnl olnvptx + +ifenabled(`olgcn',` +Package: gcc`'PV-offload-amdgcn +Architecture: gcn_archs +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, + libgomp-plugin-amdgcn`'GOMP_SO (>= ${gcc:Version}), + AMDGCN_TOOLS_DEP ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC offloading compiler to GCN + The package provides offloading support for AMD GCN. OpenMP and OpenACC + programs linked with -fopenmp will by default add GCN code into the binaries, + which can be offloaded to AMD GCN capable devices if available. + +ifenabled(`gompgcn',` +Package: libgomp-plugin-amdgcn`'GOMP_SO +Architecture: gcn_archs +Multi-Arch: same +Section: libs +Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP v4.5 plugin for offloading to GCN + This package contains libgomp plugin for offloading to AMD GCN. +')`'dnl gompgcn +')`'dnl olgcn + +ifenabled(`olhsa',` +ifenabled(`gomphsa',` +Package: libgomp-plugin-hsa`'GOMP_SO +Architecture: amd64 +Multi-Arch: same +Section: libs +Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP v4.5 plugin for offloading to HSA + This package contains libgomp plugin for offloading to HSA. +')`'dnl gomphsa +')`'dnl olhsa + +ifdef(`TARGET',`',`dnl +ifenabled(`libnof',` +#Package: gcc`'PV-nof +#Architecture: powerpc +#Depends: BASEDEP, ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV (= ${gcc:Version})'), ${misc:Depends} +#Conflicts: gcc-3.2-nof +#BUILT_USING`'dnl +#Description: GCC no-floating-point gcc libraries (powerpc) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. +')`'dnl libnof +')`'dnl + +ifenabled(`source',` +Package: gcc`'PV-source +Multi-Arch: foreign +Architecture: all +Depends: make, quilt, patchutils, sharutils, gawk, lsb-release, time, AUTO_BUILD_DEP + ${misc:Depends} +Description: Source of the GNU Compiler Collection + This package contains the sources and patches which are needed to + build the GNU Compiler Collection (GCC). +')`'dnl source +dnl +')')`'dnl regexp SRCNAME +dnl last line in file diff --git a/copyright b/copyright new file mode 100644 index 0000000..f2bf22f --- /dev/null +++ b/copyright @@ -0,0 +1,1638 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, D, Fortran 95, Go, Objective-C, +Objective-C++, and Modula-2 compilers, documentation, and support +libraries. In addition, Debian provides the gm2 compiler, either in +the same source package, or built from a separate same source package. +Packaging is done by the Debian GCC Maintainers +, with sources obtained from: + + ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) + https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git (for prereleases) + ftp://sourceware.org/pub/newlib/ (for newlib) + +The current gcc-15 source package is taken from the git gcc-15-branch. + +Changes: See changelog.Debian.gz + +Debian splits the GNU Compiler Collection into packages for each language, +library, and documentation as follows: + +Language Compiler package Library package Documentation +--------------------------------------------------------------------------- +Ada gnat-15 libgnat-15 gnat-15-doc +Algol-68 ga68-15 libga68-1 libga68-15-doc +C gcc-15 gcc-15-doc +C++ g++-15 libstdc++6 libstdc++6-15-doc +COBOL gcobol-15 libgcobol1 +D gdc-15 libgphobos6 +Fortran 95 gfortran-15 libgfortran5 gfortran-15-doc +Go gccgo-15 libgo0 +Objective C gobjc-15 libobjc4 +Objective C++ gobjc++-15 +Modula-2 gm2-15 libgm2 libgm2-15-doc +Rust gccrs-15 + +For some language run-time libraries, Debian provides source files, +development files, debugging symbols and libraries containing position- +independent code in separate packages: + +Language Sources Development Debugging Position-Independent +------------------------------------------------------------------------------ +C++ libstdc++6-15-dbg libstdc++6-15-pic +D libphobos-15-dev + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-15-base Base files common to all compilers +gcc-15-soft-float Software floating point (ARM only) +gcc-15-source The sources with patches + +Ada: +libgnat-util15-dev, libgnat-util15 GNAT version library + +C: +cpp-15, cpp-15-doc GNU C Preprocessor +libssp0-dev, libssp0 GCC stack smashing protection library +libquadmath0 Math routines for the __float128 type +fixincludes Fix non-ANSI header files + +C, C++ and Fortran 95: +libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support library +libitm1-dev, libitm1 GNU Transactional Memory Library + +Biarch support: On some 64-bit platforms which can also run 32-bit code, +Debian provides additional packages containing 32-bit versions of some +libraries. These packages have names beginning with 'lib32' instead of +'lib', for example lib32stdc++6. Similarly, on some 32-bit platforms which +can also run 64-bit code, Debian provides additional packages with names +beginning with 'lib64' instead of 'lib'. These packages contain 64-bit +versions of the libraries. (At this time, not all platforms and not all +libraries support biarch.) The license terms for these lib32 or lib64 +packages are identical to the ones for the lib packages. + + +COPYRIGHT STATEMENTS AND LICENSING TERMS + + +GCC is Copyright (C) 1986-2025 Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Files that have exception clauses are licensed under the terms of the +GNU General Public License; either version 3, or (at your option) any +later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 3 of this +license in `/usr/share/common-licenses/GPL-3'. + +The following runtime libraries are licensed under the terms of the +GNU General Public License (v3 or later) with version 3.1 of the GCC +Runtime Library Exception (included in this file): + + - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*, + gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h, + gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c, + gcc/tsystem.h, gcc/typeclass.h). + - libatomic + - libdecnumber + - libgm2 + - libgomp + - libgrust + - libitm + - libssp + - libstdc++-v3 + - libobjc + - libgfortran + - The libgnat-15 Ada support library and libgnat-util15 library. + - Various config files in gcc/config/ used in runtime libraries. + - libvtv + +The libbacktrace library is licensed under the following terms: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + (1) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + (2) Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + (3) The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are +licensed under the following terms: + +Copyright (c) 2009-2019 by the LLVM contributors. + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The libffi library is licensed under the following terms: + + libffi - Copyright (c) 1996-2011 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + +The documentation is licensed under the GNU Free Documentation License (v1.2). +On Debian GNU/Linux systems, the complete text of this license is in +`/usr/share/common-licenses/GFDL-1.2'. + + +GCC RUNTIME LIBRARY EXCEPTION + +Version 3.1, 31 March 2009 + +Copyright (C) 2009 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This GCC Runtime Library Exception ("Exception") is an additional +permission under section 7 of the GNU General Public License, version +3 ("GPLv3"). It applies to a given file (the "Runtime Library") that +bears a notice placed by the copyright holder of the file stating that +the file is governed by GPLv3 along with this Exception. + +When you use GCC to compile a program, GCC may combine portions of +certain GCC header files and runtime libraries with the compiled +program. The purpose of this Exception is to allow compilation of +non-GPL (including proprietary) programs to use, in this way, the +header files and runtime libraries covered by this Exception. + +0. Definitions. + +A file is an "Independent Module" if it either requires the Runtime +Library for execution after a Compilation Process, or makes use of an +interface provided by the Runtime Library, but is not otherwise based +on the Runtime Library. + +"GCC" means a version of the GNU Compiler Collection, with or without +modifications, governed by version 3 (or a specified later version) of +the GNU General Public License (GPL) with the option of using any +subsequent versions published by the FSF. + +"GPL-compatible Software" is software whose conditions of propagation, +modification and use would permit combination with GCC in accord with +the license of GCC. + +"Target Code" refers to output from any compiler for a real or virtual +target processor architecture, in executable form or suitable for +input to an assembler, loader, linker and/or execution +phase. Notwithstanding that, Target Code does not include data in any +format that is used as a compiler intermediate representation, or used +for producing a compiler intermediate representation. + +The "Compilation Process" transforms code entirely represented in +non-intermediate languages designed for human-written code, and/or in +Java Virtual Machine byte code, into Target Code. Thus, for example, +use of source code generators and preprocessors need not be considered +part of the Compilation Process, since the Compilation Process can be +understood as starting with the output of the generators or +preprocessors. + +A Compilation Process is "Eligible" if it is done using GCC, alone or +with other GPL-compatible software, or if it is done without using any +work based on GCC. For example, using non-GPL-compatible Software to +optimize any GCC intermediate representations would not qualify as an +Eligible Compilation Process. + +1. Grant of Additional Permission. + +You have permission to propagate a work of Target Code formed by +combining the Runtime Library with Independent Modules, even if such +propagation would otherwise violate the terms of GPLv3, provided that +all Target Code was generated by Eligible Compilation Processes. You +may then convey such a combination under terms of your choice, +consistent with the licensing of the Independent Modules. + +2. No Weakening of GCC Copyleft. + +The availability of this Exception does not imply any general +presumption that third-party software is unaffected by the copyleft +requirements of the license of GCC. + + +libquadmath/ + Copyright (C) 1992-2018 Free Software Foundation, Inc. + + Written by Francois-Xavier Coudert + Written by Tobias Burnus + Contributions by Ulrich Drepper + Conversion to long double by Jakub Jelinek + + This file is part of the libquadmath library. + Libquadmath is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + Libiberty is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + +libquadmath/math: + +atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c: + Copyright 2001 by Stephen L. Moshier + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c: + Changes for 128-bit __float128 are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the following terms: + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/ + +cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c, +sinq_kernel.c, truncq.c: + Copyright (C) 1997, 1999 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/isinfq.c: + Written by J.T. Conklin . + Change for long double by Jakub Jelinek + Public domain. + +libquadmath/math/ + llroundq.c, lroundq.c, tgammaq.c: + + Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1997 and + Jakub Jelinek , 1999. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/log10q.c: + Cephes Math Library Release 2.2: January, 1991 + Copyright 1984, 1991 by Stephen L. Moshier + Adapted for glibc November, 2001 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/ + acoshq.c, acosq.c, asinhq.c, asinq.c, atan2q.c, atanhq.c, ceilq.c, + copysignq.c, coshq.c, cosq.c, erfq.c, fabsq.c, finiteq.c, floorq.c, + fmodq.c, frexpq.c, hypotq.c, ilogbq.c, isnanq.c, jnq.c, ldexpq.c, + logbq.c, modfq.c, nearbyintq.c, nextafterq.c, powq.c, remainderq.c, + rem_pio2q.c, rintq.c, scalblnq.c, scalbnq.c, sinhq.c, sinq.c, + tanhq.c, tanq.c, tanq_kernel.c: + + Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + . + Developed at SunPro, a Sun Microsystems, Inc. business. + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. + +libquadmath/math/ + acosq.c, asinq.c, coshq.c, erfq.c, jnq.c, powq.c, sinhq.c, tanq_kernel.c: + + In addition to the Sun Microsystems copyright: + + Long double expansions are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the LGPL 2.1 or later. + + +gcc/go/gofrontend, libgo: + +Copyright (c) 2009-2023 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +D: +gdc-15 GNU D Compiler +libphobos-15-dev D standard runtime library + +The D source package is made up of the following components. + +The D front-end for GCC: + - d/* + +Copyright (C) 2004-2007 David Friedman +Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 +Copyright (C) 2015-2024 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 2 of this +license in `/usr/share/common-licenses/GPL-3'. + +The DMD Compiler implementation of the D programming language: + - d/dmd/* + +Copyright (C) 1999-2023 by The D Language Foundation, All Rights Reserved +All Rights Reserved +written by Walter Bright +http://www.digitalmars.com +License for redistribution is by either the Artistic License or +the GNU General Public License (v1). + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', the Artistic +license in `/usr/share/common-licenses/Artistic'. + + +The Zlib data compression library: + - zlib/* + + (C) 1995-2016 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +The Phobos standard runtime library: + - libphobos/* + +Unless otherwise marked within the file, each file in the source +is under the following licenses: + +Copyright (C) 2004-2022 by Digital Mars, www.digitalmars.com +Written by Walter Bright +Copyright (C) 2018-2023, The D Language Foundation + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, in both source and binary form, subject to the following +restrictions: + + o The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + o Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + o This notice may not be removed or altered from any source + distribution. + +By plainly marking modifications, something along the lines of adding to each +file that has been changed a "Modified by Foo Bar" line +underneath the "Written by" line would be adequate. + +gcc/m2: +gcc/m2/gm2-libiberty: +gcc/m2/mc-boot/: +gcc/m2/mc-boot-ch/: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +gcc/m2/**/*.texi: +Copyright (C) 2000-2024 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + +gcc/m2/gm2-coroutines: +gcc/m2/gm2-libs: +gcc/m2/gm2-libs-min: +gcc/m2/gm2-libs-pim: +gcc/m2/gm2-libs-ch: +Copyright (C) 2002-2024 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +gcc/m2/gm2-libs-iso/: +This has a mix of licenses, most as GPL-3+ plus GCC Runtime Library +Exception, version 3.1. + +gcc/m2/gm2-libs-iso/*.def: +Library module defined by the International Standard +Information technology - programming languages +BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. + +Copyright ISO/IEC (International Organization for Standardization +and International Electrotechnical Commission) 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +gcc/m2/examples: +Copyright (C) 2005-2024 Free Software Foundation, Inc. +Mix of LGPL-2.1 and GPL-3.0. + +gcc/m2/images: +GPL-3+ + +gcc/m2/el/gm2-mode.el: +;; Everyone is granted permission to copy, modify and redistribute +;; GNU Emacs, but only under the conditions described in the +;; GNU Emacs General Public License. A copy of this license is +;; supposed to have been given to you along with GNU Emacs so you +;; can know your rights and responsibilities. It should be in a +;; file named COPYING. Among other things, the copyright notice +;; and this notice must be preserved on all copies. + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +Contributed by Gaius Mulley . +Mix of GPL-3 and LGPL-2.1. + +gcc/testsuite/gm2/: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Mix of GPL-2+ and GPL-3+ + +libgm2: + +libgm2/libiso/: +libgm2/libpim/: +libgm2/liblog/: +libgm2/libcor/: +libgm2/libmin/: +Copyright (C) 2002-2024 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +newlib-X.Y.Z/ (only for the offload compilers): + +Upstream Authors: +newlib@sources.redhat.com +Jeff Johnston +Tom Fitzsimmons + +The newlib subdirectory is a collection of software from several sources. +Each file may have its own copyright/license that is embedded in the source +file. + +This list documents those licenses which are more restrictive than +a BSD-like license or require the copyright notice +to be duplicated in documentation and/or other materials associated with +the distribution. Certain licenses documented here only apply to +specific targets. Certain clauses only apply if you are building the +code as part of your binary. + +Note that this list may omit certain licenses that +only pertain to the copying/modifying of the individual source code. +If you are distributing the source code, then you do not need to +worry about these omitted licenses, so long as you do not modify the +copyright information already in place. + +Parts of this work are licensed under the terms of the GNU General +Public License. On Debian systems, the complete text of this license +can be found in /usr/share/common-licenses/GPL. + +Parts of this work are licensed under the terms of the GNU Library +General Public License. On Debian systems, the complete text of this +license be found in /usr/share/common-licenses/LGPL. + +(1) University of California, Berkeley + +[1a] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +and other materials related to such distribution and use +acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1b] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +advertising materials, and other materials related to such +distribution and use acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1c] + +Copyright (c) 1981, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 +The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1d] + +Copyright (c) 1988, 1990, 1993 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1e] + +Copyright (c) 1982, 1986, 1989, 1991, 1993, 1994 +The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1f] + +Copyright (c) 1987, 1988, 2000 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that: (1) source distributions retain this entire copyright +notice and comment, and (2) distributions including binaries display +the following acknowledgement: ``This product includes software +developed by the University of California, Berkeley and its contributors'' +in the documentation or other materials provided with the distribution +and in all advertising materials mentioning features or use of this +software. Neither the name of the University nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +------------------------------------------------------------- + Please note that in some of the above alternate licenses, there is a + statement regarding that acknowledgement must be made in any + advertising materials for products using the code. This restriction + no longer applies due to the following license change: + + ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change + + In some cases the defunct clause has been removed in modified newlib code and + in some cases, the clause has been left as-is. +------------------------------------------------------------- + +(2) Cygwin (cygwin targets only) + +Copyright 2001 Red Hat, Inc. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. + +(3) David M. Gay at AT&T + +The author of this software is David M. Gay. + +Copyright (c) 1991 by AT&T. + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY +REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY +OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(4) Advanced Micro Devices + +Copyright 1989, 1990 Advanced Micro Devices, Inc. + +This software is the property of Advanced Micro Devices, Inc (AMD) which +specifically grants the user the right to modify, use and distribute this +software provided this notice is not removed or altered. All other rights +are reserved by AMD. + +AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS +SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL +DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR +USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the 29K Technical Support Center at +800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or +0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. + +Advanced Micro Devices, Inc. +29K Support Products +Mail Stop 573 +5900 E. Ben White Blvd. +Austin, TX 78741 +800-292-9263 + +(5) C.W. Sandmann + +Copyright (C) 1993 C.W. Sandmann + +This file may be freely distributed as long as the author's name remains. + +(6) Eric Backus + +(C) Copyright 1992 Eric Backus + +This software may be used freely so long as this copyright notice is +left intact. There is no warrantee on this software. + +(7) Sun Microsystems + +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +(8) Hewlett Packard + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(9) Hans-Peter Nilsson + +Copyright (C) 2001 Hans-Peter Nilsson + +Permission to use, copy, modify, and distribute this software is +freely granted, provided that the above copyright notice, this notice +and the following disclaimer are preserved with no changes. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. + +(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only) + +Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +(11) Christopher G. Demetriou + +Copyright (c) 2001 Christopher G. Demetriou +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(12) SuperH, Inc. + +Copyright 2002 SuperH, Inc. All rights reserved + +This software is the property of SuperH, Inc (SuperH) which specifically +grants the user the right to modify, use and distribute this software +provided this notice is not removed or altered. All other rights are +reserved by SuperH. + +SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO +THIS SOFTWARE. IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM +THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the SuperH Support Center via +e-mail at softwaresupport@superh.com . + +SuperH, Inc. +405 River Oaks Parkway +San Jose +CA 95134 +USA + +(13) Royal Institute of Technology + +Copyright (c) 1999 Kungliga Tekniska Hgskolan +(Royal Institute of Technology, Stockholm, Sweden). +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of KTH nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(14) Alexey Zelkin + +Copyright (c) 2000, 2001 Alexey Zelkin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(15) Andrey A. Chernov + +Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(16) FreeBSD + +Copyright (c) 1997-2002 FreeBSD Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(17) S. L. Moshier + +Author: S. L. Moshier. + +Copyright (c) 1984,2000 S.L. Moshier + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION +OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS +SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(18) Citrus Project + +Copyright (c)1999 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(19) Todd C. Miller + +Copyright (c) 1998 Todd C. Miller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(20) DJ Delorie (i386) + +Copyright (C) 1991 DJ Delorie +All rights reserved. + +Redistribution and use in source and binary forms is permitted +provided that the above copyright notice and following paragraph are +duplicated in all such forms. + +This file is distributed WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +(21) Free Software Foundation LGPL License (*-linux* targets only) + + Copyright (C) 1990-2025 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Mark Kettenis , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with the GNU C Library; if not, see https://www.gnu.org/licenses/. + +(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only) + +Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Library General Public License for more details. + +(23) Intel (i960) + +Copyright (c) 1993 Intel Corporation + +Intel hereby grants you permission to copy, modify, and distribute this +software and its documentation. Intel grants this permission provided +that the above copyright notice appears in all copies and that both the +copyright notice and this permission notice appear in supporting +documentation. In addition, Intel grants this permission provided that +you prominently mark as "not part of the original" any modifications +made to this software or documentation, and that the name of Intel +Corporation not be used in advertising or publicity pertaining to +distribution of the software or the documentation without specific, +written prior permission. + +Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR +IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or +representations regarding the use of, or the results of the use of, +the software and documentation in terms of correctness, accuracy, +reliability, currentness, or otherwise; and you rely on the software, +documentation and results solely at your own risk. + +IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, +LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES +OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM +PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. + +(24) Hewlett-Packard (hppa targets only) + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(25) Henry Spencer (only *-linux targets) + +Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. +This software is not subject to any license of the American Telephone +and Telegraph Company or of the Regents of the University of California. + +Permission is granted to anyone to use this software for any purpose on +any computer system, and to alter it and redistribute it, subject +to the following restrictions: + +1. The author is not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + +4. This notice may not be removed or altered. + +(26) Mike Barcroft + +Copyright (c) 2001 Mike Barcroft +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(27) Konstantin Chuguev (--enable-newlib-iconv) + +Copyright (c) 1999, 2000 + Konstantin Chuguev. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + + iconv (Charset Conversion Library) v2.0 + +(27) Artem Bityuckiy (--enable-newlib-iconv) + +Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation. +Rights transferred to Franklin Electronic Publishers. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(28) Red Hat Incorporated + +Unless otherwise stated in each remaining newlib file, the remaining +files in the newlib subdirectory default to the following copyright. +It should be noted that Red Hat Incorporated now owns copyrights +belonging to Cygnus Solutions and Cygnus Support. + +Copyright (c) 1994, 1997, 2001, 2002, 2003, 2004 Red Hat Incorporated. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +contrib/unicode: + +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + + Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF +online code charts under the directory http://www.unicode.org/Public/. +Software includes any source code published in the Unicode Standard or under +the directories http://www.unicode.org/Public/, +http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. + + NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES +("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND +AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF +YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA +FILES OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright © 1991-2013 Unicode, Inc. All rights reserved. Distributed under +the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a +copy of the Unicode data files and any associated documentation (the "Data +Files") or Unicode software and any associated documentation (the "Software") +to deal in the Data Files or Software without restriction, including without +limitation the rights to use, copy, modify, merge, publish, distribute, and/or +sell copies of the Data Files or Software, and to permit persons to whom the +Data Files or Software are furnished to do so, provided that (a) the above +copyright notice(s) and this permission notice appear with all copies of the +Data Files or Software, (b) both the above copyright notice(s) and this +permission notice appear in associated documentation, and (c) there is clear +notice in each modified Data File or in the Software as well as in the +documentation associated with the Data File(s) or Software that the data or +software has been modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN +THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE +DATA FILES OR SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written authorization +of the copyright holder. + +contrib/unicode/from_glibc: + +# Copyright (C) 2014-2019 Free Software Foundation, Inc. +# This file is part of the GNU C Library. +# +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, see +# . + +gcc/cobol, libgcobol: + + * Copyright (c) 2021-2024 Symas Corporation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of the Symas Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +gcc/algol68 + + Copyright (C) 2025 Jose E. Marchesi. + + This file is NOT part of GCC. + + GCC is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + You should have received a copy of the GNU General Public License along with + GCC; see the file COPYING3. If not see . + +libga68: + + Copyright (C) 2025 Jose E. Marchesi. + + This file is NOT part of GCC. + + GCC is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + Under Section 7 of GPL version 3, you are granted additional permissions + described in the GCC Runtime Library Exception, version 3.1, as published by + the Free Software Foundation. + + You should have received a copy of the GNU General Public License and a copy + of the GCC Runtime Library Exception along with this program; see the files + COPYING3 and COPYING.RUNTIME respectively. If not, see + . + +gcc/rust/checks/errors/borrowck/ffi-polonius/vendor/ +libgrust/libformat_parser/vendor/ + + Vendored crates are authored by "The Rust Project Developers", + licensed under the Apache-2.0/MIT licenses. + + MIT License: + + Permission is hereby granted, free of charge, to any + person obtaining a copy of this software and associated + documentation files (the "Software"), to deal in the + Software without restriction, including without + limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software + is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice + shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF + ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED + TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT + SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +On Debian GNU/Linux systems, the complete text of Apache 2.0 License +is in `/usr/share/common-licenses/Apache-2.0'. diff --git a/copyright.in b/copyright.in new file mode 100644 index 0000000..ee2a755 --- /dev/null +++ b/copyright.in @@ -0,0 +1,1638 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, D, Fortran 95, Go, Objective-C, +Objective-C++, and Modula-2 compilers, documentation, and support +libraries. In addition, Debian provides the gm2 compiler, either in +the same source package, or built from a separate same source package. +Packaging is done by the Debian GCC Maintainers +, with sources obtained from: + + ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) + https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git (for prereleases) + ftp://sourceware.org/pub/newlib/ (for newlib) + +The current gcc-@BV@ source package is taken from the git @SVN_BRANCH@. + +Changes: See changelog.Debian.gz + +Debian splits the GNU Compiler Collection into packages for each language, +library, and documentation as follows: + +Language Compiler package Library package Documentation +--------------------------------------------------------------------------- +Ada gnat-@BV@ libgnat-@BV@ gnat-@BV@-doc +Algol-68 ga68-@BV@ libga68-1 libga68-@BV@-doc +C gcc-@BV@ gcc-@BV@-doc +C++ g++-@BV@ libstdc++6 libstdc++6-@BV@-doc +COBOL gcobol-@BV@ libgcobol1 +D gdc-@BV@ libgphobos6 +Fortran 95 gfortran-@BV@ libgfortran5 gfortran-@BV@-doc +Go gccgo-@BV@ libgo0 +Objective C gobjc-@BV@ libobjc4 +Objective C++ gobjc++-@BV@ +Modula-2 gm2-@BV@ libgm2 libgm2-@BV@-doc +Rust gccrs-@BV@ + +For some language run-time libraries, Debian provides source files, +development files, debugging symbols and libraries containing position- +independent code in separate packages: + +Language Sources Development Debugging Position-Independent +------------------------------------------------------------------------------ +C++ libstdc++6-@BV@-dbg libstdc++6-@BV@-pic +D libphobos-@BV@-dev + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-@BV@-base Base files common to all compilers +gcc-@BV@-soft-float Software floating point (ARM only) +gcc-@BV@-source The sources with patches + +Ada: +libgnat-util@BV@-dev, libgnat-util@BV@ GNAT version library + +C: +cpp-@BV@, cpp-@BV@-doc GNU C Preprocessor +libssp0-dev, libssp0 GCC stack smashing protection library +libquadmath0 Math routines for the __float128 type +fixincludes Fix non-ANSI header files + +C, C++ and Fortran 95: +libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support library +libitm1-dev, libitm1 GNU Transactional Memory Library + +Biarch support: On some 64-bit platforms which can also run 32-bit code, +Debian provides additional packages containing 32-bit versions of some +libraries. These packages have names beginning with 'lib32' instead of +'lib', for example lib32stdc++6. Similarly, on some 32-bit platforms which +can also run 64-bit code, Debian provides additional packages with names +beginning with 'lib64' instead of 'lib'. These packages contain 64-bit +versions of the libraries. (At this time, not all platforms and not all +libraries support biarch.) The license terms for these lib32 or lib64 +packages are identical to the ones for the lib packages. + + +COPYRIGHT STATEMENTS AND LICENSING TERMS + + +GCC is Copyright (C) 1986-2025 Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Files that have exception clauses are licensed under the terms of the +GNU General Public License; either version 3, or (at your option) any +later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 3 of this +license in `/usr/share/common-licenses/GPL-3'. + +The following runtime libraries are licensed under the terms of the +GNU General Public License (v3 or later) with version 3.1 of the GCC +Runtime Library Exception (included in this file): + + - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*, + gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h, + gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c, + gcc/tsystem.h, gcc/typeclass.h). + - libatomic + - libdecnumber + - libgm2 + - libgomp + - libgrust + - libitm + - libssp + - libstdc++-v3 + - libobjc + - libgfortran + - The libgnat-@BV@ Ada support library and libgnat-util@BV@ library. + - Various config files in gcc/config/ used in runtime libraries. + - libvtv + +The libbacktrace library is licensed under the following terms: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + (1) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + (2) Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + (3) The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are +licensed under the following terms: + +Copyright (c) 2009-2019 by the LLVM contributors. + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The libffi library is licensed under the following terms: + + libffi - Copyright (c) 1996-2011 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + +The documentation is licensed under the GNU Free Documentation License (v1.2). +On Debian GNU/Linux systems, the complete text of this license is in +`/usr/share/common-licenses/GFDL-1.2'. + + +GCC RUNTIME LIBRARY EXCEPTION + +Version 3.1, 31 March 2009 + +Copyright (C) 2009 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This GCC Runtime Library Exception ("Exception") is an additional +permission under section 7 of the GNU General Public License, version +3 ("GPLv3"). It applies to a given file (the "Runtime Library") that +bears a notice placed by the copyright holder of the file stating that +the file is governed by GPLv3 along with this Exception. + +When you use GCC to compile a program, GCC may combine portions of +certain GCC header files and runtime libraries with the compiled +program. The purpose of this Exception is to allow compilation of +non-GPL (including proprietary) programs to use, in this way, the +header files and runtime libraries covered by this Exception. + +0. Definitions. + +A file is an "Independent Module" if it either requires the Runtime +Library for execution after a Compilation Process, or makes use of an +interface provided by the Runtime Library, but is not otherwise based +on the Runtime Library. + +"GCC" means a version of the GNU Compiler Collection, with or without +modifications, governed by version 3 (or a specified later version) of +the GNU General Public License (GPL) with the option of using any +subsequent versions published by the FSF. + +"GPL-compatible Software" is software whose conditions of propagation, +modification and use would permit combination with GCC in accord with +the license of GCC. + +"Target Code" refers to output from any compiler for a real or virtual +target processor architecture, in executable form or suitable for +input to an assembler, loader, linker and/or execution +phase. Notwithstanding that, Target Code does not include data in any +format that is used as a compiler intermediate representation, or used +for producing a compiler intermediate representation. + +The "Compilation Process" transforms code entirely represented in +non-intermediate languages designed for human-written code, and/or in +Java Virtual Machine byte code, into Target Code. Thus, for example, +use of source code generators and preprocessors need not be considered +part of the Compilation Process, since the Compilation Process can be +understood as starting with the output of the generators or +preprocessors. + +A Compilation Process is "Eligible" if it is done using GCC, alone or +with other GPL-compatible software, or if it is done without using any +work based on GCC. For example, using non-GPL-compatible Software to +optimize any GCC intermediate representations would not qualify as an +Eligible Compilation Process. + +1. Grant of Additional Permission. + +You have permission to propagate a work of Target Code formed by +combining the Runtime Library with Independent Modules, even if such +propagation would otherwise violate the terms of GPLv3, provided that +all Target Code was generated by Eligible Compilation Processes. You +may then convey such a combination under terms of your choice, +consistent with the licensing of the Independent Modules. + +2. No Weakening of GCC Copyleft. + +The availability of this Exception does not imply any general +presumption that third-party software is unaffected by the copyleft +requirements of the license of GCC. + + +libquadmath/ + Copyright (C) 1992-2018 Free Software Foundation, Inc. + + Written by Francois-Xavier Coudert + Written by Tobias Burnus + Contributions by Ulrich Drepper + Conversion to long double by Jakub Jelinek + + This file is part of the libquadmath library. + Libquadmath is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + Libiberty is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + +libquadmath/math: + +atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c: + Copyright 2001 by Stephen L. Moshier + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c: + Changes for 128-bit __float128 are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the following terms: + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/ + +cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c, +sinq_kernel.c, truncq.c: + Copyright (C) 1997, 1999 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/isinfq.c: + Written by J.T. Conklin . + Change for long double by Jakub Jelinek + Public domain. + +libquadmath/math/ + llroundq.c, lroundq.c, tgammaq.c: + + Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1997 and + Jakub Jelinek , 1999. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/log10q.c: + Cephes Math Library Release 2.2: January, 1991 + Copyright 1984, 1991 by Stephen L. Moshier + Adapted for glibc November, 2001 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/ + acoshq.c, acosq.c, asinhq.c, asinq.c, atan2q.c, atanhq.c, ceilq.c, + copysignq.c, coshq.c, cosq.c, erfq.c, fabsq.c, finiteq.c, floorq.c, + fmodq.c, frexpq.c, hypotq.c, ilogbq.c, isnanq.c, jnq.c, ldexpq.c, + logbq.c, modfq.c, nearbyintq.c, nextafterq.c, powq.c, remainderq.c, + rem_pio2q.c, rintq.c, scalblnq.c, scalbnq.c, sinhq.c, sinq.c, + tanhq.c, tanq.c, tanq_kernel.c: + + Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + . + Developed at SunPro, a Sun Microsystems, Inc. business. + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. + +libquadmath/math/ + acosq.c, asinq.c, coshq.c, erfq.c, jnq.c, powq.c, sinhq.c, tanq_kernel.c: + + In addition to the Sun Microsystems copyright: + + Long double expansions are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the LGPL 2.1 or later. + + +gcc/go/gofrontend, libgo: + +Copyright (c) 2009-2023 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +D: +gdc-@BV@ GNU D Compiler +libphobos-@BV@-dev D standard runtime library + +The D source package is made up of the following components. + +The D front-end for GCC: + - d/* + +Copyright (C) 2004-2007 David Friedman +Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 +Copyright (C) 2015-2024 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 2 of this +license in `/usr/share/common-licenses/GPL-3'. + +The DMD Compiler implementation of the D programming language: + - d/dmd/* + +Copyright (C) 1999-2023 by The D Language Foundation, All Rights Reserved +All Rights Reserved +written by Walter Bright +http://www.digitalmars.com +License for redistribution is by either the Artistic License or +the GNU General Public License (v1). + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', the Artistic +license in `/usr/share/common-licenses/Artistic'. + + +The Zlib data compression library: + - zlib/* + + (C) 1995-2016 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +The Phobos standard runtime library: + - libphobos/* + +Unless otherwise marked within the file, each file in the source +is under the following licenses: + +Copyright (C) 2004-2022 by Digital Mars, www.digitalmars.com +Written by Walter Bright +Copyright (C) 2018-2023, The D Language Foundation + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, in both source and binary form, subject to the following +restrictions: + + o The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + o Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + o This notice may not be removed or altered from any source + distribution. + +By plainly marking modifications, something along the lines of adding to each +file that has been changed a "Modified by Foo Bar" line +underneath the "Written by" line would be adequate. + +gcc/m2: +gcc/m2/gm2-libiberty: +gcc/m2/mc-boot/: +gcc/m2/mc-boot-ch/: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +gcc/m2/**/*.texi: +Copyright (C) 2000-2024 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + +gcc/m2/gm2-coroutines: +gcc/m2/gm2-libs: +gcc/m2/gm2-libs-min: +gcc/m2/gm2-libs-pim: +gcc/m2/gm2-libs-ch: +Copyright (C) 2002-2024 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +gcc/m2/gm2-libs-iso/: +This has a mix of licenses, most as GPL-3+ plus GCC Runtime Library +Exception, version 3.1. + +gcc/m2/gm2-libs-iso/*.def: +Library module defined by the International Standard +Information technology - programming languages +BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. + +Copyright ISO/IEC (International Organization for Standardization +and International Electrotechnical Commission) 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +gcc/m2/examples: +Copyright (C) 2005-2024 Free Software Foundation, Inc. +Mix of LGPL-2.1 and GPL-3.0. + +gcc/m2/images: +GPL-3+ + +gcc/m2/el/gm2-mode.el: +;; Everyone is granted permission to copy, modify and redistribute +;; GNU Emacs, but only under the conditions described in the +;; GNU Emacs General Public License. A copy of this license is +;; supposed to have been given to you along with GNU Emacs so you +;; can know your rights and responsibilities. It should be in a +;; file named COPYING. Among other things, the copyright notice +;; and this notice must be preserved on all copies. + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +Contributed by Gaius Mulley . +Mix of GPL-3 and LGPL-2.1. + +gcc/testsuite/gm2/: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Mix of GPL-2+ and GPL-3+ + +libgm2: + +libgm2/libiso/: +libgm2/libpim/: +libgm2/liblog/: +libgm2/libcor/: +libgm2/libmin/: +Copyright (C) 2002-2024 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +newlib-X.Y.Z/ (only for the offload compilers): + +Upstream Authors: +newlib@sources.redhat.com +Jeff Johnston +Tom Fitzsimmons + +The newlib subdirectory is a collection of software from several sources. +Each file may have its own copyright/license that is embedded in the source +file. + +This list documents those licenses which are more restrictive than +a BSD-like license or require the copyright notice +to be duplicated in documentation and/or other materials associated with +the distribution. Certain licenses documented here only apply to +specific targets. Certain clauses only apply if you are building the +code as part of your binary. + +Note that this list may omit certain licenses that +only pertain to the copying/modifying of the individual source code. +If you are distributing the source code, then you do not need to +worry about these omitted licenses, so long as you do not modify the +copyright information already in place. + +Parts of this work are licensed under the terms of the GNU General +Public License. On Debian systems, the complete text of this license +can be found in /usr/share/common-licenses/GPL. + +Parts of this work are licensed under the terms of the GNU Library +General Public License. On Debian systems, the complete text of this +license be found in /usr/share/common-licenses/LGPL. + +(1) University of California, Berkeley + +[1a] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +and other materials related to such distribution and use +acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1b] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +advertising materials, and other materials related to such +distribution and use acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1c] + +Copyright (c) 1981, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 +The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1d] + +Copyright (c) 1988, 1990, 1993 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1e] + +Copyright (c) 1982, 1986, 1989, 1991, 1993, 1994 +The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1f] + +Copyright (c) 1987, 1988, 2000 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that: (1) source distributions retain this entire copyright +notice and comment, and (2) distributions including binaries display +the following acknowledgement: ``This product includes software +developed by the University of California, Berkeley and its contributors'' +in the documentation or other materials provided with the distribution +and in all advertising materials mentioning features or use of this +software. Neither the name of the University nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +------------------------------------------------------------- + Please note that in some of the above alternate licenses, there is a + statement regarding that acknowledgement must be made in any + advertising materials for products using the code. This restriction + no longer applies due to the following license change: + + ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change + + In some cases the defunct clause has been removed in modified newlib code and + in some cases, the clause has been left as-is. +------------------------------------------------------------- + +(2) Cygwin (cygwin targets only) + +Copyright 2001 Red Hat, Inc. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. + +(3) David M. Gay at AT&T + +The author of this software is David M. Gay. + +Copyright (c) 1991 by AT&T. + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY +REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY +OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(4) Advanced Micro Devices + +Copyright 1989, 1990 Advanced Micro Devices, Inc. + +This software is the property of Advanced Micro Devices, Inc (AMD) which +specifically grants the user the right to modify, use and distribute this +software provided this notice is not removed or altered. All other rights +are reserved by AMD. + +AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS +SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL +DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR +USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the 29K Technical Support Center at +800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or +0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. + +Advanced Micro Devices, Inc. +29K Support Products +Mail Stop 573 +5900 E. Ben White Blvd. +Austin, TX 78741 +800-292-9263 + +(5) C.W. Sandmann + +Copyright (C) 1993 C.W. Sandmann + +This file may be freely distributed as long as the author's name remains. + +(6) Eric Backus + +(C) Copyright 1992 Eric Backus + +This software may be used freely so long as this copyright notice is +left intact. There is no warrantee on this software. + +(7) Sun Microsystems + +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +(8) Hewlett Packard + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(9) Hans-Peter Nilsson + +Copyright (C) 2001 Hans-Peter Nilsson + +Permission to use, copy, modify, and distribute this software is +freely granted, provided that the above copyright notice, this notice +and the following disclaimer are preserved with no changes. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. + +(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only) + +Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +(11) Christopher G. Demetriou + +Copyright (c) 2001 Christopher G. Demetriou +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(12) SuperH, Inc. + +Copyright 2002 SuperH, Inc. All rights reserved + +This software is the property of SuperH, Inc (SuperH) which specifically +grants the user the right to modify, use and distribute this software +provided this notice is not removed or altered. All other rights are +reserved by SuperH. + +SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO +THIS SOFTWARE. IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM +THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the SuperH Support Center via +e-mail at softwaresupport@superh.com . + +SuperH, Inc. +405 River Oaks Parkway +San Jose +CA 95134 +USA + +(13) Royal Institute of Technology + +Copyright (c) 1999 Kungliga Tekniska Hgskolan +(Royal Institute of Technology, Stockholm, Sweden). +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of KTH nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(14) Alexey Zelkin + +Copyright (c) 2000, 2001 Alexey Zelkin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(15) Andrey A. Chernov + +Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(16) FreeBSD + +Copyright (c) 1997-2002 FreeBSD Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(17) S. L. Moshier + +Author: S. L. Moshier. + +Copyright (c) 1984,2000 S.L. Moshier + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION +OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS +SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(18) Citrus Project + +Copyright (c)1999 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(19) Todd C. Miller + +Copyright (c) 1998 Todd C. Miller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(20) DJ Delorie (i386) + +Copyright (C) 1991 DJ Delorie +All rights reserved. + +Redistribution and use in source and binary forms is permitted +provided that the above copyright notice and following paragraph are +duplicated in all such forms. + +This file is distributed WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +(21) Free Software Foundation LGPL License (*-linux* targets only) + + Copyright (C) 1990-2025 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Mark Kettenis , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with the GNU C Library; if not, see https://www.gnu.org/licenses/. + +(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only) + +Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Library General Public License for more details. + +(23) Intel (i960) + +Copyright (c) 1993 Intel Corporation + +Intel hereby grants you permission to copy, modify, and distribute this +software and its documentation. Intel grants this permission provided +that the above copyright notice appears in all copies and that both the +copyright notice and this permission notice appear in supporting +documentation. In addition, Intel grants this permission provided that +you prominently mark as "not part of the original" any modifications +made to this software or documentation, and that the name of Intel +Corporation not be used in advertising or publicity pertaining to +distribution of the software or the documentation without specific, +written prior permission. + +Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR +IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or +representations regarding the use of, or the results of the use of, +the software and documentation in terms of correctness, accuracy, +reliability, currentness, or otherwise; and you rely on the software, +documentation and results solely at your own risk. + +IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, +LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES +OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM +PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. + +(24) Hewlett-Packard (hppa targets only) + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(25) Henry Spencer (only *-linux targets) + +Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. +This software is not subject to any license of the American Telephone +and Telegraph Company or of the Regents of the University of California. + +Permission is granted to anyone to use this software for any purpose on +any computer system, and to alter it and redistribute it, subject +to the following restrictions: + +1. The author is not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + +4. This notice may not be removed or altered. + +(26) Mike Barcroft + +Copyright (c) 2001 Mike Barcroft +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(27) Konstantin Chuguev (--enable-newlib-iconv) + +Copyright (c) 1999, 2000 + Konstantin Chuguev. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + + iconv (Charset Conversion Library) v2.0 + +(27) Artem Bityuckiy (--enable-newlib-iconv) + +Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation. +Rights transferred to Franklin Electronic Publishers. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(28) Red Hat Incorporated + +Unless otherwise stated in each remaining newlib file, the remaining +files in the newlib subdirectory default to the following copyright. +It should be noted that Red Hat Incorporated now owns copyrights +belonging to Cygnus Solutions and Cygnus Support. + +Copyright (c) 1994, 1997, 2001, 2002, 2003, 2004 Red Hat Incorporated. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +contrib/unicode: + +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + + Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF +online code charts under the directory http://www.unicode.org/Public/. +Software includes any source code published in the Unicode Standard or under +the directories http://www.unicode.org/Public/, +http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. + + NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES +("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND +AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF +YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA +FILES OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright © 1991-2013 Unicode, Inc. All rights reserved. Distributed under +the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a +copy of the Unicode data files and any associated documentation (the "Data +Files") or Unicode software and any associated documentation (the "Software") +to deal in the Data Files or Software without restriction, including without +limitation the rights to use, copy, modify, merge, publish, distribute, and/or +sell copies of the Data Files or Software, and to permit persons to whom the +Data Files or Software are furnished to do so, provided that (a) the above +copyright notice(s) and this permission notice appear with all copies of the +Data Files or Software, (b) both the above copyright notice(s) and this +permission notice appear in associated documentation, and (c) there is clear +notice in each modified Data File or in the Software as well as in the +documentation associated with the Data File(s) or Software that the data or +software has been modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN +THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE +DATA FILES OR SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written authorization +of the copyright holder. + +contrib/unicode/from_glibc: + +# Copyright (C) 2014-2019 Free Software Foundation, Inc. +# This file is part of the GNU C Library. +# +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, see +# . + +gcc/cobol, libgcobol: + + * Copyright (c) 2021-2024 Symas Corporation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of the Symas Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +gcc/algol68 + + Copyright (C) 2025 Jose E. Marchesi. + + This file is NOT part of GCC. + + GCC is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + You should have received a copy of the GNU General Public License along with + GCC; see the file COPYING3. If not see . + +libga68: + + Copyright (C) 2025 Jose E. Marchesi. + + This file is NOT part of GCC. + + GCC is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + Under Section 7 of GPL version 3, you are granted additional permissions + described in the GCC Runtime Library Exception, version 3.1, as published by + the Free Software Foundation. + + You should have received a copy of the GNU General Public License and a copy + of the GCC Runtime Library Exception along with this program; see the files + COPYING3 and COPYING.RUNTIME respectively. If not, see + . + +gcc/rust/checks/errors/borrowck/ffi-polonius/vendor/ +libgrust/libformat_parser/vendor/ + + Vendored crates are authored by "The Rust Project Developers", + licensed under the Apache-2.0/MIT licenses. + + MIT License: + + Permission is hereby granted, free of charge, to any + person obtaining a copy of this software and associated + documentation files (the "Software"), to deal in the + Software without restriction, including without + limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software + is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice + shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF + ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED + TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT + SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +On Debian GNU/Linux systems, the complete text of Apache 2.0 License +is in `/usr/share/common-licenses/Apache-2.0'. diff --git a/cpp-BV-CRB.preinst.in b/cpp-BV-CRB.preinst.in new file mode 100644 index 0000000..408889b --- /dev/null +++ b/cpp-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-cpp /usr/bin/@TARGET@-cpp-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/cpp-BV-doc.doc-base.cpp b/cpp-BV-doc.doc-base.cpp new file mode 100644 index 0000000..d64e86f --- /dev/null +++ b/cpp-BV-doc.doc-base.cpp @@ -0,0 +1,16 @@ +Document: cpp-@BV@ +Title: The GNU C preprocessor +Author: Various +Abstract: The C preprocessor is a "macro processor" that is used automatically + by the C compiler to transform your program before actual compilation. + It is called a macro processor because it allows you to define "macros", + which are brief abbreviations for longer constructs. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/cpp.html +Files: /usr/share/doc/gcc-@BV@-base/cpp.html + +Format: info +Index: /usr/share/info/cpp-@BV@.info.gz +Files: /usr/share/info/cpp-@BV@* diff --git a/cpp-BV-doc.doc-base.cppint b/cpp-BV-doc.doc-base.cppint new file mode 100644 index 0000000..151d319 --- /dev/null +++ b/cpp-BV-doc.doc-base.cppint @@ -0,0 +1,17 @@ +Document: cppinternals-@BV@ +Title: The GNU C preprocessor (internals) +Author: Various +Abstract: This brief manual documents the internals of cpplib, and + explains some of the tricky issues. It is intended that, along with + the comments in the source code, a reasonably competent C programmer + should be able to figure out what the code is doing, and why things + have been implemented the way they have. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/cppinternals.html +Files: /usr/share/doc/gcc-@BV@-base/cppinternals.html + +Format: info +Index: /usr/share/info/cppinternals-@BV@.info.gz +Files: /usr/share/info/cppinternals-@BV@* diff --git a/dh_doclink b/dh_doclink new file mode 100755 index 0000000..8372658 --- /dev/null +++ b/dh_doclink @@ -0,0 +1,12 @@ +#! /bin/sh + +pkg=`echo $1 | sed 's/^-p//'` +target=$2 + +[ -d debian/$pkg/usr/share/doc ] || mkdir -p debian/$pkg/usr/share/doc +if [ -d debian/$pkg/usr/share/doc/$p -a ! -h debian/$pkg/usr/share/doc/$p ] +then + echo "WARNING: removing doc directory $pkg" + rm -rf debian/$pkg/usr/share/doc/$pkg +fi +ln -sf $target debian/$pkg/usr/share/doc/$pkg diff --git a/dh_rmemptydirs b/dh_rmemptydirs new file mode 100755 index 0000000..4a010c7 --- /dev/null +++ b/dh_rmemptydirs @@ -0,0 +1,10 @@ +#! /bin/sh -e + +pkg=`echo $1 | sed 's/^-p//'` + +: # remove empty directories, when all components are in place +for d in `find debian/$pkg -depth -type d -empty 2> /dev/null`; do \ + while rmdir $d 2> /dev/null; do d=`dirname $d`; done; \ +done + +exit 0 diff --git a/dummy-man.1 b/dummy-man.1 new file mode 100644 index 0000000..966d935 --- /dev/null +++ b/dummy-man.1 @@ -0,0 +1,29 @@ +.TH @NAME@ 1 "May 24, 2003" @name@ "Debian Free Documentation" +.SH NAME +@name@ \- A program with a man page covered by the GFDL with invariant sections +.SH SYNOPSIS +@name@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fB@name@\fR is documented by a man page, which is covered by the "GNU +Free Documentation License" (GFDL) containing invariant sections. +.P +In November 2002, version 1.2 of the GNU Free Documentation License (GNU +FDL) was released by the Free Software Foundation after a long period +of consultation. Unfortunately, some concerns raised by members of the +Debian Project were not addressed, and as such the GNU FDL can apply +to works that do not pass the Debian Free Software Guidelines (DFSG), +and may thus only be included in the non-free component of the Debian +archive, not the Debian distribution itself. + +.SH "SEE ALSO" +.BR http://gcc.gnu.org/onlinedocs/ +for the complete documentation, +.BR http://lists.debian.org/debian-legal/2003/debian-legal-200304/msg00307.html +for a proposed statement of Debian with respect to the GFDL, +.BR gfdl(7) + +.SH AUTHOR +This manual page was written by the Debian GCC maintainers, +for the Debian GNU/Linux system. diff --git a/dummy.texi b/dummy.texi new file mode 100644 index 0000000..127ccaa --- /dev/null +++ b/dummy.texi @@ -0,0 +1 @@ +@c This file is empty because the original one has a non DFSG free license (GFDL) diff --git a/g++-BV-CRB.preinst.in b/g++-BV-CRB.preinst.in new file mode 100644 index 0000000..b69c8f8 --- /dev/null +++ b/g++-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-g++ /usr/bin/@TARGET@-g++-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/ga68-BV-doc.doc-base b/ga68-BV-doc.doc-base new file mode 100644 index 0000000..c1f81ed --- /dev/null +++ b/ga68-BV-doc.doc-base @@ -0,0 +1,14 @@ +Document: ga68-@BV@ +Title: The GNU Algol 68 Compiler +Author: Various +Abstract: This manual documents how to run, install and port `gm68', + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming/Algol68 + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/Algol68/ga68-@BV@.html +Files: /usr/share/doc/gcc-@BV@-base/Algol68/ga68-@BV@.html + +Format: info +Index: /usr/share/info/ga68-@BV@.info.gz +Files: /usr/share/info/ga68-@BV@* diff --git a/gcc-BV-CRB.preinst.in b/gcc-BV-CRB.preinst.in new file mode 100644 index 0000000..ca34796 --- /dev/null +++ b/gcc-BV-CRB.preinst.in @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-gcc /usr/bin/@TARGET@-gcc-@BV@ + update-alternatives --quiet --remove @TARGET@-gcov /usr/bin/@TARGET@-gcov-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/gcc-BV-doc.doc-base.gcc b/gcc-BV-doc.doc-base.gcc new file mode 100644 index 0000000..106e18d --- /dev/null +++ b/gcc-BV-doc.doc-base.gcc @@ -0,0 +1,14 @@ +Document: gcc-@BV@ +Title: The GNU C and C++ compiler +Author: Various +Abstract: This manual documents how to run, install and port the GNU compiler, + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gcc.html +Files: /usr/share/doc/gcc-@BV@-base/gcc.html + +Format: info +Index: /usr/share/info/gcc-@BV@.info.gz +Files: /usr/share/info/gcc-@BV@* diff --git a/gcc-BV-doc.doc-base.gccint b/gcc-BV-doc.doc-base.gccint new file mode 100644 index 0000000..85f4af1 --- /dev/null +++ b/gcc-BV-doc.doc-base.gccint @@ -0,0 +1,17 @@ +Document: gccint-@BV@ +Title: Internals of the GNU C and C++ compiler +Author: Various +Abstract: This manual documents the internals of the GNU compilers, + including how to port them to new targets and some information about + how to write front ends for new languages. It corresponds to GCC + version @BV@.x. The use of the GNU compilers is documented in a + separate manual. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gccint.html +Files: /usr/share/doc/gcc-@BV@-base/gccint.html + +Format: info +Index: /usr/share/info/gccint-@BV@.info.gz +Files: /usr/share/info/gccint-@BV@* diff --git a/gcc-BV-doc.doc-base.gomp b/gcc-BV-doc.doc-base.gomp new file mode 100644 index 0000000..69ccede --- /dev/null +++ b/gcc-BV-doc.doc-base.gomp @@ -0,0 +1,15 @@ +Document: gcc-@BV@-gomp +Title: The GNU OpenMP Implementation (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage of libgomp, the GNU implementation + of the OpenMP Application Programming Interface (API) for multi-platform + shared-memory parallel programming in C/C++ and Fortran. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libgomp.html +Files: /usr/share/doc/gcc-@BV@-base/libgomp.html + +Format: info +Index: /usr/share/info/libgomp-@BV@.info.gz +Files: /usr/share/info/libgomp-@BV@* diff --git a/gcc-BV-doc.doc-base.itm b/gcc-BV-doc.doc-base.itm new file mode 100644 index 0000000..130a70f --- /dev/null +++ b/gcc-BV-doc.doc-base.itm @@ -0,0 +1,16 @@ +Document: gcc-@BV@-itm +Title: The GNU Transactional Memory Library (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage and internals of libitm, + the GNU Transactional Memory Library. It provides transaction support + for accesses to a process' memory, enabling easy-to-use synchronization + of accesses to shared memory by several threads. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libitm.html +Files: /usr/share/doc/gcc-@BV@-base/libitm.html + +Format: info +Index: /usr/share/info/libitm-@BV@.info.gz +Files: /usr/share/info/libitm-@BV@* diff --git a/gcc-BV-doc.doc-base.qmath b/gcc-BV-doc.doc-base.qmath new file mode 100644 index 0000000..bdc2d4c --- /dev/null +++ b/gcc-BV-doc.doc-base.qmath @@ -0,0 +1,14 @@ +Document: gcc-@BV@-qmath +Title: The GCC Quad-Precision Math Library (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage of libquadmath, the GCC + Quad-Precision Math Library Application Programming Interface (API). +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libquadmath.html +Files: /usr/share/doc/gcc-@BV@-base/libquadmath.html + +Format: info +Index: /usr/share/info/libquadmath-@BV@.info.gz +Files: /usr/share/info/libquadmath-@BV@* diff --git a/gcc-BV-hppa64-linux-gnu.overrides b/gcc-BV-hppa64-linux-gnu.overrides new file mode 100644 index 0000000..9f7ebd0 --- /dev/null +++ b/gcc-BV-hppa64-linux-gnu.overrides @@ -0,0 +1,3 @@ +gcc-@BV@-hppa64-linux-gnu binary: binary-from-other-architecture +gcc-@BV@-hppa64-linux-gnu binary: binary-without-manpage +gcc-@BV@-hppa64-linux-gnu binary: hardening-no-pie diff --git a/gcc-BV-multilib.overrides b/gcc-BV-multilib.overrides new file mode 100644 index 0000000..545ca0e --- /dev/null +++ b/gcc-BV-multilib.overrides @@ -0,0 +1 @@ +gcc-@BV@-multilib binary: binary-from-other-architecture diff --git a/gcc-BV-source.overrides b/gcc-BV-source.overrides new file mode 100644 index 0000000..46e8559 --- /dev/null +++ b/gcc-BV-source.overrides @@ -0,0 +1,5 @@ +gcc-@BV@-source: changelog-file-not-compressed + +# these are patches taken over unmodified from 4.3 +gcc-@BV@-source: script-not-executable +gcc-@BV@-source: shell-script-fails-syntax-check diff --git a/gcc-XX-BV.1 b/gcc-XX-BV.1 new file mode 100644 index 0000000..f02b309 --- /dev/null +++ b/gcc-XX-BV.1 @@ -0,0 +1,21 @@ +.TH GCC-@TOOL@-@BV@ 1 "May 8, 2012" gcc-@TOOL@-@BV@ "" +.SH NAME +gcc-@TOOL@ \- a wrapper around @TOOL@ adding the \-\-plugin option + +.SH SYNOPSIS +gcc-@TOOL@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgcc-@TOOL@\fR is a wrapper around +.BR @TOOL@ (1) +adding the appropriate +\fB\-\-plugin\fR option for the GCC @BV@ compiler. + +.SH OPTIONS +See +.BR @TOOL@ (1) +for a list of options that nm understands. + +.SH "SEE ALSO" +.BR @TOOL@ (1) diff --git a/gcc-dummy.texi b/gcc-dummy.texi new file mode 100644 index 0000000..b84b670 --- /dev/null +++ b/gcc-dummy.texi @@ -0,0 +1,41 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header + +@settitle The GNU Compiler Collection (GCC) + +@c Create a separate index for command line options. +@defcodeindex op +@c Merge the standard indexes into a single one. +@syncodeindex fn cp +@syncodeindex vr cp +@syncodeindex ky cp +@syncodeindex pg cp +@syncodeindex tp cp + +@paragraphindent 1 + +@c %**end of header + +@copying +The current documentation is licensed under the same terms as the Debian packaging. +@end copying +@ifnottex +@dircategory Programming +@direntry +* @name@: (@name@). The GNU Compiler Collection (@name@). +@end direntry +@sp 1 +@end ifnottex + +@summarycontents +@contents +@page + +@node Top +@top Introduction +@cindex introduction +The official GNU compilers' documentation is released under the terms +of the GNU Free Documentation License with cover texts. This has been +considered non free by the Debian Project. Thus you will find it in the +non-free section of the Debian archive. +@bye diff --git a/gcc-snapshot.overrides b/gcc-snapshot.overrides new file mode 100644 index 0000000..124c256 --- /dev/null +++ b/gcc-snapshot.overrides @@ -0,0 +1,17 @@ +gcc-snapshot binary: bad-permissions-for-ali-file +gcc-snapshot binary: non-standard-file-perm + +# libphobos non-multilib builds +gcc-snapshot binary: embedded-library + +gcc-snapshot binary: binary-from-other-architecture +gcc-snapshot binary: extra-license-file +gcc-snapshot binary: triplet-dir-and-architecture-mismatch +gcc-snapshot binary: unstripped-binary-or-object +gcc-snapshot binary: missing-prerequisite-for-gfortran-module + +# intended +gcc-snapshot binary: hardening-no-pie + +# nvptx offload, silly lintian +gcc-snapshot binary: no-code-sections diff --git a/gcc-snapshot.prerm b/gcc-snapshot.prerm new file mode 100644 index 0000000..000148c --- /dev/null +++ b/gcc-snapshot.prerm @@ -0,0 +1,6 @@ +#! /bin/sh -e + +find /usr/lib/gcc-snapshot/share/gcc/python -name '*.py[co]' | xargs -r rm -f +find /usr/lib/gcc-snapshot/share/gcc/python -name __pycache__ -type d | xargs -r rm -rf + +#DEBHELPER# diff --git a/gcc.css b/gcc.css new file mode 100644 index 0000000..e32c4b9 --- /dev/null +++ b/gcc.css @@ -0,0 +1,154 @@ +/* CSS for the GCC web site. + + Gerald Pfeifer + */ + +body { background-color: white; color: black; } + +a:link { color: #0066bb; text-decoration: none; } +a:visited { color: #003399; text-decoration: none; } +a:hover { color: darkorange; text-decoration: none; } + +h1 { color: darkslategray; text-align:center; } +h2 { color: darkslategray; } + +.highlight{ color: darkslategray; font-weight:bold; } +.smaller { font-size: 80%; } + +.left { text-align:left; } +.right { text-align:right; } +.center { text-align:center; margin-left:auto; margin-right:auto; } +.top { vertical-align:top; } +.middle { vertical-align:middle; } + +.width33 { width:33%; } +.border0 { border-width:0; } + +.no-margin-top { margin-top:0; } +.twocolumns { column-count:2; } +.imgleft { margin: 5px 20px; float: left; } + +img.right { float: right; } + +td.news { width: 50%; padding-right: 8px; vertical-align: top; } +td.news h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 2%; } +td.news dl { margin-top:0; } +td.news dt { color:darkslategrey; font-weight:bold; margin-top:0.3em; } +td.news dd { margin-left:3ex; margin-top:0.1em; margin-bottom:0.1em; } +td.news .date { color:darkslategrey; font-size:90%; margin-left:0.1ex; } + +td.status { width: 50%; padding-left: 12px; vertical-align: top; + border-left: #3366cc thin solid; } +td.status h2 { font-size: 1.2em; margin-top:0; margin-bottom: 1%; } +td.status dl { margin-top:0; } +td.status .version { font-weight:bold; } +td.status .regress { font-size: 80%; } +td.status dd { margin-left:3ex; } + +table.nav { + padding-left: 32px; + border-spacing: 0pt; +} + +table.nav td { + border-width: 0; +} + +table.navitem { + width: 100%; + border-spacing: 0pt; +} + +table.navitem tr:nth-child(1) { + border-color: #3366cc; + border-style: solid; + border-width: thin; + color: #f2f2f9; + background-color: #0066dd; + font-weight: bold; +} +table.navitem tr:nth-child(2) { + padding-top: 3px; + padding-left: 8px; + padding-bottom: 3px; + background-color: #f2f2f9; + font-size: smaller; +} + +div.copyright { + clear: both; + font-size: smaller; + background: #f2f2f9; + border: 2px solid #3366cc; + border-style: solid; + border-width: thin; + padding: 4px; +} +div.copyright p:nth-child(3) { margin-bottom: 0; } + +.bold { font-weight:bold; } +.boldcyan { font-weight:bold; color:cyan; } +.boldlime { font-weight:bold; color:lime; } +.boldmagenta { font-weight:bold; color:magenta; } +.boldred { font-weight:bold; color:red; } +.boldgreen { font-weight:bold; color:green; } +.boldblue { font-weight:bold; color:blue; } +.red { color:red; } +.green { color:green; } +.blue { color:blue; } +.blackbg { color:white; background-color: #000000; } + +/* Inline markup for differences. */ +ins { background-color: lightgreen } +del { background-color: pink } + +/* Quote an e-mail. The first
has the sender, the second the quote. */ +blockquote.mail div:nth-child(2) { border-left: solid blue; padding-left: 4pt; } + +/* This comes close to , alas a bit less bordersome. */ +table.border th { border:2px solid; } + +/* C++ status tables. */ +table.cxxstatus th, table.cxxstatus td { border: 1px solid gray; } +table.cxxstatus td:nth-child(3) { text-align:center; } +table.cxxstatus tr.separator { background: #f2f2f9; } + +/* C++ Defect Report table. */ +table.cxxdrstatus th, table.cxxdrstatus td { border: 1px solid gray; } +table.cxxdrstatus td:nth-child(4) { text-align:center; } +table.cxxdrstatus tr.separator { background: #f2f2f9; } +table.cxxdrstatus { width: 65%; } + +/* OpenMP status tables. */ +table.ompstatus thead th, table.cxxstatus thead td { border: 1px solid gray; } +table.ompstatus tbody td:nth-child(2) { text-align:center; } +table.ompstatus thead tr { background: #f2f2f9; } + +/* Padded tables. */ +table.padding5 th, td { border: 1px solid gray; padding:5px; } + +.supported { background-color: lightgreen; } +.unsupported { background-color: lightsalmon; } +.other { background-color: lightgray; } +.partial { background-color: lightyellow; } +.open { color: #AAAAAA; } + +/* Online documentation. */ + +pre.smallexample { + font-size: medium; + background: #f2f2f9; + padding: 4px; + display: inline-block; +} + +/* Classpath versus libgcj merge status page. */ + +.classpath-only { background-color: #FFFFAA; } +.libgcj-only { background-color: #FFFFAA; } +.VM-specific { background-color: #CCCCFF; } +.GCJ-specific { background-color: #CCCCFF; } +.needsmerge { background-color: #FF9090; } +.merged { background-color: #22FF22; } +.merged-expected-diff { background-color: #22FF22; } +.merged-unexpected-diff { background-color: #FF4444; } diff --git a/gccgo-BV-doc.doc-base b/gccgo-BV-doc.doc-base new file mode 100644 index 0000000..86ce258 --- /dev/null +++ b/gccgo-BV-doc.doc-base @@ -0,0 +1,17 @@ +Document: gccgo-@BV@ +Title: The GNU Go compiler (version @BV@) +Author: Various +Abstract: This manual describes how to use gccgo, the GNU compiler for + the Go programming language. This manual is specifically about + gccgo. For more information about the Go programming + language in general, including language specifications and standard + package documentation, see http://golang.org/. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gccgo.html +Files: /usr/share/doc/gcc-@BV@-base/gccgo.html + +Format: info +Index: /usr/share/info/gccgo-@BV@.info.gz +Files: /usr/share/info/gccgo-@BV@* diff --git a/gen-libstdc-breaks.sh b/gen-libstdc-breaks.sh new file mode 100755 index 0000000..de35a4a --- /dev/null +++ b/gen-libstdc-breaks.sh @@ -0,0 +1,178 @@ +#! /bin/sh + +# https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=gcc-pr66145;users=debian-gcc@lists.debian.org + +vendor=Debian +if dpkg-vendor --derives-from Ubuntu; then + vendor=Ubuntu +fi + +if [ "$vendor" = Debian ]; then + : + pkgs=$(echo ' +antlr +libaqsis1 +libassimp3 +blockattack +boo +libboost-date-time1.54.0 +libboost-date-time1.55.0 +libcpprest2.4 +printer-driver-brlaser +c++-annotations +clustalx +libdavix0 +libdballe6 +dff +libdiet-sed2.8 +libdiet-client2.8 +libdiet-admin2.8 +digikam-private-libs +emscripten +ergo +fceux +flush +libfreefem++ +freeorion +fslview +fwbuilder +libgazebo5 +libgetfem4++ +libgmsh2 +gnote +gnudatalanguage +python-healpy +innoextract +libinsighttoolkit4.7 +libdap17 +libdapclient6 +libdapserver7 +libkolabxml1 +libpqxx-4.0 +libreoffice-core +librime1 +libwibble-dev +lightspark +libmarisa0 +mira-assembler +mongodb +mongodb-server +ncbi-blast+ +libogre-1.8.0 +libogre-1.9.0 +openscad +libopenwalnut1 +passepartout +pdf2djvu +photoprint +plastimatch +plee-the-bear +povray +powertop +psi4 +python3-taglib +realtimebattle +ruby-passenger +libapache2-mod-passenger +schroot +sqlitebrowser +tecnoballz +wesnoth-1.12-core +widelands +libwreport2 +xflr5 +libxmltooling6') +else + pkgs=$(echo ' +antlr +libaqsis1 +libassimp3 +blockattack +boo +libboost-date-time1.55.0 +libcpprest2.2 +printer-driver-brlaser +c++-annotations +chromium-browser +clustalx +libdavix0 +libdballe6 +dff +libdiet-sed2.8 +libdiet-client2.8 +libdiet-admin2.8 +libkgeomap2 +libmediawiki1 +libkvkontakte1 +emscripten +ergo +fceux +flush +libfreefem++ +freeorion +fslview +fwbuilder +libgazebo5 +libgetfem4++ +libgmsh2 +gnote +gnudatalanguage +python-healpy +innoextract +libinsighttoolkit4.6 +libdap17 +libdapclient6 +libdapserver7 +libkolabxml1 +libpqxx-4.0 +libreoffice-core +librime1 +libwibble-dev +lightspark +libmarisa0 +mira-assembler +mongodb +mongodb-server +ncbi-blast+ +libogre-1.8.0 +libogre-1.9.0 +openscad +libopenwalnut1 +passepartout +pdf2djvu +photoprint +plastimatch +plee-the-bear +povray +powertop +psi4 +python3-taglib +realtimebattle +ruby-passenger +libapache2-mod-passenger +sqlitebrowser +tecnoballz +wesnoth-1.12-core +widelands +libwreport2 +xflr5 +libxmltooling6') +fi + +fn=debian/libstdc++-breaks.$vendor +rm -f $fn +echo $pkgs +for p in $pkgs; do + #echo $p + if ! apt-cache show --no-all-versions $p >/dev/null; then + echo "not found: $p" + fi + v=$(apt-cache show --no-all-versions $p | awk '/^Version/ {print $2}') + case "$p" in + libboost-date-time*) + echo "$p," >> $fn + ;; + *) + echo "$p (<= $v)," >> $fn + esac +done diff --git a/gfortran-BV-CRB.preinst.in b/gfortran-BV-CRB.preinst.in new file mode 100644 index 0000000..f6e7cfd --- /dev/null +++ b/gfortran-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-gfortran /usr/bin/@TARGET@-gfortran-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/gfortran-BV-doc.doc-base b/gfortran-BV-doc.doc-base new file mode 100644 index 0000000..485d458 --- /dev/null +++ b/gfortran-BV-doc.doc-base @@ -0,0 +1,14 @@ +Document: gfortran-@BV@ +Title: The GNU Fortran Compiler +Author: Various +Abstract: This manual documents how to run, install and port `gfortran', + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming/Fortran + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html +Files: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html + +Format: info +Index: /usr/share/info/gfortran-@BV@.info.gz +Files: /usr/share/info/gfortran-@BV@* diff --git a/gm2-BV-doc.doc-base b/gm2-BV-doc.doc-base new file mode 100644 index 0000000..63315b5 --- /dev/null +++ b/gm2-BV-doc.doc-base @@ -0,0 +1,14 @@ +Document: gm2-@BV@ +Title: The GNU Modula-2 Compiler +Author: Various +Abstract: This manual documents how to run, install and port `gm2', + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming/Modula-2 + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/m2/gm2-@BV@.html +Files: /usr/share/doc/gcc-@BV@-base/m2/gm2-@BV@.html + +Format: info +Index: /usr/share/info/gm2-@BV@.info.gz +Files: /usr/share/info/gm2-@BV@* diff --git a/gnat-BV-doc.doc-base.rm b/gnat-BV-doc.doc-base.rm new file mode 100644 index 0000000..7957275 --- /dev/null +++ b/gnat-BV-doc.doc-base.rm @@ -0,0 +1,16 @@ +Document: gnat-rm-@BV@ +Title: GNAT (GNU Ada) Reference Manual +Author: Various +Abstract: This manual contains useful information in writing programs + using the GNAT compiler. It includes information on implementation + dependent characteristics of GNAT, including all the information + required by Annex M of the standard. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html + +Format: info +Index: /usr/share/info/gnat_rm-@BV@.info.gz +Files: /usr/share/info/gnat_rm-@BV@* diff --git a/gnat-BV-doc.doc-base.style b/gnat-BV-doc.doc-base.style new file mode 100644 index 0000000..db6dfc8 --- /dev/null +++ b/gnat-BV-doc.doc-base.style @@ -0,0 +1,16 @@ +Document: gnat-style-@BV@ +Title: GNAT Coding Style +Author: Various +Abstract: Most of GNAT is written in Ada using a consistent style to + ensure readability of the code. This document has been written to + help maintain this consistent style, while having a large group of + developers work on the compiler. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat-style.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat-style.html + +Format: info +Index: /usr/share/info/gnat-style-@BV@.info.gz +Files: /usr/share/info/gnat-style-@BV@* diff --git a/gnat-BV-doc.doc-base.ug b/gnat-BV-doc.doc-base.ug new file mode 100644 index 0000000..00dedf1 --- /dev/null +++ b/gnat-BV-doc.doc-base.ug @@ -0,0 +1,16 @@ +Document: gnat-ugn-@BV@ +Title: GNAT User's Guide for Unix Platforms +Author: Various +Abstract: This guide describes the use of GNAT, a compiler and + software development toolset for the full Ada 95 programming language. + It describes the features of the compiler and tools, and details how + to use them to build Ada 95 applications. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html + +Format: info +Index: /usr/share/info/gnat_ugn-@BV@.info.gz +Files: /usr/share/info/gnat_ugn-@BV@* diff --git a/gnat.1 b/gnat.1 new file mode 100644 index 0000000..33a42c7 --- /dev/null +++ b/gnat.1 @@ -0,0 +1,43 @@ +.\" Hey, Emacs! This is an -*- nroff -*- source file. +.\" +.\" Copyright (C) 1996 Erick Branderhorst +.\" Copyright (C) 2011 Nicolas Boulenguez +.\" +.\" This is free software; you can redistribute it and/or modify it under +.\" the terms of the GNU General Public License as published by the Free +.\" Software Foundation; either version 2, or (at your option) any later +.\" version. +.\" +.\" This is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +.\" for more details. +.\" +.\" You should have received a copy of the GNU General Public License with +.\" your Debian GNU/Linux system, in /usr/doc/copyright/GPL, or with the +.\" dpkg source package as the file COPYING. If not, write to the Free +.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +.\" +.\" +.TH "GNAT TOOLBOX" 1 "Jun 2002" "Debian Project" "Debian Linux" +.SH NAME +gnat, gnatbind, gnatbl, gnatchop, gnatfind, gnathtml, gnatkr, gnatlink, +gnatls, gnatmake, gnatprep, gnatpsta, gnatpsys, gnatxref \- +GNAT toolbox +.SH DESCRIPTION +Those programs are part of GNU GNAT, a freely available Ada 95 compiler. +.PP +For accessing the full GNAT manuals, use +.B info gnat-ug-4.8 +and +.B info gnat-rm-4.8 +for the sections related to the reference manual. +If those sections cannot be found, you will have to install the +gnat-4.4-doc package as well (since these manuals contain invariant parts, +the package is located in the non-free part of the Debian archive). +You may also browse +.B http://gcc.gnu.org/onlinedocs +which provides the GCC online documentation. +.SH AUTHOR +This manpage has been written by Samuel Tardieu , for the +Debian GNU/Linux project. diff --git a/lib32asan8.symbols b/lib32asan8.symbols new file mode 100644 index 0000000..62205b2 --- /dev/null +++ b/lib32asan8.symbols @@ -0,0 +1,2099 @@ +# SymbolsHelper-Confirmed: 15 amd64 ppc64 s390x sparc64 x32 +libasan.so.8 lib32asan8 #MINVER# + _Unwind_RaiseException@Base 15 + _ZdaPv@Base 15 + _ZdaPvRKSt9nothrow_t@Base 15 + _ZdaPvSt11align_val_t@Base 15 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdaPvj@Base 15 + _ZdaPvjSt11align_val_t@Base 15 + _ZdlPv@Base 15 + _ZdlPvRKSt9nothrow_t@Base 15 + _ZdlPvSt11align_val_t@Base 15 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdlPvj@Base 15 + _ZdlPvjSt11align_val_t@Base 15 + _Znaj@Base 15 + _ZnajRKSt9nothrow_t@Base 15 + _ZnajSt11align_val_t@Base 15 + _ZnajSt11align_val_tRKSt9nothrow_t@Base 15 + _Znwj@Base 15 + _ZnwjRKSt9nothrow_t@Base 15 + _ZnwjSt11align_val_t@Base 15 + _ZnwjSt11align_val_tRKSt9nothrow_t@Base 15 + __asan_addr_is_in_fake_stack@Base 15 + __asan_address_is_poisoned@Base 15 + __asan_after_dynamic_init@Base 15 + __asan_alloca_poison@Base 15 + __asan_allocas_unpoison@Base 15 + __asan_backtrace_alloc@Base 15 + __asan_backtrace_close@Base 15 + __asan_backtrace_create_state@Base 15 + __asan_backtrace_dwarf_add@Base 15 + __asan_backtrace_free@Base 15 + __asan_backtrace_get_view@Base 15 + __asan_backtrace_initialize@Base 15 + __asan_backtrace_open@Base 15 + __asan_backtrace_pcinfo@Base 15 + __asan_backtrace_qsort@Base 15 + __asan_backtrace_release_view@Base 15 + __asan_backtrace_syminfo@Base 15 + __asan_backtrace_syminfo_to_full_callback@Base 15 + __asan_backtrace_syminfo_to_full_error_callback@Base 15 + __asan_backtrace_uncompress_lzma@Base 15 + __asan_backtrace_uncompress_zdebug@Base 15 + __asan_backtrace_uncompress_zstd@Base 15 + __asan_backtrace_vector_finish@Base 15 + __asan_backtrace_vector_grow@Base 15 + __asan_backtrace_vector_release@Base 15 + __asan_before_dynamic_init@Base 15 + __asan_cplus_demangle_builtin_types@Base 15 + __asan_cplus_demangle_fill_ctor@Base 15 + __asan_cplus_demangle_fill_dtor@Base 15 + __asan_cplus_demangle_fill_extended_operator@Base 15 + __asan_cplus_demangle_fill_name@Base 15 + __asan_cplus_demangle_init_info@Base 15 + __asan_cplus_demangle_mangled_name@Base 15 + __asan_cplus_demangle_operators@Base 15 + __asan_cplus_demangle_print@Base 15 + __asan_cplus_demangle_print_callback@Base 15 + __asan_cplus_demangle_type@Base 15 + __asan_cplus_demangle_v3@Base 15 + __asan_cplus_demangle_v3_callback@Base 15 + __asan_default_options@Base 15 + __asan_default_suppressions@Base 15 + __asan_describe_address@Base 15 + __asan_exp_load16@Base 15 + __asan_exp_load1@Base 15 + __asan_exp_load2@Base 15 + __asan_exp_load4@Base 15 + __asan_exp_load8@Base 15 + __asan_exp_loadN@Base 15 + __asan_exp_store16@Base 15 + __asan_exp_store1@Base 15 + __asan_exp_store2@Base 15 + __asan_exp_store4@Base 15 + __asan_exp_store8@Base 15 + __asan_exp_storeN@Base 15 + __asan_get_alloc_stack@Base 15 + __asan_get_current_fake_stack@Base 15 + __asan_get_free_stack@Base 15 + __asan_get_report_access_size@Base 15 + __asan_get_report_access_type@Base 15 + __asan_get_report_address@Base 15 + __asan_get_report_bp@Base 15 + __asan_get_report_description@Base 15 + __asan_get_report_pc@Base 15 + __asan_get_report_sp@Base 15 + __asan_get_shadow_mapping@Base 15 + __asan_handle_no_return@Base 15 + __asan_handle_vfork@Base 15 + __asan_init@Base 15 + __asan_internal_memcmp@Base 15 + __asan_internal_memcpy@Base 15 + __asan_internal_memset@Base 15 + __asan_internal_strcmp@Base 15 + __asan_internal_strlen@Base 15 + __asan_internal_strncmp@Base 15 + __asan_internal_strnlen@Base 15 + __asan_is_gnu_v3_mangled_ctor@Base 15 + __asan_is_gnu_v3_mangled_dtor@Base 15 + __asan_java_demangle_v3@Base 15 + __asan_java_demangle_v3_callback@Base 15 + __asan_load16@Base 15 + __asan_load16_noabort@Base 15 + __asan_load1@Base 15 + __asan_load1_noabort@Base 15 + __asan_load2@Base 15 + __asan_load2_noabort@Base 15 + __asan_load4@Base 15 + __asan_load4_noabort@Base 15 + __asan_load8@Base 15 + __asan_load8_noabort@Base 15 + __asan_loadN@Base 15 + __asan_loadN_noabort@Base 15 + __asan_load_cxx_array_cookie@Base 15 + __asan_locate_address@Base 15 + __asan_memcpy@Base 15 + __asan_memmove@Base 15 + __asan_memset@Base 15 + __asan_on_error@Base 15 + __asan_option_detect_stack_use_after_return@Base 15 + __asan_poison_cxx_array_cookie@Base 15 + __asan_poison_intra_object_redzone@Base 15 + __asan_poison_memory_region@Base 15 + __asan_poison_stack_memory@Base 15 + __asan_print_accumulated_stats@Base 15 + __asan_region_is_poisoned@Base 15 + __asan_register_elf_globals@Base 15 + __asan_register_globals@Base 15 + __asan_register_image_globals@Base 15 + __asan_report_error@Base 15 + __asan_report_exp_load16@Base 15 + __asan_report_exp_load1@Base 15 + __asan_report_exp_load2@Base 15 + __asan_report_exp_load4@Base 15 + __asan_report_exp_load8@Base 15 + __asan_report_exp_load_n@Base 15 + __asan_report_exp_store16@Base 15 + __asan_report_exp_store1@Base 15 + __asan_report_exp_store2@Base 15 + __asan_report_exp_store4@Base 15 + __asan_report_exp_store8@Base 15 + __asan_report_exp_store_n@Base 15 + __asan_report_load16@Base 15 + __asan_report_load16_noabort@Base 15 + __asan_report_load1@Base 15 + __asan_report_load1_noabort@Base 15 + __asan_report_load2@Base 15 + __asan_report_load2_noabort@Base 15 + __asan_report_load4@Base 15 + __asan_report_load4_noabort@Base 15 + __asan_report_load8@Base 15 + __asan_report_load8_noabort@Base 15 + __asan_report_load_n@Base 15 + __asan_report_load_n_noabort@Base 15 + __asan_report_present@Base 15 + __asan_report_store16@Base 15 + __asan_report_store16_noabort@Base 15 + __asan_report_store1@Base 15 + __asan_report_store1_noabort@Base 15 + __asan_report_store2@Base 15 + __asan_report_store2_noabort@Base 15 + __asan_report_store4@Base 15 + __asan_report_store4_noabort@Base 15 + __asan_report_store8@Base 15 + __asan_report_store8_noabort@Base 15 + __asan_report_store_n@Base 15 + __asan_report_store_n_noabort@Base 15 + __asan_rt_version@Base 15 + __asan_set_death_callback@Base 15 + __asan_set_error_report_callback@Base 15 + __asan_set_shadow_00@Base 15 + __asan_set_shadow_01@Base 15 + __asan_set_shadow_02@Base 15 + __asan_set_shadow_03@Base 15 + __asan_set_shadow_04@Base 15 + __asan_set_shadow_05@Base 15 + __asan_set_shadow_06@Base 15 + __asan_set_shadow_07@Base 15 + __asan_set_shadow_f1@Base 15 + __asan_set_shadow_f2@Base 15 + __asan_set_shadow_f3@Base 15 + __asan_set_shadow_f5@Base 15 + __asan_set_shadow_f8@Base 15 + __asan_shadow_memory_dynamic_address@Base 15 + __asan_stack_free_0@Base 15 + __asan_stack_free_10@Base 15 + __asan_stack_free_1@Base 15 + __asan_stack_free_2@Base 15 + __asan_stack_free_3@Base 15 + __asan_stack_free_4@Base 15 + __asan_stack_free_5@Base 15 + __asan_stack_free_6@Base 15 + __asan_stack_free_7@Base 15 + __asan_stack_free_8@Base 15 + __asan_stack_free_9@Base 15 + __asan_stack_malloc_0@Base 15 + __asan_stack_malloc_10@Base 15 + __asan_stack_malloc_1@Base 15 + __asan_stack_malloc_2@Base 15 + __asan_stack_malloc_3@Base 15 + __asan_stack_malloc_4@Base 15 + __asan_stack_malloc_5@Base 15 + __asan_stack_malloc_6@Base 15 + __asan_stack_malloc_7@Base 15 + __asan_stack_malloc_8@Base 15 + __asan_stack_malloc_9@Base 15 + __asan_stack_malloc_always_0@Base 15 + __asan_stack_malloc_always_10@Base 15 + __asan_stack_malloc_always_1@Base 15 + __asan_stack_malloc_always_2@Base 15 + __asan_stack_malloc_always_3@Base 15 + __asan_stack_malloc_always_4@Base 15 + __asan_stack_malloc_always_5@Base 15 + __asan_stack_malloc_always_6@Base 15 + __asan_stack_malloc_always_7@Base 15 + __asan_stack_malloc_always_8@Base 15 + __asan_stack_malloc_always_9@Base 15 + __asan_store16@Base 15 + __asan_store16_noabort@Base 15 + __asan_store1@Base 15 + __asan_store1_noabort@Base 15 + __asan_store2@Base 15 + __asan_store2_noabort@Base 15 + __asan_store4@Base 15 + __asan_store4_noabort@Base 15 + __asan_store8@Base 15 + __asan_store8_noabort@Base 15 + __asan_storeN@Base 15 + __asan_storeN_noabort@Base 15 + __asan_test_only_reported_buggy_pointer@Base 15 + __asan_unpoison_intra_object_redzone@Base 15 + __asan_unpoison_memory_region@Base 15 + __asan_unpoison_stack_memory@Base 15 + __asan_unregister_elf_globals@Base 15 + __asan_unregister_globals@Base 15 + __asan_unregister_image_globals@Base 15 + __asan_update_allocation_context@Base 15 + __asan_version_mismatch_check_v8@Base 15 + __b64_ntop@Base 15 + __b64_pton@Base 15 + __bzero@Base 15 + __cxa_atexit@Base 15 + __cxa_throw@Base 15 + __fprintf_chk@Base 15 + __getdelim@Base 15 + __interceptor__Unwind_RaiseException@Base 15 + __interceptor___b64_ntop@Base 15 + __interceptor___b64_pton@Base 15 + __interceptor___bzero@Base 15 + __interceptor___cxa_atexit@Base 15 + __interceptor___cxa_throw@Base 15 + __interceptor___fprintf_chk@Base 15 + __interceptor___getdelim@Base 15 + (arch=!sparc64)__interceptor___isoc23_fscanf@Base 15 + (arch=!sparc64)__interceptor___isoc23_scanf@Base 15 + (arch=!sparc64)__interceptor___isoc23_sscanf@Base 15 + __interceptor___isoc23_strtoimax@Base 15 + __interceptor___isoc23_strtol@Base 15 + __interceptor___isoc23_strtoll@Base 15 + __interceptor___isoc23_strtoumax@Base 15 + (arch=!sparc64)__interceptor___isoc23_vfscanf@Base 15 + (arch=!sparc64)__interceptor___isoc23_vscanf@Base 15 + (arch=!sparc64)__interceptor___isoc23_vsscanf@Base 15 + __interceptor___isoc99_fprintf@Base 15 + (arch=!sparc64)__interceptor___isoc99_fscanf@Base 15 + __interceptor___isoc99_printf@Base 15 + (arch=!sparc64)__interceptor___isoc99_scanf@Base 15 + __interceptor___isoc99_snprintf@Base 15 + __interceptor___isoc99_sprintf@Base 15 + (arch=!sparc64)__interceptor___isoc99_sscanf@Base 15 + __interceptor___isoc99_vfprintf@Base 15 + (arch=!sparc64)__interceptor___isoc99_vfscanf@Base 15 + __interceptor___isoc99_vprintf@Base 15 + (arch=!sparc64)__interceptor___isoc99_vscanf@Base 15 + __interceptor___isoc99_vsnprintf@Base 15 + __interceptor___isoc99_vsprintf@Base 15 + (arch=!sparc64)__interceptor___isoc99_vsscanf@Base 15 + __interceptor___libc_memalign@Base 15 + __interceptor___longjmp_chk@Base 15 + __interceptor___lxstat64@Base 15 + __interceptor___lxstat@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_fscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_scanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_sscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_vfscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_vscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_vsscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_fscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_scanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_sscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_vfscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_vscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_vsscanf@Base 15 + (arch=sparc64)__interceptor___nldbl_asprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_fprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_fscanf@Base 15 + (arch=sparc64)__interceptor___nldbl_printf@Base 15 + (arch=sparc64)__interceptor___nldbl_scanf@Base 15 + (arch=sparc64)__interceptor___nldbl_snprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_sprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_sscanf@Base 15 + (arch=sparc64)__interceptor___nldbl_vasprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_vfprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_vfscanf@Base 15 + (arch=sparc64)__interceptor___nldbl_vprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_vscanf@Base 15 + (arch=sparc64)__interceptor___nldbl_vsnprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_vsprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_vsscanf@Base 15 + __interceptor___overflow@Base 15 + __interceptor___snprintf_chk@Base 15 + __interceptor___sprintf_chk@Base 15 + __interceptor___strdup@Base 15 + __interceptor___strndup@Base 15 + __interceptor___strxfrm_l@Base 15 + (arch=!s390x)__interceptor___tls_get_addr@Base 15 + (arch=s390x)__interceptor___tls_get_addr_internal@Base 15 + (arch=ppc64)__interceptor___tls_get_addr_opt@Base 15 + (arch=s390x)__interceptor___tls_get_offset@Base 15 + __interceptor___uflow@Base 15 + __interceptor___underflow@Base 15 + __interceptor___vsnprintf_chk@Base 15 + __interceptor___vsprintf_chk@Base 15 + __interceptor___wcsxfrm_l@Base 15 + __interceptor___woverflow@Base 15 + __interceptor___wuflow@Base 15 + __interceptor___wunderflow@Base 15 + __interceptor___xpg_strerror_r@Base 15 + __interceptor___xstat64@Base 15 + __interceptor___xstat@Base 15 + __interceptor__exit@Base 15 + __interceptor__longjmp@Base 15 + __interceptor__obstack_begin@Base 15 + __interceptor__obstack_begin_1@Base 15 + __interceptor__obstack_newchunk@Base 15 + __interceptor_accept4@Base 15 + __interceptor_accept@Base 15 + __interceptor_aligned_alloc@Base 15 + __interceptor_argp_parse@Base 15 + __interceptor_asctime@Base 15 + __interceptor_asctime_r@Base 15 + (arch=!sparc64)__interceptor_asprintf@Base 15 + __interceptor_atoi@Base 15 + __interceptor_atol@Base 15 + __interceptor_atoll@Base 15 + __interceptor_backtrace@Base 15 + __interceptor_backtrace_symbols@Base 15 + __interceptor_bcmp@Base 15 + __interceptor_bsearch@Base 15 + __interceptor_bzero@Base 15 + __interceptor_calloc@Base 15 + __interceptor_canonicalize_file_name@Base 15 + __interceptor_capget@Base 15 + __interceptor_capset@Base 15 + __interceptor_cfree@Base 15 + __interceptor_clock_getcpuclockid@Base 15 + __interceptor_clock_getres@Base 15 + __interceptor_clock_gettime@Base 15 + __interceptor_clock_settime@Base 15 + __interceptor_confstr@Base 15 + __interceptor_ctermid@Base 15 + __interceptor_ctime@Base 15 + __interceptor_ctime_r@Base 15 + __interceptor_dlclose@Base 15 + __interceptor_dlopen@Base 15 + __interceptor_dn_comp@Base 15 + __interceptor_dn_expand@Base 15 + __interceptor_drand48_r@Base 15 + __interceptor_endgrent@Base 15 + __interceptor_endpwent@Base 15 + __interceptor_ether_aton@Base 15 + __interceptor_ether_aton_r@Base 15 + __interceptor_ether_hostton@Base 15 + __interceptor_ether_line@Base 15 + __interceptor_ether_ntoa@Base 15 + __interceptor_ether_ntoa_r@Base 15 + __interceptor_ether_ntohost@Base 15 + __interceptor_eventfd_read@Base 15 + __interceptor_eventfd_write@Base 15 + __interceptor_fclose@Base 15 + __interceptor_fdopen@Base 15 + __interceptor_fflush@Base 15 + __interceptor_fgetgrent@Base 15 + __interceptor_fgetgrent_r@Base 15 + __interceptor_fgetpwent@Base 15 + __interceptor_fgetpwent_r@Base 15 + __interceptor_fgets@Base 15 + __interceptor_fgetxattr@Base 15 + __interceptor_flistxattr@Base 15 + __interceptor_fmemopen@Base 15 + __interceptor_fopen64@Base 15 + __interceptor_fopen@Base 15 + __interceptor_fopencookie@Base 15 + (arch=!sparc64)__interceptor_fprintf@Base 15 + __interceptor_fputs@Base 15 + __interceptor_fread@Base 15 + __interceptor_free@Base 15 + __interceptor_freopen64@Base 15 + __interceptor_freopen@Base 15 + __interceptor_frexp@Base 15 + __interceptor_frexpf@Base 15 + __interceptor_frexpl@Base 15 + (arch=!sparc64)__interceptor_fscanf@Base 15 + __interceptor_fstatfs64@Base 15 + __interceptor_fstatfs@Base 15 + __interceptor_fstatvfs64@Base 15 + __interceptor_fstatvfs@Base 15 + __interceptor_ftime@Base 15 + __interceptor_fwrite@Base 15 + __interceptor_get_current_dir_name@Base 15 + __interceptor_getaddrinfo@Base 15 + __interceptor_getcwd@Base 15 + __interceptor_getdelim@Base 15 + __interceptor_getentropy@Base 15 + __interceptor_getgrent@Base 15 + __interceptor_getgrent_r@Base 15 + __interceptor_getgrgid@Base 15 + __interceptor_getgrgid_r@Base 15 + __interceptor_getgrnam@Base 15 + __interceptor_getgrnam_r@Base 15 + __interceptor_getgrouplist@Base 15 + __interceptor_getgroups@Base 15 + __interceptor_gethostbyaddr@Base 15 + __interceptor_gethostbyaddr_r@Base 15 + __interceptor_gethostbyname2@Base 15 + __interceptor_gethostbyname2_r@Base 15 + __interceptor_gethostbyname@Base 15 + __interceptor_gethostbyname_r@Base 15 + __interceptor_gethostent@Base 15 + __interceptor_gethostent_r@Base 15 + __interceptor_getifaddrs@Base 15 + __interceptor_getitimer@Base 15 + __interceptor_getline@Base 15 + __interceptor_getloadavg@Base 15 + __interceptor_getmntent@Base 15 + __interceptor_getmntent_r@Base 15 + __interceptor_getnameinfo@Base 15 + __interceptor_getnetbyaddr@Base 15 + __interceptor_getnetbyname@Base 15 + __interceptor_getnetent@Base 15 + __interceptor_getpass@Base 15 + __interceptor_getpeername@Base 15 + __interceptor_getprotobyname@Base 15 + __interceptor_getprotobyname_r@Base 15 + __interceptor_getprotobynumber@Base 15 + __interceptor_getprotobynumber_r@Base 15 + __interceptor_getprotoent@Base 15 + __interceptor_getprotoent_r@Base 15 + __interceptor_getpwent@Base 15 + __interceptor_getpwent_r@Base 15 + __interceptor_getpwnam@Base 15 + __interceptor_getpwnam_r@Base 15 + __interceptor_getpwuid@Base 15 + __interceptor_getpwuid_r@Base 15 + __interceptor_getrandom@Base 15 + __interceptor_getresgid@Base 15 + __interceptor_getresuid@Base 15 + __interceptor_getsockname@Base 15 + __interceptor_getsockopt@Base 15 + __interceptor_getusershell@Base 15 + __interceptor_getutent@Base 15 + __interceptor_getutid@Base 15 + __interceptor_getutline@Base 15 + __interceptor_getutxent@Base 15 + __interceptor_getutxid@Base 15 + __interceptor_getutxline@Base 15 + __interceptor_getxattr@Base 15 + __interceptor_glob64@Base 15 + __interceptor_glob@Base 15 + __interceptor_gmtime@Base 15 + __interceptor_gmtime_r@Base 15 + __interceptor_iconv@Base 15 + __interceptor_if_indextoname@Base 15 + __interceptor_if_nametoindex@Base 15 + __interceptor_index@Base 15 + __interceptor_inet_aton@Base 15 + __interceptor_inet_ntop@Base 15 + __interceptor_inet_pton@Base 15 + __interceptor_initgroups@Base 15 + __interceptor_ioctl@Base 15 + __interceptor_lgamma@Base 15 + __interceptor_lgamma_r@Base 15 + __interceptor_lgammaf@Base 15 + __interceptor_lgammaf_r@Base 15 + __interceptor_lgammal@Base 15 + __interceptor_lgammal_r@Base 15 + __interceptor_lgetxattr@Base 15 + __interceptor_listxattr@Base 15 + __interceptor_llistxattr@Base 15 + __interceptor_localtime@Base 15 + __interceptor_localtime_r@Base 15 + __interceptor_longjmp@Base 15 + __interceptor_lrand48_r@Base 15 + __interceptor_lstat64@Base 15 + __interceptor_lstat@Base 15 + __interceptor_makecontext@Base 15 + __interceptor_mallinfo@Base 15 + __interceptor_malloc@Base 15 + __interceptor_malloc_stats@Base 15 + __interceptor_malloc_usable_size@Base 15 + __interceptor_mallopt@Base 15 + __interceptor_mbsnrtowcs@Base 15 + __interceptor_mbsrtowcs@Base 15 + __interceptor_mbstowcs@Base 15 + __interceptor_mcheck@Base 15 + __interceptor_mcheck_pedantic@Base 15 + __interceptor_memalign@Base 15 + __interceptor_memchr@Base 15 + __interceptor_memcmp@Base 15 + __interceptor_memcpy@Base 15 + __interceptor_memmem@Base 15 + __interceptor_memmove@Base 15 + __interceptor_memrchr@Base 15 + __interceptor_memset@Base 15 + __interceptor_mincore@Base 15 + __interceptor_mktime@Base 15 + __interceptor_mlock@Base 15 + __interceptor_mlockall@Base 15 + __interceptor_mmap64@Base 15 + __interceptor_mmap@Base 15 + __interceptor_modf@Base 15 + __interceptor_modff@Base 15 + __interceptor_modfl@Base 15 + __interceptor_mprobe@Base 15 + __interceptor_mprotect@Base 15 + __interceptor_msgrcv@Base 15 + __interceptor_msgsnd@Base 15 + __interceptor_munlock@Base 15 + __interceptor_munlockall@Base 15 + __interceptor_munmap@Base 15 + __interceptor_name_to_handle_at@Base 15 + __interceptor_open_by_handle_at@Base 15 + __interceptor_open_memstream@Base 15 + __interceptor_open_wmemstream@Base 15 + __interceptor_opendir@Base 15 + __interceptor_pclose@Base 15 + __interceptor_poll@Base 15 + __interceptor_popen@Base 15 + __interceptor_posix_memalign@Base 15 + __interceptor_posix_spawn@Base 15 + __interceptor_posix_spawnp@Base 15 + __interceptor_ppoll@Base 15 + __interceptor_prctl@Base 15 + __interceptor_pread64@Base 15 + __interceptor_pread@Base 15 + __interceptor_preadv2@Base 15 + __interceptor_preadv64@Base 15 + __interceptor_preadv@Base 15 + (arch=!sparc64)__interceptor_printf@Base 15 + __interceptor_process_vm_readv@Base 15 + __interceptor_process_vm_writev@Base 15 + __interceptor_pthread_attr_getaffinity_np@Base 15 + __interceptor_pthread_attr_getdetachstate@Base 15 + __interceptor_pthread_attr_getguardsize@Base 15 + __interceptor_pthread_attr_getinheritsched@Base 15 + __interceptor_pthread_attr_getschedparam@Base 15 + __interceptor_pthread_attr_getschedpolicy@Base 15 + __interceptor_pthread_attr_getscope@Base 15 + __interceptor_pthread_attr_getstack@Base 15 + __interceptor_pthread_attr_getstacksize@Base 15 + __interceptor_pthread_barrierattr_getpshared@Base 15 + __interceptor_pthread_condattr_getclock@Base 15 + __interceptor_pthread_condattr_getpshared@Base 15 + __interceptor_pthread_create@Base 15 + __interceptor_pthread_detach@Base 15 + __interceptor_pthread_exit@Base 15 + __interceptor_pthread_getaffinity_np@Base 15 + __interceptor_pthread_getcpuclockid@Base 15 + __interceptor_pthread_getname_np@Base 15 + __interceptor_pthread_getschedparam@Base 15 + __interceptor_pthread_join@Base 15 + __interceptor_pthread_mutexattr_getprioceiling@Base 15 + __interceptor_pthread_mutexattr_getprotocol@Base 15 + __interceptor_pthread_mutexattr_getpshared@Base 15 + __interceptor_pthread_mutexattr_getrobust@Base 15 + __interceptor_pthread_mutexattr_getrobust_np@Base 15 + __interceptor_pthread_mutexattr_gettype@Base 15 + __interceptor_pthread_rwlockattr_getkind_np@Base 15 + __interceptor_pthread_rwlockattr_getpshared@Base 15 + __interceptor_pthread_setcancelstate@Base 15 + __interceptor_pthread_setcanceltype@Base 15 + __interceptor_pthread_setname_np@Base 15 + __interceptor_pthread_sigmask@Base 15 + __interceptor_pthread_timedjoin_np@Base 15 + __interceptor_pthread_tryjoin_np@Base 15 + (arch=!ppc64)__interceptor_ptrace@Base 15 + __interceptor_ptsname@Base 15 + __interceptor_ptsname_r@Base 15 + __interceptor_puts@Base 15 + __interceptor_pututxline@Base 15 + __interceptor_pvalloc@Base 15 + __interceptor_pwrite64@Base 15 + __interceptor_pwrite@Base 15 + __interceptor_pwritev2@Base 15 + __interceptor_pwritev64@Base 15 + __interceptor_pwritev@Base 15 + __interceptor_qsort@Base 15 + __interceptor_qsort_r@Base 15 + __interceptor_rand_r@Base 15 + __interceptor_random_r@Base 15 + __interceptor_read@Base 15 + __interceptor_readdir64@Base 15 + __interceptor_readdir64_r@Base 15 + __interceptor_readdir@Base 15 + __interceptor_readdir_r@Base 15 + __interceptor_readlink@Base 15 + __interceptor_readlinkat@Base 15 + __interceptor_readv@Base 15 + __interceptor_realloc@Base 15 + __interceptor_reallocarray@Base 15 + __interceptor_realpath@Base 15 + __interceptor_recv@Base 15 + __interceptor_recvfrom@Base 15 + __interceptor_recvmmsg@Base 15 + __interceptor_recvmsg@Base 15 + __interceptor_regcomp@Base 15 + __interceptor_regerror@Base 15 + __interceptor_regexec@Base 15 + __interceptor_regfree@Base 15 + __interceptor_remquo@Base 15 + __interceptor_remquof@Base 15 + __interceptor_remquol@Base 15 + __interceptor_scandir64@Base 15 + __interceptor_scandir@Base 15 + (arch=!sparc64)__interceptor_scanf@Base 15 + __interceptor_sched_getaffinity@Base 15 + __interceptor_sched_getparam@Base 15 + __interceptor_sem_destroy@Base 15 + __interceptor_sem_getvalue@Base 15 + __interceptor_sem_init@Base 15 + __interceptor_sem_open@Base 15 + __interceptor_sem_post@Base 15 + __interceptor_sem_timedwait@Base 15 + __interceptor_sem_trywait@Base 15 + __interceptor_sem_unlink@Base 15 + __interceptor_sem_wait@Base 15 + __interceptor_send@Base 15 + __interceptor_sendmmsg@Base 15 + __interceptor_sendmsg@Base 15 + __interceptor_sendto@Base 15 + __interceptor_setbuf@Base 15 + __interceptor_setbuffer@Base 15 + __interceptor_setgrent@Base 15 + __interceptor_setitimer@Base 15 + __interceptor_setlinebuf@Base 15 + __interceptor_setlocale@Base 15 + __interceptor_setpwent@Base 15 + __interceptor_setvbuf@Base 15 + __interceptor_sigaction@Base 15 + __interceptor_sigaltstack@Base 15 + __interceptor_sigandset@Base 15 + __interceptor_sigemptyset@Base 15 + __interceptor_sigfillset@Base 15 + __interceptor_siglongjmp@Base 15 + __interceptor_signal@Base 15 + __interceptor_sigorset@Base 15 + __interceptor_sigpending@Base 15 + __interceptor_sigprocmask@Base 15 + __interceptor_sigtimedwait@Base 15 + __interceptor_sigwait@Base 15 + __interceptor_sigwaitinfo@Base 15 + __interceptor_sincos@Base 15 + __interceptor_sincosf@Base 15 + __interceptor_sincosl@Base 15 + (arch=!sparc64)__interceptor_snprintf@Base 15 + (arch=!sparc64)__interceptor_sprintf@Base 15 + (arch=!sparc64)__interceptor_sscanf@Base 15 + __interceptor_stat64@Base 15 + __interceptor_stat@Base 15 + __interceptor_statfs64@Base 15 + __interceptor_statfs@Base 15 + __interceptor_statvfs64@Base 15 + __interceptor_statvfs@Base 15 + __interceptor_strcasecmp@Base 15 + __interceptor_strcasestr@Base 15 + __interceptor_strcat@Base 15 + __interceptor_strchr@Base 15 + __interceptor_strchrnul@Base 15 + __interceptor_strcmp@Base 15 + __interceptor_strcpy@Base 15 + __interceptor_strcspn@Base 15 + __interceptor_strdup@Base 15 + __interceptor_strerror@Base 15 + __interceptor_strerror_r@Base 15 + __interceptor_strlen@Base 15 + __interceptor_strncasecmp@Base 15 + __interceptor_strncat@Base 15 + __interceptor_strncmp@Base 15 + __interceptor_strncpy@Base 15 + __interceptor_strndup@Base 15 + __interceptor_strnlen@Base 15 + __interceptor_strpbrk@Base 15 + __interceptor_strptime@Base 15 + __interceptor_strrchr@Base 15 + __interceptor_strspn@Base 15 + __interceptor_strstr@Base 15 + __interceptor_strtoimax@Base 15 + __interceptor_strtok@Base 15 + __interceptor_strtol@Base 15 + __interceptor_strtoll@Base 15 + __interceptor_strtoumax@Base 15 + __interceptor_strxfrm@Base 15 + __interceptor_strxfrm_l@Base 15 + __interceptor_swapcontext@Base 15 + __interceptor_sysinfo@Base 15 + __interceptor_tcgetattr@Base 15 + __interceptor_tempnam@Base 15 + __interceptor_textdomain@Base 15 + __interceptor_time@Base 15 + __interceptor_timerfd_gettime@Base 15 + __interceptor_timerfd_settime@Base 15 + __interceptor_times@Base 15 + __interceptor_tmpnam@Base 15 + __interceptor_tmpnam_r@Base 15 + __interceptor_tsearch@Base 15 + __interceptor_ttyname@Base 15 + __interceptor_ttyname_r@Base 15 + __interceptor_uname@Base 15 + __interceptor_valloc@Base 15 + (arch=!sparc64)__interceptor_vasprintf@Base 15 + (arch=amd64 x32)__interceptor_vfork@Base 15 + (arch=!sparc64)__interceptor_vfprintf@Base 15 + (arch=!sparc64)__interceptor_vfscanf@Base 15 + (arch=!sparc64)__interceptor_vprintf@Base 15 + (arch=!sparc64)__interceptor_vscanf@Base 15 + (arch=!sparc64)__interceptor_vsnprintf@Base 15 + (arch=!sparc64)__interceptor_vsprintf@Base 15 + (arch=!sparc64)__interceptor_vsscanf@Base 15 + __interceptor_wait3@Base 15 + __interceptor_wait4@Base 15 + __interceptor_wait@Base 15 + __interceptor_waitid@Base 15 + __interceptor_waitpid@Base 15 + __interceptor_wcrtomb@Base 15 + __interceptor_wcscat@Base 15 + __interceptor_wcsdup@Base 15 + __interceptor_wcslen@Base 15 + __interceptor_wcsncat@Base 15 + __interceptor_wcsnlen@Base 15 + __interceptor_wcsnrtombs@Base 15 + __interceptor_wcsrtombs@Base 15 + __interceptor_wcstombs@Base 15 + __interceptor_wcsxfrm@Base 15 + __interceptor_wcsxfrm_l@Base 15 + __interceptor_wctomb@Base 15 + __interceptor_wordexp@Base 15 + __interceptor_write@Base 15 + __interceptor_writev@Base 15 + __interceptor_xdr_bool@Base 15 + __interceptor_xdr_bytes@Base 15 + __interceptor_xdr_char@Base 15 + __interceptor_xdr_destroy@Base 15 + __interceptor_xdr_double@Base 15 + __interceptor_xdr_enum@Base 15 + __interceptor_xdr_float@Base 15 + __interceptor_xdr_hyper@Base 15 + __interceptor_xdr_int16_t@Base 15 + __interceptor_xdr_int32_t@Base 15 + __interceptor_xdr_int64_t@Base 15 + __interceptor_xdr_int8_t@Base 15 + __interceptor_xdr_int@Base 15 + __interceptor_xdr_long@Base 15 + __interceptor_xdr_longlong_t@Base 15 + __interceptor_xdr_quad_t@Base 15 + __interceptor_xdr_short@Base 15 + __interceptor_xdr_string@Base 15 + __interceptor_xdr_u_char@Base 15 + __interceptor_xdr_u_hyper@Base 15 + __interceptor_xdr_u_int@Base 15 + __interceptor_xdr_u_long@Base 15 + __interceptor_xdr_u_longlong_t@Base 15 + __interceptor_xdr_u_quad_t@Base 15 + __interceptor_xdr_u_short@Base 15 + __interceptor_xdr_uint16_t@Base 15 + __interceptor_xdr_uint32_t@Base 15 + __interceptor_xdr_uint64_t@Base 15 + __interceptor_xdr_uint8_t@Base 15 + __interceptor_xdrmem_create@Base 15 + __interceptor_xdrrec_create@Base 15 + __interceptor_xdrstdio_create@Base 15 + (arch=!sparc64)__isoc23_fscanf@Base 15 + (arch=!sparc64)__isoc23_scanf@Base 15 + (arch=!sparc64)__isoc23_sscanf@Base 15 + __isoc23_strtoimax@Base 15 + __isoc23_strtol@Base 15 + __isoc23_strtoll@Base 15 + __isoc23_strtoumax@Base 15 + (arch=!sparc64)__isoc23_vfscanf@Base 15 + (arch=!sparc64)__isoc23_vscanf@Base 15 + (arch=!sparc64)__isoc23_vsscanf@Base 15 + __isoc99_fprintf@Base 15 + (arch=!sparc64)__isoc99_fscanf@Base 15 + __isoc99_printf@Base 15 + (arch=!sparc64)__isoc99_scanf@Base 15 + __isoc99_snprintf@Base 15 + __isoc99_sprintf@Base 15 + (arch=!sparc64)__isoc99_sscanf@Base 15 + __isoc99_vfprintf@Base 15 + (arch=!sparc64)__isoc99_vfscanf@Base 15 + __isoc99_vprintf@Base 15 + (arch=!sparc64)__isoc99_vscanf@Base 15 + __isoc99_vsnprintf@Base 15 + __isoc99_vsprintf@Base 15 + (arch=!sparc64)__isoc99_vsscanf@Base 15 + __libc_memalign@Base 15 + __longjmp_chk@Base 15 + __lsan_default_options@Base 15 + __lsan_disable@Base 15 + __lsan_do_leak_check@Base 15 + __lsan_do_recoverable_leak_check@Base 15 + __lsan_enable@Base 15 + __lsan_ignore_object@Base 15 + __lsan_register_root_region@Base 15 + __lsan_unregister_root_region@Base 15 + __lxstat64@Base 15 + __lxstat@Base 15 + (arch=sparc64)__nldbl___isoc23_fscanf@Base 15 + (arch=sparc64)__nldbl___isoc23_scanf@Base 15 + (arch=sparc64)__nldbl___isoc23_sscanf@Base 15 + (arch=sparc64)__nldbl___isoc23_vfscanf@Base 15 + (arch=sparc64)__nldbl___isoc23_vscanf@Base 15 + (arch=sparc64)__nldbl___isoc23_vsscanf@Base 15 + (arch=sparc64)__nldbl___isoc99_fscanf@Base 15 + (arch=sparc64)__nldbl___isoc99_scanf@Base 15 + (arch=sparc64)__nldbl___isoc99_sscanf@Base 15 + (arch=sparc64)__nldbl___isoc99_vfscanf@Base 15 + (arch=sparc64)__nldbl___isoc99_vscanf@Base 15 + (arch=sparc64)__nldbl___isoc99_vsscanf@Base 15 + (arch=sparc64)__nldbl_asprintf@Base 15 + (arch=sparc64)__nldbl_fprintf@Base 15 + (arch=sparc64)__nldbl_fscanf@Base 15 + (arch=sparc64)__nldbl_printf@Base 15 + (arch=sparc64)__nldbl_scanf@Base 15 + (arch=sparc64)__nldbl_snprintf@Base 15 + (arch=sparc64)__nldbl_sprintf@Base 15 + (arch=sparc64)__nldbl_sscanf@Base 15 + (arch=sparc64)__nldbl_vasprintf@Base 15 + (arch=sparc64)__nldbl_vfprintf@Base 15 + (arch=sparc64)__nldbl_vfscanf@Base 15 + (arch=sparc64)__nldbl_vprintf@Base 15 + (arch=sparc64)__nldbl_vscanf@Base 15 + (arch=sparc64)__nldbl_vsnprintf@Base 15 + (arch=sparc64)__nldbl_vsprintf@Base 15 + (arch=sparc64)__nldbl_vsscanf@Base 15 + __overflow@Base 15 + __sancov_default_options@Base 15 + __sancov_lowest_stack@Base 15 + __sanitizer_acquire_crash_state@Base 15 + __sanitizer_annotate_contiguous_container@Base 15 + __sanitizer_annotate_double_ended_contiguous_container@Base 15 + __sanitizer_contiguous_container_find_bad_address@Base 15 + __sanitizer_copy_contiguous_container_annotations@Base 15 + __sanitizer_cov_8bit_counters_init@Base 15 + __sanitizer_cov_bool_flag_init@Base 15 + __sanitizer_cov_dump@Base 15 + __sanitizer_cov_load16@Base 15 + __sanitizer_cov_load1@Base 15 + __sanitizer_cov_load2@Base 15 + __sanitizer_cov_load4@Base 15 + __sanitizer_cov_load8@Base 15 + __sanitizer_cov_pcs_init@Base 15 + __sanitizer_cov_reset@Base 15 + __sanitizer_cov_store16@Base 15 + __sanitizer_cov_store1@Base 15 + __sanitizer_cov_store2@Base 15 + __sanitizer_cov_store4@Base 15 + __sanitizer_cov_store8@Base 15 + __sanitizer_cov_trace_cmp1@Base 15 + __sanitizer_cov_trace_cmp2@Base 15 + __sanitizer_cov_trace_cmp4@Base 15 + __sanitizer_cov_trace_cmp8@Base 15 + __sanitizer_cov_trace_cmp@Base 15 + __sanitizer_cov_trace_const_cmp1@Base 15 + __sanitizer_cov_trace_const_cmp2@Base 15 + __sanitizer_cov_trace_const_cmp4@Base 15 + __sanitizer_cov_trace_const_cmp8@Base 15 + __sanitizer_cov_trace_div4@Base 15 + __sanitizer_cov_trace_div8@Base 15 + __sanitizer_cov_trace_gep@Base 15 + __sanitizer_cov_trace_pc_guard@Base 15 + __sanitizer_cov_trace_pc_guard_init@Base 15 + __sanitizer_cov_trace_pc_indir@Base 15 + __sanitizer_cov_trace_switch@Base 15 + __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 + __sanitizer_dump_coverage@Base 15 + __sanitizer_dump_trace_pc_guard_coverage@Base 15 + __sanitizer_finish_switch_fiber@Base 15 + __sanitizer_free_hook@Base 15 + __sanitizer_get_allocated_begin@Base 15 + __sanitizer_get_allocated_size@Base 15 + __sanitizer_get_allocated_size_fast@Base 15 + __sanitizer_get_current_allocated_bytes@Base 15 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 15 + __sanitizer_get_free_bytes@Base 15 + __sanitizer_get_heap_size@Base 15 + __sanitizer_get_module_and_offset_for_pc@Base 15 + __sanitizer_get_ownership@Base 15 + __sanitizer_get_report_path@Base 15 + __sanitizer_get_unmapped_bytes@Base 15 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 15 + __sanitizer_internal_memcpy@Base 15 + __sanitizer_internal_memmove@Base 15 + __sanitizer_internal_memset@Base 15 + __sanitizer_malloc_hook@Base 15 + __sanitizer_on_print@Base 15 + __sanitizer_print_memory_profile@Base 15 + __sanitizer_print_stack_trace@Base 15 + __sanitizer_ptr_cmp@Base 15 + __sanitizer_ptr_sub@Base 15 + __sanitizer_purge_allocator@Base 15 + __sanitizer_report_error_summary@Base 15 + __sanitizer_sandbox_on_notify@Base 15 + __sanitizer_set_death_callback@Base 15 + __sanitizer_set_report_fd@Base 15 + __sanitizer_set_report_path@Base 15 + __sanitizer_start_switch_fiber@Base 15 + __sanitizer_symbolize_global@Base 15 + __sanitizer_symbolize_pc@Base 15 + __sanitizer_syscall_post_impl_accept4@Base 15 + __sanitizer_syscall_post_impl_accept@Base 15 + __sanitizer_syscall_post_impl_access@Base 15 + __sanitizer_syscall_post_impl_acct@Base 15 + __sanitizer_syscall_post_impl_add_key@Base 15 + __sanitizer_syscall_post_impl_adjtimex@Base 15 + __sanitizer_syscall_post_impl_alarm@Base 15 + __sanitizer_syscall_post_impl_bdflush@Base 15 + __sanitizer_syscall_post_impl_bind@Base 15 + __sanitizer_syscall_post_impl_brk@Base 15 + __sanitizer_syscall_post_impl_capget@Base 15 + __sanitizer_syscall_post_impl_capset@Base 15 + __sanitizer_syscall_post_impl_chdir@Base 15 + __sanitizer_syscall_post_impl_chmod@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_chown16@Base 15 + __sanitizer_syscall_post_impl_chown@Base 15 + __sanitizer_syscall_post_impl_chroot@Base 15 + __sanitizer_syscall_post_impl_clock_adjtime@Base 15 + __sanitizer_syscall_post_impl_clock_getres@Base 15 + __sanitizer_syscall_post_impl_clock_gettime@Base 15 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_post_impl_clock_settime@Base 15 + __sanitizer_syscall_post_impl_close@Base 15 + __sanitizer_syscall_post_impl_connect@Base 15 + __sanitizer_syscall_post_impl_creat@Base 15 + __sanitizer_syscall_post_impl_delete_module@Base 15 + __sanitizer_syscall_post_impl_dup2@Base 15 + __sanitizer_syscall_post_impl_dup3@Base 15 + __sanitizer_syscall_post_impl_dup@Base 15 + __sanitizer_syscall_post_impl_epoll_create1@Base 15 + __sanitizer_syscall_post_impl_epoll_create@Base 15 + __sanitizer_syscall_post_impl_epoll_ctl@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait@Base 15 + __sanitizer_syscall_post_impl_epoll_wait@Base 15 + __sanitizer_syscall_post_impl_eventfd2@Base 15 + __sanitizer_syscall_post_impl_eventfd@Base 15 + __sanitizer_syscall_post_impl_exit@Base 15 + __sanitizer_syscall_post_impl_exit_group@Base 15 + __sanitizer_syscall_post_impl_faccessat@Base 15 + __sanitizer_syscall_post_impl_fchdir@Base 15 + __sanitizer_syscall_post_impl_fchmod@Base 15 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_fchown16@Base 15 + __sanitizer_syscall_post_impl_fchown@Base 15 + __sanitizer_syscall_post_impl_fchownat@Base 15 + __sanitizer_syscall_post_impl_fcntl64@Base 15 + __sanitizer_syscall_post_impl_fcntl@Base 15 + __sanitizer_syscall_post_impl_fdatasync@Base 15 + __sanitizer_syscall_post_impl_fgetxattr@Base 15 + __sanitizer_syscall_post_impl_flistxattr@Base 15 + __sanitizer_syscall_post_impl_flock@Base 15 + __sanitizer_syscall_post_impl_fork@Base 15 + __sanitizer_syscall_post_impl_fremovexattr@Base 15 + __sanitizer_syscall_post_impl_fsetxattr@Base 15 + __sanitizer_syscall_post_impl_fstat64@Base 15 + __sanitizer_syscall_post_impl_fstat@Base 15 + __sanitizer_syscall_post_impl_fstatat64@Base 15 + __sanitizer_syscall_post_impl_fstatfs64@Base 15 + __sanitizer_syscall_post_impl_fstatfs@Base 15 + __sanitizer_syscall_post_impl_fsync@Base 15 + __sanitizer_syscall_post_impl_ftruncate@Base 15 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 15 + __sanitizer_syscall_post_impl_get_mempolicy@Base 15 + __sanitizer_syscall_post_impl_get_robust_list@Base 15 + __sanitizer_syscall_post_impl_getcpu@Base 15 + __sanitizer_syscall_post_impl_getcwd@Base 15 + __sanitizer_syscall_post_impl_getdents64@Base 15 + __sanitizer_syscall_post_impl_getdents@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getegid16@Base 15 + __sanitizer_syscall_post_impl_getegid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_geteuid16@Base 15 + __sanitizer_syscall_post_impl_geteuid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getgid16@Base 15 + __sanitizer_syscall_post_impl_getgid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getgroups16@Base 15 + __sanitizer_syscall_post_impl_getgroups@Base 15 + __sanitizer_syscall_post_impl_gethostname@Base 15 + __sanitizer_syscall_post_impl_getitimer@Base 15 + __sanitizer_syscall_post_impl_getpeername@Base 15 + __sanitizer_syscall_post_impl_getpgid@Base 15 + __sanitizer_syscall_post_impl_getpgrp@Base 15 + __sanitizer_syscall_post_impl_getpid@Base 15 + __sanitizer_syscall_post_impl_getppid@Base 15 + __sanitizer_syscall_post_impl_getpriority@Base 15 + __sanitizer_syscall_post_impl_getrandom@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getresgid16@Base 15 + __sanitizer_syscall_post_impl_getresgid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getresuid16@Base 15 + __sanitizer_syscall_post_impl_getresuid@Base 15 + __sanitizer_syscall_post_impl_getrlimit@Base 15 + __sanitizer_syscall_post_impl_getrusage@Base 15 + __sanitizer_syscall_post_impl_getsid@Base 15 + __sanitizer_syscall_post_impl_getsockname@Base 15 + __sanitizer_syscall_post_impl_getsockopt@Base 15 + __sanitizer_syscall_post_impl_gettid@Base 15 + __sanitizer_syscall_post_impl_gettimeofday@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getuid16@Base 15 + __sanitizer_syscall_post_impl_getuid@Base 15 + __sanitizer_syscall_post_impl_getxattr@Base 15 + __sanitizer_syscall_post_impl_init_module@Base 15 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_post_impl_inotify_init1@Base 15 + __sanitizer_syscall_post_impl_inotify_init@Base 15 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_post_impl_io_cancel@Base 15 + __sanitizer_syscall_post_impl_io_destroy@Base 15 + __sanitizer_syscall_post_impl_io_getevents@Base 15 + __sanitizer_syscall_post_impl_io_setup@Base 15 + __sanitizer_syscall_post_impl_io_submit@Base 15 + __sanitizer_syscall_post_impl_ioctl@Base 15 + __sanitizer_syscall_post_impl_ioperm@Base 15 + __sanitizer_syscall_post_impl_ioprio_get@Base 15 + __sanitizer_syscall_post_impl_ioprio_set@Base 15 + __sanitizer_syscall_post_impl_ipc@Base 15 + __sanitizer_syscall_post_impl_kexec_load@Base 15 + __sanitizer_syscall_post_impl_keyctl@Base 15 + __sanitizer_syscall_post_impl_kill@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_lchown16@Base 15 + __sanitizer_syscall_post_impl_lchown@Base 15 + __sanitizer_syscall_post_impl_lgetxattr@Base 15 + __sanitizer_syscall_post_impl_link@Base 15 + __sanitizer_syscall_post_impl_linkat@Base 15 + __sanitizer_syscall_post_impl_listen@Base 15 + __sanitizer_syscall_post_impl_listxattr@Base 15 + __sanitizer_syscall_post_impl_llistxattr@Base 15 + __sanitizer_syscall_post_impl_llseek@Base 15 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_post_impl_lremovexattr@Base 15 + __sanitizer_syscall_post_impl_lseek@Base 15 + __sanitizer_syscall_post_impl_lsetxattr@Base 15 + __sanitizer_syscall_post_impl_lstat64@Base 15 + __sanitizer_syscall_post_impl_lstat@Base 15 + __sanitizer_syscall_post_impl_madvise@Base 15 + __sanitizer_syscall_post_impl_mbind@Base 15 + __sanitizer_syscall_post_impl_migrate_pages@Base 15 + __sanitizer_syscall_post_impl_mincore@Base 15 + __sanitizer_syscall_post_impl_mkdir@Base 15 + __sanitizer_syscall_post_impl_mkdirat@Base 15 + __sanitizer_syscall_post_impl_mknod@Base 15 + __sanitizer_syscall_post_impl_mknodat@Base 15 + __sanitizer_syscall_post_impl_mlock@Base 15 + __sanitizer_syscall_post_impl_mlockall@Base 15 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_post_impl_mount@Base 15 + __sanitizer_syscall_post_impl_move_pages@Base 15 + __sanitizer_syscall_post_impl_mprotect@Base 15 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_post_impl_mq_notify@Base 15 + __sanitizer_syscall_post_impl_mq_open@Base 15 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_post_impl_mq_timedsend@Base 15 + __sanitizer_syscall_post_impl_mq_unlink@Base 15 + __sanitizer_syscall_post_impl_mremap@Base 15 + __sanitizer_syscall_post_impl_msgctl@Base 15 + __sanitizer_syscall_post_impl_msgget@Base 15 + __sanitizer_syscall_post_impl_msgrcv@Base 15 + __sanitizer_syscall_post_impl_msgsnd@Base 15 + __sanitizer_syscall_post_impl_msync@Base 15 + __sanitizer_syscall_post_impl_munlock@Base 15 + __sanitizer_syscall_post_impl_munlockall@Base 15 + __sanitizer_syscall_post_impl_munmap@Base 15 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_post_impl_nanosleep@Base 15 + __sanitizer_syscall_post_impl_newfstat@Base 15 + __sanitizer_syscall_post_impl_newfstatat@Base 15 + __sanitizer_syscall_post_impl_newlstat@Base 15 + __sanitizer_syscall_post_impl_newstat@Base 15 + __sanitizer_syscall_post_impl_newuname@Base 15 + __sanitizer_syscall_post_impl_ni_syscall@Base 15 + __sanitizer_syscall_post_impl_nice@Base 15 + __sanitizer_syscall_post_impl_old_getrlimit@Base 15 + __sanitizer_syscall_post_impl_old_mmap@Base 15 + __sanitizer_syscall_post_impl_old_readdir@Base 15 + __sanitizer_syscall_post_impl_old_select@Base 15 + __sanitizer_syscall_post_impl_oldumount@Base 15 + __sanitizer_syscall_post_impl_olduname@Base 15 + __sanitizer_syscall_post_impl_open@Base 15 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_post_impl_openat@Base 15 + __sanitizer_syscall_post_impl_pause@Base 15 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_post_impl_pciconfig_read@Base 15 + __sanitizer_syscall_post_impl_pciconfig_write@Base 15 + __sanitizer_syscall_post_impl_perf_event_open@Base 15 + __sanitizer_syscall_post_impl_personality@Base 15 + __sanitizer_syscall_post_impl_pipe2@Base 15 + __sanitizer_syscall_post_impl_pipe@Base 15 + __sanitizer_syscall_post_impl_pivot_root@Base 15 + __sanitizer_syscall_post_impl_poll@Base 15 + __sanitizer_syscall_post_impl_ppoll@Base 15 + __sanitizer_syscall_post_impl_pread64@Base 15 + __sanitizer_syscall_post_impl_preadv@Base 15 + __sanitizer_syscall_post_impl_prlimit64@Base 15 + __sanitizer_syscall_post_impl_process_vm_readv@Base 15 + __sanitizer_syscall_post_impl_process_vm_writev@Base 15 + __sanitizer_syscall_post_impl_pselect6@Base 15 + __sanitizer_syscall_post_impl_ptrace@Base 15 + __sanitizer_syscall_post_impl_pwrite64@Base 15 + __sanitizer_syscall_post_impl_pwritev@Base 15 + __sanitizer_syscall_post_impl_quotactl@Base 15 + __sanitizer_syscall_post_impl_read@Base 15 + __sanitizer_syscall_post_impl_readlink@Base 15 + __sanitizer_syscall_post_impl_readlinkat@Base 15 + __sanitizer_syscall_post_impl_readv@Base 15 + __sanitizer_syscall_post_impl_reboot@Base 15 + __sanitizer_syscall_post_impl_recv@Base 15 + __sanitizer_syscall_post_impl_recvfrom@Base 15 + __sanitizer_syscall_post_impl_recvmmsg@Base 15 + __sanitizer_syscall_post_impl_recvmsg@Base 15 + __sanitizer_syscall_post_impl_remap_file_pages@Base 15 + __sanitizer_syscall_post_impl_removexattr@Base 15 + __sanitizer_syscall_post_impl_rename@Base 15 + __sanitizer_syscall_post_impl_renameat@Base 15 + __sanitizer_syscall_post_impl_request_key@Base 15 + __sanitizer_syscall_post_impl_restart_syscall@Base 15 + __sanitizer_syscall_post_impl_rmdir@Base 15 + __sanitizer_syscall_post_impl_rt_sigaction@Base 15 + __sanitizer_syscall_post_impl_rt_sigpending@Base 15 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_getparam@Base 15 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_setparam@Base 15 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_yield@Base 15 + __sanitizer_syscall_post_impl_select@Base 15 + __sanitizer_syscall_post_impl_semctl@Base 15 + __sanitizer_syscall_post_impl_semget@Base 15 + __sanitizer_syscall_post_impl_semop@Base 15 + __sanitizer_syscall_post_impl_semtimedop@Base 15 + __sanitizer_syscall_post_impl_send@Base 15 + __sanitizer_syscall_post_impl_sendfile64@Base 15 + __sanitizer_syscall_post_impl_sendfile@Base 15 + __sanitizer_syscall_post_impl_sendmmsg@Base 15 + __sanitizer_syscall_post_impl_sendmsg@Base 15 + __sanitizer_syscall_post_impl_sendto@Base 15 + __sanitizer_syscall_post_impl_set_mempolicy@Base 15 + __sanitizer_syscall_post_impl_set_robust_list@Base 15 + __sanitizer_syscall_post_impl_set_tid_address@Base 15 + __sanitizer_syscall_post_impl_setdomainname@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setfsgid16@Base 15 + __sanitizer_syscall_post_impl_setfsgid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setfsuid16@Base 15 + __sanitizer_syscall_post_impl_setfsuid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setgid16@Base 15 + __sanitizer_syscall_post_impl_setgid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setgroups16@Base 15 + __sanitizer_syscall_post_impl_setgroups@Base 15 + __sanitizer_syscall_post_impl_sethostname@Base 15 + __sanitizer_syscall_post_impl_setitimer@Base 15 + __sanitizer_syscall_post_impl_setns@Base 15 + __sanitizer_syscall_post_impl_setpgid@Base 15 + __sanitizer_syscall_post_impl_setpriority@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setregid16@Base 15 + __sanitizer_syscall_post_impl_setregid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setresgid16@Base 15 + __sanitizer_syscall_post_impl_setresgid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setresuid16@Base 15 + __sanitizer_syscall_post_impl_setresuid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setreuid16@Base 15 + __sanitizer_syscall_post_impl_setreuid@Base 15 + __sanitizer_syscall_post_impl_setrlimit@Base 15 + __sanitizer_syscall_post_impl_setsid@Base 15 + __sanitizer_syscall_post_impl_setsockopt@Base 15 + __sanitizer_syscall_post_impl_settimeofday@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setuid16@Base 15 + __sanitizer_syscall_post_impl_setuid@Base 15 + __sanitizer_syscall_post_impl_setxattr@Base 15 + __sanitizer_syscall_post_impl_sgetmask@Base 15 + __sanitizer_syscall_post_impl_shmat@Base 15 + __sanitizer_syscall_post_impl_shmctl@Base 15 + __sanitizer_syscall_post_impl_shmdt@Base 15 + __sanitizer_syscall_post_impl_shmget@Base 15 + __sanitizer_syscall_post_impl_shutdown@Base 15 + __sanitizer_syscall_post_impl_sigaction@Base 15 + __sanitizer_syscall_post_impl_sigaltstack@Base 15 + __sanitizer_syscall_post_impl_signal@Base 15 + __sanitizer_syscall_post_impl_signalfd4@Base 15 + __sanitizer_syscall_post_impl_signalfd@Base 15 + __sanitizer_syscall_post_impl_sigpending@Base 15 + __sanitizer_syscall_post_impl_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_socket@Base 15 + __sanitizer_syscall_post_impl_socketcall@Base 15 + __sanitizer_syscall_post_impl_socketpair@Base 15 + __sanitizer_syscall_post_impl_splice@Base 15 + __sanitizer_syscall_post_impl_spu_create@Base 15 + __sanitizer_syscall_post_impl_spu_run@Base 15 + __sanitizer_syscall_post_impl_ssetmask@Base 15 + __sanitizer_syscall_post_impl_stat64@Base 15 + __sanitizer_syscall_post_impl_stat@Base 15 + __sanitizer_syscall_post_impl_statfs64@Base 15 + __sanitizer_syscall_post_impl_statfs@Base 15 + __sanitizer_syscall_post_impl_stime@Base 15 + __sanitizer_syscall_post_impl_swapoff@Base 15 + __sanitizer_syscall_post_impl_swapon@Base 15 + __sanitizer_syscall_post_impl_symlink@Base 15 + __sanitizer_syscall_post_impl_symlinkat@Base 15 + __sanitizer_syscall_post_impl_sync@Base 15 + __sanitizer_syscall_post_impl_syncfs@Base 15 + __sanitizer_syscall_post_impl_sysctl@Base 15 + __sanitizer_syscall_post_impl_sysfs@Base 15 + __sanitizer_syscall_post_impl_sysinfo@Base 15 + __sanitizer_syscall_post_impl_syslog@Base 15 + __sanitizer_syscall_post_impl_tee@Base 15 + __sanitizer_syscall_post_impl_tgkill@Base 15 + __sanitizer_syscall_post_impl_time@Base 15 + __sanitizer_syscall_post_impl_timer_create@Base 15 + __sanitizer_syscall_post_impl_timer_delete@Base 15 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_post_impl_timer_gettime@Base 15 + __sanitizer_syscall_post_impl_timer_settime@Base 15 + __sanitizer_syscall_post_impl_timerfd_create@Base 15 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_post_impl_timerfd_settime@Base 15 + __sanitizer_syscall_post_impl_times@Base 15 + __sanitizer_syscall_post_impl_tkill@Base 15 + __sanitizer_syscall_post_impl_truncate@Base 15 + __sanitizer_syscall_post_impl_umask@Base 15 + __sanitizer_syscall_post_impl_umount@Base 15 + __sanitizer_syscall_post_impl_uname@Base 15 + __sanitizer_syscall_post_impl_unlink@Base 15 + __sanitizer_syscall_post_impl_unlinkat@Base 15 + __sanitizer_syscall_post_impl_unshare@Base 15 + __sanitizer_syscall_post_impl_uselib@Base 15 + __sanitizer_syscall_post_impl_ustat@Base 15 + __sanitizer_syscall_post_impl_utime@Base 15 + __sanitizer_syscall_post_impl_utimensat@Base 15 + __sanitizer_syscall_post_impl_utimes@Base 15 + __sanitizer_syscall_post_impl_vfork@Base 15 + __sanitizer_syscall_post_impl_vhangup@Base 15 + __sanitizer_syscall_post_impl_vmsplice@Base 15 + __sanitizer_syscall_post_impl_wait4@Base 15 + __sanitizer_syscall_post_impl_waitid@Base 15 + __sanitizer_syscall_post_impl_waitpid@Base 15 + __sanitizer_syscall_post_impl_write@Base 15 + __sanitizer_syscall_post_impl_writev@Base 15 + __sanitizer_syscall_pre_impl_accept4@Base 15 + __sanitizer_syscall_pre_impl_accept@Base 15 + __sanitizer_syscall_pre_impl_access@Base 15 + __sanitizer_syscall_pre_impl_acct@Base 15 + __sanitizer_syscall_pre_impl_add_key@Base 15 + __sanitizer_syscall_pre_impl_adjtimex@Base 15 + __sanitizer_syscall_pre_impl_alarm@Base 15 + __sanitizer_syscall_pre_impl_bdflush@Base 15 + __sanitizer_syscall_pre_impl_bind@Base 15 + __sanitizer_syscall_pre_impl_brk@Base 15 + __sanitizer_syscall_pre_impl_capget@Base 15 + __sanitizer_syscall_pre_impl_capset@Base 15 + __sanitizer_syscall_pre_impl_chdir@Base 15 + __sanitizer_syscall_pre_impl_chmod@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_chown16@Base 15 + __sanitizer_syscall_pre_impl_chown@Base 15 + __sanitizer_syscall_pre_impl_chroot@Base 15 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 + __sanitizer_syscall_pre_impl_clock_getres@Base 15 + __sanitizer_syscall_pre_impl_clock_gettime@Base 15 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_clock_settime@Base 15 + __sanitizer_syscall_pre_impl_close@Base 15 + __sanitizer_syscall_pre_impl_connect@Base 15 + __sanitizer_syscall_pre_impl_creat@Base 15 + __sanitizer_syscall_pre_impl_delete_module@Base 15 + __sanitizer_syscall_pre_impl_dup2@Base 15 + __sanitizer_syscall_pre_impl_dup3@Base 15 + __sanitizer_syscall_pre_impl_dup@Base 15 + __sanitizer_syscall_pre_impl_epoll_create1@Base 15 + __sanitizer_syscall_pre_impl_epoll_create@Base 15 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 + __sanitizer_syscall_pre_impl_epoll_wait@Base 15 + __sanitizer_syscall_pre_impl_eventfd2@Base 15 + __sanitizer_syscall_pre_impl_eventfd@Base 15 + __sanitizer_syscall_pre_impl_exit@Base 15 + __sanitizer_syscall_pre_impl_exit_group@Base 15 + __sanitizer_syscall_pre_impl_faccessat@Base 15 + __sanitizer_syscall_pre_impl_fchdir@Base 15 + __sanitizer_syscall_pre_impl_fchmod@Base 15 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_fchown16@Base 15 + __sanitizer_syscall_pre_impl_fchown@Base 15 + __sanitizer_syscall_pre_impl_fchownat@Base 15 + __sanitizer_syscall_pre_impl_fcntl64@Base 15 + __sanitizer_syscall_pre_impl_fcntl@Base 15 + __sanitizer_syscall_pre_impl_fdatasync@Base 15 + __sanitizer_syscall_pre_impl_fgetxattr@Base 15 + __sanitizer_syscall_pre_impl_flistxattr@Base 15 + __sanitizer_syscall_pre_impl_flock@Base 15 + __sanitizer_syscall_pre_impl_fork@Base 15 + __sanitizer_syscall_pre_impl_fremovexattr@Base 15 + __sanitizer_syscall_pre_impl_fsetxattr@Base 15 + __sanitizer_syscall_pre_impl_fstat64@Base 15 + __sanitizer_syscall_pre_impl_fstat@Base 15 + __sanitizer_syscall_pre_impl_fstatat64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs@Base 15 + __sanitizer_syscall_pre_impl_fsync@Base 15 + __sanitizer_syscall_pre_impl_ftruncate@Base 15 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 15 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_get_robust_list@Base 15 + __sanitizer_syscall_pre_impl_getcpu@Base 15 + __sanitizer_syscall_pre_impl_getcwd@Base 15 + __sanitizer_syscall_pre_impl_getdents64@Base 15 + __sanitizer_syscall_pre_impl_getdents@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getegid16@Base 15 + __sanitizer_syscall_pre_impl_getegid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_geteuid16@Base 15 + __sanitizer_syscall_pre_impl_geteuid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getgid16@Base 15 + __sanitizer_syscall_pre_impl_getgid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getgroups16@Base 15 + __sanitizer_syscall_pre_impl_getgroups@Base 15 + __sanitizer_syscall_pre_impl_gethostname@Base 15 + __sanitizer_syscall_pre_impl_getitimer@Base 15 + __sanitizer_syscall_pre_impl_getpeername@Base 15 + __sanitizer_syscall_pre_impl_getpgid@Base 15 + __sanitizer_syscall_pre_impl_getpgrp@Base 15 + __sanitizer_syscall_pre_impl_getpid@Base 15 + __sanitizer_syscall_pre_impl_getppid@Base 15 + __sanitizer_syscall_pre_impl_getpriority@Base 15 + __sanitizer_syscall_pre_impl_getrandom@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getresgid16@Base 15 + __sanitizer_syscall_pre_impl_getresgid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getresuid16@Base 15 + __sanitizer_syscall_pre_impl_getresuid@Base 15 + __sanitizer_syscall_pre_impl_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_getrusage@Base 15 + __sanitizer_syscall_pre_impl_getsid@Base 15 + __sanitizer_syscall_pre_impl_getsockname@Base 15 + __sanitizer_syscall_pre_impl_getsockopt@Base 15 + __sanitizer_syscall_pre_impl_gettid@Base 15 + __sanitizer_syscall_pre_impl_gettimeofday@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getuid16@Base 15 + __sanitizer_syscall_pre_impl_getuid@Base 15 + __sanitizer_syscall_pre_impl_getxattr@Base 15 + __sanitizer_syscall_pre_impl_init_module@Base 15 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_pre_impl_inotify_init1@Base 15 + __sanitizer_syscall_pre_impl_inotify_init@Base 15 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_pre_impl_io_cancel@Base 15 + __sanitizer_syscall_pre_impl_io_destroy@Base 15 + __sanitizer_syscall_pre_impl_io_getevents@Base 15 + __sanitizer_syscall_pre_impl_io_setup@Base 15 + __sanitizer_syscall_pre_impl_io_submit@Base 15 + __sanitizer_syscall_pre_impl_ioctl@Base 15 + __sanitizer_syscall_pre_impl_ioperm@Base 15 + __sanitizer_syscall_pre_impl_ioprio_get@Base 15 + __sanitizer_syscall_pre_impl_ioprio_set@Base 15 + __sanitizer_syscall_pre_impl_ipc@Base 15 + __sanitizer_syscall_pre_impl_kexec_load@Base 15 + __sanitizer_syscall_pre_impl_keyctl@Base 15 + __sanitizer_syscall_pre_impl_kill@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_lchown16@Base 15 + __sanitizer_syscall_pre_impl_lchown@Base 15 + __sanitizer_syscall_pre_impl_lgetxattr@Base 15 + __sanitizer_syscall_pre_impl_link@Base 15 + __sanitizer_syscall_pre_impl_linkat@Base 15 + __sanitizer_syscall_pre_impl_listen@Base 15 + __sanitizer_syscall_pre_impl_listxattr@Base 15 + __sanitizer_syscall_pre_impl_llistxattr@Base 15 + __sanitizer_syscall_pre_impl_llseek@Base 15 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_pre_impl_lremovexattr@Base 15 + __sanitizer_syscall_pre_impl_lseek@Base 15 + __sanitizer_syscall_pre_impl_lsetxattr@Base 15 + __sanitizer_syscall_pre_impl_lstat64@Base 15 + __sanitizer_syscall_pre_impl_lstat@Base 15 + __sanitizer_syscall_pre_impl_madvise@Base 15 + __sanitizer_syscall_pre_impl_mbind@Base 15 + __sanitizer_syscall_pre_impl_migrate_pages@Base 15 + __sanitizer_syscall_pre_impl_mincore@Base 15 + __sanitizer_syscall_pre_impl_mkdir@Base 15 + __sanitizer_syscall_pre_impl_mkdirat@Base 15 + __sanitizer_syscall_pre_impl_mknod@Base 15 + __sanitizer_syscall_pre_impl_mknodat@Base 15 + __sanitizer_syscall_pre_impl_mlock@Base 15 + __sanitizer_syscall_pre_impl_mlockall@Base 15 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_pre_impl_mount@Base 15 + __sanitizer_syscall_pre_impl_move_pages@Base 15 + __sanitizer_syscall_pre_impl_mprotect@Base 15 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_pre_impl_mq_notify@Base 15 + __sanitizer_syscall_pre_impl_mq_open@Base 15 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 + __sanitizer_syscall_pre_impl_mq_unlink@Base 15 + __sanitizer_syscall_pre_impl_mremap@Base 15 + __sanitizer_syscall_pre_impl_msgctl@Base 15 + __sanitizer_syscall_pre_impl_msgget@Base 15 + __sanitizer_syscall_pre_impl_msgrcv@Base 15 + __sanitizer_syscall_pre_impl_msgsnd@Base 15 + __sanitizer_syscall_pre_impl_msync@Base 15 + __sanitizer_syscall_pre_impl_munlock@Base 15 + __sanitizer_syscall_pre_impl_munlockall@Base 15 + __sanitizer_syscall_pre_impl_munmap@Base 15 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_pre_impl_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_newfstat@Base 15 + __sanitizer_syscall_pre_impl_newfstatat@Base 15 + __sanitizer_syscall_pre_impl_newlstat@Base 15 + __sanitizer_syscall_pre_impl_newstat@Base 15 + __sanitizer_syscall_pre_impl_newuname@Base 15 + __sanitizer_syscall_pre_impl_ni_syscall@Base 15 + __sanitizer_syscall_pre_impl_nice@Base 15 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_old_mmap@Base 15 + __sanitizer_syscall_pre_impl_old_readdir@Base 15 + __sanitizer_syscall_pre_impl_old_select@Base 15 + __sanitizer_syscall_pre_impl_oldumount@Base 15 + __sanitizer_syscall_pre_impl_olduname@Base 15 + __sanitizer_syscall_pre_impl_open@Base 15 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_pre_impl_openat@Base 15 + __sanitizer_syscall_pre_impl_pause@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 + __sanitizer_syscall_pre_impl_perf_event_open@Base 15 + __sanitizer_syscall_pre_impl_personality@Base 15 + __sanitizer_syscall_pre_impl_pipe2@Base 15 + __sanitizer_syscall_pre_impl_pipe@Base 15 + __sanitizer_syscall_pre_impl_pivot_root@Base 15 + __sanitizer_syscall_pre_impl_poll@Base 15 + __sanitizer_syscall_pre_impl_ppoll@Base 15 + __sanitizer_syscall_pre_impl_pread64@Base 15 + __sanitizer_syscall_pre_impl_preadv@Base 15 + __sanitizer_syscall_pre_impl_prlimit64@Base 15 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 + __sanitizer_syscall_pre_impl_pselect6@Base 15 + __sanitizer_syscall_pre_impl_ptrace@Base 15 + __sanitizer_syscall_pre_impl_pwrite64@Base 15 + __sanitizer_syscall_pre_impl_pwritev@Base 15 + __sanitizer_syscall_pre_impl_quotactl@Base 15 + __sanitizer_syscall_pre_impl_read@Base 15 + __sanitizer_syscall_pre_impl_readlink@Base 15 + __sanitizer_syscall_pre_impl_readlinkat@Base 15 + __sanitizer_syscall_pre_impl_readv@Base 15 + __sanitizer_syscall_pre_impl_reboot@Base 15 + __sanitizer_syscall_pre_impl_recv@Base 15 + __sanitizer_syscall_pre_impl_recvfrom@Base 15 + __sanitizer_syscall_pre_impl_recvmmsg@Base 15 + __sanitizer_syscall_pre_impl_recvmsg@Base 15 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 + __sanitizer_syscall_pre_impl_removexattr@Base 15 + __sanitizer_syscall_pre_impl_rename@Base 15 + __sanitizer_syscall_pre_impl_renameat@Base 15 + __sanitizer_syscall_pre_impl_request_key@Base 15 + __sanitizer_syscall_pre_impl_restart_syscall@Base 15 + __sanitizer_syscall_pre_impl_rmdir@Base 15 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_getparam@Base 15 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_setparam@Base 15 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_yield@Base 15 + __sanitizer_syscall_pre_impl_select@Base 15 + __sanitizer_syscall_pre_impl_semctl@Base 15 + __sanitizer_syscall_pre_impl_semget@Base 15 + __sanitizer_syscall_pre_impl_semop@Base 15 + __sanitizer_syscall_pre_impl_semtimedop@Base 15 + __sanitizer_syscall_pre_impl_send@Base 15 + __sanitizer_syscall_pre_impl_sendfile64@Base 15 + __sanitizer_syscall_pre_impl_sendfile@Base 15 + __sanitizer_syscall_pre_impl_sendmmsg@Base 15 + __sanitizer_syscall_pre_impl_sendmsg@Base 15 + __sanitizer_syscall_pre_impl_sendto@Base 15 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_set_robust_list@Base 15 + __sanitizer_syscall_pre_impl_set_tid_address@Base 15 + __sanitizer_syscall_pre_impl_setdomainname@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setfsgid16@Base 15 + __sanitizer_syscall_pre_impl_setfsgid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setfsuid16@Base 15 + __sanitizer_syscall_pre_impl_setfsuid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setgid16@Base 15 + __sanitizer_syscall_pre_impl_setgid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setgroups16@Base 15 + __sanitizer_syscall_pre_impl_setgroups@Base 15 + __sanitizer_syscall_pre_impl_sethostname@Base 15 + __sanitizer_syscall_pre_impl_setitimer@Base 15 + __sanitizer_syscall_pre_impl_setns@Base 15 + __sanitizer_syscall_pre_impl_setpgid@Base 15 + __sanitizer_syscall_pre_impl_setpriority@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setregid16@Base 15 + __sanitizer_syscall_pre_impl_setregid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setresgid16@Base 15 + __sanitizer_syscall_pre_impl_setresgid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setresuid16@Base 15 + __sanitizer_syscall_pre_impl_setresuid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setreuid16@Base 15 + __sanitizer_syscall_pre_impl_setreuid@Base 15 + __sanitizer_syscall_pre_impl_setrlimit@Base 15 + __sanitizer_syscall_pre_impl_setsid@Base 15 + __sanitizer_syscall_pre_impl_setsockopt@Base 15 + __sanitizer_syscall_pre_impl_settimeofday@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setuid16@Base 15 + __sanitizer_syscall_pre_impl_setuid@Base 15 + __sanitizer_syscall_pre_impl_setxattr@Base 15 + __sanitizer_syscall_pre_impl_sgetmask@Base 15 + __sanitizer_syscall_pre_impl_shmat@Base 15 + __sanitizer_syscall_pre_impl_shmctl@Base 15 + __sanitizer_syscall_pre_impl_shmdt@Base 15 + __sanitizer_syscall_pre_impl_shmget@Base 15 + __sanitizer_syscall_pre_impl_shutdown@Base 15 + __sanitizer_syscall_pre_impl_sigaction@Base 15 + __sanitizer_syscall_pre_impl_sigaltstack@Base 15 + __sanitizer_syscall_pre_impl_signal@Base 15 + __sanitizer_syscall_pre_impl_signalfd4@Base 15 + __sanitizer_syscall_pre_impl_signalfd@Base 15 + __sanitizer_syscall_pre_impl_sigpending@Base 15 + __sanitizer_syscall_pre_impl_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_socket@Base 15 + __sanitizer_syscall_pre_impl_socketcall@Base 15 + __sanitizer_syscall_pre_impl_socketpair@Base 15 + __sanitizer_syscall_pre_impl_splice@Base 15 + __sanitizer_syscall_pre_impl_spu_create@Base 15 + __sanitizer_syscall_pre_impl_spu_run@Base 15 + __sanitizer_syscall_pre_impl_ssetmask@Base 15 + __sanitizer_syscall_pre_impl_stat64@Base 15 + __sanitizer_syscall_pre_impl_stat@Base 15 + __sanitizer_syscall_pre_impl_statfs64@Base 15 + __sanitizer_syscall_pre_impl_statfs@Base 15 + __sanitizer_syscall_pre_impl_stime@Base 15 + __sanitizer_syscall_pre_impl_swapoff@Base 15 + __sanitizer_syscall_pre_impl_swapon@Base 15 + __sanitizer_syscall_pre_impl_symlink@Base 15 + __sanitizer_syscall_pre_impl_symlinkat@Base 15 + __sanitizer_syscall_pre_impl_sync@Base 15 + __sanitizer_syscall_pre_impl_syncfs@Base 15 + __sanitizer_syscall_pre_impl_sysctl@Base 15 + __sanitizer_syscall_pre_impl_sysfs@Base 15 + __sanitizer_syscall_pre_impl_sysinfo@Base 15 + __sanitizer_syscall_pre_impl_syslog@Base 15 + __sanitizer_syscall_pre_impl_tee@Base 15 + __sanitizer_syscall_pre_impl_tgkill@Base 15 + __sanitizer_syscall_pre_impl_time@Base 15 + __sanitizer_syscall_pre_impl_timer_create@Base 15 + __sanitizer_syscall_pre_impl_timer_delete@Base 15 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_pre_impl_timer_gettime@Base 15 + __sanitizer_syscall_pre_impl_timer_settime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_create@Base 15 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 + __sanitizer_syscall_pre_impl_times@Base 15 + __sanitizer_syscall_pre_impl_tkill@Base 15 + __sanitizer_syscall_pre_impl_truncate@Base 15 + __sanitizer_syscall_pre_impl_umask@Base 15 + __sanitizer_syscall_pre_impl_umount@Base 15 + __sanitizer_syscall_pre_impl_uname@Base 15 + __sanitizer_syscall_pre_impl_unlink@Base 15 + __sanitizer_syscall_pre_impl_unlinkat@Base 15 + __sanitizer_syscall_pre_impl_unshare@Base 15 + __sanitizer_syscall_pre_impl_uselib@Base 15 + __sanitizer_syscall_pre_impl_ustat@Base 15 + __sanitizer_syscall_pre_impl_utime@Base 15 + __sanitizer_syscall_pre_impl_utimensat@Base 15 + __sanitizer_syscall_pre_impl_utimes@Base 15 + __sanitizer_syscall_pre_impl_vfork@Base 15 + __sanitizer_syscall_pre_impl_vhangup@Base 15 + __sanitizer_syscall_pre_impl_vmsplice@Base 15 + __sanitizer_syscall_pre_impl_wait4@Base 15 + __sanitizer_syscall_pre_impl_waitid@Base 15 + __sanitizer_syscall_pre_impl_waitpid@Base 15 + __sanitizer_syscall_pre_impl_write@Base 15 + __sanitizer_syscall_pre_impl_writev@Base 15 + __sanitizer_unaligned_load16@Base 15 + __sanitizer_unaligned_load32@Base 15 + __sanitizer_unaligned_load64@Base 15 + __sanitizer_unaligned_store16@Base 15 + __sanitizer_unaligned_store32@Base 15 + __sanitizer_unaligned_store64@Base 15 + __sanitizer_verify_contiguous_container@Base 15 + __sanitizer_verify_double_ended_contiguous_container@Base 15 + __sanitizer_weak_hook_memcmp@Base 15 + __sanitizer_weak_hook_memmem@Base 15 + __sanitizer_weak_hook_strcasecmp@Base 15 + __sanitizer_weak_hook_strcasestr@Base 15 + __sanitizer_weak_hook_strcmp@Base 15 + __sanitizer_weak_hook_strncasecmp@Base 15 + __sanitizer_weak_hook_strncmp@Base 15 + __sanitizer_weak_hook_strstr@Base 15 + __snprintf_chk@Base 15 + __sprintf_chk@Base 15 + __strdup@Base 15 + __strndup@Base 15 + __strxfrm_l@Base 15 + (arch=!ppc64 !s390x)__tls_get_addr@Base 15 + (arch=s390x)__tls_get_addr_internal@Base 15 + (arch=ppc64)__tls_get_addr_opt@Base 15 + (arch=s390x)__tls_get_offset@Base 15 + __uflow@Base 15 + __underflow@Base 15 + __vsnprintf_chk@Base 15 + __vsprintf_chk@Base 15 + __wcsxfrm_l@Base 15 + __woverflow@Base 15 + __wuflow@Base 15 + __wunderflow@Base 15 + __xpg_strerror_r@Base 15 + __xstat64@Base 15 + __xstat@Base 15 + _exit@Base 15 + _longjmp@Base 15 + _obstack_begin@Base 15 + _obstack_begin_1@Base 15 + _obstack_newchunk@Base 15 + accept4@Base 15 + accept@Base 15 + aligned_alloc@Base 15 + argp_parse@Base 15 + asctime@Base 15 + asctime_r@Base 15 + (arch=!sparc64)asprintf@Base 15 + atoi@Base 15 + atol@Base 15 + atoll@Base 15 + backtrace@Base 15 + backtrace_symbols@Base 15 + bcmp@Base 15 + bsearch@Base 15 + bzero@Base 15 + calloc@Base 15 + canonicalize_file_name@Base 15 + capget@Base 15 + capset@Base 15 + cfree@Base 15 + clock_getcpuclockid@Base 15 + clock_getres@Base 15 + clock_gettime@Base 15 + clock_settime@Base 15 + confstr@Base 15 + ctermid@Base 15 + ctime@Base 15 + ctime_r@Base 15 + dlclose@Base 15 + dlopen@Base 15 + dn_comp@Base 15 + dn_expand@Base 15 + drand48_r@Base 15 + endgrent@Base 15 + endpwent@Base 15 + ether_aton@Base 15 + ether_aton_r@Base 15 + ether_hostton@Base 15 + ether_line@Base 15 + ether_ntoa@Base 15 + ether_ntoa_r@Base 15 + ether_ntohost@Base 15 + eventfd_read@Base 15 + eventfd_write@Base 15 + fclose@Base 15 + fdopen@Base 15 + fflush@Base 15 + fgetgrent@Base 15 + fgetgrent_r@Base 15 + fgetpwent@Base 15 + fgetpwent_r@Base 15 + fgets@Base 15 + fgetxattr@Base 15 + flistxattr@Base 15 + fmemopen@Base 15 + fopen64@Base 15 + fopen@Base 15 + fopencookie@Base 15 + (arch=!sparc64)fprintf@Base 15 + fputs@Base 15 + fread@Base 15 + free@Base 15 + freopen64@Base 15 + freopen@Base 15 + frexp@Base 15 + frexpf@Base 15 + frexpl@Base 15 + (arch=!sparc64)fscanf@Base 15 + fstatfs64@Base 15 + fstatfs@Base 15 + fstatvfs64@Base 15 + fstatvfs@Base 15 + ftime@Base 15 + fwrite@Base 15 + get_current_dir_name@Base 15 + getaddrinfo@Base 15 + getcwd@Base 15 + getdelim@Base 15 + getentropy@Base 15 + getgrent@Base 15 + getgrent_r@Base 15 + getgrgid@Base 15 + getgrgid_r@Base 15 + getgrnam@Base 15 + getgrnam_r@Base 15 + getgrouplist@Base 15 + getgroups@Base 15 + gethostbyaddr@Base 15 + gethostbyaddr_r@Base 15 + gethostbyname2@Base 15 + gethostbyname2_r@Base 15 + gethostbyname@Base 15 + gethostbyname_r@Base 15 + gethostent@Base 15 + gethostent_r@Base 15 + getifaddrs@Base 15 + getitimer@Base 15 + getline@Base 15 + getloadavg@Base 15 + getmntent@Base 15 + getmntent_r@Base 15 + getnameinfo@Base 15 + getnetbyaddr@Base 15 + getnetbyname@Base 15 + getnetent@Base 15 + getpass@Base 15 + getpeername@Base 15 + getprotobyname@Base 15 + getprotobyname_r@Base 15 + getprotobynumber@Base 15 + getprotobynumber_r@Base 15 + getprotoent@Base 15 + getprotoent_r@Base 15 + getpwent@Base 15 + getpwent_r@Base 15 + getpwnam@Base 15 + getpwnam_r@Base 15 + getpwuid@Base 15 + getpwuid_r@Base 15 + getrandom@Base 15 + getresgid@Base 15 + getresuid@Base 15 + getsockname@Base 15 + getsockopt@Base 15 + getusershell@Base 15 + getutent@Base 15 + getutid@Base 15 + getutline@Base 15 + getutxent@Base 15 + getutxid@Base 15 + getutxline@Base 15 + getxattr@Base 15 + glob64@Base 15 + glob@Base 15 + gmtime@Base 15 + gmtime_r@Base 15 + iconv@Base 15 + if_indextoname@Base 15 + if_nametoindex@Base 15 + index@Base 15 + inet_aton@Base 15 + inet_ntop@Base 15 + inet_pton@Base 15 + initgroups@Base 15 + ioctl@Base 15 + lgamma@Base 15 + lgamma_r@Base 15 + lgammaf@Base 15 + lgammaf_r@Base 15 + lgammal@Base 15 + lgammal_r@Base 15 + lgetxattr@Base 15 + listxattr@Base 15 + llistxattr@Base 15 + localtime@Base 15 + localtime_r@Base 15 + longjmp@Base 15 + lrand48_r@Base 15 + lstat64@Base 15 + lstat@Base 15 + makecontext@Base 15 + mallinfo@Base 15 + malloc@Base 15 + malloc_stats@Base 15 + malloc_usable_size@Base 15 + mallopt@Base 15 + mbsnrtowcs@Base 15 + mbsrtowcs@Base 15 + mbstowcs@Base 15 + mcheck@Base 15 + mcheck_pedantic@Base 15 + memalign@Base 15 + memchr@Base 15 + memcmp@Base 15 + memcpy@Base 15 + memmem@Base 15 + memmove@Base 15 + memrchr@Base 15 + memset@Base 15 + mincore@Base 15 + mktime@Base 15 + mlock@Base 15 + mlockall@Base 15 + mmap64@Base 15 + mmap@Base 15 + modf@Base 15 + modff@Base 15 + modfl@Base 15 + mprobe@Base 15 + mprotect@Base 15 + msgrcv@Base 15 + msgsnd@Base 15 + munlock@Base 15 + munlockall@Base 15 + munmap@Base 15 + name_to_handle_at@Base 15 + open_by_handle_at@Base 15 + open_memstream@Base 15 + open_wmemstream@Base 15 + opendir@Base 15 + pclose@Base 15 + poll@Base 15 + popen@Base 15 + posix_memalign@Base 15 + posix_spawn@Base 15 + posix_spawnp@Base 15 + ppoll@Base 15 + prctl@Base 15 + pread64@Base 15 + pread@Base 15 + preadv2@Base 15 + preadv64@Base 15 + preadv@Base 15 + (arch=!sparc64)printf@Base 15 + process_vm_readv@Base 15 + process_vm_writev@Base 15 + pthread_attr_getaffinity_np@Base 15 + pthread_attr_getdetachstate@Base 15 + pthread_attr_getguardsize@Base 15 + pthread_attr_getinheritsched@Base 15 + pthread_attr_getschedparam@Base 15 + pthread_attr_getschedpolicy@Base 15 + pthread_attr_getscope@Base 15 + pthread_attr_getstack@Base 15 + pthread_attr_getstacksize@Base 15 + pthread_barrierattr_getpshared@Base 15 + pthread_condattr_getclock@Base 15 + pthread_condattr_getpshared@Base 15 + pthread_create@Base 15 + pthread_detach@Base 15 + pthread_exit@Base 15 + pthread_getaffinity_np@Base 15 + pthread_getcpuclockid@Base 15 + pthread_getname_np@Base 15 + pthread_getschedparam@Base 15 + pthread_join@Base 15 + pthread_mutexattr_getprioceiling@Base 15 + pthread_mutexattr_getprotocol@Base 15 + pthread_mutexattr_getpshared@Base 15 + pthread_mutexattr_getrobust@Base 15 + pthread_mutexattr_getrobust_np@Base 15 + pthread_mutexattr_gettype@Base 15 + pthread_rwlockattr_getkind_np@Base 15 + pthread_rwlockattr_getpshared@Base 15 + pthread_setcancelstate@Base 15 + pthread_setcanceltype@Base 15 + pthread_setname_np@Base 15 + pthread_sigmask@Base 15 + pthread_timedjoin_np@Base 15 + pthread_tryjoin_np@Base 15 + (arch=!ppc64)ptrace@Base 15 + ptsname@Base 15 + ptsname_r@Base 15 + puts@Base 15 + pututxline@Base 15 + pvalloc@Base 15 + pwrite64@Base 15 + pwrite@Base 15 + pwritev2@Base 15 + pwritev64@Base 15 + pwritev@Base 15 + qsort@Base 15 + qsort_r@Base 15 + rand_r@Base 15 + random_r@Base 15 + read@Base 15 + readdir64@Base 15 + readdir64_r@Base 15 + readdir@Base 15 + readdir_r@Base 15 + readlink@Base 15 + readlinkat@Base 15 + readv@Base 15 + realloc@Base 15 + reallocarray@Base 15 + realpath@Base 15 + recv@Base 15 + recvfrom@Base 15 + recvmmsg@Base 15 + recvmsg@Base 15 + regcomp@Base 15 + regerror@Base 15 + regexec@Base 15 + regfree@Base 15 + remquo@Base 15 + remquof@Base 15 + remquol@Base 15 + scandir64@Base 15 + scandir@Base 15 + (arch=!sparc64)scanf@Base 15 + sched_getaffinity@Base 15 + sched_getparam@Base 15 + sem_destroy@Base 15 + sem_getvalue@Base 15 + sem_init@Base 15 + sem_open@Base 15 + sem_post@Base 15 + sem_timedwait@Base 15 + sem_trywait@Base 15 + sem_unlink@Base 15 + sem_wait@Base 15 + send@Base 15 + sendmmsg@Base 15 + sendmsg@Base 15 + sendto@Base 15 + setbuf@Base 15 + setbuffer@Base 15 + setgrent@Base 15 + setitimer@Base 15 + setlinebuf@Base 15 + setlocale@Base 15 + setpwent@Base 15 + setvbuf@Base 15 + sigaction@Base 15 + sigaltstack@Base 15 + sigandset@Base 15 + sigemptyset@Base 15 + sigfillset@Base 15 + siglongjmp@Base 15 + signal@Base 15 + sigorset@Base 15 + sigpending@Base 15 + sigprocmask@Base 15 + sigtimedwait@Base 15 + sigwait@Base 15 + sigwaitinfo@Base 15 + sincos@Base 15 + sincosf@Base 15 + sincosl@Base 15 + (arch=!sparc64)snprintf@Base 15 + (arch=!sparc64)sprintf@Base 15 + (arch=!sparc64)sscanf@Base 15 + stat64@Base 15 + stat@Base 15 + statfs64@Base 15 + statfs@Base 15 + statvfs64@Base 15 + statvfs@Base 15 + strcasecmp@Base 15 + strcasestr@Base 15 + strcat@Base 15 + strchr@Base 15 + strchrnul@Base 15 + strcmp@Base 15 + strcpy@Base 15 + strcspn@Base 15 + strdup@Base 15 + strerror@Base 15 + strerror_r@Base 15 + strlen@Base 15 + strncasecmp@Base 15 + strncat@Base 15 + strncmp@Base 15 + strncpy@Base 15 + strndup@Base 15 + strnlen@Base 15 + strpbrk@Base 15 + strptime@Base 15 + strrchr@Base 15 + strspn@Base 15 + strstr@Base 15 + strtoimax@Base 15 + strtok@Base 15 + strtol@Base 15 + strtoll@Base 15 + strtoumax@Base 15 + strxfrm@Base 15 + strxfrm_l@Base 15 + swapcontext@Base 15 + sysinfo@Base 15 + tcgetattr@Base 15 + tempnam@Base 15 + textdomain@Base 15 + time@Base 15 + timerfd_gettime@Base 15 + timerfd_settime@Base 15 + times@Base 15 + tmpnam@Base 15 + tmpnam_r@Base 15 + tsearch@Base 15 + ttyname@Base 15 + ttyname_r@Base 15 + uname@Base 15 + valloc@Base 15 + (arch=!sparc64)vasprintf@Base 15 + (arch=amd64 x32)vfork@Base 15 + (arch=!sparc64)vfprintf@Base 15 + (arch=!sparc64)vfscanf@Base 15 + (arch=!sparc64)vprintf@Base 15 + (arch=!sparc64)vscanf@Base 15 + (arch=!sparc64)vsnprintf@Base 15 + (arch=!sparc64)vsprintf@Base 15 + (arch=!sparc64)vsscanf@Base 15 + wait3@Base 15 + wait4@Base 15 + wait@Base 15 + waitid@Base 15 + waitpid@Base 15 + wcrtomb@Base 15 + wcscat@Base 15 + wcsdup@Base 15 + wcslen@Base 15 + wcsncat@Base 15 + wcsnlen@Base 15 + wcsnrtombs@Base 15 + wcsrtombs@Base 15 + wcstombs@Base 15 + wcsxfrm@Base 15 + wcsxfrm_l@Base 15 + wctomb@Base 15 + wordexp@Base 15 + write@Base 15 + writev@Base 15 + xdr_bool@Base 15 + xdr_bytes@Base 15 + xdr_char@Base 15 + xdr_destroy@Base 15 + xdr_double@Base 15 + xdr_enum@Base 15 + xdr_float@Base 15 + xdr_hyper@Base 15 + xdr_int16_t@Base 15 + xdr_int32_t@Base 15 + xdr_int64_t@Base 15 + xdr_int8_t@Base 15 + xdr_int@Base 15 + xdr_long@Base 15 + xdr_longlong_t@Base 15 + xdr_quad_t@Base 15 + xdr_short@Base 15 + xdr_string@Base 15 + xdr_u_char@Base 15 + xdr_u_hyper@Base 15 + xdr_u_int@Base 15 + xdr_u_long@Base 15 + xdr_u_longlong_t@Base 15 + xdr_u_quad_t@Base 15 + xdr_u_short@Base 15 + xdr_uint16_t@Base 15 + xdr_uint32_t@Base 15 + xdr_uint64_t@Base 15 + xdr_uint8_t@Base 15 + xdrmem_create@Base 15 + xdrrec_create@Base 15 + xdrstdio_create@Base 15 diff --git a/lib32gccLC.postinst b/lib32gccLC.postinst new file mode 100644 index 0000000..0163e03 --- /dev/null +++ b/lib32gccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib32gcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/lib32stdc++CXX.postinst b/lib32stdc++CXX.postinst new file mode 100644 index 0000000..0ebbeb0 --- /dev/null +++ b/lib32stdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib32stdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/lib64asan8.symbols b/lib64asan8.symbols new file mode 100644 index 0000000..a32f8ce --- /dev/null +++ b/lib64asan8.symbols @@ -0,0 +1,3013 @@ +# SymbolsHelper-Confirmed: 15 i386 powerpc +libasan.so.8 lib64asan8 #MINVER# + _Unwind_RaiseException@Base 15 + _ZdaPv@Base 15 + _ZdaPvRKSt9nothrow_t@Base 15 + _ZdaPvSt11align_val_t@Base 15 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdaPvm@Base 15 + _ZdaPvmSt11align_val_t@Base 15 + _ZdlPv@Base 15 + _ZdlPvRKSt9nothrow_t@Base 15 + _ZdlPvSt11align_val_t@Base 15 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdlPvm@Base 15 + _ZdlPvmSt11align_val_t@Base 15 + _Znam@Base 15 + _ZnamRKSt9nothrow_t@Base 15 + _ZnamSt11align_val_t@Base 15 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 15 + _Znwm@Base 15 + _ZnwmRKSt9nothrow_t@Base 15 + _ZnwmSt11align_val_t@Base 15 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 15 + (arch=i386)___interceptor__Unwind_RaiseException@Base 15 + (arch=i386)___interceptor___b64_ntop@Base 15 + (arch=i386)___interceptor___b64_pton@Base 15 + (arch=i386)___interceptor___bzero@Base 15 + (arch=i386)___interceptor___cxa_atexit@Base 15 + (arch=i386)___interceptor___cxa_throw@Base 15 + (arch=i386)___interceptor___fprintf_chk@Base 15 + (arch=i386)___interceptor___getdelim@Base 15 + (arch=i386)___interceptor___isoc23_fscanf@Base 15 + (arch=i386)___interceptor___isoc23_scanf@Base 15 + (arch=i386)___interceptor___isoc23_sscanf@Base 15 + (arch=i386)___interceptor___isoc23_strtoimax@Base 15 + (arch=i386)___interceptor___isoc23_strtol@Base 15 + (arch=i386)___interceptor___isoc23_strtoll@Base 15 + (arch=i386)___interceptor___isoc23_strtoumax@Base 15 + (arch=i386)___interceptor___isoc23_vfscanf@Base 15 + (arch=i386)___interceptor___isoc23_vscanf@Base 15 + (arch=i386)___interceptor___isoc23_vsscanf@Base 15 + (arch=i386)___interceptor___isoc99_fprintf@Base 15 + (arch=i386)___interceptor___isoc99_fscanf@Base 15 + (arch=i386)___interceptor___isoc99_printf@Base 15 + (arch=i386)___interceptor___isoc99_scanf@Base 15 + (arch=i386)___interceptor___isoc99_snprintf@Base 15 + (arch=i386)___interceptor___isoc99_sprintf@Base 15 + (arch=i386)___interceptor___isoc99_sscanf@Base 15 + (arch=i386)___interceptor___isoc99_vfprintf@Base 15 + (arch=i386)___interceptor___isoc99_vfscanf@Base 15 + (arch=i386)___interceptor___isoc99_vprintf@Base 15 + (arch=i386)___interceptor___isoc99_vscanf@Base 15 + (arch=i386)___interceptor___isoc99_vsnprintf@Base 15 + (arch=i386)___interceptor___isoc99_vsprintf@Base 15 + (arch=i386)___interceptor___isoc99_vsscanf@Base 15 + (arch=i386)___interceptor___libc_memalign@Base 15 + (arch=i386)___interceptor___longjmp_chk@Base 15 + (arch=i386)___interceptor___lxstat64@Base 15 + (arch=i386)___interceptor___lxstat@Base 15 + (arch=i386)___interceptor___overflow@Base 15 + (arch=i386)___interceptor___snprintf_chk@Base 15 + (arch=i386)___interceptor___sprintf_chk@Base 15 + (arch=i386)___interceptor___strdup@Base 15 + (arch=i386)___interceptor___strndup@Base 15 + (arch=i386)___interceptor___strxfrm_l@Base 15 + (arch=i386)___interceptor___tls_get_addr@Base 15 + (arch=i386)___interceptor___uflow@Base 15 + (arch=i386)___interceptor___underflow@Base 15 + (arch=i386)___interceptor___vsnprintf_chk@Base 15 + (arch=i386)___interceptor___vsprintf_chk@Base 15 + (arch=i386)___interceptor___wcsxfrm_l@Base 15 + (arch=i386)___interceptor___woverflow@Base 15 + (arch=i386)___interceptor___wuflow@Base 15 + (arch=i386)___interceptor___wunderflow@Base 15 + (arch=i386)___interceptor___xpg_strerror_r@Base 15 + (arch=i386)___interceptor___xstat64@Base 15 + (arch=i386)___interceptor___xstat@Base 15 + (arch=i386)___interceptor__exit@Base 15 + (arch=i386)___interceptor__longjmp@Base 15 + (arch=i386)___interceptor__obstack_begin@Base 15 + (arch=i386)___interceptor__obstack_begin_1@Base 15 + (arch=i386)___interceptor__obstack_newchunk@Base 15 + (arch=i386)___interceptor_accept4@Base 15 + (arch=i386)___interceptor_accept@Base 15 + (arch=i386)___interceptor_aligned_alloc@Base 15 + (arch=i386)___interceptor_argp_parse@Base 15 + (arch=i386)___interceptor_asctime@Base 15 + (arch=i386)___interceptor_asctime_r@Base 15 + (arch=i386)___interceptor_asprintf@Base 15 + (arch=i386)___interceptor_atoi@Base 15 + (arch=i386)___interceptor_atol@Base 15 + (arch=i386)___interceptor_atoll@Base 15 + (arch=i386)___interceptor_backtrace@Base 15 + (arch=i386)___interceptor_backtrace_symbols@Base 15 + (arch=i386)___interceptor_bcmp@Base 15 + (arch=i386)___interceptor_bsearch@Base 15 + (arch=i386)___interceptor_bzero@Base 15 + (arch=i386)___interceptor_calloc@Base 15 + (arch=i386)___interceptor_canonicalize_file_name@Base 15 + (arch=i386)___interceptor_capget@Base 15 + (arch=i386)___interceptor_capset@Base 15 + (arch=i386)___interceptor_cfree@Base 15 + (arch=i386)___interceptor_clock_getcpuclockid@Base 15 + (arch=i386)___interceptor_clock_getres@Base 15 + (arch=i386)___interceptor_clock_gettime@Base 15 + (arch=i386)___interceptor_clock_settime@Base 15 + (arch=i386)___interceptor_confstr@Base 15 + (arch=i386)___interceptor_ctermid@Base 15 + (arch=i386)___interceptor_ctime@Base 15 + (arch=i386)___interceptor_ctime_r@Base 15 + (arch=i386)___interceptor_dlclose@Base 15 + (arch=i386)___interceptor_dlopen@Base 15 + (arch=i386)___interceptor_dn_comp@Base 15 + (arch=i386)___interceptor_dn_expand@Base 15 + (arch=i386)___interceptor_drand48_r@Base 15 + (arch=i386)___interceptor_endgrent@Base 15 + (arch=i386)___interceptor_endpwent@Base 15 + (arch=i386)___interceptor_ether_aton@Base 15 + (arch=i386)___interceptor_ether_aton_r@Base 15 + (arch=i386)___interceptor_ether_hostton@Base 15 + (arch=i386)___interceptor_ether_line@Base 15 + (arch=i386)___interceptor_ether_ntoa@Base 15 + (arch=i386)___interceptor_ether_ntoa_r@Base 15 + (arch=i386)___interceptor_ether_ntohost@Base 15 + (arch=i386)___interceptor_eventfd_read@Base 15 + (arch=i386)___interceptor_eventfd_write@Base 15 + (arch=i386)___interceptor_fclose@Base 15 + (arch=i386)___interceptor_fdopen@Base 15 + (arch=i386)___interceptor_fflush@Base 15 + (arch=i386)___interceptor_fgetgrent@Base 15 + (arch=i386)___interceptor_fgetgrent_r@Base 15 + (arch=i386)___interceptor_fgetpwent@Base 15 + (arch=i386)___interceptor_fgetpwent_r@Base 15 + (arch=i386)___interceptor_fgets@Base 15 + (arch=i386)___interceptor_fgetxattr@Base 15 + (arch=i386)___interceptor_flistxattr@Base 15 + (arch=i386)___interceptor_fmemopen@Base 15 + (arch=i386)___interceptor_fopen64@Base 15 + (arch=i386)___interceptor_fopen@Base 15 + (arch=i386)___interceptor_fopencookie@Base 15 + (arch=i386)___interceptor_fprintf@Base 15 + (arch=i386)___interceptor_fputs@Base 15 + (arch=i386)___interceptor_fread@Base 15 + (arch=i386)___interceptor_free@Base 15 + (arch=i386)___interceptor_freopen64@Base 15 + (arch=i386)___interceptor_freopen@Base 15 + (arch=i386)___interceptor_frexp@Base 15 + (arch=i386)___interceptor_frexpf@Base 15 + (arch=i386)___interceptor_frexpl@Base 15 + (arch=i386)___interceptor_fscanf@Base 15 + (arch=i386)___interceptor_fstatfs64@Base 15 + (arch=i386)___interceptor_fstatfs@Base 15 + (arch=i386)___interceptor_fstatvfs64@Base 15 + (arch=i386)___interceptor_fstatvfs@Base 15 + (arch=i386)___interceptor_ftime@Base 15 + (arch=i386)___interceptor_fwrite@Base 15 + (arch=i386)___interceptor_get_current_dir_name@Base 15 + (arch=i386)___interceptor_getaddrinfo@Base 15 + (arch=i386)___interceptor_getcwd@Base 15 + (arch=i386)___interceptor_getdelim@Base 15 + (arch=i386)___interceptor_getentropy@Base 15 + (arch=i386)___interceptor_getgrent@Base 15 + (arch=i386)___interceptor_getgrent_r@Base 15 + (arch=i386)___interceptor_getgrgid@Base 15 + (arch=i386)___interceptor_getgrgid_r@Base 15 + (arch=i386)___interceptor_getgrnam@Base 15 + (arch=i386)___interceptor_getgrnam_r@Base 15 + (arch=i386)___interceptor_getgrouplist@Base 15 + (arch=i386)___interceptor_getgroups@Base 15 + (arch=i386)___interceptor_gethostbyaddr@Base 15 + (arch=i386)___interceptor_gethostbyaddr_r@Base 15 + (arch=i386)___interceptor_gethostbyname2@Base 15 + (arch=i386)___interceptor_gethostbyname2_r@Base 15 + (arch=i386)___interceptor_gethostbyname@Base 15 + (arch=i386)___interceptor_gethostbyname_r@Base 15 + (arch=i386)___interceptor_gethostent@Base 15 + (arch=i386)___interceptor_gethostent_r@Base 15 + (arch=i386)___interceptor_getifaddrs@Base 15 + (arch=i386)___interceptor_getitimer@Base 15 + (arch=i386)___interceptor_getline@Base 15 + (arch=i386)___interceptor_getloadavg@Base 15 + (arch=i386)___interceptor_getmntent@Base 15 + (arch=i386)___interceptor_getmntent_r@Base 15 + (arch=i386)___interceptor_getnameinfo@Base 15 + (arch=i386)___interceptor_getnetbyaddr@Base 15 + (arch=i386)___interceptor_getnetbyname@Base 15 + (arch=i386)___interceptor_getnetent@Base 15 + (arch=i386)___interceptor_getpass@Base 15 + (arch=i386)___interceptor_getpeername@Base 15 + (arch=i386)___interceptor_getprotobyname@Base 15 + (arch=i386)___interceptor_getprotobyname_r@Base 15 + (arch=i386)___interceptor_getprotobynumber@Base 15 + (arch=i386)___interceptor_getprotobynumber_r@Base 15 + (arch=i386)___interceptor_getprotoent@Base 15 + (arch=i386)___interceptor_getprotoent_r@Base 15 + (arch=i386)___interceptor_getpwent@Base 15 + (arch=i386)___interceptor_getpwent_r@Base 15 + (arch=i386)___interceptor_getpwnam@Base 15 + (arch=i386)___interceptor_getpwnam_r@Base 15 + (arch=i386)___interceptor_getpwuid@Base 15 + (arch=i386)___interceptor_getpwuid_r@Base 15 + (arch=i386)___interceptor_getrandom@Base 15 + (arch=i386)___interceptor_getresgid@Base 15 + (arch=i386)___interceptor_getresuid@Base 15 + (arch=i386)___interceptor_getsockname@Base 15 + (arch=i386)___interceptor_getsockopt@Base 15 + (arch=i386)___interceptor_getusershell@Base 15 + (arch=i386)___interceptor_getutent@Base 15 + (arch=i386)___interceptor_getutid@Base 15 + (arch=i386)___interceptor_getutline@Base 15 + (arch=i386)___interceptor_getutxent@Base 15 + (arch=i386)___interceptor_getutxid@Base 15 + (arch=i386)___interceptor_getutxline@Base 15 + (arch=i386)___interceptor_getxattr@Base 15 + (arch=i386)___interceptor_glob64@Base 15 + (arch=i386)___interceptor_glob@Base 15 + (arch=i386)___interceptor_gmtime@Base 15 + (arch=i386)___interceptor_gmtime_r@Base 15 + (arch=i386)___interceptor_iconv@Base 15 + (arch=i386)___interceptor_if_indextoname@Base 15 + (arch=i386)___interceptor_if_nametoindex@Base 15 + (arch=i386)___interceptor_index@Base 15 + (arch=i386)___interceptor_inet_aton@Base 15 + (arch=i386)___interceptor_inet_ntop@Base 15 + (arch=i386)___interceptor_inet_pton@Base 15 + (arch=i386)___interceptor_initgroups@Base 15 + (arch=i386)___interceptor_ioctl@Base 15 + (arch=i386)___interceptor_lgamma@Base 15 + (arch=i386)___interceptor_lgamma_r@Base 15 + (arch=i386)___interceptor_lgammaf@Base 15 + (arch=i386)___interceptor_lgammaf_r@Base 15 + (arch=i386)___interceptor_lgammal@Base 15 + (arch=i386)___interceptor_lgammal_r@Base 15 + (arch=i386)___interceptor_lgetxattr@Base 15 + (arch=i386)___interceptor_listxattr@Base 15 + (arch=i386)___interceptor_llistxattr@Base 15 + (arch=i386)___interceptor_localtime@Base 15 + (arch=i386)___interceptor_localtime_r@Base 15 + (arch=i386)___interceptor_longjmp@Base 15 + (arch=i386)___interceptor_lrand48_r@Base 15 + (arch=i386)___interceptor_lstat64@Base 15 + (arch=i386)___interceptor_lstat@Base 15 + (arch=i386)___interceptor_makecontext@Base 15 + (arch=i386)___interceptor_mallinfo@Base 15 + (arch=i386)___interceptor_malloc@Base 15 + (arch=i386)___interceptor_malloc_stats@Base 15 + (arch=i386)___interceptor_malloc_usable_size@Base 15 + (arch=i386)___interceptor_mallopt@Base 15 + (arch=i386)___interceptor_mbsnrtowcs@Base 15 + (arch=i386)___interceptor_mbsrtowcs@Base 15 + (arch=i386)___interceptor_mbstowcs@Base 15 + (arch=i386)___interceptor_mcheck@Base 15 + (arch=i386)___interceptor_mcheck_pedantic@Base 15 + (arch=i386)___interceptor_memalign@Base 15 + (arch=i386)___interceptor_memchr@Base 15 + (arch=i386)___interceptor_memcmp@Base 15 + (arch=i386)___interceptor_memcpy@Base 15 + (arch=i386)___interceptor_memmem@Base 15 + (arch=i386)___interceptor_memmove@Base 15 + (arch=i386)___interceptor_memrchr@Base 15 + (arch=i386)___interceptor_memset@Base 15 + (arch=i386)___interceptor_mincore@Base 15 + (arch=i386)___interceptor_mktime@Base 15 + (arch=i386)___interceptor_mlock@Base 15 + (arch=i386)___interceptor_mlockall@Base 15 + (arch=i386)___interceptor_mmap64@Base 15 + (arch=i386)___interceptor_mmap@Base 15 + (arch=i386)___interceptor_modf@Base 15 + (arch=i386)___interceptor_modff@Base 15 + (arch=i386)___interceptor_modfl@Base 15 + (arch=i386)___interceptor_mprobe@Base 15 + (arch=i386)___interceptor_mprotect@Base 15 + (arch=i386)___interceptor_msgrcv@Base 15 + (arch=i386)___interceptor_msgsnd@Base 15 + (arch=i386)___interceptor_munlock@Base 15 + (arch=i386)___interceptor_munlockall@Base 15 + (arch=i386)___interceptor_munmap@Base 15 + (arch=i386)___interceptor_name_to_handle_at@Base 15 + (arch=i386)___interceptor_open_by_handle_at@Base 15 + (arch=i386)___interceptor_open_memstream@Base 15 + (arch=i386)___interceptor_open_wmemstream@Base 15 + (arch=i386)___interceptor_opendir@Base 15 + (arch=i386)___interceptor_pclose@Base 15 + (arch=i386)___interceptor_poll@Base 15 + (arch=i386)___interceptor_popen@Base 15 + (arch=i386)___interceptor_posix_memalign@Base 15 + (arch=i386)___interceptor_posix_spawn@Base 15 + (arch=i386)___interceptor_posix_spawnp@Base 15 + (arch=i386)___interceptor_ppoll@Base 15 + (arch=i386)___interceptor_prctl@Base 15 + (arch=i386)___interceptor_pread64@Base 15 + (arch=i386)___interceptor_pread@Base 15 + (arch=i386)___interceptor_preadv2@Base 15 + (arch=i386)___interceptor_preadv64@Base 15 + (arch=i386)___interceptor_preadv@Base 15 + (arch=i386)___interceptor_printf@Base 15 + (arch=i386)___interceptor_process_vm_readv@Base 15 + (arch=i386)___interceptor_process_vm_writev@Base 15 + (arch=i386)___interceptor_pthread_attr_getaffinity_np@Base 15 + (arch=i386)___interceptor_pthread_attr_getdetachstate@Base 15 + (arch=i386)___interceptor_pthread_attr_getguardsize@Base 15 + (arch=i386)___interceptor_pthread_attr_getinheritsched@Base 15 + (arch=i386)___interceptor_pthread_attr_getschedparam@Base 15 + (arch=i386)___interceptor_pthread_attr_getschedpolicy@Base 15 + (arch=i386)___interceptor_pthread_attr_getscope@Base 15 + (arch=i386)___interceptor_pthread_attr_getstack@Base 15 + (arch=i386)___interceptor_pthread_attr_getstacksize@Base 15 + (arch=i386)___interceptor_pthread_barrierattr_getpshared@Base 15 + (arch=i386)___interceptor_pthread_condattr_getclock@Base 15 + (arch=i386)___interceptor_pthread_condattr_getpshared@Base 15 + (arch=i386)___interceptor_pthread_create@Base 15 + (arch=i386)___interceptor_pthread_detach@Base 15 + (arch=i386)___interceptor_pthread_exit@Base 15 + (arch=i386)___interceptor_pthread_getaffinity_np@Base 15 + (arch=i386)___interceptor_pthread_getcpuclockid@Base 15 + (arch=i386)___interceptor_pthread_getname_np@Base 15 + (arch=i386)___interceptor_pthread_getschedparam@Base 15 + (arch=i386)___interceptor_pthread_join@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_getprioceiling@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_getprotocol@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_getpshared@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_getrobust@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_getrobust_np@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_gettype@Base 15 + (arch=i386)___interceptor_pthread_rwlockattr_getkind_np@Base 15 + (arch=i386)___interceptor_pthread_rwlockattr_getpshared@Base 15 + (arch=i386)___interceptor_pthread_setcancelstate@Base 15 + (arch=i386)___interceptor_pthread_setcanceltype@Base 15 + (arch=i386)___interceptor_pthread_setname_np@Base 15 + (arch=i386)___interceptor_pthread_sigmask@Base 15 + (arch=i386)___interceptor_pthread_timedjoin_np@Base 15 + (arch=i386)___interceptor_pthread_tryjoin_np@Base 15 + (arch=i386)___interceptor_ptrace@Base 15 + (arch=i386)___interceptor_ptsname@Base 15 + (arch=i386)___interceptor_ptsname_r@Base 15 + (arch=i386)___interceptor_puts@Base 15 + (arch=i386)___interceptor_pututxline@Base 15 + (arch=i386)___interceptor_pvalloc@Base 15 + (arch=i386)___interceptor_pwrite64@Base 15 + (arch=i386)___interceptor_pwrite@Base 15 + (arch=i386)___interceptor_pwritev2@Base 15 + (arch=i386)___interceptor_pwritev64@Base 15 + (arch=i386)___interceptor_pwritev@Base 15 + (arch=i386)___interceptor_qsort@Base 15 + (arch=i386)___interceptor_qsort_r@Base 15 + (arch=i386)___interceptor_rand_r@Base 15 + (arch=i386)___interceptor_random_r@Base 15 + (arch=i386)___interceptor_read@Base 15 + (arch=i386)___interceptor_readdir64@Base 15 + (arch=i386)___interceptor_readdir64_r@Base 15 + (arch=i386)___interceptor_readdir@Base 15 + (arch=i386)___interceptor_readdir_r@Base 15 + (arch=i386)___interceptor_readlink@Base 15 + (arch=i386)___interceptor_readlinkat@Base 15 + (arch=i386)___interceptor_readv@Base 15 + (arch=i386)___interceptor_realloc@Base 15 + (arch=i386)___interceptor_reallocarray@Base 15 + (arch=i386)___interceptor_realpath@Base 15 + (arch=i386)___interceptor_recv@Base 15 + (arch=i386)___interceptor_recvfrom@Base 15 + (arch=i386)___interceptor_recvmmsg@Base 15 + (arch=i386)___interceptor_recvmsg@Base 15 + (arch=i386)___interceptor_regcomp@Base 15 + (arch=i386)___interceptor_regerror@Base 15 + (arch=i386)___interceptor_regexec@Base 15 + (arch=i386)___interceptor_regfree@Base 15 + (arch=i386)___interceptor_remquo@Base 15 + (arch=i386)___interceptor_remquof@Base 15 + (arch=i386)___interceptor_remquol@Base 15 + (arch=i386)___interceptor_scandir64@Base 15 + (arch=i386)___interceptor_scandir@Base 15 + (arch=i386)___interceptor_scanf@Base 15 + (arch=i386)___interceptor_sched_getaffinity@Base 15 + (arch=i386)___interceptor_sched_getparam@Base 15 + (arch=i386)___interceptor_sem_destroy@Base 15 + (arch=i386)___interceptor_sem_getvalue@Base 15 + (arch=i386)___interceptor_sem_init@Base 15 + (arch=i386)___interceptor_sem_open@Base 15 + (arch=i386)___interceptor_sem_post@Base 15 + (arch=i386)___interceptor_sem_timedwait@Base 15 + (arch=i386)___interceptor_sem_trywait@Base 15 + (arch=i386)___interceptor_sem_unlink@Base 15 + (arch=i386)___interceptor_sem_wait@Base 15 + (arch=i386)___interceptor_send@Base 15 + (arch=i386)___interceptor_sendmmsg@Base 15 + (arch=i386)___interceptor_sendmsg@Base 15 + (arch=i386)___interceptor_sendto@Base 15 + (arch=i386)___interceptor_setbuf@Base 15 + (arch=i386)___interceptor_setbuffer@Base 15 + (arch=i386)___interceptor_setgrent@Base 15 + (arch=i386)___interceptor_setitimer@Base 15 + (arch=i386)___interceptor_setlinebuf@Base 15 + (arch=i386)___interceptor_setlocale@Base 15 + (arch=i386)___interceptor_setpwent@Base 15 + (arch=i386)___interceptor_setvbuf@Base 15 + (arch=i386)___interceptor_shmctl@Base 15 + (arch=i386)___interceptor_sigaction@Base 15 + (arch=i386)___interceptor_sigaltstack@Base 15 + (arch=i386)___interceptor_sigandset@Base 15 + (arch=i386)___interceptor_sigemptyset@Base 15 + (arch=i386)___interceptor_sigfillset@Base 15 + (arch=i386)___interceptor_siglongjmp@Base 15 + (arch=i386)___interceptor_signal@Base 15 + (arch=i386)___interceptor_sigorset@Base 15 + (arch=i386)___interceptor_sigpending@Base 15 + (arch=i386)___interceptor_sigprocmask@Base 15 + (arch=i386)___interceptor_sigtimedwait@Base 15 + (arch=i386)___interceptor_sigwait@Base 15 + (arch=i386)___interceptor_sigwaitinfo@Base 15 + (arch=i386)___interceptor_sincos@Base 15 + (arch=i386)___interceptor_sincosf@Base 15 + (arch=i386)___interceptor_sincosl@Base 15 + (arch=i386)___interceptor_snprintf@Base 15 + (arch=i386)___interceptor_sprintf@Base 15 + (arch=i386)___interceptor_sscanf@Base 15 + (arch=i386)___interceptor_stat64@Base 15 + (arch=i386)___interceptor_stat@Base 15 + (arch=i386)___interceptor_statfs64@Base 15 + (arch=i386)___interceptor_statfs@Base 15 + (arch=i386)___interceptor_statvfs64@Base 15 + (arch=i386)___interceptor_statvfs@Base 15 + (arch=i386)___interceptor_strcasecmp@Base 15 + (arch=i386)___interceptor_strcasestr@Base 15 + (arch=i386)___interceptor_strcat@Base 15 + (arch=i386)___interceptor_strchr@Base 15 + (arch=i386)___interceptor_strchrnul@Base 15 + (arch=i386)___interceptor_strcmp@Base 15 + (arch=i386)___interceptor_strcpy@Base 15 + (arch=i386)___interceptor_strcspn@Base 15 + (arch=i386)___interceptor_strdup@Base 15 + (arch=i386)___interceptor_strerror@Base 15 + (arch=i386)___interceptor_strerror_r@Base 15 + (arch=i386)___interceptor_strlen@Base 15 + (arch=i386)___interceptor_strncasecmp@Base 15 + (arch=i386)___interceptor_strncat@Base 15 + (arch=i386)___interceptor_strncmp@Base 15 + (arch=i386)___interceptor_strncpy@Base 15 + (arch=i386)___interceptor_strndup@Base 15 + (arch=i386)___interceptor_strnlen@Base 15 + (arch=i386)___interceptor_strpbrk@Base 15 + (arch=i386)___interceptor_strptime@Base 15 + (arch=i386)___interceptor_strrchr@Base 15 + (arch=i386)___interceptor_strspn@Base 15 + (arch=i386)___interceptor_strstr@Base 15 + (arch=i386)___interceptor_strtoimax@Base 15 + (arch=i386)___interceptor_strtok@Base 15 + (arch=i386)___interceptor_strtol@Base 15 + (arch=i386)___interceptor_strtoll@Base 15 + (arch=i386)___interceptor_strtoumax@Base 15 + (arch=i386)___interceptor_strxfrm@Base 15 + (arch=i386)___interceptor_strxfrm_l@Base 15 + (arch=i386)___interceptor_swapcontext@Base 15 + (arch=i386)___interceptor_sysinfo@Base 15 + (arch=i386)___interceptor_tcgetattr@Base 15 + (arch=i386)___interceptor_tempnam@Base 15 + (arch=i386)___interceptor_textdomain@Base 15 + (arch=i386)___interceptor_time@Base 15 + (arch=i386)___interceptor_timerfd_gettime@Base 15 + (arch=i386)___interceptor_timerfd_settime@Base 15 + (arch=i386)___interceptor_times@Base 15 + (arch=i386)___interceptor_tmpnam@Base 15 + (arch=i386)___interceptor_tmpnam_r@Base 15 + (arch=i386)___interceptor_tsearch@Base 15 + (arch=i386)___interceptor_ttyname@Base 15 + (arch=i386)___interceptor_ttyname_r@Base 15 + (arch=i386)___interceptor_uname@Base 15 + (arch=i386)___interceptor_valloc@Base 15 + (arch=i386)___interceptor_vasprintf@Base 15 + (arch=i386)___interceptor_vfork@Base 15 + (arch=i386)___interceptor_vfprintf@Base 15 + (arch=i386)___interceptor_vfscanf@Base 15 + (arch=i386)___interceptor_vprintf@Base 15 + (arch=i386)___interceptor_vscanf@Base 15 + (arch=i386)___interceptor_vsnprintf@Base 15 + (arch=i386)___interceptor_vsprintf@Base 15 + (arch=i386)___interceptor_vsscanf@Base 15 + (arch=i386)___interceptor_wait3@Base 15 + (arch=i386)___interceptor_wait4@Base 15 + (arch=i386)___interceptor_wait@Base 15 + (arch=i386)___interceptor_waitid@Base 15 + (arch=i386)___interceptor_waitpid@Base 15 + (arch=i386)___interceptor_wcrtomb@Base 15 + (arch=i386)___interceptor_wcscat@Base 15 + (arch=i386)___interceptor_wcsdup@Base 15 + (arch=i386)___interceptor_wcslen@Base 15 + (arch=i386)___interceptor_wcsncat@Base 15 + (arch=i386)___interceptor_wcsnlen@Base 15 + (arch=i386)___interceptor_wcsnrtombs@Base 15 + (arch=i386)___interceptor_wcsrtombs@Base 15 + (arch=i386)___interceptor_wcstombs@Base 15 + (arch=i386)___interceptor_wcsxfrm@Base 15 + (arch=i386)___interceptor_wcsxfrm_l@Base 15 + (arch=i386)___interceptor_wctomb@Base 15 + (arch=i386)___interceptor_wordexp@Base 15 + (arch=i386)___interceptor_write@Base 15 + (arch=i386)___interceptor_writev@Base 15 + (arch=i386)___interceptor_xdr_bool@Base 15 + (arch=i386)___interceptor_xdr_bytes@Base 15 + (arch=i386)___interceptor_xdr_char@Base 15 + (arch=i386)___interceptor_xdr_destroy@Base 15 + (arch=i386)___interceptor_xdr_double@Base 15 + (arch=i386)___interceptor_xdr_enum@Base 15 + (arch=i386)___interceptor_xdr_float@Base 15 + (arch=i386)___interceptor_xdr_hyper@Base 15 + (arch=i386)___interceptor_xdr_int16_t@Base 15 + (arch=i386)___interceptor_xdr_int32_t@Base 15 + (arch=i386)___interceptor_xdr_int64_t@Base 15 + (arch=i386)___interceptor_xdr_int8_t@Base 15 + (arch=i386)___interceptor_xdr_int@Base 15 + (arch=i386)___interceptor_xdr_long@Base 15 + (arch=i386)___interceptor_xdr_longlong_t@Base 15 + (arch=i386)___interceptor_xdr_quad_t@Base 15 + (arch=i386)___interceptor_xdr_short@Base 15 + (arch=i386)___interceptor_xdr_string@Base 15 + (arch=i386)___interceptor_xdr_u_char@Base 15 + (arch=i386)___interceptor_xdr_u_hyper@Base 15 + (arch=i386)___interceptor_xdr_u_int@Base 15 + (arch=i386)___interceptor_xdr_u_long@Base 15 + (arch=i386)___interceptor_xdr_u_longlong_t@Base 15 + (arch=i386)___interceptor_xdr_u_quad_t@Base 15 + (arch=i386)___interceptor_xdr_u_short@Base 15 + (arch=i386)___interceptor_xdr_uint16_t@Base 15 + (arch=i386)___interceptor_xdr_uint32_t@Base 15 + (arch=i386)___interceptor_xdr_uint64_t@Base 15 + (arch=i386)___interceptor_xdr_uint8_t@Base 15 + (arch=i386)___interceptor_xdrmem_create@Base 15 + (arch=i386)___interceptor_xdrrec_create@Base 15 + (arch=i386)___interceptor_xdrstdio_create@Base 15 + __asan_addr_is_in_fake_stack@Base 15 + __asan_address_is_poisoned@Base 15 + __asan_after_dynamic_init@Base 15 + __asan_alloca_poison@Base 15 + __asan_allocas_unpoison@Base 15 + __asan_backtrace_alloc@Base 15 + __asan_backtrace_close@Base 15 + __asan_backtrace_create_state@Base 15 + __asan_backtrace_dwarf_add@Base 15 + __asan_backtrace_free@Base 15 + __asan_backtrace_get_view@Base 15 + __asan_backtrace_initialize@Base 15 + __asan_backtrace_open@Base 15 + __asan_backtrace_pcinfo@Base 15 + __asan_backtrace_qsort@Base 15 + __asan_backtrace_release_view@Base 15 + __asan_backtrace_syminfo@Base 15 + __asan_backtrace_syminfo_to_full_callback@Base 15 + __asan_backtrace_syminfo_to_full_error_callback@Base 15 + __asan_backtrace_uncompress_lzma@Base 15 + __asan_backtrace_uncompress_zdebug@Base 15 + __asan_backtrace_uncompress_zstd@Base 15 + __asan_backtrace_vector_finish@Base 15 + __asan_backtrace_vector_grow@Base 15 + __asan_backtrace_vector_release@Base 15 + __asan_before_dynamic_init@Base 15 + __asan_cplus_demangle_builtin_types@Base 15 + __asan_cplus_demangle_fill_ctor@Base 15 + __asan_cplus_demangle_fill_dtor@Base 15 + __asan_cplus_demangle_fill_extended_operator@Base 15 + __asan_cplus_demangle_fill_name@Base 15 + __asan_cplus_demangle_init_info@Base 15 + __asan_cplus_demangle_mangled_name@Base 15 + __asan_cplus_demangle_operators@Base 15 + __asan_cplus_demangle_print@Base 15 + __asan_cplus_demangle_print_callback@Base 15 + __asan_cplus_demangle_type@Base 15 + __asan_cplus_demangle_v3@Base 15 + __asan_cplus_demangle_v3_callback@Base 15 + __asan_default_options@Base 15 + __asan_default_suppressions@Base 15 + __asan_describe_address@Base 15 + __asan_exp_load16@Base 15 + __asan_exp_load1@Base 15 + __asan_exp_load2@Base 15 + __asan_exp_load4@Base 15 + __asan_exp_load8@Base 15 + __asan_exp_loadN@Base 15 + __asan_exp_store16@Base 15 + __asan_exp_store1@Base 15 + __asan_exp_store2@Base 15 + __asan_exp_store4@Base 15 + __asan_exp_store8@Base 15 + __asan_exp_storeN@Base 15 + __asan_get_alloc_stack@Base 15 + __asan_get_current_fake_stack@Base 15 + __asan_get_free_stack@Base 15 + __asan_get_report_access_size@Base 15 + __asan_get_report_access_type@Base 15 + __asan_get_report_address@Base 15 + __asan_get_report_bp@Base 15 + __asan_get_report_description@Base 15 + __asan_get_report_pc@Base 15 + __asan_get_report_sp@Base 15 + __asan_get_shadow_mapping@Base 15 + __asan_handle_no_return@Base 15 + __asan_handle_vfork@Base 15 + __asan_init@Base 15 + __asan_internal_memcmp@Base 15 + __asan_internal_memcpy@Base 15 + __asan_internal_memset@Base 15 + __asan_internal_strcmp@Base 15 + __asan_internal_strlen@Base 15 + __asan_internal_strncmp@Base 15 + __asan_internal_strnlen@Base 15 + __asan_is_gnu_v3_mangled_ctor@Base 15 + __asan_is_gnu_v3_mangled_dtor@Base 15 + __asan_java_demangle_v3@Base 15 + __asan_java_demangle_v3_callback@Base 15 + __asan_load16@Base 15 + __asan_load16_noabort@Base 15 + __asan_load1@Base 15 + __asan_load1_noabort@Base 15 + __asan_load2@Base 15 + __asan_load2_noabort@Base 15 + __asan_load4@Base 15 + __asan_load4_noabort@Base 15 + __asan_load8@Base 15 + __asan_load8_noabort@Base 15 + __asan_loadN@Base 15 + __asan_loadN_noabort@Base 15 + __asan_load_cxx_array_cookie@Base 15 + __asan_locate_address@Base 15 + __asan_memcpy@Base 15 + __asan_memmove@Base 15 + __asan_memset@Base 15 + __asan_on_error@Base 15 + __asan_option_detect_stack_use_after_return@Base 15 + __asan_poison_cxx_array_cookie@Base 15 + __asan_poison_intra_object_redzone@Base 15 + __asan_poison_memory_region@Base 15 + __asan_poison_stack_memory@Base 15 + __asan_print_accumulated_stats@Base 15 + __asan_region_is_poisoned@Base 15 + __asan_register_elf_globals@Base 15 + __asan_register_globals@Base 15 + __asan_register_image_globals@Base 15 + __asan_report_error@Base 15 + __asan_report_exp_load16@Base 15 + __asan_report_exp_load1@Base 15 + __asan_report_exp_load2@Base 15 + __asan_report_exp_load4@Base 15 + __asan_report_exp_load8@Base 15 + __asan_report_exp_load_n@Base 15 + __asan_report_exp_store16@Base 15 + __asan_report_exp_store1@Base 15 + __asan_report_exp_store2@Base 15 + __asan_report_exp_store4@Base 15 + __asan_report_exp_store8@Base 15 + __asan_report_exp_store_n@Base 15 + __asan_report_load16@Base 15 + __asan_report_load16_noabort@Base 15 + __asan_report_load1@Base 15 + __asan_report_load1_noabort@Base 15 + __asan_report_load2@Base 15 + __asan_report_load2_noabort@Base 15 + __asan_report_load4@Base 15 + __asan_report_load4_noabort@Base 15 + __asan_report_load8@Base 15 + __asan_report_load8_noabort@Base 15 + __asan_report_load_n@Base 15 + __asan_report_load_n_noabort@Base 15 + __asan_report_present@Base 15 + __asan_report_store16@Base 15 + __asan_report_store16_noabort@Base 15 + __asan_report_store1@Base 15 + __asan_report_store1_noabort@Base 15 + __asan_report_store2@Base 15 + __asan_report_store2_noabort@Base 15 + __asan_report_store4@Base 15 + __asan_report_store4_noabort@Base 15 + __asan_report_store8@Base 15 + __asan_report_store8_noabort@Base 15 + __asan_report_store_n@Base 15 + __asan_report_store_n_noabort@Base 15 + __asan_rt_version@Base 15 + __asan_set_death_callback@Base 15 + __asan_set_error_report_callback@Base 15 + __asan_set_shadow_00@Base 15 + __asan_set_shadow_01@Base 15 + __asan_set_shadow_02@Base 15 + __asan_set_shadow_03@Base 15 + __asan_set_shadow_04@Base 15 + __asan_set_shadow_05@Base 15 + __asan_set_shadow_06@Base 15 + __asan_set_shadow_07@Base 15 + __asan_set_shadow_f1@Base 15 + __asan_set_shadow_f2@Base 15 + __asan_set_shadow_f3@Base 15 + __asan_set_shadow_f5@Base 15 + __asan_set_shadow_f8@Base 15 + __asan_shadow_memory_dynamic_address@Base 15 + __asan_stack_free_0@Base 15 + __asan_stack_free_10@Base 15 + __asan_stack_free_1@Base 15 + __asan_stack_free_2@Base 15 + __asan_stack_free_3@Base 15 + __asan_stack_free_4@Base 15 + __asan_stack_free_5@Base 15 + __asan_stack_free_6@Base 15 + __asan_stack_free_7@Base 15 + __asan_stack_free_8@Base 15 + __asan_stack_free_9@Base 15 + __asan_stack_malloc_0@Base 15 + __asan_stack_malloc_10@Base 15 + __asan_stack_malloc_1@Base 15 + __asan_stack_malloc_2@Base 15 + __asan_stack_malloc_3@Base 15 + __asan_stack_malloc_4@Base 15 + __asan_stack_malloc_5@Base 15 + __asan_stack_malloc_6@Base 15 + __asan_stack_malloc_7@Base 15 + __asan_stack_malloc_8@Base 15 + __asan_stack_malloc_9@Base 15 + __asan_stack_malloc_always_0@Base 15 + __asan_stack_malloc_always_10@Base 15 + __asan_stack_malloc_always_1@Base 15 + __asan_stack_malloc_always_2@Base 15 + __asan_stack_malloc_always_3@Base 15 + __asan_stack_malloc_always_4@Base 15 + __asan_stack_malloc_always_5@Base 15 + __asan_stack_malloc_always_6@Base 15 + __asan_stack_malloc_always_7@Base 15 + __asan_stack_malloc_always_8@Base 15 + __asan_stack_malloc_always_9@Base 15 + __asan_store16@Base 15 + __asan_store16_noabort@Base 15 + __asan_store1@Base 15 + __asan_store1_noabort@Base 15 + __asan_store2@Base 15 + __asan_store2_noabort@Base 15 + __asan_store4@Base 15 + __asan_store4_noabort@Base 15 + __asan_store8@Base 15 + __asan_store8_noabort@Base 15 + __asan_storeN@Base 15 + __asan_storeN_noabort@Base 15 + __asan_test_only_reported_buggy_pointer@Base 15 + __asan_unpoison_intra_object_redzone@Base 15 + __asan_unpoison_memory_region@Base 15 + __asan_unpoison_stack_memory@Base 15 + __asan_unregister_elf_globals@Base 15 + __asan_unregister_globals@Base 15 + __asan_unregister_image_globals@Base 15 + __asan_update_allocation_context@Base 15 + __asan_version_mismatch_check_v8@Base 15 + __b64_ntop@Base 15 + __b64_pton@Base 15 + __bzero@Base 15 + __cxa_atexit@Base 15 + __cxa_throw@Base 15 + __fprintf_chk@Base 15 + __getdelim@Base 15 + __interceptor__Unwind_RaiseException@Base 15 + __interceptor___b64_ntop@Base 15 + __interceptor___b64_pton@Base 15 + __interceptor___bzero@Base 15 + __interceptor___cxa_atexit@Base 15 + __interceptor___cxa_throw@Base 15 + __interceptor___fprintf_chk@Base 15 + __interceptor___getdelim@Base 15 + __interceptor___isoc23_fscanf@Base 15 + __interceptor___isoc23_scanf@Base 15 + __interceptor___isoc23_sscanf@Base 15 + __interceptor___isoc23_strtoimax@Base 15 + __interceptor___isoc23_strtol@Base 15 + __interceptor___isoc23_strtoll@Base 15 + __interceptor___isoc23_strtoumax@Base 15 + __interceptor___isoc23_vfscanf@Base 15 + __interceptor___isoc23_vscanf@Base 15 + __interceptor___isoc23_vsscanf@Base 15 + __interceptor___isoc99_fprintf@Base 15 + __interceptor___isoc99_fscanf@Base 15 + __interceptor___isoc99_printf@Base 15 + __interceptor___isoc99_scanf@Base 15 + __interceptor___isoc99_snprintf@Base 15 + __interceptor___isoc99_sprintf@Base 15 + __interceptor___isoc99_sscanf@Base 15 + __interceptor___isoc99_vfprintf@Base 15 + __interceptor___isoc99_vfscanf@Base 15 + __interceptor___isoc99_vprintf@Base 15 + __interceptor___isoc99_vscanf@Base 15 + __interceptor___isoc99_vsnprintf@Base 15 + __interceptor___isoc99_vsprintf@Base 15 + __interceptor___isoc99_vsscanf@Base 15 + __interceptor___libc_memalign@Base 15 + __interceptor___longjmp_chk@Base 15 + __interceptor___lxstat64@Base 15 + __interceptor___lxstat@Base 15 + __interceptor___overflow@Base 15 + __interceptor___snprintf_chk@Base 15 + __interceptor___sprintf_chk@Base 15 + __interceptor___strdup@Base 15 + __interceptor___strndup@Base 15 + __interceptor___strxfrm_l@Base 15 + __interceptor___tls_get_addr@Base 15 + (arch=powerpc)__interceptor___tls_get_addr_opt@Base 15 + __interceptor___uflow@Base 15 + __interceptor___underflow@Base 15 + __interceptor___vsnprintf_chk@Base 15 + __interceptor___vsprintf_chk@Base 15 + __interceptor___wcsxfrm_l@Base 15 + __interceptor___woverflow@Base 15 + __interceptor___wuflow@Base 15 + __interceptor___wunderflow@Base 15 + __interceptor___xpg_strerror_r@Base 15 + __interceptor___xstat64@Base 15 + __interceptor___xstat@Base 15 + __interceptor__exit@Base 15 + __interceptor__longjmp@Base 15 + __interceptor__obstack_begin@Base 15 + __interceptor__obstack_begin_1@Base 15 + __interceptor__obstack_newchunk@Base 15 + __interceptor_accept4@Base 15 + __interceptor_accept@Base 15 + __interceptor_aligned_alloc@Base 15 + __interceptor_argp_parse@Base 15 + __interceptor_asctime@Base 15 + __interceptor_asctime_r@Base 15 + __interceptor_asprintf@Base 15 + __interceptor_atoi@Base 15 + __interceptor_atol@Base 15 + __interceptor_atoll@Base 15 + __interceptor_backtrace@Base 15 + __interceptor_backtrace_symbols@Base 15 + __interceptor_bcmp@Base 15 + __interceptor_bsearch@Base 15 + __interceptor_bzero@Base 15 + __interceptor_calloc@Base 15 + __interceptor_canonicalize_file_name@Base 15 + __interceptor_capget@Base 15 + __interceptor_capset@Base 15 + __interceptor_cfree@Base 15 + __interceptor_clock_getcpuclockid@Base 15 + __interceptor_clock_getres@Base 15 + __interceptor_clock_gettime@Base 15 + __interceptor_clock_settime@Base 15 + __interceptor_confstr@Base 15 + __interceptor_ctermid@Base 15 + __interceptor_ctime@Base 15 + __interceptor_ctime_r@Base 15 + __interceptor_dlclose@Base 15 + __interceptor_dlopen@Base 15 + __interceptor_dn_comp@Base 15 + __interceptor_dn_expand@Base 15 + __interceptor_drand48_r@Base 15 + __interceptor_endgrent@Base 15 + __interceptor_endpwent@Base 15 + __interceptor_ether_aton@Base 15 + __interceptor_ether_aton_r@Base 15 + __interceptor_ether_hostton@Base 15 + __interceptor_ether_line@Base 15 + __interceptor_ether_ntoa@Base 15 + __interceptor_ether_ntoa_r@Base 15 + __interceptor_ether_ntohost@Base 15 + __interceptor_eventfd_read@Base 15 + __interceptor_eventfd_write@Base 15 + __interceptor_fclose@Base 15 + __interceptor_fdopen@Base 15 + __interceptor_fflush@Base 15 + __interceptor_fgetgrent@Base 15 + __interceptor_fgetgrent_r@Base 15 + __interceptor_fgetpwent@Base 15 + __interceptor_fgetpwent_r@Base 15 + __interceptor_fgets@Base 15 + __interceptor_fgetxattr@Base 15 + __interceptor_flistxattr@Base 15 + __interceptor_fmemopen@Base 15 + __interceptor_fopen64@Base 15 + __interceptor_fopen@Base 15 + __interceptor_fopencookie@Base 15 + __interceptor_fprintf@Base 15 + __interceptor_fputs@Base 15 + __interceptor_fread@Base 15 + __interceptor_free@Base 15 + __interceptor_freopen64@Base 15 + __interceptor_freopen@Base 15 + __interceptor_frexp@Base 15 + __interceptor_frexpf@Base 15 + __interceptor_frexpl@Base 15 + __interceptor_fscanf@Base 15 + __interceptor_fstatfs64@Base 15 + __interceptor_fstatfs@Base 15 + __interceptor_fstatvfs64@Base 15 + __interceptor_fstatvfs@Base 15 + __interceptor_ftime@Base 15 + __interceptor_fwrite@Base 15 + __interceptor_get_current_dir_name@Base 15 + __interceptor_getaddrinfo@Base 15 + __interceptor_getcwd@Base 15 + __interceptor_getdelim@Base 15 + __interceptor_getentropy@Base 15 + __interceptor_getgrent@Base 15 + __interceptor_getgrent_r@Base 15 + __interceptor_getgrgid@Base 15 + __interceptor_getgrgid_r@Base 15 + __interceptor_getgrnam@Base 15 + __interceptor_getgrnam_r@Base 15 + __interceptor_getgrouplist@Base 15 + __interceptor_getgroups@Base 15 + __interceptor_gethostbyaddr@Base 15 + __interceptor_gethostbyaddr_r@Base 15 + __interceptor_gethostbyname2@Base 15 + __interceptor_gethostbyname2_r@Base 15 + __interceptor_gethostbyname@Base 15 + __interceptor_gethostbyname_r@Base 15 + __interceptor_gethostent@Base 15 + __interceptor_gethostent_r@Base 15 + __interceptor_getifaddrs@Base 15 + __interceptor_getitimer@Base 15 + __interceptor_getline@Base 15 + __interceptor_getloadavg@Base 15 + __interceptor_getmntent@Base 15 + __interceptor_getmntent_r@Base 15 + __interceptor_getnameinfo@Base 15 + __interceptor_getnetbyaddr@Base 15 + __interceptor_getnetbyname@Base 15 + __interceptor_getnetent@Base 15 + __interceptor_getpass@Base 15 + __interceptor_getpeername@Base 15 + __interceptor_getprotobyname@Base 15 + __interceptor_getprotobyname_r@Base 15 + __interceptor_getprotobynumber@Base 15 + __interceptor_getprotobynumber_r@Base 15 + __interceptor_getprotoent@Base 15 + __interceptor_getprotoent_r@Base 15 + __interceptor_getpwent@Base 15 + __interceptor_getpwent_r@Base 15 + __interceptor_getpwnam@Base 15 + __interceptor_getpwnam_r@Base 15 + __interceptor_getpwuid@Base 15 + __interceptor_getpwuid_r@Base 15 + __interceptor_getrandom@Base 15 + __interceptor_getresgid@Base 15 + __interceptor_getresuid@Base 15 + __interceptor_getsockname@Base 15 + __interceptor_getsockopt@Base 15 + __interceptor_getusershell@Base 15 + __interceptor_getutent@Base 15 + __interceptor_getutid@Base 15 + __interceptor_getutline@Base 15 + __interceptor_getutxent@Base 15 + __interceptor_getutxid@Base 15 + __interceptor_getutxline@Base 15 + __interceptor_getxattr@Base 15 + __interceptor_glob64@Base 15 + __interceptor_glob@Base 15 + __interceptor_gmtime@Base 15 + __interceptor_gmtime_r@Base 15 + __interceptor_iconv@Base 15 + __interceptor_if_indextoname@Base 15 + __interceptor_if_nametoindex@Base 15 + __interceptor_index@Base 15 + __interceptor_inet_aton@Base 15 + __interceptor_inet_ntop@Base 15 + __interceptor_inet_pton@Base 15 + __interceptor_initgroups@Base 15 + __interceptor_ioctl@Base 15 + __interceptor_lgamma@Base 15 + __interceptor_lgamma_r@Base 15 + __interceptor_lgammaf@Base 15 + __interceptor_lgammaf_r@Base 15 + __interceptor_lgammal@Base 15 + __interceptor_lgammal_r@Base 15 + __interceptor_lgetxattr@Base 15 + __interceptor_listxattr@Base 15 + __interceptor_llistxattr@Base 15 + __interceptor_localtime@Base 15 + __interceptor_localtime_r@Base 15 + __interceptor_longjmp@Base 15 + __interceptor_lrand48_r@Base 15 + __interceptor_lstat64@Base 15 + __interceptor_lstat@Base 15 + __interceptor_makecontext@Base 15 + __interceptor_mallinfo@Base 15 + __interceptor_malloc@Base 15 + __interceptor_malloc_stats@Base 15 + __interceptor_malloc_usable_size@Base 15 + __interceptor_mallopt@Base 15 + __interceptor_mbsnrtowcs@Base 15 + __interceptor_mbsrtowcs@Base 15 + __interceptor_mbstowcs@Base 15 + __interceptor_mcheck@Base 15 + __interceptor_mcheck_pedantic@Base 15 + __interceptor_memalign@Base 15 + __interceptor_memchr@Base 15 + __interceptor_memcmp@Base 15 + __interceptor_memcpy@Base 15 + __interceptor_memmem@Base 15 + __interceptor_memmove@Base 15 + __interceptor_memrchr@Base 15 + __interceptor_memset@Base 15 + __interceptor_mincore@Base 15 + __interceptor_mktime@Base 15 + __interceptor_mlock@Base 15 + __interceptor_mlockall@Base 15 + __interceptor_mmap64@Base 15 + __interceptor_mmap@Base 15 + __interceptor_modf@Base 15 + __interceptor_modff@Base 15 + __interceptor_modfl@Base 15 + __interceptor_mprobe@Base 15 + __interceptor_mprotect@Base 15 + __interceptor_msgrcv@Base 15 + __interceptor_msgsnd@Base 15 + __interceptor_munlock@Base 15 + __interceptor_munlockall@Base 15 + __interceptor_munmap@Base 15 + __interceptor_name_to_handle_at@Base 15 + __interceptor_open_by_handle_at@Base 15 + __interceptor_open_memstream@Base 15 + __interceptor_open_wmemstream@Base 15 + __interceptor_opendir@Base 15 + __interceptor_pclose@Base 15 + __interceptor_poll@Base 15 + __interceptor_popen@Base 15 + __interceptor_posix_memalign@Base 15 + __interceptor_posix_spawn@Base 15 + __interceptor_posix_spawnp@Base 15 + __interceptor_ppoll@Base 15 + __interceptor_prctl@Base 15 + __interceptor_pread64@Base 15 + __interceptor_pread@Base 15 + __interceptor_preadv2@Base 15 + __interceptor_preadv64@Base 15 + __interceptor_preadv@Base 15 + __interceptor_printf@Base 15 + __interceptor_process_vm_readv@Base 15 + __interceptor_process_vm_writev@Base 15 + __interceptor_pthread_attr_getaffinity_np@Base 15 + __interceptor_pthread_attr_getdetachstate@Base 15 + __interceptor_pthread_attr_getguardsize@Base 15 + __interceptor_pthread_attr_getinheritsched@Base 15 + __interceptor_pthread_attr_getschedparam@Base 15 + __interceptor_pthread_attr_getschedpolicy@Base 15 + __interceptor_pthread_attr_getscope@Base 15 + __interceptor_pthread_attr_getstack@Base 15 + __interceptor_pthread_attr_getstacksize@Base 15 + __interceptor_pthread_barrierattr_getpshared@Base 15 + __interceptor_pthread_condattr_getclock@Base 15 + __interceptor_pthread_condattr_getpshared@Base 15 + __interceptor_pthread_create@Base 15 + __interceptor_pthread_detach@Base 15 + __interceptor_pthread_exit@Base 15 + __interceptor_pthread_getaffinity_np@Base 15 + __interceptor_pthread_getcpuclockid@Base 15 + __interceptor_pthread_getname_np@Base 15 + __interceptor_pthread_getschedparam@Base 15 + __interceptor_pthread_join@Base 15 + __interceptor_pthread_mutexattr_getprioceiling@Base 15 + __interceptor_pthread_mutexattr_getprotocol@Base 15 + __interceptor_pthread_mutexattr_getpshared@Base 15 + __interceptor_pthread_mutexattr_getrobust@Base 15 + __interceptor_pthread_mutexattr_getrobust_np@Base 15 + __interceptor_pthread_mutexattr_gettype@Base 15 + __interceptor_pthread_rwlockattr_getkind_np@Base 15 + __interceptor_pthread_rwlockattr_getpshared@Base 15 + __interceptor_pthread_setcancelstate@Base 15 + __interceptor_pthread_setcanceltype@Base 15 + __interceptor_pthread_setname_np@Base 15 + __interceptor_pthread_sigmask@Base 15 + __interceptor_pthread_timedjoin_np@Base 15 + __interceptor_pthread_tryjoin_np@Base 15 + __interceptor_ptrace@Base 15 + __interceptor_ptsname@Base 15 + __interceptor_ptsname_r@Base 15 + __interceptor_puts@Base 15 + __interceptor_pututxline@Base 15 + __interceptor_pvalloc@Base 15 + __interceptor_pwrite64@Base 15 + __interceptor_pwrite@Base 15 + __interceptor_pwritev2@Base 15 + __interceptor_pwritev64@Base 15 + __interceptor_pwritev@Base 15 + __interceptor_qsort@Base 15 + __interceptor_qsort_r@Base 15 + __interceptor_rand_r@Base 15 + __interceptor_random_r@Base 15 + __interceptor_read@Base 15 + __interceptor_readdir64@Base 15 + __interceptor_readdir64_r@Base 15 + __interceptor_readdir@Base 15 + __interceptor_readdir_r@Base 15 + __interceptor_readlink@Base 15 + __interceptor_readlinkat@Base 15 + __interceptor_readv@Base 15 + __interceptor_realloc@Base 15 + __interceptor_reallocarray@Base 15 + __interceptor_realpath@Base 15 + __interceptor_recv@Base 15 + __interceptor_recvfrom@Base 15 + __interceptor_recvmmsg@Base 15 + __interceptor_recvmsg@Base 15 + __interceptor_regcomp@Base 15 + __interceptor_regerror@Base 15 + __interceptor_regexec@Base 15 + __interceptor_regfree@Base 15 + __interceptor_remquo@Base 15 + __interceptor_remquof@Base 15 + __interceptor_remquol@Base 15 + __interceptor_scandir64@Base 15 + __interceptor_scandir@Base 15 + __interceptor_scanf@Base 15 + __interceptor_sched_getaffinity@Base 15 + __interceptor_sched_getparam@Base 15 + __interceptor_sem_destroy@Base 15 + __interceptor_sem_getvalue@Base 15 + __interceptor_sem_init@Base 15 + __interceptor_sem_open@Base 15 + __interceptor_sem_post@Base 15 + __interceptor_sem_timedwait@Base 15 + __interceptor_sem_trywait@Base 15 + __interceptor_sem_unlink@Base 15 + __interceptor_sem_wait@Base 15 + __interceptor_send@Base 15 + __interceptor_sendmmsg@Base 15 + __interceptor_sendmsg@Base 15 + __interceptor_sendto@Base 15 + __interceptor_setbuf@Base 15 + __interceptor_setbuffer@Base 15 + __interceptor_setgrent@Base 15 + __interceptor_setitimer@Base 15 + __interceptor_setlinebuf@Base 15 + __interceptor_setlocale@Base 15 + __interceptor_setpwent@Base 15 + __interceptor_setvbuf@Base 15 + __interceptor_shmctl@Base 15 + __interceptor_sigaction@Base 15 + __interceptor_sigaltstack@Base 15 + __interceptor_sigandset@Base 15 + __interceptor_sigemptyset@Base 15 + __interceptor_sigfillset@Base 15 + __interceptor_siglongjmp@Base 15 + __interceptor_signal@Base 15 + __interceptor_sigorset@Base 15 + __interceptor_sigpending@Base 15 + __interceptor_sigprocmask@Base 15 + __interceptor_sigtimedwait@Base 15 + __interceptor_sigwait@Base 15 + __interceptor_sigwaitinfo@Base 15 + __interceptor_sincos@Base 15 + __interceptor_sincosf@Base 15 + __interceptor_sincosl@Base 15 + __interceptor_snprintf@Base 15 + __interceptor_sprintf@Base 15 + __interceptor_sscanf@Base 15 + __interceptor_stat64@Base 15 + __interceptor_stat@Base 15 + __interceptor_statfs64@Base 15 + __interceptor_statfs@Base 15 + __interceptor_statvfs64@Base 15 + __interceptor_statvfs@Base 15 + __interceptor_strcasecmp@Base 15 + __interceptor_strcasestr@Base 15 + __interceptor_strcat@Base 15 + __interceptor_strchr@Base 15 + __interceptor_strchrnul@Base 15 + __interceptor_strcmp@Base 15 + __interceptor_strcpy@Base 15 + __interceptor_strcspn@Base 15 + __interceptor_strdup@Base 15 + __interceptor_strerror@Base 15 + __interceptor_strerror_r@Base 15 + __interceptor_strlen@Base 15 + __interceptor_strncasecmp@Base 15 + __interceptor_strncat@Base 15 + __interceptor_strncmp@Base 15 + __interceptor_strncpy@Base 15 + __interceptor_strndup@Base 15 + __interceptor_strnlen@Base 15 + __interceptor_strpbrk@Base 15 + __interceptor_strptime@Base 15 + __interceptor_strrchr@Base 15 + __interceptor_strspn@Base 15 + __interceptor_strstr@Base 15 + __interceptor_strtoimax@Base 15 + __interceptor_strtok@Base 15 + __interceptor_strtol@Base 15 + __interceptor_strtoll@Base 15 + __interceptor_strtoumax@Base 15 + __interceptor_strxfrm@Base 15 + __interceptor_strxfrm_l@Base 15 + __interceptor_swapcontext@Base 15 + __interceptor_sysinfo@Base 15 + __interceptor_tcgetattr@Base 15 + __interceptor_tempnam@Base 15 + __interceptor_textdomain@Base 15 + __interceptor_time@Base 15 + __interceptor_timerfd_gettime@Base 15 + __interceptor_timerfd_settime@Base 15 + __interceptor_times@Base 15 + __interceptor_tmpnam@Base 15 + __interceptor_tmpnam_r@Base 15 + (arch=i386)__interceptor_trampoline__Unwind_RaiseException@Base 15 + (arch=i386)__interceptor_trampoline___b64_ntop@Base 15 + (arch=i386)__interceptor_trampoline___b64_pton@Base 15 + (arch=i386)__interceptor_trampoline___bzero@Base 15 + (arch=i386)__interceptor_trampoline___cxa_atexit@Base 15 + (arch=i386)__interceptor_trampoline___cxa_throw@Base 15 + (arch=i386)__interceptor_trampoline___fprintf_chk@Base 15 + (arch=i386)__interceptor_trampoline___getdelim@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_fscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_scanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_sscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_strtoimax@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_strtol@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_strtoll@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_strtoumax@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_vfscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_vscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_vsscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_fprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_fscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_printf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_scanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_snprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_sprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_sscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vfprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vfscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vsnprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vsprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vsscanf@Base 15 + (arch=i386)__interceptor_trampoline___libc_memalign@Base 15 + (arch=i386)__interceptor_trampoline___longjmp_chk@Base 15 + (arch=i386)__interceptor_trampoline___lxstat64@Base 15 + (arch=i386)__interceptor_trampoline___lxstat@Base 15 + (arch=i386)__interceptor_trampoline___overflow@Base 15 + (arch=i386)__interceptor_trampoline___snprintf_chk@Base 15 + (arch=i386)__interceptor_trampoline___sprintf_chk@Base 15 + (arch=i386)__interceptor_trampoline___strdup@Base 15 + (arch=i386)__interceptor_trampoline___strndup@Base 15 + (arch=i386)__interceptor_trampoline___strxfrm_l@Base 15 + (arch=i386)__interceptor_trampoline___tls_get_addr@Base 15 + (arch=i386)__interceptor_trampoline___uflow@Base 15 + (arch=i386)__interceptor_trampoline___underflow@Base 15 + (arch=i386)__interceptor_trampoline___vsnprintf_chk@Base 15 + (arch=i386)__interceptor_trampoline___vsprintf_chk@Base 15 + (arch=i386)__interceptor_trampoline___wcsxfrm_l@Base 15 + (arch=i386)__interceptor_trampoline___woverflow@Base 15 + (arch=i386)__interceptor_trampoline___wuflow@Base 15 + (arch=i386)__interceptor_trampoline___wunderflow@Base 15 + (arch=i386)__interceptor_trampoline___xpg_strerror_r@Base 15 + (arch=i386)__interceptor_trampoline___xstat64@Base 15 + (arch=i386)__interceptor_trampoline___xstat@Base 15 + (arch=i386)__interceptor_trampoline__exit@Base 15 + (arch=i386)__interceptor_trampoline__longjmp@Base 15 + (arch=i386)__interceptor_trampoline__obstack_begin@Base 15 + (arch=i386)__interceptor_trampoline__obstack_begin_1@Base 15 + (arch=i386)__interceptor_trampoline__obstack_newchunk@Base 15 + (arch=i386)__interceptor_trampoline_accept4@Base 15 + (arch=i386)__interceptor_trampoline_accept@Base 15 + (arch=i386)__interceptor_trampoline_aligned_alloc@Base 15 + (arch=i386)__interceptor_trampoline_argp_parse@Base 15 + (arch=i386)__interceptor_trampoline_asctime@Base 15 + (arch=i386)__interceptor_trampoline_asctime_r@Base 15 + (arch=i386)__interceptor_trampoline_asprintf@Base 15 + (arch=i386)__interceptor_trampoline_atoi@Base 15 + (arch=i386)__interceptor_trampoline_atol@Base 15 + (arch=i386)__interceptor_trampoline_atoll@Base 15 + (arch=i386)__interceptor_trampoline_backtrace@Base 15 + (arch=i386)__interceptor_trampoline_backtrace_symbols@Base 15 + (arch=i386)__interceptor_trampoline_bcmp@Base 15 + (arch=i386)__interceptor_trampoline_bsearch@Base 15 + (arch=i386)__interceptor_trampoline_bzero@Base 15 + (arch=i386)__interceptor_trampoline_calloc@Base 15 + (arch=i386)__interceptor_trampoline_canonicalize_file_name@Base 15 + (arch=i386)__interceptor_trampoline_capget@Base 15 + (arch=i386)__interceptor_trampoline_capset@Base 15 + (arch=i386)__interceptor_trampoline_cfree@Base 15 + (arch=i386)__interceptor_trampoline_clock_getcpuclockid@Base 15 + (arch=i386)__interceptor_trampoline_clock_getres@Base 15 + (arch=i386)__interceptor_trampoline_clock_gettime@Base 15 + (arch=i386)__interceptor_trampoline_clock_settime@Base 15 + (arch=i386)__interceptor_trampoline_confstr@Base 15 + (arch=i386)__interceptor_trampoline_ctermid@Base 15 + (arch=i386)__interceptor_trampoline_ctime@Base 15 + (arch=i386)__interceptor_trampoline_ctime_r@Base 15 + (arch=i386)__interceptor_trampoline_dlclose@Base 15 + (arch=i386)__interceptor_trampoline_dlopen@Base 15 + (arch=i386)__interceptor_trampoline_dn_comp@Base 15 + (arch=i386)__interceptor_trampoline_dn_expand@Base 15 + (arch=i386)__interceptor_trampoline_drand48_r@Base 15 + (arch=i386)__interceptor_trampoline_endgrent@Base 15 + (arch=i386)__interceptor_trampoline_endpwent@Base 15 + (arch=i386)__interceptor_trampoline_ether_aton@Base 15 + (arch=i386)__interceptor_trampoline_ether_aton_r@Base 15 + (arch=i386)__interceptor_trampoline_ether_hostton@Base 15 + (arch=i386)__interceptor_trampoline_ether_line@Base 15 + (arch=i386)__interceptor_trampoline_ether_ntoa@Base 15 + (arch=i386)__interceptor_trampoline_ether_ntoa_r@Base 15 + (arch=i386)__interceptor_trampoline_ether_ntohost@Base 15 + (arch=i386)__interceptor_trampoline_eventfd_read@Base 15 + (arch=i386)__interceptor_trampoline_eventfd_write@Base 15 + (arch=i386)__interceptor_trampoline_fclose@Base 15 + (arch=i386)__interceptor_trampoline_fdopen@Base 15 + (arch=i386)__interceptor_trampoline_fflush@Base 15 + (arch=i386)__interceptor_trampoline_fgetgrent@Base 15 + (arch=i386)__interceptor_trampoline_fgetgrent_r@Base 15 + (arch=i386)__interceptor_trampoline_fgetpwent@Base 15 + (arch=i386)__interceptor_trampoline_fgetpwent_r@Base 15 + (arch=i386)__interceptor_trampoline_fgets@Base 15 + (arch=i386)__interceptor_trampoline_fgetxattr@Base 15 + (arch=i386)__interceptor_trampoline_flistxattr@Base 15 + (arch=i386)__interceptor_trampoline_fmemopen@Base 15 + (arch=i386)__interceptor_trampoline_fopen64@Base 15 + (arch=i386)__interceptor_trampoline_fopen@Base 15 + (arch=i386)__interceptor_trampoline_fopencookie@Base 15 + (arch=i386)__interceptor_trampoline_fprintf@Base 15 + (arch=i386)__interceptor_trampoline_fputs@Base 15 + (arch=i386)__interceptor_trampoline_fread@Base 15 + (arch=i386)__interceptor_trampoline_free@Base 15 + (arch=i386)__interceptor_trampoline_freopen64@Base 15 + (arch=i386)__interceptor_trampoline_freopen@Base 15 + (arch=i386)__interceptor_trampoline_frexp@Base 15 + (arch=i386)__interceptor_trampoline_frexpf@Base 15 + (arch=i386)__interceptor_trampoline_frexpl@Base 15 + (arch=i386)__interceptor_trampoline_fscanf@Base 15 + (arch=i386)__interceptor_trampoline_fstatfs64@Base 15 + (arch=i386)__interceptor_trampoline_fstatfs@Base 15 + (arch=i386)__interceptor_trampoline_fstatvfs64@Base 15 + (arch=i386)__interceptor_trampoline_fstatvfs@Base 15 + (arch=i386)__interceptor_trampoline_ftime@Base 15 + (arch=i386)__interceptor_trampoline_fwrite@Base 15 + (arch=i386)__interceptor_trampoline_get_current_dir_name@Base 15 + (arch=i386)__interceptor_trampoline_getaddrinfo@Base 15 + (arch=i386)__interceptor_trampoline_getcwd@Base 15 + (arch=i386)__interceptor_trampoline_getdelim@Base 15 + (arch=i386)__interceptor_trampoline_getentropy@Base 15 + (arch=i386)__interceptor_trampoline_getgrent@Base 15 + (arch=i386)__interceptor_trampoline_getgrent_r@Base 15 + (arch=i386)__interceptor_trampoline_getgrgid@Base 15 + (arch=i386)__interceptor_trampoline_getgrgid_r@Base 15 + (arch=i386)__interceptor_trampoline_getgrnam@Base 15 + (arch=i386)__interceptor_trampoline_getgrnam_r@Base 15 + (arch=i386)__interceptor_trampoline_getgrouplist@Base 15 + (arch=i386)__interceptor_trampoline_getgroups@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyaddr@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyaddr_r@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyname2@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyname2_r@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyname@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyname_r@Base 15 + (arch=i386)__interceptor_trampoline_gethostent@Base 15 + (arch=i386)__interceptor_trampoline_gethostent_r@Base 15 + (arch=i386)__interceptor_trampoline_getifaddrs@Base 15 + (arch=i386)__interceptor_trampoline_getitimer@Base 15 + (arch=i386)__interceptor_trampoline_getline@Base 15 + (arch=i386)__interceptor_trampoline_getloadavg@Base 15 + (arch=i386)__interceptor_trampoline_getmntent@Base 15 + (arch=i386)__interceptor_trampoline_getmntent_r@Base 15 + (arch=i386)__interceptor_trampoline_getnameinfo@Base 15 + (arch=i386)__interceptor_trampoline_getnetbyaddr@Base 15 + (arch=i386)__interceptor_trampoline_getnetbyname@Base 15 + (arch=i386)__interceptor_trampoline_getnetent@Base 15 + (arch=i386)__interceptor_trampoline_getpass@Base 15 + (arch=i386)__interceptor_trampoline_getpeername@Base 15 + (arch=i386)__interceptor_trampoline_getprotobyname@Base 15 + (arch=i386)__interceptor_trampoline_getprotobyname_r@Base 15 + (arch=i386)__interceptor_trampoline_getprotobynumber@Base 15 + (arch=i386)__interceptor_trampoline_getprotobynumber_r@Base 15 + (arch=i386)__interceptor_trampoline_getprotoent@Base 15 + (arch=i386)__interceptor_trampoline_getprotoent_r@Base 15 + (arch=i386)__interceptor_trampoline_getpwent@Base 15 + (arch=i386)__interceptor_trampoline_getpwent_r@Base 15 + (arch=i386)__interceptor_trampoline_getpwnam@Base 15 + (arch=i386)__interceptor_trampoline_getpwnam_r@Base 15 + (arch=i386)__interceptor_trampoline_getpwuid@Base 15 + (arch=i386)__interceptor_trampoline_getpwuid_r@Base 15 + (arch=i386)__interceptor_trampoline_getrandom@Base 15 + (arch=i386)__interceptor_trampoline_getresgid@Base 15 + (arch=i386)__interceptor_trampoline_getresuid@Base 15 + (arch=i386)__interceptor_trampoline_getsockname@Base 15 + (arch=i386)__interceptor_trampoline_getsockopt@Base 15 + (arch=i386)__interceptor_trampoline_getusershell@Base 15 + (arch=i386)__interceptor_trampoline_getutent@Base 15 + (arch=i386)__interceptor_trampoline_getutid@Base 15 + (arch=i386)__interceptor_trampoline_getutline@Base 15 + (arch=i386)__interceptor_trampoline_getutxent@Base 15 + (arch=i386)__interceptor_trampoline_getutxid@Base 15 + (arch=i386)__interceptor_trampoline_getutxline@Base 15 + (arch=i386)__interceptor_trampoline_getxattr@Base 15 + (arch=i386)__interceptor_trampoline_glob64@Base 15 + (arch=i386)__interceptor_trampoline_glob@Base 15 + (arch=i386)__interceptor_trampoline_gmtime@Base 15 + (arch=i386)__interceptor_trampoline_gmtime_r@Base 15 + (arch=i386)__interceptor_trampoline_iconv@Base 15 + (arch=i386)__interceptor_trampoline_if_indextoname@Base 15 + (arch=i386)__interceptor_trampoline_if_nametoindex@Base 15 + (arch=i386)__interceptor_trampoline_index@Base 15 + (arch=i386)__interceptor_trampoline_inet_aton@Base 15 + (arch=i386)__interceptor_trampoline_inet_ntop@Base 15 + (arch=i386)__interceptor_trampoline_inet_pton@Base 15 + (arch=i386)__interceptor_trampoline_initgroups@Base 15 + (arch=i386)__interceptor_trampoline_ioctl@Base 15 + (arch=i386)__interceptor_trampoline_lgamma@Base 15 + (arch=i386)__interceptor_trampoline_lgamma_r@Base 15 + (arch=i386)__interceptor_trampoline_lgammaf@Base 15 + (arch=i386)__interceptor_trampoline_lgammaf_r@Base 15 + (arch=i386)__interceptor_trampoline_lgammal@Base 15 + (arch=i386)__interceptor_trampoline_lgammal_r@Base 15 + (arch=i386)__interceptor_trampoline_lgetxattr@Base 15 + (arch=i386)__interceptor_trampoline_listxattr@Base 15 + (arch=i386)__interceptor_trampoline_llistxattr@Base 15 + (arch=i386)__interceptor_trampoline_localtime@Base 15 + (arch=i386)__interceptor_trampoline_localtime_r@Base 15 + (arch=i386)__interceptor_trampoline_longjmp@Base 15 + (arch=i386)__interceptor_trampoline_lrand48_r@Base 15 + (arch=i386)__interceptor_trampoline_lstat64@Base 15 + (arch=i386)__interceptor_trampoline_lstat@Base 15 + (arch=i386)__interceptor_trampoline_makecontext@Base 15 + (arch=i386)__interceptor_trampoline_mallinfo@Base 15 + (arch=i386)__interceptor_trampoline_malloc@Base 15 + (arch=i386)__interceptor_trampoline_malloc_stats@Base 15 + (arch=i386)__interceptor_trampoline_malloc_usable_size@Base 15 + (arch=i386)__interceptor_trampoline_mallopt@Base 15 + (arch=i386)__interceptor_trampoline_mbsnrtowcs@Base 15 + (arch=i386)__interceptor_trampoline_mbsrtowcs@Base 15 + (arch=i386)__interceptor_trampoline_mbstowcs@Base 15 + (arch=i386)__interceptor_trampoline_mcheck@Base 15 + (arch=i386)__interceptor_trampoline_mcheck_pedantic@Base 15 + (arch=i386)__interceptor_trampoline_memalign@Base 15 + (arch=i386)__interceptor_trampoline_memchr@Base 15 + (arch=i386)__interceptor_trampoline_memcmp@Base 15 + (arch=i386)__interceptor_trampoline_memcpy@Base 15 + (arch=i386)__interceptor_trampoline_memmem@Base 15 + (arch=i386)__interceptor_trampoline_memmove@Base 15 + (arch=i386)__interceptor_trampoline_memrchr@Base 15 + (arch=i386)__interceptor_trampoline_memset@Base 15 + (arch=i386)__interceptor_trampoline_mincore@Base 15 + (arch=i386)__interceptor_trampoline_mktime@Base 15 + (arch=i386)__interceptor_trampoline_mlock@Base 15 + (arch=i386)__interceptor_trampoline_mlockall@Base 15 + (arch=i386)__interceptor_trampoline_mmap64@Base 15 + (arch=i386)__interceptor_trampoline_mmap@Base 15 + (arch=i386)__interceptor_trampoline_modf@Base 15 + (arch=i386)__interceptor_trampoline_modff@Base 15 + (arch=i386)__interceptor_trampoline_modfl@Base 15 + (arch=i386)__interceptor_trampoline_mprobe@Base 15 + (arch=i386)__interceptor_trampoline_mprotect@Base 15 + (arch=i386)__interceptor_trampoline_msgrcv@Base 15 + (arch=i386)__interceptor_trampoline_msgsnd@Base 15 + (arch=i386)__interceptor_trampoline_munlock@Base 15 + (arch=i386)__interceptor_trampoline_munlockall@Base 15 + (arch=i386)__interceptor_trampoline_munmap@Base 15 + (arch=i386)__interceptor_trampoline_name_to_handle_at@Base 15 + (arch=i386)__interceptor_trampoline_open_by_handle_at@Base 15 + (arch=i386)__interceptor_trampoline_open_memstream@Base 15 + (arch=i386)__interceptor_trampoline_open_wmemstream@Base 15 + (arch=i386)__interceptor_trampoline_opendir@Base 15 + (arch=i386)__interceptor_trampoline_pclose@Base 15 + (arch=i386)__interceptor_trampoline_poll@Base 15 + (arch=i386)__interceptor_trampoline_popen@Base 15 + (arch=i386)__interceptor_trampoline_posix_memalign@Base 15 + (arch=i386)__interceptor_trampoline_posix_spawn@Base 15 + (arch=i386)__interceptor_trampoline_posix_spawnp@Base 15 + (arch=i386)__interceptor_trampoline_ppoll@Base 15 + (arch=i386)__interceptor_trampoline_prctl@Base 15 + (arch=i386)__interceptor_trampoline_pread64@Base 15 + (arch=i386)__interceptor_trampoline_pread@Base 15 + (arch=i386)__interceptor_trampoline_preadv2@Base 15 + (arch=i386)__interceptor_trampoline_preadv64@Base 15 + (arch=i386)__interceptor_trampoline_preadv@Base 15 + (arch=i386)__interceptor_trampoline_printf@Base 15 + (arch=i386)__interceptor_trampoline_process_vm_readv@Base 15 + (arch=i386)__interceptor_trampoline_process_vm_writev@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getdetachstate@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getguardsize@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getinheritsched@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getschedparam@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getscope@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getstack@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getstacksize@Base 15 + (arch=i386)__interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 + (arch=i386)__interceptor_trampoline_pthread_condattr_getclock@Base 15 + (arch=i386)__interceptor_trampoline_pthread_condattr_getpshared@Base 15 + (arch=i386)__interceptor_trampoline_pthread_create@Base 15 + (arch=i386)__interceptor_trampoline_pthread_detach@Base 15 + (arch=i386)__interceptor_trampoline_pthread_exit@Base 15 + (arch=i386)__interceptor_trampoline_pthread_getaffinity_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_getcpuclockid@Base 15 + (arch=i386)__interceptor_trampoline_pthread_getname_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_getschedparam@Base 15 + (arch=i386)__interceptor_trampoline_pthread_join@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_gettype@Base 15 + (arch=i386)__interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 + (arch=i386)__interceptor_trampoline_pthread_setcancelstate@Base 15 + (arch=i386)__interceptor_trampoline_pthread_setcanceltype@Base 15 + (arch=i386)__interceptor_trampoline_pthread_setname_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_sigmask@Base 15 + (arch=i386)__interceptor_trampoline_pthread_timedjoin_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_tryjoin_np@Base 15 + (arch=i386)__interceptor_trampoline_ptrace@Base 15 + (arch=i386)__interceptor_trampoline_ptsname@Base 15 + (arch=i386)__interceptor_trampoline_ptsname_r@Base 15 + (arch=i386)__interceptor_trampoline_puts@Base 15 + (arch=i386)__interceptor_trampoline_pututxline@Base 15 + (arch=i386)__interceptor_trampoline_pvalloc@Base 15 + (arch=i386)__interceptor_trampoline_pwrite64@Base 15 + (arch=i386)__interceptor_trampoline_pwrite@Base 15 + (arch=i386)__interceptor_trampoline_pwritev2@Base 15 + (arch=i386)__interceptor_trampoline_pwritev64@Base 15 + (arch=i386)__interceptor_trampoline_pwritev@Base 15 + (arch=i386)__interceptor_trampoline_qsort@Base 15 + (arch=i386)__interceptor_trampoline_qsort_r@Base 15 + (arch=i386)__interceptor_trampoline_rand_r@Base 15 + (arch=i386)__interceptor_trampoline_random_r@Base 15 + (arch=i386)__interceptor_trampoline_read@Base 15 + (arch=i386)__interceptor_trampoline_readdir64@Base 15 + (arch=i386)__interceptor_trampoline_readdir64_r@Base 15 + (arch=i386)__interceptor_trampoline_readdir@Base 15 + (arch=i386)__interceptor_trampoline_readdir_r@Base 15 + (arch=i386)__interceptor_trampoline_readlink@Base 15 + (arch=i386)__interceptor_trampoline_readlinkat@Base 15 + (arch=i386)__interceptor_trampoline_readv@Base 15 + (arch=i386)__interceptor_trampoline_realloc@Base 15 + (arch=i386)__interceptor_trampoline_reallocarray@Base 15 + (arch=i386)__interceptor_trampoline_realpath@Base 15 + (arch=i386)__interceptor_trampoline_recv@Base 15 + (arch=i386)__interceptor_trampoline_recvfrom@Base 15 + (arch=i386)__interceptor_trampoline_recvmmsg@Base 15 + (arch=i386)__interceptor_trampoline_recvmsg@Base 15 + (arch=i386)__interceptor_trampoline_regcomp@Base 15 + (arch=i386)__interceptor_trampoline_regerror@Base 15 + (arch=i386)__interceptor_trampoline_regexec@Base 15 + (arch=i386)__interceptor_trampoline_regfree@Base 15 + (arch=i386)__interceptor_trampoline_remquo@Base 15 + (arch=i386)__interceptor_trampoline_remquof@Base 15 + (arch=i386)__interceptor_trampoline_remquol@Base 15 + (arch=i386)__interceptor_trampoline_scandir64@Base 15 + (arch=i386)__interceptor_trampoline_scandir@Base 15 + (arch=i386)__interceptor_trampoline_scanf@Base 15 + (arch=i386)__interceptor_trampoline_sched_getaffinity@Base 15 + (arch=i386)__interceptor_trampoline_sched_getparam@Base 15 + (arch=i386)__interceptor_trampoline_sem_destroy@Base 15 + (arch=i386)__interceptor_trampoline_sem_getvalue@Base 15 + (arch=i386)__interceptor_trampoline_sem_init@Base 15 + (arch=i386)__interceptor_trampoline_sem_open@Base 15 + (arch=i386)__interceptor_trampoline_sem_post@Base 15 + (arch=i386)__interceptor_trampoline_sem_timedwait@Base 15 + (arch=i386)__interceptor_trampoline_sem_trywait@Base 15 + (arch=i386)__interceptor_trampoline_sem_unlink@Base 15 + (arch=i386)__interceptor_trampoline_sem_wait@Base 15 + (arch=i386)__interceptor_trampoline_send@Base 15 + (arch=i386)__interceptor_trampoline_sendmmsg@Base 15 + (arch=i386)__interceptor_trampoline_sendmsg@Base 15 + (arch=i386)__interceptor_trampoline_sendto@Base 15 + (arch=i386)__interceptor_trampoline_setbuf@Base 15 + (arch=i386)__interceptor_trampoline_setbuffer@Base 15 + (arch=i386)__interceptor_trampoline_setgrent@Base 15 + (arch=i386)__interceptor_trampoline_setitimer@Base 15 + (arch=i386)__interceptor_trampoline_setlinebuf@Base 15 + (arch=i386)__interceptor_trampoline_setlocale@Base 15 + (arch=i386)__interceptor_trampoline_setpwent@Base 15 + (arch=i386)__interceptor_trampoline_setvbuf@Base 15 + (arch=i386)__interceptor_trampoline_shmctl@Base 15 + (arch=i386)__interceptor_trampoline_sigaction@Base 15 + (arch=i386)__interceptor_trampoline_sigaltstack@Base 15 + (arch=i386)__interceptor_trampoline_sigandset@Base 15 + (arch=i386)__interceptor_trampoline_sigemptyset@Base 15 + (arch=i386)__interceptor_trampoline_sigfillset@Base 15 + (arch=i386)__interceptor_trampoline_siglongjmp@Base 15 + (arch=i386)__interceptor_trampoline_signal@Base 15 + (arch=i386)__interceptor_trampoline_sigorset@Base 15 + (arch=i386)__interceptor_trampoline_sigpending@Base 15 + (arch=i386)__interceptor_trampoline_sigprocmask@Base 15 + (arch=i386)__interceptor_trampoline_sigtimedwait@Base 15 + (arch=i386)__interceptor_trampoline_sigwait@Base 15 + (arch=i386)__interceptor_trampoline_sigwaitinfo@Base 15 + (arch=i386)__interceptor_trampoline_sincos@Base 15 + (arch=i386)__interceptor_trampoline_sincosf@Base 15 + (arch=i386)__interceptor_trampoline_sincosl@Base 15 + (arch=i386)__interceptor_trampoline_snprintf@Base 15 + (arch=i386)__interceptor_trampoline_sprintf@Base 15 + (arch=i386)__interceptor_trampoline_sscanf@Base 15 + (arch=i386)__interceptor_trampoline_stat64@Base 15 + (arch=i386)__interceptor_trampoline_stat@Base 15 + (arch=i386)__interceptor_trampoline_statfs64@Base 15 + (arch=i386)__interceptor_trampoline_statfs@Base 15 + (arch=i386)__interceptor_trampoline_statvfs64@Base 15 + (arch=i386)__interceptor_trampoline_statvfs@Base 15 + (arch=i386)__interceptor_trampoline_strcasecmp@Base 15 + (arch=i386)__interceptor_trampoline_strcasestr@Base 15 + (arch=i386)__interceptor_trampoline_strcat@Base 15 + (arch=i386)__interceptor_trampoline_strchr@Base 15 + (arch=i386)__interceptor_trampoline_strchrnul@Base 15 + (arch=i386)__interceptor_trampoline_strcmp@Base 15 + (arch=i386)__interceptor_trampoline_strcpy@Base 15 + (arch=i386)__interceptor_trampoline_strcspn@Base 15 + (arch=i386)__interceptor_trampoline_strdup@Base 15 + (arch=i386)__interceptor_trampoline_strerror@Base 15 + (arch=i386)__interceptor_trampoline_strerror_r@Base 15 + (arch=i386)__interceptor_trampoline_strlen@Base 15 + (arch=i386)__interceptor_trampoline_strncasecmp@Base 15 + (arch=i386)__interceptor_trampoline_strncat@Base 15 + (arch=i386)__interceptor_trampoline_strncmp@Base 15 + (arch=i386)__interceptor_trampoline_strncpy@Base 15 + (arch=i386)__interceptor_trampoline_strndup@Base 15 + (arch=i386)__interceptor_trampoline_strnlen@Base 15 + (arch=i386)__interceptor_trampoline_strpbrk@Base 15 + (arch=i386)__interceptor_trampoline_strptime@Base 15 + (arch=i386)__interceptor_trampoline_strrchr@Base 15 + (arch=i386)__interceptor_trampoline_strspn@Base 15 + (arch=i386)__interceptor_trampoline_strstr@Base 15 + (arch=i386)__interceptor_trampoline_strtoimax@Base 15 + (arch=i386)__interceptor_trampoline_strtok@Base 15 + (arch=i386)__interceptor_trampoline_strtol@Base 15 + (arch=i386)__interceptor_trampoline_strtoll@Base 15 + (arch=i386)__interceptor_trampoline_strtoumax@Base 15 + (arch=i386)__interceptor_trampoline_strxfrm@Base 15 + (arch=i386)__interceptor_trampoline_strxfrm_l@Base 15 + (arch=i386)__interceptor_trampoline_swapcontext@Base 15 + (arch=i386)__interceptor_trampoline_sysinfo@Base 15 + (arch=i386)__interceptor_trampoline_tcgetattr@Base 15 + (arch=i386)__interceptor_trampoline_tempnam@Base 15 + (arch=i386)__interceptor_trampoline_textdomain@Base 15 + (arch=i386)__interceptor_trampoline_time@Base 15 + (arch=i386)__interceptor_trampoline_timerfd_gettime@Base 15 + (arch=i386)__interceptor_trampoline_timerfd_settime@Base 15 + (arch=i386)__interceptor_trampoline_times@Base 15 + (arch=i386)__interceptor_trampoline_tmpnam@Base 15 + (arch=i386)__interceptor_trampoline_tmpnam_r@Base 15 + (arch=i386)__interceptor_trampoline_tsearch@Base 15 + (arch=i386)__interceptor_trampoline_ttyname@Base 15 + (arch=i386)__interceptor_trampoline_ttyname_r@Base 15 + (arch=i386)__interceptor_trampoline_uname@Base 15 + (arch=i386)__interceptor_trampoline_valloc@Base 15 + (arch=i386)__interceptor_trampoline_vasprintf@Base 15 + (arch=i386)__interceptor_trampoline_vfork@Base 15 + (arch=i386)__interceptor_trampoline_vfprintf@Base 15 + (arch=i386)__interceptor_trampoline_vfscanf@Base 15 + (arch=i386)__interceptor_trampoline_vprintf@Base 15 + (arch=i386)__interceptor_trampoline_vscanf@Base 15 + (arch=i386)__interceptor_trampoline_vsnprintf@Base 15 + (arch=i386)__interceptor_trampoline_vsprintf@Base 15 + (arch=i386)__interceptor_trampoline_vsscanf@Base 15 + (arch=i386)__interceptor_trampoline_wait3@Base 15 + (arch=i386)__interceptor_trampoline_wait4@Base 15 + (arch=i386)__interceptor_trampoline_wait@Base 15 + (arch=i386)__interceptor_trampoline_waitid@Base 15 + (arch=i386)__interceptor_trampoline_waitpid@Base 15 + (arch=i386)__interceptor_trampoline_wcrtomb@Base 15 + (arch=i386)__interceptor_trampoline_wcscat@Base 15 + (arch=i386)__interceptor_trampoline_wcsdup@Base 15 + (arch=i386)__interceptor_trampoline_wcslen@Base 15 + (arch=i386)__interceptor_trampoline_wcsncat@Base 15 + (arch=i386)__interceptor_trampoline_wcsnlen@Base 15 + (arch=i386)__interceptor_trampoline_wcsnrtombs@Base 15 + (arch=i386)__interceptor_trampoline_wcsrtombs@Base 15 + (arch=i386)__interceptor_trampoline_wcstombs@Base 15 + (arch=i386)__interceptor_trampoline_wcsxfrm@Base 15 + (arch=i386)__interceptor_trampoline_wcsxfrm_l@Base 15 + (arch=i386)__interceptor_trampoline_wctomb@Base 15 + (arch=i386)__interceptor_trampoline_wordexp@Base 15 + (arch=i386)__interceptor_trampoline_write@Base 15 + (arch=i386)__interceptor_trampoline_writev@Base 15 + (arch=i386)__interceptor_trampoline_xdr_bool@Base 15 + (arch=i386)__interceptor_trampoline_xdr_bytes@Base 15 + (arch=i386)__interceptor_trampoline_xdr_char@Base 15 + (arch=i386)__interceptor_trampoline_xdr_destroy@Base 15 + (arch=i386)__interceptor_trampoline_xdr_double@Base 15 + (arch=i386)__interceptor_trampoline_xdr_enum@Base 15 + (arch=i386)__interceptor_trampoline_xdr_float@Base 15 + (arch=i386)__interceptor_trampoline_xdr_hyper@Base 15 + (arch=i386)__interceptor_trampoline_xdr_int16_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_int32_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_int64_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_int8_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_int@Base 15 + (arch=i386)__interceptor_trampoline_xdr_long@Base 15 + (arch=i386)__interceptor_trampoline_xdr_longlong_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_quad_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_short@Base 15 + (arch=i386)__interceptor_trampoline_xdr_string@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_char@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_hyper@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_int@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_long@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_longlong_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_quad_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_short@Base 15 + (arch=i386)__interceptor_trampoline_xdr_uint16_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_uint32_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_uint64_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_uint8_t@Base 15 + (arch=i386)__interceptor_trampoline_xdrmem_create@Base 15 + (arch=i386)__interceptor_trampoline_xdrrec_create@Base 15 + (arch=i386)__interceptor_trampoline_xdrstdio_create@Base 15 + __interceptor_tsearch@Base 15 + __interceptor_ttyname@Base 15 + __interceptor_ttyname_r@Base 15 + __interceptor_uname@Base 15 + __interceptor_valloc@Base 15 + __interceptor_vasprintf@Base 15 + (arch=i386)__interceptor_vfork@Base 15 + __interceptor_vfprintf@Base 15 + __interceptor_vfscanf@Base 15 + __interceptor_vprintf@Base 15 + __interceptor_vscanf@Base 15 + __interceptor_vsnprintf@Base 15 + __interceptor_vsprintf@Base 15 + __interceptor_vsscanf@Base 15 + __interceptor_wait3@Base 15 + __interceptor_wait4@Base 15 + __interceptor_wait@Base 15 + __interceptor_waitid@Base 15 + __interceptor_waitpid@Base 15 + __interceptor_wcrtomb@Base 15 + __interceptor_wcscat@Base 15 + __interceptor_wcsdup@Base 15 + __interceptor_wcslen@Base 15 + __interceptor_wcsncat@Base 15 + __interceptor_wcsnlen@Base 15 + __interceptor_wcsnrtombs@Base 15 + __interceptor_wcsrtombs@Base 15 + __interceptor_wcstombs@Base 15 + __interceptor_wcsxfrm@Base 15 + __interceptor_wcsxfrm_l@Base 15 + __interceptor_wctomb@Base 15 + __interceptor_wordexp@Base 15 + __interceptor_write@Base 15 + __interceptor_writev@Base 15 + __interceptor_xdr_bool@Base 15 + __interceptor_xdr_bytes@Base 15 + __interceptor_xdr_char@Base 15 + __interceptor_xdr_destroy@Base 15 + __interceptor_xdr_double@Base 15 + __interceptor_xdr_enum@Base 15 + __interceptor_xdr_float@Base 15 + __interceptor_xdr_hyper@Base 15 + __interceptor_xdr_int16_t@Base 15 + __interceptor_xdr_int32_t@Base 15 + __interceptor_xdr_int64_t@Base 15 + __interceptor_xdr_int8_t@Base 15 + __interceptor_xdr_int@Base 15 + __interceptor_xdr_long@Base 15 + __interceptor_xdr_longlong_t@Base 15 + __interceptor_xdr_quad_t@Base 15 + __interceptor_xdr_short@Base 15 + __interceptor_xdr_string@Base 15 + __interceptor_xdr_u_char@Base 15 + __interceptor_xdr_u_hyper@Base 15 + __interceptor_xdr_u_int@Base 15 + __interceptor_xdr_u_long@Base 15 + __interceptor_xdr_u_longlong_t@Base 15 + __interceptor_xdr_u_quad_t@Base 15 + __interceptor_xdr_u_short@Base 15 + __interceptor_xdr_uint16_t@Base 15 + __interceptor_xdr_uint32_t@Base 15 + __interceptor_xdr_uint64_t@Base 15 + __interceptor_xdr_uint8_t@Base 15 + __interceptor_xdrmem_create@Base 15 + __interceptor_xdrrec_create@Base 15 + __interceptor_xdrstdio_create@Base 15 + __isoc23_fscanf@Base 15 + __isoc23_scanf@Base 15 + __isoc23_sscanf@Base 15 + __isoc23_strtoimax@Base 15 + __isoc23_strtol@Base 15 + __isoc23_strtoll@Base 15 + __isoc23_strtoumax@Base 15 + __isoc23_vfscanf@Base 15 + __isoc23_vscanf@Base 15 + __isoc23_vsscanf@Base 15 + __isoc99_fprintf@Base 15 + __isoc99_fscanf@Base 15 + __isoc99_printf@Base 15 + __isoc99_scanf@Base 15 + __isoc99_snprintf@Base 15 + __isoc99_sprintf@Base 15 + __isoc99_sscanf@Base 15 + __isoc99_vfprintf@Base 15 + __isoc99_vfscanf@Base 15 + __isoc99_vprintf@Base 15 + __isoc99_vscanf@Base 15 + __isoc99_vsnprintf@Base 15 + __isoc99_vsprintf@Base 15 + __isoc99_vsscanf@Base 15 + __libc_memalign@Base 15 + __longjmp_chk@Base 15 + __lsan_default_options@Base 15 + __lsan_disable@Base 15 + __lsan_do_leak_check@Base 15 + __lsan_do_recoverable_leak_check@Base 15 + __lsan_enable@Base 15 + __lsan_ignore_object@Base 15 + __lsan_register_root_region@Base 15 + __lsan_unregister_root_region@Base 15 + __lxstat64@Base 15 + __lxstat@Base 15 + __overflow@Base 15 + __sancov_default_options@Base 15 + __sancov_lowest_stack@Base 15 + __sanitizer_acquire_crash_state@Base 15 + __sanitizer_annotate_contiguous_container@Base 15 + __sanitizer_annotate_double_ended_contiguous_container@Base 15 + __sanitizer_contiguous_container_find_bad_address@Base 15 + __sanitizer_copy_contiguous_container_annotations@Base 15 + __sanitizer_cov_8bit_counters_init@Base 15 + __sanitizer_cov_bool_flag_init@Base 15 + __sanitizer_cov_dump@Base 15 + __sanitizer_cov_load16@Base 15 + __sanitizer_cov_load1@Base 15 + __sanitizer_cov_load2@Base 15 + __sanitizer_cov_load4@Base 15 + __sanitizer_cov_load8@Base 15 + __sanitizer_cov_pcs_init@Base 15 + __sanitizer_cov_reset@Base 15 + __sanitizer_cov_store16@Base 15 + __sanitizer_cov_store1@Base 15 + __sanitizer_cov_store2@Base 15 + __sanitizer_cov_store4@Base 15 + __sanitizer_cov_store8@Base 15 + __sanitizer_cov_trace_cmp1@Base 15 + __sanitizer_cov_trace_cmp2@Base 15 + __sanitizer_cov_trace_cmp4@Base 15 + __sanitizer_cov_trace_cmp8@Base 15 + __sanitizer_cov_trace_cmp@Base 15 + __sanitizer_cov_trace_const_cmp1@Base 15 + __sanitizer_cov_trace_const_cmp2@Base 15 + __sanitizer_cov_trace_const_cmp4@Base 15 + __sanitizer_cov_trace_const_cmp8@Base 15 + __sanitizer_cov_trace_div4@Base 15 + __sanitizer_cov_trace_div8@Base 15 + __sanitizer_cov_trace_gep@Base 15 + __sanitizer_cov_trace_pc_guard@Base 15 + __sanitizer_cov_trace_pc_guard_init@Base 15 + __sanitizer_cov_trace_pc_indir@Base 15 + __sanitizer_cov_trace_switch@Base 15 + __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 + __sanitizer_dump_coverage@Base 15 + __sanitizer_dump_trace_pc_guard_coverage@Base 15 + __sanitizer_finish_switch_fiber@Base 15 + __sanitizer_free_hook@Base 15 + __sanitizer_get_allocated_begin@Base 15 + __sanitizer_get_allocated_size@Base 15 + __sanitizer_get_allocated_size_fast@Base 15 + __sanitizer_get_current_allocated_bytes@Base 15 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 15 + __sanitizer_get_free_bytes@Base 15 + __sanitizer_get_heap_size@Base 15 + __sanitizer_get_module_and_offset_for_pc@Base 15 + __sanitizer_get_ownership@Base 15 + __sanitizer_get_report_path@Base 15 + __sanitizer_get_unmapped_bytes@Base 15 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 15 + __sanitizer_internal_memcpy@Base 15 + __sanitizer_internal_memmove@Base 15 + __sanitizer_internal_memset@Base 15 + __sanitizer_malloc_hook@Base 15 + __sanitizer_on_print@Base 15 + __sanitizer_print_memory_profile@Base 15 + __sanitizer_print_stack_trace@Base 15 + __sanitizer_ptr_cmp@Base 15 + __sanitizer_ptr_sub@Base 15 + __sanitizer_purge_allocator@Base 15 + __sanitizer_report_error_summary@Base 15 + __sanitizer_sandbox_on_notify@Base 15 + __sanitizer_set_death_callback@Base 15 + __sanitizer_set_report_fd@Base 15 + __sanitizer_set_report_path@Base 15 + __sanitizer_start_switch_fiber@Base 15 + __sanitizer_symbolize_global@Base 15 + __sanitizer_symbolize_pc@Base 15 + __sanitizer_syscall_post_impl_accept4@Base 15 + __sanitizer_syscall_post_impl_accept@Base 15 + __sanitizer_syscall_post_impl_access@Base 15 + __sanitizer_syscall_post_impl_acct@Base 15 + __sanitizer_syscall_post_impl_add_key@Base 15 + __sanitizer_syscall_post_impl_adjtimex@Base 15 + __sanitizer_syscall_post_impl_alarm@Base 15 + __sanitizer_syscall_post_impl_bdflush@Base 15 + __sanitizer_syscall_post_impl_bind@Base 15 + __sanitizer_syscall_post_impl_brk@Base 15 + __sanitizer_syscall_post_impl_capget@Base 15 + __sanitizer_syscall_post_impl_capset@Base 15 + __sanitizer_syscall_post_impl_chdir@Base 15 + __sanitizer_syscall_post_impl_chmod@Base 15 + __sanitizer_syscall_post_impl_chown@Base 15 + __sanitizer_syscall_post_impl_chroot@Base 15 + __sanitizer_syscall_post_impl_clock_adjtime@Base 15 + __sanitizer_syscall_post_impl_clock_getres@Base 15 + __sanitizer_syscall_post_impl_clock_gettime@Base 15 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_post_impl_clock_settime@Base 15 + __sanitizer_syscall_post_impl_close@Base 15 + __sanitizer_syscall_post_impl_connect@Base 15 + __sanitizer_syscall_post_impl_creat@Base 15 + __sanitizer_syscall_post_impl_delete_module@Base 15 + __sanitizer_syscall_post_impl_dup2@Base 15 + __sanitizer_syscall_post_impl_dup3@Base 15 + __sanitizer_syscall_post_impl_dup@Base 15 + __sanitizer_syscall_post_impl_epoll_create1@Base 15 + __sanitizer_syscall_post_impl_epoll_create@Base 15 + __sanitizer_syscall_post_impl_epoll_ctl@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait@Base 15 + __sanitizer_syscall_post_impl_epoll_wait@Base 15 + __sanitizer_syscall_post_impl_eventfd2@Base 15 + __sanitizer_syscall_post_impl_eventfd@Base 15 + __sanitizer_syscall_post_impl_exit@Base 15 + __sanitizer_syscall_post_impl_exit_group@Base 15 + __sanitizer_syscall_post_impl_faccessat@Base 15 + __sanitizer_syscall_post_impl_fchdir@Base 15 + __sanitizer_syscall_post_impl_fchmod@Base 15 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 15 + __sanitizer_syscall_post_impl_fchown@Base 15 + __sanitizer_syscall_post_impl_fchownat@Base 15 + __sanitizer_syscall_post_impl_fcntl64@Base 15 + __sanitizer_syscall_post_impl_fcntl@Base 15 + __sanitizer_syscall_post_impl_fdatasync@Base 15 + __sanitizer_syscall_post_impl_fgetxattr@Base 15 + __sanitizer_syscall_post_impl_flistxattr@Base 15 + __sanitizer_syscall_post_impl_flock@Base 15 + __sanitizer_syscall_post_impl_fork@Base 15 + __sanitizer_syscall_post_impl_fremovexattr@Base 15 + __sanitizer_syscall_post_impl_fsetxattr@Base 15 + __sanitizer_syscall_post_impl_fstat64@Base 15 + __sanitizer_syscall_post_impl_fstat@Base 15 + __sanitizer_syscall_post_impl_fstatat64@Base 15 + __sanitizer_syscall_post_impl_fstatfs64@Base 15 + __sanitizer_syscall_post_impl_fstatfs@Base 15 + __sanitizer_syscall_post_impl_fsync@Base 15 + __sanitizer_syscall_post_impl_ftruncate@Base 15 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 15 + __sanitizer_syscall_post_impl_get_mempolicy@Base 15 + __sanitizer_syscall_post_impl_get_robust_list@Base 15 + __sanitizer_syscall_post_impl_getcpu@Base 15 + __sanitizer_syscall_post_impl_getcwd@Base 15 + __sanitizer_syscall_post_impl_getdents64@Base 15 + __sanitizer_syscall_post_impl_getdents@Base 15 + __sanitizer_syscall_post_impl_getegid@Base 15 + __sanitizer_syscall_post_impl_geteuid@Base 15 + __sanitizer_syscall_post_impl_getgid@Base 15 + __sanitizer_syscall_post_impl_getgroups@Base 15 + __sanitizer_syscall_post_impl_gethostname@Base 15 + __sanitizer_syscall_post_impl_getitimer@Base 15 + __sanitizer_syscall_post_impl_getpeername@Base 15 + __sanitizer_syscall_post_impl_getpgid@Base 15 + __sanitizer_syscall_post_impl_getpgrp@Base 15 + __sanitizer_syscall_post_impl_getpid@Base 15 + __sanitizer_syscall_post_impl_getppid@Base 15 + __sanitizer_syscall_post_impl_getpriority@Base 15 + __sanitizer_syscall_post_impl_getrandom@Base 15 + __sanitizer_syscall_post_impl_getresgid@Base 15 + __sanitizer_syscall_post_impl_getresuid@Base 15 + __sanitizer_syscall_post_impl_getrlimit@Base 15 + __sanitizer_syscall_post_impl_getrusage@Base 15 + __sanitizer_syscall_post_impl_getsid@Base 15 + __sanitizer_syscall_post_impl_getsockname@Base 15 + __sanitizer_syscall_post_impl_getsockopt@Base 15 + __sanitizer_syscall_post_impl_gettid@Base 15 + __sanitizer_syscall_post_impl_gettimeofday@Base 15 + __sanitizer_syscall_post_impl_getuid@Base 15 + __sanitizer_syscall_post_impl_getxattr@Base 15 + __sanitizer_syscall_post_impl_init_module@Base 15 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_post_impl_inotify_init1@Base 15 + __sanitizer_syscall_post_impl_inotify_init@Base 15 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_post_impl_io_cancel@Base 15 + __sanitizer_syscall_post_impl_io_destroy@Base 15 + __sanitizer_syscall_post_impl_io_getevents@Base 15 + __sanitizer_syscall_post_impl_io_setup@Base 15 + __sanitizer_syscall_post_impl_io_submit@Base 15 + __sanitizer_syscall_post_impl_ioctl@Base 15 + __sanitizer_syscall_post_impl_ioperm@Base 15 + __sanitizer_syscall_post_impl_ioprio_get@Base 15 + __sanitizer_syscall_post_impl_ioprio_set@Base 15 + __sanitizer_syscall_post_impl_ipc@Base 15 + __sanitizer_syscall_post_impl_kexec_load@Base 15 + __sanitizer_syscall_post_impl_keyctl@Base 15 + __sanitizer_syscall_post_impl_kill@Base 15 + __sanitizer_syscall_post_impl_lchown@Base 15 + __sanitizer_syscall_post_impl_lgetxattr@Base 15 + __sanitizer_syscall_post_impl_link@Base 15 + __sanitizer_syscall_post_impl_linkat@Base 15 + __sanitizer_syscall_post_impl_listen@Base 15 + __sanitizer_syscall_post_impl_listxattr@Base 15 + __sanitizer_syscall_post_impl_llistxattr@Base 15 + __sanitizer_syscall_post_impl_llseek@Base 15 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_post_impl_lremovexattr@Base 15 + __sanitizer_syscall_post_impl_lseek@Base 15 + __sanitizer_syscall_post_impl_lsetxattr@Base 15 + __sanitizer_syscall_post_impl_lstat64@Base 15 + __sanitizer_syscall_post_impl_lstat@Base 15 + __sanitizer_syscall_post_impl_madvise@Base 15 + __sanitizer_syscall_post_impl_mbind@Base 15 + __sanitizer_syscall_post_impl_migrate_pages@Base 15 + __sanitizer_syscall_post_impl_mincore@Base 15 + __sanitizer_syscall_post_impl_mkdir@Base 15 + __sanitizer_syscall_post_impl_mkdirat@Base 15 + __sanitizer_syscall_post_impl_mknod@Base 15 + __sanitizer_syscall_post_impl_mknodat@Base 15 + __sanitizer_syscall_post_impl_mlock@Base 15 + __sanitizer_syscall_post_impl_mlockall@Base 15 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_post_impl_mount@Base 15 + __sanitizer_syscall_post_impl_move_pages@Base 15 + __sanitizer_syscall_post_impl_mprotect@Base 15 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_post_impl_mq_notify@Base 15 + __sanitizer_syscall_post_impl_mq_open@Base 15 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_post_impl_mq_timedsend@Base 15 + __sanitizer_syscall_post_impl_mq_unlink@Base 15 + __sanitizer_syscall_post_impl_mremap@Base 15 + __sanitizer_syscall_post_impl_msgctl@Base 15 + __sanitizer_syscall_post_impl_msgget@Base 15 + __sanitizer_syscall_post_impl_msgrcv@Base 15 + __sanitizer_syscall_post_impl_msgsnd@Base 15 + __sanitizer_syscall_post_impl_msync@Base 15 + __sanitizer_syscall_post_impl_munlock@Base 15 + __sanitizer_syscall_post_impl_munlockall@Base 15 + __sanitizer_syscall_post_impl_munmap@Base 15 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_post_impl_nanosleep@Base 15 + __sanitizer_syscall_post_impl_newfstat@Base 15 + __sanitizer_syscall_post_impl_newfstatat@Base 15 + __sanitizer_syscall_post_impl_newlstat@Base 15 + __sanitizer_syscall_post_impl_newstat@Base 15 + __sanitizer_syscall_post_impl_newuname@Base 15 + __sanitizer_syscall_post_impl_ni_syscall@Base 15 + __sanitizer_syscall_post_impl_nice@Base 15 + __sanitizer_syscall_post_impl_old_getrlimit@Base 15 + __sanitizer_syscall_post_impl_old_mmap@Base 15 + __sanitizer_syscall_post_impl_old_readdir@Base 15 + __sanitizer_syscall_post_impl_old_select@Base 15 + __sanitizer_syscall_post_impl_oldumount@Base 15 + __sanitizer_syscall_post_impl_olduname@Base 15 + __sanitizer_syscall_post_impl_open@Base 15 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_post_impl_openat@Base 15 + __sanitizer_syscall_post_impl_pause@Base 15 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_post_impl_pciconfig_read@Base 15 + __sanitizer_syscall_post_impl_pciconfig_write@Base 15 + __sanitizer_syscall_post_impl_perf_event_open@Base 15 + __sanitizer_syscall_post_impl_personality@Base 15 + __sanitizer_syscall_post_impl_pipe2@Base 15 + __sanitizer_syscall_post_impl_pipe@Base 15 + __sanitizer_syscall_post_impl_pivot_root@Base 15 + __sanitizer_syscall_post_impl_poll@Base 15 + __sanitizer_syscall_post_impl_ppoll@Base 15 + __sanitizer_syscall_post_impl_pread64@Base 15 + __sanitizer_syscall_post_impl_preadv@Base 15 + __sanitizer_syscall_post_impl_prlimit64@Base 15 + __sanitizer_syscall_post_impl_process_vm_readv@Base 15 + __sanitizer_syscall_post_impl_process_vm_writev@Base 15 + __sanitizer_syscall_post_impl_pselect6@Base 15 + __sanitizer_syscall_post_impl_ptrace@Base 15 + __sanitizer_syscall_post_impl_pwrite64@Base 15 + __sanitizer_syscall_post_impl_pwritev@Base 15 + __sanitizer_syscall_post_impl_quotactl@Base 15 + __sanitizer_syscall_post_impl_read@Base 15 + __sanitizer_syscall_post_impl_readlink@Base 15 + __sanitizer_syscall_post_impl_readlinkat@Base 15 + __sanitizer_syscall_post_impl_readv@Base 15 + __sanitizer_syscall_post_impl_reboot@Base 15 + __sanitizer_syscall_post_impl_recv@Base 15 + __sanitizer_syscall_post_impl_recvfrom@Base 15 + __sanitizer_syscall_post_impl_recvmmsg@Base 15 + __sanitizer_syscall_post_impl_recvmsg@Base 15 + __sanitizer_syscall_post_impl_remap_file_pages@Base 15 + __sanitizer_syscall_post_impl_removexattr@Base 15 + __sanitizer_syscall_post_impl_rename@Base 15 + __sanitizer_syscall_post_impl_renameat@Base 15 + __sanitizer_syscall_post_impl_request_key@Base 15 + __sanitizer_syscall_post_impl_restart_syscall@Base 15 + __sanitizer_syscall_post_impl_rmdir@Base 15 + __sanitizer_syscall_post_impl_rt_sigaction@Base 15 + __sanitizer_syscall_post_impl_rt_sigpending@Base 15 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_getparam@Base 15 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_setparam@Base 15 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_yield@Base 15 + __sanitizer_syscall_post_impl_select@Base 15 + __sanitizer_syscall_post_impl_semctl@Base 15 + __sanitizer_syscall_post_impl_semget@Base 15 + __sanitizer_syscall_post_impl_semop@Base 15 + __sanitizer_syscall_post_impl_semtimedop@Base 15 + __sanitizer_syscall_post_impl_send@Base 15 + __sanitizer_syscall_post_impl_sendfile64@Base 15 + __sanitizer_syscall_post_impl_sendfile@Base 15 + __sanitizer_syscall_post_impl_sendmmsg@Base 15 + __sanitizer_syscall_post_impl_sendmsg@Base 15 + __sanitizer_syscall_post_impl_sendto@Base 15 + __sanitizer_syscall_post_impl_set_mempolicy@Base 15 + __sanitizer_syscall_post_impl_set_robust_list@Base 15 + __sanitizer_syscall_post_impl_set_tid_address@Base 15 + __sanitizer_syscall_post_impl_setdomainname@Base 15 + __sanitizer_syscall_post_impl_setfsgid@Base 15 + __sanitizer_syscall_post_impl_setfsuid@Base 15 + __sanitizer_syscall_post_impl_setgid@Base 15 + __sanitizer_syscall_post_impl_setgroups@Base 15 + __sanitizer_syscall_post_impl_sethostname@Base 15 + __sanitizer_syscall_post_impl_setitimer@Base 15 + __sanitizer_syscall_post_impl_setns@Base 15 + __sanitizer_syscall_post_impl_setpgid@Base 15 + __sanitizer_syscall_post_impl_setpriority@Base 15 + __sanitizer_syscall_post_impl_setregid@Base 15 + __sanitizer_syscall_post_impl_setresgid@Base 15 + __sanitizer_syscall_post_impl_setresuid@Base 15 + __sanitizer_syscall_post_impl_setreuid@Base 15 + __sanitizer_syscall_post_impl_setrlimit@Base 15 + __sanitizer_syscall_post_impl_setsid@Base 15 + __sanitizer_syscall_post_impl_setsockopt@Base 15 + __sanitizer_syscall_post_impl_settimeofday@Base 15 + __sanitizer_syscall_post_impl_setuid@Base 15 + __sanitizer_syscall_post_impl_setxattr@Base 15 + __sanitizer_syscall_post_impl_sgetmask@Base 15 + __sanitizer_syscall_post_impl_shmat@Base 15 + __sanitizer_syscall_post_impl_shmctl@Base 15 + __sanitizer_syscall_post_impl_shmdt@Base 15 + __sanitizer_syscall_post_impl_shmget@Base 15 + __sanitizer_syscall_post_impl_shutdown@Base 15 + __sanitizer_syscall_post_impl_sigaction@Base 15 + __sanitizer_syscall_post_impl_sigaltstack@Base 15 + __sanitizer_syscall_post_impl_signal@Base 15 + __sanitizer_syscall_post_impl_signalfd4@Base 15 + __sanitizer_syscall_post_impl_signalfd@Base 15 + __sanitizer_syscall_post_impl_sigpending@Base 15 + __sanitizer_syscall_post_impl_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_socket@Base 15 + __sanitizer_syscall_post_impl_socketcall@Base 15 + __sanitizer_syscall_post_impl_socketpair@Base 15 + __sanitizer_syscall_post_impl_splice@Base 15 + __sanitizer_syscall_post_impl_spu_create@Base 15 + __sanitizer_syscall_post_impl_spu_run@Base 15 + __sanitizer_syscall_post_impl_ssetmask@Base 15 + __sanitizer_syscall_post_impl_stat64@Base 15 + __sanitizer_syscall_post_impl_stat@Base 15 + __sanitizer_syscall_post_impl_statfs64@Base 15 + __sanitizer_syscall_post_impl_statfs@Base 15 + __sanitizer_syscall_post_impl_stime@Base 15 + __sanitizer_syscall_post_impl_swapoff@Base 15 + __sanitizer_syscall_post_impl_swapon@Base 15 + __sanitizer_syscall_post_impl_symlink@Base 15 + __sanitizer_syscall_post_impl_symlinkat@Base 15 + __sanitizer_syscall_post_impl_sync@Base 15 + __sanitizer_syscall_post_impl_syncfs@Base 15 + __sanitizer_syscall_post_impl_sysctl@Base 15 + __sanitizer_syscall_post_impl_sysfs@Base 15 + __sanitizer_syscall_post_impl_sysinfo@Base 15 + __sanitizer_syscall_post_impl_syslog@Base 15 + __sanitizer_syscall_post_impl_tee@Base 15 + __sanitizer_syscall_post_impl_tgkill@Base 15 + __sanitizer_syscall_post_impl_time@Base 15 + __sanitizer_syscall_post_impl_timer_create@Base 15 + __sanitizer_syscall_post_impl_timer_delete@Base 15 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_post_impl_timer_gettime@Base 15 + __sanitizer_syscall_post_impl_timer_settime@Base 15 + __sanitizer_syscall_post_impl_timerfd_create@Base 15 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_post_impl_timerfd_settime@Base 15 + __sanitizer_syscall_post_impl_times@Base 15 + __sanitizer_syscall_post_impl_tkill@Base 15 + __sanitizer_syscall_post_impl_truncate@Base 15 + __sanitizer_syscall_post_impl_umask@Base 15 + __sanitizer_syscall_post_impl_umount@Base 15 + __sanitizer_syscall_post_impl_uname@Base 15 + __sanitizer_syscall_post_impl_unlink@Base 15 + __sanitizer_syscall_post_impl_unlinkat@Base 15 + __sanitizer_syscall_post_impl_unshare@Base 15 + __sanitizer_syscall_post_impl_uselib@Base 15 + __sanitizer_syscall_post_impl_ustat@Base 15 + __sanitizer_syscall_post_impl_utime@Base 15 + __sanitizer_syscall_post_impl_utimensat@Base 15 + __sanitizer_syscall_post_impl_utimes@Base 15 + __sanitizer_syscall_post_impl_vfork@Base 15 + __sanitizer_syscall_post_impl_vhangup@Base 15 + __sanitizer_syscall_post_impl_vmsplice@Base 15 + __sanitizer_syscall_post_impl_wait4@Base 15 + __sanitizer_syscall_post_impl_waitid@Base 15 + __sanitizer_syscall_post_impl_waitpid@Base 15 + __sanitizer_syscall_post_impl_write@Base 15 + __sanitizer_syscall_post_impl_writev@Base 15 + __sanitizer_syscall_pre_impl_accept4@Base 15 + __sanitizer_syscall_pre_impl_accept@Base 15 + __sanitizer_syscall_pre_impl_access@Base 15 + __sanitizer_syscall_pre_impl_acct@Base 15 + __sanitizer_syscall_pre_impl_add_key@Base 15 + __sanitizer_syscall_pre_impl_adjtimex@Base 15 + __sanitizer_syscall_pre_impl_alarm@Base 15 + __sanitizer_syscall_pre_impl_bdflush@Base 15 + __sanitizer_syscall_pre_impl_bind@Base 15 + __sanitizer_syscall_pre_impl_brk@Base 15 + __sanitizer_syscall_pre_impl_capget@Base 15 + __sanitizer_syscall_pre_impl_capset@Base 15 + __sanitizer_syscall_pre_impl_chdir@Base 15 + __sanitizer_syscall_pre_impl_chmod@Base 15 + __sanitizer_syscall_pre_impl_chown@Base 15 + __sanitizer_syscall_pre_impl_chroot@Base 15 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 + __sanitizer_syscall_pre_impl_clock_getres@Base 15 + __sanitizer_syscall_pre_impl_clock_gettime@Base 15 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_clock_settime@Base 15 + __sanitizer_syscall_pre_impl_close@Base 15 + __sanitizer_syscall_pre_impl_connect@Base 15 + __sanitizer_syscall_pre_impl_creat@Base 15 + __sanitizer_syscall_pre_impl_delete_module@Base 15 + __sanitizer_syscall_pre_impl_dup2@Base 15 + __sanitizer_syscall_pre_impl_dup3@Base 15 + __sanitizer_syscall_pre_impl_dup@Base 15 + __sanitizer_syscall_pre_impl_epoll_create1@Base 15 + __sanitizer_syscall_pre_impl_epoll_create@Base 15 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 + __sanitizer_syscall_pre_impl_epoll_wait@Base 15 + __sanitizer_syscall_pre_impl_eventfd2@Base 15 + __sanitizer_syscall_pre_impl_eventfd@Base 15 + __sanitizer_syscall_pre_impl_exit@Base 15 + __sanitizer_syscall_pre_impl_exit_group@Base 15 + __sanitizer_syscall_pre_impl_faccessat@Base 15 + __sanitizer_syscall_pre_impl_fchdir@Base 15 + __sanitizer_syscall_pre_impl_fchmod@Base 15 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 15 + __sanitizer_syscall_pre_impl_fchown@Base 15 + __sanitizer_syscall_pre_impl_fchownat@Base 15 + __sanitizer_syscall_pre_impl_fcntl64@Base 15 + __sanitizer_syscall_pre_impl_fcntl@Base 15 + __sanitizer_syscall_pre_impl_fdatasync@Base 15 + __sanitizer_syscall_pre_impl_fgetxattr@Base 15 + __sanitizer_syscall_pre_impl_flistxattr@Base 15 + __sanitizer_syscall_pre_impl_flock@Base 15 + __sanitizer_syscall_pre_impl_fork@Base 15 + __sanitizer_syscall_pre_impl_fremovexattr@Base 15 + __sanitizer_syscall_pre_impl_fsetxattr@Base 15 + __sanitizer_syscall_pre_impl_fstat64@Base 15 + __sanitizer_syscall_pre_impl_fstat@Base 15 + __sanitizer_syscall_pre_impl_fstatat64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs@Base 15 + __sanitizer_syscall_pre_impl_fsync@Base 15 + __sanitizer_syscall_pre_impl_ftruncate@Base 15 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 15 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_get_robust_list@Base 15 + __sanitizer_syscall_pre_impl_getcpu@Base 15 + __sanitizer_syscall_pre_impl_getcwd@Base 15 + __sanitizer_syscall_pre_impl_getdents64@Base 15 + __sanitizer_syscall_pre_impl_getdents@Base 15 + __sanitizer_syscall_pre_impl_getegid@Base 15 + __sanitizer_syscall_pre_impl_geteuid@Base 15 + __sanitizer_syscall_pre_impl_getgid@Base 15 + __sanitizer_syscall_pre_impl_getgroups@Base 15 + __sanitizer_syscall_pre_impl_gethostname@Base 15 + __sanitizer_syscall_pre_impl_getitimer@Base 15 + __sanitizer_syscall_pre_impl_getpeername@Base 15 + __sanitizer_syscall_pre_impl_getpgid@Base 15 + __sanitizer_syscall_pre_impl_getpgrp@Base 15 + __sanitizer_syscall_pre_impl_getpid@Base 15 + __sanitizer_syscall_pre_impl_getppid@Base 15 + __sanitizer_syscall_pre_impl_getpriority@Base 15 + __sanitizer_syscall_pre_impl_getrandom@Base 15 + __sanitizer_syscall_pre_impl_getresgid@Base 15 + __sanitizer_syscall_pre_impl_getresuid@Base 15 + __sanitizer_syscall_pre_impl_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_getrusage@Base 15 + __sanitizer_syscall_pre_impl_getsid@Base 15 + __sanitizer_syscall_pre_impl_getsockname@Base 15 + __sanitizer_syscall_pre_impl_getsockopt@Base 15 + __sanitizer_syscall_pre_impl_gettid@Base 15 + __sanitizer_syscall_pre_impl_gettimeofday@Base 15 + __sanitizer_syscall_pre_impl_getuid@Base 15 + __sanitizer_syscall_pre_impl_getxattr@Base 15 + __sanitizer_syscall_pre_impl_init_module@Base 15 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_pre_impl_inotify_init1@Base 15 + __sanitizer_syscall_pre_impl_inotify_init@Base 15 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_pre_impl_io_cancel@Base 15 + __sanitizer_syscall_pre_impl_io_destroy@Base 15 + __sanitizer_syscall_pre_impl_io_getevents@Base 15 + __sanitizer_syscall_pre_impl_io_setup@Base 15 + __sanitizer_syscall_pre_impl_io_submit@Base 15 + __sanitizer_syscall_pre_impl_ioctl@Base 15 + __sanitizer_syscall_pre_impl_ioperm@Base 15 + __sanitizer_syscall_pre_impl_ioprio_get@Base 15 + __sanitizer_syscall_pre_impl_ioprio_set@Base 15 + __sanitizer_syscall_pre_impl_ipc@Base 15 + __sanitizer_syscall_pre_impl_kexec_load@Base 15 + __sanitizer_syscall_pre_impl_keyctl@Base 15 + __sanitizer_syscall_pre_impl_kill@Base 15 + __sanitizer_syscall_pre_impl_lchown@Base 15 + __sanitizer_syscall_pre_impl_lgetxattr@Base 15 + __sanitizer_syscall_pre_impl_link@Base 15 + __sanitizer_syscall_pre_impl_linkat@Base 15 + __sanitizer_syscall_pre_impl_listen@Base 15 + __sanitizer_syscall_pre_impl_listxattr@Base 15 + __sanitizer_syscall_pre_impl_llistxattr@Base 15 + __sanitizer_syscall_pre_impl_llseek@Base 15 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_pre_impl_lremovexattr@Base 15 + __sanitizer_syscall_pre_impl_lseek@Base 15 + __sanitizer_syscall_pre_impl_lsetxattr@Base 15 + __sanitizer_syscall_pre_impl_lstat64@Base 15 + __sanitizer_syscall_pre_impl_lstat@Base 15 + __sanitizer_syscall_pre_impl_madvise@Base 15 + __sanitizer_syscall_pre_impl_mbind@Base 15 + __sanitizer_syscall_pre_impl_migrate_pages@Base 15 + __sanitizer_syscall_pre_impl_mincore@Base 15 + __sanitizer_syscall_pre_impl_mkdir@Base 15 + __sanitizer_syscall_pre_impl_mkdirat@Base 15 + __sanitizer_syscall_pre_impl_mknod@Base 15 + __sanitizer_syscall_pre_impl_mknodat@Base 15 + __sanitizer_syscall_pre_impl_mlock@Base 15 + __sanitizer_syscall_pre_impl_mlockall@Base 15 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_pre_impl_mount@Base 15 + __sanitizer_syscall_pre_impl_move_pages@Base 15 + __sanitizer_syscall_pre_impl_mprotect@Base 15 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_pre_impl_mq_notify@Base 15 + __sanitizer_syscall_pre_impl_mq_open@Base 15 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 + __sanitizer_syscall_pre_impl_mq_unlink@Base 15 + __sanitizer_syscall_pre_impl_mremap@Base 15 + __sanitizer_syscall_pre_impl_msgctl@Base 15 + __sanitizer_syscall_pre_impl_msgget@Base 15 + __sanitizer_syscall_pre_impl_msgrcv@Base 15 + __sanitizer_syscall_pre_impl_msgsnd@Base 15 + __sanitizer_syscall_pre_impl_msync@Base 15 + __sanitizer_syscall_pre_impl_munlock@Base 15 + __sanitizer_syscall_pre_impl_munlockall@Base 15 + __sanitizer_syscall_pre_impl_munmap@Base 15 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_pre_impl_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_newfstat@Base 15 + __sanitizer_syscall_pre_impl_newfstatat@Base 15 + __sanitizer_syscall_pre_impl_newlstat@Base 15 + __sanitizer_syscall_pre_impl_newstat@Base 15 + __sanitizer_syscall_pre_impl_newuname@Base 15 + __sanitizer_syscall_pre_impl_ni_syscall@Base 15 + __sanitizer_syscall_pre_impl_nice@Base 15 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_old_mmap@Base 15 + __sanitizer_syscall_pre_impl_old_readdir@Base 15 + __sanitizer_syscall_pre_impl_old_select@Base 15 + __sanitizer_syscall_pre_impl_oldumount@Base 15 + __sanitizer_syscall_pre_impl_olduname@Base 15 + __sanitizer_syscall_pre_impl_open@Base 15 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_pre_impl_openat@Base 15 + __sanitizer_syscall_pre_impl_pause@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 + __sanitizer_syscall_pre_impl_perf_event_open@Base 15 + __sanitizer_syscall_pre_impl_personality@Base 15 + __sanitizer_syscall_pre_impl_pipe2@Base 15 + __sanitizer_syscall_pre_impl_pipe@Base 15 + __sanitizer_syscall_pre_impl_pivot_root@Base 15 + __sanitizer_syscall_pre_impl_poll@Base 15 + __sanitizer_syscall_pre_impl_ppoll@Base 15 + __sanitizer_syscall_pre_impl_pread64@Base 15 + __sanitizer_syscall_pre_impl_preadv@Base 15 + __sanitizer_syscall_pre_impl_prlimit64@Base 15 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 + __sanitizer_syscall_pre_impl_pselect6@Base 15 + __sanitizer_syscall_pre_impl_ptrace@Base 15 + __sanitizer_syscall_pre_impl_pwrite64@Base 15 + __sanitizer_syscall_pre_impl_pwritev@Base 15 + __sanitizer_syscall_pre_impl_quotactl@Base 15 + __sanitizer_syscall_pre_impl_read@Base 15 + __sanitizer_syscall_pre_impl_readlink@Base 15 + __sanitizer_syscall_pre_impl_readlinkat@Base 15 + __sanitizer_syscall_pre_impl_readv@Base 15 + __sanitizer_syscall_pre_impl_reboot@Base 15 + __sanitizer_syscall_pre_impl_recv@Base 15 + __sanitizer_syscall_pre_impl_recvfrom@Base 15 + __sanitizer_syscall_pre_impl_recvmmsg@Base 15 + __sanitizer_syscall_pre_impl_recvmsg@Base 15 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 + __sanitizer_syscall_pre_impl_removexattr@Base 15 + __sanitizer_syscall_pre_impl_rename@Base 15 + __sanitizer_syscall_pre_impl_renameat@Base 15 + __sanitizer_syscall_pre_impl_request_key@Base 15 + __sanitizer_syscall_pre_impl_restart_syscall@Base 15 + __sanitizer_syscall_pre_impl_rmdir@Base 15 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_getparam@Base 15 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_setparam@Base 15 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_yield@Base 15 + __sanitizer_syscall_pre_impl_select@Base 15 + __sanitizer_syscall_pre_impl_semctl@Base 15 + __sanitizer_syscall_pre_impl_semget@Base 15 + __sanitizer_syscall_pre_impl_semop@Base 15 + __sanitizer_syscall_pre_impl_semtimedop@Base 15 + __sanitizer_syscall_pre_impl_send@Base 15 + __sanitizer_syscall_pre_impl_sendfile64@Base 15 + __sanitizer_syscall_pre_impl_sendfile@Base 15 + __sanitizer_syscall_pre_impl_sendmmsg@Base 15 + __sanitizer_syscall_pre_impl_sendmsg@Base 15 + __sanitizer_syscall_pre_impl_sendto@Base 15 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_set_robust_list@Base 15 + __sanitizer_syscall_pre_impl_set_tid_address@Base 15 + __sanitizer_syscall_pre_impl_setdomainname@Base 15 + __sanitizer_syscall_pre_impl_setfsgid@Base 15 + __sanitizer_syscall_pre_impl_setfsuid@Base 15 + __sanitizer_syscall_pre_impl_setgid@Base 15 + __sanitizer_syscall_pre_impl_setgroups@Base 15 + __sanitizer_syscall_pre_impl_sethostname@Base 15 + __sanitizer_syscall_pre_impl_setitimer@Base 15 + __sanitizer_syscall_pre_impl_setns@Base 15 + __sanitizer_syscall_pre_impl_setpgid@Base 15 + __sanitizer_syscall_pre_impl_setpriority@Base 15 + __sanitizer_syscall_pre_impl_setregid@Base 15 + __sanitizer_syscall_pre_impl_setresgid@Base 15 + __sanitizer_syscall_pre_impl_setresuid@Base 15 + __sanitizer_syscall_pre_impl_setreuid@Base 15 + __sanitizer_syscall_pre_impl_setrlimit@Base 15 + __sanitizer_syscall_pre_impl_setsid@Base 15 + __sanitizer_syscall_pre_impl_setsockopt@Base 15 + __sanitizer_syscall_pre_impl_settimeofday@Base 15 + __sanitizer_syscall_pre_impl_setuid@Base 15 + __sanitizer_syscall_pre_impl_setxattr@Base 15 + __sanitizer_syscall_pre_impl_sgetmask@Base 15 + __sanitizer_syscall_pre_impl_shmat@Base 15 + __sanitizer_syscall_pre_impl_shmctl@Base 15 + __sanitizer_syscall_pre_impl_shmdt@Base 15 + __sanitizer_syscall_pre_impl_shmget@Base 15 + __sanitizer_syscall_pre_impl_shutdown@Base 15 + __sanitizer_syscall_pre_impl_sigaction@Base 15 + __sanitizer_syscall_pre_impl_sigaltstack@Base 15 + __sanitizer_syscall_pre_impl_signal@Base 15 + __sanitizer_syscall_pre_impl_signalfd4@Base 15 + __sanitizer_syscall_pre_impl_signalfd@Base 15 + __sanitizer_syscall_pre_impl_sigpending@Base 15 + __sanitizer_syscall_pre_impl_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_socket@Base 15 + __sanitizer_syscall_pre_impl_socketcall@Base 15 + __sanitizer_syscall_pre_impl_socketpair@Base 15 + __sanitizer_syscall_pre_impl_splice@Base 15 + __sanitizer_syscall_pre_impl_spu_create@Base 15 + __sanitizer_syscall_pre_impl_spu_run@Base 15 + __sanitizer_syscall_pre_impl_ssetmask@Base 15 + __sanitizer_syscall_pre_impl_stat64@Base 15 + __sanitizer_syscall_pre_impl_stat@Base 15 + __sanitizer_syscall_pre_impl_statfs64@Base 15 + __sanitizer_syscall_pre_impl_statfs@Base 15 + __sanitizer_syscall_pre_impl_stime@Base 15 + __sanitizer_syscall_pre_impl_swapoff@Base 15 + __sanitizer_syscall_pre_impl_swapon@Base 15 + __sanitizer_syscall_pre_impl_symlink@Base 15 + __sanitizer_syscall_pre_impl_symlinkat@Base 15 + __sanitizer_syscall_pre_impl_sync@Base 15 + __sanitizer_syscall_pre_impl_syncfs@Base 15 + __sanitizer_syscall_pre_impl_sysctl@Base 15 + __sanitizer_syscall_pre_impl_sysfs@Base 15 + __sanitizer_syscall_pre_impl_sysinfo@Base 15 + __sanitizer_syscall_pre_impl_syslog@Base 15 + __sanitizer_syscall_pre_impl_tee@Base 15 + __sanitizer_syscall_pre_impl_tgkill@Base 15 + __sanitizer_syscall_pre_impl_time@Base 15 + __sanitizer_syscall_pre_impl_timer_create@Base 15 + __sanitizer_syscall_pre_impl_timer_delete@Base 15 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_pre_impl_timer_gettime@Base 15 + __sanitizer_syscall_pre_impl_timer_settime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_create@Base 15 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 + __sanitizer_syscall_pre_impl_times@Base 15 + __sanitizer_syscall_pre_impl_tkill@Base 15 + __sanitizer_syscall_pre_impl_truncate@Base 15 + __sanitizer_syscall_pre_impl_umask@Base 15 + __sanitizer_syscall_pre_impl_umount@Base 15 + __sanitizer_syscall_pre_impl_uname@Base 15 + __sanitizer_syscall_pre_impl_unlink@Base 15 + __sanitizer_syscall_pre_impl_unlinkat@Base 15 + __sanitizer_syscall_pre_impl_unshare@Base 15 + __sanitizer_syscall_pre_impl_uselib@Base 15 + __sanitizer_syscall_pre_impl_ustat@Base 15 + __sanitizer_syscall_pre_impl_utime@Base 15 + __sanitizer_syscall_pre_impl_utimensat@Base 15 + __sanitizer_syscall_pre_impl_utimes@Base 15 + __sanitizer_syscall_pre_impl_vfork@Base 15 + __sanitizer_syscall_pre_impl_vhangup@Base 15 + __sanitizer_syscall_pre_impl_vmsplice@Base 15 + __sanitizer_syscall_pre_impl_wait4@Base 15 + __sanitizer_syscall_pre_impl_waitid@Base 15 + __sanitizer_syscall_pre_impl_waitpid@Base 15 + __sanitizer_syscall_pre_impl_write@Base 15 + __sanitizer_syscall_pre_impl_writev@Base 15 + __sanitizer_unaligned_load16@Base 15 + __sanitizer_unaligned_load32@Base 15 + __sanitizer_unaligned_load64@Base 15 + __sanitizer_unaligned_store16@Base 15 + __sanitizer_unaligned_store32@Base 15 + __sanitizer_unaligned_store64@Base 15 + __sanitizer_verify_contiguous_container@Base 15 + __sanitizer_verify_double_ended_contiguous_container@Base 15 + __sanitizer_weak_hook_memcmp@Base 15 + __sanitizer_weak_hook_memmem@Base 15 + __sanitizer_weak_hook_strcasecmp@Base 15 + __sanitizer_weak_hook_strcasestr@Base 15 + __sanitizer_weak_hook_strcmp@Base 15 + __sanitizer_weak_hook_strncasecmp@Base 15 + __sanitizer_weak_hook_strncmp@Base 15 + __sanitizer_weak_hook_strstr@Base 15 + __snprintf_chk@Base 15 + __sprintf_chk@Base 15 + __strdup@Base 15 + __strndup@Base 15 + __strxfrm_l@Base 15 + (arch=i386)__tls_get_addr@Base 15 + (arch=powerpc)__tls_get_addr_opt@Base 15 + __uflow@Base 15 + __underflow@Base 15 + __vsnprintf_chk@Base 15 + __vsprintf_chk@Base 15 + __wcsxfrm_l@Base 15 + __woverflow@Base 15 + __wuflow@Base 15 + __wunderflow@Base 15 + __xpg_strerror_r@Base 15 + __xstat64@Base 15 + __xstat@Base 15 + _exit@Base 15 + _longjmp@Base 15 + _obstack_begin@Base 15 + _obstack_begin_1@Base 15 + _obstack_newchunk@Base 15 + accept4@Base 15 + accept@Base 15 + aligned_alloc@Base 15 + argp_parse@Base 15 + asctime@Base 15 + asctime_r@Base 15 + asprintf@Base 15 + atoi@Base 15 + atol@Base 15 + atoll@Base 15 + backtrace@Base 15 + backtrace_symbols@Base 15 + bcmp@Base 15 + bsearch@Base 15 + bzero@Base 15 + calloc@Base 15 + canonicalize_file_name@Base 15 + capget@Base 15 + capset@Base 15 + cfree@Base 15 + clock_getcpuclockid@Base 15 + clock_getres@Base 15 + clock_gettime@Base 15 + clock_settime@Base 15 + confstr@Base 15 + ctermid@Base 15 + ctime@Base 15 + ctime_r@Base 15 + dlclose@Base 15 + dlopen@Base 15 + dn_comp@Base 15 + dn_expand@Base 15 + drand48_r@Base 15 + endgrent@Base 15 + endpwent@Base 15 + ether_aton@Base 15 + ether_aton_r@Base 15 + ether_hostton@Base 15 + ether_line@Base 15 + ether_ntoa@Base 15 + ether_ntoa_r@Base 15 + ether_ntohost@Base 15 + eventfd_read@Base 15 + eventfd_write@Base 15 + fclose@Base 15 + fdopen@Base 15 + fflush@Base 15 + fgetgrent@Base 15 + fgetgrent_r@Base 15 + fgetpwent@Base 15 + fgetpwent_r@Base 15 + fgets@Base 15 + fgetxattr@Base 15 + flistxattr@Base 15 + fmemopen@Base 15 + fopen64@Base 15 + fopen@Base 15 + fopencookie@Base 15 + fprintf@Base 15 + fputs@Base 15 + fread@Base 15 + free@Base 15 + freopen64@Base 15 + freopen@Base 15 + frexp@Base 15 + frexpf@Base 15 + frexpl@Base 15 + fscanf@Base 15 + fstatfs64@Base 15 + fstatfs@Base 15 + fstatvfs64@Base 15 + fstatvfs@Base 15 + ftime@Base 15 + fwrite@Base 15 + get_current_dir_name@Base 15 + getaddrinfo@Base 15 + getcwd@Base 15 + getdelim@Base 15 + getentropy@Base 15 + getgrent@Base 15 + getgrent_r@Base 15 + getgrgid@Base 15 + getgrgid_r@Base 15 + getgrnam@Base 15 + getgrnam_r@Base 15 + getgrouplist@Base 15 + getgroups@Base 15 + gethostbyaddr@Base 15 + gethostbyaddr_r@Base 15 + gethostbyname2@Base 15 + gethostbyname2_r@Base 15 + gethostbyname@Base 15 + gethostbyname_r@Base 15 + gethostent@Base 15 + gethostent_r@Base 15 + getifaddrs@Base 15 + getitimer@Base 15 + getline@Base 15 + getloadavg@Base 15 + getmntent@Base 15 + getmntent_r@Base 15 + getnameinfo@Base 15 + getnetbyaddr@Base 15 + getnetbyname@Base 15 + getnetent@Base 15 + getpass@Base 15 + getpeername@Base 15 + getprotobyname@Base 15 + getprotobyname_r@Base 15 + getprotobynumber@Base 15 + getprotobynumber_r@Base 15 + getprotoent@Base 15 + getprotoent_r@Base 15 + getpwent@Base 15 + getpwent_r@Base 15 + getpwnam@Base 15 + getpwnam_r@Base 15 + getpwuid@Base 15 + getpwuid_r@Base 15 + getrandom@Base 15 + getresgid@Base 15 + getresuid@Base 15 + getsockname@Base 15 + getsockopt@Base 15 + getusershell@Base 15 + getutent@Base 15 + getutid@Base 15 + getutline@Base 15 + getutxent@Base 15 + getutxid@Base 15 + getutxline@Base 15 + getxattr@Base 15 + glob64@Base 15 + glob@Base 15 + gmtime@Base 15 + gmtime_r@Base 15 + iconv@Base 15 + if_indextoname@Base 15 + if_nametoindex@Base 15 + index@Base 15 + inet_aton@Base 15 + inet_ntop@Base 15 + inet_pton@Base 15 + initgroups@Base 15 + ioctl@Base 15 + lgamma@Base 15 + lgamma_r@Base 15 + lgammaf@Base 15 + lgammaf_r@Base 15 + lgammal@Base 15 + lgammal_r@Base 15 + lgetxattr@Base 15 + listxattr@Base 15 + llistxattr@Base 15 + localtime@Base 15 + localtime_r@Base 15 + longjmp@Base 15 + lrand48_r@Base 15 + lstat64@Base 15 + lstat@Base 15 + makecontext@Base 15 + mallinfo@Base 15 + malloc@Base 15 + malloc_stats@Base 15 + malloc_usable_size@Base 15 + mallopt@Base 15 + mbsnrtowcs@Base 15 + mbsrtowcs@Base 15 + mbstowcs@Base 15 + mcheck@Base 15 + mcheck_pedantic@Base 15 + memalign@Base 15 + memchr@Base 15 + memcmp@Base 15 + memcpy@Base 15 + memmem@Base 15 + memmove@Base 15 + memrchr@Base 15 + memset@Base 15 + mincore@Base 15 + mktime@Base 15 + mlock@Base 15 + mlockall@Base 15 + mmap64@Base 15 + mmap@Base 15 + modf@Base 15 + modff@Base 15 + modfl@Base 15 + mprobe@Base 15 + mprotect@Base 15 + msgrcv@Base 15 + msgsnd@Base 15 + munlock@Base 15 + munlockall@Base 15 + munmap@Base 15 + name_to_handle_at@Base 15 + open_by_handle_at@Base 15 + open_memstream@Base 15 + open_wmemstream@Base 15 + opendir@Base 15 + pclose@Base 15 + poll@Base 15 + popen@Base 15 + posix_memalign@Base 15 + posix_spawn@Base 15 + posix_spawnp@Base 15 + ppoll@Base 15 + prctl@Base 15 + pread64@Base 15 + pread@Base 15 + preadv2@Base 15 + preadv64@Base 15 + preadv@Base 15 + printf@Base 15 + process_vm_readv@Base 15 + process_vm_writev@Base 15 + pthread_attr_getaffinity_np@Base 15 + pthread_attr_getdetachstate@Base 15 + pthread_attr_getguardsize@Base 15 + pthread_attr_getinheritsched@Base 15 + pthread_attr_getschedparam@Base 15 + pthread_attr_getschedpolicy@Base 15 + pthread_attr_getscope@Base 15 + pthread_attr_getstack@Base 15 + pthread_attr_getstacksize@Base 15 + pthread_barrierattr_getpshared@Base 15 + pthread_condattr_getclock@Base 15 + pthread_condattr_getpshared@Base 15 + pthread_create@Base 15 + pthread_detach@Base 15 + pthread_exit@Base 15 + pthread_getaffinity_np@Base 15 + pthread_getcpuclockid@Base 15 + pthread_getname_np@Base 15 + pthread_getschedparam@Base 15 + pthread_join@Base 15 + pthread_mutexattr_getprioceiling@Base 15 + pthread_mutexattr_getprotocol@Base 15 + pthread_mutexattr_getpshared@Base 15 + pthread_mutexattr_getrobust@Base 15 + pthread_mutexattr_getrobust_np@Base 15 + pthread_mutexattr_gettype@Base 15 + pthread_rwlockattr_getkind_np@Base 15 + pthread_rwlockattr_getpshared@Base 15 + pthread_setcancelstate@Base 15 + pthread_setcanceltype@Base 15 + pthread_setname_np@Base 15 + pthread_sigmask@Base 15 + pthread_timedjoin_np@Base 15 + pthread_tryjoin_np@Base 15 + ptrace@Base 15 + ptsname@Base 15 + ptsname_r@Base 15 + puts@Base 15 + pututxline@Base 15 + pvalloc@Base 15 + pwrite64@Base 15 + pwrite@Base 15 + pwritev2@Base 15 + pwritev64@Base 15 + pwritev@Base 15 + qsort@Base 15 + qsort_r@Base 15 + rand_r@Base 15 + random_r@Base 15 + read@Base 15 + readdir64@Base 15 + readdir64_r@Base 15 + readdir@Base 15 + readdir_r@Base 15 + readlink@Base 15 + readlinkat@Base 15 + readv@Base 15 + realloc@Base 15 + reallocarray@Base 15 + realpath@Base 15 + recv@Base 15 + recvfrom@Base 15 + recvmmsg@Base 15 + recvmsg@Base 15 + regcomp@Base 15 + regerror@Base 15 + regexec@Base 15 + regfree@Base 15 + remquo@Base 15 + remquof@Base 15 + remquol@Base 15 + scandir64@Base 15 + scandir@Base 15 + scanf@Base 15 + sched_getaffinity@Base 15 + sched_getparam@Base 15 + sem_destroy@Base 15 + sem_getvalue@Base 15 + sem_init@Base 15 + sem_open@Base 15 + sem_post@Base 15 + sem_timedwait@Base 15 + sem_trywait@Base 15 + sem_unlink@Base 15 + sem_wait@Base 15 + send@Base 15 + sendmmsg@Base 15 + sendmsg@Base 15 + sendto@Base 15 + setbuf@Base 15 + setbuffer@Base 15 + setgrent@Base 15 + setitimer@Base 15 + setlinebuf@Base 15 + setlocale@Base 15 + setpwent@Base 15 + setvbuf@Base 15 + shmctl@Base 15 + sigaction@Base 15 + sigaltstack@Base 15 + sigandset@Base 15 + sigemptyset@Base 15 + sigfillset@Base 15 + siglongjmp@Base 15 + signal@Base 15 + sigorset@Base 15 + sigpending@Base 15 + sigprocmask@Base 15 + sigtimedwait@Base 15 + sigwait@Base 15 + sigwaitinfo@Base 15 + sincos@Base 15 + sincosf@Base 15 + sincosl@Base 15 + snprintf@Base 15 + sprintf@Base 15 + sscanf@Base 15 + stat64@Base 15 + stat@Base 15 + statfs64@Base 15 + statfs@Base 15 + statvfs64@Base 15 + statvfs@Base 15 + strcasecmp@Base 15 + strcasestr@Base 15 + strcat@Base 15 + strchr@Base 15 + strchrnul@Base 15 + strcmp@Base 15 + strcpy@Base 15 + strcspn@Base 15 + strdup@Base 15 + strerror@Base 15 + strerror_r@Base 15 + strlen@Base 15 + strncasecmp@Base 15 + strncat@Base 15 + strncmp@Base 15 + strncpy@Base 15 + strndup@Base 15 + strnlen@Base 15 + strpbrk@Base 15 + strptime@Base 15 + strrchr@Base 15 + strspn@Base 15 + strstr@Base 15 + strtoimax@Base 15 + strtok@Base 15 + strtol@Base 15 + strtoll@Base 15 + strtoumax@Base 15 + strxfrm@Base 15 + strxfrm_l@Base 15 + swapcontext@Base 15 + sysinfo@Base 15 + tcgetattr@Base 15 + tempnam@Base 15 + textdomain@Base 15 + time@Base 15 + timerfd_gettime@Base 15 + timerfd_settime@Base 15 + times@Base 15 + tmpnam@Base 15 + tmpnam_r@Base 15 + tsearch@Base 15 + ttyname@Base 15 + ttyname_r@Base 15 + uname@Base 15 + valloc@Base 15 + vasprintf@Base 15 + (arch=i386)vfork@Base 15 + vfprintf@Base 15 + vfscanf@Base 15 + vprintf@Base 15 + vscanf@Base 15 + vsnprintf@Base 15 + vsprintf@Base 15 + vsscanf@Base 15 + wait3@Base 15 + wait4@Base 15 + wait@Base 15 + waitid@Base 15 + waitpid@Base 15 + wcrtomb@Base 15 + wcscat@Base 15 + wcsdup@Base 15 + wcslen@Base 15 + wcsncat@Base 15 + wcsnlen@Base 15 + wcsnrtombs@Base 15 + wcsrtombs@Base 15 + wcstombs@Base 15 + wcsxfrm@Base 15 + wcsxfrm_l@Base 15 + wctomb@Base 15 + wordexp@Base 15 + write@Base 15 + writev@Base 15 + xdr_bool@Base 15 + xdr_bytes@Base 15 + xdr_char@Base 15 + xdr_destroy@Base 15 + xdr_double@Base 15 + xdr_enum@Base 15 + xdr_float@Base 15 + xdr_hyper@Base 15 + xdr_int16_t@Base 15 + xdr_int32_t@Base 15 + xdr_int64_t@Base 15 + xdr_int8_t@Base 15 + xdr_int@Base 15 + xdr_long@Base 15 + xdr_longlong_t@Base 15 + xdr_quad_t@Base 15 + xdr_short@Base 15 + xdr_string@Base 15 + xdr_u_char@Base 15 + xdr_u_hyper@Base 15 + xdr_u_int@Base 15 + xdr_u_long@Base 15 + xdr_u_longlong_t@Base 15 + xdr_u_quad_t@Base 15 + xdr_u_short@Base 15 + xdr_uint16_t@Base 15 + xdr_uint32_t@Base 15 + xdr_uint64_t@Base 15 + xdr_uint8_t@Base 15 + xdrmem_create@Base 15 + xdrrec_create@Base 15 + xdrstdio_create@Base 15 diff --git a/lib64gccLC.postinst b/lib64gccLC.postinst new file mode 100644 index 0000000..f671fd6 --- /dev/null +++ b/lib64gccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib64gcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/lib64stdc++CXX.postinst b/lib64stdc++CXX.postinst new file mode 100644 index 0000000..1c8e979 --- /dev/null +++ b/lib64stdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib64stdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/libasan8.symbols b/libasan8.symbols new file mode 100644 index 0000000..4b243c6 --- /dev/null +++ b/libasan8.symbols @@ -0,0 +1,3091 @@ +# SymbolsHelper-Confirmed: 15 amd64 armhf i386 powerpc ppc64 ppc64el riscv64 s390x sparc64 x32 +libasan.so.8 libasan8 #MINVER# + _Unwind_RaiseException@Base 15 + _ZdaPv@Base 15 + _ZdaPvRKSt9nothrow_t@Base 15 + _ZdaPvSt11align_val_t@Base 15 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 + (subst)_ZdaPv{size_t}@Base 15 + (subst)_ZdaPv{size_t}St11align_val_t@Base 15 + _ZdlPv@Base 15 + _ZdlPvRKSt9nothrow_t@Base 15 + _ZdlPvSt11align_val_t@Base 15 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 + (subst)_ZdlPv{size_t}@Base 15 + (subst)_ZdlPv{size_t}St11align_val_t@Base 15 + (subst)_Zna{size_t}@Base 15 + (subst)_Zna{size_t}RKSt9nothrow_t@Base 15 + (subst)_Zna{size_t}St11align_val_t@Base 15 + (subst)_Zna{size_t}St11align_val_tRKSt9nothrow_t@Base 15 + (subst)_Znw{size_t}@Base 15 + (subst)_Znw{size_t}RKSt9nothrow_t@Base 15 + (subst)_Znw{size_t}St11align_val_t@Base 15 + (subst)_Znw{size_t}St11align_val_tRKSt9nothrow_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__Unwind_RaiseException@Base 15 + (arch=armhf)___interceptor___aeabi_memclr4@Base 15 + (arch=armhf)___interceptor___aeabi_memclr8@Base 15 + (arch=armhf)___interceptor___aeabi_memclr@Base 15 + (arch=armhf)___interceptor___aeabi_memcpy4@Base 15 + (arch=armhf)___interceptor___aeabi_memcpy8@Base 15 + (arch=armhf)___interceptor___aeabi_memcpy@Base 15 + (arch=armhf)___interceptor___aeabi_memmove4@Base 15 + (arch=armhf)___interceptor___aeabi_memmove8@Base 15 + (arch=armhf)___interceptor___aeabi_memmove@Base 15 + (arch=armhf)___interceptor___aeabi_memset4@Base 15 + (arch=armhf)___interceptor___aeabi_memset8@Base 15 + (arch=armhf)___interceptor___aeabi_memset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___b64_ntop@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___b64_pton@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___bzero@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___cxa_atexit@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___cxa_throw@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___fprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___getdelim@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtoimax@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtol@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtoll@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtoumax@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_fprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_printf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_snprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_sprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vfprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vsnprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vsprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___libc_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___longjmp_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___lxstat64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___lxstat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___overflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___snprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___sprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___strdup@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___strndup@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___strxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___tls_get_addr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___uflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___underflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___vsnprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___vsprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___wcsxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___woverflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___wuflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___wunderflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___xpg_strerror_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___xstat64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___xstat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__exit@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__longjmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__obstack_begin@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__obstack_begin_1@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__obstack_newchunk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_accept4@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_accept@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_aligned_alloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_argp_parse@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_asctime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_asctime_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_asprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_atoi@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_atol@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_atoll@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_backtrace@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_backtrace_symbols@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_bcmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_bsearch@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_bzero@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_calloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_canonicalize_file_name@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_capget@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_capset@Base 15 + (arch=amd64 armhf x32)___interceptor_cfree@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_clock_getcpuclockid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_clock_getres@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_clock_gettime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_clock_settime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_confstr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ctermid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ctime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ctime_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_dlclose@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_dlopen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_dn_comp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_dn_expand@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_drand48_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_endgrent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_endpwent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_aton@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_aton_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_hostton@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_line@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_ntoa@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_ntoa_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_ntohost@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_eventfd_read@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_eventfd_write@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fclose@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fdopen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fflush@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgetgrent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgetgrent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgetpwent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgetpwent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgets@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgetxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_flistxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fmemopen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fopen64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fopen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fopencookie@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fputs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fread@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_free@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_freopen64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_freopen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_frexp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_frexpf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_frexpl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fstatfs64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fstatfs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fstatvfs64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fstatvfs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ftime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fwrite@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_get_current_dir_name@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getaddrinfo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getcwd@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getdelim@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getentropy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrgid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrgid_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrnam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrouplist@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgroups@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyaddr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyaddr_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname2@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname2_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getifaddrs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getitimer@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getline@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getloadavg@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getmntent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getmntent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getnameinfo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getnetbyaddr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getnetbyname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getnetent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpass@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpeername@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotobyname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotobyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotobynumber@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotobynumber_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotoent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotoent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwnam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwuid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwuid_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getrandom@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getresgid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getresuid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getsockname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getsockopt@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getusershell@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutline@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutxent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutxid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutxline@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_glob64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_glob@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gmtime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gmtime_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_iconv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_if_indextoname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_if_nametoindex@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_index@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_inet_aton@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_inet_ntop@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_inet_pton@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_initgroups@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ioctl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgamma@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgamma_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgammaf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgammaf_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgammal@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgammal_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgetxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_listxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_llistxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_localtime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_localtime_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_longjmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lrand48_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lstat64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lstat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_makecontext@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mallinfo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_malloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_malloc_stats@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_malloc_usable_size@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mallopt@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mbsnrtowcs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mbsrtowcs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mbstowcs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mcheck@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mcheck_pedantic@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memchr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memcmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memcpy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memmem@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memmove@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memrchr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mincore@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mktime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mlock@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mlockall@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mmap64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mmap@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_modf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_modff@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_modfl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mprobe@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mprotect@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_msgrcv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_msgsnd@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_munlock@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_munlockall@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_munmap@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_name_to_handle_at@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_open_by_handle_at@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_open_memstream@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_open_wmemstream@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_opendir@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pclose@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_poll@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_popen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_posix_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_posix_spawn@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_posix_spawnp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ppoll@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_prctl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pread64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pread@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_preadv2@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_preadv64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_preadv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_printf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_process_vm_readv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_process_vm_writev@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getaffinity_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getdetachstate@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getguardsize@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getinheritsched@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getschedparam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getschedpolicy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getscope@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getstack@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getstacksize@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_barrierattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_condattr_getclock@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_condattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_create@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_detach@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_exit@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getaffinity_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getcpuclockid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getname_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getschedparam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_join@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getprioceiling@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getprotocol@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getrobust@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getrobust_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_gettype@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_rwlockattr_getkind_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_rwlockattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_setcancelstate@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_setcanceltype@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_setname_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_sigmask@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_timedjoin_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_tryjoin_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ptrace@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ptsname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ptsname_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_puts@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pututxline@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pvalloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pwrite64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pwrite@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pwritev2@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pwritev64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pwritev@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_qsort@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_qsort_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_rand_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_random_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_read@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readdir64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readdir64_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readdir@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readdir_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readlink@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readlinkat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_realloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_reallocarray@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_realpath@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_recv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_recvfrom@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_recvmmsg@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_recvmsg@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_regcomp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_regerror@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_regexec@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_regfree@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_remquo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_remquof@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_remquol@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_scandir64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_scandir@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sched_getaffinity@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sched_getparam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_destroy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_getvalue@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_init@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_open@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_post@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_timedwait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_trywait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_unlink@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_wait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_send@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sendmmsg@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sendmsg@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sendto@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setbuf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setbuffer@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setgrent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setitimer@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setlinebuf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setlocale@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setpwent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setvbuf@Base 15 + (arch=amd64 riscv64)___interceptor_shmctl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigaction@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigaltstack@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigandset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigemptyset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigfillset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_siglongjmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_signal@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigorset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigpending@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigprocmask@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigtimedwait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigwait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigwaitinfo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sincos@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sincosf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sincosl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_snprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_stat64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_stat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_statfs64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_statfs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_statvfs64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_statvfs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcasecmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcasestr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strchr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strchrnul@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcpy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcspn@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strdup@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strerror@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strerror_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strlen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strncasecmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strncat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strncmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strncpy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strndup@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strnlen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strpbrk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strptime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strrchr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strspn@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strstr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strtoimax@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strtok@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strtol@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strtoll@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strtoumax@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strxfrm@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_swapcontext@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sysinfo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_tcgetattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_tempnam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_textdomain@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_time@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_timerfd_gettime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_timerfd_settime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_times@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_tmpnam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_tmpnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_tsearch@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ttyname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ttyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_uname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_valloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vasprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vfork@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vfprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vsnprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vsprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wait3@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wait4@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_waitid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_waitpid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcrtomb@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcscat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsdup@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcslen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsncat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsnlen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsnrtombs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsrtombs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcstombs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsxfrm@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wctomb@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wordexp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_write@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_writev@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_bool@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_bytes@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_char@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_destroy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_double@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_enum@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_float@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_hyper@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int16_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int32_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int64_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int8_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_long@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_longlong_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_quad_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_short@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_string@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_char@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_hyper@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_int@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_long@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_longlong_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_quad_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_short@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint16_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint32_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint64_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint8_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdrmem_create@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdrrec_create@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdrstdio_create@Base 15 + __asan_addr_is_in_fake_stack@Base 15 + __asan_address_is_poisoned@Base 15 + __asan_after_dynamic_init@Base 15 + __asan_alloca_poison@Base 15 + __asan_allocas_unpoison@Base 15 + __asan_backtrace_alloc@Base 15 + __asan_backtrace_close@Base 15 + __asan_backtrace_create_state@Base 15 + __asan_backtrace_dwarf_add@Base 15 + __asan_backtrace_free@Base 15 + __asan_backtrace_get_view@Base 15 + __asan_backtrace_initialize@Base 15 + __asan_backtrace_open@Base 15 + __asan_backtrace_pcinfo@Base 15 + __asan_backtrace_qsort@Base 15 + __asan_backtrace_release_view@Base 15 + __asan_backtrace_syminfo@Base 15 + __asan_backtrace_syminfo_to_full_callback@Base 15 + __asan_backtrace_syminfo_to_full_error_callback@Base 15 + __asan_backtrace_uncompress_lzma@Base 15 + __asan_backtrace_uncompress_zdebug@Base 15 + __asan_backtrace_uncompress_zstd@Base 15 + __asan_backtrace_vector_finish@Base 15 + __asan_backtrace_vector_grow@Base 15 + __asan_backtrace_vector_release@Base 15 + __asan_before_dynamic_init@Base 15 + __asan_cplus_demangle_builtin_types@Base 15 + __asan_cplus_demangle_fill_ctor@Base 15 + __asan_cplus_demangle_fill_dtor@Base 15 + __asan_cplus_demangle_fill_extended_operator@Base 15 + __asan_cplus_demangle_fill_name@Base 15 + __asan_cplus_demangle_init_info@Base 15 + __asan_cplus_demangle_mangled_name@Base 15 + __asan_cplus_demangle_operators@Base 15 + __asan_cplus_demangle_print@Base 15 + __asan_cplus_demangle_print_callback@Base 15 + __asan_cplus_demangle_type@Base 15 + __asan_cplus_demangle_v3@Base 15 + __asan_cplus_demangle_v3_callback@Base 15 + __asan_default_options@Base 15 + __asan_default_suppressions@Base 15 + __asan_describe_address@Base 15 + __asan_exp_load16@Base 15 + __asan_exp_load1@Base 15 + __asan_exp_load2@Base 15 + __asan_exp_load4@Base 15 + __asan_exp_load8@Base 15 + __asan_exp_loadN@Base 15 + __asan_exp_store16@Base 15 + __asan_exp_store1@Base 15 + __asan_exp_store2@Base 15 + __asan_exp_store4@Base 15 + __asan_exp_store8@Base 15 + __asan_exp_storeN@Base 15 + __asan_get_alloc_stack@Base 15 + __asan_get_current_fake_stack@Base 15 + __asan_get_free_stack@Base 15 + __asan_get_report_access_size@Base 15 + __asan_get_report_access_type@Base 15 + __asan_get_report_address@Base 15 + __asan_get_report_bp@Base 15 + __asan_get_report_description@Base 15 + __asan_get_report_pc@Base 15 + __asan_get_report_sp@Base 15 + __asan_get_shadow_mapping@Base 15 + __asan_handle_no_return@Base 15 + __asan_handle_vfork@Base 15 + __asan_init@Base 15 + __asan_internal_memcmp@Base 15 + __asan_internal_memcpy@Base 15 + __asan_internal_memset@Base 15 + __asan_internal_strcmp@Base 15 + __asan_internal_strlen@Base 15 + __asan_internal_strncmp@Base 15 + __asan_internal_strnlen@Base 15 + __asan_is_gnu_v3_mangled_ctor@Base 15 + __asan_is_gnu_v3_mangled_dtor@Base 15 + __asan_java_demangle_v3@Base 15 + __asan_java_demangle_v3_callback@Base 15 + __asan_load16@Base 15 + __asan_load16_noabort@Base 15 + __asan_load1@Base 15 + __asan_load1_noabort@Base 15 + __asan_load2@Base 15 + __asan_load2_noabort@Base 15 + __asan_load4@Base 15 + __asan_load4_noabort@Base 15 + __asan_load8@Base 15 + __asan_load8_noabort@Base 15 + __asan_loadN@Base 15 + __asan_loadN_noabort@Base 15 + __asan_load_cxx_array_cookie@Base 15 + __asan_locate_address@Base 15 + __asan_memcpy@Base 15 + __asan_memmove@Base 15 + __asan_memset@Base 15 + __asan_on_error@Base 15 + __asan_option_detect_stack_use_after_return@Base 15 + __asan_poison_cxx_array_cookie@Base 15 + __asan_poison_intra_object_redzone@Base 15 + __asan_poison_memory_region@Base 15 + __asan_poison_stack_memory@Base 15 + __asan_print_accumulated_stats@Base 15 + __asan_region_is_poisoned@Base 15 + __asan_register_elf_globals@Base 15 + __asan_register_globals@Base 15 + __asan_register_image_globals@Base 15 + __asan_report_error@Base 15 + __asan_report_exp_load16@Base 15 + __asan_report_exp_load1@Base 15 + __asan_report_exp_load2@Base 15 + __asan_report_exp_load4@Base 15 + __asan_report_exp_load8@Base 15 + __asan_report_exp_load_n@Base 15 + __asan_report_exp_store16@Base 15 + __asan_report_exp_store1@Base 15 + __asan_report_exp_store2@Base 15 + __asan_report_exp_store4@Base 15 + __asan_report_exp_store8@Base 15 + __asan_report_exp_store_n@Base 15 + __asan_report_load16@Base 15 + __asan_report_load16_noabort@Base 15 + __asan_report_load1@Base 15 + __asan_report_load1_noabort@Base 15 + __asan_report_load2@Base 15 + __asan_report_load2_noabort@Base 15 + __asan_report_load4@Base 15 + __asan_report_load4_noabort@Base 15 + __asan_report_load8@Base 15 + __asan_report_load8_noabort@Base 15 + __asan_report_load_n@Base 15 + __asan_report_load_n_noabort@Base 15 + __asan_report_present@Base 15 + __asan_report_store16@Base 15 + __asan_report_store16_noabort@Base 15 + __asan_report_store1@Base 15 + __asan_report_store1_noabort@Base 15 + __asan_report_store2@Base 15 + __asan_report_store2_noabort@Base 15 + __asan_report_store4@Base 15 + __asan_report_store4_noabort@Base 15 + __asan_report_store8@Base 15 + __asan_report_store8_noabort@Base 15 + __asan_report_store_n@Base 15 + __asan_report_store_n_noabort@Base 15 + __asan_rt_version@Base 15 + __asan_set_death_callback@Base 15 + __asan_set_error_report_callback@Base 15 + __asan_set_shadow_00@Base 15 + __asan_set_shadow_01@Base 15 + __asan_set_shadow_02@Base 15 + __asan_set_shadow_03@Base 15 + __asan_set_shadow_04@Base 15 + __asan_set_shadow_05@Base 15 + __asan_set_shadow_06@Base 15 + __asan_set_shadow_07@Base 15 + __asan_set_shadow_f1@Base 15 + __asan_set_shadow_f2@Base 15 + __asan_set_shadow_f3@Base 15 + __asan_set_shadow_f5@Base 15 + __asan_set_shadow_f8@Base 15 + __asan_shadow_memory_dynamic_address@Base 15 + __asan_stack_free_0@Base 15 + __asan_stack_free_10@Base 15 + __asan_stack_free_1@Base 15 + __asan_stack_free_2@Base 15 + __asan_stack_free_3@Base 15 + __asan_stack_free_4@Base 15 + __asan_stack_free_5@Base 15 + __asan_stack_free_6@Base 15 + __asan_stack_free_7@Base 15 + __asan_stack_free_8@Base 15 + __asan_stack_free_9@Base 15 + __asan_stack_malloc_0@Base 15 + __asan_stack_malloc_10@Base 15 + __asan_stack_malloc_1@Base 15 + __asan_stack_malloc_2@Base 15 + __asan_stack_malloc_3@Base 15 + __asan_stack_malloc_4@Base 15 + __asan_stack_malloc_5@Base 15 + __asan_stack_malloc_6@Base 15 + __asan_stack_malloc_7@Base 15 + __asan_stack_malloc_8@Base 15 + __asan_stack_malloc_9@Base 15 + __asan_stack_malloc_always_0@Base 15 + __asan_stack_malloc_always_10@Base 15 + __asan_stack_malloc_always_1@Base 15 + __asan_stack_malloc_always_2@Base 15 + __asan_stack_malloc_always_3@Base 15 + __asan_stack_malloc_always_4@Base 15 + __asan_stack_malloc_always_5@Base 15 + __asan_stack_malloc_always_6@Base 15 + __asan_stack_malloc_always_7@Base 15 + __asan_stack_malloc_always_8@Base 15 + __asan_stack_malloc_always_9@Base 15 + __asan_store16@Base 15 + __asan_store16_noabort@Base 15 + __asan_store1@Base 15 + __asan_store1_noabort@Base 15 + __asan_store2@Base 15 + __asan_store2_noabort@Base 15 + __asan_store4@Base 15 + __asan_store4_noabort@Base 15 + __asan_store8@Base 15 + __asan_store8_noabort@Base 15 + __asan_storeN@Base 15 + __asan_storeN_noabort@Base 15 + __asan_test_only_reported_buggy_pointer@Base 15 + __asan_unpoison_intra_object_redzone@Base 15 + __asan_unpoison_memory_region@Base 15 + __asan_unpoison_stack_memory@Base 15 + __asan_unregister_elf_globals@Base 15 + __asan_unregister_globals@Base 15 + __asan_unregister_image_globals@Base 15 + __asan_update_allocation_context@Base 15 + __asan_version_mismatch_check_v8@Base 15 + __b64_ntop@Base 15 + __b64_pton@Base 15 + __bzero@Base 15 + __cxa_atexit@Base 15 + __cxa_throw@Base 15 + __fprintf_chk@Base 15 + __getdelim@Base 15 + __interceptor__Unwind_RaiseException@Base 15 + (arch=armhf)__interceptor___aeabi_memclr4@Base 15 + (arch=armhf)__interceptor___aeabi_memclr8@Base 15 + (arch=armhf)__interceptor___aeabi_memclr@Base 15 + (arch=armhf)__interceptor___aeabi_memcpy4@Base 15 + (arch=armhf)__interceptor___aeabi_memcpy8@Base 15 + (arch=armhf)__interceptor___aeabi_memcpy@Base 15 + (arch=armhf)__interceptor___aeabi_memmove4@Base 15 + (arch=armhf)__interceptor___aeabi_memmove8@Base 15 + (arch=armhf)__interceptor___aeabi_memmove@Base 15 + (arch=armhf)__interceptor___aeabi_memset4@Base 15 + (arch=armhf)__interceptor___aeabi_memset8@Base 15 + (arch=armhf)__interceptor___aeabi_memset@Base 15 + __interceptor___b64_ntop@Base 15 + __interceptor___b64_pton@Base 15 + __interceptor___bzero@Base 15 + __interceptor___cxa_atexit@Base 15 + __interceptor___cxa_throw@Base 15 + __interceptor___fprintf_chk@Base 15 + __interceptor___getdelim@Base 15 + __interceptor___isoc23_fscanf@Base 15 + __interceptor___isoc23_scanf@Base 15 + __interceptor___isoc23_sscanf@Base 15 + __interceptor___isoc23_strtoimax@Base 15 + __interceptor___isoc23_strtol@Base 15 + __interceptor___isoc23_strtoll@Base 15 + __interceptor___isoc23_strtoumax@Base 15 + __interceptor___isoc23_vfscanf@Base 15 + __interceptor___isoc23_vscanf@Base 15 + __interceptor___isoc23_vsscanf@Base 15 + __interceptor___isoc99_fprintf@Base 15 + __interceptor___isoc99_fscanf@Base 15 + __interceptor___isoc99_printf@Base 15 + __interceptor___isoc99_scanf@Base 15 + __interceptor___isoc99_snprintf@Base 15 + __interceptor___isoc99_sprintf@Base 15 + __interceptor___isoc99_sscanf@Base 15 + __interceptor___isoc99_vfprintf@Base 15 + __interceptor___isoc99_vfscanf@Base 15 + __interceptor___isoc99_vprintf@Base 15 + __interceptor___isoc99_vscanf@Base 15 + __interceptor___isoc99_vsnprintf@Base 15 + __interceptor___isoc99_vsprintf@Base 15 + __interceptor___isoc99_vsscanf@Base 15 + __interceptor___libc_memalign@Base 15 + __interceptor___longjmp_chk@Base 15 + __interceptor___lxstat64@Base 15 + __interceptor___lxstat@Base 15 + __interceptor___overflow@Base 15 + __interceptor___snprintf_chk@Base 15 + __interceptor___sprintf_chk@Base 15 + __interceptor___strdup@Base 15 + __interceptor___strndup@Base 15 + __interceptor___strxfrm_l@Base 15 + (arch=!s390x)__interceptor___tls_get_addr@Base 15 + (arch=s390x)__interceptor___tls_get_addr_internal@Base 15 + (arch=powerpc ppc64 ppc64el)__interceptor___tls_get_addr_opt@Base 15 + (arch=s390x)__interceptor___tls_get_offset@Base 15 + __interceptor___uflow@Base 15 + __interceptor___underflow@Base 15 + __interceptor___vsnprintf_chk@Base 15 + __interceptor___vsprintf_chk@Base 15 + __interceptor___wcsxfrm_l@Base 15 + __interceptor___woverflow@Base 15 + __interceptor___wuflow@Base 15 + __interceptor___wunderflow@Base 15 + __interceptor___xpg_strerror_r@Base 15 + __interceptor___xstat64@Base 15 + __interceptor___xstat@Base 15 + __interceptor__exit@Base 15 + __interceptor__longjmp@Base 15 + __interceptor__obstack_begin@Base 15 + __interceptor__obstack_begin_1@Base 15 + __interceptor__obstack_newchunk@Base 15 + __interceptor_accept4@Base 15 + __interceptor_accept@Base 15 + __interceptor_aligned_alloc@Base 15 + __interceptor_argp_parse@Base 15 + __interceptor_asctime@Base 15 + __interceptor_asctime_r@Base 15 + __interceptor_asprintf@Base 15 + __interceptor_atoi@Base 15 + __interceptor_atol@Base 15 + __interceptor_atoll@Base 15 + __interceptor_backtrace@Base 15 + __interceptor_backtrace_symbols@Base 15 + __interceptor_bcmp@Base 15 + __interceptor_bsearch@Base 15 + __interceptor_bzero@Base 15 + __interceptor_calloc@Base 15 + __interceptor_canonicalize_file_name@Base 15 + __interceptor_capget@Base 15 + __interceptor_capset@Base 15 + (arch=!riscv64)__interceptor_cfree@Base 15 + __interceptor_clock_getcpuclockid@Base 15 + __interceptor_clock_getres@Base 15 + __interceptor_clock_gettime@Base 15 + __interceptor_clock_settime@Base 15 + __interceptor_confstr@Base 15 + __interceptor_ctermid@Base 15 + __interceptor_ctime@Base 15 + __interceptor_ctime_r@Base 15 + __interceptor_dlclose@Base 15 + __interceptor_dlopen@Base 15 + __interceptor_dn_comp@Base 15 + __interceptor_dn_expand@Base 15 + __interceptor_drand48_r@Base 15 + __interceptor_endgrent@Base 15 + __interceptor_endpwent@Base 15 + __interceptor_ether_aton@Base 15 + __interceptor_ether_aton_r@Base 15 + __interceptor_ether_hostton@Base 15 + __interceptor_ether_line@Base 15 + __interceptor_ether_ntoa@Base 15 + __interceptor_ether_ntoa_r@Base 15 + __interceptor_ether_ntohost@Base 15 + __interceptor_eventfd_read@Base 15 + __interceptor_eventfd_write@Base 15 + __interceptor_fclose@Base 15 + __interceptor_fdopen@Base 15 + __interceptor_fflush@Base 15 + __interceptor_fgetgrent@Base 15 + __interceptor_fgetgrent_r@Base 15 + __interceptor_fgetpwent@Base 15 + __interceptor_fgetpwent_r@Base 15 + __interceptor_fgets@Base 15 + __interceptor_fgetxattr@Base 15 + __interceptor_flistxattr@Base 15 + __interceptor_fmemopen@Base 15 + __interceptor_fopen64@Base 15 + __interceptor_fopen@Base 15 + __interceptor_fopencookie@Base 15 + __interceptor_fprintf@Base 15 + __interceptor_fputs@Base 15 + __interceptor_fread@Base 15 + __interceptor_free@Base 15 + __interceptor_freopen64@Base 15 + __interceptor_freopen@Base 15 + __interceptor_frexp@Base 15 + __interceptor_frexpf@Base 15 + __interceptor_frexpl@Base 15 + __interceptor_fscanf@Base 15 + __interceptor_fstatfs64@Base 15 + __interceptor_fstatfs@Base 15 + __interceptor_fstatvfs64@Base 15 + __interceptor_fstatvfs@Base 15 + __interceptor_ftime@Base 15 + __interceptor_fwrite@Base 15 + __interceptor_get_current_dir_name@Base 15 + __interceptor_getaddrinfo@Base 15 + __interceptor_getcwd@Base 15 + __interceptor_getdelim@Base 15 + __interceptor_getentropy@Base 15 + __interceptor_getgrent@Base 15 + __interceptor_getgrent_r@Base 15 + __interceptor_getgrgid@Base 15 + __interceptor_getgrgid_r@Base 15 + __interceptor_getgrnam@Base 15 + __interceptor_getgrnam_r@Base 15 + __interceptor_getgrouplist@Base 15 + __interceptor_getgroups@Base 15 + __interceptor_gethostbyaddr@Base 15 + __interceptor_gethostbyaddr_r@Base 15 + __interceptor_gethostbyname2@Base 15 + __interceptor_gethostbyname2_r@Base 15 + __interceptor_gethostbyname@Base 15 + __interceptor_gethostbyname_r@Base 15 + __interceptor_gethostent@Base 15 + __interceptor_gethostent_r@Base 15 + __interceptor_getifaddrs@Base 15 + __interceptor_getitimer@Base 15 + __interceptor_getline@Base 15 + __interceptor_getloadavg@Base 15 + __interceptor_getmntent@Base 15 + __interceptor_getmntent_r@Base 15 + __interceptor_getnameinfo@Base 15 + __interceptor_getnetbyaddr@Base 15 + __interceptor_getnetbyname@Base 15 + __interceptor_getnetent@Base 15 + __interceptor_getpass@Base 15 + __interceptor_getpeername@Base 15 + __interceptor_getprotobyname@Base 15 + __interceptor_getprotobyname_r@Base 15 + __interceptor_getprotobynumber@Base 15 + __interceptor_getprotobynumber_r@Base 15 + __interceptor_getprotoent@Base 15 + __interceptor_getprotoent_r@Base 15 + __interceptor_getpwent@Base 15 + __interceptor_getpwent_r@Base 15 + __interceptor_getpwnam@Base 15 + __interceptor_getpwnam_r@Base 15 + __interceptor_getpwuid@Base 15 + __interceptor_getpwuid_r@Base 15 + __interceptor_getrandom@Base 15 + __interceptor_getresgid@Base 15 + __interceptor_getresuid@Base 15 + __interceptor_getsockname@Base 15 + __interceptor_getsockopt@Base 15 + __interceptor_getusershell@Base 15 + __interceptor_getutent@Base 15 + __interceptor_getutid@Base 15 + __interceptor_getutline@Base 15 + __interceptor_getutxent@Base 15 + __interceptor_getutxid@Base 15 + __interceptor_getutxline@Base 15 + __interceptor_getxattr@Base 15 + __interceptor_glob64@Base 15 + __interceptor_glob@Base 15 + __interceptor_gmtime@Base 15 + __interceptor_gmtime_r@Base 15 + __interceptor_iconv@Base 15 + __interceptor_if_indextoname@Base 15 + __interceptor_if_nametoindex@Base 15 + __interceptor_index@Base 15 + __interceptor_inet_aton@Base 15 + __interceptor_inet_ntop@Base 15 + __interceptor_inet_pton@Base 15 + __interceptor_initgroups@Base 15 + __interceptor_ioctl@Base 15 + __interceptor_lgamma@Base 15 + __interceptor_lgamma_r@Base 15 + __interceptor_lgammaf@Base 15 + __interceptor_lgammaf_r@Base 15 + __interceptor_lgammal@Base 15 + __interceptor_lgammal_r@Base 15 + __interceptor_lgetxattr@Base 15 + __interceptor_listxattr@Base 15 + __interceptor_llistxattr@Base 15 + __interceptor_localtime@Base 15 + __interceptor_localtime_r@Base 15 + __interceptor_longjmp@Base 15 + __interceptor_lrand48_r@Base 15 + __interceptor_lstat64@Base 15 + __interceptor_lstat@Base 15 + __interceptor_makecontext@Base 15 + __interceptor_mallinfo@Base 15 + __interceptor_malloc@Base 15 + __interceptor_malloc_stats@Base 15 + __interceptor_malloc_usable_size@Base 15 + __interceptor_mallopt@Base 15 + __interceptor_mbsnrtowcs@Base 15 + __interceptor_mbsrtowcs@Base 15 + __interceptor_mbstowcs@Base 15 + __interceptor_mcheck@Base 15 + __interceptor_mcheck_pedantic@Base 15 + __interceptor_memalign@Base 15 + __interceptor_memchr@Base 15 + __interceptor_memcmp@Base 15 + __interceptor_memcpy@Base 15 + __interceptor_memmem@Base 15 + __interceptor_memmove@Base 15 + __interceptor_memrchr@Base 15 + __interceptor_memset@Base 15 + __interceptor_mincore@Base 15 + __interceptor_mktime@Base 15 + __interceptor_mlock@Base 15 + __interceptor_mlockall@Base 15 + __interceptor_mmap64@Base 15 + __interceptor_mmap@Base 15 + __interceptor_modf@Base 15 + __interceptor_modff@Base 15 + __interceptor_modfl@Base 15 + __interceptor_mprobe@Base 15 + __interceptor_mprotect@Base 15 + __interceptor_msgrcv@Base 15 + __interceptor_msgsnd@Base 15 + __interceptor_munlock@Base 15 + __interceptor_munlockall@Base 15 + __interceptor_munmap@Base 15 + __interceptor_name_to_handle_at@Base 15 + __interceptor_open_by_handle_at@Base 15 + __interceptor_open_memstream@Base 15 + __interceptor_open_wmemstream@Base 15 + __interceptor_opendir@Base 15 + __interceptor_pclose@Base 15 + __interceptor_poll@Base 15 + __interceptor_popen@Base 15 + __interceptor_posix_memalign@Base 15 + __interceptor_posix_spawn@Base 15 + __interceptor_posix_spawnp@Base 15 + __interceptor_ppoll@Base 15 + __interceptor_prctl@Base 15 + __interceptor_pread64@Base 15 + __interceptor_pread@Base 15 + __interceptor_preadv2@Base 15 + __interceptor_preadv64@Base 15 + __interceptor_preadv@Base 15 + __interceptor_printf@Base 15 + __interceptor_process_vm_readv@Base 15 + __interceptor_process_vm_writev@Base 15 + __interceptor_pthread_attr_getaffinity_np@Base 15 + __interceptor_pthread_attr_getdetachstate@Base 15 + __interceptor_pthread_attr_getguardsize@Base 15 + __interceptor_pthread_attr_getinheritsched@Base 15 + __interceptor_pthread_attr_getschedparam@Base 15 + __interceptor_pthread_attr_getschedpolicy@Base 15 + __interceptor_pthread_attr_getscope@Base 15 + __interceptor_pthread_attr_getstack@Base 15 + __interceptor_pthread_attr_getstacksize@Base 15 + __interceptor_pthread_barrierattr_getpshared@Base 15 + __interceptor_pthread_condattr_getclock@Base 15 + __interceptor_pthread_condattr_getpshared@Base 15 + __interceptor_pthread_create@Base 15 + __interceptor_pthread_detach@Base 15 + __interceptor_pthread_exit@Base 15 + __interceptor_pthread_getaffinity_np@Base 15 + __interceptor_pthread_getcpuclockid@Base 15 + __interceptor_pthread_getname_np@Base 15 + __interceptor_pthread_getschedparam@Base 15 + __interceptor_pthread_join@Base 15 + __interceptor_pthread_mutexattr_getprioceiling@Base 15 + __interceptor_pthread_mutexattr_getprotocol@Base 15 + __interceptor_pthread_mutexattr_getpshared@Base 15 + __interceptor_pthread_mutexattr_getrobust@Base 15 + __interceptor_pthread_mutexattr_getrobust_np@Base 15 + __interceptor_pthread_mutexattr_gettype@Base 15 + __interceptor_pthread_rwlockattr_getkind_np@Base 15 + __interceptor_pthread_rwlockattr_getpshared@Base 15 + __interceptor_pthread_setcancelstate@Base 15 + __interceptor_pthread_setcanceltype@Base 15 + __interceptor_pthread_setname_np@Base 15 + __interceptor_pthread_sigmask@Base 15 + __interceptor_pthread_timedjoin_np@Base 15 + __interceptor_pthread_tryjoin_np@Base 15 + (arch=!powerpc)__interceptor_ptrace@Base 15 + __interceptor_ptsname@Base 15 + __interceptor_ptsname_r@Base 15 + __interceptor_puts@Base 15 + __interceptor_pututxline@Base 15 + __interceptor_pvalloc@Base 15 + __interceptor_pwrite64@Base 15 + __interceptor_pwrite@Base 15 + __interceptor_pwritev2@Base 15 + __interceptor_pwritev64@Base 15 + __interceptor_pwritev@Base 15 + __interceptor_qsort@Base 15 + __interceptor_qsort_r@Base 15 + __interceptor_rand_r@Base 15 + __interceptor_random_r@Base 15 + __interceptor_read@Base 15 + __interceptor_readdir64@Base 15 + __interceptor_readdir64_r@Base 15 + __interceptor_readdir@Base 15 + __interceptor_readdir_r@Base 15 + __interceptor_readlink@Base 15 + __interceptor_readlinkat@Base 15 + __interceptor_readv@Base 15 + __interceptor_realloc@Base 15 + __interceptor_reallocarray@Base 15 + __interceptor_realpath@Base 15 + __interceptor_recv@Base 15 + __interceptor_recvfrom@Base 15 + __interceptor_recvmmsg@Base 15 + __interceptor_recvmsg@Base 15 + __interceptor_regcomp@Base 15 + __interceptor_regerror@Base 15 + __interceptor_regexec@Base 15 + __interceptor_regfree@Base 15 + __interceptor_remquo@Base 15 + __interceptor_remquof@Base 15 + __interceptor_remquol@Base 15 + __interceptor_scandir64@Base 15 + __interceptor_scandir@Base 15 + __interceptor_scanf@Base 15 + __interceptor_sched_getaffinity@Base 15 + __interceptor_sched_getparam@Base 15 + __interceptor_sem_destroy@Base 15 + __interceptor_sem_getvalue@Base 15 + __interceptor_sem_init@Base 15 + __interceptor_sem_open@Base 15 + __interceptor_sem_post@Base 15 + __interceptor_sem_timedwait@Base 15 + __interceptor_sem_trywait@Base 15 + __interceptor_sem_unlink@Base 15 + __interceptor_sem_wait@Base 15 + __interceptor_send@Base 15 + __interceptor_sendmmsg@Base 15 + __interceptor_sendmsg@Base 15 + __interceptor_sendto@Base 15 + __interceptor_setbuf@Base 15 + __interceptor_setbuffer@Base 15 + __interceptor_setgrent@Base 15 + __interceptor_setitimer@Base 15 + __interceptor_setlinebuf@Base 15 + __interceptor_setlocale@Base 15 + __interceptor_setpwent@Base 15 + __interceptor_setvbuf@Base 15 + (arch=!armhf !i386 !powerpc !x32)__interceptor_shmctl@Base 15 + __interceptor_sigaction@Base 15 + __interceptor_sigaltstack@Base 15 + __interceptor_sigandset@Base 15 + __interceptor_sigemptyset@Base 15 + __interceptor_sigfillset@Base 15 + __interceptor_siglongjmp@Base 15 + __interceptor_signal@Base 15 + __interceptor_sigorset@Base 15 + __interceptor_sigpending@Base 15 + __interceptor_sigprocmask@Base 15 + __interceptor_sigtimedwait@Base 15 + __interceptor_sigwait@Base 15 + __interceptor_sigwaitinfo@Base 15 + __interceptor_sincos@Base 15 + __interceptor_sincosf@Base 15 + __interceptor_sincosl@Base 15 + __interceptor_snprintf@Base 15 + __interceptor_sprintf@Base 15 + __interceptor_sscanf@Base 15 + __interceptor_stat64@Base 15 + __interceptor_stat@Base 15 + __interceptor_statfs64@Base 15 + __interceptor_statfs@Base 15 + __interceptor_statvfs64@Base 15 + __interceptor_statvfs@Base 15 + __interceptor_strcasecmp@Base 15 + __interceptor_strcasestr@Base 15 + __interceptor_strcat@Base 15 + __interceptor_strchr@Base 15 + __interceptor_strchrnul@Base 15 + __interceptor_strcmp@Base 15 + __interceptor_strcpy@Base 15 + __interceptor_strcspn@Base 15 + __interceptor_strdup@Base 15 + __interceptor_strerror@Base 15 + __interceptor_strerror_r@Base 15 + __interceptor_strlen@Base 15 + __interceptor_strncasecmp@Base 15 + __interceptor_strncat@Base 15 + __interceptor_strncmp@Base 15 + __interceptor_strncpy@Base 15 + __interceptor_strndup@Base 15 + __interceptor_strnlen@Base 15 + __interceptor_strpbrk@Base 15 + __interceptor_strptime@Base 15 + __interceptor_strrchr@Base 15 + __interceptor_strspn@Base 15 + __interceptor_strstr@Base 15 + __interceptor_strtoimax@Base 15 + __interceptor_strtok@Base 15 + __interceptor_strtol@Base 15 + __interceptor_strtoll@Base 15 + __interceptor_strtoumax@Base 15 + __interceptor_strxfrm@Base 15 + __interceptor_strxfrm_l@Base 15 + __interceptor_swapcontext@Base 15 + __interceptor_sysinfo@Base 15 + __interceptor_tcgetattr@Base 15 + __interceptor_tempnam@Base 15 + __interceptor_textdomain@Base 15 + __interceptor_time@Base 15 + __interceptor_timerfd_gettime@Base 15 + __interceptor_timerfd_settime@Base 15 + __interceptor_times@Base 15 + __interceptor_tmpnam@Base 15 + __interceptor_tmpnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__Unwind_RaiseException@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memclr4@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memclr8@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memclr@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memcpy4@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memcpy8@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memcpy@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memmove4@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memmove8@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memmove@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memset4@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memset8@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___b64_ntop@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___b64_pton@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___bzero@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___cxa_atexit@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___cxa_throw@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___fprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___getdelim@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtoimax@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtol@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtoll@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtoumax@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_fprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_printf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_snprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_sprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vfprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vsnprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vsprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___libc_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___longjmp_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___lxstat64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___lxstat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___overflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___snprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___sprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___strdup@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___strndup@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___strxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___tls_get_addr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___uflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___underflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___vsnprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___vsprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___wcsxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___woverflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___wuflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___wunderflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___xpg_strerror_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___xstat64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___xstat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__exit@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__longjmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__obstack_begin@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__obstack_begin_1@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__obstack_newchunk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_accept4@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_accept@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_aligned_alloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_argp_parse@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_asctime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_asctime_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_asprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_atoi@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_atol@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_atoll@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_backtrace@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_backtrace_symbols@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_bcmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_bsearch@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_bzero@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_calloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_canonicalize_file_name@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_capget@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_capset@Base 15 + (arch=amd64 armhf x32)__interceptor_trampoline_cfree@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_getcpuclockid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_getres@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_gettime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_settime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_confstr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ctermid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ctime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ctime_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dlclose@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dlopen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dn_comp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dn_expand@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_drand48_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_endgrent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_endpwent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_aton@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_aton_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_hostton@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_line@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_ntoa@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_ntoa_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_ntohost@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_eventfd_read@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_eventfd_write@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fclose@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fdopen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fflush@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetgrent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetgrent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetpwent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetpwent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgets@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_flistxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fmemopen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fopen64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fopen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fopencookie@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fputs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fread@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_free@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_freopen64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_freopen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_frexp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_frexpf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_frexpl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatfs64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatfs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatvfs64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatvfs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ftime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fwrite@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_get_current_dir_name@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getaddrinfo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getcwd@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getdelim@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getentropy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrgid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrgid_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrnam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrouplist@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgroups@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyaddr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyaddr_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname2@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname2_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getifaddrs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getitimer@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getline@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getloadavg@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getmntent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getmntent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnameinfo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnetbyaddr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnetbyname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnetent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpass@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpeername@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobyname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobynumber@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobynumber_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotoent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotoent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwnam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwuid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwuid_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getrandom@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getresgid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getresuid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getsockname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getsockopt@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getusershell@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutline@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutxent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutxid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutxline@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_glob64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_glob@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gmtime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gmtime_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_iconv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_if_indextoname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_if_nametoindex@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_index@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_inet_aton@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_inet_ntop@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_inet_pton@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_initgroups@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ioctl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgamma@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgamma_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammaf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammaf_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammal@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammal_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgetxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_listxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_llistxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_localtime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_localtime_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_longjmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lrand48_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lstat64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lstat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_makecontext@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mallinfo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_malloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_malloc_stats@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_malloc_usable_size@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mallopt@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mbsnrtowcs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mbsrtowcs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mbstowcs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mcheck@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mcheck_pedantic@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memchr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memcmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memcpy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memmem@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memmove@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memrchr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mincore@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mktime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mlock@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mlockall@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mmap64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mmap@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_modf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_modff@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_modfl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mprobe@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mprotect@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_msgrcv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_msgsnd@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_munlock@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_munlockall@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_munmap@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_name_to_handle_at@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_open_by_handle_at@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_open_memstream@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_open_wmemstream@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_opendir@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pclose@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_poll@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_popen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_posix_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_posix_spawn@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_posix_spawnp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ppoll@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_prctl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pread64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pread@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_preadv2@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_preadv64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_preadv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_printf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_process_vm_readv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_process_vm_writev@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getdetachstate@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getguardsize@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getinheritsched@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getschedparam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getscope@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getstack@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getstacksize@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_condattr_getclock@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_condattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_create@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_detach@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_exit@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getaffinity_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getcpuclockid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getname_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getschedparam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_join@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_gettype@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_setcancelstate@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_setcanceltype@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_setname_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_sigmask@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_timedjoin_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_tryjoin_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ptrace@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ptsname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ptsname_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_puts@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pututxline@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pvalloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwrite64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwrite@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwritev2@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwritev64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwritev@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_qsort@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_qsort_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_rand_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_random_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_read@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir64_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readlink@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readlinkat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_realloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_reallocarray@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_realpath@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recvfrom@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recvmmsg@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recvmsg@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regcomp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regerror@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regexec@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regfree@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_remquo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_remquof@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_remquol@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_scandir64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_scandir@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sched_getaffinity@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sched_getparam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_destroy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_getvalue@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_init@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_open@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_post@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_timedwait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_trywait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_unlink@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_wait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_send@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sendmmsg@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sendmsg@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sendto@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setbuf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setbuffer@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setgrent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setitimer@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setlinebuf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setlocale@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setpwent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setvbuf@Base 15 + (arch=amd64 riscv64)__interceptor_trampoline_shmctl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigaction@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigaltstack@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigandset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigemptyset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigfillset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_siglongjmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_signal@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigorset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigpending@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigprocmask@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigtimedwait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigwait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigwaitinfo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sincos@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sincosf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sincosl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_snprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_stat64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_stat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statfs64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statfs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statvfs64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statvfs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcasecmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcasestr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strchr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strchrnul@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcpy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcspn@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strdup@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strerror@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strerror_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strlen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncasecmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncpy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strndup@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strnlen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strpbrk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strptime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strrchr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strspn@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strstr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtoimax@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtok@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtol@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtoll@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtoumax@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strxfrm@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_swapcontext@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sysinfo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tcgetattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tempnam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_textdomain@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_time@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_timerfd_gettime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_timerfd_settime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_times@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tmpnam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tmpnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tsearch@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ttyname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ttyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_uname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_valloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vasprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vfork@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vfprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vsnprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vsprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wait3@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wait4@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_waitid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_waitpid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcrtomb@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcscat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsdup@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcslen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsncat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsnlen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsnrtombs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsrtombs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcstombs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsxfrm@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wctomb@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wordexp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_write@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_writev@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_bool@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_bytes@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_char@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_destroy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_double@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_enum@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_float@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_hyper@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int16_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int32_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int64_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int8_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_long@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_longlong_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_quad_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_short@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_string@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_char@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_hyper@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_int@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_long@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_longlong_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_quad_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_short@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint16_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint32_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint64_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint8_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdrmem_create@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdrrec_create@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdrstdio_create@Base 15 + __interceptor_tsearch@Base 15 + __interceptor_ttyname@Base 15 + __interceptor_ttyname_r@Base 15 + __interceptor_uname@Base 15 + __interceptor_valloc@Base 15 + __interceptor_vasprintf@Base 15 + (arch=amd64 armhf i386 riscv64 x32)__interceptor_vfork@Base 15 + __interceptor_vfprintf@Base 15 + __interceptor_vfscanf@Base 15 + __interceptor_vprintf@Base 15 + __interceptor_vscanf@Base 15 + __interceptor_vsnprintf@Base 15 + __interceptor_vsprintf@Base 15 + __interceptor_vsscanf@Base 15 + __interceptor_wait3@Base 15 + __interceptor_wait4@Base 15 + __interceptor_wait@Base 15 + __interceptor_waitid@Base 15 + __interceptor_waitpid@Base 15 + __interceptor_wcrtomb@Base 15 + __interceptor_wcscat@Base 15 + __interceptor_wcsdup@Base 15 + __interceptor_wcslen@Base 15 + __interceptor_wcsncat@Base 15 + __interceptor_wcsnlen@Base 15 + __interceptor_wcsnrtombs@Base 15 + __interceptor_wcsrtombs@Base 15 + __interceptor_wcstombs@Base 15 + __interceptor_wcsxfrm@Base 15 + __interceptor_wcsxfrm_l@Base 15 + __interceptor_wctomb@Base 15 + __interceptor_wordexp@Base 15 + __interceptor_write@Base 15 + __interceptor_writev@Base 15 + __interceptor_xdr_bool@Base 15 + __interceptor_xdr_bytes@Base 15 + __interceptor_xdr_char@Base 15 + __interceptor_xdr_destroy@Base 15 + __interceptor_xdr_double@Base 15 + __interceptor_xdr_enum@Base 15 + __interceptor_xdr_float@Base 15 + __interceptor_xdr_hyper@Base 15 + __interceptor_xdr_int16_t@Base 15 + __interceptor_xdr_int32_t@Base 15 + __interceptor_xdr_int64_t@Base 15 + __interceptor_xdr_int8_t@Base 15 + __interceptor_xdr_int@Base 15 + __interceptor_xdr_long@Base 15 + __interceptor_xdr_longlong_t@Base 15 + __interceptor_xdr_quad_t@Base 15 + __interceptor_xdr_short@Base 15 + __interceptor_xdr_string@Base 15 + __interceptor_xdr_u_char@Base 15 + __interceptor_xdr_u_hyper@Base 15 + __interceptor_xdr_u_int@Base 15 + __interceptor_xdr_u_long@Base 15 + __interceptor_xdr_u_longlong_t@Base 15 + __interceptor_xdr_u_quad_t@Base 15 + __interceptor_xdr_u_short@Base 15 + __interceptor_xdr_uint16_t@Base 15 + __interceptor_xdr_uint32_t@Base 15 + __interceptor_xdr_uint64_t@Base 15 + __interceptor_xdr_uint8_t@Base 15 + __interceptor_xdrmem_create@Base 15 + __interceptor_xdrrec_create@Base 15 + __interceptor_xdrstdio_create@Base 15 + __isoc23_fscanf@Base 15 + __isoc23_scanf@Base 15 + __isoc23_sscanf@Base 15 + __isoc23_strtoimax@Base 15 + __isoc23_strtol@Base 15 + __isoc23_strtoll@Base 15 + __isoc23_strtoumax@Base 15 + __isoc23_vfscanf@Base 15 + __isoc23_vscanf@Base 15 + __isoc23_vsscanf@Base 15 + __isoc99_fprintf@Base 15 + __isoc99_fscanf@Base 15 + __isoc99_printf@Base 15 + __isoc99_scanf@Base 15 + __isoc99_snprintf@Base 15 + __isoc99_sprintf@Base 15 + __isoc99_sscanf@Base 15 + __isoc99_vfprintf@Base 15 + __isoc99_vfscanf@Base 15 + __isoc99_vprintf@Base 15 + __isoc99_vscanf@Base 15 + __isoc99_vsnprintf@Base 15 + __isoc99_vsprintf@Base 15 + __isoc99_vsscanf@Base 15 + __libc_memalign@Base 15 + __longjmp_chk@Base 15 + __lsan_default_options@Base 15 + __lsan_disable@Base 15 + __lsan_do_leak_check@Base 15 + __lsan_do_recoverable_leak_check@Base 15 + __lsan_enable@Base 15 + __lsan_ignore_object@Base 15 + __lsan_register_root_region@Base 15 + __lsan_unregister_root_region@Base 15 + __lxstat64@Base 15 + __lxstat@Base 15 + __overflow@Base 15 + __sancov_default_options@Base 15 + __sancov_lowest_stack@Base 15 + __sanitizer_acquire_crash_state@Base 15 + __sanitizer_annotate_contiguous_container@Base 15 + __sanitizer_annotate_double_ended_contiguous_container@Base 15 + __sanitizer_contiguous_container_find_bad_address@Base 15 + __sanitizer_copy_contiguous_container_annotations@Base 15 + __sanitizer_cov_8bit_counters_init@Base 15 + __sanitizer_cov_bool_flag_init@Base 15 + __sanitizer_cov_dump@Base 15 + __sanitizer_cov_load16@Base 15 + __sanitizer_cov_load1@Base 15 + __sanitizer_cov_load2@Base 15 + __sanitizer_cov_load4@Base 15 + __sanitizer_cov_load8@Base 15 + __sanitizer_cov_pcs_init@Base 15 + __sanitizer_cov_reset@Base 15 + __sanitizer_cov_store16@Base 15 + __sanitizer_cov_store1@Base 15 + __sanitizer_cov_store2@Base 15 + __sanitizer_cov_store4@Base 15 + __sanitizer_cov_store8@Base 15 + __sanitizer_cov_trace_cmp1@Base 15 + __sanitizer_cov_trace_cmp2@Base 15 + __sanitizer_cov_trace_cmp4@Base 15 + __sanitizer_cov_trace_cmp8@Base 15 + __sanitizer_cov_trace_cmp@Base 15 + __sanitizer_cov_trace_const_cmp1@Base 15 + __sanitizer_cov_trace_const_cmp2@Base 15 + __sanitizer_cov_trace_const_cmp4@Base 15 + __sanitizer_cov_trace_const_cmp8@Base 15 + __sanitizer_cov_trace_div4@Base 15 + __sanitizer_cov_trace_div8@Base 15 + __sanitizer_cov_trace_gep@Base 15 + __sanitizer_cov_trace_pc_guard@Base 15 + __sanitizer_cov_trace_pc_guard_init@Base 15 + __sanitizer_cov_trace_pc_indir@Base 15 + __sanitizer_cov_trace_switch@Base 15 + __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 + __sanitizer_dump_coverage@Base 15 + __sanitizer_dump_trace_pc_guard_coverage@Base 15 + __sanitizer_finish_switch_fiber@Base 15 + __sanitizer_free_hook@Base 15 + __sanitizer_get_allocated_begin@Base 15 + __sanitizer_get_allocated_size@Base 15 + __sanitizer_get_allocated_size_fast@Base 15 + __sanitizer_get_current_allocated_bytes@Base 15 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 15 + __sanitizer_get_free_bytes@Base 15 + __sanitizer_get_heap_size@Base 15 + __sanitizer_get_module_and_offset_for_pc@Base 15 + __sanitizer_get_ownership@Base 15 + __sanitizer_get_report_path@Base 15 + __sanitizer_get_unmapped_bytes@Base 15 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 15 + __sanitizer_internal_memcpy@Base 15 + __sanitizer_internal_memmove@Base 15 + __sanitizer_internal_memset@Base 15 + __sanitizer_malloc_hook@Base 15 + __sanitizer_on_print@Base 15 + __sanitizer_print_memory_profile@Base 15 + __sanitizer_print_stack_trace@Base 15 + __sanitizer_ptr_cmp@Base 15 + __sanitizer_ptr_sub@Base 15 + __sanitizer_purge_allocator@Base 15 + __sanitizer_report_error_summary@Base 15 + __sanitizer_sandbox_on_notify@Base 15 + __sanitizer_set_death_callback@Base 15 + __sanitizer_set_report_fd@Base 15 + __sanitizer_set_report_path@Base 15 + __sanitizer_start_switch_fiber@Base 15 + __sanitizer_symbolize_global@Base 15 + __sanitizer_symbolize_pc@Base 15 + __sanitizer_syscall_post_impl_accept4@Base 15 + __sanitizer_syscall_post_impl_accept@Base 15 + __sanitizer_syscall_post_impl_access@Base 15 + __sanitizer_syscall_post_impl_acct@Base 15 + __sanitizer_syscall_post_impl_add_key@Base 15 + __sanitizer_syscall_post_impl_adjtimex@Base 15 + __sanitizer_syscall_post_impl_alarm@Base 15 + __sanitizer_syscall_post_impl_bdflush@Base 15 + __sanitizer_syscall_post_impl_bind@Base 15 + __sanitizer_syscall_post_impl_brk@Base 15 + __sanitizer_syscall_post_impl_capget@Base 15 + __sanitizer_syscall_post_impl_capset@Base 15 + __sanitizer_syscall_post_impl_chdir@Base 15 + __sanitizer_syscall_post_impl_chmod@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_chown16@Base 15 + __sanitizer_syscall_post_impl_chown@Base 15 + __sanitizer_syscall_post_impl_chroot@Base 15 + __sanitizer_syscall_post_impl_clock_adjtime@Base 15 + __sanitizer_syscall_post_impl_clock_getres@Base 15 + __sanitizer_syscall_post_impl_clock_gettime@Base 15 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_post_impl_clock_settime@Base 15 + __sanitizer_syscall_post_impl_close@Base 15 + __sanitizer_syscall_post_impl_connect@Base 15 + __sanitizer_syscall_post_impl_creat@Base 15 + __sanitizer_syscall_post_impl_delete_module@Base 15 + __sanitizer_syscall_post_impl_dup2@Base 15 + __sanitizer_syscall_post_impl_dup3@Base 15 + __sanitizer_syscall_post_impl_dup@Base 15 + __sanitizer_syscall_post_impl_epoll_create1@Base 15 + __sanitizer_syscall_post_impl_epoll_create@Base 15 + __sanitizer_syscall_post_impl_epoll_ctl@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait@Base 15 + __sanitizer_syscall_post_impl_epoll_wait@Base 15 + __sanitizer_syscall_post_impl_eventfd2@Base 15 + __sanitizer_syscall_post_impl_eventfd@Base 15 + __sanitizer_syscall_post_impl_exit@Base 15 + __sanitizer_syscall_post_impl_exit_group@Base 15 + __sanitizer_syscall_post_impl_faccessat@Base 15 + __sanitizer_syscall_post_impl_fchdir@Base 15 + __sanitizer_syscall_post_impl_fchmod@Base 15 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_fchown16@Base 15 + __sanitizer_syscall_post_impl_fchown@Base 15 + __sanitizer_syscall_post_impl_fchownat@Base 15 + __sanitizer_syscall_post_impl_fcntl64@Base 15 + __sanitizer_syscall_post_impl_fcntl@Base 15 + __sanitizer_syscall_post_impl_fdatasync@Base 15 + __sanitizer_syscall_post_impl_fgetxattr@Base 15 + __sanitizer_syscall_post_impl_flistxattr@Base 15 + __sanitizer_syscall_post_impl_flock@Base 15 + __sanitizer_syscall_post_impl_fork@Base 15 + __sanitizer_syscall_post_impl_fremovexattr@Base 15 + __sanitizer_syscall_post_impl_fsetxattr@Base 15 + __sanitizer_syscall_post_impl_fstat64@Base 15 + __sanitizer_syscall_post_impl_fstat@Base 15 + __sanitizer_syscall_post_impl_fstatat64@Base 15 + __sanitizer_syscall_post_impl_fstatfs64@Base 15 + __sanitizer_syscall_post_impl_fstatfs@Base 15 + __sanitizer_syscall_post_impl_fsync@Base 15 + __sanitizer_syscall_post_impl_ftruncate@Base 15 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 15 + __sanitizer_syscall_post_impl_get_mempolicy@Base 15 + __sanitizer_syscall_post_impl_get_robust_list@Base 15 + __sanitizer_syscall_post_impl_getcpu@Base 15 + __sanitizer_syscall_post_impl_getcwd@Base 15 + __sanitizer_syscall_post_impl_getdents64@Base 15 + __sanitizer_syscall_post_impl_getdents@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getegid16@Base 15 + __sanitizer_syscall_post_impl_getegid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_geteuid16@Base 15 + __sanitizer_syscall_post_impl_geteuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getgid16@Base 15 + __sanitizer_syscall_post_impl_getgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getgroups16@Base 15 + __sanitizer_syscall_post_impl_getgroups@Base 15 + __sanitizer_syscall_post_impl_gethostname@Base 15 + __sanitizer_syscall_post_impl_getitimer@Base 15 + __sanitizer_syscall_post_impl_getpeername@Base 15 + __sanitizer_syscall_post_impl_getpgid@Base 15 + __sanitizer_syscall_post_impl_getpgrp@Base 15 + __sanitizer_syscall_post_impl_getpid@Base 15 + __sanitizer_syscall_post_impl_getppid@Base 15 + __sanitizer_syscall_post_impl_getpriority@Base 15 + __sanitizer_syscall_post_impl_getrandom@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getresgid16@Base 15 + __sanitizer_syscall_post_impl_getresgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getresuid16@Base 15 + __sanitizer_syscall_post_impl_getresuid@Base 15 + __sanitizer_syscall_post_impl_getrlimit@Base 15 + __sanitizer_syscall_post_impl_getrusage@Base 15 + __sanitizer_syscall_post_impl_getsid@Base 15 + __sanitizer_syscall_post_impl_getsockname@Base 15 + __sanitizer_syscall_post_impl_getsockopt@Base 15 + __sanitizer_syscall_post_impl_gettid@Base 15 + __sanitizer_syscall_post_impl_gettimeofday@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getuid16@Base 15 + __sanitizer_syscall_post_impl_getuid@Base 15 + __sanitizer_syscall_post_impl_getxattr@Base 15 + __sanitizer_syscall_post_impl_init_module@Base 15 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_post_impl_inotify_init1@Base 15 + __sanitizer_syscall_post_impl_inotify_init@Base 15 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_post_impl_io_cancel@Base 15 + __sanitizer_syscall_post_impl_io_destroy@Base 15 + __sanitizer_syscall_post_impl_io_getevents@Base 15 + __sanitizer_syscall_post_impl_io_setup@Base 15 + __sanitizer_syscall_post_impl_io_submit@Base 15 + __sanitizer_syscall_post_impl_ioctl@Base 15 + __sanitizer_syscall_post_impl_ioperm@Base 15 + __sanitizer_syscall_post_impl_ioprio_get@Base 15 + __sanitizer_syscall_post_impl_ioprio_set@Base 15 + __sanitizer_syscall_post_impl_ipc@Base 15 + __sanitizer_syscall_post_impl_kexec_load@Base 15 + __sanitizer_syscall_post_impl_keyctl@Base 15 + __sanitizer_syscall_post_impl_kill@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_lchown16@Base 15 + __sanitizer_syscall_post_impl_lchown@Base 15 + __sanitizer_syscall_post_impl_lgetxattr@Base 15 + __sanitizer_syscall_post_impl_link@Base 15 + __sanitizer_syscall_post_impl_linkat@Base 15 + __sanitizer_syscall_post_impl_listen@Base 15 + __sanitizer_syscall_post_impl_listxattr@Base 15 + __sanitizer_syscall_post_impl_llistxattr@Base 15 + __sanitizer_syscall_post_impl_llseek@Base 15 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_post_impl_lremovexattr@Base 15 + __sanitizer_syscall_post_impl_lseek@Base 15 + __sanitizer_syscall_post_impl_lsetxattr@Base 15 + __sanitizer_syscall_post_impl_lstat64@Base 15 + __sanitizer_syscall_post_impl_lstat@Base 15 + __sanitizer_syscall_post_impl_madvise@Base 15 + __sanitizer_syscall_post_impl_mbind@Base 15 + __sanitizer_syscall_post_impl_migrate_pages@Base 15 + __sanitizer_syscall_post_impl_mincore@Base 15 + __sanitizer_syscall_post_impl_mkdir@Base 15 + __sanitizer_syscall_post_impl_mkdirat@Base 15 + __sanitizer_syscall_post_impl_mknod@Base 15 + __sanitizer_syscall_post_impl_mknodat@Base 15 + __sanitizer_syscall_post_impl_mlock@Base 15 + __sanitizer_syscall_post_impl_mlockall@Base 15 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_post_impl_mount@Base 15 + __sanitizer_syscall_post_impl_move_pages@Base 15 + __sanitizer_syscall_post_impl_mprotect@Base 15 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_post_impl_mq_notify@Base 15 + __sanitizer_syscall_post_impl_mq_open@Base 15 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_post_impl_mq_timedsend@Base 15 + __sanitizer_syscall_post_impl_mq_unlink@Base 15 + __sanitizer_syscall_post_impl_mremap@Base 15 + __sanitizer_syscall_post_impl_msgctl@Base 15 + __sanitizer_syscall_post_impl_msgget@Base 15 + __sanitizer_syscall_post_impl_msgrcv@Base 15 + __sanitizer_syscall_post_impl_msgsnd@Base 15 + __sanitizer_syscall_post_impl_msync@Base 15 + __sanitizer_syscall_post_impl_munlock@Base 15 + __sanitizer_syscall_post_impl_munlockall@Base 15 + __sanitizer_syscall_post_impl_munmap@Base 15 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_post_impl_nanosleep@Base 15 + __sanitizer_syscall_post_impl_newfstat@Base 15 + __sanitizer_syscall_post_impl_newfstatat@Base 15 + __sanitizer_syscall_post_impl_newlstat@Base 15 + __sanitizer_syscall_post_impl_newstat@Base 15 + __sanitizer_syscall_post_impl_newuname@Base 15 + __sanitizer_syscall_post_impl_ni_syscall@Base 15 + __sanitizer_syscall_post_impl_nice@Base 15 + __sanitizer_syscall_post_impl_old_getrlimit@Base 15 + __sanitizer_syscall_post_impl_old_mmap@Base 15 + __sanitizer_syscall_post_impl_old_readdir@Base 15 + __sanitizer_syscall_post_impl_old_select@Base 15 + __sanitizer_syscall_post_impl_oldumount@Base 15 + __sanitizer_syscall_post_impl_olduname@Base 15 + __sanitizer_syscall_post_impl_open@Base 15 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_post_impl_openat@Base 15 + __sanitizer_syscall_post_impl_pause@Base 15 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_post_impl_pciconfig_read@Base 15 + __sanitizer_syscall_post_impl_pciconfig_write@Base 15 + __sanitizer_syscall_post_impl_perf_event_open@Base 15 + __sanitizer_syscall_post_impl_personality@Base 15 + __sanitizer_syscall_post_impl_pipe2@Base 15 + __sanitizer_syscall_post_impl_pipe@Base 15 + __sanitizer_syscall_post_impl_pivot_root@Base 15 + __sanitizer_syscall_post_impl_poll@Base 15 + __sanitizer_syscall_post_impl_ppoll@Base 15 + __sanitizer_syscall_post_impl_pread64@Base 15 + __sanitizer_syscall_post_impl_preadv@Base 15 + __sanitizer_syscall_post_impl_prlimit64@Base 15 + __sanitizer_syscall_post_impl_process_vm_readv@Base 15 + __sanitizer_syscall_post_impl_process_vm_writev@Base 15 + __sanitizer_syscall_post_impl_pselect6@Base 15 + __sanitizer_syscall_post_impl_ptrace@Base 15 + __sanitizer_syscall_post_impl_pwrite64@Base 15 + __sanitizer_syscall_post_impl_pwritev@Base 15 + __sanitizer_syscall_post_impl_quotactl@Base 15 + __sanitizer_syscall_post_impl_read@Base 15 + __sanitizer_syscall_post_impl_readlink@Base 15 + __sanitizer_syscall_post_impl_readlinkat@Base 15 + __sanitizer_syscall_post_impl_readv@Base 15 + __sanitizer_syscall_post_impl_reboot@Base 15 + __sanitizer_syscall_post_impl_recv@Base 15 + __sanitizer_syscall_post_impl_recvfrom@Base 15 + __sanitizer_syscall_post_impl_recvmmsg@Base 15 + __sanitizer_syscall_post_impl_recvmsg@Base 15 + __sanitizer_syscall_post_impl_remap_file_pages@Base 15 + __sanitizer_syscall_post_impl_removexattr@Base 15 + __sanitizer_syscall_post_impl_rename@Base 15 + __sanitizer_syscall_post_impl_renameat@Base 15 + __sanitizer_syscall_post_impl_request_key@Base 15 + __sanitizer_syscall_post_impl_restart_syscall@Base 15 + __sanitizer_syscall_post_impl_rmdir@Base 15 + __sanitizer_syscall_post_impl_rt_sigaction@Base 15 + __sanitizer_syscall_post_impl_rt_sigpending@Base 15 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_getparam@Base 15 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_setparam@Base 15 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_yield@Base 15 + __sanitizer_syscall_post_impl_select@Base 15 + __sanitizer_syscall_post_impl_semctl@Base 15 + __sanitizer_syscall_post_impl_semget@Base 15 + __sanitizer_syscall_post_impl_semop@Base 15 + __sanitizer_syscall_post_impl_semtimedop@Base 15 + __sanitizer_syscall_post_impl_send@Base 15 + __sanitizer_syscall_post_impl_sendfile64@Base 15 + __sanitizer_syscall_post_impl_sendfile@Base 15 + __sanitizer_syscall_post_impl_sendmmsg@Base 15 + __sanitizer_syscall_post_impl_sendmsg@Base 15 + __sanitizer_syscall_post_impl_sendto@Base 15 + __sanitizer_syscall_post_impl_set_mempolicy@Base 15 + __sanitizer_syscall_post_impl_set_robust_list@Base 15 + __sanitizer_syscall_post_impl_set_tid_address@Base 15 + __sanitizer_syscall_post_impl_setdomainname@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setfsgid16@Base 15 + __sanitizer_syscall_post_impl_setfsgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setfsuid16@Base 15 + __sanitizer_syscall_post_impl_setfsuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setgid16@Base 15 + __sanitizer_syscall_post_impl_setgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setgroups16@Base 15 + __sanitizer_syscall_post_impl_setgroups@Base 15 + __sanitizer_syscall_post_impl_sethostname@Base 15 + __sanitizer_syscall_post_impl_setitimer@Base 15 + __sanitizer_syscall_post_impl_setns@Base 15 + __sanitizer_syscall_post_impl_setpgid@Base 15 + __sanitizer_syscall_post_impl_setpriority@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setregid16@Base 15 + __sanitizer_syscall_post_impl_setregid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setresgid16@Base 15 + __sanitizer_syscall_post_impl_setresgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setresuid16@Base 15 + __sanitizer_syscall_post_impl_setresuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setreuid16@Base 15 + __sanitizer_syscall_post_impl_setreuid@Base 15 + __sanitizer_syscall_post_impl_setrlimit@Base 15 + __sanitizer_syscall_post_impl_setsid@Base 15 + __sanitizer_syscall_post_impl_setsockopt@Base 15 + __sanitizer_syscall_post_impl_settimeofday@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setuid16@Base 15 + __sanitizer_syscall_post_impl_setuid@Base 15 + __sanitizer_syscall_post_impl_setxattr@Base 15 + __sanitizer_syscall_post_impl_sgetmask@Base 15 + __sanitizer_syscall_post_impl_shmat@Base 15 + __sanitizer_syscall_post_impl_shmctl@Base 15 + __sanitizer_syscall_post_impl_shmdt@Base 15 + __sanitizer_syscall_post_impl_shmget@Base 15 + __sanitizer_syscall_post_impl_shutdown@Base 15 + __sanitizer_syscall_post_impl_sigaction@Base 15 + __sanitizer_syscall_post_impl_sigaltstack@Base 15 + __sanitizer_syscall_post_impl_signal@Base 15 + __sanitizer_syscall_post_impl_signalfd4@Base 15 + __sanitizer_syscall_post_impl_signalfd@Base 15 + __sanitizer_syscall_post_impl_sigpending@Base 15 + __sanitizer_syscall_post_impl_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_socket@Base 15 + __sanitizer_syscall_post_impl_socketcall@Base 15 + __sanitizer_syscall_post_impl_socketpair@Base 15 + __sanitizer_syscall_post_impl_splice@Base 15 + __sanitizer_syscall_post_impl_spu_create@Base 15 + __sanitizer_syscall_post_impl_spu_run@Base 15 + __sanitizer_syscall_post_impl_ssetmask@Base 15 + __sanitizer_syscall_post_impl_stat64@Base 15 + __sanitizer_syscall_post_impl_stat@Base 15 + __sanitizer_syscall_post_impl_statfs64@Base 15 + __sanitizer_syscall_post_impl_statfs@Base 15 + __sanitizer_syscall_post_impl_stime@Base 15 + __sanitizer_syscall_post_impl_swapoff@Base 15 + __sanitizer_syscall_post_impl_swapon@Base 15 + __sanitizer_syscall_post_impl_symlink@Base 15 + __sanitizer_syscall_post_impl_symlinkat@Base 15 + __sanitizer_syscall_post_impl_sync@Base 15 + __sanitizer_syscall_post_impl_syncfs@Base 15 + __sanitizer_syscall_post_impl_sysctl@Base 15 + __sanitizer_syscall_post_impl_sysfs@Base 15 + __sanitizer_syscall_post_impl_sysinfo@Base 15 + __sanitizer_syscall_post_impl_syslog@Base 15 + __sanitizer_syscall_post_impl_tee@Base 15 + __sanitizer_syscall_post_impl_tgkill@Base 15 + __sanitizer_syscall_post_impl_time@Base 15 + __sanitizer_syscall_post_impl_timer_create@Base 15 + __sanitizer_syscall_post_impl_timer_delete@Base 15 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_post_impl_timer_gettime@Base 15 + __sanitizer_syscall_post_impl_timer_settime@Base 15 + __sanitizer_syscall_post_impl_timerfd_create@Base 15 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_post_impl_timerfd_settime@Base 15 + __sanitizer_syscall_post_impl_times@Base 15 + __sanitizer_syscall_post_impl_tkill@Base 15 + __sanitizer_syscall_post_impl_truncate@Base 15 + __sanitizer_syscall_post_impl_umask@Base 15 + __sanitizer_syscall_post_impl_umount@Base 15 + __sanitizer_syscall_post_impl_uname@Base 15 + __sanitizer_syscall_post_impl_unlink@Base 15 + __sanitizer_syscall_post_impl_unlinkat@Base 15 + __sanitizer_syscall_post_impl_unshare@Base 15 + __sanitizer_syscall_post_impl_uselib@Base 15 + __sanitizer_syscall_post_impl_ustat@Base 15 + __sanitizer_syscall_post_impl_utime@Base 15 + __sanitizer_syscall_post_impl_utimensat@Base 15 + __sanitizer_syscall_post_impl_utimes@Base 15 + __sanitizer_syscall_post_impl_vfork@Base 15 + __sanitizer_syscall_post_impl_vhangup@Base 15 + __sanitizer_syscall_post_impl_vmsplice@Base 15 + __sanitizer_syscall_post_impl_wait4@Base 15 + __sanitizer_syscall_post_impl_waitid@Base 15 + __sanitizer_syscall_post_impl_waitpid@Base 15 + __sanitizer_syscall_post_impl_write@Base 15 + __sanitizer_syscall_post_impl_writev@Base 15 + __sanitizer_syscall_pre_impl_accept4@Base 15 + __sanitizer_syscall_pre_impl_accept@Base 15 + __sanitizer_syscall_pre_impl_access@Base 15 + __sanitizer_syscall_pre_impl_acct@Base 15 + __sanitizer_syscall_pre_impl_add_key@Base 15 + __sanitizer_syscall_pre_impl_adjtimex@Base 15 + __sanitizer_syscall_pre_impl_alarm@Base 15 + __sanitizer_syscall_pre_impl_bdflush@Base 15 + __sanitizer_syscall_pre_impl_bind@Base 15 + __sanitizer_syscall_pre_impl_brk@Base 15 + __sanitizer_syscall_pre_impl_capget@Base 15 + __sanitizer_syscall_pre_impl_capset@Base 15 + __sanitizer_syscall_pre_impl_chdir@Base 15 + __sanitizer_syscall_pre_impl_chmod@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_chown16@Base 15 + __sanitizer_syscall_pre_impl_chown@Base 15 + __sanitizer_syscall_pre_impl_chroot@Base 15 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 + __sanitizer_syscall_pre_impl_clock_getres@Base 15 + __sanitizer_syscall_pre_impl_clock_gettime@Base 15 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_clock_settime@Base 15 + __sanitizer_syscall_pre_impl_close@Base 15 + __sanitizer_syscall_pre_impl_connect@Base 15 + __sanitizer_syscall_pre_impl_creat@Base 15 + __sanitizer_syscall_pre_impl_delete_module@Base 15 + __sanitizer_syscall_pre_impl_dup2@Base 15 + __sanitizer_syscall_pre_impl_dup3@Base 15 + __sanitizer_syscall_pre_impl_dup@Base 15 + __sanitizer_syscall_pre_impl_epoll_create1@Base 15 + __sanitizer_syscall_pre_impl_epoll_create@Base 15 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 + __sanitizer_syscall_pre_impl_epoll_wait@Base 15 + __sanitizer_syscall_pre_impl_eventfd2@Base 15 + __sanitizer_syscall_pre_impl_eventfd@Base 15 + __sanitizer_syscall_pre_impl_exit@Base 15 + __sanitizer_syscall_pre_impl_exit_group@Base 15 + __sanitizer_syscall_pre_impl_faccessat@Base 15 + __sanitizer_syscall_pre_impl_fchdir@Base 15 + __sanitizer_syscall_pre_impl_fchmod@Base 15 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_fchown16@Base 15 + __sanitizer_syscall_pre_impl_fchown@Base 15 + __sanitizer_syscall_pre_impl_fchownat@Base 15 + __sanitizer_syscall_pre_impl_fcntl64@Base 15 + __sanitizer_syscall_pre_impl_fcntl@Base 15 + __sanitizer_syscall_pre_impl_fdatasync@Base 15 + __sanitizer_syscall_pre_impl_fgetxattr@Base 15 + __sanitizer_syscall_pre_impl_flistxattr@Base 15 + __sanitizer_syscall_pre_impl_flock@Base 15 + __sanitizer_syscall_pre_impl_fork@Base 15 + __sanitizer_syscall_pre_impl_fremovexattr@Base 15 + __sanitizer_syscall_pre_impl_fsetxattr@Base 15 + __sanitizer_syscall_pre_impl_fstat64@Base 15 + __sanitizer_syscall_pre_impl_fstat@Base 15 + __sanitizer_syscall_pre_impl_fstatat64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs@Base 15 + __sanitizer_syscall_pre_impl_fsync@Base 15 + __sanitizer_syscall_pre_impl_ftruncate@Base 15 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 15 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_get_robust_list@Base 15 + __sanitizer_syscall_pre_impl_getcpu@Base 15 + __sanitizer_syscall_pre_impl_getcwd@Base 15 + __sanitizer_syscall_pre_impl_getdents64@Base 15 + __sanitizer_syscall_pre_impl_getdents@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getegid16@Base 15 + __sanitizer_syscall_pre_impl_getegid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_geteuid16@Base 15 + __sanitizer_syscall_pre_impl_geteuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getgid16@Base 15 + __sanitizer_syscall_pre_impl_getgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getgroups16@Base 15 + __sanitizer_syscall_pre_impl_getgroups@Base 15 + __sanitizer_syscall_pre_impl_gethostname@Base 15 + __sanitizer_syscall_pre_impl_getitimer@Base 15 + __sanitizer_syscall_pre_impl_getpeername@Base 15 + __sanitizer_syscall_pre_impl_getpgid@Base 15 + __sanitizer_syscall_pre_impl_getpgrp@Base 15 + __sanitizer_syscall_pre_impl_getpid@Base 15 + __sanitizer_syscall_pre_impl_getppid@Base 15 + __sanitizer_syscall_pre_impl_getpriority@Base 15 + __sanitizer_syscall_pre_impl_getrandom@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getresgid16@Base 15 + __sanitizer_syscall_pre_impl_getresgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getresuid16@Base 15 + __sanitizer_syscall_pre_impl_getresuid@Base 15 + __sanitizer_syscall_pre_impl_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_getrusage@Base 15 + __sanitizer_syscall_pre_impl_getsid@Base 15 + __sanitizer_syscall_pre_impl_getsockname@Base 15 + __sanitizer_syscall_pre_impl_getsockopt@Base 15 + __sanitizer_syscall_pre_impl_gettid@Base 15 + __sanitizer_syscall_pre_impl_gettimeofday@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getuid16@Base 15 + __sanitizer_syscall_pre_impl_getuid@Base 15 + __sanitizer_syscall_pre_impl_getxattr@Base 15 + __sanitizer_syscall_pre_impl_init_module@Base 15 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_pre_impl_inotify_init1@Base 15 + __sanitizer_syscall_pre_impl_inotify_init@Base 15 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_pre_impl_io_cancel@Base 15 + __sanitizer_syscall_pre_impl_io_destroy@Base 15 + __sanitizer_syscall_pre_impl_io_getevents@Base 15 + __sanitizer_syscall_pre_impl_io_setup@Base 15 + __sanitizer_syscall_pre_impl_io_submit@Base 15 + __sanitizer_syscall_pre_impl_ioctl@Base 15 + __sanitizer_syscall_pre_impl_ioperm@Base 15 + __sanitizer_syscall_pre_impl_ioprio_get@Base 15 + __sanitizer_syscall_pre_impl_ioprio_set@Base 15 + __sanitizer_syscall_pre_impl_ipc@Base 15 + __sanitizer_syscall_pre_impl_kexec_load@Base 15 + __sanitizer_syscall_pre_impl_keyctl@Base 15 + __sanitizer_syscall_pre_impl_kill@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_lchown16@Base 15 + __sanitizer_syscall_pre_impl_lchown@Base 15 + __sanitizer_syscall_pre_impl_lgetxattr@Base 15 + __sanitizer_syscall_pre_impl_link@Base 15 + __sanitizer_syscall_pre_impl_linkat@Base 15 + __sanitizer_syscall_pre_impl_listen@Base 15 + __sanitizer_syscall_pre_impl_listxattr@Base 15 + __sanitizer_syscall_pre_impl_llistxattr@Base 15 + __sanitizer_syscall_pre_impl_llseek@Base 15 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_pre_impl_lremovexattr@Base 15 + __sanitizer_syscall_pre_impl_lseek@Base 15 + __sanitizer_syscall_pre_impl_lsetxattr@Base 15 + __sanitizer_syscall_pre_impl_lstat64@Base 15 + __sanitizer_syscall_pre_impl_lstat@Base 15 + __sanitizer_syscall_pre_impl_madvise@Base 15 + __sanitizer_syscall_pre_impl_mbind@Base 15 + __sanitizer_syscall_pre_impl_migrate_pages@Base 15 + __sanitizer_syscall_pre_impl_mincore@Base 15 + __sanitizer_syscall_pre_impl_mkdir@Base 15 + __sanitizer_syscall_pre_impl_mkdirat@Base 15 + __sanitizer_syscall_pre_impl_mknod@Base 15 + __sanitizer_syscall_pre_impl_mknodat@Base 15 + __sanitizer_syscall_pre_impl_mlock@Base 15 + __sanitizer_syscall_pre_impl_mlockall@Base 15 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_pre_impl_mount@Base 15 + __sanitizer_syscall_pre_impl_move_pages@Base 15 + __sanitizer_syscall_pre_impl_mprotect@Base 15 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_pre_impl_mq_notify@Base 15 + __sanitizer_syscall_pre_impl_mq_open@Base 15 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 + __sanitizer_syscall_pre_impl_mq_unlink@Base 15 + __sanitizer_syscall_pre_impl_mremap@Base 15 + __sanitizer_syscall_pre_impl_msgctl@Base 15 + __sanitizer_syscall_pre_impl_msgget@Base 15 + __sanitizer_syscall_pre_impl_msgrcv@Base 15 + __sanitizer_syscall_pre_impl_msgsnd@Base 15 + __sanitizer_syscall_pre_impl_msync@Base 15 + __sanitizer_syscall_pre_impl_munlock@Base 15 + __sanitizer_syscall_pre_impl_munlockall@Base 15 + __sanitizer_syscall_pre_impl_munmap@Base 15 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_pre_impl_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_newfstat@Base 15 + __sanitizer_syscall_pre_impl_newfstatat@Base 15 + __sanitizer_syscall_pre_impl_newlstat@Base 15 + __sanitizer_syscall_pre_impl_newstat@Base 15 + __sanitizer_syscall_pre_impl_newuname@Base 15 + __sanitizer_syscall_pre_impl_ni_syscall@Base 15 + __sanitizer_syscall_pre_impl_nice@Base 15 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_old_mmap@Base 15 + __sanitizer_syscall_pre_impl_old_readdir@Base 15 + __sanitizer_syscall_pre_impl_old_select@Base 15 + __sanitizer_syscall_pre_impl_oldumount@Base 15 + __sanitizer_syscall_pre_impl_olduname@Base 15 + __sanitizer_syscall_pre_impl_open@Base 15 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_pre_impl_openat@Base 15 + __sanitizer_syscall_pre_impl_pause@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 + __sanitizer_syscall_pre_impl_perf_event_open@Base 15 + __sanitizer_syscall_pre_impl_personality@Base 15 + __sanitizer_syscall_pre_impl_pipe2@Base 15 + __sanitizer_syscall_pre_impl_pipe@Base 15 + __sanitizer_syscall_pre_impl_pivot_root@Base 15 + __sanitizer_syscall_pre_impl_poll@Base 15 + __sanitizer_syscall_pre_impl_ppoll@Base 15 + __sanitizer_syscall_pre_impl_pread64@Base 15 + __sanitizer_syscall_pre_impl_preadv@Base 15 + __sanitizer_syscall_pre_impl_prlimit64@Base 15 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 + __sanitizer_syscall_pre_impl_pselect6@Base 15 + __sanitizer_syscall_pre_impl_ptrace@Base 15 + __sanitizer_syscall_pre_impl_pwrite64@Base 15 + __sanitizer_syscall_pre_impl_pwritev@Base 15 + __sanitizer_syscall_pre_impl_quotactl@Base 15 + __sanitizer_syscall_pre_impl_read@Base 15 + __sanitizer_syscall_pre_impl_readlink@Base 15 + __sanitizer_syscall_pre_impl_readlinkat@Base 15 + __sanitizer_syscall_pre_impl_readv@Base 15 + __sanitizer_syscall_pre_impl_reboot@Base 15 + __sanitizer_syscall_pre_impl_recv@Base 15 + __sanitizer_syscall_pre_impl_recvfrom@Base 15 + __sanitizer_syscall_pre_impl_recvmmsg@Base 15 + __sanitizer_syscall_pre_impl_recvmsg@Base 15 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 + __sanitizer_syscall_pre_impl_removexattr@Base 15 + __sanitizer_syscall_pre_impl_rename@Base 15 + __sanitizer_syscall_pre_impl_renameat@Base 15 + __sanitizer_syscall_pre_impl_request_key@Base 15 + __sanitizer_syscall_pre_impl_restart_syscall@Base 15 + __sanitizer_syscall_pre_impl_rmdir@Base 15 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_getparam@Base 15 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_setparam@Base 15 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_yield@Base 15 + __sanitizer_syscall_pre_impl_select@Base 15 + __sanitizer_syscall_pre_impl_semctl@Base 15 + __sanitizer_syscall_pre_impl_semget@Base 15 + __sanitizer_syscall_pre_impl_semop@Base 15 + __sanitizer_syscall_pre_impl_semtimedop@Base 15 + __sanitizer_syscall_pre_impl_send@Base 15 + __sanitizer_syscall_pre_impl_sendfile64@Base 15 + __sanitizer_syscall_pre_impl_sendfile@Base 15 + __sanitizer_syscall_pre_impl_sendmmsg@Base 15 + __sanitizer_syscall_pre_impl_sendmsg@Base 15 + __sanitizer_syscall_pre_impl_sendto@Base 15 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_set_robust_list@Base 15 + __sanitizer_syscall_pre_impl_set_tid_address@Base 15 + __sanitizer_syscall_pre_impl_setdomainname@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setfsgid16@Base 15 + __sanitizer_syscall_pre_impl_setfsgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setfsuid16@Base 15 + __sanitizer_syscall_pre_impl_setfsuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setgid16@Base 15 + __sanitizer_syscall_pre_impl_setgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setgroups16@Base 15 + __sanitizer_syscall_pre_impl_setgroups@Base 15 + __sanitizer_syscall_pre_impl_sethostname@Base 15 + __sanitizer_syscall_pre_impl_setitimer@Base 15 + __sanitizer_syscall_pre_impl_setns@Base 15 + __sanitizer_syscall_pre_impl_setpgid@Base 15 + __sanitizer_syscall_pre_impl_setpriority@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setregid16@Base 15 + __sanitizer_syscall_pre_impl_setregid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setresgid16@Base 15 + __sanitizer_syscall_pre_impl_setresgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setresuid16@Base 15 + __sanitizer_syscall_pre_impl_setresuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setreuid16@Base 15 + __sanitizer_syscall_pre_impl_setreuid@Base 15 + __sanitizer_syscall_pre_impl_setrlimit@Base 15 + __sanitizer_syscall_pre_impl_setsid@Base 15 + __sanitizer_syscall_pre_impl_setsockopt@Base 15 + __sanitizer_syscall_pre_impl_settimeofday@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setuid16@Base 15 + __sanitizer_syscall_pre_impl_setuid@Base 15 + __sanitizer_syscall_pre_impl_setxattr@Base 15 + __sanitizer_syscall_pre_impl_sgetmask@Base 15 + __sanitizer_syscall_pre_impl_shmat@Base 15 + __sanitizer_syscall_pre_impl_shmctl@Base 15 + __sanitizer_syscall_pre_impl_shmdt@Base 15 + __sanitizer_syscall_pre_impl_shmget@Base 15 + __sanitizer_syscall_pre_impl_shutdown@Base 15 + __sanitizer_syscall_pre_impl_sigaction@Base 15 + __sanitizer_syscall_pre_impl_sigaltstack@Base 15 + __sanitizer_syscall_pre_impl_signal@Base 15 + __sanitizer_syscall_pre_impl_signalfd4@Base 15 + __sanitizer_syscall_pre_impl_signalfd@Base 15 + __sanitizer_syscall_pre_impl_sigpending@Base 15 + __sanitizer_syscall_pre_impl_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_socket@Base 15 + __sanitizer_syscall_pre_impl_socketcall@Base 15 + __sanitizer_syscall_pre_impl_socketpair@Base 15 + __sanitizer_syscall_pre_impl_splice@Base 15 + __sanitizer_syscall_pre_impl_spu_create@Base 15 + __sanitizer_syscall_pre_impl_spu_run@Base 15 + __sanitizer_syscall_pre_impl_ssetmask@Base 15 + __sanitizer_syscall_pre_impl_stat64@Base 15 + __sanitizer_syscall_pre_impl_stat@Base 15 + __sanitizer_syscall_pre_impl_statfs64@Base 15 + __sanitizer_syscall_pre_impl_statfs@Base 15 + __sanitizer_syscall_pre_impl_stime@Base 15 + __sanitizer_syscall_pre_impl_swapoff@Base 15 + __sanitizer_syscall_pre_impl_swapon@Base 15 + __sanitizer_syscall_pre_impl_symlink@Base 15 + __sanitizer_syscall_pre_impl_symlinkat@Base 15 + __sanitizer_syscall_pre_impl_sync@Base 15 + __sanitizer_syscall_pre_impl_syncfs@Base 15 + __sanitizer_syscall_pre_impl_sysctl@Base 15 + __sanitizer_syscall_pre_impl_sysfs@Base 15 + __sanitizer_syscall_pre_impl_sysinfo@Base 15 + __sanitizer_syscall_pre_impl_syslog@Base 15 + __sanitizer_syscall_pre_impl_tee@Base 15 + __sanitizer_syscall_pre_impl_tgkill@Base 15 + __sanitizer_syscall_pre_impl_time@Base 15 + __sanitizer_syscall_pre_impl_timer_create@Base 15 + __sanitizer_syscall_pre_impl_timer_delete@Base 15 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_pre_impl_timer_gettime@Base 15 + __sanitizer_syscall_pre_impl_timer_settime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_create@Base 15 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 + __sanitizer_syscall_pre_impl_times@Base 15 + __sanitizer_syscall_pre_impl_tkill@Base 15 + __sanitizer_syscall_pre_impl_truncate@Base 15 + __sanitizer_syscall_pre_impl_umask@Base 15 + __sanitizer_syscall_pre_impl_umount@Base 15 + __sanitizer_syscall_pre_impl_uname@Base 15 + __sanitizer_syscall_pre_impl_unlink@Base 15 + __sanitizer_syscall_pre_impl_unlinkat@Base 15 + __sanitizer_syscall_pre_impl_unshare@Base 15 + __sanitizer_syscall_pre_impl_uselib@Base 15 + __sanitizer_syscall_pre_impl_ustat@Base 15 + __sanitizer_syscall_pre_impl_utime@Base 15 + __sanitizer_syscall_pre_impl_utimensat@Base 15 + __sanitizer_syscall_pre_impl_utimes@Base 15 + __sanitizer_syscall_pre_impl_vfork@Base 15 + __sanitizer_syscall_pre_impl_vhangup@Base 15 + __sanitizer_syscall_pre_impl_vmsplice@Base 15 + __sanitizer_syscall_pre_impl_wait4@Base 15 + __sanitizer_syscall_pre_impl_waitid@Base 15 + __sanitizer_syscall_pre_impl_waitpid@Base 15 + __sanitizer_syscall_pre_impl_write@Base 15 + __sanitizer_syscall_pre_impl_writev@Base 15 + __sanitizer_unaligned_load16@Base 15 + __sanitizer_unaligned_load32@Base 15 + __sanitizer_unaligned_load64@Base 15 + __sanitizer_unaligned_store16@Base 15 + __sanitizer_unaligned_store32@Base 15 + __sanitizer_unaligned_store64@Base 15 + __sanitizer_verify_contiguous_container@Base 15 + __sanitizer_verify_double_ended_contiguous_container@Base 15 + __sanitizer_weak_hook_memcmp@Base 15 + __sanitizer_weak_hook_memmem@Base 15 + __sanitizer_weak_hook_strcasecmp@Base 15 + __sanitizer_weak_hook_strcasestr@Base 15 + __sanitizer_weak_hook_strcmp@Base 15 + __sanitizer_weak_hook_strncasecmp@Base 15 + __sanitizer_weak_hook_strncmp@Base 15 + __sanitizer_weak_hook_strstr@Base 15 + __snprintf_chk@Base 15 + __sprintf_chk@Base 15 + __strdup@Base 15 + __strndup@Base 15 + __strxfrm_l@Base 15 + (arch=!powerpc !ppc64 !ppc64el !s390x)__tls_get_addr@Base 15 + (arch=s390x)__tls_get_addr_internal@Base 15 + (arch=powerpc ppc64 ppc64el)__tls_get_addr_opt@Base 15 + (arch=s390x)__tls_get_offset@Base 15 + __uflow@Base 15 + __underflow@Base 15 + __vsnprintf_chk@Base 15 + __vsprintf_chk@Base 15 + __wcsxfrm_l@Base 15 + __woverflow@Base 15 + __wuflow@Base 15 + __wunderflow@Base 15 + __xpg_strerror_r@Base 15 + __xstat64@Base 15 + __xstat@Base 15 + _exit@Base 15 + _longjmp@Base 15 + _obstack_begin@Base 15 + _obstack_begin_1@Base 15 + _obstack_newchunk@Base 15 + accept4@Base 15 + accept@Base 15 + aligned_alloc@Base 15 + argp_parse@Base 15 + asctime@Base 15 + asctime_r@Base 15 + asprintf@Base 15 + atoi@Base 15 + atol@Base 15 + atoll@Base 15 + backtrace@Base 15 + backtrace_symbols@Base 15 + bcmp@Base 15 + bsearch@Base 15 + bzero@Base 15 + calloc@Base 15 + canonicalize_file_name@Base 15 + capget@Base 15 + capset@Base 15 + (arch=!riscv64)cfree@Base 15 + clock_getcpuclockid@Base 15 + clock_getres@Base 15 + clock_gettime@Base 15 + clock_settime@Base 15 + confstr@Base 15 + ctermid@Base 15 + ctime@Base 15 + ctime_r@Base 15 + dlclose@Base 15 + dlopen@Base 15 + dn_comp@Base 15 + dn_expand@Base 15 + drand48_r@Base 15 + endgrent@Base 15 + endpwent@Base 15 + ether_aton@Base 15 + ether_aton_r@Base 15 + ether_hostton@Base 15 + ether_line@Base 15 + ether_ntoa@Base 15 + ether_ntoa_r@Base 15 + ether_ntohost@Base 15 + eventfd_read@Base 15 + eventfd_write@Base 15 + fclose@Base 15 + fdopen@Base 15 + fflush@Base 15 + fgetgrent@Base 15 + fgetgrent_r@Base 15 + fgetpwent@Base 15 + fgetpwent_r@Base 15 + fgets@Base 15 + fgetxattr@Base 15 + flistxattr@Base 15 + fmemopen@Base 15 + fopen64@Base 15 + fopen@Base 15 + fopencookie@Base 15 + fprintf@Base 15 + fputs@Base 15 + fread@Base 15 + free@Base 15 + freopen64@Base 15 + freopen@Base 15 + frexp@Base 15 + frexpf@Base 15 + frexpl@Base 15 + fscanf@Base 15 + fstatfs64@Base 15 + fstatfs@Base 15 + fstatvfs64@Base 15 + fstatvfs@Base 15 + ftime@Base 15 + fwrite@Base 15 + get_current_dir_name@Base 15 + getaddrinfo@Base 15 + getcwd@Base 15 + getdelim@Base 15 + getentropy@Base 15 + getgrent@Base 15 + getgrent_r@Base 15 + getgrgid@Base 15 + getgrgid_r@Base 15 + getgrnam@Base 15 + getgrnam_r@Base 15 + getgrouplist@Base 15 + getgroups@Base 15 + gethostbyaddr@Base 15 + gethostbyaddr_r@Base 15 + gethostbyname2@Base 15 + gethostbyname2_r@Base 15 + gethostbyname@Base 15 + gethostbyname_r@Base 15 + gethostent@Base 15 + gethostent_r@Base 15 + getifaddrs@Base 15 + getitimer@Base 15 + getline@Base 15 + getloadavg@Base 15 + getmntent@Base 15 + getmntent_r@Base 15 + getnameinfo@Base 15 + getnetbyaddr@Base 15 + getnetbyname@Base 15 + getnetent@Base 15 + getpass@Base 15 + getpeername@Base 15 + getprotobyname@Base 15 + getprotobyname_r@Base 15 + getprotobynumber@Base 15 + getprotobynumber_r@Base 15 + getprotoent@Base 15 + getprotoent_r@Base 15 + getpwent@Base 15 + getpwent_r@Base 15 + getpwnam@Base 15 + getpwnam_r@Base 15 + getpwuid@Base 15 + getpwuid_r@Base 15 + getrandom@Base 15 + getresgid@Base 15 + getresuid@Base 15 + getsockname@Base 15 + getsockopt@Base 15 + getusershell@Base 15 + getutent@Base 15 + getutid@Base 15 + getutline@Base 15 + getutxent@Base 15 + getutxid@Base 15 + getutxline@Base 15 + getxattr@Base 15 + glob64@Base 15 + glob@Base 15 + gmtime@Base 15 + gmtime_r@Base 15 + iconv@Base 15 + if_indextoname@Base 15 + if_nametoindex@Base 15 + index@Base 15 + inet_aton@Base 15 + inet_ntop@Base 15 + inet_pton@Base 15 + initgroups@Base 15 + ioctl@Base 15 + lgamma@Base 15 + lgamma_r@Base 15 + lgammaf@Base 15 + lgammaf_r@Base 15 + lgammal@Base 15 + lgammal_r@Base 15 + lgetxattr@Base 15 + listxattr@Base 15 + llistxattr@Base 15 + localtime@Base 15 + localtime_r@Base 15 + longjmp@Base 15 + lrand48_r@Base 15 + lstat64@Base 15 + lstat@Base 15 + makecontext@Base 15 + mallinfo@Base 15 + malloc@Base 15 + malloc_stats@Base 15 + malloc_usable_size@Base 15 + mallopt@Base 15 + mbsnrtowcs@Base 15 + mbsrtowcs@Base 15 + mbstowcs@Base 15 + mcheck@Base 15 + mcheck_pedantic@Base 15 + memalign@Base 15 + memchr@Base 15 + memcmp@Base 15 + memcpy@Base 15 + memmem@Base 15 + memmove@Base 15 + memrchr@Base 15 + memset@Base 15 + mincore@Base 15 + mktime@Base 15 + mlock@Base 15 + mlockall@Base 15 + mmap64@Base 15 + mmap@Base 15 + modf@Base 15 + modff@Base 15 + modfl@Base 15 + mprobe@Base 15 + mprotect@Base 15 + msgrcv@Base 15 + msgsnd@Base 15 + munlock@Base 15 + munlockall@Base 15 + munmap@Base 15 + name_to_handle_at@Base 15 + open_by_handle_at@Base 15 + open_memstream@Base 15 + open_wmemstream@Base 15 + opendir@Base 15 + pclose@Base 15 + poll@Base 15 + popen@Base 15 + posix_memalign@Base 15 + posix_spawn@Base 15 + posix_spawnp@Base 15 + ppoll@Base 15 + prctl@Base 15 + pread64@Base 15 + pread@Base 15 + preadv2@Base 15 + preadv64@Base 15 + preadv@Base 15 + printf@Base 15 + process_vm_readv@Base 15 + process_vm_writev@Base 15 + pthread_attr_getaffinity_np@Base 15 + pthread_attr_getdetachstate@Base 15 + pthread_attr_getguardsize@Base 15 + pthread_attr_getinheritsched@Base 15 + pthread_attr_getschedparam@Base 15 + pthread_attr_getschedpolicy@Base 15 + pthread_attr_getscope@Base 15 + pthread_attr_getstack@Base 15 + pthread_attr_getstacksize@Base 15 + pthread_barrierattr_getpshared@Base 15 + pthread_condattr_getclock@Base 15 + pthread_condattr_getpshared@Base 15 + pthread_create@Base 15 + pthread_detach@Base 15 + pthread_exit@Base 15 + pthread_getaffinity_np@Base 15 + pthread_getcpuclockid@Base 15 + pthread_getname_np@Base 15 + pthread_getschedparam@Base 15 + pthread_join@Base 15 + pthread_mutexattr_getprioceiling@Base 15 + pthread_mutexattr_getprotocol@Base 15 + pthread_mutexattr_getpshared@Base 15 + pthread_mutexattr_getrobust@Base 15 + pthread_mutexattr_getrobust_np@Base 15 + pthread_mutexattr_gettype@Base 15 + pthread_rwlockattr_getkind_np@Base 15 + pthread_rwlockattr_getpshared@Base 15 + pthread_setcancelstate@Base 15 + pthread_setcanceltype@Base 15 + pthread_setname_np@Base 15 + pthread_sigmask@Base 15 + pthread_timedjoin_np@Base 15 + pthread_tryjoin_np@Base 15 + (arch=!powerpc)ptrace@Base 15 + ptsname@Base 15 + ptsname_r@Base 15 + puts@Base 15 + pututxline@Base 15 + pvalloc@Base 15 + pwrite64@Base 15 + pwrite@Base 15 + pwritev2@Base 15 + pwritev64@Base 15 + pwritev@Base 15 + qsort@Base 15 + qsort_r@Base 15 + rand_r@Base 15 + random_r@Base 15 + read@Base 15 + readdir64@Base 15 + readdir64_r@Base 15 + readdir@Base 15 + readdir_r@Base 15 + readlink@Base 15 + readlinkat@Base 15 + readv@Base 15 + realloc@Base 15 + reallocarray@Base 15 + realpath@Base 15 + recv@Base 15 + recvfrom@Base 15 + recvmmsg@Base 15 + recvmsg@Base 15 + regcomp@Base 15 + regerror@Base 15 + regexec@Base 15 + regfree@Base 15 + remquo@Base 15 + remquof@Base 15 + remquol@Base 15 + scandir64@Base 15 + scandir@Base 15 + scanf@Base 15 + sched_getaffinity@Base 15 + sched_getparam@Base 15 + sem_destroy@Base 15 + sem_getvalue@Base 15 + sem_init@Base 15 + sem_open@Base 15 + sem_post@Base 15 + sem_timedwait@Base 15 + sem_trywait@Base 15 + sem_unlink@Base 15 + sem_wait@Base 15 + send@Base 15 + sendmmsg@Base 15 + sendmsg@Base 15 + sendto@Base 15 + setbuf@Base 15 + setbuffer@Base 15 + setgrent@Base 15 + setitimer@Base 15 + setlinebuf@Base 15 + setlocale@Base 15 + setpwent@Base 15 + setvbuf@Base 15 + (arch=!armhf !i386 !powerpc !x32)shmctl@Base 15 + sigaction@Base 15 + sigaltstack@Base 15 + sigandset@Base 15 + sigemptyset@Base 15 + sigfillset@Base 15 + siglongjmp@Base 15 + signal@Base 15 + sigorset@Base 15 + sigpending@Base 15 + sigprocmask@Base 15 + sigtimedwait@Base 15 + sigwait@Base 15 + sigwaitinfo@Base 15 + sincos@Base 15 + sincosf@Base 15 + sincosl@Base 15 + snprintf@Base 15 + sprintf@Base 15 + sscanf@Base 15 + stat64@Base 15 + stat@Base 15 + statfs64@Base 15 + statfs@Base 15 + statvfs64@Base 15 + statvfs@Base 15 + strcasecmp@Base 15 + strcasestr@Base 15 + strcat@Base 15 + strchr@Base 15 + strchrnul@Base 15 + strcmp@Base 15 + strcpy@Base 15 + strcspn@Base 15 + strdup@Base 15 + strerror@Base 15 + strerror_r@Base 15 + strlen@Base 15 + strncasecmp@Base 15 + strncat@Base 15 + strncmp@Base 15 + strncpy@Base 15 + strndup@Base 15 + strnlen@Base 15 + strpbrk@Base 15 + strptime@Base 15 + strrchr@Base 15 + strspn@Base 15 + strstr@Base 15 + strtoimax@Base 15 + strtok@Base 15 + strtol@Base 15 + strtoll@Base 15 + strtoumax@Base 15 + strxfrm@Base 15 + strxfrm_l@Base 15 + swapcontext@Base 15 + sysinfo@Base 15 + tcgetattr@Base 15 + tempnam@Base 15 + textdomain@Base 15 + time@Base 15 + timerfd_gettime@Base 15 + timerfd_settime@Base 15 + times@Base 15 + tmpnam@Base 15 + tmpnam_r@Base 15 + tsearch@Base 15 + ttyname@Base 15 + ttyname_r@Base 15 + uname@Base 15 + valloc@Base 15 + vasprintf@Base 15 + (arch=amd64 armhf i386 riscv64 x32)vfork@Base 15 + vfprintf@Base 15 + vfscanf@Base 15 + vprintf@Base 15 + vscanf@Base 15 + vsnprintf@Base 15 + vsprintf@Base 15 + vsscanf@Base 15 + wait3@Base 15 + wait4@Base 15 + wait@Base 15 + waitid@Base 15 + waitpid@Base 15 + wcrtomb@Base 15 + wcscat@Base 15 + wcsdup@Base 15 + wcslen@Base 15 + wcsncat@Base 15 + wcsnlen@Base 15 + wcsnrtombs@Base 15 + wcsrtombs@Base 15 + wcstombs@Base 15 + wcsxfrm@Base 15 + wcsxfrm_l@Base 15 + wctomb@Base 15 + wordexp@Base 15 + write@Base 15 + writev@Base 15 + xdr_bool@Base 15 + xdr_bytes@Base 15 + xdr_char@Base 15 + xdr_destroy@Base 15 + xdr_double@Base 15 + xdr_enum@Base 15 + xdr_float@Base 15 + xdr_hyper@Base 15 + xdr_int16_t@Base 15 + xdr_int32_t@Base 15 + xdr_int64_t@Base 15 + xdr_int8_t@Base 15 + xdr_int@Base 15 + xdr_long@Base 15 + xdr_longlong_t@Base 15 + xdr_quad_t@Base 15 + xdr_short@Base 15 + xdr_string@Base 15 + xdr_u_char@Base 15 + xdr_u_hyper@Base 15 + xdr_u_int@Base 15 + xdr_u_long@Base 15 + xdr_u_longlong_t@Base 15 + xdr_u_quad_t@Base 15 + xdr_u_short@Base 15 + xdr_uint16_t@Base 15 + xdr_uint32_t@Base 15 + xdr_uint64_t@Base 15 + xdr_uint8_t@Base 15 + xdrmem_create@Base 15 + xdrrec_create@Base 15 + xdrstdio_create@Base 15 diff --git a/libatomic.symbols b/libatomic.symbols new file mode 100644 index 0000000..f50770d --- /dev/null +++ b/libatomic.symbols @@ -0,0 +1,4 @@ +libatomic.so.1 #PACKAGE# #MINVER# + (symver)LIBATOMIC_1.0 4.8 + (symver)LIBATOMIC_1.1 4.9 + (symver)LIBATOMIC_1.2 6 diff --git a/libcc1-0.symbols b/libcc1-0.symbols new file mode 100644 index 0000000..d351798 --- /dev/null +++ b/libcc1-0.symbols @@ -0,0 +1,62 @@ +# SymbolsHelper-Confirmed: 15 amd64 +libcc1.so.0 libcc1-0 #MINVER# + (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_appendIJRKS5_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_appendIJS5_EEEvDpOT_@Base 15 + (optional=templinst|subst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructILb1EEEvPKc{size_t}@Base 15 + _xexit_cleanup@Base 15 + concat@Base 15 + concat_copy2@Base 15 + concat_copy@Base 15 + concat_length@Base 15 + gcc_c_fe_context@Base 15 + gcc_cp_fe_context@Base 15 + htab_clear_slot@Base 15 + htab_collisions@Base 15 + htab_create@Base 15 + htab_create_alloc@Base 15 + htab_create_alloc_ex@Base 15 + htab_create_typed_alloc@Base 15 + htab_delete@Base 15 + htab_elements@Base 15 + htab_empty@Base 15 + htab_eq_pointer@Base 15 + htab_eq_string@Base 15 + htab_find@Base 15 + htab_find_slot@Base 15 + htab_find_slot_with_hash@Base 15 + htab_find_with_hash@Base 15 + htab_hash_pointer@Base 15 + htab_hash_string@Base 15 + htab_remove_elt@Base 15 + htab_remove_elt_with_hash@Base 15 + htab_set_functions_ex@Base 15 + htab_size@Base 15 + htab_traverse@Base 15 + htab_traverse_noresize@Base 15 + htab_try_create@Base 15 + iterative_hash@Base 15 + libiberty_concat_ptr@Base 15 + reconcat@Base 15 + xcalloc@Base 15 + xexit@Base 15 + xmalloc@Base 15 + xmalloc_failed@Base 15 + xmalloc_set_program_name@Base 15 + xre_comp@Base 15 + xre_compile_fastmap@Base 15 + xre_compile_pattern@Base 15 + xre_exec@Base 15 + xre_match@Base 15 + xre_match_2@Base 15 + xre_max_failures@Base 15 + xre_search@Base 15 + xre_search_2@Base 15 + xre_set_registers@Base 15 + xre_set_syntax@Base 15 + xre_syntax_options@Base 15 + xrealloc@Base 15 + xregcomp@Base 15 + xregerror@Base 15 + xregexec@Base 15 + xregfree@Base 15 + xstrdup@Base 15 diff --git a/libga68.symbols b/libga68.symbols new file mode 100644 index 0000000..18d7c2c --- /dev/null +++ b/libga68.symbols @@ -0,0 +1,51 @@ +libga68.so.1 #PACKAGE# #MINVER# + _libga68_abort@Base 15 + _libga68_argc@Base 15 + _libga68_argv@Base 15 + _libga68_assert@Base 15 + _libga68_bitsboundserror@Base 15 + _libga68_bounds@Base 15 + _libga68_bounds_mismatch@Base 15 + _libga68_derefnil@Base 15 + _libga68_dim@Base 15 + _libga68_free_internal@Base 15 + _libga68_init_heap@Base 15 + _libga68_invalidcharerror@Base 15 + _libga68_longlongrandom@Base 15 + _libga68_longrandom@Base 15 + _libga68_lower_bound@Base 15 + _libga68_malloc@Base 15 + _libga68_malloc_internal@Base 15 + _libga68_posixargc@Base 15 + _libga68_posixargv@Base 15 + _libga68_posixclose@Base 15 + _libga68_posixcreat@Base 15 + _libga68_posixerrno@Base 15 + _libga68_posixfconnect@Base 15 + _libga68_posixfgetc@Base 15 + _libga68_posixfgets@Base 15 + _libga68_posixfopen@Base 15 + _libga68_posixfputc@Base 15 + _libga68_posixfputs@Base 15 + _libga68_posixfsize@Base 15.2 + _libga68_posixgetchar@Base 15 + _libga68_posixgetenv@Base 15 + _libga68_posixgets@Base 15 + _libga68_posixlseek@Base 15 + _libga68_posixperror@Base 15 + _libga68_posixputchar@Base 15 + _libga68_posixputs@Base 15 + _libga68_posixstrerror@Base 15 + _libga68_random@Base 15 + _libga68_realloc@Base 15 + _libga68_realloc_unchecked@Base 15 + _libga68_set_exit_status@Base 15 + _libga68_u32_cmp2@Base 15 + _libga68_u32_cmp@Base 15 + _libga68_u32_to_u8@Base 15 + _libga68_u8_mbtouc@Base 15 + _libga68_u8_to_u32@Base 15 + _libga68_u8_uctomb@Base 15 + _libga68_unreachable@Base 15 + _libga68_upper_bound@Base 15 + main@Base 15 diff --git a/libgcc-s.symbols b/libgcc-s.symbols new file mode 100644 index 0000000..21e5f7f --- /dev/null +++ b/libgcc-s.symbols @@ -0,0 +1,31 @@ +libgcc_s.so.1 #PACKAGE# #MINVER# + (symver)GCC_3.0 3.0 + (symver)GCC_3.3 3.3 + (symver)GCC_3.3.1 3.3.1 +# __gcc_personality_sj0, __gcc_personality_v0 + (symver|arch=ia64)GCC_3.3.2 3.3.2 + (symver|arch=arc armel armhf loong64 mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc sh4)GCC_3.3.4 3.3.4 + (symver)GCC_3.4 3.4 + (symver)GCC_3.4.2 3.4.2 +#(symver|arch-bits=32)GCC_3.4.4 3.4.4 + (symver|arch=!arc !armel !armhf !any-i386 !mips !mipsel !powerpc !s390 !sh4 !sparc)GCC_3.4.4 3.4.4 + (symver|arch=armel armhf|ignore-blacklist)GCC_3.5 3.5 + (symver)GCC_4.0.0 4.0 + (symver|arch=powerpc s390 s390x)GCC_4.1.0 4.1 + (symver)GCC_4.2.0 4.2 + (symver)GCC_4.3.0 4.3 + (symver|arch=any-i386 ia64 mips mipsel mipsn32 mipsn32el mips64 mips64el riscv64 sh4)GCC_4.4.0 4.4 + (symver|arch=arm64 any-i386 loong64 mipsn32 mipsn32el mips64 mips64el riscv64)GCC_4.5.0 4.5 +#(symver|optional)GCC_4.6.0 4.6 + (symver)GCC_4.7.0 4.7 + (symver|arch=any-amd64 any-i386 x32)GCC_4.8.0 4.8 + (symver|arch=!arc !any-amd64 !x32 !sparc64 !s390x !sh4)GLIBC_2.0 4.2 + (symver|arch=s390x sh4 sparc64)GLIBC_2.2 4.2 + (symver|arch=sparc)GCC_LDBL_3.0 3.0 + (symver|arch=alpha sparc)GCC_LDBL_4.0.0 4.0 + (symver)GCC_7.0.0 7 + (symver|arch=arm64)GCC_11.0 11 + (symver|arch=amd64 i386 x32 hurd-amd64 hurd-i386)GCC_12.0.0 12 + (symver|arch=amd64 arm64 i386 x32 hurd-amd64 hurd-i386)GCC_13.0.0 13 + (symver|arch=arm64)GCC_14.0 14 + (symver)GCC_14.0.0 14 diff --git a/libgcc-s2.symbols.m68k b/libgcc-s2.symbols.m68k new file mode 100644 index 0000000..d43214d --- /dev/null +++ b/libgcc-s2.symbols.m68k @@ -0,0 +1,169 @@ +libgcc_s.so.2 libgcc-s2 #MINVER# + GCC_14.0.0@GCC_14.0.0 14 + GCC_3.0@GCC_3.0 4.2.1 + GCC_3.3.1@GCC_3.3.1 4.2.1 + GCC_3.3.4@GCC_3.3.4 4.4.5 + GCC_3.3@GCC_3.3 4.2.1 + GCC_3.4.2@GCC_3.4.2 4.2.1 + GCC_3.4@GCC_3.4 4.2.1 + GCC_4.0.0@GCC_4.0.0 4.2.1 + GCC_4.2.0@GCC_4.2.0 4.2.1 + GCC_4.3.0@GCC_4.3.0 4.3.0 + GCC_4.5.0@GCC_4.5.0 4.5 + GCC_4.7.0@GCC_4.7.0 4.7 + GCC_7.0.0@GCC_7.0.0 7.0 + GLIBC_2.0@GLIBC_2.0 4.2.1 + _Unwind_Backtrace@GCC_3.3 4.2.1 + _Unwind_DeleteException@GCC_3.0 4.2.1 + _Unwind_FindEnclosingFunction@GCC_3.3 4.2.1 + _Unwind_Find_FDE@GCC_3.0 4.2.1 + _Unwind_ForcedUnwind@GCC_3.0 4.2.1 + _Unwind_GetCFA@GCC_3.3 4.2.1 + _Unwind_GetDataRelBase@GCC_3.0 4.2.1 + _Unwind_GetGR@GCC_3.0 4.2.1 + _Unwind_GetIP@GCC_3.0 4.2.1 + _Unwind_GetIPInfo@GCC_4.2.0 4.2.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 4.2.1 + _Unwind_GetRegionStart@GCC_3.0 4.2.1 + _Unwind_GetTextRelBase@GCC_3.0 4.2.1 + _Unwind_RaiseException@GCC_3.0 4.2.1 + _Unwind_Resume@GCC_3.0 4.2.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 4.2.1 + _Unwind_SetGR@GCC_3.0 4.2.1 + _Unwind_SetIP@GCC_3.0 4.2.1 + __absvdi2@GCC_3.0 4.2.1 + __absvsi2@GCC_3.0 4.2.1 + __adddf3@GCC_3.0 4.4.5 + __addsf3@GCC_3.0 4.4.5 + __addvdi3@GCC_3.0 4.2.1 + __addvsi3@GCC_3.0 4.2.1 + __addxf3@GCC_3.0 4.4.5 + __ashldi3@GCC_3.0 4.2.1 + __ashrdi3@GCC_3.0 4.2.1 + __bswapdi2@GCC_4.3.0 4.3.0 + __bswapsi2@GCC_4.3.0 4.3.0 + __clear_cache@GCC_3.0 4.2.1 + __clrsbdi2@GCC_4.7.0 4.7 + __clrsbsi2@GCC_4.7.0 4.7 + __clzdi2@GCC_3.4 4.2.1 + __clzsi2@GCC_3.4 4.2.1 + __cmpdi2@GCC_3.0 4.2.1 + __ctzdi2@GCC_3.4 4.2.1 + __ctzsi2@GCC_3.4 4.2.1 + __deregister_frame@GLIBC_2.0 4.2.1 + __deregister_frame_info@GLIBC_2.0 4.2.1 + __deregister_frame_info_bases@GCC_3.0 4.2.1 + __divdc3@GCC_4.0.0 4.2.1 + __divdf3@GCC_3.0 4.4.5 + __divdi3@GLIBC_2.0 4.2.1 + __divmoddi4@GCC_7.0.0 7.0 + __divsc3@GCC_4.0.0 4.2.1 + __divsf3@GCC_3.0 4.4.5 + __divsi3@GCC_3.0 4.4.5 + __divxc3@GCC_4.0.0 4.2.1 + __divxf3@GCC_3.0 4.4.5 + __emutls_get_address@GCC_4.3.0 4.3.0 + __emutls_register_common@GCC_4.3.0 4.3.0 + __enable_execute_stack@GCC_3.4.2 4.2.1 + __eqdf2@GCC_3.0 4.4.5 + __eqsf2@GCC_3.0 4.4.5 + __eqxf2@GCC_3.0 4.4.5 + __extenddfxf2@GCC_3.0 4.4.5 + __extendsfdf2@GCC_3.0 4.4.5 + __extendsfxf2@GCC_3.0 4.4.5 + __ffsdi2@GCC_3.0 4.2.1 + __ffssi2@GCC_4.3.0 4.3.0 + __fixdfdi@GCC_3.0 4.2.1 + __fixdfsi@GCC_3.0 4.4.5 + __fixsfdi@GCC_3.0 4.2.1 + __fixsfsi@GCC_3.0 4.4.5 + __fixunsdfdi@GCC_3.0 4.2.1 + __fixunsdfsi@GCC_3.0 4.2.1 + __fixunssfdi@GCC_3.0 4.2.1 + __fixunssfsi@GCC_3.0 4.2.1 + __fixunsxfdi@GCC_3.0 4.2.1 + __fixunsxfsi@GCC_3.0 4.2.1 + __fixxfdi@GCC_3.0 4.2.1 + __fixxfsi@GCC_3.0 4.4.5 + __floatdidf@GCC_3.0 4.2.1 + __floatdisf@GCC_3.0 4.2.1 + __floatdixf@GCC_3.0 4.2.1 + __floatsidf@GCC_3.0 4.4.5 + __floatsisf@GCC_3.0 4.4.5 + __floatsixf@GCC_3.0 4.4.5 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __floatundixf@GCC_4.2.0 4.2.1 + __floatunsidf@GCC_4.2.0 4.4.5 + __floatunsisf@GCC_4.2.0 4.4.5 + __floatunsixf@GCC_4.2.0 4.4.5 + __frame_state_for@GLIBC_2.0 4.2.1 + __gcc_personality_v0@GCC_3.3.1 4.2.1 + __gedf2@GCC_3.0 4.4.5 + __gesf2@GCC_3.0 4.4.5 + __gexf2@GCC_3.0 4.4.5 + __gtdf2@GCC_3.0 4.4.5 + __gtsf2@GCC_3.0 4.4.5 + __gtxf2@GCC_3.0 4.4.5 + __hardcfr_check@GCC_14.0.0 14 + __ledf2@GCC_3.0 4.4.5 + __lesf2@GCC_3.0 4.4.5 + __lexf2@GCC_3.0 4.4.5 + __lshrdi3@GCC_3.0 4.2.1 + __ltdf2@GCC_3.0 4.4.5 + __ltsf2@GCC_3.0 4.4.5 + __ltxf2@GCC_3.0 4.4.5 + __moddi3@GLIBC_2.0 4.2.1 + __modsi3@GCC_3.0 4.4.5 + __muldc3@GCC_4.0.0 4.2.1 + __muldf3@GCC_3.0 4.4.5 + __muldi3@GCC_3.0 4.2.1 + __mulsc3@GCC_4.0.0 4.2.1 + __mulsf3@GCC_3.0 4.4.5 + __mulsi3@GCC_3.0 4.4.5 + __mulvdi3@GCC_3.0 4.2.1 + __mulvsi3@GCC_3.0 4.2.1 + __mulxc3@GCC_4.0.0 4.2.1 + __mulxf3@GCC_3.0 4.4.5 + __nedf2@GCC_3.0 4.4.5 + __negdf2@GCC_3.0 4.4.5 + __negdi2@GCC_3.0 4.2.1 + __negsf2@GCC_3.0 4.4.5 + __negvdi2@GCC_3.0 4.2.1 + __negvsi2@GCC_3.0 4.2.1 + __negxf2@GCC_3.0 4.4.5 + __nesf2@GCC_3.0 4.4.5 + __nexf2@GCC_3.0 4.4.5 + __paritydi2@GCC_3.4 4.2.1 + __paritysi2@GCC_3.4 4.2.1 + __popcountdi2@GCC_3.4 4.2.1 + __popcountsi2@GCC_3.4 4.2.1 + __powidf2@GCC_4.0.0 4.2.1 + __powisf2@GCC_4.0.0 4.2.1 + __powixf2@GCC_4.0.0 4.2.1 + __register_frame@GLIBC_2.0 4.2.1 + __register_frame_info@GLIBC_2.0 4.2.1 + __register_frame_info_bases@GCC_3.0 4.2.1 + __register_frame_info_table@GLIBC_2.0 4.2.1 + __register_frame_info_table_bases@GCC_3.0 4.2.1 + __register_frame_table@GLIBC_2.0 4.2.1 + __strub_enter@GCC_14.0.0 14 + __strub_leave@GCC_14.0.0 14 + __strub_update@GCC_14.0.0 14 + __subdf3@GCC_3.0 4.4.5 + __subsf3@GCC_3.0 4.4.5 + __subvdi3@GCC_3.0 4.2.1 + __subvsi3@GCC_3.0 4.2.1 + __subxf3@GCC_3.0 4.4.5 + __truncdfsf2@GCC_3.0 4.4.5 + __truncxfdf2@GCC_3.0 4.4.5 + __truncxfsf2@GCC_3.0 4.4.5 + __ucmpdi2@GCC_3.0 4.2.1 + __udivdi3@GLIBC_2.0 4.2.1 + __udivmoddi4@GCC_3.0 4.2.1 + __udivsi3@GCC_3.0 4.4.5 + __umoddi3@GLIBC_2.0 4.2.1 + __umodsi3@GCC_3.0 4.4.5 + __unorddf2@GCC_3.3.4 4.4.5 + __unordsf2@GCC_3.3.4 4.4.5 + __unordxf2@GCC_4.5.0 4.7 diff --git a/libgcc-s4.symbols.hppa b/libgcc-s4.symbols.hppa new file mode 100644 index 0000000..b3d17c8 --- /dev/null +++ b/libgcc-s4.symbols.hppa @@ -0,0 +1,103 @@ +libgcc_s.so.4 libgcc-s4 #MINVER# + GCC_14.0.0@GCC_14.0.0 14 + GCC_3.0@GCC_3.0 4.1.1 + GCC_3.3.1@GCC_3.3.1 4.1.1 + GCC_3.3@GCC_3.3 4.1.1 + GCC_3.4.2@GCC_3.4.2 4.1.1 + GCC_3.4@GCC_3.4 4.1.1 + GCC_4.0.0@GCC_4.0.0 4.1.1 + GCC_4.2.0@GCC_4.2.0 4.1.1 + GCC_4.3.0@GCC_4.3.0 4.3 + GCC_4.7.0@GCC_4.7.0 4.7 + GCC_7.0.0@GCC_7.0.0 7.0 + GLIBC_2.0@GLIBC_2.0 4.1.1 + _Unwind_Backtrace@GCC_3.3 4.1.1 + _Unwind_DeleteException@GCC_3.0 4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 4.1.1 + _Unwind_Find_FDE@GCC_3.0 4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 4.1.1 + _Unwind_GetCFA@GCC_3.3 4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 4.1.1 + _Unwind_GetGR@GCC_3.0 4.1.1 + _Unwind_GetIP@GCC_3.0 4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 4.1.1 + _Unwind_GetRegionStart@GCC_3.0 4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 4.1.1 + _Unwind_RaiseException@GCC_3.0 4.1.1 + _Unwind_Resume@GCC_3.0 4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 4.1.1 + _Unwind_SetGR@GCC_3.0 4.1.1 + _Unwind_SetIP@GCC_3.0 4.1.1 + __absvdi2@GCC_3.0 4.1.1 + __absvsi2@GCC_3.0 4.1.1 + __addvdi3@GCC_3.0 4.1.1 + __addvsi3@GCC_3.0 4.1.1 + __ashldi3@GCC_3.0 4.1.1 + __ashrdi3@GCC_3.0 4.1.1 + __bswapdi2@GCC_4.3.0 4.3 + __bswapsi2@GCC_4.3.0 4.3 + __clear_cache@GCC_3.0 4.1.1 + __clrsbdi2@GCC_4.7.0 4.7 + __clrsbsi2@GCC_4.7.0 4.7 + __clzdi2@GCC_3.4 4.1.1 + __clzsi2@GCC_3.4 4.1.1 + __cmpdi2@GCC_3.0 4.1.1 + __ctzdi2@GCC_3.4 4.1.1 + __ctzsi2@GCC_3.4 4.1.1 + __deregister_frame@GLIBC_2.0 4.1.1 + __deregister_frame_info@GLIBC_2.0 4.1.1 + __deregister_frame_info_bases@GCC_3.0 4.1.1 + __divdc3@GCC_4.0.0 4.1.1 + __divdi3@GLIBC_2.0 4.1.1 + __divmoddi4@GCC_7.0.0 7.0 + __divsc3@GCC_4.0.0 4.1.1 + __emutls_get_address@GCC_4.3.0 4.3 + __emutls_register_common@GCC_4.3.0 4.3 + __enable_execute_stack@GCC_3.4.2 4.1.1 + __ffsdi2@GCC_3.0 4.1.1 + __ffssi2@GCC_4.3.0 4.3 + __fixdfdi@GCC_3.0 4.1.1 + __fixsfdi@GCC_3.0 4.1.1 + __fixunsdfdi@GCC_3.0 4.1.1 + __fixunsdfsi@GCC_3.0 4.1.1 + __fixunssfdi@GCC_3.0 4.1.1 + __fixunssfsi@GCC_3.0 4.1.1 + __floatdidf@GCC_3.0 4.1.1 + __floatdisf@GCC_3.0 4.1.1 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __frame_state_for@GLIBC_2.0 4.1.1 + __gcc_personality_v0@GCC_3.3.1 4.1.1 + __hardcfr_check@GCC_14.0.0 14 + __lshrdi3@GCC_3.0 4.1.1 + __moddi3@GLIBC_2.0 4.1.1 + __muldc3@GCC_4.0.0 4.1.1 + __muldi3@GCC_3.0 4.1.1 + __mulsc3@GCC_4.0.0 4.1.1 + __mulvdi3@GCC_3.0 4.1.1 + __mulvsi3@GCC_3.0 4.1.1 + __negdi2@GCC_3.0 4.1.1 + __negvdi2@GCC_3.0 4.1.1 + __negvsi2@GCC_3.0 4.1.1 + __paritydi2@GCC_3.4 4.1.1 + __paritysi2@GCC_3.4 4.1.1 + __popcountdi2@GCC_3.4 4.1.1 + __popcountsi2@GCC_3.4 4.1.1 + __powidf2@GCC_4.0.0 4.1.1 + __powisf2@GCC_4.0.0 4.1.1 + __register_frame@GLIBC_2.0 4.1.1 + __register_frame_info@GLIBC_2.0 4.1.1 + __register_frame_info_bases@GCC_3.0 4.1.1 + __register_frame_info_table@GLIBC_2.0 4.1.1 + __register_frame_info_table_bases@GCC_3.0 4.1.1 + __register_frame_table@GLIBC_2.0 4.1.1 + __strub_enter@GCC_14.0.0 14 + __strub_leave@GCC_14.0.0 14 + __strub_update@GCC_14.0.0 14 + __subvdi3@GCC_3.0 4.1.1 + __subvsi3@GCC_3.0 4.1.1 + __ucmpdi2@GCC_3.0 4.1.1 + __udivdi3@GLIBC_2.0 4.1.1 + __udivmoddi4@GCC_3.0 4.1.1 + __umoddi3@GLIBC_2.0 4.1.1 diff --git a/libgcc.symbols.aeabi b/libgcc.symbols.aeabi new file mode 100644 index 0000000..9e70dc2 --- /dev/null +++ b/libgcc.symbols.aeabi @@ -0,0 +1,69 @@ + __aeabi_cdcmpeq@GCC_3.5 3.5 + __aeabi_cdcmple@GCC_3.5 3.5 + __aeabi_cdrcmple@GCC_3.5 3.5 + __aeabi_cfcmpeq@GCC_3.5 3.5 + __aeabi_cfcmple@GCC_3.5 3.5 + __aeabi_cfrcmple@GCC_3.5 3.5 + __aeabi_d2f@GCC_3.5 3.5 + __aeabi_d2iz@GCC_3.5 3.5 + __aeabi_d2lz@GCC_3.5 3.5 + __aeabi_d2uiz@GCC_3.5 3.5 + __aeabi_d2ulz@GCC_3.5 3.5 + __aeabi_dadd@GCC_3.5 3.5 + __aeabi_dcmpeq@GCC_3.5 3.5 + __aeabi_dcmpge@GCC_3.5 3.5 + __aeabi_dcmpgt@GCC_3.5 3.5 + __aeabi_dcmple@GCC_3.5 3.5 + __aeabi_dcmplt@GCC_3.5 3.5 + __aeabi_dcmpun@GCC_3.5 3.5 + __aeabi_ddiv@GCC_3.5 3.5 + __aeabi_dmul@GCC_3.5 3.5 + __aeabi_dneg@GCC_3.5 3.5 + __aeabi_drsub@GCC_3.5 3.5 + __aeabi_dsub@GCC_3.5 3.5 + __aeabi_f2d@GCC_3.5 3.5 + __aeabi_f2iz@GCC_3.5 3.5 + __aeabi_f2lz@GCC_3.5 3.5 + __aeabi_f2uiz@GCC_3.5 3.5 + __aeabi_f2ulz@GCC_3.5 3.5 + __aeabi_fadd@GCC_3.5 3.5 + __aeabi_fcmpeq@GCC_3.5 3.5 + __aeabi_fcmpge@GCC_3.5 3.5 + __aeabi_fcmpgt@GCC_3.5 3.5 + __aeabi_fcmple@GCC_3.5 3.5 + __aeabi_fcmplt@GCC_3.5 3.5 + __aeabi_fcmpun@GCC_3.5 3.5 + __aeabi_fdiv@GCC_3.5 3.5 + __aeabi_fmul@GCC_3.5 3.5 + __aeabi_fneg@GCC_3.5 3.5 + __aeabi_frsub@GCC_3.5 3.5 + __aeabi_fsub@GCC_3.5 3.5 + __aeabi_i2d@GCC_3.5 3.5 + __aeabi_i2f@GCC_3.5 3.5 + __aeabi_idiv@GCC_3.5 3.5 + __aeabi_idiv0@GCC_3.5 1:4.5.0 + __aeabi_idivmod@GCC_3.5 3.5 + __aeabi_l2d@GCC_3.5 3.5 + __aeabi_l2f@GCC_3.5 3.5 + __aeabi_lasr@GCC_3.5 3.5 + __aeabi_lcmp@GCC_3.5 3.5 + __aeabi_ldivmod@GCC_3.5 3.5 + __aeabi_ldiv0@GCC_3.5 1:4.5.0 + __aeabi_llsl@GCC_3.5 3.5 + __aeabi_llsr@GCC_3.5 3.5 + __aeabi_lmul@GCC_3.5 3.5 + __aeabi_ui2d@GCC_3.5 3.5 + __aeabi_ui2f@GCC_3.5 3.5 + __aeabi_uidiv@GCC_3.5 3.5 + __aeabi_uidivmod@GCC_3.5 3.5 + __aeabi_ul2d@GCC_3.5 3.5 + __aeabi_ul2f@GCC_3.5 3.5 + __aeabi_ulcmp@GCC_3.5 3.5 + __aeabi_uldivmod@GCC_3.5 3.5 + __aeabi_unwind_cpp_pr0@GCC_3.5 3.5 + __aeabi_unwind_cpp_pr1@GCC_3.5 3.5 + __aeabi_unwind_cpp_pr2@GCC_3.5 3.5 + __aeabi_uread4@GCC_3.5 3.5 + __aeabi_uread8@GCC_3.5 3.5 + __aeabi_uwrite4@GCC_3.5 3.5 + __aeabi_uwrite8@GCC_3.5 3.5 diff --git a/libgccjit0.symbols b/libgccjit0.symbols new file mode 100644 index 0000000..9db8ff3 --- /dev/null +++ b/libgccjit0.symbols @@ -0,0 +1,36 @@ +libgccjit.so.0 #PACKAGE# #MINVER# + (symver)LIBGCCJIT_ABI_0 5.1 + (symver)LIBGCCJIT_ABI_1 5.1 + (symver)LIBGCCJIT_ABI_2 5.1 + (symver)LIBGCCJIT_ABI_3 5.1 + (symver)LIBGCCJIT_ABI_4 6 + (symver)LIBGCCJIT_ABI_5 6 + (symver)LIBGCCJIT_ABI_6 7 + (symver)LIBGCCJIT_ABI_7 8 + (symver)LIBGCCJIT_ABI_8 8 + (symver)LIBGCCJIT_ABI_9 8 + (symver)LIBGCCJIT_ABI_10 8 + (symver)LIBGCCJIT_ABI_11 8 + (symver)LIBGCCJIT_ABI_12 10 + (symver)LIBGCCJIT_ABI_13 10 + (symver)LIBGCCJIT_ABI_14 11 + (symver)LIBGCCJIT_ABI_15 11 + (symver)LIBGCCJIT_ABI_16 12 + (symver)LIBGCCJIT_ABI_17 12 + (symver)LIBGCCJIT_ABI_18 12 + (symver)LIBGCCJIT_ABI_19 12 + (symver)LIBGCCJIT_ABI_20 12 + (symver)LIBGCCJIT_ABI_21 12 + (symver)LIBGCCJIT_ABI_22 12 + (symver)LIBGCCJIT_ABI_23 12 + (symver)LIBGCCJIT_ABI_24 12 + (symver)LIBGCCJIT_ABI_25 14 + (symver)LIBGCCJIT_ABI_26 14 + (symver)LIBGCCJIT_ABI_27 14.2 + (symver)LIBGCCJIT_ABI_28 15 + (symver)LIBGCCJIT_ABI_29 15 + (symver)LIBGCCJIT_ABI_30 15 + (symver)LIBGCCJIT_ABI_31 15 + (symver)LIBGCCJIT_ABI_32 15 + (symver)LIBGCCJIT_ABI_33 15 + (symver)LIBGCCJIT_ABI_34 15 diff --git a/libgcobol.symbols b/libgcobol.symbols new file mode 100644 index 0000000..4471d96 --- /dev/null +++ b/libgcobol.symbols @@ -0,0 +1,456 @@ +# SymbolsHelper-Confirmed: 15 amd64 arm64 ppc64el riscv64 +libgcobol.so.1 libgcobol1 #MINVER# + _Z11__gg__abortPKc@Base 15 + _Z12__gg__mabortv@Base 15 + _Z14gcobol_fileopsv@Base 15 + _Z18__gg__file_stashedv@Base 15 + (optional=templinst)_Z23enabled_exception_matchISt23_Rb_tree_const_iteratorI23cbl_enabled_exception_tEET_S3_S3_9ec_type_tm@Base 15 + _Z7flipperv@Base 15 + _ZGVZNK17cbl_declarative_t10match_fileEmE4pend@Base 15 + _ZN11ec_status_t16copy_environmentEv@Base 15 + _ZN11ec_status_t6updateEv@Base 15 + (arch=riscv64)_ZN11ec_status_tC1ERKS_@Base 15 + (arch=riscv64)_ZN11ec_status_tC2ERKS_@Base 15 + _ZN11ec_status_tD1Ev@Base 15 + _ZN11ec_status_tD2Ev@Base 15 + _ZN24cbl_enabled_exceptions_t6decodeERKSt6vectorImSaImEE@Base 15 + _ZN24cbl_enabled_exceptions_tD1Ev@Base 15 + _ZN24cbl_enabled_exceptions_tD2Ev@Base 15 + _ZNK11ec_status_t17reset_environmentEv@Base 15 + _ZNK11ec_status_t8is_fatalEv@Base 15 + _ZNK23cbl_enabled_exception_t4dumpEi@Base 15 + _ZNK24cbl_enabled_exceptions_t4dumpEPKc@Base 15 + _ZNK24cbl_enabled_exceptions_t5matchE9ec_type_tm@Base 15 + (optional=templinst)_ZNKSt10_HashtableItSt4pairIKthESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 + (optional=templinst)_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PvESaIS9_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE4findERS7_@Base 15 + (optional=templinst)_ZNSt10_HashtableIiSt4pairIKiPPPFvvEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS8_10_Hash_nodeIS6_Lb0EEEm@Base 15 + (optional=templinst)_ZNSt10_HashtableIiSt4pairIKiPPPFvvEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 + (optional=templinst)_ZNSt10_HashtableIiSt4pairIKiPPPcESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS7_10_Hash_nodeIS5_Lb0EEEm@Base 15 + (optional=templinst)_ZNSt10_HashtableImSt4pairIKm14alphabet_stateESaIS3_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 + (optional=templinst)_ZNSt10_HashtableImSt4pairIKmmESaIS2_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 + (optional=templinst)_ZNSt10_HashtableItSt4pairIKthESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEED1Ev@Base 15 + (optional=templinst)_ZNSt10_HashtableItSt4pairIKthESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEED2Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseI11id_2_resultSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseI11id_2_resultSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseISt17_Rb_tree_iteratorISt4pairIKSt6vectorIhSaIhEElEESaIS7_EED1Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseISt17_Rb_tree_iteratorISt4pairIKSt6vectorIhSaIhEElEESaIS7_EED2Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseIhSaIhEED1Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseIhSaIhEED2Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseImSaImEED1Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseImSaImEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPvSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S6_EEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPvSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S6_EEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIiPPPFvvESt4hashIiESt8equal_toIiESaISt4pairIKiS3_EEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIiPPPFvvESt4hashIiESt8equal_toIiESaISt4pairIKiS3_EEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIiPPPcSt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIiPPPcSt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIm14alphabet_stateSt4hashImESt8equal_toImESaISt4pairIKmS0_EEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIm14alphabet_stateSt4hashImESt8equal_toImESaISt4pairIKmS0_EEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapImSt6vectorImSaImEESt4hashImESt8equal_toImESaISt4pairIKmS2_EEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapImSt6vectorImSaImEESt4hashImESt8equal_toImESaISt4pairIKmS2_EEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapImmSt4hashImESt8equal_toImESaISt4pairIKmmEEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapImmSt4hashImESt8equal_toImESaISt4pairIKmmEEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIthSt4hashItESt8equal_toItESaISt4pairIKthEEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIthSt4hashItESt8equal_toItESaISt4pairIKthEEED2Ev@Base 15 + (optional=templinst)_ZNSt3setImSt4lessImESaImEED1Ev@Base 15 + (optional=templinst)_ZNSt3setImSt4lessImESaImEED2Ev@Base 15 + (optional=templinst)_ZNSt5dequeI11ec_status_tSaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt5dequeI11ec_status_tSaIS0_EE17_M_reallocate_mapEmb@Base 15 + (optional=templinst)_ZNSt5stackI11ec_status_tSt5dequeIS0_SaIS0_EEED1Ev@Base 15 + (optional=templinst)_ZNSt5stackI11ec_status_tSt5dequeIS0_SaIS0_EEED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorI11file_hole_tSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorI12file_index_tSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorI13program_stateSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorI13program_stateSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorI13program_stateSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorI17cbl_declarative_tSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorI17cbl_declarative_tSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorI17cbl_declarative_tSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorI7LV_DATASaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorI7LV_DATASaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorI9comparandSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorI9comparandSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorI9comparandSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorI9ec_type_tSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorI9ec_type_tSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_appendIJS5_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorIPvSaIS0_EE17_M_default_appendEm@Base 15 + (optional=templinst)_ZNSt6vectorIPvSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorIPvSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorIPvSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorISt17_Rb_tree_iteratorISt4pairIKS_IhSaIhEElEESaIS6_EE17_M_realloc_appendIJRKS6_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorIhSaIhEE17_M_realloc_appendIJRKhEEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorIiSaIiEE17_M_realloc_appendIJRKiEEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorImSaImEE17_M_realloc_appendIJRKmEEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorImSaImEED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorImSaImEED2Ev@Base 15 + (optional=templinst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructILb1EEEvPKcm@Base 15 + (optional=templinst)_ZNSt8_Rb_treeISt6vectorIhSaIhEESt4pairIKS2_lESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE11equal_rangeERS4_@Base 15 + (optional=templinst)_ZNSt8_Rb_treeImmSt9_IdentityImESt4lessImESaImEE16_M_insert_uniqueIRKmEESt4pairISt17_Rb_tree_iteratorImEbEOT_@Base 15 + (optional=templinst)_ZNSt8__detail9_Map_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_PvESaISA_ENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEixEOS6_@Base 15 + (optional=templinst)_ZNSt8__detail9_Map_baseImSt4pairIKm14alphabet_stateESaIS4_ENS_10_Select1stESt8equal_toImESt4hashImENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixERS2_@Base 15 + (optional=templinst)_ZNSt8__detail9_Map_baseImSt4pairIKmSt6vectorImSaImEEESaIS6_ENS_10_Select1stESt8equal_toImESt4hashImENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixERS2_@Base 15 + (optional=templinst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEElmNS0_5__ops15_Iter_comp_iterIPFimmEEEEvT_T0_SD_T1_T2_@Base 15 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEENS0_5__ops15_Iter_comp_iterIPFimmEEEEvT_SC_T0_@Base 15 + (optional=templinst)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEElNS0_5__ops15_Iter_comp_iterIPFimmEEEEvT_SC_T0_T1_@Base 15 + _ZZNK17cbl_declarative_t10match_fileEmE4pend@Base 15 + __gg___14_linage_counter6@Base 15 + __gg___data_dev_null@Base 15 + __gg___data_dev_stderr@Base 15 + __gg___data_dev_stdin@Base 15 + __gg___data_dev_stdout@Base 15 + __gg___dev_null@Base 15 + __gg___dev_stderr@Base 15 + __gg___dev_stdin@Base 15 + __gg___dev_stdout@Base 15 + __gg___file_status@Base 15 + __gg__abs@Base 15 + __gg__accept@Base 15 + __gg__accept_arg_value@Base 15 + __gg__accept_envar@Base 15 + __gg__acos@Base 15 + __gg__add_fixed_phase1@Base 15 + __gg__add_float_phase1@Base 15 + __gg__addf1_fixed_phase2@Base 15 + __gg__addf1_float_phase2@Base 15 + __gg__addf3@Base 15 + __gg__adjust_dest_size@Base 15 + __gg__allocate@Base 15 + __gg__alphabet_create@Base 15 + __gg__alphabet_states@Base 15 + __gg__alphabet_use@Base 15 + __gg__annuity@Base 15 + __gg__arithmetic_rounds@Base 15 + __gg__arithmetic_rounds_size@Base 15 + __gg__ascii_to_ascii@Base 15 + __gg__ascii_to_ascii_chr@Base 15 + __gg__ascii_to_console@Base 15 + __gg__ascii_to_ebcdic@Base 15 + __gg__ascii_to_ebcdic_chr@Base 15 + __gg__ascii_to_internal@Base 15 + __gg__ascii_to_internal_chr@Base 15 + __gg__ascii_to_internal_field@Base 15 + __gg__ascii_to_internal_str@Base 15 + __gg__asin@Base 15 + __gg__assign_value_from_stack@Base 15 + __gg__atan@Base 15 + __gg__binary_to_string@Base 15 + __gg__binary_to_string_internal@Base 15 + __gg__binary_value_from_field@Base 15 + __gg__binary_value_from_qualified_field@Base 15 + __gg__bitop@Base 15 + __gg__bitwise_op@Base 15 + __gg__byte_length@Base 15 + __gg__call_parameter_count@Base 15 + __gg__call_parameter_lengths@Base 15 + __gg__call_parameter_signature@Base 15 + __gg__char@Base 15 + __gg__check_fatal_exception@Base 15 + __gg__classify@Base 15 + __gg__clear_exception@Base 15 + __gg__clock_gettime@Base 15 + __gg__codeset_figurative_constants@Base 15 + __gg__combined_datetime@Base 15 + __gg__compare@Base 15 + __gg__compare_2@Base 15 + __gg__concat@Base 15 + __gg__console_to_ascii@Base 15 + __gg__console_to_ebcdic@Base 15 + __gg__console_to_internal@Base 15 + __gg__console_to_internal_cm@Base 15 + __gg__copy_as_big_endian@Base 15 + __gg__cos@Base 15 + __gg__cp1140_to_cp1252_values@Base 15 + __gg__cp1252_to_cp1140_values@Base 15 + __gg__cp1252_to_ebcdic_collation@Base 15 + __gg__ct_currency_signs@Base 15 + __gg__currency_sign@Base 15 + __gg__currency_sign_init@Base 15 + __gg__currency_signs@Base 15 + __gg__current_date@Base 15 + __gg__data__file_status@Base 15 + __gg__data_high_values@Base 15 + __gg__data_linage_counter@Base 15 + __gg__data_low_values@Base 15 + __gg__data_nulls@Base 15 + __gg__data_quotes@Base 15 + __gg__data_return_code@Base 15 + __gg__data_space@Base 15 + __gg__data_upsi_0@Base 15 + __gg__data_zeros@Base 15 + __gg__date_of_integer@Base 15 + __gg__date_to_yyyymmdd@Base 15 + __gg__day_of_integer@Base 15 + __gg__day_to_yyyyddd@Base 15 + __gg__deallocate@Base 15 + __gg__decimal_point@Base 15 + __gg__decimal_point_is_comma@Base 15 + __gg__decimal_separator@Base 15 + __gg__default_compute_error@Base 15 + __gg__default_currency_sign@Base 15 + __gg__dirty_to_binary_internal@Base 15 + __gg__dirty_to_binary_source@Base 15 + __gg__dirty_to_float@Base 15 + __gg__display@Base 15 + __gg__display_clean@Base 15 + __gg__display_int128@Base 15 + __gg__display_string@Base 15 + __gg__dividef1_phase2@Base 15 + __gg__dividef23@Base 15 + __gg__dividef45@Base 15 + __gg__double_to_target@Base 15 + __gg__e@Base 15 + __gg__ebcdic_codeset_in_use@Base 15 + __gg__ebcdic_to_ascii@Base 15 + __gg__ebcdic_to_console@Base 15 + __gg__ebcdic_to_cp1252_collation@Base 15 + __gg__entry_location@Base 15 + __gg__exception_code@Base 15 + __gg__exception_file_name@Base 15 + __gg__exception_file_status@Base 15 + __gg__exception_line_number@Base 15 + __gg__exception_paragraph@Base 15 + __gg__exception_pop@Base 15 + __gg__exception_program_id@Base 15 + __gg__exception_push@Base 15 + __gg__exception_section@Base 15 + __gg__exception_source_file@Base 15 + __gg__exception_statement@Base 15 + __gg__exception_table@Base 15 + __gg__exception_table_end@Base 15 + __gg__exit_address@Base 15 + __gg__exp10@Base 15 + __gg__exp@Base 15 + __gg__factorial@Base 15 + __gg__fetch_call_by_value_value@Base 15 + __gg__file_close@Base 15 + __gg__file_delete@Base 15 + __gg__file_init@Base 15 + __gg__file_open@Base 15 + __gg__file_read@Base 15 + __gg__file_reopen@Base 15 + __gg__file_rewrite@Base 15 + __gg__file_sort_ff_input@Base 15 + __gg__file_sort_ff_output@Base 15 + __gg__file_start@Base 15 + __gg__file_stash@Base 15 + __gg__file_status_word@Base 15 + __gg__file_write@Base 15 + __gg__fixed_phase2_assign_to_c@Base 15 + __gg__float128_from_field@Base 15 + __gg__float128_from_int128@Base 15 + __gg__float128_from_location@Base 15 + __gg__float128_from_qualified_field@Base 15 + __gg__float128_to_field@Base 15 + __gg__float128_to_qualified_field@Base 15 + __gg__float32_from_128@Base 15 + __gg__float32_from_64@Base 15 + __gg__float32_from_int128@Base 15 + __gg__float64_from_128@Base 15 + __gg__float64_from_int128@Base 15 + __gg__float_phase2_assign_to_c@Base 15 + __gg__formatted_current_date@Base 15 + __gg__formatted_date@Base 15 + __gg__formatted_datetime@Base 15 + __gg__formatted_time@Base 15 + __gg__fourplet_flags@Base 15 + __gg__fourplet_flags_size@Base 15 + __gg__fprintf_stderr@Base 15 + __gg__fraction_part@Base 15 + __gg__func_exception_file@Base 15 + __gg__func_exception_location@Base 15 + __gg__func_exception_statement@Base 15 + __gg__func_exception_status@Base 15 + __gg__function_handle_from_cobpath@Base 15 + __gg__function_handle_from_literal@Base 15 + __gg__function_handle_from_name@Base 15 + __gg__get_argc@Base 15 + __gg__get_argv@Base 15 + __gg__get_command_line@Base 15 + __gg__get_date_dow@Base 15 + __gg__get_date_hhmmssff@Base 15 + __gg__get_date_yyddd@Base 15 + __gg__get_date_yymmdd@Base 15 + __gg__get_date_yyyymmdd@Base 15 + __gg__get_decimal_point@Base 15 + __gg__get_decimal_separator@Base 15 + __gg__get_default_currency_string@Base 15 + __gg__get_env_name@Base 15 + __gg__get_env_value@Base 15 + __gg__get_figconst_data@Base 15 + __gg__get_file_descriptor@Base 15 + __gg__get_integer_binary_value@Base 15 + __gg__get_yyyyddd@Base 15 + __gg__globals_are_initialized@Base 15 + __gg__handle_error@Base 15 + __gg__hex_of@Base 15 + __gg__high_value_character@Base 15 + __gg__high_values@Base 15 + __gg__highest_algebraic@Base 15 + __gg__init_program_state@Base 15 + __gg__initialize_variable@Base 15 + __gg__initialize_variable_clean@Base 15 + __gg__inspect_format_1@Base 15 + __gg__inspect_format_2@Base 15 + __gg__inspect_format_4@Base 15 + __gg__int128_to_field@Base 15 + __gg__int128_to_qualified_field@Base 15 + __gg__integer@Base 15 + __gg__integer_from_float128@Base 15 + __gg__integer_from_qualified_field@Base 15 + __gg__integer_of_date@Base 15 + __gg__integer_of_day@Base 15 + __gg__integer_of_formatted_date@Base 15 + __gg__integer_part@Base 15 + __gg__internal_codeset_map@Base 15 + __gg__internal_to_ascii@Base 15 + __gg__internal_to_console_cm@Base 15 + __gg__internal_to_console_in_place@Base 15 + __gg__is_canceled@Base 15 + __gg__is_float_infinite@Base 15 + __gg__just_mangle_name@Base 15 + __gg__literaln_alpha_compare@Base 15 + __gg__locale_compare@Base 15 + __gg__locale_date@Base 15 + __gg__locale_time@Base 15 + __gg__locale_time_from_seconds@Base 15 + __gg__log10@Base 15 + __gg__log@Base 15 + __gg__low_value_character@Base 15 + __gg__low_values@Base 15 + __gg__lower_case@Base 15 + __gg__lowest_algebraic@Base 15 + __gg__main_called@Base 15 + __gg__match_exception@Base 15 + __gg__max@Base 15 + __gg__mean@Base 15 + __gg__median@Base 15 + __gg__merge_files@Base 15 + __gg__midrange@Base 15 + __gg__min@Base 15 + __gg__mirror_range@Base 15 + __gg__mod@Base 15 + __gg__module_name@Base 15 + __gg__module_name_pop@Base 15 + __gg__module_name_push@Base 15 + __gg__move@Base 15 + __gg__move_literala@Base 15 + __gg__multiplyf1_phase1@Base 15 + __gg__multiplyf1_phase2@Base 15 + __gg__multiplyf2@Base 15 + __gg__nop@Base 15 + __gg__nulls@Base 15 + __gg__numval@Base 15 + __gg__numval_c@Base 15 + __gg__numval_f@Base 15 + __gg__one_to_one_values@Base 15 + __gg__ord@Base 15 + __gg__ord_max@Base 15 + __gg__ord_min@Base 15 + __gg__parser_set_conditional@Base 15 + __gg__pi@Base 15 + __gg__pop_local_variables@Base 15 + __gg__pop_program_state@Base 15 + __gg__pow@Base 15 + __gg__power_of_ten@Base 15 + __gg__present_value@Base 15 + __gg__process_compute_error@Base 15 + __gg__pseudo_return_bookmark@Base 15 + __gg__pseudo_return_flush@Base 15 + __gg__pseudo_return_pop@Base 15 + __gg__pseudo_return_push@Base 15 + __gg__psz_to_alpha_move@Base 15 + __gg__push_local_variable@Base 15 + __gg__push_program_state@Base 15 + __gg__quote_character@Base 15 + __gg__quotes@Base 15 + __gg__random@Base 15 + __gg__random_next@Base 15 + __gg__range@Base 15 + __gg__raw_to_ascii@Base 15 + __gg__raw_to_ebcdic@Base 15 + __gg__raw_to_internal@Base 15 + __gg__rdigits@Base 15 + __gg__realloc_if_necessary@Base 15 + __gg__rem@Base 15 + __gg__remove_trailing_zeroes@Base 15 + __gg__resize_int_p@Base 15 + __gg__resize_treeplet@Base 15 + __gg__return_code@Base 15 + __gg__reverse@Base 15 + __gg__routine_to_call@Base 15 + __gg__scale_by_power_of_ten_1@Base 15 + __gg__scale_by_power_of_ten_2@Base 15 + __gg__seconds_from_formatted_time@Base 15 + __gg__seconds_past_midnight@Base 15 + __gg__set_arg_num@Base 15 + __gg__set_env_name@Base 15 + __gg__set_env_value@Base 15 + __gg__set_envar@Base 15 + __gg__set_exception_code@Base 15 + __gg__set_exception_environment@Base 15 + __gg__set_exception_file@Base 15 + __gg__set_initial_switch_value@Base 15 + __gg__set_internal_codeset@Base 15 + __gg__set_pointer@Base 15 + __gg__set_program_list@Base 15 + __gg__set_program_name@Base 15 + __gg__set_truncation_mode@Base 15 + __gg__set_user_status@Base 15 + __gg__setop_compare@Base 15 + __gg__sign@Base 15 + __gg__sin@Base 15 + __gg__sleep@Base 15 + __gg__sort_table@Base 15 + __gg__sort_workfile@Base 15 + __gg__space@Base 15 + __gg__spaces@Base 15 + __gg__sqrt@Base 15 + __gg__standard_deviation@Base 15 + __gg__stash_argc_argv@Base 15 + __gg__string@Base 15 + __gg__string_to_alpha_edited@Base 15 + __gg__string_to_alpha_edited_ascii@Base 15 + __gg__string_to_numeric_edited@Base 15 + __gg__substitute@Base 15 + __gg__subtractf1_fixed_phase2@Base 15 + __gg__subtractf1_float_phase2@Base 15 + __gg__subtractf2_fixed_phase1@Base 15 + __gg__subtractf2_float_phase1@Base 15 + __gg__subtractf3@Base 15 + __gg__sum@Base 15 + __gg__tan@Base 15 + __gg__test_date_yyyymmdd@Base 15 + __gg__test_day_yyyyddd@Base 15 + __gg__test_formatted_datetime@Base 15 + __gg__test_numval@Base 15 + __gg__test_numval_c@Base 15 + __gg__test_numval_f@Base 15 + __gg__text_conversion_override@Base 15 + __gg__to_be_canceled@Base 15 + __gg__treeplet_1f@Base 15 + __gg__treeplet_1o@Base 15 + __gg__treeplet_1s@Base 15 + __gg__treeplet_2f@Base 15 + __gg__treeplet_2o@Base 15 + __gg__treeplet_2s@Base 15 + __gg__treeplet_3f@Base 15 + __gg__treeplet_3o@Base 15 + __gg__treeplet_3s@Base 15 + __gg__treeplet_4f@Base 15 + __gg__treeplet_4o@Base 15 + __gg__treeplet_4s@Base 15 + __gg__trim@Base 15 + __gg__unique_prog_id@Base 15 + __gg__unstring@Base 15 + __gg__upper_case@Base 15 + __gg__upsi@Base 15 + __gg__variables_to_init@Base 15 + __gg__variance@Base 15 + __gg__when_compiled@Base 15 + __gg__year_to_yyyy@Base 15 + __gg__zeros@Base 15 + _from_ctype@Base 15 + _to_ctype@Base 15 diff --git a/libgdiagnostics0.symbols b/libgdiagnostics0.symbols new file mode 100644 index 0000000..7b2059b --- /dev/null +++ b/libgdiagnostics0.symbols @@ -0,0 +1,2 @@ +libgdiagnostics.so.0 #PACKAGE# #MINVER# + (symver)LIBGDIAGNOSTICS_ABI_0 15 diff --git a/libgfortran.symbols b/libgfortran.symbols new file mode 100644 index 0000000..27d5dfb --- /dev/null +++ b/libgfortran.symbols @@ -0,0 +1,13 @@ +libgfortran.so.5 #PACKAGE# #MINVER# + (symver)GFORTRAN_8 8 + (symver)GFORTRAN_9 9 + (symver)GFORTRAN_9.2 9.1 + (symver)GFORTRAN_10 10 + (symver)GFORTRAN_10.2 10.2 + (symver)GFORTRAN_12 11.2 + (symver)GFORTRAN_13 13 + (symver)GFORTRAN_14 15 + (symver)GFORTRAN_15 15 + (symver)GFORTRAN_15.2 15.2 + (symver)GFORTRAN_C99_8 8 + (symver)GFORTRAN_F2C_8 8 diff --git a/libgm2.symbols b/libgm2.symbols new file mode 100644 index 0000000..39758b6 --- /dev/null +++ b/libgm2.symbols @@ -0,0 +1,1644 @@ +libm2cor.so.19 #PACKAGE# #MINVER# + Debug_DebugString@Base 10 + Debug_Halt@Base 10 + Debug_PushOutput@Base 10 + Executive_DebugProcess@Base 10 + Executive_GetCurrentProcess@Base 10 + Executive_InitProcess@Base 10 + Executive_InitSemaphore@Base 10 + Executive_KillProcess@Base 10 + Executive_ProcessName@Base 10 + Executive_Ps@Base 10 + Executive_Resume@Base 10 + Executive_RotateRunQueue@Base 10 + Executive_Signal@Base 10 + Executive_Suspend@Base 10 + Executive_Wait@Base 10 + Executive_WaitForIO@Base 10 + KeyBoardLEDs_SwitchCaps@Base 10 + KeyBoardLEDs_SwitchLeds@Base 10 + KeyBoardLEDs_SwitchNum@Base 10 + KeyBoardLEDs_SwitchScroll@Base 10 + SYSTEM_IOTRANSFER@Base 10 + SYSTEM_LISTEN@Base 10 + SYSTEM_ListenLoop@Base 10 + SYSTEM_NEWPROCESS@Base 10 + SYSTEM_RotateLeft@Base 10 + SYSTEM_RotateRight@Base 10 + SYSTEM_RotateVal@Base 10 + SYSTEM_ShiftLeft@Base 10 + SYSTEM_ShiftRight@Base 10 + SYSTEM_ShiftVal@Base 10 + SYSTEM_TRANSFER@Base 10 + SYSTEM_TurnInterrupts@Base 10 + TimerHandler_ArmEvent@Base 10 + TimerHandler_Cancel@Base 10 + TimerHandler_GetTicks@Base 10 + TimerHandler_ReArmEvent@Base 10 + TimerHandler_Sleep@Base 10 + TimerHandler_WaitOn@Base 10 + _M2_Debug_finish@Base 10 + _M2_Debug_init@Base 10 + _M2_Executive_finish@Base 10 + _M2_Executive_init@Base 10 + _M2_KeyBoardLEDs_finish@Base 10 + _M2_KeyBoardLEDs_init@Base 10 + _M2_SYSTEM_finish@Base 10 + _M2_SYSTEM_init@Base 10 + _M2_TimerHandler_finish@Base 10 + _M2_TimerHandler_init@Base 10 +libm2iso.so.18 #PACKAGE# #MINVER# + COROUTINES_ATTACH@Base 10 + COROUTINES_CURRENT@Base 10 + COROUTINES_DETACH@Base 10 + COROUTINES_HANDLER@Base 10 + COROUTINES_IOTRANSFER@Base 10 + COROUTINES_IsATTACHED@Base 10 + COROUTINES_LISTEN@Base 10 + COROUTINES_NEWCOROUTINE@Base 10 + COROUTINES_PROT@Base 10 + COROUTINES_TRANSFER@Base 10 + COROUTINES_TurnInterrupts@Base 10 + CharClass_IsControl@Base 10 + CharClass_IsLetter@Base 10 + CharClass_IsLower@Base 10 + CharClass_IsNumeric@Base 10 + CharClass_IsUpper@Base 10 + CharClass_IsWhiteSpace@Base 10 + ClientSocket_Close@Base 10 + ClientSocket_IsSocket@Base 10 + ClientSocket_OpenSocket@Base 10 + ComplexMath_IsCMathException@Base 10 + ComplexMath_abs@Base 10 + ComplexMath_arccos@Base 10 + ComplexMath_arcsin@Base 10 + ComplexMath_arctan@Base 10 + ComplexMath_arg@Base 10 + ComplexMath_conj@Base 10 + ComplexMath_cos@Base 10 + ComplexMath_exp@Base 10 + ComplexMath_ln@Base 10 + ComplexMath_polarToComplex@Base 10 + ComplexMath_power@Base 10 + ComplexMath_scalarMult@Base 10 + ComplexMath_sin@Base 10 + ComplexMath_sqrt@Base 10 + ComplexMath_tan@Base 10 + ConvStringLong_RealToEngString@Base 10 + ConvStringLong_RealToFixedString@Base 10 + ConvStringLong_RealToFloatString@Base 10 + ConvStringReal_RealToEngString@Base 10 + ConvStringReal_RealToFixedString@Base 10 + ConvStringReal_RealToFloatString@Base 10 + EXCEPTIONS_AllocateSource@Base 10 + EXCEPTIONS_CurrentNumber@Base 10 + EXCEPTIONS_GetMessage@Base 10 + EXCEPTIONS_IsCurrentSource@Base 10 + EXCEPTIONS_IsExceptionalExecution@Base 10 + EXCEPTIONS_RAISE@Base 10 + ErrnoCategory_GetOpenResults@Base 10 + ErrnoCategory_IsErrnoHard@Base 10 + ErrnoCategory_IsErrnoSoft@Base 10 + ErrnoCategory_UnAvailable@Base 10 + GeneralUserExceptions_GeneralException@Base 10 + GeneralUserExceptions_IsGeneralException@Base 10 + GeneralUserExceptions_RaiseGeneralException@Base 10 + IOChan_ChanException@Base 10 + IOChan_CurrentFlags@Base 10 + IOChan_DeviceError@Base 10 + IOChan_Flush@Base 10 + IOChan_GetName@Base 10 + IOChan_InvalidChan@Base 10 + IOChan_IsChanException@Base 10 + IOChan_Look@Base 10 + IOChan_RawRead@Base 10 + IOChan_RawWrite@Base 10 + IOChan_ReadResult@Base 10 + IOChan_Reset@Base 10 + IOChan_SetReadResult@Base 10 + IOChan_Skip@Base 10 + IOChan_SkipLook@Base 10 + IOChan_TextRead@Base 10 + IOChan_TextWrite@Base 10 + IOChan_WriteLn@Base 10 + IOLink_AllocateDeviceId@Base 10 + IOLink_DeviceTablePtrValue@Base 10 + IOLink_IOException@Base 10 + IOLink_IsDevice@Base 10 + IOLink_IsIOException@Base 10 + IOLink_MakeChan@Base 10 + IOLink_RAISEdevException@Base 10 + IOLink_UnMakeChan@Base 10 + IOResult_ReadResult@Base 10 + LongComplexMath_IsCMathException@Base 10 + LongComplexMath_abs@Base 10 + LongComplexMath_arccos@Base 10 + LongComplexMath_arcsin@Base 10 + LongComplexMath_arctan@Base 10 + LongComplexMath_arg@Base 10 + LongComplexMath_conj@Base 10 + LongComplexMath_cos@Base 10 + LongComplexMath_exp@Base 10 + LongComplexMath_ln@Base 10 + LongComplexMath_polarToComplex@Base 10 + LongComplexMath_power@Base 10 + LongComplexMath_scalarMult@Base 10 + LongComplexMath_sin@Base 10 + LongComplexMath_sqrt@Base 10 + LongComplexMath_tan@Base 10 + LongConv_FormatReal@Base 10 + LongConv_IsRConvException@Base 10 + LongConv_LengthEngReal@Base 10 + LongConv_LengthFixedReal@Base 10 + LongConv_LengthFloatReal@Base 10 + LongConv_ScanReal@Base 10 + LongConv_ValueReal@Base 10 + LongIO_ReadReal@Base 10 + LongIO_WriteEng@Base 10 + LongIO_WriteFixed@Base 10 + LongIO_WriteFloat@Base 10 + LongIO_WriteReal@Base 10 + LongMath_IsRMathException@Base 10 + LongMath_arccos@Base 10 + LongMath_arcsin@Base 10 + LongMath_arctan@Base 10 + LongMath_cos@Base 10 + LongMath_exp@Base 10 + LongMath_ln@Base 10 + LongMath_power@Base 10 + LongMath_round@Base 10 + LongMath_sin@Base 10 + LongMath_sqrt@Base 10 + LongMath_tan@Base 10 + LongStr_RealToEng@Base 10 + LongStr_RealToFixed@Base 10 + LongStr_RealToFloat@Base 10 + LongStr_RealToStr@Base 10 + LongStr_StrToReal@Base 10 + LongWholeIO_ReadCard@Base 10 + LongWholeIO_ReadInt@Base 10 + LongWholeIO_WriteCard@Base 10 + LongWholeIO_WriteInt@Base 10 + LowLong_IsLowException@Base 10 + LowLong_currentMode@Base 10 + LowLong_exponent@Base 10 + LowLong_fraction@Base 10 + LowLong_fractpart@Base 10 + LowLong_intpart@Base 10 + LowLong_pred@Base 10 + LowLong_round@Base 10 + LowLong_scale@Base 10 + LowLong_setMode@Base 10 + LowLong_sign@Base 10 + LowLong_succ@Base 10 + LowLong_synthesize@Base 10 + LowLong_trunc@Base 10 + LowLong_ulp@Base 10 + LowReal_IsLowException@Base 10 + LowReal_currentMode@Base 10 + LowReal_exponent@Base 10 + LowReal_fraction@Base 10 + LowReal_fractpart@Base 10 + LowReal_intpart@Base 10 + LowReal_pred@Base 10 + LowReal_round@Base 10 + LowReal_scale@Base 10 + LowReal_setMode@Base 10 + LowReal_sign@Base 10 + LowReal_succ@Base 10 + LowReal_synthesize@Base 10 + LowReal_trunc@Base 10 + LowReal_ulp@Base 10 + LowShort_IsLowException@Base 10 + LowShort_currentMode@Base 10 + LowShort_exponent@Base 10 + LowShort_fraction@Base 10 + LowShort_fractpart@Base 10 + LowShort_intpart@Base 10 + LowShort_pred@Base 10 + LowShort_round@Base 10 + LowShort_scale@Base 10 + LowShort_setMode@Base 10 + LowShort_sign@Base 10 + LowShort_succ@Base 10 + LowShort_synthesize@Base 10 + LowShort_trunc@Base 10 + LowShort_ulp@Base 10 + M2EXCEPTION_IsM2Exception@Base 10 + M2EXCEPTION_M2Exception@Base 10 + M2RTS_AssignmentException@Base 10 + M2RTS_CaseException@Base 10 + M2RTS_DecException@Base 10 + M2RTS_DynamicArraySubscriptException@Base 10 + M2RTS_ErrorMessage@Base 10 + M2RTS_ExclException@Base 10 + M2RTS_ExecuteInitialProcedures@Base 10 + M2RTS_ExecuteTerminationProcedures@Base 10 + M2RTS_ExitOnHalt@Base 10 + M2RTS_ForLoopBeginException@Base 10 + M2RTS_ForLoopEndException@Base 10 + M2RTS_ForLoopToException@Base 10 + M2RTS_HALT@Base 10 + M2RTS_Halt@Base 10 + M2RTS_HasHalted@Base 10 + M2RTS_IncException@Base 10 + M2RTS_InclException@Base 10 + M2RTS_InstallInitialProcedure@Base 10 + M2RTS_InstallTerminationProcedure@Base 10 + M2RTS_IsTerminating@Base 10 + M2RTS_Length@Base 10 + M2RTS_NoException@Base 10 + M2RTS_NoReturnException@Base 10 + M2RTS_ParameterException@Base 10 + M2RTS_PointerNilException@Base 10 + M2RTS_RealValueException@Base 10 + M2RTS_ReturnException@Base 10 + M2RTS_RotateException@Base 10 + M2RTS_ShiftException@Base 10 + M2RTS_StaticArraySubscriptException@Base 10 + M2RTS_WholeNonPosDivException@Base 10 + M2RTS_WholeNonPosModException@Base 10 + M2RTS_WholeValueException@Base 10 + M2RTS_WholeZeroDivException@Base 10 + M2RTS_WholeZeroRemException@Base 10 + MemStream_Close@Base 10 + MemStream_IsMem@Base 10 + MemStream_OpenRead@Base 10 + MemStream_OpenWrite@Base 10 + MemStream_Reread@Base 10 + MemStream_Rewrite@Base 10 + Processes_Activate@Base 10 + Processes_Attach@Base 10 + Processes_Create@Base 10 + Processes_Detach@Base 10 + Processes_Handler@Base 10 + Processes_IsAttached@Base 10 + Processes_IsProcessesException@Base 10 + Processes_Me@Base 10 + Processes_MyParam@Base 10 + Processes_ProcessesException@Base 10 + Processes_Start@Base 10 + Processes_StopMe@Base 10 + Processes_SuspendMe@Base 10 + Processes_SuspendMeAndActivate@Base 10 + Processes_Switch@Base 10 + Processes_UrgencyOf@Base 10 + Processes_Wait@Base 10 + ProgramArgs_ArgChan@Base 10 + ProgramArgs_IsArgPresent@Base 10 + ProgramArgs_NextArg@Base 10 + RTco_currentInterruptLevel@Base 10 + RTco_currentThread@Base 10 + RTco_init@Base 10 + RTco_initSemaphore@Base 10 + RTco_initThread@Base 10 + RTco_select@Base 10 + RTco_signal@Base 10 + RTco_signalThread@Base 10 + RTco_transfer@Base 10 + RTco_turnInterrupts@Base 10 + RTco_wait@Base 10 + RTco_waitThread@Base 10 + RTdata_GetData@Base 10 + RTdata_InitData@Base 10 + RTdata_KillData@Base 10 + RTdata_MakeModuleId@Base 10 + RTentity_DelKey@Base 10 + RTentity_GetKey@Base 10 + RTentity_InitGroup@Base 10 + RTentity_IsIn@Base 10 + RTentity_KillGroup@Base 10 + RTentity_PutKey@Base 10 + RTfio_dogeterrno@Base 10 + RTfio_dorbytes@Base 10 + RTfio_doreadchar@Base 10 + RTfio_dounreadchar@Base 10 + RTfio_dowbytes@Base 10 + RTfio_dowriteln@Base 10 + RTfio_iseof@Base 10 + RTfio_iseoln@Base 10 + RTfio_iserror@Base 10 + RTgen_InitChanDev@Base 10 + RTgen_KillChanDev@Base 10 + RTgen_RaiseEOFinLook@Base 10 + RTgen_RaiseEOFinSkip@Base 10 + RTgen_checkErrno@Base 10 + RTgen_doLook@Base 10 + RTgen_doReadLocs@Base 10 + RTgen_doReadText@Base 10 + RTgen_doSkip@Base 10 + RTgen_doSkipLook@Base 10 + RTgen_doWriteLn@Base 10 + RTgen_doWriteLocs@Base 10 + RTgen_doWriteText@Base 10 + RTgenif_InitGenDevIF@Base 10 + RTgenif_KillGenDevIF@Base 10 + RTgenif_doGetErrno@Base 10 + RTgenif_doRBytes@Base 10 + RTgenif_doReadChar@Base 10 + RTgenif_doUnReadChar@Base 10 + RTgenif_doWBytes@Base 10 + RTgenif_doWrLn@Base 10 + RTgenif_getDID@Base 10 + RTgenif_isEOF@Base 10 + RTgenif_isEOLN@Base 10 + RTgenif_isError@Base 10 + RTio_GetDeviceId@Base 10 + RTio_GetDevicePtr@Base 10 + RTio_GetFile@Base 10 + RTio_InitChanId@Base 10 + RTio_KillChanId@Base 10 + RTio_NilChanId@Base 10 + RTio_SetDeviceId@Base 10 + RTio_SetDevicePtr@Base 10 + RTio_SetFile@Base 10 + RandomNumber_RandomBytes@Base 10 + RandomNumber_RandomCard@Base 10 + RandomNumber_RandomInit@Base 10 + RandomNumber_RandomInt@Base 10 + RandomNumber_RandomLongCard@Base 10 + RandomNumber_RandomLongInt@Base 10 + RandomNumber_RandomLongReal@Base 10 + RandomNumber_RandomReal@Base 10 + RandomNumber_RandomShortCard@Base 10 + RandomNumber_RandomShortInt@Base 10 + RandomNumber_RandomShortReal@Base 10 + RandomNumber_Randomize@Base 10 + RawIO_Read@Base 10 + RawIO_Write@Base 10 + RealConv_FormatReal@Base 10 + RealConv_IsRConvException@Base 10 + RealConv_LengthEngReal@Base 10 + RealConv_LengthFixedReal@Base 10 + RealConv_LengthFloatReal@Base 10 + RealConv_ScanReal@Base 10 + RealConv_ValueReal@Base 10 + RealIO_ReadReal@Base 10 + RealIO_WriteEng@Base 10 + RealIO_WriteFixed@Base 10 + RealIO_WriteFloat@Base 10 + RealIO_WriteReal@Base 10 + RealMath_IsRMathException@Base 10 + RealMath_arccos@Base 10 + RealMath_arcsin@Base 10 + RealMath_arctan@Base 10 + RealMath_cos@Base 10 + RealMath_exp@Base 10 + RealMath_ln@Base 10 + RealMath_power@Base 10 + RealMath_round@Base 10 + RealMath_sin@Base 10 + RealMath_sqrt@Base 10 + RealMath_tan@Base 10 + RealStr_RealToEng@Base 10 + RealStr_RealToFixed@Base 10 + RealStr_RealToFloat@Base 10 + RealStr_RealToStr@Base 10 + RealStr_StrToReal@Base 10 + RndFile_Close@Base 10 + RndFile_CurrentPos@Base 10 + RndFile_EndPos@Base 10 + RndFile_IsRndFile@Base 10 + RndFile_IsRndFileException@Base 10 + RndFile_NewPos@Base 10 + RndFile_OpenClean@Base 10 + RndFile_OpenOld@Base 10 + RndFile_SetPos@Base 10 + RndFile_StartPos@Base 10 + SIOResult_ReadResult@Base 10 + SLongIO_ReadReal@Base 10 + SLongIO_WriteEng@Base 10 + SLongIO_WriteFixed@Base 10 + SLongIO_WriteFloat@Base 10 + SLongIO_WriteReal@Base 10 + SLongWholeIO_ReadCard@Base 10 + SLongWholeIO_ReadInt@Base 10 + SLongWholeIO_WriteCard@Base 10 + SLongWholeIO_WriteInt@Base 10 + SRawIO_Read@Base 10 + SRawIO_Write@Base 10 + SRealIO_ReadReal@Base 10 + SRealIO_WriteEng@Base 10 + SRealIO_WriteFixed@Base 10 + SRealIO_WriteFloat@Base 10 + SRealIO_WriteReal@Base 10 + SShortIO_ReadReal@Base 10 + SShortIO_WriteEng@Base 10 + SShortIO_WriteFixed@Base 10 + SShortIO_WriteFloat@Base 10 + SShortIO_WriteReal@Base 10 + SShortWholeIO_ReadCard@Base 10 + SShortWholeIO_ReadInt@Base 10 + SShortWholeIO_WriteCard@Base 10 + SShortWholeIO_WriteInt@Base 10 + STextIO_ReadChar@Base 10 + STextIO_ReadRestLine@Base 10 + STextIO_ReadString@Base 10 + STextIO_ReadToken@Base 10 + STextIO_SkipLine@Base 10 + STextIO_WriteChar@Base 10 + STextIO_WriteLn@Base 10 + STextIO_WriteString@Base 10 + SWholeIO_ReadCard@Base 10 + SWholeIO_ReadInt@Base 10 + SWholeIO_WriteCard@Base 10 + SWholeIO_WriteInt@Base 10 + SYSTEM_RotateLeft@Base 10 + SYSTEM_RotateRight@Base 10 + SYSTEM_RotateVal@Base 10 + SYSTEM_ShiftLeft@Base 10 + SYSTEM_ShiftRight@Base 10 + SYSTEM_ShiftVal@Base 10 + Semaphores_Claim@Base 10 + Semaphores_CondClaim@Base 10 + Semaphores_Create@Base 10 + Semaphores_Destroy@Base 10 + Semaphores_Release@Base 10 + SeqFile_Close@Base 10 + SeqFile_IsSeqFile@Base 10 + SeqFile_OpenAppend@Base 10 + SeqFile_OpenRead@Base 10 + SeqFile_OpenWrite@Base 10 + SeqFile_Reread@Base 10 + SeqFile_Rewrite@Base 10 + ServerSocket_Close@Base 10 + ServerSocket_IsSocket@Base 10 + ServerSocket_OpenAccept@Base 10 + ServerSocket_OpenSocketBindListen@Base 10 + ShortComplexMath_IsCMathException@Base 10 + ShortComplexMath_abs@Base 10 + ShortComplexMath_arccos@Base 10 + ShortComplexMath_arcsin@Base 10 + ShortComplexMath_arctan@Base 10 + ShortComplexMath_arg@Base 10 + ShortComplexMath_conj@Base 10 + ShortComplexMath_cos@Base 10 + ShortComplexMath_exp@Base 10 + ShortComplexMath_ln@Base 10 + ShortComplexMath_polarToComplex@Base 10 + ShortComplexMath_power@Base 10 + ShortComplexMath_scalarMult@Base 10 + ShortComplexMath_sin@Base 10 + ShortComplexMath_sqrt@Base 10 + ShortComplexMath_tan@Base 10 + ShortIO_ReadReal@Base 10 + ShortIO_WriteEng@Base 10 + ShortIO_WriteFixed@Base 10 + ShortIO_WriteFloat@Base 10 + ShortIO_WriteReal@Base 10 + ShortWholeIO_ReadCard@Base 10 + ShortWholeIO_ReadInt@Base 10 + ShortWholeIO_WriteCard@Base 10 + ShortWholeIO_WriteInt@Base 10 + SimpleCipher_InsertCipherLayer@Base 10 + SimpleCipher_RemoveCipherLayer@Base 10 + StdChans_ErrChan@Base 10 + StdChans_InChan@Base 10 + StdChans_NullChan@Base 10 + StdChans_OutChan@Base 10 + StdChans_SetErrChan@Base 10 + StdChans_SetInChan@Base 10 + StdChans_SetOutChan@Base 10 + StdChans_StdErrChan@Base 10 + StdChans_StdInChan@Base 10 + StdChans_StdOutChan@Base 10 + Storage_ALLOCATE@Base 10 + Storage_DEALLOCATE@Base 10 + Storage_IsStorageException@Base 10 + Storage_REALLOCATE@Base 10 + Storage_StorageException@Base 10 + StreamFile_Close@Base 10 + StreamFile_IsStreamFile@Base 10 + StreamFile_Open@Base 10 + StringChan_writeFieldWidth@Base 10 + StringChan_writeString@Base 10 + Strings_Append@Base 10 + Strings_Assign@Base 10 + Strings_CanAppendAll@Base 10 + Strings_CanAssignAll@Base 10 + Strings_CanConcatAll@Base 10 + Strings_CanDeleteAll@Base 10 + Strings_CanExtractAll@Base 10 + Strings_CanInsertAll@Base 10 + Strings_CanReplaceAll@Base 10 + Strings_Capitalize@Base 10 + Strings_Compare@Base 10 + Strings_Concat@Base 10 + Strings_Delete@Base 10 + Strings_Equal@Base 10 + Strings_Extract@Base 10 + Strings_FindDiff@Base 10 + Strings_FindNext@Base 10 + Strings_FindPrev@Base 10 + Strings_Insert@Base 10 + Strings_Length@Base 10 + Strings_Replace@Base 10 + SysClock_CanGetClock@Base 10 + SysClock_CanSetClock@Base 10 + SysClock_GetClock@Base 10 + SysClock_IsValidDateTime@Base 10 + SysClock_SetClock@Base 10 + TERMINATION_HasHalted@Base 10 + TERMINATION_IsTerminating@Base 10 + TermFile_Close@Base 10 + TermFile_IsTermFile@Base 10 + TermFile_Open@Base 10 + TextIO_ReadChar@Base 10 + TextIO_ReadRestLine@Base 10 + TextIO_ReadString@Base 10 + TextIO_ReadToken@Base 10 + TextIO_SkipLine@Base 10 + TextIO_WriteChar@Base 10 + TextIO_WriteLn@Base 10 + TextIO_WriteString@Base 10 + WholeConv_FormatCard@Base 10 + WholeConv_FormatInt@Base 10 + WholeConv_IsWholeConvException@Base 10 + WholeConv_LengthCard@Base 10 + WholeConv_LengthInt@Base 10 + WholeConv_ScanCard@Base 10 + WholeConv_ScanInt@Base 10 + WholeConv_ValueCard@Base 10 + WholeConv_ValueInt@Base 10 + WholeIO_ReadCard@Base 10 + WholeIO_ReadInt@Base 10 + WholeIO_WriteCard@Base 10 + WholeIO_WriteInt@Base 10 + WholeStr_CardToStr@Base 10 + WholeStr_IntToStr@Base 10 + WholeStr_StrToCard@Base 10 + WholeStr_StrToInt@Base 10 + _M2_COROUTINES_finish@Base 10 + _M2_COROUTINES_init@Base 10 + _M2_ChanConsts_finish@Base 10 + _M2_ChanConsts_init@Base 10 + _M2_CharClass_finish@Base 10 + _M2_CharClass_init@Base 10 + _M2_ClientSocket_finish@Base 10 + _M2_ClientSocket_init@Base 10 + _M2_ComplexMath_finish@Base 10 + _M2_ComplexMath_init@Base 10 + _M2_ConvStringLong_finish@Base 10 + _M2_ConvStringLong_init@Base 10 + _M2_ConvStringReal_finish@Base 10 + _M2_ConvStringReal_init@Base 10 + _M2_ConvTypes_finish@Base 10 + _M2_ConvTypes_init@Base 10 + _M2_EXCEPTIONS_finish@Base 10 + _M2_EXCEPTIONS_init@Base 10 + _M2_ErrnoCategory_finish@Base 10 + _M2_ErrnoCategory_init@Base 10 + _M2_GeneralUserExceptions_finish@Base 10 + _M2_GeneralUserExceptions_init@Base 10 + _M2_IOChan_finish@Base 10 + _M2_IOChan_init@Base 10 + _M2_IOConsts_finish@Base 10 + _M2_IOConsts_init@Base 10 + _M2_IOLink_finish@Base 10 + _M2_IOLink_init@Base 10 + _M2_IOResult_finish@Base 10 + _M2_IOResult_init@Base 10 + _M2_LongComplexMath_finish@Base 10 + _M2_LongComplexMath_init@Base 10 + _M2_LongConv_finish@Base 10 + _M2_LongConv_init@Base 10 + _M2_LongIO_finish@Base 10 + _M2_LongIO_init@Base 10 + _M2_LongMath_finish@Base 10 + _M2_LongMath_init@Base 10 + _M2_LongStr_finish@Base 10 + _M2_LongStr_init@Base 10 + _M2_LongWholeIO_finish@Base 10 + _M2_LongWholeIO_init@Base 10 + _M2_LowLong_finish@Base 10 + _M2_LowLong_init@Base 10 + _M2_LowReal_finish@Base 10 + _M2_LowReal_init@Base 10 + _M2_LowShort_finish@Base 10 + _M2_LowShort_init@Base 10 + _M2_M2EXCEPTION_finish@Base 10 + _M2_M2EXCEPTION_init@Base 10 + _M2_M2RTS_finish@Base 10 + _M2_M2RTS_init@Base 10 + _M2_MemStream_finish@Base 10 + _M2_MemStream_init@Base 10 + _M2_Processes_finish@Base 10 + _M2_Processes_init@Base 10 + _M2_ProgramArgs_finish@Base 10 + _M2_ProgramArgs_init@Base 10 + _M2_RTco_finish@Base 10 + _M2_RTco_init@Base 10 + _M2_RTdata_finish@Base 10 + _M2_RTdata_init@Base 10 + _M2_RTentity_finish@Base 10 + _M2_RTentity_init@Base 10 + _M2_RTfio_finish@Base 10 + _M2_RTfio_init@Base 10 + _M2_RTgen_finish@Base 10 + _M2_RTgen_init@Base 10 + _M2_RTgenif_finish@Base 10 + _M2_RTgenif_init@Base 10 + _M2_RTio_finish@Base 10 + _M2_RTio_init@Base 10 + _M2_RandomNumber_finish@Base 10 + _M2_RandomNumber_init@Base 10 + _M2_RawIO_finish@Base 10 + _M2_RawIO_init@Base 10 + _M2_RealConv_finish@Base 10 + _M2_RealConv_init@Base 10 + _M2_RealIO_finish@Base 10 + _M2_RealIO_init@Base 10 + _M2_RealMath_finish@Base 10 + _M2_RealMath_init@Base 10 + _M2_RealStr_finish@Base 10 + _M2_RealStr_init@Base 10 + _M2_RndFile_finish@Base 10 + _M2_RndFile_init@Base 10 + _M2_SIOResult_finish@Base 10 + _M2_SIOResult_init@Base 10 + _M2_SLongIO_finish@Base 10 + _M2_SLongIO_init@Base 10 + _M2_SLongWholeIO_finish@Base 10 + _M2_SLongWholeIO_init@Base 10 + _M2_SRawIO_finish@Base 10 + _M2_SRawIO_init@Base 10 + _M2_SRealIO_finish@Base 10 + _M2_SRealIO_init@Base 10 + _M2_SShortIO_finish@Base 10 + _M2_SShortIO_init@Base 10 + _M2_SShortWholeIO_finish@Base 10 + _M2_SShortWholeIO_init@Base 10 + _M2_STextIO_finish@Base 10 + _M2_STextIO_init@Base 10 + _M2_SWholeIO_finish@Base 10 + _M2_SWholeIO_init@Base 10 + _M2_SYSTEM_finish@Base 10 + _M2_SYSTEM_init@Base 10 + _M2_Semaphores_finish@Base 10 + _M2_Semaphores_init@Base 10 + _M2_SeqFile_finish@Base 10 + _M2_SeqFile_init@Base 10 + _M2_ServerSocket_finish@Base 10 + _M2_ServerSocket_init@Base 10 + _M2_ShortComplexMath_finish@Base 10 + _M2_ShortComplexMath_init@Base 10 + _M2_ShortIO_finish@Base 10 + _M2_ShortIO_init@Base 10 + _M2_ShortWholeIO_finish@Base 10 + _M2_ShortWholeIO_init@Base 10 + _M2_SimpleCipher_finish@Base 10 + _M2_SimpleCipher_init@Base 10 + _M2_StdChans_finish@Base 10 + _M2_StdChans_init@Base 10 + _M2_Storage_finish@Base 10 + _M2_Storage_init@Base 10 + _M2_StreamFile_finish@Base 10 + _M2_StreamFile_init@Base 10 + _M2_StringChan_finish@Base 10 + _M2_StringChan_init@Base 10 + _M2_Strings_finish@Base 10 + _M2_Strings_init@Base 10 + _M2_SysClock_finish@Base 10 + _M2_SysClock_init@Base 10 + _M2_TERMINATION_finish@Base 10 + _M2_TERMINATION_init@Base 10 + _M2_TermFile_finish@Base 10 + _M2_TermFile_init@Base 10 + _M2_TextIO_finish@Base 10 + _M2_TextIO_init@Base 10 + _M2_WholeConv_finish@Base 10 + _M2_WholeConv_init@Base 10 + _M2_WholeIO_finish@Base 10 + _M2_WholeIO_init@Base 10 + _M2_WholeStr_finish@Base 10 + _M2_WholeStr_init@Base 10 + _M2_wrapsock_finish@Base 10 + _M2_wrapsock_init@Base 10 + _M2_wraptime_finish@Base 10 + _M2_wraptime_init@Base 10 + currentThread@Base 10 + wrapsock_clientOpen@Base 10 + wrapsock_clientOpenIP@Base 10 + wrapsock_getClientHostname@Base 10 + wrapsock_getClientIP@Base 10 + wrapsock_getClientPortNo@Base 10 + wrapsock_getClientSocketFd@Base 10 + wrapsock_getPushBackChar@Base 10 + wrapsock_getSizeOfClientInfo@Base 10 + wrapsock_setPushBackChar@Base 10 + wraptime_GetDST@Base 10 + wraptime_GetDay@Base 10 + wraptime_GetFractions@Base 10 + wraptime_GetHour@Base 10 + wraptime_GetMinute@Base 10 + wraptime_GetMonth@Base 10 + wraptime_GetSecond@Base 10 + wraptime_GetSummerTime@Base 10 + wraptime_GetYear@Base 10 + wraptime_InitTM@Base 10 + wraptime_InitTimeval@Base 10 + wraptime_InitTimezone@Base 10 + wraptime_KillTM@Base 10 + wraptime_KillTimeval@Base 10 + wraptime_KillTimezone@Base 10 + wraptime_SetTimeval@Base 10 + wraptime_SetTimezone@Base 10 + wraptime_gettimeofday@Base 10 + wraptime_localtime_r@Base 10 + wraptime_settimeofday@Base 10 +libm2log.so.18 #PACKAGE# #MINVER# + BitBlockOps_BlockAnd@Base 10 + BitBlockOps_BlockNot@Base 10 + BitBlockOps_BlockOr@Base 10 + BitBlockOps_BlockRol@Base 10 + BitBlockOps_BlockRor@Base 10 + BitBlockOps_BlockShl@Base 10 + BitBlockOps_BlockShr@Base 10 + BitBlockOps_BlockXor@Base 10 + BitByteOps_ByteAnd@Base 10 + BitByteOps_ByteNot@Base 10 + BitByteOps_ByteOr@Base 10 + BitByteOps_ByteRol@Base 10 + BitByteOps_ByteRor@Base 10 + BitByteOps_ByteSar@Base 10 + BitByteOps_ByteShl@Base 10 + BitByteOps_ByteShr@Base 10 + BitByteOps_ByteXor@Base 10 + BitByteOps_GetBits@Base 10 + BitByteOps_HighNibble@Base 10 + BitByteOps_LowNibble@Base 10 + BitByteOps_SetBits@Base 10 + BitByteOps_Swap@Base 10 + BitWordOps_GetBits@Base 10 + BitWordOps_HighByte@Base 10 + BitWordOps_LowByte@Base 10 + BitWordOps_SetBits@Base 10 + BitWordOps_Swap@Base 10 + BitWordOps_WordAnd@Base 10 + BitWordOps_WordNot@Base 10 + BitWordOps_WordOr@Base 10 + BitWordOps_WordRol@Base 10 + BitWordOps_WordRor@Base 10 + BitWordOps_WordSar@Base 10 + BitWordOps_WordShl@Base 10 + BitWordOps_WordShr@Base 10 + BitWordOps_WordXor@Base 10 + BlockOps_BlockClear@Base 10 + BlockOps_BlockEqual@Base 10 + BlockOps_BlockMoveBackward@Base 10 + BlockOps_BlockMoveForward@Base 10 + BlockOps_BlockPosition@Base 10 + BlockOps_BlockSet@Base 10 + Break_DisableBreak@Base 10 + Break_EnableBreak@Base 10 + Break_InstallBreak@Base 10 + Break_UnInstallBreak@Base 10 + CardinalIO_Done@Base 10 + CardinalIO_ReadCardinal@Base 10 + CardinalIO_ReadHex@Base 10 + CardinalIO_ReadLongCardinal@Base 10 + CardinalIO_ReadLongHex@Base 10 + CardinalIO_ReadShortCardinal@Base 10 + CardinalIO_ReadShortHex@Base 10 + CardinalIO_WriteCardinal@Base 10 + CardinalIO_WriteHex@Base 10 + CardinalIO_WriteLongCardinal@Base 10 + CardinalIO_WriteLongHex@Base 10 + CardinalIO_WriteShortCardinal@Base 10 + CardinalIO_WriteShortHex@Base 10 + Conversions_ConvertCardinal@Base 10 + Conversions_ConvertHex@Base 10 + Conversions_ConvertInteger@Base 10 + Conversions_ConvertLongInt@Base 10 + Conversions_ConvertOctal@Base 10 + Conversions_ConvertShortInt@Base 10 + Delay_Delay@Base 10 + Display_Write@Base 10 + ErrorCode_ExitToOS@Base 10 + ErrorCode_GetErrorCode@Base 10 + ErrorCode_SetErrorCode@Base 10 + FileSystem_Close@Base 10 + FileSystem_Create@Base 10 + FileSystem_Delete@Base 10 + FileSystem_Doio@Base 10 + FileSystem_GetPos@Base 10 + FileSystem_Length@Base 10 + FileSystem_Lookup@Base 10 + FileSystem_ReadByte@Base 10 + FileSystem_ReadChar@Base 10 + FileSystem_ReadNBytes@Base 10 + FileSystem_ReadWord@Base 10 + FileSystem_Rename@Base 10 + FileSystem_Reset@Base 10 + FileSystem_SetModify@Base 10 + FileSystem_SetOpen@Base 10 + FileSystem_SetPos@Base 10 + FileSystem_SetRead@Base 10 + FileSystem_SetWrite@Base 10 + FileSystem_WriteByte@Base 10 + FileSystem_WriteChar@Base 10 + FileSystem_WriteNBytes@Base 10 + FileSystem_WriteWord@Base 10 + FloatingUtilities_Float@Base 10 + FloatingUtilities_Floatl@Base 10 + FloatingUtilities_Frac@Base 10 + FloatingUtilities_Fracl@Base 10 + FloatingUtilities_Round@Base 10 + FloatingUtilities_Roundl@Base 10 + FloatingUtilities_Trunc@Base 10 + FloatingUtilities_Truncl@Base 10 + InOut_CloseInput@Base 10 + InOut_CloseOutput@Base 10 + InOut_Done@Base 10 + InOut_OpenInput@Base 10 + InOut_OpenOutput@Base 10 + InOut_Read@Base 10 + InOut_ReadCard@Base 10 + InOut_ReadInt@Base 10 + InOut_ReadS@Base 10 + InOut_ReadString@Base 10 + InOut_Write@Base 10 + InOut_WriteCard@Base 10 + InOut_WriteHex@Base 10 + InOut_WriteInt@Base 10 + InOut_WriteLn@Base 10 + InOut_WriteOct@Base 10 + InOut_WriteS@Base 10 + InOut_WriteString@Base 10 + InOut_termCH@Base 10 + Keyboard_KeyPressed@Base 10 + Keyboard_Read@Base 10 + LongIO_Done@Base 10 + LongIO_ReadLongInt@Base 10 + LongIO_WriteLongInt@Base 10 + Random_RandomBytes@Base 10 + Random_RandomCard@Base 10 + Random_RandomInit@Base 10 + Random_RandomInt@Base 10 + Random_RandomLongReal@Base 10 + Random_RandomReal@Base 10 + Random_Randomize@Base 10 + RealConversions_LongRealToString@Base 10 + RealConversions_RealToString@Base 10 + RealConversions_SetNoOfExponentDigits@Base 10 + RealConversions_StringToLongReal@Base 10 + RealConversions_StringToReal@Base 10 + RealInOut_Done@Base 10 + RealInOut_ReadLongReal@Base 10 + RealInOut_ReadReal@Base 10 + RealInOut_ReadShortReal@Base 10 + RealInOut_SetNoOfDecimalPlaces@Base 10 + RealInOut_WriteLongReal@Base 10 + RealInOut_WriteLongRealOct@Base 10 + RealInOut_WriteReal@Base 10 + RealInOut_WriteRealOct@Base 10 + RealInOut_WriteShortReal@Base 10 + RealInOut_WriteShortRealOct@Base 10 + Strings_Assign@Base 10 + Strings_CompareStr@Base 10 + Strings_ConCat@Base 10 + Strings_Copy@Base 10 + Strings_Delete@Base 10 + Strings_Insert@Base 10 + Strings_Length@Base 10 + Strings_Pos@Base 10 + Termbase_AssignRead@Base 10 + Termbase_AssignWrite@Base 10 + Termbase_KeyPressed@Base 10 + Termbase_Read@Base 10 + Termbase_UnAssignRead@Base 10 + Termbase_UnAssignWrite@Base 10 + Termbase_Write@Base 10 + Terminal_KeyPressed@Base 10 + Terminal_Read@Base 10 + Terminal_ReadAgain@Base 10 + Terminal_ReadString@Base 10 + Terminal_Write@Base 10 + Terminal_WriteLn@Base 10 + Terminal_WriteString@Base 10 + TimeDate_CompareTime@Base 10 + TimeDate_GetTime@Base 10 + TimeDate_SetTime@Base 10 + TimeDate_TimeToString@Base 10 + TimeDate_TimeToZero@Base 10 + _M2_BitBlockOps_finish@Base 10 + _M2_BitBlockOps_init@Base 10 + _M2_BitByteOps_finish@Base 10 + _M2_BitByteOps_init@Base 10 + _M2_BitWordOps_finish@Base 10 + _M2_BitWordOps_init@Base 10 + _M2_BlockOps_finish@Base 10 + _M2_BlockOps_init@Base 10 + _M2_CardinalIO_finish@Base 10 + _M2_CardinalIO_init@Base 10 + _M2_Conversions_finish@Base 10 + _M2_Conversions_init@Base 10 + _M2_DebugPMD_finish@Base 10 + _M2_DebugPMD_init@Base 10 + _M2_DebugTrace_finish@Base 10 + _M2_DebugTrace_init@Base 10 + _M2_Delay_finish@Base 10 + _M2_Delay_init@Base 10 + _M2_Display_finish@Base 10 + _M2_Display_init@Base 10 + _M2_ErrorCode_finish@Base 10 + _M2_ErrorCode_init@Base 10 + _M2_FileSystem_finish@Base 10 + _M2_FileSystem_init@Base 10 + _M2_FloatingUtilities_finish@Base 10 + _M2_FloatingUtilities_init@Base 10 + _M2_InOut_finish@Base 10 + _M2_InOut_init@Base 10 + _M2_Keyboard_finish@Base 10 + _M2_Keyboard_init@Base 10 + _M2_LongIO_finish@Base 10 + _M2_LongIO_init@Base 10 + _M2_NumberConversion_finish@Base 10 + _M2_NumberConversion_init@Base 10 + _M2_Random_finish@Base 10 + _M2_Random_init@Base 10 + _M2_RealConversions_finish@Base 10 + _M2_RealConversions_init@Base 10 + _M2_RealInOut_finish@Base 10 + _M2_RealInOut_init@Base 10 + _M2_Strings_finish@Base 10 + _M2_Strings_init@Base 10 + _M2_Termbase_finish@Base 10 + _M2_Termbase_init@Base 10 + _M2_Terminal_finish@Base 10 + _M2_Terminal_init@Base 10 + _M2_TimeDate_finish@Base 10 + _M2_TimeDate_init@Base 10 +libm2min.so.18 #PACKAGE# #MINVER# + M2RTS_ExecuteInitialProcedures@Base 10 + M2RTS_ExecuteTerminationProcedures@Base 10 + M2RTS_HALT@Base 10 + M2RTS_NoException@Base 10 + _M2_M2RTS_finish@Base 10 + _M2_M2RTS_init@Base 10 + _M2_SYSTEM_finish@Base 10 + _M2_SYSTEM_init@Base 10 + abort@Base 10 + exit@Base 10 +libm2pim.so.18 #PACKAGE# #MINVER# + Args_GetArg@Base 10 + Args_Narg@Base 10 + Assertion_Assert@Base 10 + Builtins_alloca@Base 10 + Builtins_alloca_trace@Base 10 + Builtins_atan2@Base 10 + Builtins_atan2f@Base 10 + Builtins_atan2l@Base 10 + Builtins_cabs@Base 10 + Builtins_cabsf@Base 10 + Builtins_cabsl@Base 10 + Builtins_carccos@Base 10 + Builtins_carccosf@Base 10 + Builtins_carccosl@Base 10 + Builtins_carcsin@Base 10 + Builtins_carcsinf@Base 10 + Builtins_carcsinl@Base 10 + Builtins_carctan@Base 10 + Builtins_carctanf@Base 10 + Builtins_carctanl@Base 10 + Builtins_carg@Base 10 + Builtins_cargf@Base 10 + Builtins_cargl@Base 10 + Builtins_ccos@Base 10 + Builtins_ccosf@Base 10 + Builtins_ccosl@Base 10 + Builtins_cexp@Base 10 + Builtins_cexpf@Base 10 + Builtins_cexpl@Base 10 + Builtins_cln@Base 10 + Builtins_clnf@Base 10 + Builtins_clnl@Base 10 + Builtins_conj@Base 10 + Builtins_conjf@Base 10 + Builtins_conjl@Base 10 + Builtins_cos@Base 10 + Builtins_cosf@Base 10 + Builtins_cosl@Base 10 + Builtins_cpower@Base 10 + Builtins_cpowerf@Base 10 + Builtins_cpowerl@Base 10 + Builtins_csin@Base 10 + Builtins_csinf@Base 10 + Builtins_csinl@Base 10 + Builtins_csqrt@Base 10 + Builtins_csqrtf@Base 10 + Builtins_csqrtl@Base 10 + Builtins_ctan@Base 10 + Builtins_ctanf@Base 10 + Builtins_ctanl@Base 10 + Builtins_exp10@Base 10 + Builtins_exp10f@Base 10 + Builtins_exp10l@Base 10 + Builtins_exp@Base 10 + Builtins_expf@Base 10 + Builtins_expl@Base 10 + Builtins_fabs@Base 10 + Builtins_fabsf@Base 10 + Builtins_fabsl@Base 10 + Builtins_frame_address@Base 10 + Builtins_huge_val@Base 10 + Builtins_huge_valf@Base 10 + Builtins_huge_vall@Base 10 + Builtins_ilogb@Base 10 + Builtins_ilogbf@Base 10 + Builtins_ilogbl@Base 10 + Builtins_index@Base 10 + Builtins_isfinite@Base 10 + Builtins_isfinitef@Base 10 + Builtins_isfinitel@Base 10 + Builtins_log10@Base 10 + Builtins_log10f@Base 10 + Builtins_log10l@Base 10 + Builtins_log@Base 10 + Builtins_logf@Base 10 + Builtins_logl@Base 10 + Builtins_longjmp@Base 10 + Builtins_memcmp@Base 10 + Builtins_memcpy@Base 10 + Builtins_memmove@Base 10 + Builtins_memset@Base 10 + Builtins_modf@Base 10 + Builtins_modff@Base 10 + Builtins_modfl@Base 10 + Builtins_nextafter@Base 10 + Builtins_nextafterf@Base 10 + Builtins_nextafterl@Base 10 + Builtins_nexttoward@Base 10 + Builtins_nexttowardf@Base 10 + Builtins_nexttowardl@Base 10 + Builtins_return_address@Base 10 + Builtins_rindex@Base 10 + Builtins_scalb@Base 10 + Builtins_scalbf@Base 10 + Builtins_scalbl@Base 10 + Builtins_scalbln@Base 10 + Builtins_scalblnf@Base 10 + Builtins_scalblnl@Base 10 + Builtins_scalbn@Base 10 + Builtins_scalbnf@Base 10 + Builtins_scalbnl@Base 10 + Builtins_setjmp@Base 10 + Builtins_signbit@Base 10 + Builtins_signbitf@Base 10 + Builtins_signbitl@Base 10 + Builtins_significand@Base 10 + Builtins_significandf@Base 10 + Builtins_significandl@Base 10 + Builtins_sin@Base 10 + Builtins_sinf@Base 10 + Builtins_sinl@Base 10 + Builtins_sqrt@Base 10 + Builtins_sqrtf@Base 10 + Builtins_sqrtl@Base 10 + Builtins_strcat@Base 10 + Builtins_strchr@Base 10 + Builtins_strcmp@Base 10 + Builtins_strcpy@Base 10 + Builtins_strcspn@Base 10 + Builtins_strlen@Base 10 + Builtins_strncat@Base 10 + Builtins_strncmp@Base 10 + Builtins_strncpy@Base 10 + Builtins_strpbrk@Base 10 + Builtins_strrchr@Base 10 + Builtins_strspn@Base 10 + Builtins_strstr@Base 10 + CmdArgs_GetArg@Base 10 + CmdArgs_Narg@Base 10 + Debug_DebugString@Base 10 + Debug_Halt@Base 10 + DynamicStrings_Add@Base 10 + DynamicStrings_Assign@Base 10 + DynamicStrings_ConCat@Base 10 + DynamicStrings_ConCatChar@Base 10 + DynamicStrings_CopyOut@Base 10 + DynamicStrings_Dup@Base 10 + DynamicStrings_DupDB@Base 10 + DynamicStrings_Equal@Base 10 + DynamicStrings_EqualArray@Base 10 + DynamicStrings_EqualCharStar@Base 10 + DynamicStrings_Fin@Base 10 + DynamicStrings_Index@Base 10 + DynamicStrings_InitString@Base 10 + DynamicStrings_InitStringChar@Base 10 + DynamicStrings_InitStringCharDB@Base 10 + DynamicStrings_InitStringCharStar@Base 10 + DynamicStrings_InitStringCharStarDB@Base 10 + DynamicStrings_InitStringDB@Base 10 + DynamicStrings_KillString@Base 10 + DynamicStrings_Length@Base 10 + DynamicStrings_Mark@Base 10 + DynamicStrings_Mult@Base 10 + DynamicStrings_MultDB@Base 10 + DynamicStrings_PopAllocation@Base 10 + DynamicStrings_PopAllocationExemption@Base 10 + DynamicStrings_PushAllocation@Base 10 + DynamicStrings_RIndex@Base 10 + DynamicStrings_RemoveComment@Base 10 + DynamicStrings_RemoveWhitePostfix@Base 10 + DynamicStrings_RemoveWhitePrefix@Base 10 + DynamicStrings_Slice@Base 10 + DynamicStrings_SliceDB@Base 10 + DynamicStrings_ToLower@Base 10 + DynamicStrings_ToUpper@Base 10 + DynamicStrings_char@Base 10 + DynamicStrings_string@Base 10 + Environment_GetEnvironment@Base 10 + FIO_Close@Base 10 + FIO_EOF@Base 10 + FIO_EOLN@Base 10 + FIO_Exists@Base 10 + FIO_FindPosition@Base 10 + FIO_FlushBuffer@Base 10 + FIO_FlushOutErr@Base 10 + FIO_GetFileName@Base 10 + FIO_GetUnixFileDescriptor@Base 10 + FIO_IsActive@Base 10 + FIO_IsNoError@Base 10 + FIO_OpenForRandom@Base 10 + FIO_OpenToRead@Base 10 + FIO_OpenToWrite@Base 10 + FIO_ReadCardinal@Base 10 + FIO_ReadChar@Base 10 + FIO_ReadNBytes@Base 10 + FIO_ReadString@Base 10 + FIO_SetPositionFromBeginning@Base 10 + FIO_SetPositionFromEnd@Base 10 + FIO_StdErr@Base 10 + FIO_StdIn@Base 10 + FIO_StdOut@Base 10 + FIO_UnReadChar@Base 10 + FIO_WasEOLN@Base 10 + FIO_WriteCardinal@Base 10 + FIO_WriteChar@Base 10 + FIO_WriteLine@Base 10 + FIO_WriteNBytes@Base 10 + FIO_WriteString@Base 10 + FIO_exists@Base 10 + FIO_getFileName@Base 10 + FIO_getFileNameLength@Base 10 + FIO_openForRandom@Base 10 + FIO_openToRead@Base 10 + FIO_openToWrite@Base 10 + FormatStrings_HandleEscape@Base 10 + FormatStrings_Sprintf0@Base 10 + FormatStrings_Sprintf1@Base 10 + FormatStrings_Sprintf2@Base 10 + FormatStrings_Sprintf3@Base 10 + FormatStrings_Sprintf4@Base 10 + FpuIO_LongIntToStr@Base 10 + FpuIO_LongRealToStr@Base 10 + FpuIO_ReadLongInt@Base 10 + FpuIO_ReadLongReal@Base 10 + FpuIO_ReadReal@Base 10 + FpuIO_RealToStr@Base 10 + FpuIO_StrToLongInt@Base 10 + FpuIO_StrToLongReal@Base 10 + FpuIO_StrToReal@Base 10 + FpuIO_WriteLongInt@Base 10 + FpuIO_WriteLongReal@Base 10 + FpuIO_WriteReal@Base 10 + GetOpt_AddLongOption@Base 10 + GetOpt_GetOpt@Base 10 + GetOpt_GetOptLong@Base 10 + GetOpt_GetOptLongOnly@Base 10 + GetOpt_InitLongOptions@Base 10 + GetOpt_KillLongOptions@Base 10 + IO_BufferedMode@Base 10 + IO_EchoOff@Base 10 + IO_EchoOn@Base 10 + IO_Error@Base 10 + IO_Read@Base 10 + IO_UnBufferedMode@Base 10 + IO_Write@Base 10 + Indexing_DebugIndex@Base 10 + Indexing_DeleteIndice@Base 10 + Indexing_ForeachIndiceInIndexDo@Base 10 + Indexing_GetIndice@Base 10 + Indexing_HighIndice@Base 10 + Indexing_InBounds@Base 10 + Indexing_IncludeIndiceIntoIndex@Base 10 + Indexing_InitIndex@Base 10 + Indexing_IsIndiceInIndex@Base 10 + Indexing_KillIndex@Base 10 + Indexing_LowIndice@Base 10 + Indexing_PutIndice@Base 10 + Indexing_RemoveIndiceFromIndex@Base 10 + LMathLib0_arctan@Base 10 + LMathLib0_cos@Base 10 + LMathLib0_entier@Base 10 + LMathLib0_exp@Base 10 + LMathLib0_ln@Base 10 + LMathLib0_sin@Base 10 + LMathLib0_sqrt@Base 10 + LMathLib0_tan@Base 10 + M2EXCEPTION_IsM2Exception@Base 10 + M2EXCEPTION_M2Exception@Base 10 + M2RTS_AssignmentException@Base 10 + M2RTS_CaseException@Base 10 + M2RTS_DecException@Base 10 + M2RTS_DynamicArraySubscriptException@Base 10 + M2RTS_ErrorMessage@Base 10 + M2RTS_ExclException@Base 10 + M2RTS_ExecuteInitialProcedures@Base 10 + M2RTS_ExecuteTerminationProcedures@Base 10 + M2RTS_ExitOnHalt@Base 10 + M2RTS_ForLoopBeginException@Base 10 + M2RTS_ForLoopEndException@Base 10 + M2RTS_ForLoopToException@Base 10 + M2RTS_HALT@Base 10 + M2RTS_Halt@Base 10 + M2RTS_IncException@Base 10 + M2RTS_InclException@Base 10 + M2RTS_InstallInitialProcedure@Base 10 + M2RTS_InstallTerminationProcedure@Base 10 + M2RTS_Length@Base 10 + M2RTS_NoException@Base 10 + M2RTS_NoReturnException@Base 10 + M2RTS_ParameterException@Base 10 + M2RTS_PointerNilException@Base 10 + M2RTS_RealValueException@Base 10 + M2RTS_ReturnException@Base 10 + M2RTS_RotateException@Base 10 + M2RTS_ShiftException@Base 10 + M2RTS_StaticArraySubscriptException@Base 10 + M2RTS_Terminate@Base 10 + M2RTS_WholeNonPosDivException@Base 10 + M2RTS_WholeNonPosModException@Base 10 + M2RTS_WholeValueException@Base 10 + M2RTS_WholeZeroDivException@Base 10 + M2RTS_WholeZeroRemException@Base 10 + MathLib0_arctan@Base 10 + MathLib0_cos@Base 10 + MathLib0_entier@Base 10 + MathLib0_exp@Base 10 + MathLib0_ln@Base 10 + MathLib0_sin@Base 10 + MathLib0_sqrt@Base 10 + MathLib0_tan@Base 10 + MemUtils_MemCopy@Base 10 + MemUtils_MemZero@Base 10 + NumberIO_BinToStr@Base 10 + NumberIO_CardToStr@Base 10 + NumberIO_HexToStr@Base 10 + NumberIO_IntToStr@Base 10 + NumberIO_OctToStr@Base 10 + NumberIO_ReadBin@Base 10 + NumberIO_ReadCard@Base 10 + NumberIO_ReadHex@Base 10 + NumberIO_ReadInt@Base 10 + NumberIO_ReadOct@Base 10 + NumberIO_StrToBin@Base 10 + NumberIO_StrToBinInt@Base 10 + NumberIO_StrToCard@Base 10 + NumberIO_StrToHex@Base 10 + NumberIO_StrToHexInt@Base 10 + NumberIO_StrToInt@Base 10 + NumberIO_StrToOct@Base 10 + NumberIO_StrToOctInt@Base 10 + NumberIO_WriteBin@Base 10 + NumberIO_WriteCard@Base 10 + NumberIO_WriteHex@Base 10 + NumberIO_WriteInt@Base 10 + NumberIO_WriteOct@Base 10 + OptLib_ConCat@Base 10 + OptLib_Dup@Base 10 + OptLib_GetArgc@Base 10 + OptLib_GetArgv@Base 10 + OptLib_IndexStrCmp@Base 10 + OptLib_IndexStrNCmp@Base 10 + OptLib_InitOption@Base 10 + OptLib_KillOption@Base 10 + OptLib_Slice@Base 10 + PushBackInput_Close@Base 10 + PushBackInput_Error@Base 10 + PushBackInput_GetCh@Base 10 + PushBackInput_GetColumnPosition@Base 10 + PushBackInput_GetCurrentLine@Base 10 + PushBackInput_GetExitStatus@Base 10 + PushBackInput_Open@Base 10 + PushBackInput_PutCh@Base 10 + PushBackInput_PutString@Base 10 + PushBackInput_SetDebug@Base 10 + PushBackInput_WarnError@Base 10 + PushBackInput_WarnString@Base 10 + RTExceptions_BaseExceptionsThrow@Base 10 + RTExceptions_DefaultErrorCatch@Base 10 + RTExceptions_GetBaseExceptionBlock@Base 10 + RTExceptions_GetExceptionBlock@Base 10 + RTExceptions_GetExceptionSource@Base 10 + RTExceptions_GetNumber@Base 10 + RTExceptions_GetTextBuffer@Base 10 + RTExceptions_GetTextBufferSize@Base 10 + RTExceptions_InitExceptionBlock@Base 10 + RTExceptions_IsInExceptionState@Base 10 + RTExceptions_KillExceptionBlock@Base 10 + RTExceptions_PopHandler@Base 10 + RTExceptions_PushHandler@Base 10 + RTExceptions_Raise@Base 10 + RTExceptions_SetExceptionBlock@Base 10 + RTExceptions_SetExceptionSource@Base 10 + RTExceptions_SetExceptionState@Base 10 + RTExceptions_SwitchExceptionState@Base 10 + RTint_AttachVector@Base 10 + RTint_ExcludeVector@Base 10 + RTint_GetTimeVector@Base 10 + RTint_IncludeVector@Base 10 + RTint_Init@Base 10 + RTint_InitInputVector@Base 10 + RTint_InitOutputVector@Base 10 + RTint_InitTimeVector@Base 10 + RTint_Listen@Base 10 + RTint_ReArmTimeVector@Base 10 + SArgs_GetArg@Base 10 + SArgs_Narg@Base 10 + SCmdArgs_GetArg@Base 10 + SCmdArgs_Narg@Base 10 + SEnvironment_GetEnvironment@Base 10 + SFIO_Exists@Base 10 + SFIO_OpenForRandom@Base 10 + SFIO_OpenToRead@Base 10 + SFIO_OpenToWrite@Base 10 + SFIO_ReadS@Base 10 + SFIO_WriteS@Base 10 + SMathLib0_arctan@Base 10 + SMathLib0_cos@Base 10 + SMathLib0_entier@Base 10 + SMathLib0_exp@Base 10 + SMathLib0_ln@Base 10 + SMathLib0_sin@Base 10 + SMathLib0_sqrt@Base 10 + SMathLib0_tan@Base 10 + Scan_CloseSource@Base 10 + Scan_DefineComments@Base 10 + Scan_GetNextSymbol@Base 10 + Scan_OpenSource@Base 10 + Scan_TerminateOnError@Base 10 + Scan_WriteError@Base 10 + Selective_FdClr@Base 10 + Selective_FdIsSet@Base 10 + Selective_FdSet@Base 10 + Selective_FdZero@Base 10 + Selective_GetTime@Base 10 + Selective_GetTimeOfDay@Base 10 + Selective_InitSet@Base 10 + Selective_InitTime@Base 10 + Selective_KillSet@Base 10 + Selective_KillTime@Base 10 + Selective_MaxFdsPlusOne@Base 10 + Selective_ReadCharRaw@Base 10 + Selective_Select@Base 10 + Selective_SetTime@Base 10 + Selective_WriteCharRaw@Base 10 + StdIO_GetCurrentInput@Base 10 + StdIO_GetCurrentOutput@Base 10 + StdIO_PopInput@Base 10 + StdIO_PopOutput@Base 10 + StdIO_PushInput@Base 10 + StdIO_PushOutput@Base 10 + StdIO_Read@Base 10 + StdIO_Write@Base 10 + Storage_ALLOCATE@Base 10 + Storage_Available@Base 10 + Storage_DEALLOCATE@Base 10 + Storage_REALLOCATE@Base 10 + StrCase_Cap@Base 10 + StrCase_Lower@Base 10 + StrCase_StrToLowerCase@Base 10 + StrCase_StrToUpperCase@Base 10 + StrIO_ReadString@Base 10 + StrIO_WriteLn@Base 10 + StrIO_WriteString@Base 10 + StrLib_IsSubString@Base 10 + StrLib_StrConCat@Base 10 + StrLib_StrCopy@Base 10 + StrLib_StrEqual@Base 10 + StrLib_StrLen@Base 10 + StrLib_StrLess@Base 10 + StrLib_StrRemoveWhitePrefix@Base 10 + StringConvert_CardinalToString@Base 10 + StringConvert_IntegerToString@Base 10 + StringConvert_LongCardinalToString@Base 10 + StringConvert_LongIntegerToString@Base 10 + StringConvert_LongrealToString@Base 10 + StringConvert_ShortCardinalToString@Base 10 + StringConvert_StringToCardinal@Base 10 + StringConvert_StringToInteger@Base 10 + StringConvert_StringToLongCardinal@Base 10 + StringConvert_StringToLongInteger@Base 10 + StringConvert_StringToLongreal@Base 10 + StringConvert_StringToShortCardinal@Base 10 + StringConvert_ToSigFig@Base 10 + StringConvert_bstoc@Base 10 + StringConvert_bstoi@Base 10 + StringConvert_ctos@Base 10 + StringConvert_hstoc@Base 10 + StringConvert_hstoi@Base 10 + StringConvert_itos@Base 10 + StringConvert_ostoc@Base 10 + StringConvert_ostoi@Base 10 + StringConvert_stoc@Base 10 + StringConvert_stoi@Base 10 + StringConvert_stolr@Base 10 + StringConvert_stor@Base 10 + SysExceptions_InitExceptionHandlers@Base 10 + SysStorage_ALLOCATE@Base 10 + SysStorage_Available@Base 10 + SysStorage_DEALLOCATE@Base 10 + SysStorage_Init@Base 10 + SysStorage_REALLOCATE@Base 10 + TimeString_GetTimeString@Base 10 + UnixArgs_ArgC@Base 10 + UnixArgs_ArgV@Base 10 + _M2_ASCII_finish@Base 10 + _M2_ASCII_init@Base 10 + _M2_Args_finish@Base 10 + _M2_Args_init@Base 10 + _M2_Assertion_finish@Base 10 + _M2_Assertion_init@Base 10 + _M2_Break_finish@Base 10 + _M2_Break_init@Base 10 + _M2_Builtins_finish@Base 10 + _M2_Builtins_init@Base 10 + _M2_COROUTINES_finish@Base 10 + _M2_COROUTINES_init@Base 10 + _M2_CmdArgs_finish@Base 10 + _M2_CmdArgs_init@Base 10 + _M2_Debug_finish@Base 10 + _M2_Debug_init@Base 10 + _M2_DynamicStrings_finish@Base 10 + _M2_DynamicStrings_init@Base 10 + _M2_Environment_finish@Base 10 + _M2_Environment_init@Base 10 + _M2_FIO_finish@Base 10 + _M2_FIO_init@Base 10 + _M2_FormatStrings_finish@Base 10 + _M2_FormatStrings_init@Base 10 + _M2_FpuIO_finish@Base 10 + _M2_FpuIO_init@Base 10 + _M2_GetOpt_finish@Base 10 + _M2_GetOpt_init@Base 10 + _M2_IO_finish@Base 10 + _M2_IO_init@Base 10 + _M2_Indexing_finish@Base 10 + _M2_Indexing_init@Base 10 + _M2_LMathLib0_finish@Base 10 + _M2_LMathLib0_init@Base 10 + _M2_LegacyReal_finish@Base 10 + _M2_LegacyReal_init@Base 10 + _M2_M2EXCEPTION_finish@Base 10 + _M2_M2EXCEPTION_init@Base 10 + _M2_M2RTS_finish@Base 10 + _M2_M2RTS_init@Base 10 + _M2_MathLib0_finish@Base 10 + _M2_MathLib0_init@Base 10 + _M2_MemUtils_finish@Base 10 + _M2_MemUtils_init@Base 10 + _M2_NumberIO_finish@Base 10 + _M2_NumberIO_init@Base 10 + _M2_OptLib_finish@Base 10 + _M2_OptLib_init@Base 10 + _M2_PushBackInput_finish@Base 10 + _M2_PushBackInput_init@Base 10 + _M2_RTExceptions_finish@Base 10 + _M2_RTExceptions_init@Base 10 + _M2_RTint_finish@Base 10 + _M2_RTint_init@Base 10 + _M2_SArgs_finish@Base 10 + _M2_SArgs_init@Base 10 + _M2_SCmdArgs_finish@Base 10 + _M2_SCmdArgs_init@Base 10 + _M2_SEnvironment_finish@Base 10 + _M2_SEnvironment_init@Base 10 + _M2_SFIO_finish@Base 10 + _M2_SFIO_init@Base 10 + _M2_SMathLib0_finish@Base 10 + _M2_SMathLib0_init@Base 10 + _M2_SYSTEM_finish@Base 10 + _M2_SYSTEM_init@Base 10 + _M2_Scan_finish@Base 10 + _M2_Scan_init@Base 10 + _M2_Selective_finish@Base 10 + _M2_Selective_init@Base 10 + _M2_StdIO_finish@Base 10 + _M2_StdIO_init@Base 10 + _M2_Storage_finish@Base 10 + _M2_Storage_init@Base 10 + _M2_StrCase_finish@Base 10 + _M2_StrCase_init@Base 10 + _M2_StrIO_finish@Base 10 + _M2_StrIO_init@Base 10 + _M2_StrLib_finish@Base 10 + _M2_StrLib_init@Base 10 + _M2_StringConvert_finish@Base 10 + _M2_StringConvert_init@Base 10 + _M2_SysExceptions_finish@Base 10 + _M2_SysExceptions_init@Base 10 + _M2_SysStorage_finish@Base 10 + _M2_SysStorage_init@Base 10 + _M2_TimeString_finish@Base 10 + _M2_TimeString_init@Base 10 + _M2_UnixArgs_finish@Base 10 + _M2_UnixArgs_init@Base 10 + _M2_dtoa_finish@Base 10 + _M2_dtoa_init@Base 10 + _M2_errno_finish@Base 10 + _M2_errno_init@Base 10 + _M2_gdbif_finish@Base 10 + _M2_gdbif_init@Base 10 + _M2_getopt_finish@Base 10 + _M2_getopt_init@Base 10 + _M2_ldtoa_finish@Base 10 + _M2_ldtoa_init@Base 10 + _M2_sckt_finish@Base 10 + _M2_sckt_init@Base 10 + _M2_termios_finish@Base 10 + _M2_termios_init@Base 10 + _M2_wrapc_finish@Base 10 + _M2_wrapc_init@Base 10 + connectSpin@Base 10 + doSetUnset@Base 10 + dtoa_calcdecimal@Base 10 + dtoa_calcmaxsig@Base 10 + dtoa_calcsign@Base 10 + dtoa_dtoa@Base 10 + dtoa_strtod@Base 10 + errno_geterrno@Base 10 + exp10@Base 10 + exp10f@Base 10 + exp10l@Base 10 + finishSpin@Base 10 + getLocalIP@Base 10 + getopt_GetLongOptionArray@Base 10 + getopt_InitOptions@Base 10 + getopt_KillOptions@Base 10 + getopt_SetOption@Base 10 + getopt_getopt@Base 10 + getopt_getopt_long@Base 10 + getopt_getopt_long_only@Base 10 + getopt_optarg@Base 10 + getopt_opterr@Base 10 + getopt_optind@Base 10 + getopt_optopt@Base 10 + ldtoa_ldtoa@Base 10 + ldtoa_strtold@Base 10 + localExit@Base 10 + sleepSpin@Base 10 + tcpClientConnect@Base 10 + tcpClientIP@Base 10 + tcpClientPortNo@Base 10 + tcpClientSocket@Base 10 + tcpClientSocketFd@Base 10 + tcpClientSocketIP@Base 10 + tcpServerAccept@Base 10 + tcpServerClientIP@Base 10 + tcpServerClientPortNo@Base 10 + tcpServerEstablish@Base 10 + tcpServerEstablishPort@Base 10 + tcpServerIP@Base 10 + tcpServerPortNo@Base 10 + tcpServerSocketFd@Base 10 + termios_GetChar@Base 10 + termios_GetFlag@Base 10 + termios_InitTermios@Base 10 + termios_KillTermios@Base 10 + termios_SetChar@Base 10 + termios_SetFlag@Base 10 + termios_cfgetispeed@Base 10 + termios_cfgetospeed@Base 10 + termios_cfmakeraw@Base 10 + termios_cfsetispeed@Base 10 + termios_cfsetospeed@Base 10 + termios_cfsetspeed@Base 10 + termios_tcdrain@Base 10 + termios_tcflowoffi@Base 10 + termios_tcflowoffo@Base 10 + termios_tcflowoni@Base 10 + termios_tcflowono@Base 10 + termios_tcflushi@Base 10 + termios_tcflushio@Base 10 + termios_tcflusho@Base 10 + termios_tcgetattr@Base 10 + termios_tcsdrain@Base 10 + termios_tcsendbreak@Base 10 + termios_tcsetattr@Base 10 + termios_tcsflush@Base 10 + termios_tcsnow@Base 10 + wrapc_fileinode@Base 10 + wrapc_filemtime@Base 10 + wrapc_filesize@Base 10 + wrapc_getnameuidgid@Base 10 + wrapc_getrand@Base 10 + wrapc_getusername@Base 10 + wrapc_isfinite@Base 10 + wrapc_isfinitef@Base 10 + wrapc_isfinitel@Base 10 + wrapc_signbit@Base 10 + wrapc_signbitf@Base 10 + wrapc_signbitl@Base 10 + wrapc_strtime@Base 10 diff --git a/libgomp.symbols b/libgomp.symbols new file mode 100644 index 0000000..8b17283 --- /dev/null +++ b/libgomp.symbols @@ -0,0 +1,39 @@ +libgomp.so.1 #PACKAGE# #MINVER# + (symver)GOACC_2.0 5 + (symver)GOACC_2.0.1 6 + (symver)GOACC_2.0.2 12 + (symver)GOMP_1.0 4.2.1 + (symver)GOMP_2.0 4.4 + (symver)GOMP_3.0 4.7 + (symver)GOMP_4.0 4.9 + (symver)GOMP_4.0.1 5 + (symver)GOMP_4.5 6 + (symver)GOMP_5.0 9 + (symver)GOMP_5.0.1 11 + (symver)GOMP_5.1 12 + (symver)GOMP_5.1.1 13 + (symver)GOMP_5.1.2 14 + (symver)GOMP_5.1.3 15 + (symver)GOMP_6.0 15 + (symver)GOMP_PLUGIN_1.0 5 + (symver)GOMP_PLUGIN_1.1 6 + (symver)GOMP_PLUGIN_1.2 9 + (symver)GOMP_PLUGIN_1.3 10 + (symver)GOMP_PLUGIN_1.4 13 + (symver)OACC_2.0 5 + (symver)OACC_2.0.1 8 + (symver)OACC_2.5 9 + (symver)OACC_2.5.1 10 + (symver)OACC_2.6 10 + (symver)OMP_1.0 4.2.1 + (symver)OMP_2.0 4.2.1 + (symver)OMP_3.0 4.4 + (symver)OMP_3.1 4.7 + (symver)OMP_4.0 4.9 + (symver)OMP_4.5 6 + (symver)OMP_5.0 9 + (symver)OMP_5.0.1 11 + (symver)OMP_5.0.2 12 + (symver)OMP_5.1 12 + (symver)OMP_5.1.1 13 + (symver)OMP_5.2 13 diff --git a/libgphobos.symbols b/libgphobos.symbols new file mode 100644 index 0000000..4ad7c7e --- /dev/null +++ b/libgphobos.symbols @@ -0,0 +1,2 @@ +libgdruntime.so.6 #PACKAGE# #MINVER# +libgphobos.so.6 #PACKAGE# #MINVER# diff --git a/libgphobos6.symbols.amd64 b/libgphobos6.symbols.amd64 new file mode 100644 index 0000000..963be83 --- /dev/null +++ b/libgphobos6.symbols.amd64 @@ -0,0 +1,22107 @@ +libgdruntime.so.6 libgphobos6 #MINVER# + CPU_ALLOC@Base 15 + CPU_ALLOC_SIZE@Base 15 + CPU_COUNT@Base 15 + CPU_COUNT_S@Base 15 + CPU_FREE@Base 15 + CPU_ISSET@Base 15 + CPU_SET@Base 15 + LOG_MASK@Base 15 + LOG_UPTO@Base 15 + SIGRTMAX@Base 15 + SIGRTMIN@Base 15 + S_TYPEISMQ@Base 15 + S_TYPEISSEM@Base 15 + S_TYPEISSHM@Base 15 + TPACKET_ALIGN@Base 15 + _D101TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 + _D101TypeInfo_S4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D102TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 + _D103TypeInfo_S4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D105TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10IsDelegate6__initZ@Base 15 + _D10TypeInfo_a6__initZ@Base 15 + _D10TypeInfo_a6__vtblZ@Base 15 + _D10TypeInfo_a7__ClassZ@Base 15 + _D10TypeInfo_b6__initZ@Base 15 + _D10TypeInfo_b6__vtblZ@Base 15 + _D10TypeInfo_b7__ClassZ@Base 15 + _D10TypeInfo_c6__initZ@Base 15 + _D10TypeInfo_c6__vtblZ@Base 15 + _D10TypeInfo_c7__ClassZ@Base 15 + _D10TypeInfo_d6__initZ@Base 15 + _D10TypeInfo_d6__vtblZ@Base 15 + _D10TypeInfo_d7__ClassZ@Base 15 + _D10TypeInfo_e6__initZ@Base 15 + _D10TypeInfo_e6__vtblZ@Base 15 + _D10TypeInfo_e7__ClassZ@Base 15 + _D10TypeInfo_f6__initZ@Base 15 + _D10TypeInfo_f6__vtblZ@Base 15 + _D10TypeInfo_f7__ClassZ@Base 15 + _D10TypeInfo_g6__initZ@Base 15 + _D10TypeInfo_g6__vtblZ@Base 15 + _D10TypeInfo_g7__ClassZ@Base 15 + _D10TypeInfo_h6__initZ@Base 15 + _D10TypeInfo_h6__vtblZ@Base 15 + _D10TypeInfo_h7__ClassZ@Base 15 + _D10TypeInfo_i6__initZ@Base 15 + _D10TypeInfo_i6__vtblZ@Base 15 + _D10TypeInfo_i7__ClassZ@Base 15 + _D10TypeInfo_j6__initZ@Base 15 + _D10TypeInfo_j6__vtblZ@Base 15 + _D10TypeInfo_j7__ClassZ@Base 15 + _D10TypeInfo_k6__initZ@Base 15 + _D10TypeInfo_k6__vtblZ@Base 15 + _D10TypeInfo_k7__ClassZ@Base 15 + _D10TypeInfo_l6__initZ@Base 15 + _D10TypeInfo_l6__vtblZ@Base 15 + _D10TypeInfo_l7__ClassZ@Base 15 + _D10TypeInfo_m6__initZ@Base 15 + _D10TypeInfo_m6__vtblZ@Base 15 + _D10TypeInfo_m7__ClassZ@Base 15 + _D10TypeInfo_n6__initZ@Base 15 + _D10TypeInfo_n6__vtblZ@Base 15 + _D10TypeInfo_n7__ClassZ@Base 15 + _D10TypeInfo_o6__initZ@Base 15 + _D10TypeInfo_o6__vtblZ@Base 15 + _D10TypeInfo_o7__ClassZ@Base 15 + _D10TypeInfo_p6__initZ@Base 15 + _D10TypeInfo_p6__vtblZ@Base 15 + _D10TypeInfo_p7__ClassZ@Base 15 + _D10TypeInfo_q6__initZ@Base 15 + _D10TypeInfo_q6__vtblZ@Base 15 + _D10TypeInfo_q7__ClassZ@Base 15 + _D10TypeInfo_r6__initZ@Base 15 + _D10TypeInfo_r6__vtblZ@Base 15 + _D10TypeInfo_r7__ClassZ@Base 15 + _D10TypeInfo_s6__initZ@Base 15 + _D10TypeInfo_s6__vtblZ@Base 15 + _D10TypeInfo_s7__ClassZ@Base 15 + _D10TypeInfo_t6__initZ@Base 15 + _D10TypeInfo_t6__vtblZ@Base 15 + _D10TypeInfo_t7__ClassZ@Base 15 + _D10TypeInfo_u6__initZ@Base 15 + _D10TypeInfo_u6__vtblZ@Base 15 + _D10TypeInfo_u7__ClassZ@Base 15 + _D10TypeInfo_v6__initZ@Base 15 + _D10TypeInfo_v6__vtblZ@Base 15 + _D10TypeInfo_v7__ClassZ@Base 15 + _D10TypeInfo_w6__initZ@Base 15 + _D10TypeInfo_w6__vtblZ@Base 15 + _D10TypeInfo_w7__ClassZ@Base 15 + _D113TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D115TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 + _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 + _D11TypeInfo_Aa6__initZ@Base 15 + _D11TypeInfo_Aa6__vtblZ@Base 15 + _D11TypeInfo_Aa7__ClassZ@Base 15 + _D11TypeInfo_Ab6__initZ@Base 15 + _D11TypeInfo_Ab6__vtblZ@Base 15 + _D11TypeInfo_Ab7__ClassZ@Base 15 + _D11TypeInfo_Ac6__initZ@Base 15 + _D11TypeInfo_Ac6__vtblZ@Base 15 + _D11TypeInfo_Ac7__ClassZ@Base 15 + _D11TypeInfo_Ad6__initZ@Base 15 + _D11TypeInfo_Ad6__vtblZ@Base 15 + _D11TypeInfo_Ad7__ClassZ@Base 15 + _D11TypeInfo_Ae6__initZ@Base 15 + _D11TypeInfo_Ae6__vtblZ@Base 15 + _D11TypeInfo_Ae7__ClassZ@Base 15 + _D11TypeInfo_Af6__initZ@Base 15 + _D11TypeInfo_Af6__vtblZ@Base 15 + _D11TypeInfo_Af7__ClassZ@Base 15 + _D11TypeInfo_Ag6__initZ@Base 15 + _D11TypeInfo_Ag6__vtblZ@Base 15 + _D11TypeInfo_Ag7__ClassZ@Base 15 + _D11TypeInfo_Ah6__initZ@Base 15 + _D11TypeInfo_Ah6__vtblZ@Base 15 + _D11TypeInfo_Ah7__ClassZ@Base 15 + _D11TypeInfo_Ai6__initZ@Base 15 + _D11TypeInfo_Ai6__vtblZ@Base 15 + _D11TypeInfo_Ai7__ClassZ@Base 15 + _D11TypeInfo_Aj6__initZ@Base 15 + _D11TypeInfo_Aj6__vtblZ@Base 15 + _D11TypeInfo_Aj7__ClassZ@Base 15 + _D11TypeInfo_Ak6__initZ@Base 15 + _D11TypeInfo_Ak6__vtblZ@Base 15 + _D11TypeInfo_Ak7__ClassZ@Base 15 + _D11TypeInfo_Al6__initZ@Base 15 + _D11TypeInfo_Al6__vtblZ@Base 15 + _D11TypeInfo_Al7__ClassZ@Base 15 + _D11TypeInfo_Am6__initZ@Base 15 + _D11TypeInfo_Am6__vtblZ@Base 15 + _D11TypeInfo_Am7__ClassZ@Base 15 + _D11TypeInfo_Ao6__initZ@Base 15 + _D11TypeInfo_Ao6__vtblZ@Base 15 + _D11TypeInfo_Ao7__ClassZ@Base 15 + _D11TypeInfo_Ap6__initZ@Base 15 + _D11TypeInfo_Ap6__vtblZ@Base 15 + _D11TypeInfo_Ap7__ClassZ@Base 15 + _D11TypeInfo_Aq6__initZ@Base 15 + _D11TypeInfo_Aq6__vtblZ@Base 15 + _D11TypeInfo_Aq7__ClassZ@Base 15 + _D11TypeInfo_Ar6__initZ@Base 15 + _D11TypeInfo_Ar6__vtblZ@Base 15 + _D11TypeInfo_Ar7__ClassZ@Base 15 + _D11TypeInfo_As6__initZ@Base 15 + _D11TypeInfo_As6__vtblZ@Base 15 + _D11TypeInfo_As7__ClassZ@Base 15 + _D11TypeInfo_At6__initZ@Base 15 + _D11TypeInfo_At6__vtblZ@Base 15 + _D11TypeInfo_At7__ClassZ@Base 15 + _D11TypeInfo_Au6__initZ@Base 15 + _D11TypeInfo_Au6__vtblZ@Base 15 + _D11TypeInfo_Au7__ClassZ@Base 15 + _D11TypeInfo_Av6__initZ@Base 15 + _D11TypeInfo_Av6__vtblZ@Base 15 + _D11TypeInfo_Av7__ClassZ@Base 15 + _D11TypeInfo_Aw6__initZ@Base 15 + _D11TypeInfo_Aw6__vtblZ@Base 15 + _D11TypeInfo_Aw7__ClassZ@Base 15 + _D11TypeInfo_Oa6__initZ@Base 15 + _D11TypeInfo_Ou6__initZ@Base 15 + _D11TypeInfo_xa6__initZ@Base 15 + _D11TypeInfo_xb6__initZ@Base 15 + _D11TypeInfo_xd6__initZ@Base 15 + _D11TypeInfo_xe6__initZ@Base 15 + _D11TypeInfo_xf6__initZ@Base 15 + _D11TypeInfo_xh6__initZ@Base 15 + _D11TypeInfo_xi6__initZ@Base 15 + _D11TypeInfo_xk6__initZ@Base 15 + _D11TypeInfo_xm6__initZ@Base 15 + _D11TypeInfo_xt6__initZ@Base 15 + _D11TypeInfo_xv6__initZ@Base 15 + _D11TypeInfo_ya6__initZ@Base 15 + _D11TypeInfo_yk6__initZ@Base 15 + _D120TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 + _D12TypeInfo_AOa6__initZ@Base 15 + _D12TypeInfo_AOu6__initZ@Base 15 + _D12TypeInfo_Axa6__initZ@Base 15 + _D12TypeInfo_Axa6__vtblZ@Base 15 + _D12TypeInfo_Axa7__ClassZ@Base 15 + _D12TypeInfo_Axv6__initZ@Base 15 + _D12TypeInfo_Aya6__initZ@Base 15 + _D12TypeInfo_Aya6__vtblZ@Base 15 + _D12TypeInfo_Aya7__ClassZ@Base 15 + _D12TypeInfo_G8h6__initZ@Base 15 + _D12TypeInfo_Oxk6__initZ@Base 15 + _D12TypeInfo_Pxh6__initZ@Base 15 + _D12TypeInfo_Pxv6__initZ@Base 15 + _D12TypeInfo_xAa6__initZ@Base 15 + _D12TypeInfo_xAv6__initZ@Base 15 + _D12TypeInfo_xPh6__initZ@Base 15 + _D12TypeInfo_xPv6__initZ@Base 15 + _D12TypeInfo_yAa6__initZ@Base 15 + _D13TypeInfo_AAya6__initZ@Base 15 + _D13TypeInfo_AxPv6__initZ@Base 15 + _D13TypeInfo_AyAa6__initZ@Base 15 + _D13TypeInfo_Enum6__initZ@Base 15 + _D13TypeInfo_Enum6__vtblZ@Base 15 + _D13TypeInfo_Enum7__ClassZ@Base 15 + _D13TypeInfo_G12a6__initZ@Base 15 + _D13TypeInfo_G48a6__initZ@Base 15 + _D13TypeInfo_xAPv6__initZ@Base 15 + _D13TypeInfo_xAya6__initZ@Base 15 + _D13TypeInfo_xG8h6__initZ@Base 15 + _D14TypeInfo_Array6__initZ@Base 15 + _D14TypeInfo_Array6__vtblZ@Base 15 + _D14TypeInfo_Array7__ClassZ@Base 15 + _D14TypeInfo_AxAya6__initZ@Base 15 + _D14TypeInfo_Class6__initZ@Base 15 + _D14TypeInfo_Class6__vtblZ@Base 15 + _D14TypeInfo_Class7__ClassZ@Base 15 + _D14TypeInfo_Const6__initZ@Base 15 + _D14TypeInfo_Const6__vtblZ@Base 15 + _D14TypeInfo_Const7__ClassZ@Base 15 + _D14TypeInfo_HAxam6__initZ@Base 15 + _D14TypeInfo_Inout6__initZ@Base 15 + _D14TypeInfo_Inout6__vtblZ@Base 15 + _D14TypeInfo_Inout7__ClassZ@Base 15 + _D14TypeInfo_Tuple6__initZ@Base 15 + _D14TypeInfo_Tuple6__vtblZ@Base 15 + _D14TypeInfo_Tuple7__ClassZ@Base 15 + _D14TypeInfo_xAAya6__initZ@Base 15 + _D14TypeInfo_xG12a6__initZ@Base 15 + _D14TypeInfo_xG48a6__initZ@Base 15 + _D15TypeInfo_Shared6__initZ@Base 15 + _D15TypeInfo_Shared6__vtblZ@Base 15 + _D15TypeInfo_Shared7__ClassZ@Base 15 + _D15TypeInfo_Struct6__initZ@Base 15 + _D15TypeInfo_Struct6__vtblZ@Base 15 + _D15TypeInfo_Struct7__ClassZ@Base 15 + _D15TypeInfo_Vector6__initZ@Base 15 + _D15TypeInfo_Vector6__vtblZ@Base 15 + _D15TypeInfo_Vector7__ClassZ@Base 15 + _D16TypeInfo_HPxvAya6__initZ@Base 15 + _D16TypeInfo_Pointer6__initZ@Base 15 + _D16TypeInfo_Pointer6__vtblZ@Base 15 + _D16TypeInfo_Pointer7__ClassZ@Base 15 + _D17TypeInfo_Delegate6__initZ@Base 15 + _D17TypeInfo_Delegate6__vtblZ@Base 15 + _D17TypeInfo_Delegate7__ClassZ@Base 15 + _D17TypeInfo_Function6__initZ@Base 15 + _D17TypeInfo_Function6__vtblZ@Base 15 + _D17TypeInfo_Function7__ClassZ@Base 15 + _D18TypeInfo_FNbMxPvZm6__initZ@Base 15 + _D18TypeInfo_Interface6__initZ@Base 15 + _D18TypeInfo_Interface6__vtblZ@Base 15 + _D18TypeInfo_Interface7__ClassZ@Base 15 + _D18TypeInfo_Invariant6__initZ@Base 15 + _D18TypeInfo_Invariant6__vtblZ@Base 15 + _D18TypeInfo_Invariant7__ClassZ@Base 15 + _D18TypeInfo_xC6Object6__initZ@Base 15 + _D19TypeInfo_DFNbMxPvZm6__initZ@Base 15 + _D20TypeInfo_S2rt3aaA2AA6__initZ@Base 15 + _D20TypeInfo_S6object2AA6__initZ@Base 15 + _D20TypeInfo_StaticArray6__initZ@Base 15 + _D20TypeInfo_StaticArray6__vtblZ@Base 15 + _D20TypeInfo_StaticArray7__ClassZ@Base 15 + _D20TypeInfo_xDFNbMxPvZm6__initZ@Base 15 + _D22TypeInfo_FNbC6ObjectZv6__initZ@Base 15 + _D22TypeInfo_S2rt3aaA4Impl6__initZ@Base 15 + _D23TypeInfo_DFNbC6ObjectZv6__initZ@Base 15 + _D23TypeInfo_S2rt3aaA5Range6__initZ@Base 15 + _D24TypeInfo_S2rt3aaA6Bucket6__initZ@Base 15 + _D24TypeInfo_S2rt5tlsgc4Data6__initZ@Base 15 + _D24TypeInfo_xDFNbC6ObjectZv6__initZ@Base 15 + _D25TypeInfo_AssociativeArray6__initZ@Base 15 + _D25TypeInfo_AssociativeArray6__vtblZ@Base 15 + _D25TypeInfo_AssociativeArray7__ClassZ@Base 15 + _D25TypeInfo_AxDFNbC6ObjectZv6__initZ@Base 15 + _D25TypeInfo_S4core6memory2GC6__initZ@Base 15 + _D25TypeInfo_S6object7AARange6__initZ@Base 15 + _D25TypeInfo_xADFNbC6ObjectZv6__initZ@Base 15 + _D25TypeInfo_xS2rt3aaA6Bucket6__initZ@Base 15 + _D26TypeInfo_AxS2rt3aaA6Bucket6__initZ@Base 15 + _D26TypeInfo_S2rt6dmain25CArgs6__initZ@Base 15 + _D26TypeInfo_xAS2rt3aaA6Bucket6__initZ@Base 15 + _D27TypeInfo_S4core6int1284Cent6__initZ@Base 15 + _D27TypeInfo_S6object9Interface6__initZ@Base 15 + _D28TypeInfo_E2rt3aaA4Impl5Flags6__initZ@Base 15 + _D29TypeInfo_S2rt9profilegc5Entry6__initZ@Base 15 + _D29TypeInfo_S4core4time8Duration6__initZ@Base 15 + _D29TypeInfo_S4core5bitop7Split646__initZ@Base 15 + _D29TypeInfo_S4core7runtime5CArgs6__initZ@Base 15 + _D29TypeInfo_S6object10ModuleInfo6__initZ@Base 15 + _D29TypeInfo_xE2rt3aaA4Impl5Flags6__initZ@Base 15 + _D2rt10invariant_11__moduleRefZ@Base 15.2 + _D2rt10invariant_12__ModuleInfoZ@Base 15.2 + _D2rt10invariant_12_d_invariantFC6ObjectZv@Base 15.2 + _D2rt19sections_elf_shared18pinLoadedLibrariesFNbNiZPv@Base 15.2 + _D2rt19sections_elf_shared20unpinLoadedLibrariesFNbNiPvZv@Base 15.2 + _D2rt19sections_elf_shared22cleanupLoadedLibrariesFNbNiZv@Base 15.2 + _D2rt19sections_elf_shared22inheritLoadedLibrariesFNbNiPvZv@Base 15.2 + _D2rt19sections_elf_shared9sizeOfTLSFNbNiZm@Base 15.2 + _D2rt3aaA10allocEntryFMxPSQyQx4ImplMxPvZPv@Base 15 + _D2rt3aaA11__moduleRefZ@Base 15 + _D2rt3aaA12__ModuleInfoZ@Base 15 + _D2rt3aaA12allocBucketsFNaNbNemZASQBgQBg6Bucket@Base 15 + _D2rt3aaA2AA5emptyMxFNaNbNdNiNfZb@Base 15 + _D2rt3aaA2AA6__initZ@Base 15 + _D2rt3aaA3mixFNaNbNiNfmZm@Base 15 + _D2rt3aaA4Impl11__xopEqualsMxFKxSQBfQBfQBeZb@Base 15 + _D2rt3aaA4Impl14findSlotInsertMNgFNaNbNimZPNgSQBsQBs6Bucket@Base 15 + _D2rt3aaA4Impl14findSlotLookupMNgFmMxPvMxC8TypeInfoZPNgSQCcQCc6Bucket@Base 15 + _D2rt3aaA4Impl3dimMxFNaNbNdNiNfZm@Base 15 + _D2rt3aaA4Impl4growMFNaNbMxC8TypeInfoZv@Base 15 + _D2rt3aaA4Impl4maskMxFNaNbNdNiZm@Base 15 + _D2rt3aaA4Impl5clearMFNaNbNeZv@Base 15 + _D2rt3aaA4Impl6__ctorMFNbNcMxC25TypeInfo_AssociativeArraymZSQCgQCgQCf@Base 15 + _D2rt3aaA4Impl6__initZ@Base 15 + _D2rt3aaA4Impl6lengthMxFNaNbNdNiNfZm@Base 15 + _D2rt3aaA4Impl6resizeMFNaNbmZv@Base 15 + _D2rt3aaA4Impl6shrinkMFNaNbMxC8TypeInfoZv@Base 15 + _D2rt3aaA4Impl9__xtoHashFNbNeKxSQBeQBeQBdZm@Base 15 + _D2rt3aaA5Range6__initZ@Base 15 + _D2rt3aaA6Bucket5emptyMxFNaNbNdNiZb@Base 15 + _D2rt3aaA6Bucket6__initZ@Base 15 + _D2rt3aaA6Bucket6filledMxFNaNbNdNiNfZb@Base 15 + _D2rt3aaA6Bucket7deletedMxFNaNbNdNiZb@Base 15 + _D2rt3aaA6talignFNaNbNiNfmmZm@Base 15 + _D2rt3aaA7hasDtorFNaNbxC8TypeInfoZb@Base 15 + _D2rt3aaA8calcHashFNbMxPvMxPSQBbQBb4ImplZm@Base 15 + _D2rt3aaA8nextpow2FNaNbNixmZm@Base 15 + _D2rt3aaA9getRTInfoFNaNbxC8TypeInfoZPyv@Base 15 + _D2rt3adi11__moduleRefZ@Base 15 + _D2rt3adi12__ModuleInfoZ@Base 15 + _D2rt3deh11__moduleRefZ@Base 15 + _D2rt3deh12__ModuleInfoZ@Base 15 + _D2rt4util7utility10safeAssertFNbNiNfbMAyaMQemZv@Base 15 + _D2rt4util7utility11__moduleRefZ@Base 15 + _D2rt4util7utility12__ModuleInfoZ@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTdZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTdZQByZm@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTeZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTeZQByZm@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTfZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTfZQByZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_c8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_j8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_n11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n4swapMxFNaNbNiNfPvQcZv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n5tsizeMxFNaNbNdNiNfZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_n6equalsMxFNaNbNiNfIPvIQdZb@Base 15 + _D2rt4util8typeinfo10TypeInfo_n6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n7compareMxFNaNbNiNfIPvIQdZi@Base 15 + _D2rt4util8typeinfo10TypeInfo_n7getHashMxFNaNbNiNfMxPvZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_n8toStringMxFNaNbNiNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_o8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_p8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_q8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_r8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_v5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo10TypeInfo_v7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_v8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ac8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Aj8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ao8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ap8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Aq8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ar8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Av4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo11TypeInfo_Av8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo11__moduleRefZ@Base 15 + _D2rt4util8typeinfo12TypeInfo_Aya8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo12__ModuleInfoZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNeZ1cyG1EQEeQEeQCrQCm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNeZ1cyG1EQEfQEfQCsQCn@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNeZ1cyG1EQEgQEgQCtQCo@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNeZ1cyG1a@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNeZ1cyG1d@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNeZ1cyG1e@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNeZ1cyG1f@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNeZ1cyG1u@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNeZ1cyG1w@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8toStringMxFNbNfZAya@Base 15 + _D2rt5cast_11__moduleRefZ@Base 15 + _D2rt5cast_12__ModuleInfoZ@Base 15 + _D2rt5cast_18areClassInfosEqualFNaNbNiNfMxC14TypeInfo_ClassMxQtZb@Base 15 + _D2rt5minfo11ModuleGroup11__xopEqualsMxFKxSQBpQBpQBmZb@Base 15 + _D2rt5minfo11ModuleGroup11runTlsCtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup11runTlsDtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup12genCyclePathMFNbmmAAiZAm@Base 15 + _D2rt5minfo11ModuleGroup4freeMFZv@Base 15 + _D2rt5minfo11ModuleGroup6__ctorMFNbNcNiAyPS6object10ModuleInfoZSQCkQCkQCh@Base 15 + _D2rt5minfo11ModuleGroup6__initZ@Base 15 + _D2rt5minfo11ModuleGroup7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 + _D2rt5minfo11ModuleGroup8runCtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup8runDtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup9__xtoHashFNbNeKxSQBoQBoQBlZm@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZv@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFZv@Base 15 + _D2rt5minfo11__moduleRefZ@Base 15 + _D2rt5minfo12__ModuleInfoZ@Base 15 + _D2rt5minfo17moduleinfos_applyFMDFyPS6object10ModuleInfoZiZi@Base 15 + _D2rt5tlsgc11__moduleRefZ@Base 15 + _D2rt5tlsgc12__ModuleInfoZ@Base 15 + _D2rt5tlsgc4Data6__initZ@Base 15 + _D2rt5tlsgc4initFNbNiZPv@Base 15 + _D2rt5tlsgc4scanFNbPvMDFNbQhQjZvZv@Base 15 + _D2rt5tlsgc7destroyFNbNiPvZv@Base 15 + _D2rt6aApply11__moduleRefZ@Base 15 + _D2rt6aApply12__ModuleInfoZ@Base 15 + _D2rt6config11__moduleRefZ@Base 15 + _D2rt6config12__ModuleInfoZ@Base 15 + _D2rt6config13rt_linkOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6config15rt_configOptionFNbNiAyaMDFNbNiQkZQnbZQr@Base 15 + _D2rt6config16rt_cmdlineOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6config16rt_envvarsOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6dmain210_initCountOm@Base 15 + _D2rt6dmain211__moduleRefZ@Base 15 + _D2rt6dmain212__ModuleInfoZ@Base 15 + _D2rt6dmain212traceHandlerPFPvZC6object9Throwable9TraceInfo@Base 15 + _D2rt6dmain214UnitTestResult6__initZ@Base 15 + _D2rt6dmain215formatThrowableFC6object9ThrowableMDFNbIAaZvZv@Base 15 + _D2rt6dmain216traceDeallocatorPFNbC6object9Throwable9TraceInfoZv@Base 15 + _D2rt6dmain220isRuntimeInitializedFNbNiZb@Base 15 + _D2rt6dmain221parseExceptionOptionsFNbNiZb@Base 15 + _D2rt6dmain25CArgs6__initZ@Base 15 + _D2rt6dmain26_cArgsSQsQr5CArgs@Base 15 + _D2rt6dmain27_d_argsAAya@Base 15 + _D2rt6memory11__moduleRefZ@Base 15 + _D2rt6memory12__ModuleInfoZ@Base 15 + _D2rt6memory16initStaticDataGCFZv@Base 15 + _D2rt7aApplyR11__moduleRefZ@Base 15 + _D2rt7aApplyR12__ModuleInfoZ@Base 15 + _D2rt7ehalloc11__moduleRefZ@Base 15 + _D2rt7ehalloc12__ModuleInfoZ@Base 15 + _D2rt8arraycat11__moduleRefZ@Base 15 + _D2rt8arraycat12__ModuleInfoZ@Base 15 + _D2rt8lifetime11__moduleRefZ@Base 15 + _D2rt8lifetime11__typeAttrsFNaNbMxC8TypeInfoPvZk@Base 15 + _D2rt8lifetime11hasPostblitFNaNbIC8TypeInfoZb@Base 15 + _D2rt8lifetime11newCapacityFmmZ9multTableyG64m@Base 15 + _D2rt8lifetime11newCapacityFmmZm@Base 15 + _D2rt8lifetime12__ModuleInfoZ@Base 15 + _D2rt8lifetime12__doPostblitFPvmxC8TypeInfoZv@Base 15 + _D2rt8lifetime14collectHandlerPFC6ObjectZb@Base 15 + _D2rt8lifetime14finalize_arrayFPvmxC15TypeInfo_StructZv@Base 15 + _D2rt8lifetime15finalize_structFNbPvC15TypeInfo_StructZv@Base 15 + _D2rt8lifetime19_d_arraysetlengthiTUxC8TypeInfomPAvZ12doInitializeFNaNbNiPvQcxAvZv@Base 15 + _D2rt8lifetime9unqualifyFNaNbNiNkMNgC8TypeInfoZNgQn@Base 15 + _D2rt8monitor_10getMonitorFNaNbNiC6ObjectZPOSQBrQBr7Monitor@Base 15 + _D2rt8monitor_10setMonitorFNaNbNiC6ObjectPOSQBqQBq7MonitorZv@Base 15 + _D2rt8monitor_11__moduleRefZ@Base 15 + _D2rt8monitor_11unlockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_12__ModuleInfoZ@Base 15 + _D2rt8monitor_12destroyMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_12disposeEventFNbPSQBfQBf7MonitorC6ObjectZv@Base 15 + _D2rt8monitor_13deleteMonitorFNbNiPSQBiQBi7MonitorZv@Base 15 + _D2rt8monitor_13ensureMonitorFNbC6ObjectZPOSQBqQBq7Monitor@Base 15 + _D2rt8monitor_4gmtxS4core3sys5posixQk5types15pthread_mutex_t@Base 15 + _D2rt8monitor_5gattrS4core3sys5posixQk5types19pthread_mutexattr_t@Base 15 + _D2rt8monitor_7Monitor11__xopEqualsMxFKxSQBnQBnQBhZb@Base 15 + _D2rt8monitor_7Monitor6__initZ@Base 15 + _D2rt8monitor_7Monitor9__xtoHashFNbNeKxSQBmQBmQBgZm@Base 15 + _D2rt8monitor_7monitorFNaNbNcNdNiNkMC6ObjectZOPSQBuQBu7Monitor@Base 15 + _D2rt8monitor_9initMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8sections11__moduleRefZ@Base 15 + _D2rt8sections12__ModuleInfoZ@Base 15 + _D2rt8sections20scanDataSegPreciselyFNbNiZ3errC6object5Error@Base 15 + _D2rt8sections20scanDataSegPreciselyFNbNiZb@Base 15 + _D2rt9critical_11__moduleRefZ@Base 15 + _D2rt9critical_11ensureMutexFNbPOSQBgQBg18D_CRITICAL_SECTIONZv@Base 15 + _D2rt9critical_12__ModuleInfoZ@Base 15 + _D2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D2rt9critical_3gcsOSQtQs18D_CRITICAL_SECTION@Base 15 + _D2rt9critical_4headOPSQvQu18D_CRITICAL_SECTION@Base 15 + _D2rt9profilegc10accumulateFNbNiAyakQeQgmZv@Base 15 + _D2rt9profilegc11__moduleRefZ@Base 15 + _D2rt9profilegc11logfilenameAya@Base 15 + _D2rt9profilegc12__ModuleInfoZ@Base 15 + _D2rt9profilegc15globalNewCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQDcQDc5EntryZQBb@Base 15 + _D2rt9profilegc18_staticDtor_L93_C1FZ11__critsec20OPv@Base 15.2 + _D2rt9profilegc18_staticDtor_L93_C1FZv@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result11__xopEqualsMxFKxSQCqQCqQCjFZQBlZb@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9__xtoHashFNbNeKxSQCpQCpQCiFZQBkZm@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9qsort_cmpUNbNiMxPvMxQeZi@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZv@Base 15.2 + _D2rt9profilegc5Entry6__initZ@Base 15 + _D2rt9profilegc6bufferAa@Base 15 + _D2rt9profilegc9newCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQCvQCv5EntryZQBb@Base 15 + _D30TypeInfo_E4core4time9ClockType6__initZ@Base 15 + _D30TypeInfo_S2rt8monitor_7Monitor6__initZ@Base 15 + _D30TypeInfo_S4core5bitop8BitRange6__initZ@Base 15 + _D30TypeInfo_xS2rt9profilegc5Entry6__initZ@Base 15 + _D30TypeInfo_yS6object10ModuleInfo6__initZ@Base 15 + _D31TypeInfo_C3gcc3deh11CxxTypeInfo6__initZ@Base 15 + _D31TypeInfo_PyS6object10ModuleInfo6__initZ@Base 15 + _D31TypeInfo_S3gcc8sections3elf3DSO6__initZ@Base 15 + _D31TypeInfo_S4core5cpuid9CacheInfo6__initZ@Base 15 + _D31TypeInfo_S4core6memory2GC5Stats6__initZ@Base 15 + _D31TypeInfo_S4core6memory8BlkInfo_6__initZ@Base 15 + _D31TypeInfo_S4core7runtime7Runtime6__initZ@Base 15 + _D31TypeInfo_S4core8demangle6Buffer6__initZ@Base 15 + _D31TypeInfo_yPS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_AyPS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_C6object6Object7Monitor6__initZ@Base 15 + _D32TypeInfo_S2rt5minfo11ModuleGroup6__initZ@Base 15 + _D32TypeInfo_S4core2gc6config6Config6__initZ@Base 15 + _D32TypeInfo_S4core4stdc4fenv6fenv_t6__initZ@Base 15 + _D32TypeInfo_S4core4sync5event5Event6__initZ@Base 15 + _D32TypeInfo_S4core8demangle7NoHooks6__initZ@Base 15 + _D32TypeInfo_S6object13__va_list_tag6__initZ@Base 15 + _D32TypeInfo_xPyS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_xS3gcc8sections3elf3DSO6__initZ@Base 15 + _D32TypeInfo_xS4core8demangle6Buffer6__initZ@Base 15 + _D32TypeInfo_yS4core5cpuid9CacheInfo6__initZ@Base 15 + _D33TypeInfo_AxPyS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_E4core6memory2GC7BlkAttr6__initZ@Base 15 + _D33TypeInfo_E4core8demangle8TypeCtor6__initZ@Base 15 + _D33TypeInfo_E4core9attribute7mustuse6__initZ@Base 15 + _D33TypeInfo_OC4core4sync5mutex5Mutex6__initZ@Base 15 + _D33TypeInfo_PxS3gcc8sections3elf3DSO6__initZ@Base 15 + _D33TypeInfo_S4core2gc8registry5Entry6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Lib6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Rel6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Sym6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Lib6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Rel6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Sym6__initZ@Base 15 + _D33TypeInfo_S4core4stdc5stdio6fpos_t6__initZ@Base 15 + _D33TypeInfo_S4core4stdc6locale5lconv6__initZ@Base 15 + _D33TypeInfo_S4core4stdc6stdlib5div_t6__initZ@Base 15 + _D33TypeInfo_S4core8demangle8BufSlice6__initZ@Base 15 + _D33TypeInfo_S6object14OffsetTypeInfo6__initZ@Base 15 + _D33TypeInfo_xAPyS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_xAyPS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_xC6object6Object7Monitor6__initZ@Base 15 + _D33TypeInfo_xPS3gcc8sections3elf3DSO6__initZ@Base 15 + _D33TypeInfo_xS2rt5minfo11ModuleGroup6__initZ@Base 15 + _D33TypeInfo_xS4core4sync5event5Event6__initZ@Base 15 + _D33TypeInfo_xS4core8demangle7NoHooks6__initZ@Base 15 + _D34TypeInfo_C4core2gc11gcinterface2GC6__initZ@Base 15 + _D34TypeInfo_E3gcc6config11ThreadModel6__initZ@Base 15 + _D34TypeInfo_S4core3sys5posix6direntQh6__initZ@Base 15 + _D34TypeInfo_S4core4stdc6stdlib6ldiv_t6__initZ@Base 15 + _D34TypeInfo_S4core4time12TickDuration6__initZ@Base 15 + _D34TypeInfo_S4core5cpuid11CpuFeatures6__initZ@Base 15 + _D35TypeInfo_E4core6atomic11MemoryOrder6__initZ@Base 15 + _D35TypeInfo_S3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Move6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Phdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Rela6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Shdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Move6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Phdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Rela6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Shdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys5linux7ifaddrsQi6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix3aio5aiocb6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix3grp5group6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix7termiosQi6__initZ@Base 15 + _D35TypeInfo_S4core4stdc5stdio8_IO_FILE6__initZ@Base 15 + _D35TypeInfo_S4core4stdc6stdlib7lldiv_t6__initZ@Base 15 + _D35TypeInfo_S4core8internal5newaa4Impl6__initZ@Base 15 + _D35TypeInfo_S4core9attribute9gnuAbiTag6__initZ@Base 15 + _D36TypeInfo_E4core4stdc6config8__c_long6__initZ@Base 15 + _D36TypeInfo_FZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D36TypeInfo_S2rt6dmain214UnitTestResult6__initZ@Base 15 + _D36TypeInfo_S3gcc9backtrace10SymbolInfo6__initZ@Base 15 + _D36TypeInfo_S4core2gc11gcinterface4Root6__initZ@Base 15 + _D36TypeInfo_S4core3sys3elf11Elf32_gptab6__initZ@Base 15 + _D36TypeInfo_S4core3sys3elf11Elf_Options6__initZ@Base 15 + _D36TypeInfo_S4core3sys5linux2fs7fsxattr6__initZ@Base 15 + _D36TypeInfo_S4core3sys5posix3pwd6passwd6__initZ@Base 15 + _D36TypeInfo_S4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D36TypeInfo_xS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D37TypeInfo_C6object9Throwable9TraceInfo6__initZ@Base 15 + _D37TypeInfo_E4core4stdc6config9__c_ulong6__initZ@Base 15 + _D37TypeInfo_E4core9attribute10standalone6__initZ@Base 15 + _D37TypeInfo_PFZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D37TypeInfo_PxS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D37TypeInfo_S3gcc8sections3elf9ThreadDSO6__initZ@Base 15 + _D37TypeInfo_S3gcc8sections3elf9tls_index6__initZ@Base 15 + _D37TypeInfo_S4core2gc11gcinterface5Range6__initZ@Base 15 + _D37TypeInfo_S4core3sys3elf12Elf32_Verdef6__initZ@Base 15 + _D37TypeInfo_S4core3sys3elf12Elf64_Verdef6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix3aio7aiocb646__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix4poll6pollfd6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix5fcntl5flock6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posixQk3uio5iovec6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posixQk7utsnameQi6__initZ@Base 15 + _D37TypeInfo_S4core4stdc6wchar_9mbstate_t6__initZ@Base 15 + _D37TypeInfo_S4core6stdcpp4new_9nothrow_t6__initZ@Base 15 + _D37TypeInfo_S4core8internal5newaa6Bucket6__initZ@Base 15 + _D37TypeInfo_xPS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D38TypeInfo_S3gcc3deh18CxaExceptionHeader6__initZ@Base 15 + _D38TypeInfo_S4core2gc6config11PrettyBytes6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Verneed6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Verneed6__initZ@Base 15 + _D38TypeInfo_S4core3sys5linux4link7r_debug6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix4stdc4time2tm6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix5netdb6netent6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix6locale5lconv6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 + _D38TypeInfo_S4core8internal5newaa7AAShell6__initZ@Base 15 + _D38TypeInfo_S4core8internal7convert5Float6__initZ@Base 15 + _D38TypeInfo_xPFZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D38TypeInfo_xS4core2gc11gcinterface5Range6__initZ@Base 15 + _D38TypeInfo_xS4core8internal5newaa6Bucket6__initZ@Base 15 + _D39TypeInfo_AC4core6thread8osthread6Thread6__initZ@Base 15 + _D39TypeInfo_AxS4core8internal5newaa6Bucket6__initZ@Base 15 + _D39TypeInfo_S3gcc9backtrace13SymbolOrError6__initZ@Base 15 + _D39TypeInfo_S4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux4link8link_map6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix4time8timespec6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5netdb7hostent6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5netdb7servent6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5utime7utimbuf6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix6signal6sigval6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posixQk3msg7msginfo6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posixQk4stat6stat_t6__initZ@Base 15 + _D39TypeInfo_S4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 + _D39TypeInfo_S4core6memory2GC12ProfileStats6__initZ@Base 15 + _D39TypeInfo_S4core6thread7context8Callable6__initZ@Base 15 + _D39TypeInfo_S4core7runtime14UnitTestResult6__initZ@Base 15 + _D39TypeInfo_S4core8internal2gc4bits6GCBits6__initZ@Base 15 + _D39TypeInfo_xAS4core8internal5newaa6Bucket6__initZ@Base 15 + _D3etc8valgrindQj11__moduleRefZ@Base 15 + _D3etc8valgrindQj12__ModuleInfoZ@Base 15 + _D3gcc10attributes11__moduleRefZ@Base 15 + _D3gcc10attributes12__ModuleInfoZ@Base 15 + _D3gcc12libbacktrace11__moduleRefZ@Base 15 + _D3gcc12libbacktrace12__ModuleInfoZ@Base 15 + _D3gcc12libbacktrace15backtrace_state6__initZ@Base 15 + _D3gcc3deh11CxxTypeInfo11__InterfaceZ@Base 15 + _D3gcc3deh11__moduleRefZ@Base 15 + _D3gcc3deh12__ModuleInfoZ@Base 15 + _D3gcc3deh12getClassInfoFNiPSQBb6unwind7generic17_Unwind_ExceptionPxhZC14TypeInfo_Class@Base 15 + _D3gcc3deh15ExceptionHeader11__xopEqualsMxFKxSQBsQBrQBqZb@Base 15 + _D3gcc3deh15ExceptionHeader17toExceptionHeaderFNiPSQBx6unwind7generic17_Unwind_ExceptionZPSQDlQDkQDj@Base 15 + _D3gcc3deh15ExceptionHeader3popFNiZPSQBjQBiQBh@Base 15 + _D3gcc3deh15ExceptionHeader4freeFNiPSQBjQBiQBhZv@Base 15 + _D3gcc3deh15ExceptionHeader4pushMFNiZv@Base 15 + _D3gcc3deh15ExceptionHeader4saveFNiPSQBj6unwind7generic17_Unwind_ExceptionmiPxhmZv@Base 15 + _D3gcc3deh15ExceptionHeader5stackPSQBhQBgQBf@Base 15 + _D3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D3gcc3deh15ExceptionHeader6createFNiC6object9ThrowableZPSQCeQCdQCc@Base 15 + _D3gcc3deh15ExceptionHeader7restoreFNiPSQBm6unwind7generic17_Unwind_ExceptionJiJPxhJmJmZv@Base 15 + _D3gcc3deh15ExceptionHeader9__xtoHashFNbNeKxSQBrQBqQBpZm@Base 15 + _D3gcc3deh15ExceptionHeader9ehstorageSQBkQBjQBi@Base 15 + _D3gcc3deh17__gdc_personalityFimPSQBg6unwind7generic17_Unwind_ExceptionPSQCtQBnQBj15_Unwind_ContextZk@Base 15 + _D3gcc3deh17actionTableLookupFiPSQBf6unwind7generic17_Unwind_ExceptionPxhQdmmQhhJbJbZi@Base 15 + _D3gcc3deh18CONTINUE_UNWINDINGFPSQBf6unwind7generic17_Unwind_ExceptionPSQCsQBnQBj15_Unwind_ContextZk@Base 15 + _D3gcc3deh18CxaExceptionHeader14getAdjustedPtrFPSQBv6unwind7generic17_Unwind_ExceptionCQDhQDg11CxxTypeInfoZPv@Base 15 + _D3gcc3deh18CxaExceptionHeader17toExceptionHeaderFNiPSQCa6unwind7generic17_Unwind_ExceptionZPSQDoQDnQDm@Base 15 + _D3gcc3deh18CxaExceptionHeader4saveFNiPSQBm6unwind7generic17_Unwind_ExceptionPvZv@Base 15 + _D3gcc3deh18CxaExceptionHeader6__initZ@Base 15 + _D3gcc3deh19isGdcExceptionClassFNimZb@Base 15 + _D3gcc3deh19isGxxExceptionClassFNimZb@Base 15 + _D3gcc3deh20isDependentExceptionFNimZb@Base 15 + _D3gcc3deh8_d_throwUC6object9ThrowableZ17exception_cleanupUNikPSQCk6unwind7generic17_Unwind_ExceptionZv@Base 15 + _D3gcc3deh8scanLSDAFPxhmiPSQz6unwind7generic17_Unwind_ExceptionPSQClQBnQBj15_Unwind_ContextmJmJiZk@Base 15 + _D3gcc3deh9terminateFNiAyakZ11terminatingb@Base 15 + _D3gcc3deh9terminateFNiAyakZv@Base 15 + _D3gcc4simd11__moduleRefZ@Base 15 + _D3gcc4simd12__ModuleInfoZ@Base 15 + _D3gcc6config11__moduleRefZ@Base 15 + _D3gcc6config12__ModuleInfoZ@Base 15 + _D3gcc6emutls11__moduleRefZ@Base 15 + _D3gcc6emutls12__ModuleInfoZ@Base 15 + _D3gcc6unwind10arm_common11__moduleRefZ@Base 15 + _D3gcc6unwind10arm_common12__ModuleInfoZ@Base 15 + _D3gcc6unwind11__moduleRefZ@Base 15 + _D3gcc6unwind12__ModuleInfoZ@Base 15 + _D3gcc6unwind2pe11__moduleRefZ@Base 15 + _D3gcc6unwind2pe12__ModuleInfoZ@Base 15 + _D3gcc6unwind2pe12read_sleb128FNiKPxhZl@Base 15 + _D3gcc6unwind2pe12read_uleb128FNiKPxhZm@Base 15 + _D3gcc6unwind2pe18read_encoded_valueFNiPSQBnQBm7generic15_Unwind_ContexthKPxhZm@Base 15 + _D3gcc6unwind2pe21base_of_encoded_valueFNihPSQBrQBq7generic15_Unwind_ContextZm@Base 15 + _D3gcc6unwind2pe21size_of_encoded_valueFNihZk@Base 15 + _D3gcc6unwind2pe28read_encoded_value_with_baseFNihmKPxhZm@Base 15 + _D3gcc6unwind3arm11__moduleRefZ@Base 15 + _D3gcc6unwind3arm12__ModuleInfoZ@Base 15 + _D3gcc6unwind3c6x11__moduleRefZ@Base 15 + _D3gcc6unwind3c6x12__ModuleInfoZ@Base 15 + _D3gcc6unwind7generic11__moduleRefZ@Base 15 + _D3gcc6unwind7generic12__ModuleInfoZ@Base 15 + _D3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D3gcc7gthread11__moduleRefZ@Base 15 + _D3gcc7gthread12__ModuleInfoZ@Base 15 + _D3gcc7gthread18__gthread_active_pFNbNiZi@Base 15 + _D3gcc8builtins11__moduleRefZ@Base 15 + _D3gcc8builtins12__ModuleInfoZ@Base 15 + _D3gcc8builtins13__va_list_tag6__initZ@Base 15 + _D3gcc8sections11__moduleRefZ@Base 15 + _D3gcc8sections12__ModuleInfoZ@Base 15 + _D3gcc8sections3elf10_rtLoadingb@Base 15 + _D3gcc8sections3elf11__moduleRefZ@Base 15 + _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZ1xS4core8internal9container5array__T5ArrayTSQDgQDfQCz9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZS4core8internal9container5array__T5ArrayTSQDeQDdQCx9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf11getTLSRangeFNbNimmZAv@Base 15 + _D3gcc8sections3elf12__ModuleInfoZ@Base 15 + _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZ1xS4core8internal9container7hashtab__T7HashTabTPvTPSQDpQDoQDi3DSOZQBc@Base 15 + _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZS4core8internal9container7hashtab__T7HashTabTPvTPSQDnQDmQDg3DSOZQBc@Base 15 + _D3gcc8sections3elf12decThreadRefFPSQBiQBhQBb3DSObZv@Base 15 + _D3gcc8sections3elf12dsoForHandleFNbNiPvZPSQBpQBoQBi3DSO@Base 15 + _D3gcc8sections3elf12finiSectionsFNbNiZv@Base 15 + _D3gcc8sections3elf12incThreadRefFPSQBiQBhQBb3DSObZv@Base 15 + _D3gcc8sections3elf12initSectionsFNbNiZv@Base 15 + _D3gcc8sections3elf12scanSegmentsFNbNiKxS4core3sys5linux4link12dl_phdr_infoPSQCxQCwQCq3DSOZv@Base 15 + _D3gcc8sections3elf13findThreadDSOFNbNiPSQBnQBmQBg3DSOZPSQCdQCcQBw9ThreadDSO@Base 15 + _D3gcc8sections3elf13finiTLSRangesFNbNiPS4core8internal9container5array__T5ArrayTSQDcQDbQCv9ThreadDSOZQBcZv@Base 15 + _D3gcc8sections3elf13handleForAddrFNbNiPvZQd@Base 15 + _D3gcc8sections3elf13handleForNameFNbNixPaZPv@Base 15 + _D3gcc8sections3elf13initTLSRangesFNbNiZPS4core8internal9container5array__T5ArrayTSQDdQDcQCw9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf13runFinalizersFPSQBjQBiQBc3DSOZv@Base 15 + _D3gcc8sections3elf13scanTLSRangesFNbPS4core8internal9container5array__T5ArrayTSQDaQCzQCt9ThreadDSOZQBcMDFNbPvQcZvZv@Base 15 + _D3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 + _D3gcc8sections3elf15getDependenciesFNbNiKxS4core3sys5linux4link12dl_phdr_infoKSQBk8internal9container5array__T5ArrayTPSQEoQEnQEh3DSOZQxZv@Base 15 + _D3gcc8sections3elf15setDSOForHandleFNbNiPSQBpQBoQBi3DSOPvZv@Base 15 + _D3gcc8sections3elf16linkMapForHandleFNbNiPvZPS4core3sys5linux4link8link_map@Base 15 + _D3gcc8sections3elf16registerGCRangesFNbNiPSQBqQBpQBj3DSOZv@Base 15 + _D3gcc8sections3elf17_handleToDSOMutexS4core3sys5posixQk5types15pthread_mutex_t@Base 15 + _D3gcc8sections3elf17unsetDSOForHandleFNbNiPSQBrQBqQBk3DSOPvZv@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ8callbackUNbNiQBzmPvZi@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZb@Base 15 + _D3gcc8sections3elf18findSegmentForAddrFNbNiKxS4core3sys5linux4link12dl_phdr_infoIPvPSQBnQBlQCz10Elf64_PhdrZb@Base 15 + _D3gcc8sections3elf18unregisterGCRangesFNbNiPSQBsQBrQBl3DSOZv@Base 15 + _D3gcc8sections3elf20runModuleDestructorsFPSQBqQBpQBj3DSObZv@Base 15 + _D3gcc8sections3elf21runModuleConstructorsFPSQBrQBqQBk3DSObZv@Base 15 + _D3gcc8sections3elf3DSO11__fieldDtorMFNbNiZv@Base 15 + _D3gcc8sections3elf3DSO11__invariantMxFZv@Base 15 + _D3gcc8sections3elf3DSO11__xopEqualsMxFKxSQBoQBnQBhQBgZb@Base 15 + _D3gcc8sections3elf3DSO11moduleGroupMNgFNbNcNdNiNjZNgS2rt5minfo11ModuleGroup@Base 15 + _D3gcc8sections3elf3DSO12__invariant0MxFZv@Base 15 + _D3gcc8sections3elf3DSO14opApplyReverseFMDFKSQBrQBqQBkQBjZiZi@Base 15 + _D3gcc8sections3elf3DSO6__initZ@Base 15 + _D3gcc8sections3elf3DSO7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 + _D3gcc8sections3elf3DSO7opApplyFMDFKSQBjQBiQBcQBbZiZi@Base 15 + _D3gcc8sections3elf3DSO8gcRangesMNgFNbNdNiZANgAv@Base 15 + _D3gcc8sections3elf3DSO8opAssignMFNbNcNiNjSQBpQBoQBiQBhZQo@Base 15 + _D3gcc8sections3elf3DSO8tlsRangeMxFNbNiZAv@Base 15 + _D3gcc8sections3elf3DSO9__xtoHashFNbNeKxSQBnQBmQBgQBfZm@Base 15 + _D3gcc8sections3elf7freeDSOFNbNiPSQBgQBfQz3DSOZv@Base 15 + _D3gcc8sections3elf9ThreadDSO11__xopEqualsMxFKxSQBuQBtQBnQBmZb@Base 15 + _D3gcc8sections3elf9ThreadDSO14updateTLSRangeMFNbNiZv@Base 15 + _D3gcc8sections3elf9ThreadDSO6__initZ@Base 15 + _D3gcc8sections3elf9ThreadDSO9__xtoHashFNbNeKxSQBtQBsQBmQBlZm@Base 15 + _D3gcc8sections3elf9finiLocksFNbNiZv@Base 15 + _D3gcc8sections3elf9initLocksFNbNiZv@Base 15 + _D3gcc8sections3elf9tls_index6__initZ@Base 15 + _D3gcc8sections3elf__T7toRangeTyPS6object10ModuleInfoZQBgFNaNbNiPyQBiQfZAyQBq@Base 15 + _D3gcc8sections5macho11__moduleRefZ@Base 15 + _D3gcc8sections5macho12__ModuleInfoZ@Base 15 + _D3gcc8sections6common10safeAssertFNbNiNfbMAyaMQemZv@Base 15 + _D3gcc8sections6common11__moduleRefZ@Base 15 + _D3gcc8sections6common12__ModuleInfoZ@Base 15 + _D3gcc8sections6pecoff11__moduleRefZ@Base 15 + _D3gcc8sections6pecoff12__ModuleInfoZ@Base 15 + _D3gcc9attribute11__moduleRefZ@Base 15 + _D3gcc9attribute12__ModuleInfoZ@Base 15 + _D3gcc9backtrace10SymbolInfo6__initZ@Base 15 + _D3gcc9backtrace10formatLineFxSQBdQBc10SymbolInfoNkKG1536aZAa@Base 15 + _D3gcc9backtrace11__moduleRefZ@Base 15 + _D3gcc9backtrace12LibBacktrace11initializedb@Base 15 + _D3gcc9backtrace12LibBacktrace16initLibBacktraceFNiZv@Base 15 + _D3gcc9backtrace12LibBacktrace5statePSQBk12libbacktrace15backtrace_state@Base 15 + _D3gcc9backtrace12LibBacktrace6__ctorMFNiiZCQBqQBpQBi@Base 15 + _D3gcc9backtrace12LibBacktrace6__initZ@Base 15 + _D3gcc9backtrace12LibBacktrace6__vtblZ@Base 15 + _D3gcc9backtrace12LibBacktrace7__ClassZ@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKSQBuQBt13SymbolOrErrorZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 + _D3gcc9backtrace12__ModuleInfoZ@Base 15 + _D3gcc9backtrace13SymbolOrError6__initZ@Base 15 + _D3gcc9backtrace18SymbolCallbackInfo5resetMFZv@Base 15 + _D3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 + _D3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 + _D40TypeInfo_E4core6stdcpp4new_11align_val_t6__initZ@Base 15 + _D40TypeInfo_E4core8demangle14FuncAttributes6__initZ@Base 15 + _D40TypeInfo_S4core3sys5linux4tipc9tipc_name6__initZ@Base 15 + _D40TypeInfo_S4core3sys5linux5input8input_id6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix5netdb8addrinfo6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix5netdb8protoent6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix6signal7stack_t6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk4time7timeval6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk5ioctl6termio6__initZ@Base 15 + _D41TypeInfo_E4core3sys5posixQk4wait8idtype_t6__initZ@Base 15 + _D41TypeInfo_E4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 + _D41TypeInfo_E4core4stdc6config12__c_longlong6__initZ@Base 15 + _D41TypeInfo_E4core8internal5newaa4Impl5Flags6__initZ@Base 15 + _D41TypeInfo_OC4core4sync9condition9Condition6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5input9ff_effect6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5input9ff_replay6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigevent6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigset_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigstack6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix9semaphore5sem_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6select6fd_set6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6socket6linger6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6socket6msghdr6__initZ@Base 15 + _D42TypeInfo_E4core4stdc6config13__c_ulonglong6__initZ@Base 15 + _D42TypeInfo_HC4core6thread8osthread6ThreadQBd6__initZ@Base 15 + _D42TypeInfo_S4core3sys5linux2fs12fstrim_range6__initZ@Base 15 + _D42TypeInfo_S4core3sys5linux4tipc10tipc_event6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posix4time10itimerspec6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posix6signal9siginfo_t6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk4time9itimerval6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk5ioctl8termios26__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 + _D42TypeInfo_S4core8demangle16ManglingFlagInfo6__initZ@Base 15 + _D42TypeInfo_S4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D42TypeInfo_xE4core8internal5newaa4Impl5Flags6__initZ@Base 15 + _D43TypeInfo_E4core6thread10threadbase8ScanType6__initZ@Base 15 + _D43TypeInfo_E4core8internal2gc2os11ChildStatus6__initZ@Base 15 + _D43TypeInfo_OS4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D43TypeInfo_S2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input10ff_trigger6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input10input_mask6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input9ff_effect1U6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk8resource6rlimit6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk8resource6rusage6__initZ@Base 15 + _D43TypeInfo_S4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 + _D43TypeInfo_S4core6thread5types13ll_ThreadData6__initZ@Base 15 + _D44TypeInfo_E2rt4util7utility16__c_complex_real6__initZ@Base 15 + _D44TypeInfo_E4core4stdc9stdatomic12memory_order6__initZ@Base 15 + _D44TypeInfo_E4core6thread7context8Callable4Call6__initZ@Base 15 + _D44TypeInfo_OS2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D44TypeInfo_S3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 + _D44TypeInfo_S3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5epoll11epoll_event6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5input11ff_envelope6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5input11input_event6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 + _D44TypeInfo_S4core3sys5posix5sched11sched_param6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 + _D44TypeInfo_S4core6thread7context12StackContext6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D45TypeInfo_E2rt4util7utility17__c_complex_float6__initZ@Base 15 + _D45TypeInfo_E4core4stdc6config16__c_complex_real6__initZ@Base 15 + _D45TypeInfo_E4core8internal2gc8blkcache8IsMarked6__initZ@Base 15 + _D45TypeInfo_E4core8internal7convert11FloatFormat6__initZ@Base 15 + _D45TypeInfo_E6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 + _D45TypeInfo_S3gcc12libbacktrace15backtrace_state6__initZ@Base 15 + _D45TypeInfo_S3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 + _D45TypeInfo_S4core3sys5posix6signal11sigaction_t6__initZ@Base 15 + _D45TypeInfo_S4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 + _D45TypeInfo_S4core8internal12parseoptions6MemVal6__initZ@Base 15 + _D45TypeInfo_S4core8internal9container5treap4Rand6__initZ@Base 15 + _D46TypeInfo_E2rt4util7utility18__c_complex_double6__initZ@Base 15 + _D46TypeInfo_E4core4stdc6config17__c_complex_float6__initZ@Base 15 + _D46TypeInfo_S4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux2fs16file_clone_range6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux5input13input_absinfo6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 + _D46TypeInfo_S4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 + _D46TypeInfo_S4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 + _D47TypeInfo_AC4core6thread10threadbase10ThreadBase6__initZ@Base 15 + _D47TypeInfo_E4core4stdc6config18__c_complex_double6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp6string16DefaultConstruct6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp6vector16DefaultConstruct6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 + _D47TypeInfo_E6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 + _D47TypeInfo_S4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 + _D47TypeInfo_S4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 + _D47TypeInfo_S4core6thread8osthread6Thread8Priority6__initZ@Base 15 + _D47TypeInfo_S6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 + _D48TypeInfo_S3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D48TypeInfo_S4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 + _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 + _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 + _D48TypeInfo_S4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 + _D48TypeInfo_S4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 + _D49TypeInfo_E4core3sys5linux10perf_event10perf_hw_id6__initZ@Base 15 + _D49TypeInfo_E4core6thread5fiber4base9FiberBase5State6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 + _D49TypeInfo_xS3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D4core10checkedint11__moduleRefZ@Base 15 + _D4core10checkedint12__ModuleInfoZ@Base 15 + _D4core13interpolation11__moduleRefZ@Base 15 + _D4core13interpolation12__ModuleInfoZ@Base 15 + _D4core13interpolation16__getEmptyStringFNaNbNiNfZAya@Base 15 + _D4core13interpolation19InterpolationFooter6__initZ@Base 15 + _D4core13interpolation19InterpolationHeader6__initZ@Base 15 + _D4core2gc11gcinterface11__moduleRefZ@Base 15 + _D4core2gc11gcinterface12__ModuleInfoZ@Base 15 + _D4core2gc11gcinterface2GC11__InterfaceZ@Base 15 + _D4core2gc11gcinterface4Root6__initZ@Base 15 + _D4core2gc11gcinterface5Range11__xopEqualsMxFKxSQBuQBsQBsQBiZb@Base 15 + _D4core2gc11gcinterface5Range6__initZ@Base 15 + _D4core2gc11gcinterface5Range8opEqualsMxFNbMxSQBsQBqQBqQBgZb@Base 15 + _D4core2gc11gcinterface5Range9__xtoHashFNbNeKxSQBtQBrQBrQBhZm@Base 15 + _D4core2gc6config11PrettyBytes6__initZ@Base 15 + _D4core2gc6config11__moduleRefZ@Base 15 + _D4core2gc6config11prettyBytesFNaNbNiKmZa@Base 15 + _D4core2gc6config12__ModuleInfoZ@Base 15 + _D4core2gc6config18bytes2prettyStructFNaNbNimZSQBtQBrQBr11PrettyBytes@Base 15 + _D4core2gc6config6Config10initializeMFNbNiZb@Base 15 + _D4core2gc6config6Config11__xopEqualsMxFKxSQBpQBnQBnQBjZb@Base 15 + _D4core2gc6config6Config4helpMFNbNiZv@Base 15 + _D4core2gc6config6Config6__initZ@Base 15 + _D4core2gc6config6Config9__xtoHashFNbNeKxSQBoQBmQBmQBiZm@Base 15 + _D4core2gc6config6Config9errorNameMFNbNiZAya@Base 15 + _D4core2gc6configQhSQsQpQo6Config@Base 15 + _D4core2gc8registry11__moduleRefZ@Base 15 + _D4core2gc8registry12__ModuleInfoZ@Base 15 + _D4core2gc8registry16createGCInstanceFAyaZCQBpQBn11gcinterface2GC@Base 15 + _D4core2gc8registry17registerGCFactoryFNbNiAyaPFZCQBwQBu11gcinterface2GCZv@Base 15 + _D4core2gc8registry21registeredGCFactoriesFNbNiMiZxASQBzQBxQBx5Entry@Base 15 + _D4core2gc8registry5Entry11__xopEqualsMxFKxSQBqQBoQBoQBiZb@Base 15 + _D4core2gc8registry5Entry6__initZ@Base 15 + _D4core2gc8registry5Entry9__xtoHashFNbNeKxSQBpQBnQBnQBhZm@Base 15 + _D4core2gc8registry7entriesASQBbQzQy5Entry@Base 15 + _D4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 + _D4core3sys3elf10Elf32_Move6__initZ@Base 15 + _D4core3sys3elf10Elf32_Phdr6__initZ@Base 15 + _D4core3sys3elf10Elf32_Rela6__initZ@Base 15 + _D4core3sys3elf10Elf32_Shdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Move6__initZ@Base 15 + _D4core3sys3elf10Elf64_Phdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Rela6__initZ@Base 15 + _D4core3sys3elf10Elf64_Shdr6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 + _D4core3sys3elf11Elf_Options6__initZ@Base 15 + _D4core3sys3elf11__moduleRefZ@Base 15 + _D4core3sys3elf12Elf32_Verdef6__initZ@Base 15 + _D4core3sys3elf12Elf64_Verdef6__initZ@Base 15 + _D4core3sys3elf12__ModuleInfoZ@Base 15 + _D4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 + _D4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 + _D4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 + _D4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 + _D4core3sys3elf13Elf32_Verneed6__initZ@Base 15 + _D4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 + _D4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 + _D4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 + _D4core3sys3elf13Elf64_Verneed6__initZ@Base 15 + _D4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 + _D4core3sys3elf9Elf32_Lib6__initZ@Base 15 + _D4core3sys3elf9Elf32_Rel6__initZ@Base 15 + _D4core3sys3elf9Elf32_Sym6__initZ@Base 15 + _D4core3sys3elf9Elf64_Lib6__initZ@Base 15 + _D4core3sys3elf9Elf64_Rel6__initZ@Base 15 + _D4core3sys3elf9Elf64_Sym6__initZ@Base 15 + _D4core3sys5linux10perf_event11__moduleRefZ@Base 15 + _D4core3sys5linux10perf_event12__ModuleInfoZ@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10namespacesMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10namespacesMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14context_switchMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14context_switchMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4commMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4commMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4freqMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4freqMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4mmapMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4mmapMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4taskMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4taskMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr5mmap2MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr5mmap2MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6pinnedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6pinnedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr7inheritMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr7inheritMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr8disabledMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr8disabledMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9comm_execMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9comm_execMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9watermarkMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9watermarkMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry4typeMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry4typeMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5abortMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5abortMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5in_txMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5in_txMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry7mispredMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry7mispredMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry8reservedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry8reservedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry9predictedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry9predictedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 + _D4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 + _D4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 + _D4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 + _D4core3sys5linux17input_event_codes11__moduleRefZ@Base 15 + _D4core3sys5linux17input_event_codes12__ModuleInfoZ@Base 15 + _D4core3sys5linux2fs11__moduleRefZ@Base 15 + _D4core3sys5linux2fs12__ModuleInfoZ@Base 15 + _D4core3sys5linux2fs12fstrim_range6__initZ@Base 15 + _D4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 + _D4core3sys5linux2fs16file_clone_range6__initZ@Base 15 + _D4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 + _D4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 + _D4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 + _D4core3sys5linux2fs7fsxattr6__initZ@Base 15 + _D4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 + _D4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 + _D4core3sys5linux3elf11__moduleRefZ@Base 15 + _D4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 + _D4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 + _D4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 + _D4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 + _D4core3sys5linux3elf12__ModuleInfoZ@Base 15 + _D4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 + _D4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 + _D4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 + _D4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 + _D4core3sys5linux3err11__moduleRefZ@Base 15 + _D4core3sys5linux3err12__ModuleInfoZ@Base 15 + _D4core3sys5linux4link11__moduleRefZ@Base 15 + _D4core3sys5linux4link12__ModuleInfoZ@Base 15 + _D4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 + _D4core3sys5linux4link7r_debug6__initZ@Base 15 + _D4core3sys5linux4link8link_map6__initZ@Base 15 + _D4core3sys5linux4time11__moduleRefZ@Base 15 + _D4core3sys5linux4time12__ModuleInfoZ@Base 15 + _D4core3sys5linux4tipc10tipc_event6__initZ@Base 15 + _D4core3sys5linux4tipc11__moduleRefZ@Base 15 + _D4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 + _D4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 + _D4core3sys5linux4tipc12__ModuleInfoZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 + _D4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 + _D4core3sys5linux4tipc9tipc_name6__initZ@Base 15 + _D4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 + _D4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 + _D4core3sys5linux5dlfcn11__moduleRefZ@Base 15 + _D4core3sys5linux5dlfcn12__ModuleInfoZ@Base 15 + _D4core3sys5linux5epoll11__moduleRefZ@Base 15 + _D4core3sys5linux5epoll11epoll_event6__initZ@Base 15 + _D4core3sys5linux5epoll12__ModuleInfoZ@Base 15 + _D4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 + _D4core3sys5linux5errno11__moduleRefZ@Base 15 + _D4core3sys5linux5errno12__ModuleInfoZ@Base 15 + _D4core3sys5linux5fcntl11__moduleRefZ@Base 15 + _D4core3sys5linux5fcntl12__ModuleInfoZ@Base 15 + _D4core3sys5linux5input10ff_trigger6__initZ@Base 15 + _D4core3sys5linux5input10input_mask6__initZ@Base 15 + _D4core3sys5linux5input11__moduleRefZ@Base 15 + _D4core3sys5linux5input11ff_envelope6__initZ@Base 15 + _D4core3sys5linux5input11input_event6__initZ@Base 15 + _D4core3sys5linux5input12__ModuleInfoZ@Base 15 + _D4core3sys5linux5input13input_absinfo6__initZ@Base 15 + _D4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 + _D4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 + _D4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 + _D4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 + _D4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 + _D4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 + _D4core3sys5linux5input8input_id6__initZ@Base 15 + _D4core3sys5linux5input9ff_effect1U6__initZ@Base 15 + _D4core3sys5linux5input9ff_effect6__initZ@Base 15 + _D4core3sys5linux5input9ff_replay6__initZ@Base 15 + _D4core3sys5linux5sched11__moduleRefZ@Base 15 + _D4core3sys5linux5sched12__ModuleInfoZ@Base 15 + _D4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 + _D4core3sys5linux5stdio11__moduleRefZ@Base 15 + _D4core3sys5linux5stdio12__ModuleInfoZ@Base 15 + _D4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 + _D4core3sys5linux6config11__moduleRefZ@Base 15 + _D4core3sys5linux6config12__ModuleInfoZ@Base 15 + _D4core3sys5linux6string11__moduleRefZ@Base 15 + _D4core3sys5linux6string12__ModuleInfoZ@Base 15 + _D4core3sys5linux6uinput11__moduleRefZ@Base 15 + _D4core3sys5linux6uinput12__ModuleInfoZ@Base 15 + _D4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 + _D4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 + _D4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 + _D4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 + _D4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 + _D4core3sys5linux6unistd11__moduleRefZ@Base 15 + _D4core3sys5linux6unistd12__ModuleInfoZ@Base 15 + _D4core3sys5linux7ifaddrs11__moduleRefZ@Base 15 + _D4core3sys5linux7ifaddrs12__ModuleInfoZ@Base 15 + _D4core3sys5linux7ifaddrsQi6__initZ@Base 15 + _D4core3sys5linux7netinet3in_11IN_BADCLASSFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_11__moduleRefZ@Base 15 + _D4core3sys5linux7netinet3in_12IN_MULTICASTFNbNikZb@Base 15 + _D4core3sys5linux7netinet3in_12__ModuleInfoZ@Base 15 + _D4core3sys5linux7netinet3in_15IN_EXPERIMENTALFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_18IN6_ARE_ADDR_EQUALFNaNbNiNfPSQCgQCe5posixQCdQBy8in6_addrQBdZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSAFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSBFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSCFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSDFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3tcp11__moduleRefZ@Base 15 + _D4core3sys5linux7netinet3tcp12__ModuleInfoZ@Base 15 + _D4core3sys5linux7termios11__moduleRefZ@Base 15 + _D4core3sys5linux7termios12__ModuleInfoZ@Base 15 + _D4core3sys5linux7timerfd11__moduleRefZ@Base 15 + _D4core3sys5linux7timerfd12__ModuleInfoZ@Base 15 + _D4core3sys5linux8execinfo11__moduleRefZ@Base 15 + _D4core3sys5linux8execinfo12__ModuleInfoZ@Base 15 + _D4core3sys5linux8io_uring11__moduleRefZ@Base 15 + _D4core3sys5linux8io_uring12__ModuleInfoZ@Base 15 + _D4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 + _D4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 + _D4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 + _D4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 + _D4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 + _D4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 + _D4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 + _D4core3sys5linuxQg6if_arp11__moduleRefZ@Base 15 + _D4core3sys5linuxQg6if_arp12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 + _D4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11__moduleRefZ@Base 15 + _D4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 + _D4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 + _D4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 + _D4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 + _D4core3sys5linuxQk4auxv11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4auxv12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4file11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4file12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4mman11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4mman12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4time10timerclearFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZv@Base 15 + _D4core3sys5linuxQk4time10timerissetFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZi@Base 15 + _D4core3sys5linuxQk4time11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4time12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4time8timeraddFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 + _D4core3sys5linuxQk4time8timersubFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 + _D4core3sys5linuxQk5mount11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5mount12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk5prctl11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5prctl12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 + _D4core3sys5linuxQk5xattr11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5xattr12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk6procfs11__moduleRefZ@Base 15 + _D4core3sys5linuxQk6procfs12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk6socket11__moduleRefZ@Base 15 + _D4core3sys5linuxQk6socket12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7eventfd11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7eventfd12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7inotify11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7inotify12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event8opAssignMFNaNbNcNiNjNeSQCmQCkQCjQCqQChQCcZQu@Base 15 + _D4core3sys5linuxQk7sysinfo11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7sysinfo12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 + _D4core3sys5linuxQk8signalfd11__moduleRefZ@Base 15 + _D4core3sys5linuxQk8signalfd12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 + _D4core3sys5posix3aio11__moduleRefZ@Base 15 + _D4core3sys5posix3aio12__ModuleInfoZ@Base 15 + _D4core3sys5posix3aio5aiocb6__initZ@Base 15 + _D4core3sys5posix3aio7aiocb646__initZ@Base 15 + _D4core3sys5posix3grp11__moduleRefZ@Base 15 + _D4core3sys5posix3grp12__ModuleInfoZ@Base 15 + _D4core3sys5posix3grp5group6__initZ@Base 15 + _D4core3sys5posix3net3if_11__moduleRefZ@Base 15 + _D4core3sys5posix3net3if_12__ModuleInfoZ@Base 15 + _D4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 + _D4core3sys5posix3pwd11__moduleRefZ@Base 15 + _D4core3sys5posix3pwd12__ModuleInfoZ@Base 15 + _D4core3sys5posix3pwd6passwd6__initZ@Base 15 + _D4core3sys5posix4arpa4inet11__moduleRefZ@Base 15 + _D4core3sys5posix4arpa4inet12__ModuleInfoZ@Base 15 + _D4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 + _D4core3sys5posix4poll11__moduleRefZ@Base 15 + _D4core3sys5posix4poll12__ModuleInfoZ@Base 15 + _D4core3sys5posix4poll6pollfd6__initZ@Base 15 + _D4core3sys5posix4stdc4time11__moduleRefZ@Base 15 + _D4core3sys5posix4stdc4time12__ModuleInfoZ@Base 15 + _D4core3sys5posix4stdc4time2tm6__initZ@Base 15 + _D4core3sys5posix4time10itimerspec6__initZ@Base 15 + _D4core3sys5posix4time11__moduleRefZ@Base 15 + _D4core3sys5posix4time12__ModuleInfoZ@Base 15 + _D4core3sys5posix4time8timespec6__initZ@Base 15 + _D4core3sys5posix5dlfcn11__moduleRefZ@Base 15 + _D4core3sys5posix5dlfcn12__ModuleInfoZ@Base 15 + _D4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 + _D4core3sys5posix5fcntl11__moduleRefZ@Base 15 + _D4core3sys5posix5fcntl12__ModuleInfoZ@Base 15 + _D4core3sys5posix5fcntl5flock6__initZ@Base 15 + _D4core3sys5posix5iconv11__moduleRefZ@Base 15 + _D4core3sys5posix5iconv12__ModuleInfoZ@Base 15 + _D4core3sys5posix5netdb11__moduleRefZ@Base 15 + _D4core3sys5posix5netdb12__ModuleInfoZ@Base 15 + _D4core3sys5posix5netdb6netent6__initZ@Base 15 + _D4core3sys5posix5netdb7hostent6__initZ@Base 15 + _D4core3sys5posix5netdb7hostent6h_addrMUNdZPa@Base 15 + _D4core3sys5posix5netdb7servent6__initZ@Base 15 + _D4core3sys5posix5netdb8addrinfo6__initZ@Base 15 + _D4core3sys5posix5netdb8protoent6__initZ@Base 15 + _D4core3sys5posix5sched11__moduleRefZ@Base 15 + _D4core3sys5posix5sched11sched_param6__initZ@Base 15 + _D4core3sys5posix5sched12__ModuleInfoZ@Base 15 + _D4core3sys5posix5spawn11__moduleRefZ@Base 15 + _D4core3sys5posix5spawn12__ModuleInfoZ@Base 15 + _D4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 + _D4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 + _D4core3sys5posix5stdio11__moduleRefZ@Base 15 + _D4core3sys5posix5stdio12__ModuleInfoZ@Base 15 + _D4core3sys5posix5utime11__moduleRefZ@Base 15 + _D4core3sys5posix5utime12__ModuleInfoZ@Base 15 + _D4core3sys5posix5utime7utimbuf6__initZ@Base 15 + _D4core3sys5posix6config11__moduleRefZ@Base 15 + _D4core3sys5posix6config12__ModuleInfoZ@Base 15 + _D4core3sys5posix6dirent11__moduleRefZ@Base 15 + _D4core3sys5posix6dirent12__ModuleInfoZ@Base 15 + _D4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D4core3sys5posix6direntQh6__initZ@Base 15 + _D4core3sys5posix6libgen11__moduleRefZ@Base 15 + _D4core3sys5posix6libgen12__ModuleInfoZ@Base 15 + _D4core3sys5posix6locale11__moduleRefZ@Base 15 + _D4core3sys5posix6locale12__ModuleInfoZ@Base 15 + _D4core3sys5posix6locale5lconv6__initZ@Base 15 + _D4core3sys5posix6mqueue11__moduleRefZ@Base 15 + _D4core3sys5posix6mqueue12__ModuleInfoZ@Base 15 + _D4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 + _D4core3sys5posix6setjmp11__moduleRefZ@Base 15 + _D4core3sys5posix6setjmp12__ModuleInfoZ@Base 15 + _D4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 + _D4core3sys5posix6signal11__moduleRefZ@Base 15 + _D4core3sys5posix6signal11sigaction_t6__initZ@Base 15 + _D4core3sys5posix6signal12__ModuleInfoZ@Base 15 + _D4core3sys5posix6signal6sigval6__initZ@Base 15 + _D4core3sys5posix6signal7stack_t6__initZ@Base 15 + _D4core3sys5posix6signal8SIGRTMAXUNbNdNiZ3sigi@Base 15 + _D4core3sys5posix6signal8SIGRTMINUNbNdNiZ3sigi@Base 15 + _D4core3sys5posix6signal8sigevent6__initZ@Base 15 + _D4core3sys5posix6signal8sigset_t6__initZ@Base 15 + _D4core3sys5posix6signal8sigstack6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t6si_pidMUNbNcNdNiNjZi@Base 15 + _D4core3sys5posix6signal9siginfo_t6si_uidMUNbNcNdNiNjZk@Base 15 + _D4core3sys5posix6signal9siginfo_t7si_addrMUNbNcNdNiNjZPv@Base 15 + _D4core3sys5posix6signal9siginfo_t7si_bandMUNbNcNdNiNjZl@Base 15 + _D4core3sys5posix6signal9siginfo_t8si_valueMUNbNcNdNiNjZSQCdQCbQCaQBx6sigval@Base 15 + _D4core3sys5posix6signal9siginfo_t9si_statusMUNbNcNdNiNjZi@Base 15 + _D4core3sys5posix6stdlib11__moduleRefZ@Base 15 + _D4core3sys5posix6stdlib12__ModuleInfoZ@Base 15 + _D4core3sys5posix6string11__moduleRefZ@Base 15 + _D4core3sys5posix6string12__ModuleInfoZ@Base 15 + _D4core3sys5posix6syslog11__moduleRefZ@Base 15 + _D4core3sys5posix6syslog12__ModuleInfoZ@Base 15 + _D4core3sys5posix6unistd11__moduleRefZ@Base 15 + _D4core3sys5posix6unistd12__ModuleInfoZ@Base 15 + _D4core3sys5posix7netinet3in_11__moduleRefZ@Base 15 + _D4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 + _D4core3sys5posix7netinet3in_12__ModuleInfoZ@Base 15 + _D4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_LOOPBACKFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4COMPATFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4MAPPEDFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_LINKLOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MC_GLOBALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MULTICASTFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_SITELOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_MC_ORGLOCALFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_UNSPECIFIEDFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_LINKLOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_NODELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_SITELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 + _D4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 + _D4core3sys5posix7netinet3tcp11__moduleRefZ@Base 15 + _D4core3sys5posix7netinet3tcp12__ModuleInfoZ@Base 15 + _D4core3sys5posix7pthread11__moduleRefZ@Base 15 + _D4core3sys5posix7pthread12__ModuleInfoZ@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup__T3popZQfMFNbiZv@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup__T4pushHTPUNaNbNiPvZvZQuMFNbNiQvQpZv@Base 15 + _D4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 + _D4core3sys5posix7strings11__moduleRefZ@Base 15 + _D4core3sys5posix7strings12__ModuleInfoZ@Base 15 + _D4core3sys5posix7termios11__moduleRefZ@Base 15 + _D4core3sys5posix7termios12__ModuleInfoZ@Base 15 + _D4core3sys5posix7termiosQi6__initZ@Base 15 + _D4core3sys5posix8inttypes11__moduleRefZ@Base 15 + _D4core3sys5posix8inttypes12__ModuleInfoZ@Base 15 + _D4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 + _D4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 + _D4core3sys5posix8ucontext11__moduleRefZ@Base 15 + _D4core3sys5posix8ucontext12__ModuleInfoZ@Base 15 + _D4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 + _D4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 + _D4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 + _D4core3sys5posix9semaphore11__moduleRefZ@Base 15 + _D4core3sys5posix9semaphore12__ModuleInfoZ@Base 15 + _D4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 + _D4core3sys5posix9semaphore5sem_t6__initZ@Base 15 + _D4core3sys5posixQk2un11__moduleRefZ@Base 15 + _D4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 + _D4core3sys5posixQk2un12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3ipc11__moduleRefZ@Base 15 + _D4core3sys5posixQk3ipc12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 + _D4core3sys5posixQk3msg11__moduleRefZ@Base 15 + _D4core3sys5posixQk3msg12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 + _D4core3sys5posixQk3msg7msginfo6__initZ@Base 15 + _D4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 + _D4core3sys5posixQk3shm11__moduleRefZ@Base 15 + _D4core3sys5posixQk3shm12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 + _D4core3sys5posixQk3uio11__moduleRefZ@Base 15 + _D4core3sys5posixQk3uio12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3uio5iovec6__initZ@Base 15 + _D4core3sys5posixQk4mman11__moduleRefZ@Base 15 + _D4core3sys5posixQk4mman12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4stat11__moduleRefZ@Base 15 + _D4core3sys5posixQk4stat12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4stat6stat_t6__initZ@Base 15 + _D4core3sys5posixQk4stat7S_ISBLKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISCHRFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISDIRFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISLNKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISREGFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISFIFOFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISSOCKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISTYPEFNbNikkZb@Base 15 + _D4core3sys5posixQk4time11__moduleRefZ@Base 15 + _D4core3sys5posixQk4time12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4time7timeval6__initZ@Base 15 + _D4core3sys5posixQk4time9itimerval6__initZ@Base 15 + _D4core3sys5posixQk4wait10WIFSTOPPEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk4wait10__WTERMSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait11WEXITSTATUSFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait11WIFSIGNALEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk4wait11__moduleRefZ@Base 15 + _D4core3sys5posixQk4wait12WIFCONTINUEDFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4wait8WSTOPSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait8WTERMSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait9WIFEXITEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk5filio11__moduleRefZ@Base 15 + _D4core3sys5posixQk5filio12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5ioctl11__moduleRefZ@Base 15 + _D4core3sys5posixQk5ioctl12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5ioctl3_IOFNbNiiiZi@Base 15 + _D4core3sys5posixQk5ioctl6termio6__initZ@Base 15 + _D4core3sys5posixQk5ioctl7_IOC_NRFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 + _D4core3sys5posixQk5ioctl8_IOC_DIRFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl8termios26__initZ@Base 15 + _D4core3sys5posixQk5ioctl9_IOC_SIZEFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl9_IOC_TYPEFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTG2kZQkFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTPaZQjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTPmZQjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTiZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTkZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTmZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTnZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTG2kZQkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTPmZQjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTiZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTkZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTmZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTG2kZQkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTPaZQjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTiZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTkZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTmZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput15uinput_ff_eraseZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput16uinput_ff_uploadZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5types11__moduleRefZ@Base 15 + _D4core3sys5posixQk5types12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 + _D4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 + _D4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 + _D4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 + _D4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 + _D4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 + _D4core3sys5posixQk6ioccom11__moduleRefZ@Base 15 + _D4core3sys5posixQk6ioccom12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6select11__moduleRefZ@Base 15 + _D4core3sys5posixQk6select12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6select6FD_CLRFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select6FD_SETFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select6fd_set6__initZ@Base 15 + _D4core3sys5posixQk6select7FD_ZEROFNaNbNiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select7__FDELTFNaNbNiNfiZk@Base 15 + _D4core3sys5posixQk6select8FD_ISSETFNaNbNiiPxSQBsQBqQBpQBwQBn6fd_setZb@Base 15 + _D4core3sys5posixQk6select8__FDMASKFNaNbNiNfiZl@Base 15 + _D4core3sys5posixQk6socket10CMSG_ALIGNFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket10CMSG_SPACEFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket11CMSG_NXTHDRFNaNbNiPNgSQBwQBuQBtQCaQBr6msghdrPNgSQCwQCuQCtQDaQCr7cmsghdrZQBc@Base 15 + _D4core3sys5posixQk6socket11__moduleRefZ@Base 15 + _D4core3sys5posixQk6socket12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6socket13CMSG_FIRSTHDRFNaNbNiPNgSQByQBwQBvQCcQBt6msghdrZPNgSQCzQCxQCwQDdQCu7cmsghdr@Base 15 + _D4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 + _D4core3sys5posixQk6socket6linger6__initZ@Base 15 + _D4core3sys5posixQk6socket6msghdr6__initZ@Base 15 + _D4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 + _D4core3sys5posixQk6socket8CMSG_LENFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 + _D4core3sys5posixQk6socket9CMSG_DATAFNaNbNiNkMPNgSQBwQBuQBtQCaQBr7cmsghdrZPNgh@Base 15 + _D4core3sys5posixQk6ttycom11__moduleRefZ@Base 15 + _D4core3sys5posixQk6ttycom12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7statvfs11__moduleRefZ@Base 15 + _D4core3sys5posixQk7statvfs12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 + _D4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 + _D4core3sys5posixQk7utsname11__moduleRefZ@Base 15 + _D4core3sys5posixQk7utsname12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7utsnameQi6__initZ@Base 15 + _D4core3sys5posixQk8resource11__moduleRefZ@Base 15 + _D4core3sys5posixQk8resource12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk8resource6rlimit6__initZ@Base 15 + _D4core3sys5posixQk8resource6rusage6__initZ@Base 15 + _D4core4math11__moduleRefZ@Base 15 + _D4core4math12__ModuleInfoZ@Base 15 + _D4core4simd11__moduleRefZ@Base 15 + _D4core4simd12__ModuleInfoZ@Base 15 + _D4core4stdc4fenv11__moduleRefZ@Base 15 + _D4core4stdc4fenv12__ModuleInfoZ@Base 15 + _D4core4stdc4fenv6fenv_t6__initZ@Base 15 + _D4core4stdc4math11__moduleRefZ@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeddZi@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeffZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeddZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeffZi@Base 15 + _D4core4stdc4math12__ModuleInfoZ@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeddZi@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeffZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeddZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeffZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeddZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeffZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNedZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNeeZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNefZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeddZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeffZi@Base 15 + _D4core4stdc4time11__moduleRefZ@Base 15 + _D4core4stdc4time12__ModuleInfoZ@Base 15 + _D4core4stdc5ctype11__moduleRefZ@Base 15 + _D4core4stdc5ctype12__ModuleInfoZ@Base 15 + _D4core4stdc5errno11__moduleRefZ@Base 15 + _D4core4stdc5errno12__ModuleInfoZ@Base 15 + _D4core4stdc5stdio11__moduleRefZ@Base 15 + _D4core4stdc5stdio12__ModuleInfoZ@Base 15 + _D4core4stdc5stdio6fpos_t6__initZ@Base 15 + _D4core4stdc5stdio8_IO_FILE6__initZ@Base 15 + _D4core4stdc6config11__moduleRefZ@Base 15 + _D4core4stdc6config12__ModuleInfoZ@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfdZSQCgQCeQCc__TQByTdZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfdZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTdZQByZm@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfeZSQCgQCeQCc__TQByTeZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfeZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTeZQByZm@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNffZSQCgQCeQCc__TQByTfZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNffZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTfZQByZm@Base 15 + _D4core4stdc6float_11__moduleRefZ@Base 15 + _D4core4stdc6float_12__ModuleInfoZ@Base 15 + _D4core4stdc6limits11__moduleRefZ@Base 15 + _D4core4stdc6limits12__ModuleInfoZ@Base 15 + _D4core4stdc6locale11__moduleRefZ@Base 15 + _D4core4stdc6locale12__ModuleInfoZ@Base 15 + _D4core4stdc6locale5lconv6__initZ@Base 15 + _D4core4stdc6signal11__moduleRefZ@Base 15 + _D4core4stdc6signal12__ModuleInfoZ@Base 15 + _D4core4stdc6stdarg11__moduleRefZ@Base 15 + _D4core4stdc6stdarg12__ModuleInfoZ@Base 15 + _D4core4stdc6stddef11__moduleRefZ@Base 15 + _D4core4stdc6stddef12__ModuleInfoZ@Base 15 + _D4core4stdc6stdint11__moduleRefZ@Base 15 + _D4core4stdc6stdint12__ModuleInfoZ@Base 15 + _D4core4stdc6stdint__T7_typifyTgZQlFNaNbNiNfgZg@Base 15 + _D4core4stdc6stdint__T7_typifyThZQlFNaNbNiNfhZh@Base 15 + _D4core4stdc6stdint__T7_typifyTiZQlFNaNbNiNfiZi@Base 15 + _D4core4stdc6stdint__T7_typifyTkZQlFNaNbNiNfkZk@Base 15 + _D4core4stdc6stdint__T7_typifyTlZQlFNaNbNiNflZl@Base 15 + _D4core4stdc6stdint__T7_typifyTmZQlFNaNbNiNfmZm@Base 15 + _D4core4stdc6stdint__T7_typifyTsZQlFNaNbNiNfsZs@Base 15 + _D4core4stdc6stdint__T7_typifyTtZQlFNaNbNiNftZt@Base 15 + _D4core4stdc6stdlib11__moduleRefZ@Base 15 + _D4core4stdc6stdlib12__ModuleInfoZ@Base 15 + _D4core4stdc6stdlib5div_t6__initZ@Base 15 + _D4core4stdc6stdlib6ldiv_t6__initZ@Base 15 + _D4core4stdc6stdlib7lldiv_t6__initZ@Base 15 + _D4core4stdc6string11__moduleRefZ@Base 15 + _D4core4stdc6string12__ModuleInfoZ@Base 15 + _D4core4stdc6tgmath11__moduleRefZ@Base 15 + _D4core4stdc6tgmath12__ModuleInfoZ@Base 15 + _D4core4stdc6wchar_11__moduleRefZ@Base 15 + _D4core4stdc6wchar_12__ModuleInfoZ@Base 15 + _D4core4stdc6wchar_8getwcharFNbNiNeZw@Base 15 + _D4core4stdc6wchar_8putwcharFNbNiNewZw@Base 15 + _D4core4stdc6wchar_9mbstate_t6__initZ@Base 15 + _D4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 + _D4core4stdc6wctype11__moduleRefZ@Base 15 + _D4core4stdc6wctype12__ModuleInfoZ@Base 15 + _D4core4stdc7assert_11__moduleRefZ@Base 15 + _D4core4stdc7assert_12__ModuleInfoZ@Base 15 + _D4core4stdc7complex11__moduleRefZ@Base 15 + _D4core4stdc7complex12__ModuleInfoZ@Base 15 + _D4core4stdc8inttypes11__moduleRefZ@Base 15 + _D4core4stdc8inttypes12__ModuleInfoZ@Base 15 + _D4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 + _D4core4stdc9stdatomic11__moduleRefZ@Base 15 + _D4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 + _D4core4stdc9stdatomic12__ModuleInfoZ@Base 15 + _D4core4sync11__moduleRefZ@Base 15 + _D4core4sync12__ModuleInfoZ@Base 15 + _D4core4sync5event11__moduleRefZ@Base 15 + _D4core4sync5event12__ModuleInfoZ@Base 15 + _D4core4sync5event5Event10initializeMFNbNibbZv@Base 15 + _D4core4sync5event5Event14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core4sync5event5Event16setIfInitializedMFNbNiZv@Base 15 + _D4core4sync5event5Event3setMFNbNiZv@Base 15 + _D4core4sync5event5Event4waitMFNbNiSQBi4time8DurationZb@Base 15 + _D4core4sync5event5Event4waitMFNbNiZb@Base 15 + _D4core4sync5event5Event5resetMFNbNiZv@Base 15 + _D4core4sync5event5Event6__ctorMFNbNcNibbZSQBpQBnQBlQBi@Base 15 + _D4core4sync5event5Event6__dtorMFNbNiZv@Base 15 + _D4core4sync5event5Event6__initZ@Base 15 + _D4core4sync5event5Event9terminateMFNbNiZv@Base 15 + _D4core4sync5mutex11__moduleRefZ@Base 15 + _D4core4sync5mutex12__ModuleInfoZ@Base 15 + _D4core4sync5mutex5Mutex10handleAddrMFNiZPSQBp3sys5posixQk5types15pthread_mutex_t@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy11__xopEqualsMxFKxSQCdQCbQBzQBwQBtZb@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy9__xtoHashFNbNeKxSQCcQCaQByQBvQBsZm@Base 15 + _D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 + _D4core4sync5mutex5Mutex4lockMOFNeZv@Base 15 + _D4core4sync5mutex5Mutex6__ctorMFNbNiNeC6ObjectZCQBvQBtQBrQBo@Base 15 + _D4core4sync5mutex5Mutex6__ctorMFNbNiNeZCQBnQBlQBjQBg@Base 15 + _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeC6ObjectZOCQBxQBvQBtQBq@Base 15 + _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeZOCQBpQBnQBlQBi@Base 15 + _D4core4sync5mutex5Mutex6__dtorMFNbNiNlNeZv@Base 15 + _D4core4sync5mutex5Mutex6__initZ@Base 15 + _D4core4sync5mutex5Mutex6__vtblZ@Base 15 + _D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 + _D4core4sync5mutex5Mutex6unlockMOFNeZv@Base 15 + _D4core4sync5mutex5Mutex7__ClassZ@Base 15 + _D4core4sync5mutex5Mutex7tryLockMFNeZb@Base 15 + _D4core4sync5mutex5Mutex7tryLockMOFNeZb@Base 15 + _D4core4sync5mutex5Mutex__T12lock_nothrowTCQBpQBnQBlQBiZQBdMFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T12lock_nothrowTOCQBqQBoQBmQBjZQBeMOFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T14unlock_nothrowTCQBrQBpQBnQBkZQBfMFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T14unlock_nothrowTOCQBsQBqQBoQBlZQBgMOFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T15tryLock_nothrowTCQBsQBqQBoQBlZQBgMFNbNiNeZb@Base 15 + _D4core4sync5mutex5Mutex__T15tryLock_nothrowTOCQBtQBrQBpQBmZQBhMOFNbNiNeZb@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNeC6ObjectbZQBi@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNebZQBa@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNeC6ObjectbZOQBk@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNebZOQBc@Base 15 + _D4core4sync6config11__moduleRefZ@Base 15 + _D4core4sync6config12__ModuleInfoZ@Base 15 + _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 + _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecZv@Base 15 + _D4core4sync6config7mvtspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 + _D4core4sync7barrier11__moduleRefZ@Base 15 + _D4core4sync7barrier12__ModuleInfoZ@Base 15 + _D4core4sync7barrier7Barrier4waitMFZv@Base 15 + _D4core4sync7barrier7Barrier6__ctorMFkZCQBmQBkQBiQBd@Base 15 + _D4core4sync7barrier7Barrier6__initZ@Base 15 + _D4core4sync7barrier7Barrier6__vtblZ@Base 15 + _D4core4sync7barrier7Barrier7__ClassZ@Base 15 + _D4core4sync7rwmutex11__moduleRefZ@Base 15 + _D4core4sync7rwmutex12__ModuleInfoZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7__ClassZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeSQCc4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeSQCd4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7__ClassZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeSQCc4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeSQCd4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__ctorMFNbNfEQBwQBuQBsQBn6PolicyZCQCrQCpQCnQCi@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__ctorMOFNbNfEQBxQBvQBtQBo6PolicyZOCQCtQCrQCpQCk@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6policyMFNbNdNfZEQBzQBxQBvQBq6Policy@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6policyMOFNbNdNfZEQCaQByQBwQBr6Policy@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6readerMFNbNdNfZCQBzQBxQBvQBq6Reader@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6readerMOFNbNdNfZOCQCbQBzQBxQBs6Reader@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6writerMFNbNdNfZCQBzQBxQBvQBq6Writer@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6writerMOFNbNdNfZOCQCbQBzQBxQBs6Writer@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex7__ClassZ@Base 15 + _D4core4sync9condition11__moduleRefZ@Base 15 + _D4core4sync9condition12__ModuleInfoZ@Base 15 + _D4core4sync9condition9Condition13mutex_nothrowMFNaNbNdNiNfZCQChQCf5mutex5Mutex@Base 15 + _D4core4sync9condition9Condition13mutex_nothrowMOFNaNbNdNiNfZOCQCjQCh5mutex5Mutex@Base 15 + _D4core4sync9condition9Condition4waitMFSQBm4time8DurationZb@Base 15 + _D4core4sync9condition9Condition4waitMFZv@Base 15 + _D4core4sync9condition9Condition4waitMOFSQBn4time8DurationZb@Base 15 + _D4core4sync9condition9Condition4waitMOFZv@Base 15 + _D4core4sync9condition9Condition5mutexMFNdZCQBqQBoQs5Mutex@Base 15 + _D4core4sync9condition9Condition5mutexMOFNdZOCQBsQBqQu5Mutex@Base 15 + _D4core4sync9condition9Condition6__ctorMFNbNiNfCQBuQBs5mutex5MutexZCQCoQCmQCkQCd@Base 15 + _D4core4sync9condition9Condition6__ctorMOFNbNiNfOCQBwQBu5mutex5MutexZOCQCrQCpQCnQCg@Base 15 + _D4core4sync9condition9Condition6__dtorMFNiNlZv@Base 15 + _D4core4sync9condition9Condition6__initZ@Base 15 + _D4core4sync9condition9Condition6__vtblZ@Base 15 + _D4core4sync9condition9Condition6notifyMFZv@Base 15 + _D4core4sync9condition9Condition6notifyMOFZv@Base 15 + _D4core4sync9condition9Condition7__ClassZ@Base 15 + _D4core4sync9condition9Condition9notifyAllMFZv@Base 15 + _D4core4sync9condition9Condition9notifyAllMOFZv@Base 15 + _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNiSQCi4time8DurationbZb@Base 15 + _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNibZv@Base 15 + _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNiSQCk4time8DurationbZb@Base 15 + _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNibZv@Base 15 + _D4core4sync9condition9Condition__T6__ctorTCQBqQBoQBmQBfTCQCeQCc5mutex5MutexZQBqMFNbNiNeQBfbZQBy@Base 15 + _D4core4sync9condition9Condition__T6__ctorTOCQBrQBpQBnQBgTOCQCgQCe5mutex5MutexZQBsMOFNbNiNeOQBhbZOQCc@Base 15 + _D4core4sync9condition9Condition__T6notifyTCQBqQBoQBmQBfZQwMFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T6notifyTOCQBrQBpQBnQBgZQxMOFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T9notifyAllTCQBtQBrQBpQBiZQzMFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T9notifyAllTOCQBuQBsQBqQBjZQBaMOFNbNibZv@Base 15 + _D4core4sync9exception11__moduleRefZ@Base 15 + _D4core4sync9exception12__ModuleInfoZ@Base 15 + _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCtQCrQCpQCi@Base 15 + _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCtQCrQCpQCi@Base 15 + _D4core4sync9exception9SyncError6__initZ@Base 15 + _D4core4sync9exception9SyncError6__vtblZ@Base 15 + _D4core4sync9exception9SyncError7__ClassZ@Base 15 + _D4core4sync9semaphore11__moduleRefZ@Base 15 + _D4core4sync9semaphore12__ModuleInfoZ@Base 15 + _D4core4sync9semaphore9Semaphore4waitMFSQBm4time8DurationZb@Base 15 + _D4core4sync9semaphore9Semaphore4waitMFZv@Base 15 + _D4core4sync9semaphore9Semaphore6__ctorMFkZCQBqQBoQBmQBf@Base 15 + _D4core4sync9semaphore9Semaphore6__dtorMFNlZv@Base 15 + _D4core4sync9semaphore9Semaphore6__initZ@Base 15 + _D4core4sync9semaphore9Semaphore6__vtblZ@Base 15 + _D4core4sync9semaphore9Semaphore6notifyMFZv@Base 15 + _D4core4sync9semaphore9Semaphore7__ClassZ@Base 15 + _D4core4sync9semaphore9Semaphore7tryWaitMFZb@Base 15 + _D4core4time11__moduleRefZ@Base 15 + _D4core4time11_posixClockFNaNbNiNfEQBhQBf9ClockTypeZi@Base 15 + _D4core4time12TickDuration10TDRvalueOfFSQBmQBkQBiZQl@Base 15 + _D4core4time12TickDuration11ticksPerSecyl@Base 15 + _D4core4time12TickDuration14currSystemTickFNbNdNiNeZSQBzQBxQBv@Base 15 + _D4core4time12TickDuration16time_initializerFZv@Base 15 + _D4core4time12TickDuration3maxFNaNbNdNiNfZSQBpQBnQBl@Base 15 + _D4core4time12TickDuration3minFNaNbNdNiNfZSQBpQBnQBl@Base 15 + _D4core4time12TickDuration4zeroFNaNbNdNiNfZSQBqQBoQBm@Base 15 + _D4core4time12TickDuration5msecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration5nsecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration5opCmpMxFNaNbNiNfSQBqQBoQBmZi@Base 15 + _D4core4time12TickDuration5usecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration6__ctorMFNaNbNcNiNflZSQBuQBsQBq@Base 15 + _D4core4time12TickDuration6__initZ@Base 15 + _D4core4time12TickDuration6hnsecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration7secondsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration8__xopCmpMxFKxSQBnQBlQBjZi@Base 15 + _D4core4time12TickDuration9appOriginySQBkQBiQBg@Base 15 + _D4core4time12__ModuleInfoZ@Base 15 + _D4core4time12nsecsToTicksFNaNbNiNflZl@Base 15 + _D4core4time12ticksToNSecsFNaNbNiNflZl@Base 15 + _D4core4time13TimeException6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCoQCmQCk@Base 15 + _D4core4time13TimeException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCoQCmQCk@Base 15 + _D4core4time13TimeException6__initZ@Base 15 + _D4core4time13TimeException6__vtblZ@Base 15 + _D4core4time13TimeException7__ClassZ@Base 15 + _D4core4time13_clockTypeIdxFEQBbQz9ClockTypeZm@Base 15 + _D4core4time13convClockFreqFNaNbNiNflllZl@Base 15 + _D4core4time14_clockTypeNameFEQBcQBa9ClockTypeZAya@Base 15 + _D4core4time15_ticksPerSecondyG8l@Base 15 + _D4core4time25unitsAreInDescendingOrderFMAAyaZb@Base 15 + _D4core4time3absFNaNbNiNfSQyQv12TickDurationZQu@Base 15 + _D4core4time3absFNaNbNiNfSQyQv8DurationZQp@Base 15 + _D4core4time4_absFNaNbNiNfdZd@Base 15 + _D4core4time4_absFNaNbNiNflZl@Base 15 + _D4core4time8Duration10isNegativeMxFNaNbNdNiNfZb@Base 15 + _D4core4time8Duration3maxFNaNbNdNiNfZSQBkQBiQBg@Base 15 + _D4core4time8Duration3minFNaNbNdNiNfZSQBkQBiQBg@Base 15 + _D4core4time8Duration4zeroFNaNbNdNiNfZSQBlQBjQBh@Base 15 + _D4core4time8Duration5opCmpMxFNaNbNiNfSQBlQBjQBhZi@Base 15 + _D4core4time8Duration6__ctorMFNaNbNcNiNflZSQBpQBnQBl@Base 15 + _D4core4time8Duration6__initZ@Base 15 + _D4core4time8Duration8__xopCmpMxFKxSQBiQBgQBeZi@Base 15 + _D4core4time8Duration8toStringMxFNaNbNfZAya@Base 15 + _D4core4time8Duration__T10opOpAssignVAyaa1_2bZQwMFNaNbNcNiNfxSQCiQCgQCeZSQCtQCrQCp@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra7_7365636f6e6473VQDma5_6e73656373ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 + _D4core4time8Duration__T5totalVAyaa5_6d73656373ZQyMxFNaNbNdNiNfZl@Base 15 + _D4core4time8Duration__T5totalVAyaa7_7365636f6e6473ZQBcMxFNaNbNdNiNfZl@Base 15 + _D4core4time8Duration__T8opBinaryVAyaa1_2bZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 + _D4core4time8Duration__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ10appListSepFNaNbNfQBqkbZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ5unitsyAAa@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa4_64617973ZQBcFNaNbNfQCmlZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_686f757273ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_6d73656373ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7573656373ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7765656b73ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa6_686e73656373ZQBgFNaNbNfQCqlZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_6d696e75746573ZQBiFNaNbNfQCslZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_7365636f6e6473ZQBiFNaNbNfQCslZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFNaNbNfMQBaZv@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj14ticksPerSecondFNaNbNdNiNfZl@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3maxFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3minFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj4zeroFNaNbNdNiNfZSQCrQCp__TQCnVQCci0ZQCx@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5opCmpMxFNaNbNiNfSQCrQCp__TQCnVQCci0ZQCxZi@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5ticksMxFNaNbNdNiNfZl@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8__xopCmpMxFKxSQCoQCm__TQCkVQBzi0ZQCuZi@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8currTimeFNbNdNiNeZSQCtQCr__TQCpVQCei0ZQCz@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8toStringMxFNaNbNfZAya@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQDjQDh__TQDfVQCui0ZQDpZSQEhQEf8Duration@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa4_64617973ZQBmFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_686f757273ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_6d73656373ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7573656373ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7765656b73ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa7_6d696e75746573ZQBsFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBsFNaNbNiNfKlZl@Base 15 + _D4core4time__T2toVAyaa5_6d73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa5_6e73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa5_7573656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa6_686e73656373TlTxSQBoQBm12TickDurationZQBwFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa7_7365636f6e6473TlTxSQBqQBo12TickDurationZQByFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T3durVAyaa4_64617973ZQuFNaNbNiNflZSQBvQBt8Duration@Base 15 + _D4core4time__T3durVAyaa5_686f757273ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_6d73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_6e73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_7573656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_7765656b73ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa6_686e73656373ZQyFNaNbNiNflZSQBzQBx8Duration@Base 15 + _D4core4time__T3durVAyaa7_6d696e75746573ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 + _D4core4time__T3durVAyaa7_7365636f6e6473ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 + _D4core4time__T7convertVAyaa4_64617973VQpa6_686e73656373ZQBqFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_686f757273VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_6d73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_6e73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_7573656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_7765656b73VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta4_64617973ZQBqFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_686f757273ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_6d73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_6e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_7573656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_7765656b73ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta6_686e73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta7_6d696e75746573ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta7_7365636f6e6473ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_6d696e75746573VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6d73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6e73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_7573656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva7_7365636f6e6473ZQByFNaNbNiNflZl@Base 15 + _D4core5bitop11__moduleRefZ@Base 15 + _D4core5bitop12__ModuleInfoZ@Base 15 + _D4core5bitop2btFNaNbNiMxPmmZi@Base 15 + _D4core5bitop3bsfFNaNbNiNfkZi@Base 15 + _D4core5bitop3bsfFNaNbNiNfmZi@Base 15 + _D4core5bitop3bsrFNaNbNiNfkZi@Base 15 + _D4core5bitop3bsrFNaNbNiNfmZi@Base 15 + _D4core5bitop6popcntFNaNbNiNfkZi@Base 15 + _D4core5bitop6popcntFNaNbNiNfmZi@Base 15 + _D4core5bitop7Split646__ctorMFNaNbNcNiNfmZSQBpQBnQBk@Base 15 + _D4core5bitop7Split646__initZ@Base 15 + _D4core5bitop7bitswapFNaNbNiNfkZk@Base 15 + _D4core5bitop7bitswapFNaNbNiNfmZm@Base 15 + _D4core5bitop8BitRange5emptyMxFNaNbNiNfZb@Base 15 + _D4core5bitop8BitRange5frontMFNaNbNiNfZm@Base 15 + _D4core5bitop8BitRange6__ctorMFNaNbNcNiPxmmZSQBrQBpQBm@Base 15 + _D4core5bitop8BitRange6__initZ@Base 15 + _D4core5bitop8BitRange8popFrontMFNaNbNiZv@Base 15 + _D4core5bitop8byteswapFNaNbNiNftZt@Base 15 + _D4core5bitop__T10softPopcntTkZQpFNaNbNiNfkZi@Base 15 + _D4core5bitop__T10softPopcntTmZQpFNaNbNiNfmZi@Base 15 + _D4core5bitop__T11softBitswapTkZQqFNaNbNiNfkZk@Base 15 + _D4core5bitop__T11softBitswapTmZQqFNaNbNiNfmZm@Base 15 + _D4core5bitop__T8softScanTkVbi0ZQqFNaNbNiNfkZi@Base 15 + _D4core5bitop__T8softScanTkVbi1ZQqFNaNbNiNfkZi@Base 15 + _D4core5bitop__T8softScanTmVbi0ZQqFNaNbNiNfmZi@Base 15 + _D4core5bitop__T8softScanTmVbi1ZQqFNaNbNiNfmZi@Base 15 + _D4core5cpuid10_hasPopcntyb@Base 15 + _D4core5cpuid10_hasRdrandyb@Base 15 + _D4core5cpuid10_hasRdseedyb@Base 15 + _D4core5cpuid10_isItaniumyb@Base 15 + _D4core5cpuid10_processoryAa@Base 15 + _D4core5cpuid10_x87onChipyb@Base 15 + _D4core5cpuid10dataCachesFNaNbNdNiNeZxG5SQBnQBl9CacheInfo@Base 15 + _D4core5cpuid11CpuFeatures11__xopEqualsMxFKxSQBrQBpQBmZb@Base 15 + _D4core5cpuid11CpuFeatures6__initZ@Base 15 + _D4core5cpuid11CpuFeatures9__xtoHashFNbNeKxSQBqQBoQBlZm@Base 15 + _D4core5cpuid11__moduleRefZ@Base 15 + _D4core5cpuid11_dataCachesyG5SQBcQBa9CacheInfo@Base 15 + _D4core5cpuid11amd3dnowExtFNaNbNdNiNeZb@Base 15 + _D4core5cpuid11cacheLevelsFNbNdNiNeZk@Base 15 + _D4core5cpuid11coresPerCPUFNaNbNdNiNeZk@Base 15 + _D4core5cpuid11cpuFeaturesSQzQw11CpuFeatures@Base 15 + _D4core5cpuid11hasLahfSahfFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12__ModuleInfoZ@Base 15 + _D4core5cpuid12_amd3dnowExtyb@Base 15 + _D4core5cpuid12_coresPerCPUyk@Base 15 + _D4core5cpuid12_hasLahfSahfyb@Base 15 + _D4core5cpuid12getCpuInfo0BFNbNiNeZv@Base 15 + _D4core5cpuid12hasCmpxchg8bFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12hasPclmulqdqFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12preferAthlonFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13_hasCmpxchg8byb@Base 15 + _D4core5cpuid13_hasPclmulqdqyb@Base 15 + _D4core5cpuid13_preferAthlonyb@Base 15 + _D4core5cpuid13hasCmpxchg16bFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13hasVpclmulqdqFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13threadsPerCPUFNaNbNdNiNeZk@Base 15 + _D4core5cpuid14_hasCmpxchg16byb@Base 15 + _D4core5cpuid14_hasVpclmulqdqyb@Base 15 + _D4core5cpuid14_threadsPerCPUyk@Base 15 + _D4core5cpuid14getCpuFeaturesFNbNiNeZPSQBlQBj11CpuFeatures@Base 15 + _D4core5cpuid14hyperThreadingFNaNbNdNiNeZb@Base 15 + _D4core5cpuid14numCacheLevelsk@Base 15 + _D4core5cpuid14preferPentium1FNaNbNdNiNeZb@Base 15 + _D4core5cpuid14preferPentium4FNaNbNdNiNeZb@Base 15 + _D4core5cpuid15_hyperThreadingyb@Base 15 + _D4core5cpuid15_preferPentium1yb@Base 15 + _D4core5cpuid15_preferPentium4yb@Base 15 + _D4core5cpuid15getAMDcacheinfoFNbNiNeZ8assocmapyAh@Base 15 + _D4core5cpuid15getAMDcacheinfoFNbNiNeZv@Base 15 + _D4core5cpuid16has3dnowPrefetchFNaNbNdNiNeZb@Base 15 + _D4core5cpuid17_has3dnowPrefetchyb@Base 15 + _D4core5cpuid17hyperThreadingBitFNbNdNiNeZb@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ3idsyG63h@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ4waysyG63h@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ5sizesyG63k@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZv@Base 15 + _D4core5cpuid18getcacheinfoCPUID4FNbNiNeZv@Base 15 + _D4core5cpuid18hasSysEnterSysExitFNaNbNdNiNeZb@Base 15 + _D4core5cpuid18max_extended_cpuidk@Base 15 + _D4core5cpuid19_hasSysEnterSysExityb@Base 15 + _D4core5cpuid20cpuid_initializationFNbNiNeZv@Base 15 + _D4core5cpuid3aesFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3avxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3fmaFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3hleFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3mmxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3rtmFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3sseFNaNbNdNiNeZb@Base 15 + _D4core5cpuid4_aesyb@Base 15 + _D4core5cpuid4_avxyb@Base 15 + _D4core5cpuid4_fmayb@Base 15 + _D4core5cpuid4_hleyb@Base 15 + _D4core5cpuid4_mmxyb@Base 15 + _D4core5cpuid4_rtmyb@Base 15 + _D4core5cpuid4_sseyb@Base 15 + _D4core5cpuid4avx2FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4sse2FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4sse3FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4vaesFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5_avx2yb@Base 15 + _D4core5cpuid5_sse2yb@Base 15 + _D4core5cpuid5_sse3yb@Base 15 + _D4core5cpuid5_vaesyb@Base 15 + _D4core5cpuid5fp16cFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5modelk@Base 15 + _D4core5cpuid5sse41FNaNbNdNiNeZb@Base 15 + _D4core5cpuid5sse42FNaNbNdNiNeZb@Base 15 + _D4core5cpuid5sse4aFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5ssse3FNaNbNdNiNeZb@Base 15 + _D4core5cpuid6_fp16cyb@Base 15 + _D4core5cpuid6_sse41yb@Base 15 + _D4core5cpuid6_sse42yb@Base 15 + _D4core5cpuid6_sse4ayb@Base 15 + _D4core5cpuid6_ssse3yb@Base 15 + _D4core5cpuid6amdMmxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid6familyk@Base 15 + _D4core5cpuid6hasShaFNaNbNdNiNeZb@Base 15 + _D4core5cpuid6vendorFNaNbNdNiNeZAya@Base 15 + _D4core5cpuid7_amdMmxyb@Base 15 + _D4core5cpuid7_hasShayb@Base 15 + _D4core5cpuid7_vendoryAa@Base 15 + _D4core5cpuid7avx512fFNaNbNdNiNeZb@Base 15 + _D4core5cpuid7hasCmovFNaNbNdNiNeZb@Base 15 + _D4core5cpuid7hasFxsrFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8_avx512fyb@Base 15 + _D4core5cpuid8_hasCmovyb@Base 15 + _D4core5cpuid8_hasFxsryb@Base 15 + _D4core5cpuid8amd3dnowFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8cpuidX86FNbNiNeZv@Base 15 + _D4core5cpuid8hasCPUIDFNbNiNeZb@Base 15 + _D4core5cpuid8hasLzcntFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8hasRdtscFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8isX86_64FNaNbNdNiNeZb@Base 15 + _D4core5cpuid8steppingk@Base 15 + _D4core5cpuid9CacheInfo6__initZ@Base 15 + _D4core5cpuid9_amd3dnowyb@Base 15 + _D4core5cpuid9_hasLzcntyb@Base 15 + _D4core5cpuid9_hasRdtscyb@Base 15 + _D4core5cpuid9_isX86_64yb@Base 15 + _D4core5cpuid9datacacheG5SQyQv9CacheInfo@Base 15 + _D4core5cpuid9hasPopcntFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9hasRdrandFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9hasRdseedFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9isItaniumFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9max_cpuidk@Base 15 + _D4core5cpuid9processorFNaNbNdNiNeZAya@Base 15 + _D4core5cpuid9x87onChipFNaNbNdNiNeZb@Base 15 + _D4core6atomic11__moduleRefZ@Base 15 + _D4core6atomic12__ModuleInfoZ@Base 15 + _D4core6atomic5pauseFNaNbNiNfZv@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKOxPSQBpQBpQBjZQCc@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKxPOxSQBqQBqQBkZQCd@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC6ObjectZQBtFNaNbNiNeKOxCQyZOCQBd@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TCQCa4sync5mutex5MutexZQCgFNaNbNiNeKOxCQDlQBlQBjQBgZOCQEaQCaQByQBv@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKOxPSQDuQBsQBqQBnZQCi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKxPOxSQDvQBtQBrQBoZQCj@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKOxPQBnZQBs@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKxPQBmZQBr@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKOxhZh@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKxhZh@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKOxiZi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKxiZi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKOxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKOxtZt@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKxtZt@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKObbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKbbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKOmiZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKmiZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKOPQBoQBtZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKQBoQBrZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKOPQCcQChZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKQCcQCfZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKOmmZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKmmZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKOPQChQBqZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKQCgQBoZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKOPQBmQBqZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKQBlQBoZv@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOhZQBgFNaNbNiNfPOhZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOkZQBgFNaNbNiNfPOkZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOmZQBgFNaNbNiNfPOmZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOtZQBgFNaNbNiNfPOtZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedThZQBfFNaNbNiNfPhZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTkZQBfFNaNbNiNfPkZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTmZQBfFNaNbNiNfPmZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTtZQBfFNaNbNiNfPtZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTOkZQBiFNaNbNiNeKOkZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTOmZQBiFNaNbNiNeKOmZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTkZQBhFNaNbNiNeKkZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTmZQBhFNaNbNiNeKmZb@Base 15 + _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePOhhhZb@Base 15 + _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePhhhZb@Base 15 + _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePOmmmZb@Base 15 + _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePmmmZb@Base 15 + _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePOtttZb@Base 15 + _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePtttZb@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 + _D4core6int12811__moduleRefZ@Base 15 + _D4core6int12812__ModuleInfoZ@Base 15 + _D4core6int1282geFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282gtFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282leFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282ltFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282orFNaNbNiNfSQzQw4CentQkZQn@Base 15 + _D4core6int1283addFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283andFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283comFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283decFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283divFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283incFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283mulFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283negFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283rolFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283rorFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283sarFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283shlFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283shrFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283subFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283tstFNaNbNiNfSQBaQy4CentZb@Base 15 + _D4core6int1283ugeFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283ugtFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283uleFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283ultFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283xorFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1284Cent6__initZ@Base 15 + _D4core6int1284rol1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284ror1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284sar1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284shl1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284shr1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284udivFNaNbNiNfSQBbQz4CentQlZQo@Base 15 + _D4core6int1286divmodFNaNbNiNfSQBdQBb4CentQmJQpZQs@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FNaNbNiNfQBqmJmZm@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FQBimJmZ9udiv96_64FNaNbNiNfmkmZk@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZQs@Base 15 + _D4core6memory10initializeFZv@Base 15 + _D4core6memory11__moduleRefZ@Base 15 + _D4core6memory12__ModuleInfoZ@Base 15 + _D4core6memory2GC12ProfileStats6__initZ@Base 15 + _D4core6memory2GC12profileStatsFNbNiNfZSQBmQBkQBg12ProfileStats@Base 15 + _D4core6memory2GC5Stats6__initZ@Base 15 + _D4core6memory2GC5queryFNaNbNkMPvZSQBhQBf8BlkInfo_@Base 15 + _D4core6memory2GC5queryFNbNkMxPvZSQBgQBe8BlkInfo_@Base 15 + _D4core6memory2GC5statsFNbNiNfZSQBeQBcQy5Stats@Base 15 + _D4core6memory2GC6__initZ@Base 15 + _D4core6memory2GC6addrOfFNaNbNiNePNgvZQf@Base 15 + _D4core6memory2GC6addrOfFNaNbNiNePvZQd@Base 15 + _D4core6memory2GC6sizeOfFNaNbNiPvZm@Base 15 + _D4core6memory2GC6sizeOfFNbNiMxPvZm@Base 15 + _D4core6memory2GC7clrAttrFNaNbPvkZk@Base 15 + _D4core6memory2GC7clrAttrFNbMxPvkZk@Base 15 + _D4core6memory2GC7getAttrFNaNbPvZk@Base 15 + _D4core6memory2GC7getAttrFNbMxPvZk@Base 15 + _D4core6memory2GC7setAttrFNaNbPvkZk@Base 15 + _D4core6memory2GC7setAttrFNbMxPvkZk@Base 15 + _D4core6memory8BlkInfo_6__initZ@Base 15 + _D4core6memory8pageSizeym@Base 15 + _D4core6memory__T8pureFreeZQkFNaNbNiPvZv@Base 15 + _D4core6stdcpp11string_view11__moduleRefZ@Base 15 + _D4core6stdcpp11string_view12__ModuleInfoZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11type_traits11__moduleRefZ@Base 15 + _D4core6stdcpp11type_traits12__ModuleInfoZ@Base 15 + _D4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 + _D4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 + _D4core6stdcpp4new_11__moduleRefZ@Base 15 + _D4core6stdcpp4new_11align_val_t6__initZ@Base 15 + _D4core6stdcpp4new_11std_nothrowySQBgQBeQBa9nothrow_t@Base 15 + _D4core6stdcpp4new_12__ModuleInfoZ@Base 15 + _D4core6stdcpp4new_9bad_alloc6__ctorMFNiZCQBoQBmQBiQBg@Base 15 + _D4core6stdcpp4new_9bad_alloc6__initZ@Base 15 + _D4core6stdcpp4new_9bad_alloc6__vtblZ@Base 15 + _D4core6stdcpp4new_9bad_alloc7__ClassZ@Base 15 + _D4core6stdcpp4new_9nothrow_t6__initZ@Base 15 + _D4core6stdcpp5array11__moduleRefZ@Base 15 + _D4core6stdcpp5array12__ModuleInfoZ@Base 15 + _D4core6stdcpp6memory11__moduleRefZ@Base 15 + _D4core6stdcpp6memory12__ModuleInfoZ@Base 15 + _D4core6stdcpp6string11__moduleRefZ@Base 15 + _D4core6stdcpp6string12__ModuleInfoZ@Base 15 + _D4core6stdcpp6vector11__moduleRefZ@Base 15 + _D4core6stdcpp6vector12__ModuleInfoZ@Base 15 + _D4core6stdcpp7utility11__moduleRefZ@Base 15 + _D4core6stdcpp7utility12__ModuleInfoZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__ctorMFNbNiZCQBwQBuQBqQBk@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__initZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid7__ClassZ@Base 15 + _D4core6stdcpp8typeinfo11__moduleRefZ@Base 15 + _D4core6stdcpp8typeinfo12__ModuleInfoZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__ctorMFNbNiZCQBtQBrQBnQBh@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__initZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast7__ClassZ@Base 15 + _D4core6stdcpp8typeinfo9type_info6__ctorMFNiPxaZCQBvQBtQBpQBj@Base 15 + _D4core6stdcpp8typeinfo9type_info6__initZ@Base 15 + _D4core6stdcpp8typeinfo9type_info6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo9type_info7__ClassZ@Base 15 + _D4core6stdcpp8xutility11__moduleRefZ@Base 15 + _D4core6stdcpp8xutility12__ModuleInfoZ@Base 15 + _D4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 + _D4core6stdcpp9allocator11__moduleRefZ@Base 15 + _D4core6stdcpp9allocator12__ModuleInfoZ@Base 15 + _D4core6stdcpp9exception11__moduleRefZ@Base 15 + _D4core6stdcpp9exception12__ModuleInfoZ@Base 15 + _D4core6stdcpp9exception13bad_exception6__ctorMFNbNiPxaZCQCdQCbQBxQBq@Base 15 + _D4core6stdcpp9exception13bad_exception6__initZ@Base 15 + _D4core6stdcpp9exception13bad_exception6__vtblZ@Base 15 + _D4core6stdcpp9exception13bad_exception7__ClassZ@Base 15 + _D4core6stdcpp9exceptionQk6__ctorMFNbNiPxaiZCQBrQBpQBlQBo@Base 15 + _D4core6stdcpp9exceptionQk6__ctorMFNbNiZCQBnQBlQBhQBk@Base 15 + _D4core6stdcpp9exceptionQk6__initZ@Base 15 + _D4core6stdcpp9exceptionQk6__vtblZ@Base 15 + _D4core6stdcpp9exceptionQk7__ClassZ@Base 15 + _D4core6thread10threadbase10ThreadBase10popContextMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase10topContextMFNbNiZPSQCfQCd7context12StackContext@Base 15 + _D4core6thread10threadbase10ThreadBase11pushContextMFNbNiPSQCfQCd7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase12isMainThreadMFNbNdNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase12registerThisFNbNiCQCeQCcQByQBpbZv@Base 15.2 + _D4core6thread10threadbase10ThreadBase13nAboutToStartm@Base 15 + _D4core6thread10threadbase10ThreadBase13pAboutToStartPCQCbQBzQBvQBm@Base 15 + _D4core6thread10threadbase10ThreadBase13tlsRTdataInitMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase15initDataStorageMFNbZv@Base 15 + _D4core6thread10threadbase10ThreadBase18destroyDataStorageMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase18destructBeforeDtorMFNbNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase21incrementAboutToStartFNbNiCQCnQClQChQByZv@Base 15 + _D4core6thread10threadbase10ThreadBase25destroyDataStorageIfAvailMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase2idMFNdNiNfZm@Base 15 + _D4core6thread10threadbase10ThreadBase3addFNbNiCQBuQBsQBoQBfbZv@Base 15 + _D4core6thread10threadbase10ThreadBase3addFNbNiPSQBvQBt7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase3runMFZv@Base 15 + _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfAyaZv@Base 15 + _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfZAya@Base 15 + _D4core6thread10threadbase10ThreadBase5slockFNbNdNiZCQBz4sync5mutex5Mutex@Base 15 + _D4core6thread10threadbase10ThreadBase5yieldFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNeDFZvmZCQCiQCgQCcQBt@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfPFZvmZCQCiQCgQCcQBt@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfmZCQCeQCcQByQBp@Base 15 + _D4core6thread10threadbase10ThreadBase6__initZ@Base 15 + _D4core6thread10threadbase10ThreadBase6__vtblZ@Base 15 + _D4core6thread10threadbase10ThreadBase6_slockG72v@Base 15 + _D4core6thread10threadbase10ThreadBase6getAllFZ6resizeFNaNbNfKACQCkQCiQCeQBvmZv@Base 15 + _D4core6thread10threadbase10ThreadBase6getAllFZACQBvQBtQBpQBg@Base 15 + _D4core6thread10threadbase10ThreadBase6removeFNbNiCQBxQBvQBrQBiZv@Base 15 + _D4core6thread10threadbase10ThreadBase6removeFNbNiPSQByQBw7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase7__ClassZ@Base 15 + _D4core6thread10threadbase10ThreadBase7getThisFNbNiNfZCQCbQBzQBvQBm@Base 15 + _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZ6resizeFNbNiKAQBemZv@Base 15 + _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZi@Base 15 + _D4core6thread10threadbase10ThreadBase7setThisFNbNiCQByQBwQBsQBjZv@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_cbegPSQBuQBs7context12StackContext@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_mainCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_tbegCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_thisCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_tlenm@Base 15 + _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfZb@Base 15 + _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfbZv@Base 15 + _D4core6thread10threadbase10ThreadBase9initLocksFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase9isRunningMFNbNdNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase9termLocksFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase9tlsGCDataMFNbNcNiZPv@Base 15 + _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn6getAllFZ6resizeFNaNbNfKACQDoQDmQDiQCzmZvZQCrFZQx@Base 15 + _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn7opApplyFMDFKCQDcQDaQCwQCnZiZ6resizeFNbNiKAQBemZvZQCzFNiZQp@Base 15 + _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDaQCwQCn@Base 15 + _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDaQCwQCn@Base 15 + _D4core6thread10threadbase11ThreadError6__initZ@Base 15 + _D4core6thread10threadbase11ThreadError6__vtblZ@Base 15 + _D4core6thread10threadbase11ThreadError7__ClassZ@Base 15 + _D4core6thread10threadbase11__moduleRefZ@Base 15 + _D4core6thread10threadbase11ll_nThreadsm@Base 15 + _D4core6thread10threadbase11ll_pThreadsPSQBnQBl5types13ll_ThreadData@Base 15 + _D4core6thread10threadbase12__ModuleInfoZ@Base 15 + _D4core6thread10threadbase12lowlevelLockFNbNdNiZCQBv4sync5mutex5Mutex@Base 15 + _D4core6thread10threadbase12suspendDepthk@Base 15 + _D4core6thread10threadbase13onThreadErrorFNbNiAyaZ5errorCQCdQCbQBx11ThreadError@Base 15 + _D4core6thread10threadbase13onThreadErrorFNbNiAyaZv@Base 15 + _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDgQDeQDaQCr@Base 15 + _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDgQDeQDaQCr@Base 15 + _D4core6thread10threadbase15ThreadException6__initZ@Base 15 + _D4core6thread10threadbase15ThreadException6__vtblZ@Base 15 + _D4core6thread10threadbase15ThreadException7__ClassZ@Base 15 + _D4core6thread10threadbase15ll_removeThreadFNbNimZv@Base 15 + _D4core6thread10threadbase15scanAllTypeImplFNbMDFNbEQByQBwQBs8ScanTypePvQcZvQgZv@Base 15 + _D4core6thread10threadbase17multiThreadedFlagb@Base 15 + _D4core6thread10threadbase17thread_findByAddrFmZCQBvQBtQBp10ThreadBase@Base 15 + _D4core6thread10threadbase18findLowLevelThreadFNbNimZb@Base 15 + _D4core6thread10threadbase19initLowlevelThreadsFNbNiZv@Base 15 + _D4core6thread10threadbase19termLowlevelThreadsFNbNiZv@Base 15 + _D4core6thread10threadbase23thread_processTLSGCDataFNbDFNbPvZQdZv@Base 15 + _D4core6thread10threadbase25_sharedStaticDtor_L971_C1FZv@Base 15.2 + _D4core6thread10threadbase7ll_lockG72v@Base 15 + _D4core6thread10threadbase__T15thread_term_tplTCQBuQBs8osthread6ThreadTG185vZQBwFNbNiKQpZv@Base 15 + _D4core6thread10threadbase__T21thread_attachThis_tplTCQCaQBy8osthread6ThreadZQBwFNbZQBf@Base 15 + _D4core6thread11__moduleRefZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup3addMFCQBtQBr8osthread6ThreadZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup6__initZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup6__vtblZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup6createMFDFZvZCQCbQBz8osthread6Thread@Base 15 + _D4core6thread11threadgroup11ThreadGroup6createMFPFZvZCQCbQBz8osthread6Thread@Base 15 + _D4core6thread11threadgroup11ThreadGroup6removeMFCQBwQBu8osthread6ThreadZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup7__ClassZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup7joinAllMFbZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup7opApplyMFMDFKCQCbQBz8osthread6ThreadZiZi@Base 15 + _D4core6thread11threadgroup11__moduleRefZ@Base 15 + _D4core6thread11threadgroup12__ModuleInfoZ@Base 15 + _D4core6thread12__ModuleInfoZ@Base 15 + _D4core6thread5fiber11__moduleRefZ@Base 15 + _D4core6thread5fiber12__ModuleInfoZ@Base 15 + _D4core6thread5fiber4base11__moduleRefZ@Base 15 + _D4core6thread5fiber4base12__ModuleInfoZ@Base 15 + _D4core6thread5fiber4base9FiberBase13yieldAndThrowFNbNiC6object9ThrowableZv@Base 15 + _D4core6thread5fiber4base9FiberBase3runMFZv@Base 15 + _D4core6thread5fiber4base9FiberBase4callMFEQBpQBnQBjQBgQBe7RethrowZC6object9Throwable@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiDFZvZv@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiPFZvZv@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase5stateMxFNaNbNdNiNfZEQCcQCaQBwQBtQBr5State@Base 15 + _D4core6thread5fiber4base9FiberBase5yieldFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase6__ctorMFNbDFZvmmZCQCaQByQBuQBrQBp@Base 15 + _D4core6thread5fiber4base9FiberBase6__ctorMFNbPFZvmmZCQCaQByQBuQBrQBp@Base 15 + _D4core6thread5fiber4base9FiberBase6__dtorMFNbNiNlZv@Base 15 + _D4core6thread5fiber4base9FiberBase6__initZ@Base 15 + _D4core6thread5fiber4base9FiberBase6__vtblZ@Base 15 + _D4core6thread5fiber4base9FiberBase7__ClassZ@Base 15 + _D4core6thread5fiber4base9FiberBase7getThisFNbNiNfZCQByQBwQBsQBpQBn@Base 15 + _D4core6thread5fiber4base9FiberBase7setThisFNbNiCQBvQBtQBpQBmQBkZv@Base 15 + _D4core6thread5fiber4base9FiberBase7sm_thisCQBqQBoQBkQBhQBf@Base 15 + _D4core6thread5fiber4base9FiberBase7sm_utxtSQBq3sys5posix8ucontext10ucontext_t@Base 15 + _D4core6thread5fiber4base9FiberBase8callImplMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase8switchInMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase9switchOutMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi0ZQBhMFNbNiZC6object9Throwable@Base 15 + _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi1ZQBhMFNiZC6object9Throwable@Base 15 + _D4core6thread5fiber5Fiber10allocStackMFNbmmZv@Base 15 + _D4core6thread5fiber5Fiber19_staticCtor_L674_C9FZv@Base 15 + _D4core6thread5fiber5Fiber6__ctorMFNbDFZvmmZCQBrQBpQBlQBi@Base 15 + _D4core6thread5fiber5Fiber6__ctorMFNbPFZvmmZCQBrQBpQBlQBi@Base 15 + _D4core6thread5fiber5Fiber6__initZ@Base 15 + _D4core6thread5fiber5Fiber6__vtblZ@Base 15 + _D4core6thread5fiber5Fiber7__ClassZ@Base 15 + _D4core6thread5fiber5Fiber7getThisFNbNiNfZCQBpQBnQBjQBg@Base 15 + _D4core6thread5fiber5Fiber9freeStackMFNbNiZv@Base 15 + _D4core6thread5fiber5Fiber9initStackMFNbNiZv@Base 15 + _D4core6thread5types11__moduleRefZ@Base 15 + _D4core6thread5types12__ModuleInfoZ@Base 15 + _D4core6thread5types13ll_ThreadData6__initZ@Base 15 + _D4core6thread5types17PTHREAD_STACK_MINym@Base 15 + _D4core6thread5types24_sharedStaticCtor_L54_C1FZv@Base 15 + _D4core6thread7context11__moduleRefZ@Base 15 + _D4core6thread7context12StackContext6__initZ@Base 15 + _D4core6thread7context12__ModuleInfoZ@Base 15 + _D4core6thread7context8Callable6__initZ@Base 15 + _D4core6thread7context8Callable6opCallMFZv@Base 15 + _D4core6thread7context8Callable8opAssignMFNaNbNiNfDFZvZv@Base 15 + _D4core6thread7context8Callable8opAssignMFNaNbNiNfPFZvZv@Base 15 + _D4core6thread8osthread11__moduleRefZ@Base 15 + _D4core6thread8osthread11getStackTopFNbNiZPv@Base 15 + _D4core6thread8osthread11swapContextFNbNiPvZQd@Base 15 + _D4core6thread8osthread12__ModuleInfoZ@Base 15 + _D4core6thread8osthread12attachThreadFNbNiCQBpQBn10threadbase10ThreadBaseZQBg@Base 15 + _D4core6thread8osthread12suspendCountSQBk3sys5posix9semaphore5sem_t@Base 15 + _D4core6thread8osthread12thread_yieldFNbNiZv@Base 15 + _D4core6thread8osthread14getStackBottomFNbNiZPv@Base 15 + _D4core6thread8osthread15adjustStackSizeFNbNimZm@Base 15 + _D4core6thread8osthread16_mainThreadStoreG185v@Base 15 + _D4core6thread8osthread17thread_entryPointUNbPvZ21thread_cleanupHandlerUNaNbNiQBhZv@Base 15 + _D4core6thread8osthread18callWithStackShellFNbMDFNbPvZvZv@Base 15 + _D4core6thread8osthread18joinLowLevelThreadFNbNimZv@Base 15 + _D4core6thread8osthread18resumeSignalNumberi@Base 15 + _D4core6thread8osthread19suspendSignalNumberi@Base 15 + _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZ20thread_lowlevelEntryUNbPvZQd@Base 15 + _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZm@Base 15 + _D4core6thread8osthread6Thread12PRIORITY_MAXFNaNbNdNiNeZxi@Base 15 + _D4core6thread8osthread6Thread12PRIORITY_MINFNaNbNdNiNeZi@Base 15 + _D4core6thread8osthread6Thread14loadPrioritiesFNbNiNeZSQCbQBzQBvQBp8Priority@Base 15 + _D4core6thread8osthread6Thread16PRIORITY_DEFAULTFNaNbNdNiNeZi@Base 15 + _D4core6thread8osthread6Thread3runMFZv@Base 15 + _D4core6thread8osthread6Thread4joinMFbZC6object9Throwable@Base 15 + _D4core6thread8osthread6Thread5cacheOSQBkQBiQBeQy8Priority@Base 15 + _D4core6thread8osthread6Thread5sleepFNbNiNeSQBq4time8DurationZv@Base 15 + _D4core6thread8osthread6Thread5startMFNbZCQBoQBmQBiQBc@Base 15 + _D4core6thread8osthread6Thread5yieldFNbNiZv@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfDFZvmZCQCaQByQBuQBo@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfPFZvmZCQCaQByQBuQBo@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfmZCQBwQBuQBqQBk@Base 15 + _D4core6thread8osthread6Thread6__dtorMFNbNiNlZv@Base 15 + _D4core6thread8osthread6Thread6__initZ@Base 15 + _D4core6thread8osthread6Thread6__vtblZ@Base 15 + _D4core6thread8osthread6Thread7__ClassZ@Base 15 + _D4core6thread8osthread6Thread7getThisFNbNiNfZCQBtQBrQBnQBh@Base 15 + _D4core6thread8osthread6Thread8Priority6__initZ@Base 15 + _D4core6thread8osthread6Thread8priorityMFNdZi@Base 15 + _D4core6thread8osthread6Thread8priorityMFNdiZv@Base 15 + _D4core6thread8osthread6Thread9isRunningMFNbNdNiZb@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d4158ZQBtFNbNiNfZi@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d494eZQBtFNbNiNfZi@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa16_5052494f524954595f44454641554c54ZQCbFNbNiNfZi@Base 15 + _D4core6thread8osthread6resumeFNbNiCQBiQBg10threadbase10ThreadBaseZv@Base 15 + _D4core6thread8osthread7suspendFNbNiCQBjQBhQBd6ThreadZb@Base 15 + _D4core6thread8osthread8toThreadFNaNbNiNeNkMCQBrQBp10threadbase10ThreadBaseZCQCxQCvQCr6Thread@Base 15 + _D4core6vararg11__moduleRefZ@Base 15 + _D4core6vararg12__ModuleInfoZ@Base 15 + _D4core7factory11__moduleRefZ@Base 15 + _D4core7factory12__ModuleInfoZ@Base 15 + _D4core7runtime11__moduleRefZ@Base 15 + _D4core7runtime12__ModuleInfoZ@Base 15 + _D4core7runtime14UnitTestResult6__initZ@Base 15 + _D4core7runtime18runModuleUnitTestsUZ19unittestSegvHandlerUiPSQCi3sys5posix6signal9siginfo_tPvZv@Base 15 + _D4core7runtime19defaultTraceHandlerFPvZC6object9Throwable9TraceInfo@Base 15 + _D4core7runtime19defaultTraceHandlerFPvZ__T8allocateTC3gcc9backtrace12LibBacktraceTiZQBqFNiiZQBo@Base 15 + _D4core7runtime23defaultTraceDeallocatorFNbC6object9Throwable9TraceInfoZv@Base 15 + _D4core7runtime25_sharedStaticCtor_L121_C1FZv@Base 15.2 + _D4core7runtime5CArgs6__initZ@Base 15 + _D4core7runtime7Runtime10initializeFZb@Base 15 + _D4core7runtime7Runtime16moduleUnitTesterFNdPFZbZv@Base 15 + _D4core7runtime7Runtime16moduleUnitTesterFNdZPFZb@Base 15 + _D4core7runtime7Runtime19sm_moduleUnitTesterPFZb@Base 15 + _D4core7runtime7Runtime22sm_extModuleUnitTesterPFZSQBxQBv14UnitTestResult@Base 15 + _D4core7runtime7Runtime24extendedModuleUnitTesterFNdPFZSQCcQCa14UnitTestResultZv@Base 15 + _D4core7runtime7Runtime24extendedModuleUnitTesterFNdZPFZSQCdQCb14UnitTestResult@Base 15 + _D4core7runtime7Runtime6__initZ@Base 15 + _D4core7runtime7Runtime9terminateFZb@Base 15 + _D4core8builtins11__ctfeWriteFNaNbNiNfMAxaZv@Base 15 + _D4core8builtins11__moduleRefZ@Base 15 + _D4core8builtins12__ModuleInfoZ@Base 15 + _D4core8demangle11__moduleRefZ@Base 15 + _D4core8demangle11demangleCXXFNaNbNeNkMAxaPUNaNbNexPaPaPmPiZQhNkMAaZQd@Base 15 + _D4core8demangle12__ModuleInfoZ@Base 15 + _D4core8demangle12demangleTypeFNaNbNfAxaAaZQd@Base 15 + _D4core8demangle14__cxa_demangleOPUNaNbNexPaPaPmPiZQh@Base 15 + _D4core8demangle15getCXXDemanglerFNbNeZ1_UNaNbNiNexPaPaPmPiZQh@Base 15 + _D4core8demangle15getCXXDemanglerFNbNeZPUNaNbNexPaPaPmPiZQh@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks10parseLNameMFNaNbNlNeJAyaMKSQDkQDi__T8DemangleTSQEeQEcQDwFNaNbNfNkMQDiZQDiZQBmZb@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11__xopEqualsMxFKxSQDaQCyQCsFNaNbNfNkMQCeZQCeZb@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13encodeBackrefMFNaNbNlNfmZv@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13flushPositionMFNaNbNlNfKSQDiQDg__T8DemangleTSQEcQEaQDuFNaNbNfNkMQDgZQDgZQBmZv@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks16positionInResultMFNaNbNiNlNfmZm@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9__xtoHashFNbNeKxSQCzQCxQCrFNaNbNfNkMQCdZQCdZm@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9parseTypeMFNaNbNjNlNfJbKSQDhQDf__T8DemangleTSQEbQDzQDtFNaNbNfNkMQDfZQDfZQBmAaZQd@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZAa@Base 15 + _D4core8demangle15toStringConsumeFNaNbNiNfyASQBrQBp16ManglingFlagInfoKtZAya@Base 15 + _D4core8demangle16ManglingFlagInfo11__xopEqualsMxFKxSQBzQBxQBrZb@Base 15 + _D4core8demangle16ManglingFlagInfo6__initZ@Base 15 + _D4core8demangle16ManglingFlagInfo9__xtoHashFNbNeKxSQByQBwQBqZm@Base 15 + _D4core8demangle6Buffer11__xopEqualsMxFKxSQBoQBmQBgZb@Base 15 + _D4core8demangle6Buffer12bslice_emptyFNaNbNiNlNfZSQBwQBu8BufSlice@Base 15 + _D4core8demangle6Buffer18checkAndStretchBufMFNaNbNlNfmZv@Base 15 + _D4core8demangle6Buffer5shiftMFNaNbNjNlNfMxSQBqQBo8BufSliceZSQChQCfQr@Base 15 + _D4core8demangle6Buffer6__initZ@Base 15 + _D4core8demangle6Buffer6appendMFNaNbNlNfMAxaZv@Base 15 + _D4core8demangle6Buffer6bsliceMFNaNbNiNlNfmmZSQBsQBq8BufSlice@Base 15 + _D4core8demangle6Buffer6lengthMxFNaNbNiNlNfZm@Base 15 + _D4core8demangle6Buffer6removeMFNaNbNlNfMSQBoQBm8BufSliceZv@Base 15 + _D4core8demangle6Buffer7opSliceMFNaNbNiNjNlNfmmZSQBvQBt8BufSlice@Base 15 + _D4core8demangle6Buffer8containsFNaNbNfMAxaMxSQBsQBq8BufSliceZb@Base 15 + _D4core8demangle6Buffer9__xtoHashFNbNeKxSQBnQBlQBfZm@Base 15 + _D4core8demangle6Buffer9copyInputMFNaNbNjNlNfMAxaZAa@Base 15 + _D4core8demangle7NoHooks6__initZ@Base 15 + _D4core8demangle8BufSlice11__invariantMxFNaNbNfZv@Base 15 + _D4core8demangle8BufSlice11__xopEqualsMxFKxSQBqQBoQBiZb@Base 15 + _D4core8demangle8BufSlice12__invariant0MxFNaNbNfZv@Base 15 + _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAaZSQBzQBxQBr@Base 15 + _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAammbZSQCcQCaQBu@Base 15 + _D4core8demangle8BufSlice6__initZ@Base 15 + _D4core8demangle8BufSlice6lengthMxFNaNbNlNfZm@Base 15 + _D4core8demangle8BufSlice8getSliceMNgFNaNbNiNlNfZANga@Base 15 + _D4core8demangle8BufSlice9__xtoHashFNbNeKxSQBpQBnQBhZm@Base 15 + _D4core8demangle9funcAttrsyASQBbQz16ManglingFlagInfo@Base 15 + _D4core8demangle9typeCtorsyASQBbQz16ManglingFlagInfo@Base 15 + _D4core8demangleQjFNaNbNfNkMAxaNkMAaPUNaNbNexPaPaPmPiZQhZQx@Base 15 + _D4core8demangle__T10mangleFuncHTPFMDFyPS6object10ModuleInfoZiZiTQBfZQByFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbMDFNbPvZvZvTQpZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiAyaMDFNbNiQkZQnbZQrTQzZQBrFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiAyakQeQgmZvTQrZQBjFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZQBkTQBtZQCmFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZvTQBrZQCkFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiPvZQdTQlZQBdFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiPvZvTQkZQBcFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZPvTQjZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZmTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZvTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbPvMDFNbQhQjZvZvTQtZQBlFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEgQEe__TQDyTQDuZQEgFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEfQEd__TQDxTQDtZQEfFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDpQDn__TQDhTQDdZQDpFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDoQDm__TQDgTQDcZQDoFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEaQDy__TQDsTQDoZQEaFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDzQDx__TQDrTQDnZQDzFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDrQDp__TQDjTQDfZQDrFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDqQDo__TQDiTQDeZQDqFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEuQEs__TQEmTQEiZQEuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEtQEr__TQElTQEhZQEtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEsQEq__TQEkTQEgZQEsFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQErQEp__TQEjTQEfZQErFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDlQDj__TQDdTQCzZQDlFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDuQDs__TQDmTQDiZQDuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDtQDr__TQDlTQDhZQDtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10isHexDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseLNameMFNaNbNlNfJAyaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbMSQEfQEd8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11__xopEqualsMxFKxSQDyQDw__TQDqTQDkZQDyZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11peekBackrefMFNaNbNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11sliceNumberMFNaNbNiNjNlNfZQBy@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbMQBzZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleNameMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleTypeMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseFuncAttrMFNaNbNiNfJbZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseModifierMFNaNbNiNfZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl15parseSymbolNameMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16isCallConventionFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseIntegerValueMFNaNbNlNfJbMSQEmQEk8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTypeFunctionMFNaNbNjNlNfJbEQEnQEl__TQEfTQDzZQEn10IsDelegateZSQFvQFt8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseCallConventionMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseMangledNameArgMFNaNbNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQEvQEt8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3eatMFNaNbNiNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3padMFNaNbNfQBiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMQBnZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMSQDxQDv8BufSliceZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4peekMFNaNbNiNfmZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4testMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5emptyMFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5frontMFNaNbNdNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfQBmZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5shiftMFNaNbNjNlNfMxSQEaQDy8BufSliceZSQErQEpQr@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsEQEfQEd__TQDxTQDrZQEf7AddTypeNkMAaZSQFoQFm__TQFgTQFaZQFo@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsNkMAaZSQElQEj__TQEdTQDxZQEl@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isAlphaFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putAsHexMFNaNbNfmiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putCommaMFNaNbNfmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9__xtoHashFNbNeKxSQDxQDv__TQDpTQDjZQDxZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9ascii2hexFNaNbNiNfJbaZh@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseRealMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZSQEfQEd8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleSQDvQDt__TQDnTQDhZQDv16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleS_DQDxQDv__TQDpTQDjZQDx9parseTypeMFNaNbNjNlNfJbZSQFrQFp8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10isHexDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseLNameMFNaNbNlNfJAyaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbMSQCuQCs8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11__xopEqualsMxFKxSQCnQCl__TQCfTQBzZQCnZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11peekBackrefMFNaNbNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11sliceNumberMFNaNbNiNjNlNfZAxa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbMAxaZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleNameMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleTypeMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseFuncAttrMFNaNbNiNfJbZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseModifierMFNaNbNiNfZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa15parseSymbolNameMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16isCallConventionFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseIntegerValueMFNaNbNlNfJbMSQDbQCz8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTypeFunctionMFNaNbNjNlNfJbEQDcQDa__TQCuTQCoZQDc10IsDelegateZSQEkQEi8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseCallConventionMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseMangledNameArgMFNaNbNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQDkQDi8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3eatMFNaNbNiNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3padMFNaNbNfAxaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMAxaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMSQCmQCk8BufSliceZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4peekMFNaNbNiNfmZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4testMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5emptyMFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5frontMFNaNbNdNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfAxaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5shiftMFNaNbNjNlNfMxSQCpQCn8BufSliceZSQDgQDeQr@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaEQCuQCs__TQCmTQCgZQCu7AddTypeNkMAaZSQEdQEb__TQDvTQDpZQEd@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaNkMAaZSQDaQCy__TQCsTQCmZQDa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isAlphaFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putAsHexMFNaNbNfmiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putCommaMFNaNbNfmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9__xtoHashFNbNeKxSQCmQCk__TQCeTQByZQCmZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9ascii2hexFNaNbNiNfJbaZh@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseRealMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZSQCuQCs8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleSQCkQCi__TQCcTQBwZQCk16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleS_DQCmQCk__TQCeTQByZQCm9parseTypeMFNaNbNjNlNfJbZSQEgQEe8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 + _D4core8internal10attributes11__moduleRefZ@Base 15 + _D4core8internal10attributes12__ModuleInfoZ@Base 15 + _D4core8internal10entrypoint11__moduleRefZ@Base 15 + _D4core8internal10entrypoint12__ModuleInfoZ@Base 15 + _D4core8internal11destruction11__moduleRefZ@Base 15 + _D4core8internal11destruction12__ModuleInfoZ@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3gcc8sections3elf9ThreadDSOZQBvFNaNbNiNfKQBqZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface4RootZQBsFNaNbNiNfKQBnZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface5RangeZQBtFNaNbNiNfKQBoZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDnFNaNbNiNfKQDiZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 + _D4core8internal12parseoptions10parseErrorFNbNiMxAaMxQeMxQiAxaZb@Base 15 + _D4core8internal12parseoptions11__moduleRefZ@Base 15 + _D4core8internal12parseoptions12__ModuleInfoZ@Base 15 + _D4core8internal12parseoptions15overflowedErrorFNbNiMxAaMxQeZb@Base 15 + _D4core8internal12parseoptions3minFNbNimmZm@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKQfQlZb@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKbQkZb@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKfQkZb@Base 15 + _D4core8internal12parseoptions6MemVal6__initZ@Base 15 + _D4core8internal12parseoptions8optErrorFNbNiMxAaMxQeAxaZb@Base 15 + _D4core8internal12parseoptions__T12parseOptionsTSQBv2gc6config6ConfigZQBlFNbNiKQBfAyaZb@Base 15 + _D4core8internal12parseoptions__T14rt_parseOptionTbZQtFNbNiAxaKANgaKbQkZb@Base 15 + _D4core8internal12parseoptions__T17initConfigOptionsTSQCa2gc6config6ConfigZQBqFNbNiKQBfAyaZb@Base 15 + _D4core8internal12parseoptions__T4skipX7isspaceZQpFNaNbNiNfANgaZQf@Base 15 + _D4core8internal12parseoptions__T5parseHThZQkFNbNiAxaKANgaKhQkbZb@Base 15 + _D4core8internal12parseoptions__T5parseHTkZQkFNbNiAxaKANgaKkQkbZb@Base 15 + _D4core8internal12parseoptions__T5parseHTmZQkFNbNiAxaKANgaKmQkbZb@Base 15 + _D4core8internal2gc2os10isLowOnMemFNbNimZb@Base 15 + _D4core8internal2gc2os10os_mem_mapFNbNimbZPv@Base 15 + _D4core8internal2gc2os11__moduleRefZ@Base 15 + _D4core8internal2gc2os12__ModuleInfoZ@Base 15 + _D4core8internal2gc2os12os_mem_unmapFNbNiPvmZi@Base 15 + _D4core8internal2gc2os15os_physical_memFNbNibZm@Base 15 + _D4core8internal2gc2os8wait_pidFNbNiibZEQBmQBkQBeQBe11ChildStatus@Base 15 + _D4core8internal2gc4bits11__moduleRefZ@Base 15 + _D4core8internal2gc4bits12__ModuleInfoZ@Base 15 + _D4core8internal2gc4bits6GCBits10clearWordsMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits10copyRangeZMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits16copyWordsShiftedMFNbNimmmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits18copyRangeRepeatingMFNbNimmPxmmZv@Base 15 + _D4core8internal2gc4bits6GCBits3setMFNaNbNiNlNemZi@Base 15 + _D4core8internal2gc4bits6GCBits4DtorMFNbNibZv@Base 15 + _D4core8internal2gc4bits6GCBits4copyMFNbNiPSQBqQBoQBiQBiQBgZv@Base 15 + _D4core8internal2gc4bits6GCBits4testMxFNaNbNiNlNemZm@Base 15 + _D4core8internal2gc4bits6GCBits4zeroMFNbNiZv@Base 15 + _D4core8internal2gc4bits6GCBits5allocMFNbNimbZv@Base 15 + _D4core8internal2gc4bits6GCBits5clearMFNaNbNiNlNemZi@Base 15 + _D4core8internal2gc4bits6GCBits6__initZ@Base 15 + _D4core8internal2gc4bits6GCBits6nwordsMxFNaNbNdNiZm@Base 15 + _D4core8internal2gc4bits6GCBits6setAllMFNbNiZv@Base 15 + _D4core8internal2gc4bits6GCBits8clrRangeMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits8setRangeMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits8setWordsMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits9clrRangeZMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits9copyRangeMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits9copyWordsMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits9setLockedMFNaNbNiNlNemZm@Base 15 + _D4core8internal2gc4bits6GCBits9setRangeZMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw10baseOffsetFNbNimEQCfQCdQBxQBxQBvQCg4BinsZm@Base 15 + _D4core8internal2gc4impl12conservativeQw10extendTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw10initializeFZCQCbQBq11gcinterface2GC@Base 15 + _D4core8internal2gc4impl12conservativeQw10invalidateFNbNiAvhbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw10mallocTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw10numExtendsl@Base 15 + _D4core8internal2gc4impl12conservativeQw10numMallocsl@Base 15 + _D4core8internal2gc4impl12conservativeQw11__moduleRefZ@Base 15 + _D4core8internal2gc4impl12conservativeQw11adjustAttrsFNbKkxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw11calcBinBaseFZG15G256s@Base 15 + _D4core8internal2gc4impl12conservativeQw11numReallocsl@Base 15 + _D4core8internal2gc4impl12conservativeQw11reallocTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10initializeFNbPSQCrQCpQCjQCjQChQCs3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_mallocFNbPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_parentFNbPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector11log_collectFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector8log_freeFNbNiPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl12conservativeQw12maxPauseTimeSQCb4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw12sentinel_addFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw12sentinel_subFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw13maxPoolMemorym@Base 15 + _D4core8internal2gc4impl12conservativeQw13sentinel_initFNbNiPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw13sentinel_sizeFNbNixPvmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw13setupMetadataFNbAvkmmxC8TypeInfoZQr@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC10freeNoSyncMFNbNiPvZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11checkNoSyncMFNbPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZ2goFNbPSQDcQDaQCuQCuQCsQDd3GcxZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11queryNoSyncMFNbPvZSQCx6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12_inFinalizerb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12addrOfNoSyncMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12extendNoSyncMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12mallocNoSyncMFNbmkKmxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12sizeOfNoSyncMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQt@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reserveNoSyncMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZ2goFNbPSQDiQDgQDaQDaQCyQDj3GcxMxQBjZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC14getStatsNoSyncMFNbNiNeJSQDc6memory2GC5StatsZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4filePa@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4linem@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5checkMFNbPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__ctorMFZCQCnQClQCfQCfQCdQCoQBt@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__dtorMFNlZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__vtblZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZ2goFNaNbNiNfPSQDaQCyQCsQCsQCqQDb3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6gcLockOSQClQCj8spinlock15AlignedSpinLock@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6lockNRFNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7__ClassZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZ2goFNaNbNiNfPSQDbQCzQCtQCtQCrQDc3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZ2goFNbPSQCzQCxQCrQCrQCpQDa3GcxQBhZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZ2goFNbPSQCyQCwQCqQCqQCoQCz3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC9isPreciseb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy10freeNoSyncMFNbNiPvZbS_DQEmQEkQEeQEeQEcQEn8freeTimelS_DQFrQFpQFjQFjQFhQFs8numFreeslTQCpZQEtMFNbNiKQDdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11checkNoSyncMFNbPvZvS_DQElQEjQEdQEdQEbQEm9otherTimelS_DQFrQFpQFjQFjQFhQFs9numOtherslTQCrZQEuMFNbKQDdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11fullCollectMFNbZ2goFNbPSQEnQElQEfQEfQEdQEo3GcxZmTQBbZQDlMFNbKQBnZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11queryNoSyncMFNbPvZSQEi6memory8BlkInfo_S_DQFeQFcQEwQEwQEuQFf9otherTimelS_DQGkQGiQGcQGcQGaQGl9numOtherslTQDkZQFnMFNbKQDwZQDx@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12addrOfNoSyncMFNbNiPvZQdS_DQEpQEnQEhQEhQEfQEq9otherTimelS_DQFvQFtQFnQFnQFlQFw9numOtherslTQCsZQEyMFNbNiKQDgZQDk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12extendNoSyncMFNbPvmmxC8TypeInfoZmS_DQEzQExQErQErQEpQFa10extendTimelS_DQGhQGfQFzQFzQFxQGi10numExtendslTQDiTmTmTxQDmZQFvMFNbKQEdKmKmKxQEhZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTmTkTmTxQDlZQFuMFNbKmKkKmKxQEeZQDx@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTymTkTmTxQDmZQFvMFNbKymKkKmKxQEgZQDz@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12sizeOfNoSyncMFNbNiPvZmS_DQEoQEmQEgQEgQEeQEp9otherTimelS_DQFuQFsQFmQFmQFkQFv9numOtherslTQCrZQExMFNbNiKQDfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQtS_DQFeQFcQEwQEwQEuQFf10mallocTimelS_DQGmQGkQGeQGeQGcQGn10numMallocslTQDmTmTkTmTxQDpZQGcMFNbKQEjKmKkKmKxQEmZQEy@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reserveNoSyncMFNbmZmS_DQEmQEkQEeQEeQEcQEn9otherTimelS_DQFsQFqQFkQFkQFiQFt9numOtherslTmZQEtMFNbKmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13runFinalizersMFNbMxAvZ2goFNbPSQEtQErQElQElQEjQEu3GcxMxQBjZvS_DQFzQFxQFrQFrQFpQGa9otherTimelS_DQHfQHdQGxQGxQGvQHg9numOtherslTQDsTxQEgZQGnMFNbKQEjKxQExZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy14getStatsNoSyncMFNbNiNeJSQEn6memory2GC5StatsZvS_DQFlQFjQFdQFdQFbQFm9otherTimelS_DQGrQGpQGjQGjQGhQGs9numOtherslTQDjZQFuMFNbNiNfKQDzZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy6enableMFZ2goFNaNbNiNfPSQElQEjQEdQEdQEbQEm3GcxZvS_DQFmQFkQFeQFeQFcQFn9otherTimelS_DQGsQGqQGkQGkQGiQGt9numOtherslTQDnZQFvMFNbNiNfKQEdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7clrAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7disableMFZ2goFNaNbNiNfPSQEmQEkQEeQEeQEcQEn3GcxZvS_DQFnQFlQFfQFfQFdQFo9otherTimelS_DQGtQGrQGlQGlQGjQGu9numOtherslTQDnZQFwMFNbNiNfKQEdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7getAttrMFNbPvZ2goFNbPSQEkQEiQEcQEcQEaQEl3GcxQBhZkS_DQFoQFmQFgQFgQFeQFp9otherTimelS_DQGuQGsQGmQGmQGkQGv9numOtherslTQDqTQEdZQGbMFNbKQEgKQEtZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7setAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy8minimizeMFNbZ2goFNbPSQEjQEhQEbQEbQDzQEk3GcxZvS_DQFkQFiQFcQFcQFaQFl9otherTimelS_DQGqQGoQGiQGiQGgQGr9numOtherslTQDnZQFtMFNbKQDzZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14SENTINEL_EXTRAxk@Base 15 + _D4core8internal2gc4impl12conservativeQw14baseOffsetBitsyG14G4m@Base 15 + _D4core8internal2gc4impl12conservativeQw14bytesAllocatedm@Base 15 + _D4core8internal2gc4impl12conservativeQw14numCollectionsm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool10allocPagesMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool18setFreePageOffsetsMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getSizeMxFNbNimZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool8getPagesMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool9freePagesMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi0Vbi1ZQBfMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi1Vbi1ZQBfMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getSizeMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool9allocPageMFNbEQCsQCqQCkQCkQCiQCt4BinsZPSQDsQDqQDkQDkQDiQDt4List@Base 15 + _D4core8internal2gc4impl12conservativeQw15gc_precise_ctorFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw17maxCollectionTimeSQCg4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw18initialize_preciseFZCQCjQBy11gcinterface2GC@Base 15 + _D4core8internal2gc4impl12conservativeQw18sentinel_InvariantFNbNixPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw20gc_conservative_ctorFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZ23atforkHandlersInstalledb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10rootsApplyMFNbMDFNbKSQCnQCc11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10smallAllocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11__xopEqualsMxFKxSQCjQChQCbQCbQBzQCkQBpZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11collectForkMFNbbZEQCkQCiQCc2os11ChildStatus@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11disableForkMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11fullcollectMFNbbbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11rangesApplyMFNbMDFNbKSQCoQCd11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11recoverPageMFNbPSQCjQChQCbQCbQBzQCk15SmallObjectPoolmEQDuQDsQDmQDmQDkQDv4BinsZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx12collectRootsMFNbNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx12markParallelMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx14scanBackgroundMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15collectAllRootsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15fork_needs_lockb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15recoverNextPageMFNbEQCmQCkQCeQCeQCcQCn4BinsZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15stopScanThreadsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx16startScanThreadsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17clearBlkCacheDataMFNbNlPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17collectInProgressMxFNbNdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17pullFromScanStackMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx18maxParallelThreadsMFNbZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx18setNextRecoverPoolMFNbEQCpQCnQChQChQCfQCq4BinsmZPSQDqQDoQDiQDiQDgQDr15SmallObjectPool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx19_d_gcx_atfork_childUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx20_d_gcx_atfork_parentUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx21_d_gcx_atfork_prepareUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ11smoothDecayFNaNbNiNfffZf@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ3maxFNaNbNiNfffZf@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx4DtorMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx5allocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx5sweepMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx6lowMemMxFNbNdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7getInfoMFNbPvZSQCg6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7newPoolMFNbmbZPSQChQCfQBzQBzQBxQCi4Pool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7prepareMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8addRangeMFNbNiPvQcxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8bigAllocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8binTableyG2049EQCgQCeQByQByQBwQCh4Bins@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8ctfeBinsFNbZG2049EQCjQChQCbQCbQBzQCk4Bins@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findBaseMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findPoolMFNaNbNiPvZPSQCmQCkQCeQCeQCcQCn4Pool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findSizeMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8instancePSQCbQBzQBtQBtQBrQCcQBh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8isMarkedMFNbNlPvZEQCjQChQCb8blkcache8IsMarked@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZ13wrap_delegateUPvZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZEQChQCfQBz2os11ChildStatus@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9InvariantMxFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9__xtoHashFNbNeKxSQCiQCgQCaQCaQByQCjQBoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9allocPageMFNbEQCfQCdQBxQBxQBvQCg4BinsZPSQDfQDdQCxQCxQCvQDg4List@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr3popMFNaNbNiZQs@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4pushMFNbNiQqZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr7opIndexMNgFNaNbNcNimZNgPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr8opAssignMFNaNbNcNiNjNeSQDkQDiQDcQDcQDaQDlQCq__TQCpTQCfZQCxZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr9popLockedMFNbNiKQwZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf3popMFNaNbNiZQCh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4pushMFNbNiQCfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi0ZQDa@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf3popMFNaNbNiZQCh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4pushMFNbNiQCfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi1ZQDa@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi0ZQsMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi1ZQsMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi0ZQxMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi1ZQxMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi0ZQBcMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi1ZQBcMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi0ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi1ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi0ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi1ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3setFNaNbNiKG4mmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool10initializeMFNbmbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool12freePageBitsMFNbmMKxG4mZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool15freeAllPageBitsMFNbmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool16setPointerBitmapMFNbPvmmxC8TypeInfokZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool21setPointerBitmapSmallMFNbPvmmkxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool4DtorMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool6isFreeMxFNaNbNdNiNlNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7clrBitsMFNbNimkZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7getBitsMFNbmZk@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7setBitsMFNbmkZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool8findBaseMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool8numPagesFNbNimZm@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9InvariantMxFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9pagenumOfMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9slGetInfoMFNbPvZSQCj6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9slGetSizeMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw7binbaseyG15G256s@Base 15 + _D4core8internal2gc4impl12conservativeQw7binsizeyG15s@Base 15 + _D4core8internal2gc4impl12conservativeQw8freeTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw8lockTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw8markTimeSQBw4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw8numFreesl@Base 15 + _D4core8internal2gc4impl12conservativeQw8prepTimeSQBw4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw9numOthersl@Base 15 + _D4core8internal2gc4impl12conservativeQw9otherTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw9pauseTimeSQBx4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw9sweepTimeSQBx4time8Duration@Base 15 + _D4core8internal2gc4impl5protoQo11__moduleRefZ@Base 15 + _D4core8internal2gc4impl5protoQo12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC10rootsApplyMFMDFNbKSQChQBw11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11__fieldDtorMFNbNiNlZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11rangesApplyMFMDFNbKSQCiQBx11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC22transferRangesAndRootsMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC4DtorMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__ctorMFZCQBxQBvQBpQBpQBnQByQBl@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__initZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__vtblZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7__ClassZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl6manualQp10initializeFZCQBuQBj11gcinterface2GC@Base 15 + _D4core8internal2gc4impl6manualQp11__moduleRefZ@Base 15 + _D4core8internal2gc4impl6manualQp12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl6manualQp14gc_manual_ctorFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10__aggrDtorMFNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10rootsApplyMFMDFNbKSQCjQBy11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11__fieldDtorMFNbNiNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11rangesApplyMFMDFNbKSQCkQBz11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__ctorMFZCQBzQBxQBrQBrQBpQCaQBm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__dtorMFNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__initZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__vtblZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7__ClassZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc5proxy11__moduleRefZ@Base 15 + _D4core8internal2gc5proxy12__ModuleInfoZ@Base 15 + _D4core8internal2gc5proxy12instanceLockOSQBnQBl8spinlock8SpinLock@Base 15 + _D4core8internal2gc5proxy14isInstanceInitb@Base 15 + _D4core8internal2gc5proxy8instanceFNbNiNeZCQBpQBe11gcinterface2GC@Base 15 + _D4core8internal2gc5proxy9_instanceCQBiQx11gcinterface2GC@Base 15 + _D4core8internal2gc5proxy9proxiedGCCQBiQx11gcinterface2GC@Base 15 + _D4core8internal2gc8blkcache10__blkcacheFNbNdNiZPSQBw6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache11__moduleRefZ@Base 15 + _D4core8internal2gc8blkcache12__ModuleInfoZ@Base 15 + _D4core8internal2gc8blkcache12__getBlkInfoFNbNiPvZPSQBy6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache12__nextBlkIdxi@Base 15 + _D4core8internal2gc8blkcache14processGCMarksFNbPvMDFNbQhZEQCeQCcQBwQBw8IsMarkedZv@Base 15 + _D4core8internal2gc8blkcache18__blkcache_storagePSQBw6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache19_staticDtor_L66_C13FZv@Base 15.2 + _D4core8internal2gc8blkcache20__insertBlkInfoCacheFNbNiSQCc6memory8BlkInfo_PQvZv@Base 15 + _D4core8internal2gc9blockmeta10__allocPadFNaNbNemkZm@Base 15 + _D4core8internal2gc9blockmeta10__arrayPadFNaNbNemxC8TypeInfoZm@Base 15 + _D4core8internal2gc9blockmeta11__moduleRefZ@Base 15 + _D4core8internal2gc9blockmeta12__ModuleInfoZ@Base 15 + _D4core8internal2gc9blockmeta13__trimExtentsFNaNbNiMKPvKmkZv@Base 15.2 + _D4core8internal2gc9blockmeta18__arrayAllocLengthFNaNbKSQCc6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta18structTypeInfoSizeFNaNbNixC8TypeInfoZm@Base 15 + _D4core8internal2gc9blockmeta20__arrayAllocCapacityFNaNbKSQCe6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta21__setArrayAllocLengthFNaNbKSQCf6memory8BlkInfo_mbxC8TypeInfomZb@Base 15 + _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_ZxC8TypeInfo@Base 15 + _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbPvmkZxC8TypeInfo@Base 15.2 + _D4core8internal2gc9blockmeta23__setBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_xC8TypeInfoZv@Base 15 + _D4core8internal2gc9blockmeta24__arrayAllocLengthAtomicFNaNbKSQCi6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta25__setArrayAllocLengthImplFNaNbKSQCj6memory8BlkInfo_mbmmZb@Base 15 + _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMPvmZQe@Base 15.2 + _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMSQCg6memory8BlkInfo_ZPv@Base 15 + _D4core8internal2gc9pooltable11__moduleRefZ@Base 15 + _D4core8internal2gc9pooltable12__ModuleInfoZ@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx4DtorMFNbNiZv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6insertMFNbNiPQCdZb@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6lengthMxFNaNbNdNiNlNfZm@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7maxAddrMxFNaNbNdNiNfZPxv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7minAddrMxFNaNbNdNiNfZPxv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opIndexMNgFNaNbNcNiNjNemZNgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNeZANgPSQEgQEeQDyQCqQCoQEhQCd@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNemmZANgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8findPoolMFNaNbNiPvZPQCk@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZ4swapFNaNbNiNfKPQCxKQfZv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZAPQCj@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx9InvariantMxFNaNbNiZv@Base 15 + _D4core8internal3utf10UTF8strideyAi@Base 15 + _D4core8internal3utf10toUCSindexFNaNbNiNfMxAwmZm@Base 15 + _D4core8internal3utf10toUCSindexFNaNfMxAamZm@Base 15 + _D4core8internal3utf10toUCSindexFNaNfMxAumZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNbNiNfMxAumZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNbNiNfMxAwmZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNfMxAamZm@Base 15 + _D4core8internal3utf11__moduleRefZ@Base 15 + _D4core8internal3utf12__ModuleInfoZ@Base 15 + _D4core8internal3utf12isValidDcharFNaNbNiNfwZb@Base 15 + _D4core8internal3utf6decodeFNaNfMxAaKmZw@Base 15 + _D4core8internal3utf6decodeFNaNfMxAuKmZw@Base 15 + _D4core8internal3utf6decodeFNaNfMxAwKmZw@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAawZv@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAuwZv@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAwwZv@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAamZk@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAumZk@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAwmZk@Base 15 + _D4core8internal3utf6toUTF8FNaNbNfNkMAyaZQe@Base 15 + _D4core8internal3utf6toUTF8FNaNbNiNfNkMAawZQe@Base 15 + _D4core8internal3utf6toUTF8FNaNeMxAuZAya@Base 15 + _D4core8internal3utf6toUTF8FNaNeMxAwZAya@Base 15 + _D4core8internal3utf7toUTF16FNaNbNeMxAwZAyu@Base 15 + _D4core8internal3utf7toUTF16FNaNbNfNkMAyuZQe@Base 15 + _D4core8internal3utf7toUTF16FNaNbNiNfNkMAuwZQe@Base 15 + _D4core8internal3utf7toUTF16FNaNeMxAaZAyu@Base 15 + _D4core8internal3utf7toUTF32FNaNbNfNkMAywZQe@Base 15 + _D4core8internal3utf7toUTF32FNaNeMxAaZAyw@Base 15 + _D4core8internal3utf7toUTF32FNaNeMxAuZAyw@Base 15 + _D4core8internal3utf8toUTF16zFNaNfMxAaZPxu@Base 15 + _D4core8internal3utf__T13isValidStringTAyaZQuFNaNbNfMxAyaZb@Base 15 + _D4core8internal3utf__T13isValidStringTAyuZQuFNaNbNfMxAyuZb@Base 15 + _D4core8internal3utf__T13isValidStringTAywZQuFNaNbNfMxAywZb@Base 15 + _D4core8internal4hash11__moduleRefZ@Base 15 + _D4core8internal4hash12__ModuleInfoZ@Base 15 + _D4core8internal4hash__T13coalesceFloatTdZQsFNaNbNiNfxdZd@Base 15 + _D4core8internal4hash__T13coalesceFloatTeZQsFNaNbNiNfxeZe@Base 15 + _D4core8internal4hash__T13coalesceFloatTfZQsFNaNbNiNfxfZf@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility16__c_complex_realZQBuFNaNbNiNfQBymZm@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility17__c_complex_floatZQBvFNaNbNiNfQBzmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility18__c_complex_doubleZQBwFNaNbNiNfQCamZm@Base 15 + _D4core8internal4hash__T6hashOfTAxPvZQnFNaNbNiNfMxAQrmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxPyS6object10ModuleInfoZQBhFNaNbNiNfMxAQBmmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxaZQmFNaNbNiNfMxAamZm@Base 15 + _D4core8internal4hash__T6hashOfTAxdZQmFNaNbNiNfMxAdmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxeZQmFNaNbNiNfMxAemZm@Base 15 + _D4core8internal4hash__T6hashOfTAxfZQmFNaNbNiNfMxAfmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxhZQmFNaNbNiNfMxAhmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxkZQmFNaNbNiNfMxAkmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxmZQmFNaNbNiNfMxAmmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxtZQmFNaNbNiNfMxAtmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxvZQmFNaNbNiNfMxAvmZm@Base 15 + _D4core8internal4hash__T6hashOfTAyaZQmFNaNbNiNfMxAyamZm@Base 15 + _D4core8internal4hash__T6hashOfTDFZvZQnFNaNbNiNeMxDQsmZm@Base 15 + _D4core8internal4hash__T6hashOfTPvZQlFNaNbNiNeMxPvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTdZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTeZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTfZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdZm@Base 15 + _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdmZm@Base 15 + _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxeZm@Base 15 + _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxemZm@Base 15 + _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfZm@Base 15 + _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfmZm@Base 15 + _D4core8internal4hash__T6hashOfThZQkFNaNbNiNeMxhZm@Base 15 + _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkZm@Base 15 + _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkmZm@Base 15 + _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmZm@Base 15 + _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmmZm@Base 15 + _D4core8internal4hash__T6hashOfTtZQkFNaNbNiNeMxtZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility16__c_complex_realZQBtFNaNbNiNfKxQBymZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility17__c_complex_floatZQBuFNaNbNiNfKxQBzmZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility18__c_complex_doubleZQBvFNaNbNiNfKxQCamZm@Base 15 + _D4core8internal4hash__T9bytesHashVbi0ZQpFNaNbNiNeMAxhmZm@Base 15 + _D4core8internal4hash__T9bytesHashVbi1ZQpFNaNbNiNeMAxhmZm@Base 15 + _D4core8internal4hash__T9get32bitsZQlFNaNbNiMPxhZk@Base 15 + _D4core8internal4util4math11__moduleRefZ@Base 15 + _D4core8internal4util4math12__ModuleInfoZ@Base 15 + _D4core8internal4util4math__T3minTkZQhFNaNbNiNfkkZk@Base 15 + _D4core8internal4util5array10arrayToPtrFNbNexAvZm@Base 15 + _D4core8internal4util5array11__moduleRefZ@Base 15 + _D4core8internal4util5array12__ModuleInfoZ@Base 15 + _D4core8internal4util5array17_enforceNoOverlapFNbNfxAammxmZv@Base 15 + _D4core8internal4util5array18_enforceSameLengthFNbNfxAaxmxmZv@Base 15 + _D4core8internal4util5array21_enforceNoOverlapNogcFNbNfKxAammxmZv@Base 15 + _D4core8internal4util5array22_enforceSameLengthNogcFNbNfKxAaxmxmZv@Base 15 + _D4core8internal4util5array27enforceRawArraysConformableFNbNfxAaxmxAvxQdxbZv@Base 15 + _D4core8internal4util5array31enforceRawArraysConformableNogcFNbNfxAaxmxAvxQdxbZv@Base 15 + _D4core8internal4util5array6_storeG256a@Base 15 + _D4core8internal4util5array__T12errorMessageTxmTxmZQvFNbNiNeMxPaxAaxmxmZAa@Base 15 + _D4core8internal5abort11__moduleRefZ@Base 15 + _D4core8internal5abort12__ModuleInfoZ@Base 15 + _D4core8internal5abortQgFNbNiNfMAyaMQemZ8writeStrFNbNiNeAAxaXv@Base 15 + _D4core8internal5abortQgFNbNiNfMAyaMQemZv@Base 15 + _D4core8internal5array10comparison11__moduleRefZ@Base 15 + _D4core8internal5array10comparison12__ModuleInfoZ@Base 15 + _D4core8internal5array10comparison__T5__cmpTaZQjFNaNbNiNeMxAaMxQeZi@Base 15 + _D4core8internal5array10operations10isBinaryOpFNaNbNiNfMAyaZb@Base 15 + _D4core8internal5array10operations11__moduleRefZ@Base 15 + _D4core8internal5array10operations12__ModuleInfoZ@Base 15 + _D4core8internal5array10operations16isBinaryAssignOpFAyaZb@Base 15 + _D4core8internal5array10operations8toStringFmZAya@Base 15 + _D4core8internal5array10operations9isUnaryOpFNaNbNiNfMAyaZb@Base 15 + _D4core8internal5array11arrayassign11__moduleRefZ@Base 15 + _D4core8internal5array11arrayassign12__ModuleInfoZ@Base 15 + _D4core8internal5array11arrayassign27enforceRawArraysConformableFNaNbNiNexAaxmxAvxQdxbZv@Base 15 + _D4core8internal5array11duplication11__moduleRefZ@Base 15 + _D4core8internal5array11duplication12__ModuleInfoZ@Base 15 + _D4core8internal5array11duplication__T4_dupTaTyaZQlFNaNbNeMAaZAya@Base 15 + _D4core8internal5array11duplication__T4_dupTxAyaTAyaZQpFNaNbNeMAxQuZAQu@Base 15 + _D4core8internal5array11duplication__T4_dupTxaTaZQlFNaNbNeMAxaZAa@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTaTyaZQpFNaNbNfMAaZAya@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxAyaTAyaZQtFNaNbNfMAxQuZAQu@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxaTaZQpFNaNbNfMAxaZAa@Base 15 + _D4core8internal5array12construction11__moduleRefZ@Base 15 + _D4core8internal5array12construction12__ModuleInfoZ@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTbZQrFNaNbNembZAb@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTThZQrFNaNbNembZAh@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTAyaZQtFNaNbNembZAQr@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTaZQrFNaNbNembZAa@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTbZQrFNaNbNembZAb@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUThZQrFNaNbNembZAh@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTyaZQsFNaNbNembZAya@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTAyaZQBeFNaNbNembZAQs@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTaZQBcFNaNbNembZAa@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyaZQBdFNaNbNembZAya@Base 15 + _D4core8internal5array13concatenation11__moduleRefZ@Base 15 + _D4core8internal5array13concatenation12__ModuleInfoZ@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeTQkZQBeFNaNbNeQuQwQBbZQBf@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrKQuZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrQtZQz@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeQBaQBdQBgQBjZQBn@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxKQBaQBdZQBh@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxQzQBbZQBf@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeKQvQxZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuKQxZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuQwZQz@Base 15 + _D4core8internal5array5utils11__moduleRefZ@Base 15 + _D4core8internal5array5utils11gcStatsPureFNaNbZSQBu6memory2GC5Stats@Base 15 + _D4core8internal5array5utils12__ModuleInfoZ@Base 15 + _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZ12impureBypassFNbNiQBdiQBhQBkmZm@Base 15 + _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZm@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTAyaZQtFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTaZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTbZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocThZQrFNaNbNemZAv@Base 15 + _D4core8internal5array7casting11__moduleRefZ@Base 15 + _D4core8internal5array7casting12__ModuleInfoZ@Base 15 + _D4core8internal5array8capacity11__moduleRefZ@Base 15 + _D4core8internal5array8capacity12__ModuleInfoZ@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTACQCi6thread10threadbase10ThreadBaseTQBkZ18_d_arraysetlengthTFNaNbNeNkMKQCumZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAaTaZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAwTwZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAyaTyaZ18_d_arraysetlengthTFNaNbNeNkMKQBmmZm@Base 15 + _D4core8internal5array8equality11__moduleRefZ@Base 15 + _D4core8internal5array8equality12__ModuleInfoZ@Base 15 + _D4core8internal5array8equality__T7isEqualTPxvTQeZQqFNaNbNiMxPPvMxQfmZb@Base 15 + _D4core8internal5array8equality__T7isEqualTPyS6object10ModuleInfoTQxZQBjFNaNbNiMxPPyQBnMxQimZb@Base 15 + _D4core8internal5array8equality__T7isEqualTaTaZQnFNaNbNiMxPaMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTdTdZQnFNaNbNiMxPdMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTeTeZQnFNaNbNiMxPeMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTfTfZQnFNaNbNiMxPfMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualThThZQnFNaNbNiMxPhMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTkTkZQnFNaNbNiMxPkMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTmTmZQnFNaNbNiMxPmMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTtTtZQnFNaNbNiMxPtMxQemZb@Base 15 + _D4core8internal5array8equality__T8__equalsTPxvTQeZQrFNaNbNiNeMxAPvMxQfZb@Base 15 + _D4core8internal5array8equality__T8__equalsTPyS6object10ModuleInfoTQxZQBkFNaNbNiNeMxAPyQBpMxQiZb@Base 15 + _D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTdTdZQoFNaNbNiNeMxAdMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTeTeZQoFNaNbNiNeMxAeMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTfTfZQoFNaNbNiNeMxAfMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsThThZQoFNaNbNiNeMxAhMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTkTkZQoFNaNbNiNeMxAkMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTmTmZQoFNaNbNiNeMxAmMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTtTtZQoFNaNbNiNeMxAtMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxAyaTxQfZQtFNaNbNiNfMAxQwMQfZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxDFNbC6ObjectZvTxQqZQBeFNaNbNiNfMAxQBiMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility16__c_complex_realTxQBlZQCaFNaNbNiNfMAxQCeMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility17__c_complex_floatTxQBmZQCbFNaNbNiNfMAxQCfMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility18__c_complex_doubleTxQBnZQCcFNaNbNiNfMAxQCgMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS2rt3aaA6BucketTxQrZQBfFNaNbNiNfMAxQBjMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxSQBs8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTxQCvZQDkFNaNbNiNfMAxQDoMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxSQBsQBq5newaa6BucketTxQwZQBkFNaNbNiNfMAxQBoMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxvTxvZQqFNaNbNiNfMAxvMQeZb@Base 15 + _D4core8internal5array9appending11__moduleRefZ@Base 15 + _D4core8internal5array9appending12__ModuleInfoZ@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAOaTOaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAOuTOuZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAaTaZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAuTuZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAyaTyaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAAyaTQeZQBdFNaNbNcNeMNkKQymZQBc@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOaTOaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOuTOuZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTASQCe8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTQCuZQDuFNaNbNcNeMNkKQDpmZQDu@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAaTaZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAuTuZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAwTwZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyaTyaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5newaa11__moduleRefZ@Base 15 + _D4core8internal5newaa12__ModuleInfoZ@Base 15 + _D4core8internal5newaa3mixFNaNbNiNfmZm@Base 15 + _D4core8internal5newaa4Impl11__xopEqualsMxFKxSQBsQBqQBkQBhZb@Base 15 + _D4core8internal5newaa4Impl6__initZ@Base 15 + _D4core8internal5newaa4Impl9__xtoHashFNbNeKxSQBrQBpQBjQBgZm@Base 15 + _D4core8internal5newaa6Bucket6__initZ@Base 15 + _D4core8internal5newaa7AAShell6__initZ@Base 15 + _D4core8internal5qsort11__moduleRefZ@Base 15 + _D4core8internal5qsort12__ModuleInfoZ@Base 15 + _D4core8internal5qsort7_adSortUNkMAvC8TypeInfoZ3cmpUMxPvMxQeMPvZi@Base 15 + _D4core8internal6atomic11__moduleRefZ@Base 15 + _D4core8internal6atomic12__ModuleInfoZ@Base 15 + _D4core8internal6atomic12simpleFormatFAyaMAQfZQi@Base 15 + _D4core8internal6atomic5pauseFNaNbNiNeZv@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TmZQBmFNaNbNiNePNgmZNgm@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNePNgPONgSQBpQBpQBjZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOC6ObjectZQBuFNaNbNiNePONgCQzZONgQh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOCQCk4sync5mutex5MutexZQChFNaNbNiNePONgCQDwQBmQBkQBhZONgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPOSQCl4stdc5stdio8_IO_FILEZQClFNaNbNiNePNgPONgSQEdQBsQBqQBnZNgQu@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNePNgPQBkZNgQh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TbZQBmFNaNbNiNePNgbZNgb@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5ThZQBmFNaNbNiNePNghZNgh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TiZQBmFNaNbNiNePNgiZNgi@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TkZQBmFNaNbNiNePNgkZNgk@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TmZQBmFNaNbNiNePNgmZNgm@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TtZQBmFNaNbNiNePNgtZNgt@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TbZQBnFNaNbNiNePbbZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TmZQBnFNaNbNiNePmmZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorZQCjFNaNbNiNePQBlQBoZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONZQCwFNaNbNiNePQByQCbZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TmZQBnFNaNbNiNePmmZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCgFNaNbNiNePQBiQBlZv@Base 15 + _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 + _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 + _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 + _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0ThZQCkFNaNbNiNePhQchZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TmZQCkFNaNbNiNePmQcmZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TtZQCkFNaNbNiNePtQctZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5ThZQCqFNaNbNiNePhxhhZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TmZQCqFNaNbNiNePmxmmZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TtZQCqFNaNbNiNePtxttZb@Base 15 + _D4core8internal6moving11__moduleRefZ@Base 15 + _D4core8internal6moving12__ModuleInfoZ@Base 15 + _D4core8internal6string11__moduleRefZ@Base 15 + _D4core8internal6string12__ModuleInfoZ@Base 15 + _D4core8internal6string__T17TempStringNoAllocVhi20ZQz3getMNgFNaNbNiNjNfZANga@Base 15 + _D4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 + _D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflZSQCnQClQCf__T17TempStringNoAllocVhi20ZQz@Base 15 + _D4core8internal6string__T20unsignedToTempStringVii10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVii16Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVki10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmZSQCpQCnQCh__T17TempStringNoAllocVhi20ZQz@Base 15 + _D4core8internal6string__T7dstrcmpZQjFNaNbNiNeMxAaMxQeZi@Base 15 + _D4core8internal6string__T9numDigitsVki10ZQqFNaNbNiNfmZi@Base 15 + _D4core8internal6traits11__moduleRefZ@Base 15 + _D4core8internal6traits12__ModuleInfoZ@Base 15 + _D4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D4core8internal6traits7hasDtorFAAyaZb@Base 15 + _D4core8internal7convert10ctfe_allocFNaNbNiNemZAh@Base 15 + _D4core8internal7convert11__moduleRefZ@Base 15 + _D4core8internal7convert11shiftrRoundFNaNbNiNfmZm@Base 15 + _D4core8internal7convert12__ModuleInfoZ@Base 15 + _D4core8internal7convert5Float6__initZ@Base 15 + _D4core8internal7convert7binPow2FNaNbNiNfiZ10binPosPow2FNaNbNiNfiZe@Base 15 + _D4core8internal7convert7binPow2FNaNbNiNfiZe@Base 15 + _D4core8internal7convert__T20denormalizedMantissaTeZQzFNaNbNiNfekZSQCnQClQCf5Float@Base 15 + _D4core8internal7convert__T5parseVbi0HTeZQoFNaNbNiNfeZSQCbQBzQBt5Float@Base 15 + _D4core8internal7convert__T5parseVbi0HTxeZQpFNaNbNiNfxeZSQCdQCbQBv5Float@Base 15 + _D4core8internal7convert__T7binLog2TeZQlFNaNbNiNfxeZk@Base 15 + _D4core8internal7convert__T7toUbyteTPxvZQnFNaNbNiNeNkMxAPvZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTPyS6object10ModuleInfoZQBgFNaNbNiNeNkMxAPyQBoZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTaZQlFNaNbNiNeNkMxAaZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTeZQlFNaNbNiNeMKxeZAxh@Base 15 + _D4core8internal7convert__T7toUbyteThZQlFNaNbNiNeNkMxAhZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeMKxkZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeNkMxAkZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeMKxmZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeNkMxAmZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeMKxtZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeNkMxAtZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTvZQlFNaNbNiNeNkMxAvZAxh@Base 15 + _D4core8internal7dassert11__moduleRefZ@Base 15 + _D4core8internal7dassert12__ModuleInfoZ@Base 15 + _D4core8internal7dassert15invertCompTokenFNaNbNiNfMAyaZQe@Base 15 + _D4core8internal7dassert16calcFieldOverlapFMxAmZAb@Base 15 + _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZ11formatTupleFNaNbNiNfMAaKmIQBpIbZv@Base 15 + _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZAya@Base 15 + _D4core8internal7dassert9pureAllocFNaNbNiNfmZAh@Base 15 + _D4core8internal7dassert9pureAllocFmZ5allocFNaNbNfmZAh@Base 15 + _D4core8internal7dassert__T20assumeFakeAttributesTPFNaNbNfmZAhZQBkFNaNbNiNeQzZPFNaNbNiNfmZQBe@Base 15 + _D4core8internal7switch_11__moduleRefZ@Base 15 + _D4core8internal7switch_12__ModuleInfoZ@Base 15 + _D4core8internal7switch___T14__switchSearchTyaZQuFNaNbNiNfMxAAyaMxQfZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274VxQza5_7072696e74VxQBqa6_69676e6f7265VxQCka9_646570726563617465ZQDxFNaNbNiNfMxQDxZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274ZQBmFNaNbNiNfMxQBmZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia7_70726563697365VxQBda12_636f6e736572766174697665ZQCxFNaNbNiNfMxQCxZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eVxQBfa9_746573742d6f6e6c79VxQCfa12_746573742d6f722d6d61696eZQDzFNaNbNiNfMxQDzZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eZQBsFNaNbNiNfMxQBsZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_ZQvFNaNbNiNfMxQuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa12_636f6e736572766174697665ZQBuFNaNbNiNfMxQBuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa12_746573742d6f722d6d61696eZQBuFNaNbNiNfMxQBuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZ5casesyG10Aa@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZ5casesyG11Aa@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65VxQqa7_636f6c6c656374VxQBla8_66696e616c697a65ZQCwFNaNbNiNfMxQCwZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65ZQBdFNaNbNiNfMxQBdZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265VxQua9_646570726563617465ZQCgFNaNbNiNfMxQCgZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265ZQBhFNaNbNiNfMxQBhZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa8_66696e616c697a65ZQBlFNaNbNiNfMxQBlZi@Base 15 + _D4core8internal7switch___T8__switchTyaZQnFNaNbNiNfMxAyaZi@Base 15 + _D4core8internal8lifetime11__moduleRefZ@Base 15 + _D4core8internal8lifetime12__ModuleInfoZ@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS2rt3aaA4ImplZQBjFNaNbNiNeMKQBcZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS2rt9critical_18D_CRITICAL_SECTIONZQCeFNaNbNiNeMKQBxZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3gcc8sections3elf9ThreadDSOZQByFNaNbNiNeMKQBrZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface4RootZQBvFNaNbNiNeMKQBoZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface5RangeZQBwFNaNbNiNeMKQBpZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw6thread7context12StackContextZQCdFNaNbNiNeMKQBwZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNeMKQDjZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 + _D4core8internal8postblit11__moduleRefZ@Base 15 + _D4core8internal8postblit12__ModuleInfoZ@Base 15 + _D4core8internal8spinlock11__moduleRefZ@Base 15 + _D4core8internal8spinlock12__ModuleInfoZ@Base 15 + _D4core8internal8spinlock15AlignedSpinLock6__ctorMOFNbNcNiNeEQChQCfQBz8SpinLock10ContentionZOSQDoQDmQDgQDa@Base 15 + _D4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D4core8internal8spinlock8SpinLock4lockMOFNbNiNeZv@Base 15 + _D4core8internal8spinlock8SpinLock5yieldMOFNbNiNemZv@Base 15 + _D4core8internal8spinlock8SpinLock6__ctorMOFNbNcNiNeEQBzQBxQBrQBl10ContentionZOSQDaQCyQCsQCm@Base 15 + _D4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D4core8internal8spinlock8SpinLock6unlockMOFNbNiNeZv@Base 15 + _D4core8internal9container5array11__moduleRefZ@Base 15 + _D4core8internal9container5array12__ModuleInfoZ@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk4backMNgFNaNbNcNdNiZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk4swapMFNaNbNiNfKSQCkQCiQCcQBv__TQBsTQBpZQCaZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5frontMNgFNaNbNcNdNiNfZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opIndexMNgFNaNbNcNimZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNiZANgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNimmZANgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk8opAssignMFNbNcNiNjSQCnQClQCfQBy__TQBvTQBsZQCdZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk__T10insertBackZQnMFNbNiQBdZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4backMNgFNaNbNcNdNiZNgPSQBxQBwQBqQBp@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4swapMFNaNbNiNfKSQDgQDeQCyQCr__TQCoTQClZQCwZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5frontMNgFNaNbNcNdNiNfZNgPSQCaQBzQBtQBs@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opIndexMNgFNaNbNcNimZNgPSQBzQByQBsQBr@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNiZANgPSQBxQBwQBqQBp@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNimmZANgPSQBzQByQBsQBr@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf8opAssignMFNbNcNiNjSQDjQDhQDbQCu__TQCrTQCoZQCzZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf__T10insertBackZQnMFNbNiKQCaZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTQDfZQDwQCo@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4backMNgFNaNbNcNdNiZNgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4swapMFNaNbNiNfKSQExQEvQEpQEi__TQEfTQEcZQEnZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5frontMNgFNaNbNcNdNiNfZNgPSQFhQFfQEzQDr__TQDmTQDhTQDiZQDyQCo@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opIndexMNgFNaNbNcNimZNgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNiZANgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNimmZANgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw8opAssignMFNbNcNiNjSQFaQEyQEsQEl__TQEiTQEfZQEqZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTiZQDuQCm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4backMNgFNaNbNcNdNiZNgSQCcQCbQBvQBu@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4swapMFNaNbNiNfKSQDlQDjQDdQCw__TQCtTQCqZQDbZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5frontMNgFNaNbNcNdNiNfZNgSQCfQCeQByQBx@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opIndexMNgFNaNbNcNimZNgSQCeQCdQBxQBw@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNiZANgSQCcQCbQBvQBu@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNimmZANgSQCeQCdQBxQBw@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCwTQCtZQDeZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk__T10insertBackZQnMFNbNiQCeZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4backMNgFNaNbNcNdNiZNgSQDoQBzQBzQBp@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4swapMFNaNbNiNfKSQDiQDgQDaQCt__TQCqTQCnZQCyZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5frontMNgFNaNbNcNdNiNfZNgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opIndexMNgFNaNbNcNimZNgSQDqQCbQCbQBr@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNiZANgSQDoQBzQBzQBp@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNimmZANgSQDqQCbQCbQBr@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh__T10insertBackZQnMFNbNiQCbZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4backMNgFNaNbNcNdNiZNgSQDpQCaQCaQBq@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4swapMFNaNbNiNfKSQDjQDhQDbQCu__TQCrTQCoZQCzZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5frontMNgFNaNbNcNdNiNfZNgSQDsQCdQCdQBt@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opIndexMNgFNaNbNcNimZNgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNiZANgSQDpQCaQCaQBq@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNimmZANgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi__T10insertBackZQnMFNbNiQCcZv@Base 15 + _D4core8internal9container5treap11__moduleRefZ@Base 15 + _D4core8internal9container5treap12__ModuleInfoZ@Base 15 + _D4core8internal9container5treap4Rand5frontMFNaNbNdNiNfZk@Base 15 + _D4core8internal9container5treap4Rand6__initZ@Base 15 + _D4core8internal9container5treap4Rand6opCallMFNaNbNiNfZk@Base 15 + _D4core8internal9container5treap4Rand8popFrontMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh10initializeMFNaNbNiNfmZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh13opApplyHelperFNbxPSQDmQDkQDeQCx__TQCuTQCrZQDc4NodeMDFNbKxSQEzQDkQDkQDaZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZQBl@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiQBqZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeFNbNiPPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeMFNbNiQBqZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMFNbMDFNbKQBvZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMxFNbMDFNbKxSQDmQBxQBxQBnZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateLFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateRFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8freeNodeFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9allocNodeMFNbNiQBtZPSQDnQDlQDfQCy__TQCvTQCsZQDd4Node@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi10initializeMFNaNbNiNfmZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi13opApplyHelperFNbxPSQDnQDlQDfQCy__TQCvTQCsZQDd4NodeMDFNbKxSQFaQDlQDlQDbZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node11__xopEqualsMxFKxSQDqQDoQDiQDb__TQCyTQCvZQDgQByZb@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node9__xtoHashFNbNeKxSQDpQDnQDhQDa__TQCxTQCuZQDfQBxZm@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZQBl@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiQBrZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeFNbNiPPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNiQBrZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMFNbMDFNbKQBwZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMxFNbMDFNbKxSQDnQByQByQBoZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateLFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateRFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8freeNodeFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9allocNodeMFNbNiQBuZPSQDoQDmQDgQCz__TQCwTQCtZQDe4Node@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllFNbNiPSQDjQDhQDbQCu__TQCrTQCoZQCz4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllMFNbNiZv@Base 15 + _D4core8internal9container6common11__moduleRefZ@Base 15 + _D4core8internal9container6common12__ModuleInfoZ@Base 15 + _D4core8internal9container6common7xmallocFNbNimZPv@Base 15 + _D4core8internal9container6common8xreallocFNbNiPvmZQe@Base 15 + _D4core8internal9container6common__T10initializeTAvZQqFNaNbNiNfKQpZv@Base 15 + _D4core8internal9container6common__T10initializeTPS3gcc8sections3elf3DSOZQBlFNaNbNiNfKQBlZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDcFNaNbNiNfKQDcZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T10initializeTS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface4RootZQBnFNaNbNiNfKQBnZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface5RangeZQBoFNaNbNiNfKQBoZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDbFNaNbNiNfKQDbZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T7destroyTAvZQmFNaNbNiNfKQpZv@Base 15 + _D4core8internal9container6common__T7destroyTPS3gcc8sections3elf3DSOZQBhFNaNbNiNfKQBlZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCyFNaNbNiNfKQDcZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T7destroyTS3gcc8sections3elf9ThreadDSOZQBmFNaNbNiNfKQBqZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface4RootZQBjFNaNbNiNfKQBnZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface5RangeZQBkFNaNbNiNfKQBoZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCxFNaNbNiNfKQDbZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container7hashtab11__moduleRefZ@Base 15 + _D4core8internal9container7hashtab12__ModuleInfoZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi13opIndexAssignMFNbNiQBtQCaZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi3getMFNbNiQBmZPQBn@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node11__xopEqualsMxFKxSQDsQDqQDkQDd__TQCyTQCtTQCtZQDkQCcZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node9__xtoHashFNbNeKxSQDrQDpQDjQDc__TQCxTQCsTQCsZQDjQCbZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6hashOfFNaNbNiNeMKxAaZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6removeMFNbNiIAaZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opApplyMFMDFKQBqKQBqZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opIndexMNgFNaNbNcNiQBwZNgSQByQByQBr@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTQCpZQDgZQBg@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxAaZPNgSQCxQCxQCq@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk13opIndexAssignMFNbNiQBwQCcZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk3getMFNbNiQBoZPQBq@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6hashOfFNaNbNiNeMKxPvZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6removeMFNbNiIPvZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opApplyMFMDFKQBsKQBtZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opIndexMNgFNaNbNcNiQByZNgPSQCbQCaQBuQBt@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk8opAssignMFNbNcNiNjSQDqQDoQDiQDb__TQCwTQCrTQCsZQDiZQBg@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPvZPNgPSQDaQCzQCtQCs@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi13opIndexAssignMFNbNiiQByZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi3getMFNbNiQBmZPi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6hashOfFNaNbNiNeMKxPyQBvZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6removeMFNbNiIPyQBqZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opApplyMFMDFKQBqKiZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opIndexMNgFNaNbNcNiQBwZNgi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTiZQDeZQBe@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPyQCvZPNgi@Base 15 + _D4core8lifetime11__moduleRefZ@Base 15 + _D4core8lifetime12__ModuleInfoZ@Base 15 + _D4core8lifetime__T11_d_newitemTTS2rt3aaA4ImplZQBcFNaNbNeZPQBa@Base 15 + _D4core8lifetime__T11_d_newitemTTS2rt9critical_18D_CRITICAL_SECTIONZQBxFNaNbNeZPQBv@Base 15 + _D4core8lifetime__T11_d_newitemTTSQBg6thread7context12StackContextZQBwFNaNbNeZPQBu@Base 15 + _D4core8lifetime__T12_d_newclassTTC3gcc9backtrace12LibBacktraceZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTC6object5ErrorZQBeFNaNbNeZQBa@Base 15 + _D4core8lifetime__T12_d_newclassTTC9ExceptionZQBbFNaNbNeZQx@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync5mutex5MutexZQBlFNaNbNeZQBh@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6ReaderZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6WriterZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync9condition9ConditionZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync9exception9SyncErrorZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh6thread10threadbase15ThreadExceptionZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh6thread8osthread6ThreadZQBrFNaNbNeZQBn@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh9exception16UnicodeExceptionZQBwFNaNbNeZQBs@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync5mutex5MutexZQBmFNaNbNeZOQBi@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6ReaderZQCfFNaNbNeZOQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6WriterZQCfFNaNbNeZOQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync9condition9ConditionZQBuFNaNbNeZOQBq@Base 15 + _D4core8lifetime__T7emplaceTC3gcc9backtrace12LibBacktraceTiZQBpFNiQBmKiZQBs@Base 15 + _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiAvZQBh@Base 15 + _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiNfQBgZQBk@Base 15 + _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl12conservativeQw14ConservativeGCZQClFQCgZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl6manualQp8ManualGCZQBxFQBsZQBw@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception10RangeErrorTAyaTmTnZQBsFNaNbNiNfQBvKQyKmKQxZQCh@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTiZQBuFNaNbNiNfQBxKQzKQBcKiZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTmZQBuFNaNbNiNfQBxKQzKQBcKmZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTmZQBrFNaNbNiNfQBuKQwKmZQCd@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11SwitchErrorTAyaTQeTmTnZQBwFNaNbNiNfQBzKQBbKQBfKmKQBcZQCr@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCxFNaNbNiNfQDaKQCaKQBtKQBeKmZQDs@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception15ArrayIndexErrorTmTmTAyaTmTnZQCbFNaNbNiNfQCeKmKmKQBcKmKQBcZQCw@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception15ArraySliceErrorTmTmTmTAyaTmTnZQCdFNaNbNiNfQCgKmKmKmKQBeKmKQBeZQDa@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTAyaTmZQBwFNaNbNiNfQBzKQwKmZQCi@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTbTAyaTmZQByFNaNbNiNfQCbKbKQyKmZQCm@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception27InvalidMemoryOperationErrorTAyaTmZQChFNaNbNiNfQCkKQwKmZQCt@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception9ForkErrorTAyaTmTnZQBqFNaNbNiNfQBtKQyKmKQxZQCf@Base 15 + _D4core8volatile11__moduleRefZ@Base 15 + _D4core8volatile12__ModuleInfoZ@Base 15 + _D4core9attribute11__moduleRefZ@Base 15 + _D4core9attribute12__ModuleInfoZ@Base 15 + _D4core9attribute9gnuAbiTag11__xopEqualsMxFKxSQBsQBqQBjZb@Base 15 + _D4core9attribute9gnuAbiTag6__ctorMFNaNbNcNfAAyaXSQBwQBuQBn@Base 15 + _D4core9attribute9gnuAbiTag6__initZ@Base 15 + _D4core9attribute9gnuAbiTag9__xtoHashFNbNeKxSQBrQBpQBiZm@Base 15 + _D4core9exception10RangeError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCsQCqQCj@Base 15 + _D4core9exception10RangeError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCqQCoQCh@Base 15 + _D4core9exception10RangeError6__initZ@Base 15 + _D4core9exception10RangeError6__vtblZ@Base 15 + _D4core9exception10RangeError7__ClassZ@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfAyamZCQBzQBxQBq@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfC6object9ThrowableAyamZCQCrQCpQCi@Base 15 + _D4core9exception11AssertError6__initZ@Base 15 + _D4core9exception11AssertError6__vtblZ@Base 15 + _D4core9exception11AssertError7__ClassZ@Base 15 + _D4core9exception11SwitchError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 + _D4core9exception11SwitchError6__initZ@Base 15 + _D4core9exception11SwitchError6__vtblZ@Base 15 + _D4core9exception11SwitchError7__ClassZ@Base 15 + _D4core9exception11__moduleRefZ@Base 15 + _D4core9exception11rangeMsgPutFNaNbNiNfKAaMAxaZv@Base 15 + _D4core9exception12__ModuleInfoZ@Base 15 + _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoAyamC6object9ThrowableZCQDdQDbQCu@Base 15 + _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoC6object9ThrowableAyamZCQDdQDbQCu@Base 15 + _D4core9exception13FinalizeError6__initZ@Base 15 + _D4core9exception13FinalizeError6__vtblZ@Base 15 + _D4core9exception13FinalizeError7__ClassZ@Base 15 + _D4core9exception13FinalizeError8toStringMxFNfZAya@Base 15 + _D4core9exception13assertHandlerFNbNdNiNePFNbAyamQeZvZv@Base 15 + _D4core9exception13assertHandlerFNbNdNiNeZPFNbAyamQeZv@Base 15 + _D4core9exception14_assertHandlerPFNbAyamQeZv@Base 15 + _D4core9exception15ArrayIndexError6__ctorMFNaNbNiNfmmAyamC6object9ThrowableZCQCxQCvQCo@Base 15 + _D4core9exception15ArrayIndexError6__initZ@Base 15 + _D4core9exception15ArrayIndexError6__vtblZ@Base 15 + _D4core9exception15ArrayIndexError7__ClassZ@Base 15 + _D4core9exception15ArraySliceError6__ctorMFNaNbNiNfmmmAyamC6object9ThrowableZCQCyQCwQCp@Base 15 + _D4core9exception15ArraySliceError6__initZ@Base 15 + _D4core9exception15ArraySliceError6__vtblZ@Base 15 + _D4core9exception15ArraySliceError7__ClassZ@Base 15 + _D4core9exception16OutOfMemoryError13superToStringMFNeZAya@Base 15 + _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCwQCuQCn@Base 15 + _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfbAyamC6object9ThrowableZCQCxQCvQCo@Base 15 + _D4core9exception16OutOfMemoryError6__initZ@Base 15 + _D4core9exception16OutOfMemoryError6__vtblZ@Base 15 + _D4core9exception16OutOfMemoryError7__ClassZ@Base 15 + _D4core9exception16OutOfMemoryError8toStringMxFNeZAya@Base 15 + _D4core9exception16UnicodeException6__ctorMFNaNbNiNfAyamQemC6object9ThrowableZCQCzQCxQCq@Base 15 + _D4core9exception16UnicodeException6__initZ@Base 15 + _D4core9exception16UnicodeException6__vtblZ@Base 15 + _D4core9exception16UnicodeException7__ClassZ@Base 15 + _D4core9exception17SuppressTraceInfo6__initZ@Base 15 + _D4core9exception17SuppressTraceInfo6__vtblZ@Base 15 + _D4core9exception17SuppressTraceInfo7__ClassZ@Base 15 + _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 + _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 + _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZ2ityCQCgQCeQBx@Base 15 + _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZCQCcQCaQBt@Base 15 + _D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 + _D4core9exception27InvalidMemoryOperationError13superToStringMFNeZAya@Base 15 + _D4core9exception27InvalidMemoryOperationError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQDhQDfQCy@Base 15 + _D4core9exception27InvalidMemoryOperationError6__initZ@Base 15 + _D4core9exception27InvalidMemoryOperationError6__vtblZ@Base 15 + _D4core9exception27InvalidMemoryOperationError7__ClassZ@Base 15 + _D4core9exception27InvalidMemoryOperationError8toStringMxFNeZAya@Base 15 + _D4core9exception6_storeG256v@Base 15 + _D4core9exception9ForkError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCoQCmQCf@Base 15 + _D4core9exception9ForkError6__initZ@Base 15 + _D4core9exception9ForkError6__vtblZ@Base 15 + _D4core9exception9ForkError7__ClassZ@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFKQnKmQlZ3getFNbNiZQBy@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFNaNbNiKQtKmQrZQBu@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFNaNbNiQtQviZQBu@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFQnQpiZ3getFNbNiZQBy@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFKQoKQrKmZ3getFNbNiZQCb@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFNaNbNiKQuKQxKmZQBx@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFKQlKmZ3getFNbNiZQBv@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFNaNbNiKQrKmZQBr@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFNaNbNiQvKQyKmQtZQCa@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFQpKQsKmQnZ3getFNbNiZQCe@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFKQBpKQBiKQtKmZ3getFNbNiZQDj@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFNaNbNiKQBvKQBoKQzKmZQDf@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFKmKmKQrKmQpZ3getFNbNiZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFNaNbNiKmKmKQxKmQvZQCh@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFKmKmKmKQtKmQrZ3getFNbNiZQCp@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFNaNbNiKmKmKmKQzKmQxZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFKQlKmZ3getFNbNiZQCa@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFNaNbNiKQrKmZQBw@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFNaNbNibKQsKmZQBz@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFbKQmKmZ3getFNbNiZQCd@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFKQlKmZ3getFNbNiZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFNaNbNiKQrKmZQCh@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFKQnKmQlZ3getFNbNiZQBw@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFNaNbNiKQtKmQrZQBs@Base 15 + _D4core9exception__T15__switch_errorTZQsFNaNbNiNeAyamZv@Base 15 + _D50TypeInfo_E4core3sys5linux10perf_event11perf_sw_ids6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D50TypeInfo_S4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D51TypeInfo_E4core3sys5linux10perf_event12perf_type_id6__initZ@Base 15 + _D51TypeInfo_E4core4sync7rwmutex14ReadWriteMutex6Policy6__initZ@Base 15 + _D51TypeInfo_E4core6thread5fiber4base9FiberBase7Rethrow6__initZ@Base 15 + _D51TypeInfo_OS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D51TypeInfo_S4core13interpolation19InterpolationFooter6__initZ@Base 15 + _D51TypeInfo_S4core13interpolation19InterpolationHeader6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 + _D51TypeInfo_S4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 + _D51TypeInfo_S4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 + _D51TypeInfo_xS4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D51TypeInfo_xS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 + _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 + _D52TypeInfo_OxS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 + _D52TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 + _D53TypeInfo_E4core8internal2gc4impl12conservativeQw4Bins6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 + _D53TypeInfo_S4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 + _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 + _D54TypeInfo_E4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 + _D54TypeInfo_E4core8internal8spinlock8SpinLock10Contention6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 + _D54TypeInfo_S4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 + _D54TypeInfo_S4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 + _D54TypeInfo_xS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D55TypeInfo_E4core3sys5linux10perf_event16perf_hw_cache_id6__initZ@Base 15 + _D55TypeInfo_E4core3sys5linuxQg9if_packet16tpacket_versions6__initZ@Base 15 + _D55TypeInfo_PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D55TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 + _D55TypeInfo_S4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 + _D55TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 + _D55TypeInfo_S4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 + _D55TypeInfo_S4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D55TypeInfo_xPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D56TypeInfo_AxPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 + _D56TypeInfo_S4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 + _D56TypeInfo_S4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 + _D56TypeInfo_S4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D56TypeInfo_xS4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D57TypeInfo_S4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 + _D57TypeInfo_S4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 + _D58TypeInfo_E2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ7OnCycle6__initZ@Base 15 + _D58TypeInfo_E4core3sys5linux10perf_event19perf_hw_cache_op_id6__initZ@Base 15 + _D58TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D58TypeInfo_S4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 + _D58TypeInfo_S4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 + _D58TypeInfo_S4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 + _D58TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D59TypeInfo_E4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 + _D59TypeInfo_E4core3sys5linux10perf_event20perf_sample_regs_abi6__initZ@Base 15 + _D59TypeInfo_S2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 + _D59TypeInfo_S4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 + _D59TypeInfo_S4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 + _D59TypeInfo_S4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 + _D61TypeInfo_E4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 + _D61TypeInfo_E4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 + _D61TypeInfo_E4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 + _D61TypeInfo_S4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 + _D61TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 + _D61TypeInfo_S4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 + _D61TypeInfo_S4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 + _D62TypeInfo_E4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 + _D62TypeInfo_S4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 + _D62TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 + _D63TypeInfo_E4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 + _D63TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 + _D64TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 + _D64TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 + _D64TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 + _D65TypeInfo_E4core3sys5linux10perf_event26perf_hw_cache_op_result_id6__initZ@Base 15 + _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 + _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 + _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 + _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D65TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 + _D66TypeInfo_xS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D67TypeInfo_PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D67TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 + _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 + _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 + _D67TypeInfo_xPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D68TypeInfo_AxPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D68TypeInfo_E4core3sys5linux10perf_event29perf_branch_sample_type_shift6__initZ@Base 15 + _D68TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10IsDelegate6__initZ@Base 15 + _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 + _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 + _D68TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D69TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D69TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D6Object6__initZ@Base 15 + _D6Object6__vtblZ@Base 15 + _D6Object7__ClassZ@Base 15 + _D6object10ModuleInfo11xgetMembersMxFNaNbNdNiZPv@Base 15 + _D6object10ModuleInfo12localClassesMxFNaNbNdNiNjZAC14TypeInfo_Class@Base 15 + _D6object10ModuleInfo15importedModulesMxFNaNbNdNiNjZAyPSQCcQBy@Base 15 + _D6object10ModuleInfo4ctorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo4dtorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo4nameMxFNaNbNdNiNjZAya@Base 15 + _D6object10ModuleInfo5flagsMxFNaNbNdNiZk@Base 15 + _D6object10ModuleInfo5ictorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo5indexMxFNaNbNdNiZk@Base 15 + _D6object10ModuleInfo6__initZ@Base 15 + _D6object10ModuleInfo6addrOfMxFNaNbNiNjiZPv@Base 15 + _D6object10ModuleInfo7opApplyFMDFPSQBhQBdZiZi@Base 15 + _D6object10ModuleInfo7tlsctorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo7tlsdtorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo8opAssignMFMxSQBhQBdZv@Base 15 + _D6object10ModuleInfo8unitTestMxFNaNbNdNiZPFZv@Base 15 + _D6object10_xopEqualsFIPvIQdZb@Base 15 + _D6object10getElementFNaNbNeNkMNgC8TypeInfoZNgQn@Base 15 + _D6object11__moduleRefZ@Base 15 + _D6object12__ModuleInfoZ@Base 15 + _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZ15hasCustomToHashFNaNbNeMxQBrZb@Base 15 + _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZm@Base 15 + _D6object12setSameMutexFOC6ObjectOQjZv@Base 15 + _D6object13TypeInfo_Enum11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object13TypeInfo_Enum4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object13TypeInfo_Enum4swapMxFPvQcZv@Base 15 + _D6object13TypeInfo_Enum5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object13TypeInfo_Enum5offTiMxFZAxSQBj14OffsetTypeInfo@Base 15 + _D6object13TypeInfo_Enum5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object13TypeInfo_Enum6equalsMxFIPvIQdZb@Base 15 + _D6object13TypeInfo_Enum6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object13TypeInfo_Enum6talignMxFNaNbNdNiNfZm@Base 15 + _D6object13TypeInfo_Enum7compareMxFIPvIQdZi@Base 15 + _D6object13TypeInfo_Enum7destroyMxFPvZv@Base 15 + _D6object13TypeInfo_Enum7getHashMxFNbNfMxPvZm@Base 15 + _D6object13TypeInfo_Enum8opEqualsMFC6ObjectZb@Base 15 + _D6object13TypeInfo_Enum8postblitMxFPvZv@Base 15 + _D6object13TypeInfo_Enum8toStringMxFNaNbNfZAya@Base 15 + _D6object14OffsetTypeInfo11__xopEqualsMxFKxSQBqQBmZb@Base 15 + _D6object14OffsetTypeInfo6__initZ@Base 15 + _D6object14OffsetTypeInfo9__xtoHashFNbNeKxSQBpQBlZm@Base 15 + _D6object14TypeInfo_Array11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object14TypeInfo_Array4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object14TypeInfo_Array4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Array5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Array5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Array6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Array6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object14TypeInfo_Array6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Array7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Array7getHashMxFNbNeMxPvZm@Base 15 + _D6object14TypeInfo_Array8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Array8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 + _D6object14TypeInfo_Class11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object14TypeInfo_Class4findFMxAaZxCQBd@Base 15 + _D6object14TypeInfo_Class4infoMxFNaNbNdNiNlNjNfZxCQBp@Base 15 + _D6object14TypeInfo_Class5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Class5offTiMxFNaNbNdZAxSQBq14OffsetTypeInfo@Base 15 + _D6object14TypeInfo_Class5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Class6createMxFZC6Object@Base 15 + _D6object14TypeInfo_Class6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Class6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object14TypeInfo_Class7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Class7getHashMxFNbNeMxPvZm@Base 15 + _D6object14TypeInfo_Class8isBaseOfMxFNaNbNiNeMxCQBnZb@Base 15 + _D6object14TypeInfo_Class8opEqualsMxFNbNfxC8TypeInfoZb@Base 15 + _D6object14TypeInfo_Class8toStringMxFNaNbNfZAya@Base 15 + _D6object14TypeInfo_Class8typeinfoMxFNaNbNdNiNlNjNfZxCQBt@Base 15 + _D6object14TypeInfo_Const11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object14TypeInfo_Const4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object14TypeInfo_Const4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Const5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Const5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Const6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Const6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Const7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Const7getHashMxFNbNfMxPvZm@Base 15 + _D6object14TypeInfo_Const8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Const8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Inout8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Tuple11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object14TypeInfo_Tuple4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Tuple5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Tuple6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Tuple6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Tuple7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Tuple7destroyMxFPvZv@Base 15 + _D6object14TypeInfo_Tuple7getHashMxFNbNfMxPvZm@Base 15 + _D6object14TypeInfo_Tuple8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Tuple8postblitMxFPvZv@Base 15 + _D6object14TypeInfo_Tuple8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Shared8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 + _D6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 + _D6object15TypeInfo_Struct11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object15TypeInfo_Struct4nameMxFNbNdNeZ19demangledNamesCacheHPxvAya@Base 15 + _D6object15TypeInfo_Struct4nameMxFNbNdNeZAya@Base 15 + _D6object15TypeInfo_Struct5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object15TypeInfo_Struct5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Struct6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D6object15TypeInfo_Struct6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object15TypeInfo_Struct6talignMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Struct6toHashMxFNbNfZm@Base 15 + _D6object15TypeInfo_Struct7compareMxFNaNbNeIPvIQdZi@Base 15 + _D6object15TypeInfo_Struct7destroyMxFPvZv@Base 15 + _D6object15TypeInfo_Struct7getHashMxFNaNbNeMxPvZm@Base 15 + _D6object15TypeInfo_Struct8opEqualsMFC6ObjectZb@Base 15 + _D6object15TypeInfo_Struct8postblitMxFPvZv@Base 15 + _D6object15TypeInfo_Struct8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Vector11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object15TypeInfo_Vector4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object15TypeInfo_Vector4swapMxFPvQcZv@Base 15 + _D6object15TypeInfo_Vector5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object15TypeInfo_Vector5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Vector6equalsMxFIPvIQdZb@Base 15 + _D6object15TypeInfo_Vector6talignMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Vector7compareMxFIPvIQdZi@Base 15 + _D6object15TypeInfo_Vector7getHashMxFNbNfMxPvZm@Base 15 + _D6object15TypeInfo_Vector8opEqualsMFC6ObjectZb@Base 15 + _D6object15TypeInfo_Vector8toStringMxFNbNfZAya@Base 15 + _D6object16TypeInfo_Pointer11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object16TypeInfo_Pointer4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object16TypeInfo_Pointer4swapMxFPvQcZv@Base 15 + _D6object16TypeInfo_Pointer5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object16TypeInfo_Pointer5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object16TypeInfo_Pointer6equalsMxFIPvIQdZb@Base 15 + _D6object16TypeInfo_Pointer7compareMxFIPvIQdZi@Base 15 + _D6object16TypeInfo_Pointer7getHashMxFNbNeMxPvZm@Base 15 + _D6object16TypeInfo_Pointer8opEqualsMFC6ObjectZb@Base 15 + _D6object16TypeInfo_Pointer8toStringMxFNbNfZAya@Base 15 + _D6object17TypeInfo_Delegate11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object17TypeInfo_Delegate5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object17TypeInfo_Delegate5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Delegate6equalsMxFIPvIQdZb@Base 15 + _D6object17TypeInfo_Delegate6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object17TypeInfo_Delegate6talignMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Delegate7compareMxFIPvIQdZi@Base 15 + _D6object17TypeInfo_Delegate7getHashMxFNbNeMxPvZm@Base 15 + _D6object17TypeInfo_Delegate8opEqualsMFC6ObjectZb@Base 15 + _D6object17TypeInfo_Delegate8toStringMxFNaNbNeZAya@Base 15 + _D6object17TypeInfo_Function11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object17TypeInfo_Function5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Function6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object17TypeInfo_Function8opEqualsMFC6ObjectZb@Base 15 + _D6object17TypeInfo_Function8toStringMxFNaNbNeZAya@Base 15 + _D6object18TypeInfo_Interface11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object18TypeInfo_Interface5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object18TypeInfo_Interface5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object18TypeInfo_Interface6equalsMxFIPvIQdZb@Base 15 + _D6object18TypeInfo_Interface7compareMxFIPvIQdZi@Base 15 + _D6object18TypeInfo_Interface7getHashMxFNbNeMxPvZm@Base 15 + _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxC14TypeInfo_ClassZb@Base 15 + _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxCQBrZb@Base 15 + _D6object18TypeInfo_Interface8opEqualsMFC6ObjectZb@Base 15 + _D6object18TypeInfo_Interface8toStringMxFNaNbNfZAya@Base 15 + _D6object18TypeInfo_Invariant8toStringMxFNbNfZAya@Base 15 + _D6object19__cpp_type_info_ptr6__initZ@Base 15 + _D6object19__cpp_type_info_ptr6__vtblZ@Base 15 + _D6object19__cpp_type_info_ptr7__ClassZ@Base 15 + _D6object20TypeInfo_StaticArray11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object20TypeInfo_StaticArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object20TypeInfo_StaticArray4swapMxFPvQcZv@Base 15 + _D6object20TypeInfo_StaticArray5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object20TypeInfo_StaticArray5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object20TypeInfo_StaticArray6equalsMxFIPvIQdZb@Base 15 + _D6object20TypeInfo_StaticArray6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object20TypeInfo_StaticArray6talignMxFNaNbNdNiNfZm@Base 15 + _D6object20TypeInfo_StaticArray7compareMxFIPvIQdZi@Base 15 + _D6object20TypeInfo_StaticArray7destroyMxFPvZv@Base 15 + _D6object20TypeInfo_StaticArray7getHashMxFNbNeMxPvZm@Base 15 + _D6object20TypeInfo_StaticArray8opEqualsMFC6ObjectZb@Base 15 + _D6object20TypeInfo_StaticArray8postblitMxFPvZv@Base 15 + _D6object20TypeInfo_StaticArray8toStringMxFNbNfZAya@Base 15 + _D6object25TypeInfo_AssociativeArray11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object25TypeInfo_AssociativeArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object25TypeInfo_AssociativeArray5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object25TypeInfo_AssociativeArray5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object25TypeInfo_AssociativeArray6equalsMxFNeIPvIQdZb@Base 15 + _D6object25TypeInfo_AssociativeArray6talignMxFNaNbNdNiNfZm@Base 15 + _D6object25TypeInfo_AssociativeArray7getHashMxFNbNeMxPvZm@Base 15 + _D6object25TypeInfo_AssociativeArray8opEqualsMFC6ObjectZb@Base 15 + _D6object25TypeInfo_AssociativeArray8toStringMxFNbNfZAya@Base 15 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn11__xopEqualsMxFKxSQCtQCp__TQBrTQBoTmZQCbZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn9__xtoHashFNbNeKxSQCsQCo__TQBqTQBnTmZQCaZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp11__xopEqualsMxFKxSQDwQDs__TQCuTQCrTQCvZQDgZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp9__xtoHashFNbNeKxSQDvQDr__TQCtTQCqTQCuZQDfZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp11__xopEqualsMxFKxSQCvQCr__TQBtTQBqTQBqZQCfZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp9__xtoHashFNbNeKxSQCuQCq__TQBsTQBpTQBpZQCeZm@Base 15.2 + _D6object2AA6__initZ@Base 15 + _D6object5Error6__ctorMFNaNbNiNfAyaCQBi9ThrowableZCQBxQBt@Base 15 + _D6object5Error6__ctorMFNaNbNiNfAyaQdmCQBl9ThrowableZCQCaQBw@Base 15 + _D6object5Error6__initZ@Base 15 + _D6object5Error6__vtblZ@Base 15 + _D6object5Error7__ClassZ@Base 15 + _D6object6Object5opCmpMFCQqZi@Base 15 + _D6object6Object6toHashMFNbNeZm@Base 15 + _D6object6Object7Monitor11__InterfaceZ@Base 15 + _D6object6Object7factoryFAyaZCQv@Base 15 + _D6object6Object8opEqualsMFCQtZb@Base 15 + _D6object6Object8toStringMFZAya@Base 15 + _D6object7AARange6__initZ@Base 15 + _D6object7_xopCmpFIPvIQdZb@Base 15 + _D6object8TypeInfo4nextMNgFNaNbNdNiZNgCQBe@Base 15 + _D6object8TypeInfo4swapMxFPvQcZv@Base 15 + _D6object8TypeInfo5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object8TypeInfo5offTiMxFZAxSQBd14OffsetTypeInfo@Base 15 + _D6object8TypeInfo5opCmpMFC6ObjectZi@Base 15 + _D6object8TypeInfo5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object8TypeInfo6equalsMxFIPvIQdZb@Base 15 + _D6object8TypeInfo6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D6object8TypeInfo6talignMxFNaNbNdNiNfZm@Base 15 + _D6object8TypeInfo6toHashMxFNbNeZm@Base 15 + _D6object8TypeInfo7compareMxFIPvIQdZi@Base 15 + _D6object8TypeInfo7destroyMxFPvZv@Base 15 + _D6object8TypeInfo7getHashMxFNbNeMxPvZm@Base 15 + _D6object8TypeInfo8opEqualsMFC6ObjectZb@Base 15 + _D6object8TypeInfo8opEqualsMxFNbNfxCQBbZb@Base 15 + _D6object8TypeInfo8postblitMxFPvZv@Base 15 + _D6object8TypeInfo8toStringMxFNbNfZAya@Base 15 + _D6object9Exception6__ctorMFNaNbNiNfAyaCQBm9ThrowableQrmZCQBx@Base 15 + _D6object9Exception6__ctorMFNaNbNiNfAyaQdmCQBp9ThrowableZCQBx@Base 15 + _D6object9Interface11__xopEqualsMxFKxSQBkQBgZb@Base 15 + _D6object9Interface6__initZ@Base 15 + _D6object9Interface9__xtoHashFNbNeKxSQBjQBfZm@Base 15 + _D6object9Throwable13chainTogetherFNaNbNiNkMCQBrQBnNkMQkZQn@Base 15 + _D6object9Throwable4nextMFNaNbNdNiNlNfCQBlQBhZv@Base 15 + _D6object9Throwable4nextMNgFNaNbNdNiNjNlNfZNgCQBsQBo@Base 15 + _D6object9Throwable6__ctorMFNaNbNiNfAyaCQBmQBiZQi@Base 15 + _D6object9Throwable6__ctorMFNaNbNiNfAyaQdmCQBpQBlZQi@Base 15 + _D6object9Throwable6__dtorMFNbNlNeZv@Base 15 + _D6object9Throwable6__initZ@Base 15 + _D6object9Throwable6__vtblZ@Base 15 + _D6object9Throwable7__ClassZ@Base 15 + _D6object9Throwable7messageMxFNbNfZAxa@Base 15 + _D6object9Throwable7opApplyMFMDFCQBfQBbZiZi@Base 15 + _D6object9Throwable8refcountMFNaNbNcNiNlNjZk@Base 15 + _D6object9Throwable8toStringMFZAya@Base 15 + _D6object9Throwable8toStringMxFMDFIAaZvZv@Base 15 + _D6object9Throwable9TraceInfo11__InterfaceZ@Base 15 + _D6object__T10RTInfoImplVAmA2i104i2048ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i4160ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i6824ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i11274ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i3ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i721ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i16424ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i21610ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i4ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i12ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i512ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i12i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i347816ZQBdyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i4244ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i3ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i184i8125584ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i185i8125584ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i212i2728ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i216i8011774ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i240i2728ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i3ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i6ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i7ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i256i8388608ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i272i2158144171ZQBhyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i10ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i11ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i13ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i14ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i15ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i7ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i8ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i9ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i15ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i18ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i20ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i22ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i24ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i28ZQyyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i40i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i30ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i44i12ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i24ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i31ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i32ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i42ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i44ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i56ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i59ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i63ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i123ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i21ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i40ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i64ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i84ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i10ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i134ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i9ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i138ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i256ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i248ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i516ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i84i680ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i8i1ZQwyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i1023ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i1154ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i2728ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i680ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA3i968i268435462i0ZQBiyG3m@Base 15 + _D6object__T10RTInfoImplVAmA4i1064i549755827528i0i16ZQBpyG4m@Base 15 + _D6object__T10RTInfoImplVAmA4i1152i144107491482206208i565149010231808i0ZQCiyG4m@Base 15 + _D6object__T3dupTAyaZQjFNaNbNdNfAxAyaZAQw@Base 15 + _D6object__T3dupTaZQhFNaNbNdNfAxaZAa@Base 15 + _D6object__T4idupTaZQiFNaNbNdNfAaZAya@Base 15 + _D6object__T4keysHTHC4core6thread8osthread6ThreadQBdTQBhTQBlZQBxFNaNbNdNfQCcZAQCg@Base 15 + _D6object__T7destroyVbi1TC4core2gc11gcinterface2GCZQBnFNbQBgZv@Base 15 + _D6object__T7destroyVbi1TC6ObjectZQwFNbQoZv@Base 15 + _D6object__T7destroyVbi1TS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 + _D6object__T7destroyVbi1TS4core2gc11gcinterface4RootZQBpFNaNbNiNfKQBpZv@Base 15 + _D6object__T7destroyVbi1TS4core2gc11gcinterface5RangeZQBqFNaNbNiNfKQBqZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNfKQDoZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNfKQDqZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPySQCt10ModuleInfoTiZQBe4NodeZQDkFNaNbNiNfKQDkZv@Base 15 + _D6object__T7reserveTuZQlFNaNbNeKAumZm@Base 15 + _D6object__T8opEqualsTC14TypeInfo_ClassTQsZQBfFNbNfQBdQBgZb@Base 15 + _D6object__T8opEqualsTC6ObjectTQjZQwFQpQrZb@Base 15 + _D6object__T8opEqualsTC8TypeInfoTxCQmZQBaFNbNfQyxQpZb@Base 15 + _D6object__T8opEqualsTxC14TypeInfo_ClassTxQtZQBhFNbNfxQBfxQBjZb@Base 15 + _D6object__T8opEqualsTxC4core6thread8osthread6ThreadTxQBfZQBuFxQBoxQBsZb@Base 15.2 + _D6object__T8opEqualsTxC6ObjectTxQkZQyFxQrxQuZb@Base 15 + _D6object__T8opEqualsTxC8TypeInfoTxQmZQBaFNbNfxQyxQBbZb@Base 15 + _D6object__T8opEqualsTxCQw9ThrowableTxQpZQBdFxQxxQBaZb@Base 15 + _D70TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D70TypeInfo_PxS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D70TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D70TypeInfo_xPS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D70TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 + _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 + _D74TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D75TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D77TypeInfo_S4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D78TypeInfo_S4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D78TypeInfo_xS4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D79TypeInfo_S2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 + _D79TypeInfo_S4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D79TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D79TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D80TypeInfo_S4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D80TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D80TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D80TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D81TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D82TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 + _D83TypeInfo_AS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D83TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D84TypeInfo_AxS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D84TypeInfo_S4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D84TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 + _D84TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 + _D84TypeInfo_xAS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D85TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D86TypeInfo_S4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D86TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D87TypeInfo_PxS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 + _D87TypeInfo_xPS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D88TypeInfo_xS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D89TypeInfo_PxS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D89TypeInfo_S4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D89TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 + _D89TypeInfo_xPS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D8TypeInfo6__initZ@Base 15 + _D8TypeInfo6__vtblZ@Base 15 + _D8TypeInfo7__ClassZ@Base 15 + _D91TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 + _D92TypeInfo_S4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D93TypeInfo_S4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 + _D93TypeInfo_xS4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D95TypeInfo_S3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D9Exception6__initZ@Base 15 + _D9Exception6__vtblZ@Base 15 + _D9Exception7__ClassZ@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 + _DTi16_D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 + _DTi16_D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 + _ZNKSt10bad_typeid4whatEv@Base 15 + _ZNKSt13bad_exception4whatEv@Base 15 + _ZNKSt8bad_cast4whatEv@Base 15 + _ZNKSt9exception4whatEv@Base 15 + _ZNKSt9type_info4nameEv@Base 15 + _ZNKSt9type_info6beforeEPKS_@Base 15 + _ZNSt9exceptionD1Ev@Base 15 + _ZNSt9type_infoD1Ev@Base 15 + __CPUELT@Base 15 + __CPUMASK@Base 15 + __CPU_ALLOC@Base 15 + __CPU_ALLOC_SIZE@Base 15 + __CPU_COUNT_S@Base 15 + __CPU_FREE@Base 15 + __CPU_ISSET_S@Base 15 + __CPU_SET_S@Base 15 + __atomic_add_fetch_16@Base 15 + __atomic_add_fetch_1@Base 15 + __atomic_add_fetch_2@Base 15 + __atomic_add_fetch_4@Base 15 + __atomic_add_fetch_8@Base 15 + __atomic_and_fetch_16@Base 15 + __atomic_and_fetch_1@Base 15 + __atomic_and_fetch_2@Base 15 + __atomic_and_fetch_4@Base 15 + __atomic_and_fetch_8@Base 15 + __atomic_compare_exchange@Base 15 + __atomic_compare_exchange_16@Base 15 + __atomic_compare_exchange_1@Base 15 + __atomic_compare_exchange_2@Base 15 + __atomic_compare_exchange_4@Base 15 + __atomic_compare_exchange_8@Base 15 + __atomic_exchange@Base 15 + __atomic_exchange_16@Base 15 + __atomic_exchange_1@Base 15 + __atomic_exchange_2@Base 15 + __atomic_exchange_4@Base 15 + __atomic_exchange_8@Base 15 + __atomic_feraiseexcept@Base 15 + __atomic_fetch_add_16@Base 15 + __atomic_fetch_add_1@Base 15 + __atomic_fetch_add_2@Base 15 + __atomic_fetch_add_4@Base 15 + __atomic_fetch_add_8@Base 15 + __atomic_fetch_and_16@Base 15 + __atomic_fetch_and_1@Base 15 + __atomic_fetch_and_2@Base 15 + __atomic_fetch_and_4@Base 15 + __atomic_fetch_and_8@Base 15 + __atomic_fetch_nand_16@Base 15 + __atomic_fetch_nand_1@Base 15 + __atomic_fetch_nand_2@Base 15 + __atomic_fetch_nand_4@Base 15 + __atomic_fetch_nand_8@Base 15 + __atomic_fetch_or_16@Base 15 + __atomic_fetch_or_1@Base 15 + __atomic_fetch_or_2@Base 15 + __atomic_fetch_or_4@Base 15 + __atomic_fetch_or_8@Base 15 + __atomic_fetch_sub_16@Base 15 + __atomic_fetch_sub_1@Base 15 + __atomic_fetch_sub_2@Base 15 + __atomic_fetch_sub_4@Base 15 + __atomic_fetch_sub_8@Base 15 + __atomic_fetch_xor_16@Base 15 + __atomic_fetch_xor_1@Base 15 + __atomic_fetch_xor_2@Base 15 + __atomic_fetch_xor_4@Base 15 + __atomic_fetch_xor_8@Base 15 + __atomic_is_lock_free@Base 15 + __atomic_load@Base 15 + __atomic_load_16@Base 15 + __atomic_load_1@Base 15 + __atomic_load_2@Base 15 + __atomic_load_4@Base 15 + __atomic_load_8@Base 15 + __atomic_nand_fetch_16@Base 15 + __atomic_nand_fetch_1@Base 15 + __atomic_nand_fetch_2@Base 15 + __atomic_nand_fetch_4@Base 15 + __atomic_nand_fetch_8@Base 15 + __atomic_or_fetch_16@Base 15 + __atomic_or_fetch_1@Base 15 + __atomic_or_fetch_2@Base 15 + __atomic_or_fetch_4@Base 15 + __atomic_or_fetch_8@Base 15 + __atomic_store@Base 15 + __atomic_store_16@Base 15 + __atomic_store_1@Base 15 + __atomic_store_2@Base 15 + __atomic_store_4@Base 15 + __atomic_store_8@Base 15 + __atomic_sub_fetch_16@Base 15 + __atomic_sub_fetch_1@Base 15 + __atomic_sub_fetch_2@Base 15 + __atomic_sub_fetch_4@Base 15 + __atomic_sub_fetch_8@Base 15 + __atomic_test_and_set_16@Base 15 + __atomic_test_and_set_1@Base 15 + __atomic_test_and_set_2@Base 15 + __atomic_test_and_set_4@Base 15 + __atomic_test_and_set_8@Base 15 + __atomic_xor_fetch_16@Base 15 + __atomic_xor_fetch_1@Base 15 + __atomic_xor_fetch_2@Base 15 + __atomic_xor_fetch_4@Base 15 + __atomic_xor_fetch_8@Base 15 + __gdc_begin_catch@Base 15 + __gdc_personality_v0@Base 15 + _aApplyRcd1@Base 15 + _aApplyRcd2@Base 15 + _aApplyRcw1@Base 15 + _aApplyRcw2@Base 15 + _aApplyRdc1@Base 15 + _aApplyRdc2@Base 15 + _aApplyRdw1@Base 15 + _aApplyRdw2@Base 15 + _aApplyRwc1@Base 15 + _aApplyRwc2@Base 15 + _aApplyRwd1@Base 15 + _aApplyRwd2@Base 15 + _aApplycd1@Base 15 + _aApplycd2@Base 15 + _aApplycw1@Base 15 + _aApplycw2@Base 15 + _aApplydc1@Base 15 + _aApplydc2@Base 15 + _aApplydw1@Base 15 + _aApplydw2@Base 15 + _aApplywc1@Base 15 + _aApplywc2@Base 15 + _aApplywd1@Base 15 + _aApplywd2@Base 15 + _aaApply2@Base 15 + _aaApply@Base 15 + _aaClear@Base 15 + _aaDelX@Base 15 + _aaEqual@Base 15 + _aaGetHash@Base 15 + _aaGetRvalueX@Base 15 + _aaGetX@Base 15 + _aaGetY@Base 15 + _aaInX@Base 15 + _aaKeys@Base 15 + _aaLen@Base 15 + _aaNew@Base 15 + _aaRange@Base 15 + _aaRangeEmpty@Base 15 + _aaRangeFrontKey@Base 15 + _aaRangeFrontValue@Base 15 + _aaRangePopFront@Base 15 + _aaRehash@Base 15 + _aaValues@Base 15 + _aaVersion@Base 15 + _adEq2@Base 15 + _adSort@Base 15 + _d_allocmemory@Base 15 + _d_arrayappendcTX@Base 15 + _d_arrayappendcd@Base 15 + _d_arrayappendwd@Base 15 + _d_arraybounds@Base 15 + _d_arraybounds_index@Base 15 + _d_arraybounds_indexp@Base 15 + _d_arraybounds_slice@Base 15 + _d_arraybounds_slicep@Base 15 + _d_arrayboundsp@Base 15 + _d_arraycopy@Base 15 + _d_arrayliteralTX@Base 15 + _d_arraysetcapacity@Base 15 + _d_arraysetlengthT@Base 15 + _d_arraysetlengthiT@Base 15 + _d_arrayshrinkfit@Base 15 + _d_assert@Base 15 + _d_assert_msg@Base 15 + _d_assertp@Base 15 + _d_assocarrayliteralTX@Base 15 + _d_callfinalizer@Base 15 + _d_callinterfacefinalizer@Base 15 + _d_class_cast@Base 15 + _d_createTrace@Base 15 + _d_critical_init@Base 15 + _d_critical_term@Base 15 + _d_criticalenter2@Base 15 + _d_criticalenter@Base 15 + _d_criticalexit@Base 15 + _d_delThrowable@Base 15 + _d_delclass@Base 15 + _d_delinterface@Base 15 + _d_delmemory@Base 15 + _d_dso_registry@Base 15 + _d_dynamic_cast@Base 15 + _d_eh_swapContext@Base 15 + _d_initMonoTime@Base 15 + _d_interface_cast@Base 15 + _d_isbaseof2@Base 15 + _d_isbaseof@Base 15 + _d_monitor_staticctor@Base 15 + _d_monitor_staticdtor@Base 15 + _d_monitordelete@Base 15 + _d_monitordelete_nogc@Base 15 + _d_monitorenter@Base 15 + _d_monitorexit@Base 15 + _d_newarrayT@Base 15 + _d_newarrayU@Base 15 + _d_newarrayiT@Base 15 + _d_newclass@Base 15 + _d_newitemU@Base 15 + _d_paint_cast@Base 15 + _d_print_throwable@Base 15 + _d_register_conservative_gc@Base 15 + _d_register_manual_gc@Base 15 + _d_register_precise_gc@Base 15 + _d_run_main2@Base 15 + _d_run_main@Base 15 + _d_setSameMutex@Base 15 + _d_throw@Base 15 + _d_toObject@Base 15 + _d_traceContext@Base 15 + _d_unittest@Base 15 + _d_unittest_msg@Base 15 + _d_unittestp@Base 15 + atomic_flag_clear@Base 15 + atomic_flag_clear_explicit@Base 15 + atomic_flag_test_and_set@Base 15 + atomic_flag_test_and_set_explicit@Base 15 + atomic_signal_fence@Base 15 + atomic_thread_fence@Base 15 + backtrace_alloc@Base 15 + backtrace_close@Base 15 + backtrace_create_state@Base 15 + backtrace_dwarf_add@Base 15 + backtrace_free@Base 15 + backtrace_full@Base 15 + backtrace_get_view@Base 15 + backtrace_initialize@Base 15 + backtrace_open@Base 15 + backtrace_pcinfo@Base 15 + backtrace_print@Base 15 + backtrace_qsort@Base 15 + backtrace_release_view@Base 15 + backtrace_simple@Base 15 + backtrace_syminfo@Base 15 + backtrace_syminfo_to_full_callback@Base 15 + backtrace_syminfo_to_full_error_callback@Base 15 + backtrace_uncompress_lzma@Base 15 + backtrace_uncompress_zdebug@Base 15 + backtrace_uncompress_zstd@Base 15 + backtrace_vector_finish@Base 15 + backtrace_vector_grow@Base 15 + backtrace_vector_release@Base 15 + cimag@Base 15 + cimagf@Base 15 + cimagl@Base 15 + creald@Base 15 + crealf@Base 15 + creall@Base 15 + fakePureErrnoImpl@Base 15 + fakePureReprintReal@Base 15 + fiber_entryPoint@Base 15 + fiber_switchContext@Base 15 + gc_addRange@Base 15 + gc_addRoot@Base 15 + gc_addrOf@Base 15 + gc_allocatedInCurrentThread@Base 15 + gc_calloc@Base 15 + gc_clrAttr@Base 15 + gc_clrProxy@Base 15 + gc_collect@Base 15 + gc_disable@Base 15 + gc_enable@Base 15 + gc_expandArrayUsed@Base 15 + gc_extend@Base 15 + gc_free@Base 15 + gc_getArrayUsed@Base 15 + gc_getAttr@Base 15 + gc_getProxy@Base 15 + gc_inFinalizer@Base 15 + gc_init@Base 15 + gc_init_nothrow@Base 15 + gc_malloc@Base 15 + gc_minimize@Base 15 + gc_profileStats@Base 15 + gc_qalloc@Base 15 + gc_query@Base 15 + gc_realloc@Base 15 + gc_removeRange@Base 15 + gc_removeRoot@Base 15 + gc_reserve@Base 15 + gc_reserveArrayCapacity@Base 15 + gc_runFinalizers@Base 15 + gc_setAttr@Base 15 + gc_setProxy@Base 15 + gc_shrinkArrayUsed@Base 15 + gc_sizeOf@Base 15 + gc_stats@Base 15 + gc_term@Base 15 + getErrno@Base 15 + libat_lock_n@Base 15 + libat_unlock_n@Base 15 + lifetime_init@Base 15 + onArrayIndexError@Base 15 + onArraySliceError@Base 15 + onAssertError@Base 15 + onAssertErrorMsg@Base 15 + onFinalizeError@Base 15 + onForkError@Base 15 + onInvalidMemoryOperationError@Base 15 + onOutOfMemoryError@Base 15 + onOutOfMemoryErrorNoGC@Base 15 + onRangeError@Base 15 + onUnicodeError@Base 15 + onUnittestErrorMsg@Base 15 + pcinfoCallback@Base 15 + pcinfoErrorCallback@Base 15 + perf_event_open@Base 15 + profilegc_setlogfilename@Base 15 + register_default_gcs@Base 15 + rt_args@Base 15 + rt_attachDisposeEvent@Base 15 + rt_cArgs@Base 15 + rt_cmdline_enabled@Base 15 + rt_detachDisposeEvent@Base 15 + rt_envvars_enabled@Base 15 + rt_finalize2@Base 15 + rt_finalize@Base 15 + rt_finalizeFromGC@Base 15 + rt_getCollectHandler@Base 15 + rt_getTraceDeallocator@Base 15 + rt_getTraceHandler@Base 15 + rt_hasFinalizerInSegment@Base 15 + rt_init@Base 15 + rt_loadLibrary@Base 15 + rt_moduleCtor@Base 15 + rt_moduleDtor@Base 15 + rt_moduleTlsCtor@Base 15 + rt_moduleTlsDtor@Base 15 + rt_options@Base 15 + rt_setCollectHandler@Base 15 + rt_setTraceHandler@Base 15 + rt_term@Base 15 + rt_trapExceptions@Base 15 + rt_unloadLibrary@Base 15 + runModuleUnitTests@Base 15 + setErrno@Base 15 + simpleCallback@Base 15 + simpleErrorCallback@Base 15 + syminfoCallback2@Base 15 + syminfoCallback@Base 15 + thread_attachThis@Base 15 + thread_detachByAddr@Base 15 + thread_detachInstance@Base 15 + thread_detachThis@Base 15 + thread_entryPoint@Base 15 + thread_init@Base 15 + thread_isMainThread@Base 15 + thread_joinAll@Base 15 + thread_postRestartTheWorld@Base 15 + thread_postSuspend@Base 15 + thread_preStopTheWorld@Base 15 + thread_preSuspend@Base 15 + thread_resumeAll@Base 15 + thread_resumeHandler@Base 15 + thread_scanAll@Base 15 + thread_scanAllType@Base 15 + thread_setGCSignals@Base 15 + thread_setThis@Base 15 + thread_stackBottom@Base 15 + thread_stackTop@Base 15 + thread_suspendAll@Base 15 + thread_suspendHandler@Base 15 + thread_term@Base 15 + tipc_addr@Base 15 + tipc_cluster@Base 15 + tipc_node@Base 15 + tipc_zone@Base 15 +libgphobos.so.6 libgphobos6 #MINVER# + CPU_ALLOC@Base 15 + CPU_ALLOC_SIZE@Base 15 + CPU_COUNT@Base 15 + CPU_COUNT_S@Base 15 + CPU_FREE@Base 15 + CPU_ISSET@Base 15 + CPU_SET@Base 15 + LOG_MASK@Base 15 + LOG_UPTO@Base 15 + SIGRTMAX@Base 15 + SIGRTMIN@Base 15 + S_TYPEISMQ@Base 15 + S_TYPEISSEM@Base 15 + S_TYPEISSHM@Base 15 + TPACKET_ALIGN@Base 15 + _D101TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 + _D101TypeInfo_S3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi6__initZ@Base 15 + _D101TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__initZ@Base 15 + _D101TypeInfo_S4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D101TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S6__initZ@Base 15 + _D102TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 + _D102TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 + _D102TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S6__initZ@Base 15 + _D102TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 + _D103TypeInfo_S3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb6__initZ@Base 15 + _D103TypeInfo_S4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D103TypeInfo_S4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D103TypeInfo_S4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D105TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10IsDelegate6__initZ@Base 15 + _D105TypeInfo_S3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6__initZ@Base 15 + _D109TypeInfo_S3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__initZ@Base 15 + _D10TypeInfo_a6__initZ@Base 15 + _D10TypeInfo_a6__vtblZ@Base 15 + _D10TypeInfo_a7__ClassZ@Base 15 + _D10TypeInfo_b6__initZ@Base 15 + _D10TypeInfo_b6__vtblZ@Base 15 + _D10TypeInfo_b7__ClassZ@Base 15 + _D10TypeInfo_c6__initZ@Base 15 + _D10TypeInfo_c6__vtblZ@Base 15 + _D10TypeInfo_c7__ClassZ@Base 15 + _D10TypeInfo_d6__initZ@Base 15 + _D10TypeInfo_d6__vtblZ@Base 15 + _D10TypeInfo_d7__ClassZ@Base 15 + _D10TypeInfo_e6__initZ@Base 15 + _D10TypeInfo_e6__vtblZ@Base 15 + _D10TypeInfo_e7__ClassZ@Base 15 + _D10TypeInfo_f6__initZ@Base 15 + _D10TypeInfo_f6__vtblZ@Base 15 + _D10TypeInfo_f7__ClassZ@Base 15 + _D10TypeInfo_g6__initZ@Base 15 + _D10TypeInfo_g6__vtblZ@Base 15 + _D10TypeInfo_g7__ClassZ@Base 15 + _D10TypeInfo_h6__initZ@Base 15 + _D10TypeInfo_h6__vtblZ@Base 15 + _D10TypeInfo_h7__ClassZ@Base 15 + _D10TypeInfo_i6__initZ@Base 15 + _D10TypeInfo_i6__vtblZ@Base 15 + _D10TypeInfo_i7__ClassZ@Base 15 + _D10TypeInfo_j6__initZ@Base 15 + _D10TypeInfo_j6__vtblZ@Base 15 + _D10TypeInfo_j7__ClassZ@Base 15 + _D10TypeInfo_k6__initZ@Base 15 + _D10TypeInfo_k6__vtblZ@Base 15 + _D10TypeInfo_k7__ClassZ@Base 15 + _D10TypeInfo_l6__initZ@Base 15 + _D10TypeInfo_l6__vtblZ@Base 15 + _D10TypeInfo_l7__ClassZ@Base 15 + _D10TypeInfo_m6__initZ@Base 15 + _D10TypeInfo_m6__vtblZ@Base 15 + _D10TypeInfo_m7__ClassZ@Base 15 + _D10TypeInfo_n6__initZ@Base 15 + _D10TypeInfo_n6__vtblZ@Base 15 + _D10TypeInfo_n7__ClassZ@Base 15 + _D10TypeInfo_o6__initZ@Base 15 + _D10TypeInfo_o6__vtblZ@Base 15 + _D10TypeInfo_o7__ClassZ@Base 15 + _D10TypeInfo_p6__initZ@Base 15 + _D10TypeInfo_p6__vtblZ@Base 15 + _D10TypeInfo_p7__ClassZ@Base 15 + _D10TypeInfo_q6__initZ@Base 15 + _D10TypeInfo_q6__vtblZ@Base 15 + _D10TypeInfo_q7__ClassZ@Base 15 + _D10TypeInfo_r6__initZ@Base 15 + _D10TypeInfo_r6__vtblZ@Base 15 + _D10TypeInfo_r7__ClassZ@Base 15 + _D10TypeInfo_s6__initZ@Base 15 + _D10TypeInfo_s6__vtblZ@Base 15 + _D10TypeInfo_s7__ClassZ@Base 15 + _D10TypeInfo_t6__initZ@Base 15 + _D10TypeInfo_t6__vtblZ@Base 15 + _D10TypeInfo_t7__ClassZ@Base 15 + _D10TypeInfo_u6__initZ@Base 15 + _D10TypeInfo_u6__vtblZ@Base 15 + _D10TypeInfo_u7__ClassZ@Base 15 + _D10TypeInfo_v6__initZ@Base 15 + _D10TypeInfo_v6__vtblZ@Base 15 + _D10TypeInfo_v7__ClassZ@Base 15 + _D10TypeInfo_w6__initZ@Base 15 + _D10TypeInfo_w6__vtblZ@Base 15 + _D10TypeInfo_w7__ClassZ@Base 15 + _D110TypeInfo_S3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf6__initZ@Base 15 + _D111TypeInfo_S3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6__initZ@Base 15 + _D111TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj6__initZ@Base 15 + _D111TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj6__initZ@Base 15 + _D112TypeInfo_OS3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6__initZ@Base 15 + _D113TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D114TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D114TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D115TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D115TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D115TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D118TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore6__initZ@Base 15 + _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 + _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 + _D119TypeInfo_S3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm6__initZ@Base 15 + _D119TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 + _D119TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 + _D11TypeInfo_Aa6__initZ@Base 15 + _D11TypeInfo_Aa6__vtblZ@Base 15 + _D11TypeInfo_Aa7__ClassZ@Base 15 + _D11TypeInfo_Ab6__initZ@Base 15 + _D11TypeInfo_Ab6__vtblZ@Base 15 + _D11TypeInfo_Ab7__ClassZ@Base 15 + _D11TypeInfo_Ac6__initZ@Base 15 + _D11TypeInfo_Ac6__vtblZ@Base 15 + _D11TypeInfo_Ac7__ClassZ@Base 15 + _D11TypeInfo_Ad6__initZ@Base 15 + _D11TypeInfo_Ad6__vtblZ@Base 15 + _D11TypeInfo_Ad7__ClassZ@Base 15 + _D11TypeInfo_Ae6__initZ@Base 15 + _D11TypeInfo_Ae6__vtblZ@Base 15 + _D11TypeInfo_Ae7__ClassZ@Base 15 + _D11TypeInfo_Af6__initZ@Base 15 + _D11TypeInfo_Af6__vtblZ@Base 15 + _D11TypeInfo_Af7__ClassZ@Base 15 + _D11TypeInfo_Ag6__initZ@Base 15 + _D11TypeInfo_Ag6__vtblZ@Base 15 + _D11TypeInfo_Ag7__ClassZ@Base 15 + _D11TypeInfo_Ah6__initZ@Base 15 + _D11TypeInfo_Ah6__vtblZ@Base 15 + _D11TypeInfo_Ah7__ClassZ@Base 15 + _D11TypeInfo_Ai6__initZ@Base 15 + _D11TypeInfo_Ai6__vtblZ@Base 15 + _D11TypeInfo_Ai7__ClassZ@Base 15 + _D11TypeInfo_Aj6__initZ@Base 15 + _D11TypeInfo_Aj6__vtblZ@Base 15 + _D11TypeInfo_Aj7__ClassZ@Base 15 + _D11TypeInfo_Ak6__initZ@Base 15 + _D11TypeInfo_Ak6__vtblZ@Base 15 + _D11TypeInfo_Ak7__ClassZ@Base 15 + _D11TypeInfo_Al6__initZ@Base 15 + _D11TypeInfo_Al6__vtblZ@Base 15 + _D11TypeInfo_Al7__ClassZ@Base 15 + _D11TypeInfo_Am6__initZ@Base 15 + _D11TypeInfo_Am6__vtblZ@Base 15 + _D11TypeInfo_Am7__ClassZ@Base 15 + _D11TypeInfo_Ao6__initZ@Base 15 + _D11TypeInfo_Ao6__vtblZ@Base 15 + _D11TypeInfo_Ao7__ClassZ@Base 15 + _D11TypeInfo_Ap6__initZ@Base 15 + _D11TypeInfo_Ap6__vtblZ@Base 15 + _D11TypeInfo_Ap7__ClassZ@Base 15 + _D11TypeInfo_Aq6__initZ@Base 15 + _D11TypeInfo_Aq6__vtblZ@Base 15 + _D11TypeInfo_Aq7__ClassZ@Base 15 + _D11TypeInfo_Ar6__initZ@Base 15 + _D11TypeInfo_Ar6__vtblZ@Base 15 + _D11TypeInfo_Ar7__ClassZ@Base 15 + _D11TypeInfo_As6__initZ@Base 15 + _D11TypeInfo_As6__vtblZ@Base 15 + _D11TypeInfo_As7__ClassZ@Base 15 + _D11TypeInfo_At6__initZ@Base 15 + _D11TypeInfo_At6__vtblZ@Base 15 + _D11TypeInfo_At7__ClassZ@Base 15 + _D11TypeInfo_Au6__initZ@Base 15 + _D11TypeInfo_Au6__vtblZ@Base 15 + _D11TypeInfo_Au7__ClassZ@Base 15 + _D11TypeInfo_Av6__initZ@Base 15 + _D11TypeInfo_Av6__vtblZ@Base 15 + _D11TypeInfo_Av7__ClassZ@Base 15 + _D11TypeInfo_Aw6__initZ@Base 15 + _D11TypeInfo_Aw6__vtblZ@Base 15 + _D11TypeInfo_Aw7__ClassZ@Base 15 + _D11TypeInfo_Oa6__initZ@Base 15 + _D11TypeInfo_Ou6__initZ@Base 15 + _D11TypeInfo_Pa6__initZ@Base 15 + _D11TypeInfo_xa6__initZ@Base 15 + _D11TypeInfo_xb6__initZ@Base 15 + _D11TypeInfo_xd6__initZ@Base 15 + _D11TypeInfo_xe6__initZ@Base 15 + _D11TypeInfo_xf6__initZ@Base 15 + _D11TypeInfo_xh6__initZ@Base 15 + _D11TypeInfo_xi6__initZ@Base 15 + _D11TypeInfo_xk6__initZ@Base 15 + _D11TypeInfo_xl6__initZ@Base 15 + _D11TypeInfo_xm6__initZ@Base 15 + _D11TypeInfo_xt6__initZ@Base 15 + _D11TypeInfo_xu6__initZ@Base 15 + _D11TypeInfo_xv6__initZ@Base 15 + _D11TypeInfo_xw6__initZ@Base 15 + _D11TypeInfo_ya6__initZ@Base 15 + _D11TypeInfo_yb6__initZ@Base 15 + _D11TypeInfo_yh6__initZ@Base 15 + _D11TypeInfo_yi6__initZ@Base 15 + _D11TypeInfo_yk6__initZ@Base 15 + _D11TypeInfo_ym6__initZ@Base 15 + _D11TypeInfo_yu6__initZ@Base 15 + _D11TypeInfo_yw6__initZ@Base 15 + _D120TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 + _D120TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 + _D120TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 + _D121TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk6__initZ@Base 15 + _D122TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 + _D122TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 + _D123TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S6__initZ@Base 15 + _D124TypeInfo_S3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu6__initZ@Base 15 + _D125TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S6__initZ@Base 15 + _D126TypeInfo_S3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore6__initZ@Base 15 + _D127TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 + _D127TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 + _D128TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 + _D128TypeInfo_xS3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 + _D129TypeInfo_G2S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 + _D129TypeInfo_G2S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 + _D129TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb6__initZ@Base 15 + _D12TypeInfo_AOa6__initZ@Base 15 + _D12TypeInfo_AOu6__initZ@Base 15 + _D12TypeInfo_Axa6__initZ@Base 15 + _D12TypeInfo_Axa6__vtblZ@Base 15 + _D12TypeInfo_Axa7__ClassZ@Base 15 + _D12TypeInfo_Axf6__initZ@Base 15 + _D12TypeInfo_Axh6__initZ@Base 15 + _D12TypeInfo_Axk6__initZ@Base 15 + _D12TypeInfo_Axm6__initZ@Base 15 + _D12TypeInfo_Axu6__initZ@Base 15 + _D12TypeInfo_Axv6__initZ@Base 15 + _D12TypeInfo_Axw6__initZ@Base 15 + _D12TypeInfo_Aya6__initZ@Base 15 + _D12TypeInfo_Aya6__vtblZ@Base 15 + _D12TypeInfo_Aya7__ClassZ@Base 15 + _D12TypeInfo_Ayh6__initZ@Base 15 + _D12TypeInfo_Ayk6__initZ@Base 15 + _D12TypeInfo_Aym6__initZ@Base 15 + _D12TypeInfo_Ayu6__initZ@Base 15 + _D12TypeInfo_Ayw6__initZ@Base 15 + _D12TypeInfo_FZv6__initZ@Base 15 + _D12TypeInfo_G2m6__initZ@Base 15 + _D12TypeInfo_G3m6__initZ@Base 15 + _D12TypeInfo_G4a6__initZ@Base 15 + _D12TypeInfo_G4m6__initZ@Base 15 + _D12TypeInfo_G8h6__initZ@Base 15 + _D12TypeInfo_Oxk6__initZ@Base 15 + _D12TypeInfo_Pxa6__initZ@Base 15.2 + _D12TypeInfo_Pxd6__initZ@Base 15.2 + _D12TypeInfo_Pxh6__initZ@Base 15 + _D12TypeInfo_Pxk6__initZ@Base 15.2 + _D12TypeInfo_Pxv6__initZ@Base 15 + _D12TypeInfo_xAa6__initZ@Base 15 + _D12TypeInfo_xAf6__initZ@Base 15 + _D12TypeInfo_xAh6__initZ@Base 15 + _D12TypeInfo_xAk6__initZ@Base 15 + _D12TypeInfo_xAm6__initZ@Base 15 + _D12TypeInfo_xAu6__initZ@Base 15 + _D12TypeInfo_xAv6__initZ@Base 15 + _D12TypeInfo_xAw6__initZ@Base 15 + _D12TypeInfo_xPa6__initZ@Base 15.2 + _D12TypeInfo_xPd6__initZ@Base 15.2 + _D12TypeInfo_xPh6__initZ@Base 15 + _D12TypeInfo_xPk6__initZ@Base 15.2 + _D12TypeInfo_xPv6__initZ@Base 15 + _D12TypeInfo_yAa6__initZ@Base 15 + _D130TypeInfo_xG2S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 + _D130TypeInfo_xG2S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 + _D130TypeInfo_xS3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb6__initZ@Base 15 + _D131TypeInfo_S3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 + _D131TypeInfo_S3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 + _D131TypeInfo_S3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd6__initZ@Base 15 + _D131TypeInfo_S3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl6__initZ@Base 15 + _D133TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 + _D133TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 + _D134TypeInfo_xS3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D138TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D138TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl6__initZ@Base 15 + _D139TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D139TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D13TypeInfo_AAya6__initZ@Base 15 + _D13TypeInfo_AxPv6__initZ@Base 15 + _D13TypeInfo_AyAa6__initZ@Base 15 + _D13TypeInfo_DFZv6__initZ@Base 15 + _D13TypeInfo_Enum6__initZ@Base 15 + _D13TypeInfo_Enum6__vtblZ@Base 15 + _D13TypeInfo_Enum7__ClassZ@Base 15 + _D13TypeInfo_G12a6__initZ@Base 15 + _D13TypeInfo_G48a6__initZ@Base 15 + _D13TypeInfo_xAPv6__initZ@Base 15 + _D13TypeInfo_xAya6__initZ@Base 15 + _D13TypeInfo_xAym6__initZ@Base 15 + _D13TypeInfo_xAyu6__initZ@Base 15 + _D13TypeInfo_xAyw6__initZ@Base 15 + _D13TypeInfo_xG2m6__initZ@Base 15 + _D13TypeInfo_xG3m6__initZ@Base 15 + _D13TypeInfo_xG4a6__initZ@Base 15 + _D13TypeInfo_xG4m6__initZ@Base 15 + _D13TypeInfo_xG8h6__initZ@Base 15 + _D140TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__initZ@Base 15 + _D142TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo6__initZ@Base 15.2 + _D144TypeInfo_S3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo6__initZ@Base 15 + _D145TypeInfo_S3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp6__initZ@Base 15 + _D14TypeInfo_Array6__initZ@Base 15 + _D14TypeInfo_Array6__vtblZ@Base 15 + _D14TypeInfo_Array7__ClassZ@Base 15 + _D14TypeInfo_AxAya6__initZ@Base 15 + _D14TypeInfo_Class6__initZ@Base 15 + _D14TypeInfo_Class6__vtblZ@Base 15 + _D14TypeInfo_Class7__ClassZ@Base 15 + _D14TypeInfo_Const6__initZ@Base 15 + _D14TypeInfo_Const6__vtblZ@Base 15 + _D14TypeInfo_Const7__ClassZ@Base 15 + _D14TypeInfo_FPvZv6__initZ@Base 15 + _D14TypeInfo_HAxam6__initZ@Base 15 + _D14TypeInfo_Inout6__initZ@Base 15 + _D14TypeInfo_Inout6__vtblZ@Base 15 + _D14TypeInfo_Inout7__ClassZ@Base 15 + _D14TypeInfo_Tuple6__initZ@Base 15 + _D14TypeInfo_Tuple6__vtblZ@Base 15 + _D14TypeInfo_Tuple7__ClassZ@Base 15 + _D14TypeInfo_UPvZv6__initZ@Base 15.2 + _D14TypeInfo_xAAya6__initZ@Base 15 + _D14TypeInfo_xDFZv6__initZ@Base 15 + _D14TypeInfo_xG12a6__initZ@Base 15 + _D14TypeInfo_xG48a6__initZ@Base 15 + _D150TypeInfo_S3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__initZ@Base 15 + _D152TypeInfo_S3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6__initZ@Base 15 + _D152TypeInfo_S3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__initZ@Base 15 + _D155TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 + _D155TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 + _D155TypeInfo_S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D155TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D155TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 + _D155TypeInfo_S3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result6__initZ@Base 15 + _D156TypeInfo_S3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result6__initZ@Base 15 + _D156TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 + _D156TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 + _D156TypeInfo_xS3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D156TypeInfo_xS3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D156TypeInfo_xS3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_G3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_G3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_G3S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_G3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_G3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd6__initZ@Base 15 + _D157TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd6__initZ@Base 15 + _D157TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__initZ@Base 15 + _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 + _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 + _D158TypeInfo_xG3S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 + _D159TypeInfo_S3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc6__initZ@Base 15 + _D159TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__initZ@Base 15 + _D15TypeInfo_HAyaQd6__initZ@Base 15 + _D15TypeInfo_PFPvZv6__initZ@Base 15 + _D15TypeInfo_PUPvZv6__initZ@Base 15.2 + _D15TypeInfo_Shared6__initZ@Base 15 + _D15TypeInfo_Shared6__vtblZ@Base 15 + _D15TypeInfo_Shared7__ClassZ@Base 15 + _D15TypeInfo_Struct6__initZ@Base 15 + _D15TypeInfo_Struct6__vtblZ@Base 15 + _D15TypeInfo_Struct7__ClassZ@Base 15 + _D15TypeInfo_Vector6__initZ@Base 15 + _D15TypeInfo_Vector6__vtblZ@Base 15 + _D15TypeInfo_Vector7__ClassZ@Base 15 + _D160TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__initZ@Base 15 + _D161TypeInfo_S3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__initZ@Base 15 + _D163TypeInfo_S3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh6__initZ@Base 15 + _D164TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D164TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D164TypeInfo_S3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 + _D164TypeInfo_S3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 + _D165TypeInfo_S3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc5State6__initZ@Base 15 + _D167TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn6__initZ@Base 15 + _D167TypeInfo_S3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl6__initZ@Base 15 + _D16TypeInfo_HAyaAQe6__initZ@Base 15 + _D16TypeInfo_HPxvAya6__initZ@Base 15 + _D16TypeInfo_Pointer6__initZ@Base 15 + _D16TypeInfo_Pointer6__vtblZ@Base 15 + _D16TypeInfo_Pointer7__ClassZ@Base 15 + _D16TypeInfo_xPFPvZv6__initZ@Base 15 + _D16TypeInfo_xPUPvZv6__initZ@Base 15.2 + _D175TypeInfo_S3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__initZ@Base 15 + _D177TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D177TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D177TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D177TypeInfo_S3std9algorithm7sorting__T11TimSortImplSQBn3uni__T13InversionListTSQCoQBb8GcPolicyZQBh8sanitizeMFNfZ18__lambda_L2889_C15TSQErQDe__TQDdTQCrZQDl__T9IntervalsTAkZQoZ5Slice6__initZ@Base 15 + _D178TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__initZ@Base 15 + _D179TypeInfo_S3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt6__initZ@Base 15 + _D17TypeInfo_Delegate6__initZ@Base 15 + _D17TypeInfo_Delegate6__vtblZ@Base 15 + _D17TypeInfo_Delegate7__ClassZ@Base 15 + _D17TypeInfo_Function6__initZ@Base 15 + _D17TypeInfo_Function6__vtblZ@Base 15 + _D17TypeInfo_Function7__ClassZ@Base 15 + _D183TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 + _D184TypeInfo_S3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__initZ@Base 15 + _D184TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 + _D185TypeInfo_G4S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 + _D185TypeInfo_S3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__initZ@Base 15 + _D185TypeInfo_S3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__initZ@Base 15 + _D185TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf6__initZ@Base 15 + _D185TypeInfo_xS3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__initZ@Base 15 + _D186TypeInfo_xG4S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 + _D188TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D18TypeInfo_FNbMxPvZm6__initZ@Base 15 + _D18TypeInfo_HAyaAxAya6__initZ@Base 15.2 + _D18TypeInfo_Interface6__initZ@Base 15 + _D18TypeInfo_Interface6__vtblZ@Base 15 + _D18TypeInfo_Interface7__ClassZ@Base 15 + _D18TypeInfo_Invariant6__initZ@Base 15 + _D18TypeInfo_Invariant6__vtblZ@Base 15 + _D18TypeInfo_Invariant7__ClassZ@Base 15 + _D18TypeInfo_xC6Object6__initZ@Base 15 + _D190TypeInfo_S3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D191TypeInfo_xS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D192TypeInfo_AxS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D192TypeInfo_PxS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D192TypeInfo_S3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk6__initZ@Base 15 + _D192TypeInfo_S3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D192TypeInfo_xAS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D192TypeInfo_xPS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D19TypeInfo_DFNbMxPvZm6__initZ@Base 15 + _D202TypeInfo_S3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt6__initZ@Base 15 + _D205TypeInfo_S3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj6__initZ@Base 15 + _D208TypeInfo_S3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt5State6__initZ@Base 15 + _D20TypeInfo_S2rt3aaA2AA6__initZ@Base 15 + _D20TypeInfo_S6object2AA6__initZ@Base 15 + _D20TypeInfo_StaticArray6__initZ@Base 15 + _D20TypeInfo_StaticArray6__vtblZ@Base 15 + _D20TypeInfo_StaticArray7__ClassZ@Base 15 + _D20TypeInfo_xDFNbMxPvZm6__initZ@Base 15 + _D219TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx6__initZ@Base 15 + _D22TypeInfo_FNbC6ObjectZv6__initZ@Base 15 + _D22TypeInfo_S2rt3aaA4Impl6__initZ@Base 15 + _D230TypeInfo_S3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6__initZ@Base 15 + _D23TypeInfo_DFNbC6ObjectZv6__initZ@Base 15 + _D23TypeInfo_E3std3uni4Mode6__initZ@Base 15 + _D23TypeInfo_S2rt3aaA5Range6__initZ@Base 15 + _D249TypeInfo_S3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result6__initZ@Base 15 + _D24TypeInfo_E3std6system2OS6__initZ@Base 15 + _D24TypeInfo_S2rt3aaA6Bucket6__initZ@Base 15 + _D24TypeInfo_S2rt5tlsgc4Data6__initZ@Base 15 + _D24TypeInfo_S3std4uuid4UUID6__initZ@Base 15 + _D24TypeInfo_xDFNbC6ObjectZv6__initZ@Base 15 + _D250TypeInfo_S3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6__initZ@Base 15 + _D251TypeInfo_S3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__initZ@Base 15 + _D25TypeInfo_AssociativeArray6__initZ@Base 15 + _D25TypeInfo_AssociativeArray6__vtblZ@Base 15 + _D25TypeInfo_AssociativeArray7__ClassZ@Base 15 + _D25TypeInfo_AxDFNbC6ObjectZv6__initZ@Base 15 + _D25TypeInfo_E3std6system3ISA6__initZ@Base 15 + _D25TypeInfo_S3etc1c4curl3_N26__initZ@Base 15 + _D25TypeInfo_S3std5stdio4File6__initZ@Base 15 + _D25TypeInfo_S4core6memory2GC6__initZ@Base 15 + _D25TypeInfo_S6object7AARange6__initZ@Base 15 + _D25TypeInfo_xADFNbC6ObjectZv6__initZ@Base 15 + _D25TypeInfo_xS2rt3aaA6Bucket6__initZ@Base 15 + _D261TypeInfo_S4core8internal5array7casting__T11__ArrayCastTvTS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeZQHqFNaNiNeNkMAvZ5Array6__initZ@Base 15 + _D26TypeInfo_AxS2rt3aaA6Bucket6__initZ@Base 15 + _D26TypeInfo_S2rt6dmain25CArgs6__initZ@Base 15 + _D26TypeInfo_S3etc1c4curl4_N286__initZ@Base 15 + _D26TypeInfo_S3etc1c4curl4_N316__initZ@Base 15 + _D26TypeInfo_S3std3uni7unicode6__initZ@Base 15 + _D26TypeInfo_S3std5stdio5lines6__initZ@Base 15 + _D26TypeInfo_S3std8typecons2No6__initZ@Base 15 + _D26TypeInfo_xAS2rt3aaA6Bucket6__initZ@Base 15 + _D26TypeInfo_xS3std5stdio4File6__initZ@Base 15 + _D27TypeInfo_E3etc1c4curl5CurlM6__initZ@Base 15 + _D27TypeInfo_E3std6digest5Order6__initZ@Base 15 + _D27TypeInfo_E3std8encoding3BOM6__initZ@Base 15 + _D27TypeInfo_S3std3net4curl3FTP6__initZ@Base 15 + _D27TypeInfo_S3std3uni8GcPolicy6__initZ@Base 15 + _D27TypeInfo_S3std3uni8Grapheme6__initZ@Base 15 + _D27TypeInfo_S3std7process4Pipe6__initZ@Base 15 + _D27TypeInfo_S3std7sumtype4This6__initZ@Base 15 + _D27TypeInfo_S3std8typecons3Yes6__initZ@Base 15 + _D27TypeInfo_S4core6int1284Cent6__initZ@Base 15 + _D27TypeInfo_S6object9Interface6__initZ@Base 15 + _D28TypeInfo_C3std6digest6Digest6__initZ@Base 15 + _D28TypeInfo_E2rt3aaA4Impl5Flags6__initZ@Base 15 + _D28TypeInfo_E3std3csv9Malformed6__initZ@Base 15 + _D28TypeInfo_E3std4file8SpanMode6__initZ@Base 15 + _D28TypeInfo_E3std4json8JSONType6__initZ@Base 15 + _D28TypeInfo_E3std6getopt6config6__initZ@Base 15 + _D28TypeInfo_E3std6system6Endian6__initZ@Base 15 + _D28TypeInfo_S3std3net4curl4Curl6__initZ@Base 15 + _D28TypeInfo_S3std3net4curl4HTTP6__initZ@Base 15 + _D28TypeInfo_S3std3net4curl4SMTP6__initZ@Base 15 + _D28TypeInfo_S3std4file8DirEntry6__initZ@Base 15 + _D28TypeInfo_S3std6bigint6BigInt6__initZ@Base 15 + _D28TypeInfo_S3std6digest2md3MD56__initZ@Base 15 + _D28TypeInfo_S3std6getopt6Option6__initZ@Base 15 + _D28TypeInfo_S3std6int1286Int1286__initZ@Base 15 + _D28TypeInfo_S3std6socket6Linger6__initZ@Base 15 + _D29TypeInfo_AS3std4file8DirEntry6__initZ@Base 15 + _D29TypeInfo_E3etc1c4curl7CurlFtp6__initZ@Base 15 + _D29TypeInfo_E3etc1c4curl7CurlMsg6__initZ@Base 15 + _D29TypeInfo_E3etc1c4curl7CurlVer6__initZ@Base 15 + _D29TypeInfo_E3std5stdio8LockType6__initZ@Base 15 + _D29TypeInfo_S2rt9profilegc5Entry6__initZ@Base 15 + _D29TypeInfo_S3etc1c4curl7CURLMsg6__initZ@Base 15 + _D29TypeInfo_S3std4json9JSONValue6__initZ@Base 15 + _D29TypeInfo_S3std5range8NullSink6__initZ@Base 15 + _D29TypeInfo_S3std6socket7TimeVal6__initZ@Base 15 + _D29TypeInfo_S3std7process6Config6__initZ@Base 15 + _D29TypeInfo_S4core4time8Duration6__initZ@Base 15 + _D29TypeInfo_S4core5bitop7Split646__initZ@Base 15 + _D29TypeInfo_S4core7runtime5CArgs6__initZ@Base 15 + _D29TypeInfo_S6object10ModuleInfo6__initZ@Base 15 + _D29TypeInfo_xE2rt3aaA4Impl5Flags6__initZ@Base 15 + _D29TypeInfo_xE3std4file8SpanMode6__initZ@Base 15 + _D29TypeInfo_xS3std3net4curl4Curl6__initZ@Base 15 + _D29TypeInfo_xS3std4file8DirEntry6__initZ@Base 15 + _D29TypeInfo_xS3std6getopt6Option6__initZ@Base 15 + _D2rt10invariant_11__moduleRefZ@Base 15.2 + _D2rt10invariant_12__ModuleInfoZ@Base 15.2 + _D2rt10invariant_12_d_invariantFC6ObjectZv@Base 15.2 + _D2rt19sections_elf_shared18pinLoadedLibrariesFNbNiZPv@Base 15.2 + _D2rt19sections_elf_shared20unpinLoadedLibrariesFNbNiPvZv@Base 15.2 + _D2rt19sections_elf_shared22cleanupLoadedLibrariesFNbNiZv@Base 15.2 + _D2rt19sections_elf_shared22inheritLoadedLibrariesFNbNiPvZv@Base 15.2 + _D2rt19sections_elf_shared9sizeOfTLSFNbNiZm@Base 15.2 + _D2rt3aaA10allocEntryFMxPSQyQx4ImplMxPvZPv@Base 15 + _D2rt3aaA11__moduleRefZ@Base 15 + _D2rt3aaA12__ModuleInfoZ@Base 15 + _D2rt3aaA12allocBucketsFNaNbNemZASQBgQBg6Bucket@Base 15 + _D2rt3aaA2AA5emptyMxFNaNbNdNiNfZb@Base 15 + _D2rt3aaA2AA6__initZ@Base 15 + _D2rt3aaA3mixFNaNbNiNfmZm@Base 15 + _D2rt3aaA4Impl11__xopEqualsMxFKxSQBfQBfQBeZb@Base 15 + _D2rt3aaA4Impl14findSlotInsertMNgFNaNbNimZPNgSQBsQBs6Bucket@Base 15 + _D2rt3aaA4Impl14findSlotLookupMNgFmMxPvMxC8TypeInfoZPNgSQCcQCc6Bucket@Base 15 + _D2rt3aaA4Impl3dimMxFNaNbNdNiNfZm@Base 15 + _D2rt3aaA4Impl4growMFNaNbMxC8TypeInfoZv@Base 15 + _D2rt3aaA4Impl4maskMxFNaNbNdNiZm@Base 15 + _D2rt3aaA4Impl5clearMFNaNbNeZv@Base 15 + _D2rt3aaA4Impl6__ctorMFNbNcMxC25TypeInfo_AssociativeArraymZSQCgQCgQCf@Base 15 + _D2rt3aaA4Impl6__initZ@Base 15 + _D2rt3aaA4Impl6lengthMxFNaNbNdNiNfZm@Base 15 + _D2rt3aaA4Impl6resizeMFNaNbmZv@Base 15 + _D2rt3aaA4Impl6shrinkMFNaNbMxC8TypeInfoZv@Base 15 + _D2rt3aaA4Impl9__xtoHashFNbNeKxSQBeQBeQBdZm@Base 15 + _D2rt3aaA5Range6__initZ@Base 15 + _D2rt3aaA6Bucket5emptyMxFNaNbNdNiZb@Base 15 + _D2rt3aaA6Bucket6__initZ@Base 15 + _D2rt3aaA6Bucket6filledMxFNaNbNdNiNfZb@Base 15 + _D2rt3aaA6Bucket7deletedMxFNaNbNdNiZb@Base 15 + _D2rt3aaA6talignFNaNbNiNfmmZm@Base 15 + _D2rt3aaA7hasDtorFNaNbxC8TypeInfoZb@Base 15 + _D2rt3aaA8calcHashFNbMxPvMxPSQBbQBb4ImplZm@Base 15 + _D2rt3aaA8nextpow2FNaNbNixmZm@Base 15 + _D2rt3aaA9getRTInfoFNaNbxC8TypeInfoZPyv@Base 15 + _D2rt3adi11__moduleRefZ@Base 15 + _D2rt3adi12__ModuleInfoZ@Base 15 + _D2rt3deh11__moduleRefZ@Base 15 + _D2rt3deh12__ModuleInfoZ@Base 15 + _D2rt4util7utility10safeAssertFNbNiNfbMAyaMQemZv@Base 15 + _D2rt4util7utility11__moduleRefZ@Base 15 + _D2rt4util7utility12__ModuleInfoZ@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTdZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTdZQByZm@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTeZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTeZQByZm@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTfZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTfZQByZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_c8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_j8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_n11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n4swapMxFNaNbNiNfPvQcZv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n5tsizeMxFNaNbNdNiNfZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_n6equalsMxFNaNbNiNfIPvIQdZb@Base 15 + _D2rt4util8typeinfo10TypeInfo_n6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n7compareMxFNaNbNiNfIPvIQdZi@Base 15 + _D2rt4util8typeinfo10TypeInfo_n7getHashMxFNaNbNiNfMxPvZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_n8toStringMxFNaNbNiNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_o8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_p8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_q8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_r8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_v5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo10TypeInfo_v7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_v8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ac8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Aj8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ao8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ap8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Aq8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ar8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Av4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo11TypeInfo_Av8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo11__moduleRefZ@Base 15 + _D2rt4util8typeinfo12TypeInfo_Aya8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo12__ModuleInfoZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNeZ1cyG1EQEeQEeQCrQCm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNeZ1cyG1EQEfQEfQCsQCn@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNeZ1cyG1EQEgQEgQCtQCo@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNeZ1cyG1a@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNeZ1cyG1d@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNeZ1cyG1e@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNeZ1cyG1f@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNeZ1cyG1u@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNeZ1cyG1w@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8toStringMxFNbNfZAya@Base 15 + _D2rt5cast_11__moduleRefZ@Base 15 + _D2rt5cast_12__ModuleInfoZ@Base 15 + _D2rt5cast_18areClassInfosEqualFNaNbNiNfMxC14TypeInfo_ClassMxQtZb@Base 15 + _D2rt5minfo11ModuleGroup11__xopEqualsMxFKxSQBpQBpQBmZb@Base 15 + _D2rt5minfo11ModuleGroup11runTlsCtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup11runTlsDtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup12genCyclePathMFNbmmAAiZAm@Base 15 + _D2rt5minfo11ModuleGroup4freeMFZv@Base 15 + _D2rt5minfo11ModuleGroup6__ctorMFNbNcNiAyPS6object10ModuleInfoZSQCkQCkQCh@Base 15 + _D2rt5minfo11ModuleGroup6__initZ@Base 15 + _D2rt5minfo11ModuleGroup7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 + _D2rt5minfo11ModuleGroup8runCtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup8runDtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup9__xtoHashFNbNeKxSQBoQBoQBlZm@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZv@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFZv@Base 15 + _D2rt5minfo11__moduleRefZ@Base 15 + _D2rt5minfo12__ModuleInfoZ@Base 15 + _D2rt5minfo17moduleinfos_applyFMDFyPS6object10ModuleInfoZiZi@Base 15 + _D2rt5tlsgc11__moduleRefZ@Base 15 + _D2rt5tlsgc12__ModuleInfoZ@Base 15 + _D2rt5tlsgc4Data6__initZ@Base 15 + _D2rt5tlsgc4initFNbNiZPv@Base 15 + _D2rt5tlsgc4scanFNbPvMDFNbQhQjZvZv@Base 15 + _D2rt5tlsgc7destroyFNbNiPvZv@Base 15 + _D2rt6aApply11__moduleRefZ@Base 15 + _D2rt6aApply12__ModuleInfoZ@Base 15 + _D2rt6config11__moduleRefZ@Base 15 + _D2rt6config12__ModuleInfoZ@Base 15 + _D2rt6config13rt_linkOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6config15rt_configOptionFNbNiAyaMDFNbNiQkZQnbZQr@Base 15 + _D2rt6config16rt_cmdlineOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6config16rt_envvarsOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6dmain210_initCountOm@Base 15 + _D2rt6dmain211__moduleRefZ@Base 15 + _D2rt6dmain212__ModuleInfoZ@Base 15 + _D2rt6dmain212traceHandlerPFPvZC6object9Throwable9TraceInfo@Base 15 + _D2rt6dmain214UnitTestResult6__initZ@Base 15 + _D2rt6dmain215formatThrowableFC6object9ThrowableMDFNbIAaZvZv@Base 15 + _D2rt6dmain216traceDeallocatorPFNbC6object9Throwable9TraceInfoZv@Base 15 + _D2rt6dmain220isRuntimeInitializedFNbNiZb@Base 15 + _D2rt6dmain221parseExceptionOptionsFNbNiZb@Base 15 + _D2rt6dmain25CArgs6__initZ@Base 15 + _D2rt6dmain26_cArgsSQsQr5CArgs@Base 15 + _D2rt6dmain27_d_argsAAya@Base 15 + _D2rt6memory11__moduleRefZ@Base 15 + _D2rt6memory12__ModuleInfoZ@Base 15 + _D2rt6memory16initStaticDataGCFZv@Base 15 + _D2rt7aApplyR11__moduleRefZ@Base 15 + _D2rt7aApplyR12__ModuleInfoZ@Base 15 + _D2rt7ehalloc11__moduleRefZ@Base 15 + _D2rt7ehalloc12__ModuleInfoZ@Base 15 + _D2rt8arraycat11__moduleRefZ@Base 15 + _D2rt8arraycat12__ModuleInfoZ@Base 15 + _D2rt8lifetime11__moduleRefZ@Base 15 + _D2rt8lifetime11__typeAttrsFNaNbMxC8TypeInfoPvZk@Base 15 + _D2rt8lifetime11hasPostblitFNaNbIC8TypeInfoZb@Base 15 + _D2rt8lifetime11newCapacityFmmZ9multTableyG64m@Base 15 + _D2rt8lifetime11newCapacityFmmZm@Base 15 + _D2rt8lifetime12__ModuleInfoZ@Base 15 + _D2rt8lifetime12__doPostblitFPvmxC8TypeInfoZv@Base 15 + _D2rt8lifetime14collectHandlerPFC6ObjectZb@Base 15 + _D2rt8lifetime14finalize_arrayFPvmxC15TypeInfo_StructZv@Base 15 + _D2rt8lifetime15finalize_structFNbPvC15TypeInfo_StructZv@Base 15 + _D2rt8lifetime19_d_arraysetlengthiTUxC8TypeInfomPAvZ12doInitializeFNaNbNiPvQcxAvZv@Base 15 + _D2rt8lifetime9unqualifyFNaNbNiNkMNgC8TypeInfoZNgQn@Base 15 + _D2rt8monitor_10getMonitorFNaNbNiC6ObjectZPOSQBrQBr7Monitor@Base 15 + _D2rt8monitor_10setMonitorFNaNbNiC6ObjectPOSQBqQBq7MonitorZv@Base 15 + _D2rt8monitor_11__moduleRefZ@Base 15 + _D2rt8monitor_11unlockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_12__ModuleInfoZ@Base 15 + _D2rt8monitor_12destroyMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_12disposeEventFNbPSQBfQBf7MonitorC6ObjectZv@Base 15 + _D2rt8monitor_13deleteMonitorFNbNiPSQBiQBi7MonitorZv@Base 15 + _D2rt8monitor_13ensureMonitorFNbC6ObjectZPOSQBqQBq7Monitor@Base 15 + _D2rt8monitor_4gmtxS4core3sys5posixQk5types15pthread_mutex_t@Base 15 + _D2rt8monitor_5gattrS4core3sys5posixQk5types19pthread_mutexattr_t@Base 15 + _D2rt8monitor_7Monitor11__xopEqualsMxFKxSQBnQBnQBhZb@Base 15 + _D2rt8monitor_7Monitor6__initZ@Base 15 + _D2rt8monitor_7Monitor9__xtoHashFNbNeKxSQBmQBmQBgZm@Base 15 + _D2rt8monitor_7monitorFNaNbNcNdNiNkMC6ObjectZOPSQBuQBu7Monitor@Base 15 + _D2rt8monitor_9initMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8sections11__moduleRefZ@Base 15 + _D2rt8sections12__ModuleInfoZ@Base 15 + _D2rt8sections20scanDataSegPreciselyFNbNiZ3errC6object5Error@Base 15 + _D2rt8sections20scanDataSegPreciselyFNbNiZb@Base 15 + _D2rt9critical_11__moduleRefZ@Base 15 + _D2rt9critical_11ensureMutexFNbPOSQBgQBg18D_CRITICAL_SECTIONZv@Base 15 + _D2rt9critical_12__ModuleInfoZ@Base 15 + _D2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D2rt9critical_3gcsOSQtQs18D_CRITICAL_SECTION@Base 15 + _D2rt9critical_4headOPSQvQu18D_CRITICAL_SECTION@Base 15 + _D2rt9profilegc10accumulateFNbNiAyakQeQgmZv@Base 15 + _D2rt9profilegc11__moduleRefZ@Base 15 + _D2rt9profilegc11logfilenameAya@Base 15 + _D2rt9profilegc12__ModuleInfoZ@Base 15 + _D2rt9profilegc15globalNewCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQDcQDc5EntryZQBb@Base 15 + _D2rt9profilegc18_staticDtor_L93_C1FZ11__critsec20OPv@Base 15.2 + _D2rt9profilegc18_staticDtor_L93_C1FZv@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result11__xopEqualsMxFKxSQCqQCqQCjFZQBlZb@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9__xtoHashFNbNeKxSQCpQCpQCiFZQBkZm@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9qsort_cmpUNbNiMxPvMxQeZi@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZv@Base 15.2 + _D2rt9profilegc5Entry6__initZ@Base 15 + _D2rt9profilegc6bufferAa@Base 15 + _D2rt9profilegc9newCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQCvQCv5EntryZQBb@Base 15 + _D30TypeInfo_AC3std6socket7Address6__initZ@Base 15 + _D30TypeInfo_AxS3std4file8DirEntry6__initZ@Base 15 + _D30TypeInfo_AxS3std6getopt6Option6__initZ@Base 15 + _D30TypeInfo_E3etc1c4curl8CurlAuth6__initZ@Base 15 + _D30TypeInfo_E3etc1c4curl8CurlForm6__initZ@Base 15 + _D30TypeInfo_E3etc1c4curl8CurlInfo6__initZ@Base 15 + _D30TypeInfo_E3etc1c4curl8CurlPoll6__initZ@Base 15 + _D30TypeInfo_E3etc1c4curl8CurlSeek6__initZ@Base 15 + _D30TypeInfo_E3std6socket8socket_t6__initZ@Base 15 + _D30TypeInfo_E3std6traits8Variadic6__initZ@Base 15 + _D30TypeInfo_E3std8compiler6Vendor6__initZ@Base 15 + _D30TypeInfo_E4core4time9ClockType6__initZ@Base 15 + _D30TypeInfo_S2rt8monitor_7Monitor6__initZ@Base 15 + _D30TypeInfo_S3etc1c4zlib8z_stream6__initZ@Base 15 + _D30TypeInfo_S3std5stdio4File4Impl6__initZ@Base 15 + _D30TypeInfo_S3std6format8NoOpSink6__initZ@Base 15 + _D30TypeInfo_S4core5bitop8BitRange6__initZ@Base 15 + _D30TypeInfo_xAS3std4file8DirEntry6__initZ@Base 15 + _D30TypeInfo_xAS3std6getopt6Option6__initZ@Base 15 + _D30TypeInfo_xS2rt9profilegc5Entry6__initZ@Base 15 + _D30TypeInfo_xS3std4json9JSONValue6__initZ@Base 15 + _D30TypeInfo_yS6object10ModuleInfo6__initZ@Base 15 + _D315TypeInfo_S3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 + _D315TypeInfo_S3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 + _D316TypeInfo_S3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe6__initZ@Base 15 + _D31TypeInfo_C3gcc3deh11CxxTypeInfo6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlError6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlIoCmd6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlPause6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlProto6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlProxy6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlRedir6__initZ@Base 15 + _D31TypeInfo_E3std3uni11GraphemeRet6__initZ@Base 15 + _D31TypeInfo_E3std7process8Redirect6__initZ@Base 15 + _D31TypeInfo_NgS3std4json9JSONValue6__initZ@Base 15.2 + _D31TypeInfo_PyS6object10ModuleInfo6__initZ@Base 15 + _D31TypeInfo_S3etc1c4zlib9gz_header6__initZ@Base 15 + _D31TypeInfo_S3gcc8sections3elf3DSO6__initZ@Base 15 + _D31TypeInfo_S3std10checkedint4Warn6__initZ@Base 15 + _D31TypeInfo_S3std11concurrency3Tid6__initZ@Base 15 + _D31TypeInfo_S3std3net4curl7CurlAPI6__initZ@Base 15 + _D31TypeInfo_S3std8typecons7Ternary6__initZ@Base 15 + _D31TypeInfo_S4core5cpuid9CacheInfo6__initZ@Base 15 + _D31TypeInfo_S4core6memory2GC5Stats6__initZ@Base 15 + _D31TypeInfo_S4core6memory8BlkInfo_6__initZ@Base 15 + _D31TypeInfo_S4core7runtime7Runtime6__initZ@Base 15 + _D31TypeInfo_S4core8demangle6Buffer6__initZ@Base 15 + _D31TypeInfo_xS3std5stdio4File4Impl6__initZ@Base 15 + _D31TypeInfo_yPS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_AS3std11concurrency3Tid6__initZ@Base 15 + _D32TypeInfo_AyPS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_C6object6Object7Monitor6__initZ@Base 15 + _D32TypeInfo_E3std3uni12TransformRes6__initZ@Base 15 + _D32TypeInfo_E3std4json11JSONOptions6__initZ@Base 15 + _D32TypeInfo_E3std4uuid4UUID7Variant6__initZ@Base 15 + _D32TypeInfo_E3std4uuid4UUID7Version6__initZ@Base 15 + _D32TypeInfo_E3std5ascii10LetterCase6__initZ@Base 15 + _D32TypeInfo_PxS3std5stdio4File4Impl6__initZ@Base 15 + _D32TypeInfo_S2rt5minfo11ModuleGroup6__initZ@Base 15 + _D32TypeInfo_S3std10checkedint5Abort6__initZ@Base 15 + _D32TypeInfo_S3std10checkedint5Throw6__initZ@Base 15 + _D32TypeInfo_S3std3net4curl3FTP4Impl6__initZ@Base 15 + _D32TypeInfo_S3std3uni7unicode5block6__initZ@Base 15 + _D32TypeInfo_S3std3uni__T5StackTkZQj6__initZ@Base 15 + _D32TypeInfo_S3std5stdio10ChunksImpl6__initZ@Base 15 + _D32TypeInfo_S3std5stdio10LockedFile6__initZ@Base 15 + _D32TypeInfo_S3std8bitmanip8BitArray6__initZ@Base 15 + _D32TypeInfo_S4core2gc6config6Config6__initZ@Base 15 + _D32TypeInfo_S4core4stdc4fenv6fenv_t6__initZ@Base 15 + _D32TypeInfo_S4core4sync5event5Event6__initZ@Base 15 + _D32TypeInfo_S4core8demangle7NoHooks6__initZ@Base 15 + _D32TypeInfo_S6object13__va_list_tag6__initZ@Base 15 + _D32TypeInfo_xE3std7process8Redirect6__initZ@Base 15 + _D32TypeInfo_xPS3std5stdio4File4Impl6__initZ@Base 15 + _D32TypeInfo_xPyS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_xS3gcc8sections3elf3DSO6__initZ@Base 15 + _D32TypeInfo_xS3std11concurrency3Tid6__initZ@Base 15 + _D32TypeInfo_xS4core8demangle6Buffer6__initZ@Base 15 + _D32TypeInfo_yS4core5cpuid9CacheInfo6__initZ@Base 15 + _D33TypeInfo_AxPyS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlFtpSSL6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlGlobal6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlKHStat6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlKHType6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlOption6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlUseSSL6__initZ@Base 15 + _D33TypeInfo_E3std3uni13GraphemeState6__initZ@Base 15 + _D33TypeInfo_E3std4zlib12HeaderFormat6__initZ@Base 15 + _D33TypeInfo_E3std5ascii11ControlChar6__initZ@Base 15 + _D33TypeInfo_E3std6mmfile6MmFile4Mode6__initZ@Base 15 + _D33TypeInfo_E3std6socket10SocketType6__initZ@Base 15 + _D33TypeInfo_E3std8encoding9AsciiChar6__initZ@Base 15 + _D33TypeInfo_E4core6memory2GC7BlkAttr6__initZ@Base 15 + _D33TypeInfo_E4core8demangle8TypeCtor6__initZ@Base 15 + _D33TypeInfo_E4core9attribute7mustuse6__initZ@Base 15 + _D33TypeInfo_HAyaS3std4json9JSONValue6__initZ@Base 15 + _D33TypeInfo_HS3std11concurrency3Tidb6__initZ@Base 15.2 + _D33TypeInfo_OC4core4sync5mutex5Mutex6__initZ@Base 15 + _D33TypeInfo_PxS3gcc8sections3elf3DSO6__initZ@Base 15 + _D33TypeInfo_S3etc1c4curl10curl_forms6__initZ@Base 15 + _D33TypeInfo_S3etc1c4curl10curl_khkey6__initZ@Base 15 + _D33TypeInfo_S3etc1c4curl10curl_slist6__initZ@Base 15 + _D33TypeInfo_S3etc1c7sqlite38fts5_api6__initZ@Base 15.2 + _D33TypeInfo_S3std3net4curl4HTTP4Impl6__initZ@Base 15 + _D33TypeInfo_S3std3net4curl4SMTP4Impl6__initZ@Base 15 + _D33TypeInfo_S3std3uni13ReallocPolicy6__initZ@Base 15 + _D33TypeInfo_S3std3uni7unicode6script6__initZ@Base 15 + _D33TypeInfo_S3std8datetime4date4Date6__initZ@Base 15 + _D33TypeInfo_S4core2gc8registry5Entry6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Lib6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Rel6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Sym6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Lib6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Rel6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Sym6__initZ@Base 15 + _D33TypeInfo_S4core4stdc5stdio6fpos_t6__initZ@Base 15 + _D33TypeInfo_S4core4stdc6locale5lconv6__initZ@Base 15 + _D33TypeInfo_S4core4stdc6stdlib5div_t6__initZ@Base 15 + _D33TypeInfo_S4core8demangle8BufSlice6__initZ@Base 15 + _D33TypeInfo_S6object14OffsetTypeInfo6__initZ@Base 15 + _D33TypeInfo_xAPyS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_xAyPS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_xC6object6Object7Monitor6__initZ@Base 15 + _D33TypeInfo_xPS3gcc8sections3elf3DSO6__initZ@Base 15 + _D33TypeInfo_xS2rt5minfo11ModuleGroup6__initZ@Base 15 + _D33TypeInfo_xS3std3net4curl3FTP4Impl6__initZ@Base 15 + _D33TypeInfo_xS3std3uni__T5StackTkZQj6__initZ@Base 15 + _D33TypeInfo_xS4core4sync5event5Event6__initZ@Base 15 + _D33TypeInfo_xS4core8demangle7NoHooks6__initZ@Base 15 + _D34TypeInfo_AC3std3zip13ArchiveMember6__initZ@Base 15 + _D34TypeInfo_AE3std8encoding9AsciiChar6__initZ@Base 15 + _D34TypeInfo_C4core2gc11gcinterface2GC6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlCSelect6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlFormAdd6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlFtpAuth6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlIoError6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlKHMatch6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlMOption6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlRtspReq6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlSeekPos6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlShError6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlSshAuth6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlTlsAuth6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlVersion6__initZ@Base 15 + _D34TypeInfo_E3gcc6config11ThreadModel6__initZ@Base 15 + _D34TypeInfo_E3std4path13CaseSensitive6__initZ@Base 15 + _D34TypeInfo_E3std5range12SearchPolicy6__initZ@Base 15 + _D34TypeInfo_E3std6socket11SocketFlags6__initZ@Base 15 + _D34TypeInfo_E3std8datetime4date5Month6__initZ@Base 15 + _D34TypeInfo_S3std10checkedint7WithNaN6__initZ@Base 15 + _D34TypeInfo_S3std3uni14MatcherConcept6__initZ@Base 15 + _D34TypeInfo_S3std6socket11AddressInfo6__initZ@Base 15 + _D34TypeInfo_S4core3sys5posix6direntQh6__initZ@Base 15 + _D34TypeInfo_S4core4stdc6stdlib6ldiv_t6__initZ@Base 15 + _D34TypeInfo_S4core4time12TickDuration6__initZ@Base 15 + _D34TypeInfo_S4core5cpuid11CpuFeatures6__initZ@Base 15 + _D34TypeInfo_xC3std3zip13ArchiveMember6__initZ@Base 15 + _D34TypeInfo_xE3std6socket10SocketType6__initZ@Base 15 + _D34TypeInfo_xS3etc1c4curl10curl_slist6__initZ@Base 15 + _D34TypeInfo_xS3std3net4curl4HTTP4Impl6__initZ@Base 15 + _D35TypeInfo_AC4core6thread5fiber5Fiber6__initZ@Base 15 + _D35TypeInfo_AS3std6socket11AddressInfo6__initZ@Base 15 + _D35TypeInfo_AxC3std3zip13ArchiveMember6__initZ@Base 15 + _D35TypeInfo_C3std8typecons10Structural6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlFileType6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlLockData6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlReadFunc6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlShOption6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlSockType6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlTimeCond6__initZ@Base 15 + _D35TypeInfo_E3std11concurrency7MsgType6__initZ@Base 15 + _D35TypeInfo_E3std3net4curl4HTTP6Method6__initZ@Base 15 + _D35TypeInfo_E3std5regex8internal2ir2IR6__initZ@Base 15 + _D35TypeInfo_E3std5stdio13StdFileHandle6__initZ@Base 15 + _D35TypeInfo_E3std6logger4core8LogLevel6__initZ@Base 15 + _D35TypeInfo_E3std6socket12ProtocolType6__initZ@Base 15 + _D35TypeInfo_E3std6socket12SocketOption6__initZ@Base 15 + _D35TypeInfo_E3std7process6Config5Flags6__initZ@Base 15 + _D35TypeInfo_E3std8encoding10Latin1Char6__initZ@Base 15 + _D35TypeInfo_E3std8encoding10Latin2Char6__initZ@Base 15 + _D35TypeInfo_E4core6atomic11MemoryOrder6__initZ@Base 15 + _D35TypeInfo_HAyaS3std11concurrency3Tid6__initZ@Base 15 + _D35TypeInfo_PxS3etc1c4curl10curl_slist6__initZ@Base 15 + _D35TypeInfo_S3etc1c4odbc8sqltypes4GUID6__initZ@Base 15.2 + _D35TypeInfo_S3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D35TypeInfo_S3std10checkedint8Saturate6__initZ@Base 15 + _D35TypeInfo_S3std11concurrency7Message6__initZ@Base 15 + _D35TypeInfo_S3std3net4curl7CurlAPI3API6__initZ@Base 15 + _D35TypeInfo_S3std4json9JSONValue5Store6__initZ@Base 15 + _D35TypeInfo_S3std5range__T6RepeatTaZQk6__initZ@Base 15 + _D35TypeInfo_S3std6getopt12GetoptResult6__initZ@Base 15 + _D35TypeInfo_S3std6logger4core8MsgRange6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Move6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Phdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Rela6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Shdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Move6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Phdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Rela6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Shdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys5linux7ifaddrsQi6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix3aio5aiocb6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix3grp5group6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix7termiosQi6__initZ@Base 15 + _D35TypeInfo_S4core4stdc5stdio8_IO_FILE6__initZ@Base 15 + _D35TypeInfo_S4core4stdc6stdlib7lldiv_t6__initZ@Base 15 + _D35TypeInfo_S4core8internal5newaa4Impl6__initZ@Base 15 + _D35TypeInfo_S4core9attribute9gnuAbiTag6__initZ@Base 15 + _D35TypeInfo_xAC3std3zip13ArchiveMember6__initZ@Base 15 + _D35TypeInfo_xPS3etc1c4curl10curl_slist6__initZ@Base 15 + _D35TypeInfo_xS3std6socket11AddressInfo6__initZ@Base 15 + _D36TypeInfo_AE3std8encoding10Latin1Char6__initZ@Base 15 + _D36TypeInfo_AE3std8encoding10Latin2Char6__initZ@Base 15 + _D36TypeInfo_AxS3std6socket11AddressInfo6__initZ@Base 15 + _D36TypeInfo_E3etc1c4curl13CurlFtpMethod6__initZ@Base 15 + _D36TypeInfo_E3etc1c4curl13CurlIpResolve6__initZ@Base 15 + _D36TypeInfo_E3std3net7isemail9EmailPart6__initZ@Base 15 + _D36TypeInfo_E3std5range14StoppingPolicy6__initZ@Base 15 + _D36TypeInfo_E3std6socket13AddressFamily6__initZ@Base 15 + _D36TypeInfo_E4core4stdc6config8__c_long6__initZ@Base 15 + _D36TypeInfo_FZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D36TypeInfo_HS3std11concurrency3TidAAya6__initZ@Base 15 + _D36TypeInfo_S2rt6dmain214UnitTestResult6__initZ@Base 15 + _D36TypeInfo_S3etc1c4curl13curl_certinfo6__initZ@Base 15 + _D36TypeInfo_S3etc1c4curl13curl_fileinfo6__initZ@Base 15 + _D36TypeInfo_S3etc1c4curl13curl_httppost6__initZ@Base 15 + _D36TypeInfo_S3etc1c4curl13curl_sockaddr6__initZ@Base 15 + _D36TypeInfo_S3gcc9backtrace10SymbolInfo6__initZ@Base 15 + _D36TypeInfo_S3std4file15DirIteratorImpl6__initZ@Base 15 + _D36TypeInfo_S3std5range__T6ChunksTAhZQl6__initZ@Base 15 + _D36TypeInfo_S3std5stdio14ReadlnAppender6__initZ@Base 15 + _D36TypeInfo_S3std6getopt13configuration6__initZ@Base 15 + _D36TypeInfo_S3std7process12ProcessPipes6__initZ@Base 15 + _D36TypeInfo_S4core2gc11gcinterface4Root6__initZ@Base 15 + _D36TypeInfo_S4core3sys3elf11Elf32_gptab6__initZ@Base 15 + _D36TypeInfo_S4core3sys3elf11Elf_Options6__initZ@Base 15 + _D36TypeInfo_S4core3sys5linux2fs7fsxattr6__initZ@Base 15 + _D36TypeInfo_S4core3sys5posix3pwd6passwd6__initZ@Base 15 + _D36TypeInfo_S4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D36TypeInfo_xAS3std6socket11AddressInfo6__initZ@Base 15 + _D36TypeInfo_xE3std11concurrency7MsgType6__initZ@Base 15 + _D36TypeInfo_xE3std3net4curl4HTTP6Method6__initZ@Base 15 + _D36TypeInfo_xE3std6logger4core8LogLevel6__initZ@Base 15 + _D36TypeInfo_xE3std6socket12ProtocolType6__initZ@Base 15 + _D36TypeInfo_xS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D36TypeInfo_xS3std11concurrency7Message6__initZ@Base 15 + _D375TypeInfo_S3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__initZ@Base 15 + _D37TypeInfo_C3std11concurrency9Scheduler6__initZ@Base 15 + _D37TypeInfo_C6object9Throwable9TraceInfo6__initZ@Base 15 + _D37TypeInfo_E3etc1c4curl14CurlLockAccess6__initZ@Base 15 + _D37TypeInfo_E3etc1c4curl14CurlSslVersion6__initZ@Base 15 + _D37TypeInfo_E3std3uni17NormalizationForm6__initZ@Base 15 + _D37TypeInfo_E3std3zip17CompressionMethod6__initZ@Base 15 + _D37TypeInfo_E3std4json16JSONFloatLiteral6__initZ@Base 15 + _D37TypeInfo_E3std4math9algebraic7PowType6__initZ@Base 15 + _D37TypeInfo_E3std6socket14SocketShutdown6__initZ@Base 15 + _D37TypeInfo_E3std7process13InternalError6__initZ@Base 15 + _D37TypeInfo_E3std8internal4test3uda4Attr6__initZ@Base 15 + _D37TypeInfo_E3std8typecons12TypeModifier6__initZ@Base 15 + _D37TypeInfo_E4core4stdc6config9__c_ulong6__initZ@Base 15 + _D37TypeInfo_E4core9attribute10standalone6__initZ@Base 15 + _D37TypeInfo_HAyaC3std3zip13ArchiveMember6__initZ@Base 15 + _D37TypeInfo_PFZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D37TypeInfo_PxS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D37TypeInfo_S3etc1c7sqlite311sqlite3_vfs6__initZ@Base 15.2 + _D37TypeInfo_S3gcc8sections3elf9ThreadDSO6__initZ@Base 15 + _D37TypeInfo_S3gcc8sections3elf9tls_index6__initZ@Base 15 + _D37TypeInfo_S3std3net4curl12AutoProtocol6__initZ@Base 15 + _D37TypeInfo_S3std3uni17CodepointInterval6__initZ@Base 15 + _D37TypeInfo_S3std8datetime4date8DateTime6__initZ@Base 15 + _D37TypeInfo_S3std9container5dlist6DRange6__initZ@Base 15 + _D37TypeInfo_S4core2gc11gcinterface5Range6__initZ@Base 15 + _D37TypeInfo_S4core3sys3elf12Elf32_Verdef6__initZ@Base 15 + _D37TypeInfo_S4core3sys3elf12Elf64_Verdef6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix3aio7aiocb646__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix4poll6pollfd6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix5fcntl5flock6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posixQk3uio5iovec6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posixQk7utsnameQi6__initZ@Base 15 + _D37TypeInfo_S4core4stdc6wchar_9mbstate_t6__initZ@Base 15 + _D37TypeInfo_S4core6stdcpp4new_9nothrow_t6__initZ@Base 15 + _D37TypeInfo_S4core8internal5newaa6Bucket6__initZ@Base 15 + _D37TypeInfo_xE3std6socket13AddressFamily6__initZ@Base 15 + _D37TypeInfo_xPS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D37TypeInfo_xS3std4file15DirIteratorImpl6__initZ@Base 15 + _D37TypeInfo_xS4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D38TypeInfo_AS3std3uni17CodepointInterval6__initZ@Base 15 + _D38TypeInfo_E3etc1c4curl15CurlClosePolicy6__initZ@Base 15 + _D38TypeInfo_E3etc1c4curl15CurlFnMAtchFunc6__initZ@Base 15 + _D38TypeInfo_E3etc1c4curl15CurlHttpVersion6__initZ@Base 15 + _D38TypeInfo_E3etc1c4curl15CurlNetRcOption6__initZ@Base 15 + _D38TypeInfo_E3std3net7isemail10AsciiToken6__initZ@Base 15 + _D38TypeInfo_E3std4math6traits10RealFormat6__initZ@Base 15 + _D38TypeInfo_E3std5stdio4File11Orientation6__initZ@Base 15 + _D38TypeInfo_E3std8datetime4date9DayOfWeek6__initZ@Base 15 + _D38TypeInfo_PxS4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D38TypeInfo_S3etc1c7sqlite312sqlite3_file6__initZ@Base 15.2 + _D38TypeInfo_S3etc1c7sqlite312sqlite3_vtab6__initZ@Base 15.2 + _D38TypeInfo_S3gcc3deh18CxaExceptionHeader6__initZ@Base 15 + _D38TypeInfo_S3std3zip10ZipArchive7Segment6__initZ@Base 15 + _D38TypeInfo_S3std4math8hardware9IeeeFlags6__initZ@Base 15 + _D38TypeInfo_S3std5stdio4File11ByChunkImpl6__initZ@Base 15 + _D38TypeInfo_S3std6digest6ripemd9RIPEMD1606__initZ@Base 15 + _D38TypeInfo_S3std7complex__T7ComplexTeZQl6__initZ@Base 15 + _D38TypeInfo_S3std7numeric__T6StrideTAfZQl6__initZ@Base 15 + _D38TypeInfo_S3std8datetime4date9TimeOfDay6__initZ@Base 15 + _D38TypeInfo_S4core2gc6config11PrettyBytes6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Verneed6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Verneed6__initZ@Base 15 + _D38TypeInfo_S4core3sys5linux4link7r_debug6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix4stdc4time2tm6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix5netdb6netent6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix6locale5lconv6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 + _D38TypeInfo_S4core8internal5newaa7AAShell6__initZ@Base 15 + _D38TypeInfo_S4core8internal7convert5Float6__initZ@Base 15 + _D38TypeInfo_xPFZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D38TypeInfo_xPS4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D38TypeInfo_xS3std3uni17CodepointInterval6__initZ@Base 15 + _D38TypeInfo_xS4core2gc11gcinterface5Range6__initZ@Base 15 + _D38TypeInfo_xS4core8internal5newaa6Bucket6__initZ@Base 15 + _D39TypeInfo_AC4core6thread8osthread6Thread6__initZ@Base 15 + _D39TypeInfo_AS3std3zip10ZipArchive7Segment6__initZ@Base 15 + _D39TypeInfo_AxS3std3uni17CodepointInterval6__initZ@Base 15 + _D39TypeInfo_AxS4core8internal5newaa6Bucket6__initZ@Base 15 + _D39TypeInfo_E3etc1c4curl16CurlCallbackInfo6__initZ@Base 15 + _D39TypeInfo_E3etc1c4curl16CurlChunkBgnFunc6__initZ@Base 15 + _D39TypeInfo_E3etc1c4curl16CurlChunkEndFunc6__initZ@Base 15 + _D39TypeInfo_E3std11concurrency10OnCrowding6__initZ@Base 15 + _D39TypeInfo_E3std11parallelism10TaskStatus6__initZ@Base 15 + _D39TypeInfo_E3std5range17TransverseOptions6__initZ@Base 15 + _D39TypeInfo_E3std6socket16AddressInfoFlags6__initZ@Base 15 + _D39TypeInfo_S3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D39TypeInfo_S3gcc9backtrace13SymbolOrError6__initZ@Base 15 + _D39TypeInfo_S3std11concurrency10ThreadInfo6__initZ@Base 15 + _D39TypeInfo_S3std3net7isemail11EmailStatus6__initZ@Base 15 + _D39TypeInfo_S3std5array__T8AppenderTAxaZQo6__initZ@Base 15 + _D39TypeInfo_S3std5array__T8AppenderTAyaZQo6__initZ@Base 15 + _D39TypeInfo_S3std5array__T8AppenderTAyuZQo6__initZ@Base 15 + _D39TypeInfo_S3std5array__T8AppenderTAywZQo6__initZ@Base 15 + _D39TypeInfo_S3std5array__T8AppenderTyAaZQo6__initZ@Base 15 + _D39TypeInfo_S3std5stdio17LockingTextReader6__initZ@Base 15 + _D39TypeInfo_S3std7variant15FakeComplexReal6__initZ@Base 15 + _D39TypeInfo_S3std8bitmanip__T7BitsSetTmZQl6__initZ@Base 15 + _D39TypeInfo_S3std8datetime7systime7SysTime6__initZ@Base 15 + _D39TypeInfo_S3std8typecons__T5TupleTbTiZQl6__initZ@Base 15 + _D39TypeInfo_S3std8typecons__T5TupleTbTkZQl6__initZ@Base 15 + _D39TypeInfo_S3std8typecons__T5TupleTkTmZQl6__initZ@Base 15 + _D39TypeInfo_S3std8typecons__T5TupleTmTmZQl6__initZ@Base 15 + _D39TypeInfo_S3std8typecons__T5TupleTuTaZQl6__initZ@Base 15 + _D39TypeInfo_S3std9container5dlist8BaseNode6__initZ@Base 15 + _D39TypeInfo_S4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux4link8link_map6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix4time8timespec6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5netdb7hostent6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5netdb7servent6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5utime7utimbuf6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix6signal6sigval6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posixQk3msg7msginfo6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posixQk4stat6stat_t6__initZ@Base 15 + _D39TypeInfo_S4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 + _D39TypeInfo_S4core6memory2GC12ProfileStats6__initZ@Base 15 + _D39TypeInfo_S4core6thread7context8Callable6__initZ@Base 15 + _D39TypeInfo_S4core7runtime14UnitTestResult6__initZ@Base 15 + _D39TypeInfo_S4core8internal2gc4bits6GCBits6__initZ@Base 15 + _D39TypeInfo_xAS3std3uni17CodepointInterval6__initZ@Base 15 + _D39TypeInfo_xAS4core8internal5newaa6Bucket6__initZ@Base 15 + _D3etc1c4curl10CurlGlobal6__initZ@Base 15 + _D3etc1c4curl10CurlOption6__initZ@Base 15 + _D3etc1c4curl10curl_forms6__initZ@Base 15 + _D3etc1c4curl10curl_khkey6__initZ@Base 15 + _D3etc1c4curl10curl_slist6__initZ@Base 15 + _D3etc1c4curl11CurlCSelect6__initZ@Base 15 + _D3etc1c4curl11CurlMOption6__initZ@Base 15 + _D3etc1c4curl11CurlSshAuth6__initZ@Base 15 + _D3etc1c4curl11CurlVersion6__initZ@Base 15 + _D3etc1c4curl11__moduleRefZ@Base 15 + _D3etc1c4curl12CurlReadFunc6__initZ@Base 15 + _D3etc1c4curl12__ModuleInfoZ@Base 15 + _D3etc1c4curl13curl_certinfo6__initZ@Base 15 + _D3etc1c4curl13curl_fileinfo6__initZ@Base 15 + _D3etc1c4curl13curl_httppost6__initZ@Base 15 + _D3etc1c4curl13curl_sockaddr6__initZ@Base 15 + _D3etc1c4curl18CurlFInfoFlagKnown6__initZ@Base 15 + _D3etc1c4curl3_N26__initZ@Base 15 + _D3etc1c4curl4_N286__initZ@Base 15 + _D3etc1c4curl4_N316__initZ@Base 15 + _D3etc1c4curl5CurlM6__initZ@Base 15 + _D3etc1c4curl7CURLMsg6__initZ@Base 15 + _D3etc1c4curl9CurlPause6__initZ@Base 15 + _D3etc1c4curl9CurlProto6__initZ@Base 15 + _D3etc1c4odbc11__moduleRefZ@Base 15.2 + _D3etc1c4odbc12__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc3sql11__moduleRefZ@Base 15.2 + _D3etc1c4odbc3sql12__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc6odbc3210tagSQLGUID6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3211SQLINTERVAL6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3211__moduleRefZ@Base 15.2 + _D3etc1c4odbc6odbc3212__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc6odbc3214tagDATE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3214tagTIME_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3217tagSQL_DAY_SECOND6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3217tagSQL_YEAR_MONTH6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3219tagTIMESTAMP_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3221tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3228tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3233tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6410tagSQLGUID6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6411SQLINTERVAL6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6411__moduleRefZ@Base 15.2 + _D3etc1c4odbc6odbc6412__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc6odbc6414tagDATE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6414tagTIME_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6417tagSQL_DAY_SECOND6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6417tagSQL_YEAR_MONTH6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6419tagTIMESTAMP_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6421tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6428tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6433tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6sqlext11__moduleRefZ@Base 15.2 + _D3etc1c4odbc6sqlext12__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc6sqlext15SQL_SPEC_STRINGxAa@Base 15.2 + _D3etc1c4odbc6sqlext17SQL_ODBC_KEYWORDSxAa@Base 15.2 + _D3etc1c4odbc8sqltypes11DATE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes11SQLINTERVAL6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes11TIME_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes11__moduleRefZ@Base 15.2 + _D3etc1c4odbc8sqltypes12__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc8sqltypes16TIMESTAMP_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes18SQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT7_intval6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes21SQL_DAY_SECOND_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes21SQL_YEAR_MONTH_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes4GUID6__initZ@Base 15.2 + _D3etc1c4odbc8sqlucode11__moduleRefZ@Base 15.2 + _D3etc1c4odbc8sqlucode12__ModuleInfoZ@Base 15.2 + _D3etc1c4zlib11ZLIB_VERNUMyi@Base 15 + _D3etc1c4zlib11__moduleRefZ@Base 15 + _D3etc1c4zlib12ZLIB_VERSIONyAa@Base 15 + _D3etc1c4zlib12__ModuleInfoZ@Base 15 + _D3etc1c4zlib6Z_NULLyPv@Base 15 + _D3etc1c4zlib8z_stream6__initZ@Base 15 + _D3etc1c4zlib9gz_header6__initZ@Base 15 + _D3etc1c7sqlite311__moduleRefZ@Base 15.2 + _D3etc1c7sqlite311sqlite3_vfs6__initZ@Base 15.2 + _D3etc1c7sqlite312__ModuleInfoZ@Base 15.2 + _D3etc1c7sqlite312sqlite3_file6__initZ@Base 15.2 + _D3etc1c7sqlite312sqlite3_vtab6__initZ@Base 15.2 + _D3etc1c7sqlite314Fts5PhraseIter6__initZ@Base 15.2 + _D3etc1c7sqlite314fts5_tokenizer6__initZ@Base 15.2 + _D3etc1c7sqlite314sqlite3_module6__initZ@Base 15.2 + _D3etc1c7sqlite316Fts5ExtensionApi6__initZ@Base 15.2 + _D3etc1c7sqlite316sqlite3_snapshot6__initZ@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info11__xopEqualsMxFKxSQCbQCaQCbQBwZb@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info6__initZ@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info9__xtoHashFNbNeKxSQCaQBzQCaQBvZm@Base 15.2 + _D3etc1c7sqlite318sqlite3_io_methods6__initZ@Base 15.2 + _D3etc1c7sqlite319sqlite3_mem_methods6__initZ@Base 15.2 + _D3etc1c7sqlite319sqlite3_pcache_page6__initZ@Base 15.2 + _D3etc1c7sqlite319sqlite3_vtab_cursor6__initZ@Base 15.2 + _D3etc1c7sqlite321sqlite3_mutex_methods6__initZ@Base 15.2 + _D3etc1c7sqlite322sqlite3_pcache_methods6__initZ@Base 15.2 + _D3etc1c7sqlite322sqlite3_rtree_geometry6__initZ@Base 15.2 + _D3etc1c7sqlite323sqlite3_pcache_methods26__initZ@Base 15.2 + _D3etc1c7sqlite324sqlite3_rtree_query_info11__xopEqualsMxFKxSQChQCgQChQCcZb@Base 15.2 + _D3etc1c7sqlite324sqlite3_rtree_query_info6__initZ@Base 15.2 + _D3etc1c7sqlite324sqlite3_rtree_query_info9__xtoHashFNbNeKxSQCgQCfQCgQCbZm@Base 15.2 + _D3etc1c7sqlite38fts5_api6__initZ@Base 15.2 + _D3etc8valgrindQj11__moduleRefZ@Base 15 + _D3etc8valgrindQj12__ModuleInfoZ@Base 15 + _D3gcc10attributes11__moduleRefZ@Base 15 + _D3gcc10attributes12__ModuleInfoZ@Base 15 + _D3gcc12libbacktrace11__moduleRefZ@Base 15 + _D3gcc12libbacktrace12__ModuleInfoZ@Base 15 + _D3gcc12libbacktrace15backtrace_state6__initZ@Base 15 + _D3gcc3deh11CxxTypeInfo11__InterfaceZ@Base 15 + _D3gcc3deh11__moduleRefZ@Base 15 + _D3gcc3deh12__ModuleInfoZ@Base 15 + _D3gcc3deh12getClassInfoFNiPSQBb6unwind7generic17_Unwind_ExceptionPxhZC14TypeInfo_Class@Base 15 + _D3gcc3deh15ExceptionHeader11__xopEqualsMxFKxSQBsQBrQBqZb@Base 15 + _D3gcc3deh15ExceptionHeader17toExceptionHeaderFNiPSQBx6unwind7generic17_Unwind_ExceptionZPSQDlQDkQDj@Base 15 + _D3gcc3deh15ExceptionHeader3popFNiZPSQBjQBiQBh@Base 15 + _D3gcc3deh15ExceptionHeader4freeFNiPSQBjQBiQBhZv@Base 15 + _D3gcc3deh15ExceptionHeader4pushMFNiZv@Base 15 + _D3gcc3deh15ExceptionHeader4saveFNiPSQBj6unwind7generic17_Unwind_ExceptionmiPxhmZv@Base 15 + _D3gcc3deh15ExceptionHeader5stackPSQBhQBgQBf@Base 15 + _D3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D3gcc3deh15ExceptionHeader6createFNiC6object9ThrowableZPSQCeQCdQCc@Base 15 + _D3gcc3deh15ExceptionHeader7restoreFNiPSQBm6unwind7generic17_Unwind_ExceptionJiJPxhJmJmZv@Base 15 + _D3gcc3deh15ExceptionHeader9__xtoHashFNbNeKxSQBrQBqQBpZm@Base 15 + _D3gcc3deh15ExceptionHeader9ehstorageSQBkQBjQBi@Base 15 + _D3gcc3deh17__gdc_personalityFimPSQBg6unwind7generic17_Unwind_ExceptionPSQCtQBnQBj15_Unwind_ContextZk@Base 15 + _D3gcc3deh17actionTableLookupFiPSQBf6unwind7generic17_Unwind_ExceptionPxhQdmmQhhJbJbZi@Base 15 + _D3gcc3deh18CONTINUE_UNWINDINGFPSQBf6unwind7generic17_Unwind_ExceptionPSQCsQBnQBj15_Unwind_ContextZk@Base 15 + _D3gcc3deh18CxaExceptionHeader14getAdjustedPtrFPSQBv6unwind7generic17_Unwind_ExceptionCQDhQDg11CxxTypeInfoZPv@Base 15 + _D3gcc3deh18CxaExceptionHeader17toExceptionHeaderFNiPSQCa6unwind7generic17_Unwind_ExceptionZPSQDoQDnQDm@Base 15 + _D3gcc3deh18CxaExceptionHeader4saveFNiPSQBm6unwind7generic17_Unwind_ExceptionPvZv@Base 15 + _D3gcc3deh18CxaExceptionHeader6__initZ@Base 15 + _D3gcc3deh19isGdcExceptionClassFNimZb@Base 15 + _D3gcc3deh19isGxxExceptionClassFNimZb@Base 15 + _D3gcc3deh20isDependentExceptionFNimZb@Base 15 + _D3gcc3deh8_d_throwUC6object9ThrowableZ17exception_cleanupUNikPSQCk6unwind7generic17_Unwind_ExceptionZv@Base 15 + _D3gcc3deh8scanLSDAFPxhmiPSQz6unwind7generic17_Unwind_ExceptionPSQClQBnQBj15_Unwind_ContextmJmJiZk@Base 15 + _D3gcc3deh9terminateFNiAyakZ11terminatingb@Base 15 + _D3gcc3deh9terminateFNiAyakZv@Base 15 + _D3gcc4simd11__moduleRefZ@Base 15 + _D3gcc4simd12__ModuleInfoZ@Base 15 + _D3gcc6config11__moduleRefZ@Base 15 + _D3gcc6config12__ModuleInfoZ@Base 15 + _D3gcc6emutls11__moduleRefZ@Base 15 + _D3gcc6emutls12__ModuleInfoZ@Base 15 + _D3gcc6unwind10arm_common11__moduleRefZ@Base 15 + _D3gcc6unwind10arm_common12__ModuleInfoZ@Base 15 + _D3gcc6unwind11__moduleRefZ@Base 15 + _D3gcc6unwind12__ModuleInfoZ@Base 15 + _D3gcc6unwind2pe11__moduleRefZ@Base 15 + _D3gcc6unwind2pe12__ModuleInfoZ@Base 15 + _D3gcc6unwind2pe12read_sleb128FNiKPxhZl@Base 15 + _D3gcc6unwind2pe12read_uleb128FNiKPxhZm@Base 15 + _D3gcc6unwind2pe18read_encoded_valueFNiPSQBnQBm7generic15_Unwind_ContexthKPxhZm@Base 15 + _D3gcc6unwind2pe21base_of_encoded_valueFNihPSQBrQBq7generic15_Unwind_ContextZm@Base 15 + _D3gcc6unwind2pe21size_of_encoded_valueFNihZk@Base 15 + _D3gcc6unwind2pe28read_encoded_value_with_baseFNihmKPxhZm@Base 15 + _D3gcc6unwind3arm11__moduleRefZ@Base 15 + _D3gcc6unwind3arm12__ModuleInfoZ@Base 15 + _D3gcc6unwind3c6x11__moduleRefZ@Base 15 + _D3gcc6unwind3c6x12__ModuleInfoZ@Base 15 + _D3gcc6unwind7generic11__moduleRefZ@Base 15 + _D3gcc6unwind7generic12__ModuleInfoZ@Base 15 + _D3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D3gcc7gthread11__moduleRefZ@Base 15 + _D3gcc7gthread12__ModuleInfoZ@Base 15 + _D3gcc7gthread18__gthread_active_pFNbNiZi@Base 15 + _D3gcc8builtins11__moduleRefZ@Base 15 + _D3gcc8builtins12__ModuleInfoZ@Base 15 + _D3gcc8builtins13__va_list_tag6__initZ@Base 15 + _D3gcc8sections11__moduleRefZ@Base 15 + _D3gcc8sections12__ModuleInfoZ@Base 15 + _D3gcc8sections3elf10_rtLoadingb@Base 15 + _D3gcc8sections3elf11__moduleRefZ@Base 15 + _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZ1xS4core8internal9container5array__T5ArrayTSQDgQDfQCz9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZS4core8internal9container5array__T5ArrayTSQDeQDdQCx9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf11getTLSRangeFNbNimmZAv@Base 15 + _D3gcc8sections3elf12__ModuleInfoZ@Base 15 + _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZ1xS4core8internal9container7hashtab__T7HashTabTPvTPSQDpQDoQDi3DSOZQBc@Base 15 + _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZS4core8internal9container7hashtab__T7HashTabTPvTPSQDnQDmQDg3DSOZQBc@Base 15 + _D3gcc8sections3elf12decThreadRefFPSQBiQBhQBb3DSObZv@Base 15 + _D3gcc8sections3elf12dsoForHandleFNbNiPvZPSQBpQBoQBi3DSO@Base 15 + _D3gcc8sections3elf12finiSectionsFNbNiZv@Base 15 + _D3gcc8sections3elf12incThreadRefFPSQBiQBhQBb3DSObZv@Base 15 + _D3gcc8sections3elf12initSectionsFNbNiZv@Base 15 + _D3gcc8sections3elf12scanSegmentsFNbNiKxS4core3sys5linux4link12dl_phdr_infoPSQCxQCwQCq3DSOZv@Base 15 + _D3gcc8sections3elf13findThreadDSOFNbNiPSQBnQBmQBg3DSOZPSQCdQCcQBw9ThreadDSO@Base 15 + _D3gcc8sections3elf13finiTLSRangesFNbNiPS4core8internal9container5array__T5ArrayTSQDcQDbQCv9ThreadDSOZQBcZv@Base 15 + _D3gcc8sections3elf13handleForAddrFNbNiPvZQd@Base 15 + _D3gcc8sections3elf13handleForNameFNbNixPaZPv@Base 15 + _D3gcc8sections3elf13initTLSRangesFNbNiZPS4core8internal9container5array__T5ArrayTSQDdQDcQCw9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf13runFinalizersFPSQBjQBiQBc3DSOZv@Base 15 + _D3gcc8sections3elf13scanTLSRangesFNbPS4core8internal9container5array__T5ArrayTSQDaQCzQCt9ThreadDSOZQBcMDFNbPvQcZvZv@Base 15 + _D3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 + _D3gcc8sections3elf15getDependenciesFNbNiKxS4core3sys5linux4link12dl_phdr_infoKSQBk8internal9container5array__T5ArrayTPSQEoQEnQEh3DSOZQxZv@Base 15 + _D3gcc8sections3elf15setDSOForHandleFNbNiPSQBpQBoQBi3DSOPvZv@Base 15 + _D3gcc8sections3elf16linkMapForHandleFNbNiPvZPS4core3sys5linux4link8link_map@Base 15 + _D3gcc8sections3elf16registerGCRangesFNbNiPSQBqQBpQBj3DSOZv@Base 15 + _D3gcc8sections3elf17_handleToDSOMutexS4core3sys5posixQk5types15pthread_mutex_t@Base 15 + _D3gcc8sections3elf17unsetDSOForHandleFNbNiPSQBrQBqQBk3DSOPvZv@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ8callbackUNbNiQBzmPvZi@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZb@Base 15 + _D3gcc8sections3elf18findSegmentForAddrFNbNiKxS4core3sys5linux4link12dl_phdr_infoIPvPSQBnQBlQCz10Elf64_PhdrZb@Base 15 + _D3gcc8sections3elf18unregisterGCRangesFNbNiPSQBsQBrQBl3DSOZv@Base 15 + _D3gcc8sections3elf20runModuleDestructorsFPSQBqQBpQBj3DSObZv@Base 15 + _D3gcc8sections3elf21runModuleConstructorsFPSQBrQBqQBk3DSObZv@Base 15 + _D3gcc8sections3elf3DSO11__fieldDtorMFNbNiZv@Base 15 + _D3gcc8sections3elf3DSO11__invariantMxFZv@Base 15 + _D3gcc8sections3elf3DSO11__xopEqualsMxFKxSQBoQBnQBhQBgZb@Base 15 + _D3gcc8sections3elf3DSO11moduleGroupMNgFNbNcNdNiNjZNgS2rt5minfo11ModuleGroup@Base 15 + _D3gcc8sections3elf3DSO12__invariant0MxFZv@Base 15 + _D3gcc8sections3elf3DSO14opApplyReverseFMDFKSQBrQBqQBkQBjZiZi@Base 15 + _D3gcc8sections3elf3DSO6__initZ@Base 15 + _D3gcc8sections3elf3DSO7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 + _D3gcc8sections3elf3DSO7opApplyFMDFKSQBjQBiQBcQBbZiZi@Base 15 + _D3gcc8sections3elf3DSO8gcRangesMNgFNbNdNiZANgAv@Base 15 + _D3gcc8sections3elf3DSO8opAssignMFNbNcNiNjSQBpQBoQBiQBhZQo@Base 15 + _D3gcc8sections3elf3DSO8tlsRangeMxFNbNiZAv@Base 15 + _D3gcc8sections3elf3DSO9__xtoHashFNbNeKxSQBnQBmQBgQBfZm@Base 15 + _D3gcc8sections3elf7freeDSOFNbNiPSQBgQBfQz3DSOZv@Base 15 + _D3gcc8sections3elf9ThreadDSO11__xopEqualsMxFKxSQBuQBtQBnQBmZb@Base 15 + _D3gcc8sections3elf9ThreadDSO14updateTLSRangeMFNbNiZv@Base 15 + _D3gcc8sections3elf9ThreadDSO6__initZ@Base 15 + _D3gcc8sections3elf9ThreadDSO9__xtoHashFNbNeKxSQBtQBsQBmQBlZm@Base 15 + _D3gcc8sections3elf9finiLocksFNbNiZv@Base 15 + _D3gcc8sections3elf9initLocksFNbNiZv@Base 15 + _D3gcc8sections3elf9tls_index6__initZ@Base 15 + _D3gcc8sections3elf__T7toRangeTyPS6object10ModuleInfoZQBgFNaNbNiPyQBiQfZAyQBq@Base 15 + _D3gcc8sections5macho11__moduleRefZ@Base 15 + _D3gcc8sections5macho12__ModuleInfoZ@Base 15 + _D3gcc8sections6common10safeAssertFNbNiNfbMAyaMQemZv@Base 15 + _D3gcc8sections6common11__moduleRefZ@Base 15 + _D3gcc8sections6common12__ModuleInfoZ@Base 15 + _D3gcc8sections6pecoff11__moduleRefZ@Base 15 + _D3gcc8sections6pecoff12__ModuleInfoZ@Base 15 + _D3gcc9attribute11__moduleRefZ@Base 15 + _D3gcc9attribute12__ModuleInfoZ@Base 15 + _D3gcc9backtrace10SymbolInfo6__initZ@Base 15 + _D3gcc9backtrace10formatLineFxSQBdQBc10SymbolInfoNkKG1536aZAa@Base 15 + _D3gcc9backtrace11__moduleRefZ@Base 15 + _D3gcc9backtrace12LibBacktrace11initializedb@Base 15 + _D3gcc9backtrace12LibBacktrace16initLibBacktraceFNiZv@Base 15 + _D3gcc9backtrace12LibBacktrace5statePSQBk12libbacktrace15backtrace_state@Base 15 + _D3gcc9backtrace12LibBacktrace6__ctorMFNiiZCQBqQBpQBi@Base 15 + _D3gcc9backtrace12LibBacktrace6__initZ@Base 15 + _D3gcc9backtrace12LibBacktrace6__vtblZ@Base 15 + _D3gcc9backtrace12LibBacktrace7__ClassZ@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKSQBuQBt13SymbolOrErrorZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 + _D3gcc9backtrace12__ModuleInfoZ@Base 15 + _D3gcc9backtrace13SymbolOrError6__initZ@Base 15 + _D3gcc9backtrace18SymbolCallbackInfo5resetMFZv@Base 15 + _D3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 + _D3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 + _D3std10checkedint11__moduleRefZ@Base 15 + _D3std10checkedint12__ModuleInfoZ@Base 15 + _D3std10checkedint13ProperCompare6__initZ@Base 15 + _D3std10checkedint13ProperCompare__T9hookOpCmpTmTmZQpFNaNbNiNfmmZi@Base 15 + _D3std10checkedint4Warn13trustedStderrFNbNcNdNiNeZSQBx5stdio4File@Base 15 + _D3std10checkedint4Warn6__initZ@Base 15 + _D3std10checkedint4Warn__T10onOverflowVAyaa1_2bTmTxlZQBbFNfmxlZm@Base 15 + _D3std10checkedint4Warn__T10onOverflowVAyaa1_2bTmTxmZQBbFNfmxmZm@Base 15 + _D3std10checkedint4Warn__T10onOverflowVAyaa1_2dTxmTmZQBbFNfxmmZm@Base 15 + _D3std10checkedint4Warn__T12hookOpEqualsTxmTxmZQvFNfxmxmZb@Base 15 + _D3std10checkedint4Warn__T9hookOpCmpTmTxmZQqFNfmxmZi@Base 15 + _D3std10checkedint5Abort6__initZ@Base 15 + _D3std10checkedint5Abort__T10onOverflowVAyaa1_2bTmTxlZQBbFNfmxlZm@Base 15 + _D3std10checkedint5Abort__T10onOverflowVAyaa1_2bTmTxmZQBbFNfmxmZm@Base 15 + _D3std10checkedint5Abort__T10onOverflowVAyaa1_2dTxmTmZQBbFNfxmmZm@Base 15 + _D3std10checkedint5Abort__T12hookOpEqualsTxmTxmZQvFNfxmxmZb@Base 15 + _D3std10checkedint5Abort__T9hookOpCmpTmTxmZQqFNfmxmZi@Base 15 + _D3std10checkedint5Throw12CheckFailure6__initZ@Base 15 + _D3std10checkedint5Throw12CheckFailure6__vtblZ@Base 15 + _D3std10checkedint5Throw12CheckFailure7__ClassZ@Base 15 + _D3std10checkedint5Throw6__initZ@Base 15 + _D3std10checkedint7WithNaN6__initZ@Base 15 + _D3std10checkedint8Saturate6__initZ@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz11__xopEqualsMxFKxSQCnQCm__TQCdTmTQByZQCnZb@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz3getMNgFNaNbNiNfZNgm@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz6__initZ@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz6toHashMxFNaNbNiNfZm@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz8__xopCmpMxFKxSQCjQCi__TQBzTmTQBuZQCjZi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T10opOpAssignVAyaa1_2bTlZQyMFNcNjNfxlZSQDjQDi__TQCzTmTQCuZQDj@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T12opBinaryImplVAyaa1_2bTlTSQCyQCx__TQCoTmTQCjZQCyZQByMFNfxlZQBi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T12opBinaryImplVAyaa1_2bTmTSQCyQCx__TQCoTmTQCjZQCyZQByMFNfxmZQBi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T13opBinaryRightVAyaa1_2dTmZQBbMFNfxmZSQDjQDi__TQCzTmTQCuZQDj@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T17opBinaryRightImplVAyaa1_2dTmTSQDdQDc__TQCtTmTQCoZQDdZQCdMFNfxmZQBi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T5opCmpTmTQBcTxSQCmQCl__TQCcTmTQBxZQCmZQBmMxFNaNbNiNfSQDyQDx__TQDoTmTQDjZQDyZi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T5opCmpTmTSQChQCg__TQBxTmTQBsZQChZQBhMFNfxmZi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T6__ctorTmZQkMFNaNbNcNiNfmZSQCyQCx__TQCoTmTQCjZQCy@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T6__ctorTxmZQlMFNaNbNcNiNfxmZSQDaQCz__TQCqTmTQClZQDa@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opBinaryVAyaa1_2bTlZQvMFNfxlZSQDcQDb__TQCsTmTQCnZQDc@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opBinaryVAyaa1_2bTmZQvMFNfxmZSQDcQDb__TQCsTmTQCnZQDc@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opEqualsTxSQCjQCi__TQBzTmTQBuZQCjTxQzZQBnMxFNfxQBlZb@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opEqualsTxmTxSQCmQCl__TQCcTmTQBxZQCmZQBmMxFNfxmZb@Base 15 + _D3std10checkedint__T7checkedTSQBdQBc5AbortTmZQzFNaNbNiNfxmZSQChQCg__T7CheckedTmTQBzZQp@Base 15 + _D3std10checkedint__T9opCheckedVAyaa1_2bTmTlZQyFNaNbNiNfxmxlKbZm@Base 15 + _D3std10checkedint__T9opCheckedVAyaa1_2bTmTmZQyFNaNbNiNfxmxmKbZm@Base 15 + _D3std10checkedint__T9opCheckedVAyaa1_2dTmTmZQyFNaNbNiNfxmxmKbZm@Base 15 + _D3std10checkedint__T9opCheckedVAyaa2_3d3dTmTmZQBaFNaNbNiNfxmxmKbZb@Base 15 + _D3std10checkedint__T9opCheckedVAyaa3_636d70TmTmZQBcFNaNbNiNfxmxmKbZi@Base 15 + _D3std10functional11__moduleRefZ@Base 15 + _D3std10functional11_ctfeSkipOpFKAyaZk@Base 15 + _D3std10functional12__ModuleInfoZ@Base 15 + _D3std10functional13_ctfeSkipNameFKAyaQdZk@Base 15 + _D3std10functional15_ctfeMatchUnaryFAyaQdZk@Base 15 + _D3std10functional16_ctfeMatchBinaryFAyaQdQfZk@Base 15 + _D3std10functional16_ctfeSkipIntegerFKAyaZk@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTiTmZQoFNaNbNiNfimZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTmTiZQoFNaNbNiNfmiZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTmTlZQoFNaNbNiNfmlZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTmTyiZQpFNaNbNiNfmyiZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTyiTmZQpFNaNbNiNfyimZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTiTmZQBbFNaNbNiNfKiKmZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTiZQBbFNaNbNiNfKmKiZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTlZQBbFNaNbNiNfKmKlZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTyiZQBcFNaNbNiNfKmKyiZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTymZQBcFNaNbNiNfKmKymZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTymTmZQBcFNaNbNiNfKymKmZb@Base 15 + _D3std10functional__T8unaryFunVAyaa11_615b305d203e2030783830VQBea1_61Z__TQCaTxSQCz3uni17CodepointIntervalZQDhFNaNbNiNfKxQBqZb@Base 15 + _D3std10functional__T8unaryFunVAyaa4_615b305dVQpa1_61Z__TQBkTSQCi3uni17CodepointIntervalZQCqFNaNbNiNfQBoZk@Base 15 + _D3std10functional__T8unaryFunVAyaa4_615b315dVQpa1_61Z__TQBkTSQCi3uni17CodepointIntervalZQCqFNaNbNiNfQBoZk@Base 15 + _D3std10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61Z__TQBoTySQCn8internal14unicode_tables15UnicodePropertyZQDoFNaNbNiNfKyQCjZyAa@Base 15 + _D3std10functional__T9binaryFunVAyaa11_62203c20612e74696d6554VQBea1_61VQBna1_62Z__TQCkTySQDj8datetime8timezone13PosixTimeZone10LeapSecondTylZQEqFNaNbNiNfKyQCpKylZb@Base 15 + _D3std10functional__T9binaryFunVAyaa11_62203c20612e74696d6554VQBea1_61VQBna1_62Z__TQCkTySQDj8datetime8timezone13PosixTimeZone10TransitionTlZQEpFNaNbNiNfKyQCoKlZb@Base 15 + _D3std10functional__T9binaryFunVAyaa11_62203c20612e74696d6554VQBea1_61VQBna1_62Z__TQCkTySQDj8datetime8timezone13PosixTimeZone10TransitionTylZQEqFNaNbNiNfKyQCpKylZb@Base 15 + _D3std10functional__T9binaryFunVAyaa15_612e6e616d65203c20622e6e616d65VQBma1_61VQBva1_62Z__TQCsTSQDq5regex8internal2ir10NamedGroupTQBjZQEjFNaNbNiNfKQCaKQCeZb@Base 15 + _D3std10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62Z__TQCwTSQDu8datetime8timezone13PosixTimeZone10LeapSecondTQByZQFcFNaNbNiNfKQCpKQCtZb@Base 15 + _D3std10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62Z__TQCwTSQDu8datetime8timezone13PosixTimeZone14TempTransitionTQCcZQFgFNaNbNiNfKQCtKQCxZb@Base 15 + _D3std10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62Z__TQBvTQBoTQBsZQChFNaNbNiNfKQCjKQCnZb@Base 15 + _D3std10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62Z__TQBvTkTiZQCdFNaNbNiNfKkKiZb@Base 15 + _D3std10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62Z__TQBvTywTwZQCeFNaNbNiNfKywKwZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203c3d2062VQta1_61VQBba1_62Z__TQByTkTkZQCgFNaNbNiNfKkKkZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203c3d2062VQta1_61VQBba1_62Z__TQByTxkTkZQChFNaNbNiNfKxkKkZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTQBrTQBvZQCkFNaNbNiNfKQCmKQCqZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTSQCw3uni__T13InversionListTSQDxQBb8GcPolicyZQBhTQBwZQEcFNaNbNiNfKQCnKQCrZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTaTaZQCgFNaNbNiNfaaZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByThThZQCgFNaNbNiNfKhKhZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTwTaZQCgFNaNbNiNfKwKaZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTxSQCx8typecons__T5TupleTQCpVQCta3_6b6579TSQEl4json9JSONValueVQEaa5_76616c7565ZQCjTxQDeZQFlFNaNbNiNfKxQDwKxQEbZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTxhTxhZQCiFNaNbNiNfKxhKxhZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyAaTQBvZQCkFNaNbNiNfKyQvKQCqZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyhTwZQChFNaNbNiNfKyhKwZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyhTwZQChFNaNbNiNfKyhwZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyhTxhZQCiFNaNbNiNfKyhKxhZb@Base 15 + _D3std11__moduleRefZ@Base 15 + _D3std11concurrency10MessageBox10setMaxMsgsMFNaNiNfmPFSQCbQCa3TidZbZv@Base 15 + _D3std11concurrency10MessageBox12isControlMsgMFNaNbNiNfKSQCdQCc7MessageZb@Base 15 + _D3std11concurrency10MessageBox13isLinkDeadMsgMFNaNbNiNfKSQCeQCd7MessageZb@Base 15 + _D3std11concurrency10MessageBox13isPriorityMsgMFNaNbNiNfKSQCeQCd7MessageZb@Base 15 + _D3std11concurrency10MessageBox14updateMsgCountMFNaNbNiNfZv@Base 15 + _D3std11concurrency10MessageBox3putMFKSQBlQBk7MessageZv@Base 15 + _D3std11concurrency10MessageBox5closeMFZ13onLinkDeadMsgFKSQCeQCd7MessageZv@Base 15 + _D3std11concurrency10MessageBox5closeMFZ5sweepFKSQBvQBu__T4ListTSQClQCk7MessageZQwZv@Base 15 + _D3std11concurrency10MessageBox5closeMFZv@Base 15 + _D3std11concurrency10MessageBox6__ctorMFNbNeZCQBsQBrQBh@Base 15 + _D3std11concurrency10MessageBox6__initZ@Base 15 + _D3std11concurrency10MessageBox6__vtblZ@Base 15 + _D3std11concurrency10MessageBox7__ClassZ@Base 15 + _D3std11concurrency10MessageBox8isClosedMFNaNdNiNfZb@Base 15 + _D3std11concurrency10MessageBox8mboxFullMFNaNbNiNfZb@Base 15 + _D3std11concurrency10ThreadInfo11__xopEqualsMxFKxSQBwQBvQBlZb@Base 15 + _D3std11concurrency10ThreadInfo6__initZ@Base 15 + _D3std11concurrency10ThreadInfo7cleanupMFZv@Base 15 + _D3std11concurrency10ThreadInfo8thisInfoFNbNcNdNiNfZSQBzQByQBo@Base 15 + _D3std11concurrency10ThreadInfo8thisInfoFNbNcNdZ3valSQBzQByQBo@Base 15 + _D3std11concurrency10ThreadInfo9__xtoHashFNbNeKxSQBvQBuQBkZm@Base 15 + _D3std11concurrency10namesByTidHSQBfQBe3TidAAya@Base 15 + _D3std11concurrency10unregisterFAyaZb@Base 15 + _D3std11concurrency11IsGenerator11__InterfaceZ@Base 15 + _D3std11concurrency11MailboxFull6__ctorMFNaNbNiNfSQBwQBv3TidAyaZCQClQCkQCa@Base 15 + _D3std11concurrency11MailboxFull6__initZ@Base 15 + _D3std11concurrency11MailboxFull6__vtblZ@Base 15 + _D3std11concurrency11MailboxFull7__ClassZ@Base 15 + _D3std11concurrency11__moduleRefZ@Base 15 + _D3std11concurrency12__ModuleInfoZ@Base 15 + _D3std11concurrency12initOnceLockFNdZ4lockOC4core4sync5mutex5Mutex@Base 15 + _D3std11concurrency12initOnceLockFNdZOC4core4sync5mutex5Mutex@Base 15 + _D3std11concurrency12registryLockFNdZ4implC4core4sync5mutex5Mutex@Base 15 + _D3std11concurrency12registryLockFNdZC4core4sync5mutex5Mutex@Base 15 + _D3std11concurrency12unregisterMeFKSQBiQBh10ThreadInfoZv@Base 15 + _D3std11concurrency14FiberScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition13switchContextMFNbZv@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition4waitMFNbS4core4time8DurationZb@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition4waitMFNbZv@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition6__ctorMFNbC4core4sync5mutex5MutexZCQDhQDgQCwQCj@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition6__initZ@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition6__vtblZ@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition6notifyMFNbZv@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition7__ClassZ@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition9notifyAllMFNbZv@Base 15 + _D3std11concurrency14FiberScheduler5spawnMFNbDFZvZv@Base 15 + _D3std11concurrency14FiberScheduler5startMFDFZvZv@Base 15 + _D3std11concurrency14FiberScheduler5yieldMFNbZv@Base 15 + _D3std11concurrency14FiberScheduler6__initZ@Base 15 + _D3std11concurrency14FiberScheduler6__vtblZ@Base 15 + _D3std11concurrency14FiberScheduler6createMFNbDFZvZv@Base 15 + _D3std11concurrency14FiberScheduler7__ClassZ@Base 15 + _D3std11concurrency14FiberScheduler8dispatchMFZv@Base 15 + _D3std11concurrency14FiberScheduler8thisInfoMFNbNcNdZSQCaQBz10ThreadInfo@Base 15 + _D3std11concurrency14FiberScheduler9InfoFiber6__ctorMFNbDFZvZCQCiQChQBxQBk@Base 15 + _D3std11concurrency14FiberScheduler9InfoFiber6__ctorMFNbDFZvmZCQCjQCiQByQBl@Base 15 + _D3std11concurrency14FiberScheduler9InfoFiber6__initZ@Base 15 + _D3std11concurrency14FiberScheduler9InfoFiber6__vtblZ@Base 15 + _D3std11concurrency14FiberScheduler9InfoFiber7__ClassZ@Base 15 + _D3std11concurrency14LinkTerminated6__ctorMFNaNbNiNfSQBzQBy3TidAyaZCQCoQCnQCd@Base 15 + _D3std11concurrency14LinkTerminated6__initZ@Base 15 + _D3std11concurrency14LinkTerminated6__vtblZ@Base 15 + _D3std11concurrency14LinkTerminated7__ClassZ@Base 15 + _D3std11concurrency15MessageMismatch6__ctorMFNaNbNiNfAyaZCQCeQCdQBt@Base 15 + _D3std11concurrency15MessageMismatch6__initZ@Base 15 + _D3std11concurrency15MessageMismatch6__vtblZ@Base 15 + _D3std11concurrency15MessageMismatch7__ClassZ@Base 15 + _D3std11concurrency15OwnerTerminated6__ctorMFNaNbNiNfSQCaQBz3TidAyaZCQCpQCoQCe@Base 15 + _D3std11concurrency15OwnerTerminated6__initZ@Base 15 + _D3std11concurrency15OwnerTerminated6__vtblZ@Base 15 + _D3std11concurrency15OwnerTerminated7__ClassZ@Base 15 + _D3std11concurrency15ThreadScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 + _D3std11concurrency15ThreadScheduler5spawnMFDFZvZv@Base 15 + _D3std11concurrency15ThreadScheduler5startMFDFZvZv@Base 15 + _D3std11concurrency15ThreadScheduler5yieldMFNbZv@Base 15 + _D3std11concurrency15ThreadScheduler6__initZ@Base 15 + _D3std11concurrency15ThreadScheduler6__vtblZ@Base 15 + _D3std11concurrency15ThreadScheduler7__ClassZ@Base 15 + _D3std11concurrency15ThreadScheduler8thisInfoMFNbNcNdZSQCbQCa10ThreadInfo@Base 15 + _D3std11concurrency15onCrowdingBlockFNaNbNiNfSQBsQBr3TidZb@Base 15 + _D3std11concurrency15onCrowdingThrowFNaNfSQBoQBn3TidZb@Base 15 + _D3std11concurrency16onCrowdingIgnoreFNaNbNiNfSQBtQBs3TidZb@Base 15 + _D3std11concurrency17setMaxMailboxSizeFNaNfSQBqQBp3TidmEQCcQCb10OnCrowdingZv@Base 15 + _D3std11concurrency17setMaxMailboxSizeFSQBmQBl3TidmPFQoZbZv@Base 15 + _D3std11concurrency19TidMissingException6__initZ@Base 15 + _D3std11concurrency19TidMissingException6__vtblZ@Base 15 + _D3std11concurrency19TidMissingException7__ClassZ@Base 15 + _D3std11concurrency19TidMissingException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDmQDlQDb@Base 15 + _D3std11concurrency19TidMissingException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDmQDlQDb@Base 15 + _D3std11concurrency19_staticDtor_L270_C1FZv@Base 15 + _D3std11concurrency24PriorityMessageException11__fieldDtorMFNlNeZv@Base 15 + _D3std11concurrency24PriorityMessageException6__ctorMFSQCb7variant__T8VariantNVmi32ZQpZCQDiQDhQCx@Base 15 + _D3std11concurrency24PriorityMessageException6__initZ@Base 15 + _D3std11concurrency24PriorityMessageException6__vtblZ@Base 15 + _D3std11concurrency24PriorityMessageException7__ClassZ@Base 15 + _D3std11concurrency3Tid11__xopEqualsMxFKxSQBoQBnQBdZb@Base 15 + _D3std11concurrency3Tid6__ctorMFNaNbNcNiNfCQBpQBo10MessageBoxZSQCjQCiQBy@Base 15 + _D3std11concurrency3Tid6__initZ@Base 15 + _D3std11concurrency3Tid9__xtoHashFNbNeKxSQBnQBmQBcZm@Base 15 + _D3std11concurrency3Tid__T8toStringTSQBj5array__T8AppenderTAyaZQoZQBoMxFNaNfKQBpZv@Base 15 + _D3std11concurrency5yieldFNbZv@Base 15 + _D3std11concurrency6locateFAyaZSQBeQBd3Tid@Base 15 + _D3std11concurrency7Message11__fieldDtorMFNeZv@Base 15 + _D3std11concurrency7Message11__xopEqualsMxFKxSQBsQBrQBhZb@Base 15 + _D3std11concurrency7Message15__fieldPostblitMFNlZv@Base 15 + _D3std11concurrency7Message6__initZ@Base 15 + _D3std11concurrency7Message8opAssignMFNcNjNfSQBrQBqQBgZQl@Base 15 + _D3std11concurrency7Message9__xtoHashFNbNeKxSQBrQBqQBgZm@Base 15 + _D3std11concurrency7Message__T10convertsToTSQBqQBp3TidZQzMFNdZb@Base 15 + _D3std11concurrency7Message__T3getTSQBiQBh3TidZQrMFNdZQt@Base 15 + _D3std11concurrency7Message__T6__ctorTSQBlQBk3TidZQuMFNcEQCdQCc7MsgTypeQBhZSQCwQCvQCl@Base 15 + _D3std11concurrency7thisTidFNdNfZ4trusFNeZSQBpQBo3Tid@Base 15 + _D3std11concurrency7thisTidFNdNfZSQBgQBf3Tid@Base 15 + _D3std11concurrency8ownerTidFNdZSQBfQBe3Tid@Base 15 + _D3std11concurrency8registerFAyaSQBfQBe3TidZb@Base 15 + _D3std11concurrency8thisInfoFNbNcNdZSQBjQBi10ThreadInfo@Base 15 + _D3std11concurrency9Scheduler11__InterfaceZ@Base 15 + _D3std11concurrency9schedulerCQBcQBb9Scheduler@Base 15 + _D3std11concurrency9tidByNameHAyaSQBgQBf3Tid@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw3putMFNaNbNiNfKSQCiQCh__TQBxTQBvZQCfZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw3putMFNaNbNiNfPSQCiQCh__TQBxTQBvZQCf4NodeZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw3putMFQyZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node11__fieldDtorMFNeZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node11__xopEqualsMxFKxSQCqQCp__TQCfTQCdZQCnQBsZb@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node15__fieldPostblitMFNlZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__ctorMFNcQBiZSQCnQCm__TQCcTQCaZQCkQBp@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node8opAssignMFNcNjNfSQCpQCo__TQCeTQCcZQCmQBrZQz@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node9__xtoHashFNbNeKxSQCpQCo__TQCeTQCcZQCmQBrZm@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range5frontMFNaNcNdNfZQBp@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range5frontMFNdQBiZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range6__ctorMFNaNbNcNiNfPSQCtQCs__TQCiTQCgZQCq4NodeZSQDuQDt__TQDjTQDhZQDrQCw@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range6__initZ@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range8popFrontMFNaNfZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5clearMFNaNbNiNfZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5emptyMFNaNbNdNiNfZb@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw6__initZ@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw6lengthMFNaNbNdNiNfZm@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7newNodeMFQBcZPSQCiQCh__TQBxTQBvZQCf4Node@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7opSliceMFNaNbNiZSQCkQCj__TQBzTQBxZQCh5Range@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7sm_headOPSQCdQCc__TQBsTQBqZQCa4Node@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7sm_lockOSQCcQCb__TQBrTQBpZQBz8SpinLock@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock4lockMOFNbNiZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6__initZ@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6unlockMOFNaNbNiNfZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8freeNodeMFPSQCfQCe__TQBuTQBsZQCc4NodeZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8removeAtMFSQCeQCd__TQBtTQBrZQCb5RangeZv@Base 15 + _D3std11concurrency__T5_sendTSQBcQBb3TidZQtFEQBrQBq7MsgTypeQBeQBhZv@Base 15 + _D3std11concurrency__T8initOnceS_DQBg11parallelism8taskPoolFNdNeZ4poolCQCrQBl8TaskPoolZQCnFNcLQyOC4core4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg11parallelism8taskPoolFNdNeZ4poolCQCrQBl8TaskPoolZQCnFNcLQyOC4core4sync5mutex5MutexZQBz@Base 15 + _D3std11concurrency__T8initOnceS_DQBg11parallelism8taskPoolFNdNeZ4poolCQCrQBl8TaskPoolZQCnFNcLQyZQBb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg12experimental9allocator17_processAllocatorOSQDcQBwQBl18RCISharedAllocatorZQDmFNcLOQBnOC4core4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg12experimental9allocator17_processAllocatorOSQDcQBwQBl18RCISharedAllocatorZQDmFNcLOQBnZOQBs@Base 15 + _D3std11concurrency__T8initOnceS_DQBg12experimental9allocator17_processAllocatorOSQDcQBwQBl18RCISharedAllocatorZQDmFNcNfLOQBpOC4core4sync5mutex5MutexZOQCs@Base 15 + _D3std11concurrency__T8initOnceS_DQBg3net4curl7CurlAPI7_handlePvZQBrFNcLQkOC4core4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg3net4curl7CurlAPI7_handlePvZQBrFNcLQkOC4core4sync5mutex5MutexZQBl@Base 15 + _D3std11concurrency__T8initOnceS_DQBg3net4curl7CurlAPI7_handlePvZQBrFNcLQkZQn@Base 15 + _D3std11concurrency__T8initOnceS_DQBg6logger4core22stdSharedDefaultLoggerOCQCvQBpQBl6LoggerZQCsFNcLOQBaOCQCj4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg6logger4core22stdSharedDefaultLoggerOCQCvQBpQBl6LoggerZQCsFNcLOQBaZOQBf@Base 15 + _D3std11concurrency__T8initOnceS_DQBg6logger4core22stdSharedDefaultLoggerOCQCvQBpQBl6LoggerZQCsFNcNfLOQBcOCQCl4sync5mutex5MutexZOQCd@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8datetime8timezone9LocalTime9singletonFNeZ5guardObZQCoFNcLObOC4core4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8datetime8timezone9LocalTime9singletonFNeZ5guardObZQCoFNcLObZOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8datetime8timezone9LocalTime9singletonFNeZ5guardObZQCoFNcNfLObOC4core4sync5mutex5MutexZOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8encoding14EncodingScheme6createFAyaZ11initializedObZQCqFNcLObOC4core4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8encoding14EncodingScheme6createFAyaZ11initializedObZQCqFNcLObZOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8encoding14EncodingScheme6createFAyaZ11initializedObZQCqFNcNfLObOC4core4sync5mutex5MutexZOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBgQBf12registryLockFNdZ4implC4core4sync5mutex5MutexZQCnFNcLQBfOCQBjQBhQBfQBcZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBgQBf12registryLockFNdZ4implC4core4sync5mutex5MutexZQCnFNcLQBfOCQBjQBhQBfQBcZQBx@Base 15 + _D3std11concurrency__T8initOnceS_DQBgQBf12registryLockFNdZ4implC4core4sync5mutex5MutexZQCnFNcLQBfZQBj@Base 15 + _D3std11mathspecial11__moduleRefZ@Base 15 + _D3std11mathspecial11logmdigammaFNaNbNiNfeZe@Base 15 + _D3std11mathspecial12__ModuleInfoZ@Base 15 + _D3std11mathspecial14betaIncompleteFNaNbNiNfeeeZe@Base 15 + _D3std11mathspecial15gammaIncompleteFNaNbNiNfeeZe@Base 15 + _D3std11mathspecial18logmdigammaInverseFNaNbNiNfeZe@Base 15 + _D3std11mathspecial18normalDistributionFNaNbNiNfeZe@Base 15 + _D3std11mathspecial20gammaIncompleteComplFNaNbNiNfeeZe@Base 15 + _D3std11mathspecial21betaIncompleteInverseFNaNbNiNfeeeZe@Base 15 + _D3std11mathspecial25normalDistributionInverseFNaNbNiNfeZe@Base 15 + _D3std11mathspecial27gammaIncompleteComplInverseFNaNbNiNfeeZe@Base 15 + _D3std11mathspecial3erfFNaNbNiNfeZe@Base 15 + _D3std11mathspecial4betaFNaNbNiNfeeZe@Base 15 + _D3std11mathspecial4erfcFNaNbNiNfeZe@Base 15 + _D3std11mathspecial5gammaFNaNbNiNfeZe@Base 15 + _D3std11mathspecial7digammaFNaNbNiNfeZe@Base 15 + _D3std11mathspecial8logGammaFNaNbNiNfeZe@Base 15 + _D3std11mathspecial8sgnGammaFNaNbNiNfeZe@Base 15 + _D3std11parallelism10foreachErrFZv@Base 15 + _D3std11parallelism11__moduleRefZ@Base 15 + _D3std11parallelism12AbstractTask11__xopEqualsMxFKxSQByQBxQBnZb@Base 15 + _D3std11parallelism12AbstractTask3jobMFZv@Base 15 + _D3std11parallelism12AbstractTask4doneMFNdZb@Base 15 + _D3std11parallelism12AbstractTask6__initZ@Base 15 + _D3std11parallelism12AbstractTask9__xtoHashFNbNeKxSQBxQBwQBmZm@Base 15 + _D3std11parallelism12__ModuleInfoZ@Base 15 + _D3std11parallelism13totalCPUsImplFNbNiNeZk@Base 15 + _D3std11parallelism16submitAndExecuteFCQBlQBk8TaskPoolMDFZvZv@Base 15 + _D3std11parallelism17ParallelismThread6__ctorMFDFZvZCQBzQByQBo@Base 15 + _D3std11parallelism17ParallelismThread6__initZ@Base 15 + _D3std11parallelism17ParallelismThread6__vtblZ@Base 15 + _D3std11parallelism17ParallelismThread7__ClassZ@Base 15 + _D3std11parallelism17cacheLineSizeImplFNbNiNeZm@Base 15 + _D3std11parallelism18defaultPoolThreadsFNdNeZk@Base 15 + _D3std11parallelism18defaultPoolThreadsFNdNekZv@Base 15 + _D3std11parallelism19_defaultPoolThreadsOk@Base 15 + _D3std11parallelism20ParallelForeachError6__ctorMFZCQByQBxQBn@Base 15 + _D3std11parallelism20ParallelForeachError6__initZ@Base 15 + _D3std11parallelism20ParallelForeachError6__vtblZ@Base 15 + _D3std11parallelism20ParallelForeachError7__ClassZ@Base 15 + _D3std11parallelism26_sharedStaticDtor_L1089_C1FZv@Base 15 + _D3std11parallelism8TaskPool10deleteItemMFPSQBqQBp12AbstractTaskZb@Base 15 + _D3std11parallelism8TaskPool10waiterLockMFZv@Base 15 + _D3std11parallelism8TaskPool11abstractPutMFPSQBrQBq12AbstractTaskZv@Base 15 + _D3std11parallelism8TaskPool11queueUnlockMFZv@Base 15 + _D3std11parallelism8TaskPool11threadIndexm@Base 15 + _D3std11parallelism8TaskPool11workerIndexMxFNbNdNfZm@Base 15 + _D3std11parallelism8TaskPool12doSingleTaskMFZv@Base 15 + _D3std11parallelism8TaskPool12waiterUnlockMFZv@Base 15 + _D3std11parallelism8TaskPool13notifyWaitersMFZv@Base 15 + _D3std11parallelism8TaskPool13startWorkLoopMFZv@Base 15 + _D3std11parallelism8TaskPool15executeWorkLoopMFZv@Base 15 + _D3std11parallelism8TaskPool16deleteItemNoSyncMFPSQBwQBv12AbstractTaskZb@Base 15 + _D3std11parallelism8TaskPool16tryDeleteExecuteMFPSQBwQBv12AbstractTaskZv@Base 15 + _D3std11parallelism8TaskPool17abstractPutNoSyncMFPSQBxQBw12AbstractTaskZv@Base 15 + _D3std11parallelism8TaskPool17nextInstanceIndexm@Base 15 + _D3std11parallelism8TaskPool19defaultWorkUnitSizeMxFNaNbNfmZm@Base 15 + _D3std11parallelism8TaskPool19waitUntilCompletionMFZv@Base 15 + _D3std11parallelism8TaskPool22abstractPutGroupNoSyncMFPSQCcQCb12AbstractTaskQwZv@Base 15 + _D3std11parallelism8TaskPool3popMFZPSQBjQBi12AbstractTask@Base 15 + _D3std11parallelism8TaskPool4sizeMxFNaNbNdNfZm@Base 15 + _D3std11parallelism8TaskPool4stopMFNeZv@Base 15 + _D3std11parallelism8TaskPool4waitMFZv@Base 15 + _D3std11parallelism8TaskPool5doJobMFPSQBkQBj12AbstractTaskZv@Base 15 + _D3std11parallelism8TaskPool6__ctorMFNeZCQBnQBmQBc@Base 15 + _D3std11parallelism8TaskPool6__ctorMFNemZCQBoQBnQBd@Base 15 + _D3std11parallelism8TaskPool6__ctorMFPSQBlQBk12AbstractTaskiZCQCiQChQBx@Base 15 + _D3std11parallelism8TaskPool6__initZ@Base 15 + _D3std11parallelism8TaskPool6__vtblZ@Base 15 + _D3std11parallelism8TaskPool6finishMFNebZv@Base 15 + _D3std11parallelism8TaskPool6notifyMFZv@Base 15 + _D3std11parallelism8TaskPool7__ClassZ@Base 15 + _D3std11parallelism8TaskPool8isDaemonMFNdNeZb@Base 15 + _D3std11parallelism8TaskPool8isDaemonMFNdNebZv@Base 15 + _D3std11parallelism8TaskPool8priorityMFNdNeZi@Base 15 + _D3std11parallelism8TaskPool8priorityMFNdNeiZv@Base 15 + _D3std11parallelism8TaskPool9notifyAllMFZv@Base 15 + _D3std11parallelism8TaskPool9popNoSyncMFZPSQBpQBo12AbstractTask@Base 15 + _D3std11parallelism8TaskPool9queueLockMFZv@Base 15 + _D3std11parallelism8taskPoolFNdNeZ18__lambda_L3589_C26FNfZCQCfQCe8TaskPool@Base 15 + _D3std11parallelism8taskPoolFNdNeZ4poolCQBmQBl8TaskPool@Base 15 + _D3std11parallelism8taskPoolFNdNeZCQBhQBg8TaskPool@Base 15 + _D3std11parallelism__T10scopedTaskTDFZvZQsFMQjZSQBuQBt__T4TaskSQCjQCi3runTQBnZQv@Base 15 + _D3std11parallelism__T14atomicCasUbyteTEQBmQBl8TaskPool9PoolStateZQBsFNaNbNiKQBmQBpQBsZb@Base 15 + _D3std11parallelism__T14atomicSetUbyteTEQBmQBl8TaskPool9PoolStateZQBsFNaNbNiKQBmQBpZv@Base 15 + _D3std11parallelism__T14atomicSetUbyteThZQtFNaNbNiKhhZv@Base 15 + _D3std11parallelism__T15atomicReadUbyteTEQBnQBm8TaskPool9PoolStateZQBtFNaNbNiKQBmZh@Base 15 + _D3std11parallelism__T15atomicReadUbyteThZQuFNaNbNiKhZh@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNbNdNiNfZyk@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNdZ4implFNbNiNfZyk@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNdZ4implFNbZ3tlsk@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNdZ4implFNbZ6resultOk@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNbNdNiNfZym@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNdZ4implFNbNiNfZym@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNdZ4implFNbZ3tlsm@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNdZ4implFNbZ6resultOm@Base 15 + _D3std11parallelism__T3runTDFZvZQkFQiZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv10yieldForceMFNcNdNeZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv11__xopEqualsMxFKxSQCkQCj__TQBzSQCxQCwQByTQBxZQCrZb@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv11enforcePoolMFNaNfZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv18executeInNewThreadMFNeZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv18executeInNewThreadMFNeiZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv4doneMFNdNeZb@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv4implFPvZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__ctorMFNaNbNcNiNfQBaZSQCpQCo__TQCeSQDcQDbQCdTQCcZQCw@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__dtorMFNfZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__initZ@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv7basePtrMFNaNbNdNiNfZPSQCoQCn12AbstractTask@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv8opAssignMFNfSQCfQCe__TQBuSQCsQCrQBtTQBsZQCmZQBg@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv9__xtoHashFNbNeKxSQCjQCi__TQBySQCwQCvQBxTQBwZQCqZm@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv9spinForceMFNcNdNeZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv9workForceMFNcNdNeZv@Base 15 + _D3std12__ModuleInfoZ@Base 15 + _D3std12experimental10checkedint11__moduleRefZ@Base 15 + _D3std12experimental10checkedint12__ModuleInfoZ@Base 15 + _D3std12experimental6logger10filelogger11__moduleRefZ@Base 15 + _D3std12experimental6logger10filelogger12__ModuleInfoZ@Base 15 + _D3std12experimental6logger10nulllogger11__moduleRefZ@Base 15 + _D3std12experimental6logger10nulllogger12__ModuleInfoZ@Base 15 + _D3std12experimental6logger11__moduleRefZ@Base 15 + _D3std12experimental6logger11multilogger11__moduleRefZ@Base 15 + _D3std12experimental6logger11multilogger12__ModuleInfoZ@Base 15 + _D3std12experimental6logger12__ModuleInfoZ@Base 15 + _D3std12experimental6logger4core11__moduleRefZ@Base 15 + _D3std12experimental6logger4core12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator10IAllocator11__InterfaceZ@Base 15 + _D3std12experimental9allocator10mallocator10Mallocator10deallocateMOxFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator10mallocator10Mallocator10reallocateMOxFNaNbNiKAvmZb@Base 15 + _D3std12experimental9allocator10mallocator10Mallocator6__initZ@Base 15 + _D3std12experimental9allocator10mallocator10Mallocator8allocateMOxFNaNbNiNemZAv@Base 15 + _D3std12experimental9allocator10mallocator10Mallocator8instanceOSQClQCkQBzQBsQBj@Base 15 + _D3std12experimental9allocator10mallocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator10mallocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator10deallocateMOFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator10reallocateMOFNaNbNiKAvmZb@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator15alignedAllocateMOFNaNbNiNemkZAv@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator17alignedReallocateMOFNaNbNiKAvmkZb@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator6__initZ@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator8allocateMOFNaNbNiNemZAv@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator8instanceOSQCsQCrQCgQBzQBq@Base 15 + _D3std12experimental9allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator12RCIAllocator10__postblitMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator12RCIAllocator10deallocateMFNbAvZb@Base 15 + _D3std12experimental9allocator12RCIAllocator10reallocateMFNbKAvmZb@Base 15 + _D3std12experimental9allocator12RCIAllocator11__xopEqualsMxFKxSQCjQCiQBxQBqZb@Base 15 + _D3std12experimental9allocator12RCIAllocator11allocateAllMFNbZAv@Base 15 + _D3std12experimental9allocator12RCIAllocator13deallocateAllMFNbZb@Base 15 + _D3std12experimental9allocator12RCIAllocator13goodAllocSizeMFNbmZm@Base 15 + _D3std12experimental9allocator12RCIAllocator15alignedAllocateMFNbmkZAv@Base 15 + _D3std12experimental9allocator12RCIAllocator17alignedReallocateMFNbKAvmkZb@Base 15 + _D3std12experimental9allocator12RCIAllocator22resolveInternalPointerMFNbxPvKAvZSQDa8typecons7Ternary@Base 15 + _D3std12experimental9allocator12RCIAllocator4ownsMFNbAvZSQCd8typecons7Ternary@Base 15 + _D3std12experimental9allocator12RCIAllocator5emptyMFNbZSQCc8typecons7Ternary@Base 15 + _D3std12experimental9allocator12RCIAllocator6__dtorMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator12RCIAllocator6__initZ@Base 15 + _D3std12experimental9allocator12RCIAllocator6expandMFNbKAvmZb@Base 15 + _D3std12experimental9allocator12RCIAllocator8allocateMFNbmC8TypeInfoZAv@Base 15 + _D3std12experimental9allocator12RCIAllocator9__xtoHashFNbNeKxSQCiQChQBwQBpZm@Base 15 + _D3std12experimental9allocator12RCIAllocator9alignmentMFNbNdZk@Base 15 + _D3std12experimental9allocator12RCIAllocator__T6__ctorTSQCcQCbQBqQBjZQwMFNaNbNcNiNfCQDeQDdQCs10IAllocatorZQBz@Base 15 + _D3std12experimental9allocator12RCIAllocator__T6isNullTSQCcQCbQBqQBjZQwMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator12RCIAllocator__T8opAssignZQkMFNaNbNcNiNfSQCsQCrQCgQBzZQo@Base 15 + _D3std12experimental9allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator10deallocateMOxFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator10reallocateMOxFNaNbKAvmZb@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator13goodAllocSizeMOxFNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator22resolveInternalPointerMOxFNaNbNiNexPvKAvZSQDv8typecons7Ternary@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator6__initZ@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator6expandMOxFNaNbNeKAvmZb@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator7collectMOxFNbNeZv@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator8allocateMOxFNaNbNemZAv@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator8instanceOxSQCpQCoQCdQBwQBl@Base 15 + _D3std12experimental9allocator12gc_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator12gc_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator12theAllocatorFNbNcNdNiNfZSQCdQCcQBr12RCIAllocator@Base 15 + _D3std12experimental9allocator12theAllocatorFNbNdNiSQByQBxQBm12RCIAllocatorZv@Base 15 + _D3std12experimental9allocator14mmap_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator14mmap_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator14mmap_allocator13MmapAllocator10deallocateMOxFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator14mmap_allocator13MmapAllocator6__initZ@Base 15 + _D3std12experimental9allocator14mmap_allocator13MmapAllocator8allocateMOxFNaNbNiNfmZ16__lambda_L37_C32FNaNbNiNeZi@Base 15 + _D3std12experimental9allocator14mmap_allocator13MmapAllocator8allocateMOxFNaNbNiNfmZAv@Base 15 + _D3std12experimental9allocator14mmap_allocator13MmapAllocator8instanceOxSQCtQCsQChQCaQBn@Base 15 + _D3std12experimental9allocator15building_blocks10bucketizer11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks10bucketizer12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks10segregator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks10segregator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe10deallocateMFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe11__xopEqualsMxFKxSQHmQHlQHaQGtQGf__TQFsTQFgTQDpZQGeZb@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe12addAllocatorMFNaNbNimZPSQHtQHsQHhQHaQGm__TQFzTQFnTQDwZQGl4Node@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe13deallocateAllMFNaNbNiZb@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe14moveAllocatorsMFNaNbNiAvZv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe15alignedAllocateMFNaNbNimkZAv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node11__fieldDtorMFNaNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6unusedMxFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node8opAssignMFNaNbNcNiNjSQHuQHtQHiQHbQGn__TQGaTQFoTQDxZQGmQCiZQBm@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node9setUnusedMFNaNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4makeMFNaNbNimZSQHjQHiQGxQGq6region__T6RegionTSQIoQInQIc14mmap_allocator13MmapAllocatorVki16VEQKj8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4ownsMFNaNbNiNfAvZSQHm8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe5emptyMxFNaNbNiNfZSQHm8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__ctorMFNaNbNcNiNfKQElZSQHsQHrQHgQGzQGl__TQFyTQFmTQDvZQGk@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__ctorMFNaNbNcNiNfQEkZSQHrQHqQHfQGyQGk__TQFxTQFlTQDuZQGj@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__dtorMFNaNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6expandMFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe8allocateMFNaNbNimZAv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe8opAssignMFNaNbNcNiNjSQHpQHoQHdQGwQGi__TQFvTQFjTQDsZQGhZQBj@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe9__xtoHashFNbNeKxSQHlQHkQGzQGsQGe__TQFrTQFfTQDoZQGdZm@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator10deallocateMOFNaNbNiNfAvZb@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator10reallocateMOFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator11allocateAllMOFNaNbNiNfZAv@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator13deallocateAllMOFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator15alignedAllocateMOFNaNbNiNfmkZAv@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator17alignedReallocateMOFNaNbNiNfKAvmkZb@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator22resolveInternalPointerMOxFNaNbNiNfxPvKAvZSQEq8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator4ownsMOxFNaNbNiNfxAvZSQDu8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator5emptyMOxFNaNbNiNfZSQDs8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator6expandMOFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator8allocateMOFNaNbNiNfmZAv@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator8instanceOSQDjQDiQCxQCqQCcQBp@Base 15 + _D3std12experimental9allocator15building_blocks15affix_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks15affix_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block11leadingOnesFNaNbNiNfmZk@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block13setBitsIfZeroFNaNbNiNfKmkkZb@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block14findContigOnesFNaNbNiNfmkZk@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block7setBitsFNaNbNiNfKmkkZv@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector11__xopEqualsMxFKxSQDnQDmQDbQCuQCgQBsZb@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13find1BackwardMFNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13opIndexAssignMFNaNbNiNfbmZv@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13opSliceAssignMFNaNbNiNfbZv@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13opSliceAssignMFNaNbNiNfbmmZv@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector5find1MFNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6__ctorMFNaNbNcNiNfAmZSQDrQDqQDfQCyQCkQBw@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6lengthMxFNaNbNiNfZm@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector7allAre0MxFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector7allAre1MxFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector7opIndexMFNaNbNiNfmZb@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector9__xtoHashFNbNeKxSQDmQDlQDaQCtQCfQBrZm@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector9findZerosMFNaNbNiNfymmZm@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9resetBitsFNaNbNiNfKmkkZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector7Options6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq10deallocateMFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq10reallocateMFNaNbNiKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq11__fieldDtorMFNaNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq13deallocateAllMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq15alignedAllocateMFNaNbNiNfmkZAv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq4ownsMFNaNbNiNfAvZSQJzQDu7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq5emptyMFNaNbNiNfZSQJyQDt7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6defineFNaNbNfQCuAQCyXQDc@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6expandMFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq8allocateMFNaNbNiNfmZAv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq8opAssignMFNaNbNcNiNjSQKcQKbQJqQJjQIv__TQIhTQHuVmi4096Vmi0ZQJaZQBq@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq9bytesUsedMxFNaNbNiNfZxm@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa13_6e756d4465616c6c6f63617465VQEna15_6279746573436f6e74726163746564ZQDqMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa13_6e756d5265616c6c6f63617465VQEna15_6e756d5265616c6c6f636174654f4bVQFza20_6e756d5265616c6c6f63617465496e506c616365VQHva13_62797465734e6f744d6f766564VQJda13_6279746573457870616e646564VQKla15_6279746573436f6e74726163746564VQLxa10_62797465734d6f766564ZQKqMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa16_6e756d4465616c6c6f63617465416c6cZQCkMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa7_6e756d4f776e73ZQBrMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa9_6e756d457870616e64VQEea11_6e756d457870616e644f4bVQFia13_6279746573457870616e646564VQGqa14_6279746573416c6c6f6361746564ZQFrMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVmi0VQDfa11_6e756d416c6c6f63617465VQEja13_6e756d416c6c6f636174654f4bVQFra14_6279746573416c6c6f6361746564ZQEsMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVmi0VQDfa18_6e756d416c69676e6564416c6c6f63617465VQExa20_6e756d416c69676e6564416c6c6f636174654f6bVQGta14_6279746573416c6c6f6361746564ZQFuMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10expandImplVnnVii0ZQuMFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T12allocateImplVnnVii0ZQwMFNaNbNiNfmZAv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T14deallocateImplVnnVii0ZQyMFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T14reallocateImplVnnVii0ZQyMFNaNbNiKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T17deallocateAllImplVnnVii0ZQBbMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T19alignedAllocateImplVnnVii0ZQBdMFNaNbNiNfmkZAv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna11_6e756d416c6c6f63617465ZQBiMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna11_6e756d457870616e644f4bZQBiMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna13_6e756d4465616c6c6f63617465ZQBmMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna13_6e756d5265616c6c6f63617465ZQBmMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna15_6e756d5265616c6c6f636174654f4bZQBqMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna16_6e756d4465616c6c6f63617465416c6cZQBsMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna18_6e756d416c69676e6564416c6c6f63617465ZQBwMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna20_6e756d5265616c6c6f63617465496e506c616365ZQCaMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna7_6e756d4f776e73ZQzMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna9_6e756d457870616e64ZQBdMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa10_62797465734d6f766564ZQBhMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa10_6279746573536c61636bZQBhMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa11_6e756d416c6c6f63617465ZQBjMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa11_6e756d457870616e644f4bZQBjMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6279746573457870616e646564ZQBnMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_62797465734e6f744d6f766564ZQBnMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6e756d416c6c6f636174654f4bZQBnMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6e756d4465616c6c6f63617465ZQBnMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6e756d5265616c6c6f63617465ZQBnMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa14_6279746573416c6c6f6361746564ZQBpMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa15_6279746573436f6e74726163746564ZQBrMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa15_6e756d5265616c6c6f636174654f4bZQBrMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa16_6e756d4465616c6c6f63617465416c6cZQBtMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa18_6e756d416c69676e6564416c6c6f63617465ZQBxMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa20_6e756d416c69676e6564416c6c6f636174654f6bZQCbMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa20_6e756d5265616c6c6f63617465496e506c616365ZQCbMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa7_6e756d4f776e73ZQBaMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa9_627974657355736564ZQBeMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa9_6e756d457870616e64ZQBeMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T8ownsImplVnnVii0ZQrMFNaNbNiNfAvZSQKqQEl7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks16scoped_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks16scoped_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks17kernighan_ritchie11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks17kernighan_ritchie12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks18aligned_block_list11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks18aligned_block_list12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks18fallback_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks18fallback_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator15alignedAllocateMFNbNimkZAv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator5emptyMFNbNiZSQEf8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6__dtorMFNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6expandMFNbNiKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator8allocateMFNbNimZAv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator8opAssignMFNbNcNiNjSQElQEkQDzQDsQDeQChZQu@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1510deallocateMFNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1513deallocateAllMFNbNiZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1513goodAllocSizeMFNbNimZm@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1516getAvailableSizeMFNbNiZm@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1522extendMemoryProtectionMFNbNiPvmZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin154ownsMFNbNiAvZSQEq8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin156__ctorMFNbNcNimZSQEtQEsQEhQEaQDmQCp@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator12allocateImplMOFNbNimkZAv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator15alignedAllocateMOFNbNimkZAv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6expandMOFNbNiKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator8allocateMOFNbNimZAv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1510deallocateMOFNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1513deallocateAllMOFNbNiZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1513goodAllocSizeMOFNbNimZm@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1516getAvailableSizeMOFNbNiZm@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1522extendMemoryProtectionMOFNbNiPvmZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin154ownsMOFNbNiAvZSQEx8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin156__ctorMOFNbNcNimZOSQFbQFaQEpQEiQDuQCx@Base 15 + _D3std12experimental9allocator15building_blocks6region11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks6region12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg10deallocateMFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg10roundedEndMxFNaNbNiNeZPv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg11allocateAllMFNaNbNiNeZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg12roundedBeginMxFNaNbNiNeZPv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg13deallocateAllMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg13goodAllocSizeMxFNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg15alignedAllocateMFNaNbNiNemkZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg4ownsMxFNaNbNiNexAvZSQGhQDh7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg5emptyMxFNaNbNiNfZSQGfQDf7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6__ctorMFNaNbNcNiAhZSQGhQGgQFvQFoQFa__TQEwVki16VQEji0ZQFl@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6expandMFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg8allocateMFNaNbNiNemZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg9availableMxFNaNbNiNfZm@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn10deallocateMFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn10roundedEndMxFNaNbNiNeZPv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn11allocateAllMFNaNbNiNeZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn12roundedBeginMxFNaNbNiNeZPv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn13deallocateAllMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn13goodAllocSizeMxFNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn15alignedAllocateMFNaNbNiNemkZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn4ownsMxFNaNbNiNexAvZSQHoQDh7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn5emptyMxFNaNbNiNfZSQHmQDf7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__ctorMFNaNbNcNiAhZSQHoQHnQHcQGvQGh__TQGdTQFzVki16VQEni0ZQGw@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__ctorMFNaNbNcNimZSQHnQHmQHbQGuQGg__TQGcTQFyVki16VQEmi0ZQGv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__dtorMFNaNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6expandMFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn8allocateMFNaNbNiNemZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn8opAssignMFNaNbNcNiNjSQHpQHoQHdQGwQGi__TQGeTQGaVki16VQEoi0ZQGxZQBq@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn9availableMxFNaNbNiNfZm@Base 15 + _D3std12experimental9allocator15building_blocks9free_list11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks9free_list12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks9free_tree11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks9free_tree12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks9quantizer11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks9quantizer12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator16ISharedAllocator11__InterfaceZ@Base 15 + _D3std12experimental9allocator16_threadAllocatorSQBvQBuQBj12RCIAllocator@Base 15 + _D3std12experimental9allocator16processAllocatorFNbNcNdNiNeZ15forceAttributesFZPOSQDcQDbQCq18RCISharedAllocator@Base 15 + _D3std12experimental9allocator16processAllocatorFNbNcNdNiNeZOSQCiQChQBw18RCISharedAllocator@Base 15 + _D3std12experimental9allocator16processAllocatorFNbNdNiKOSQCeQCdQBs18RCISharedAllocatorZv@Base 15 + _D3std12experimental9allocator17_processAllocatorOSQBxQBwQBl18RCISharedAllocator@Base 15 + _D3std12experimental9allocator18RCISharedAllocator10__postblitMOFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator18RCISharedAllocator10deallocateMOFNbAvZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator10reallocateMOFNbKAvmZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator11__xopEqualsMxFKOxSQCqQCpQCeQBxZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator11allocateAllMOFNbZAv@Base 15 + _D3std12experimental9allocator18RCISharedAllocator13deallocateAllMOFNbZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator13goodAllocSizeMOFNbmZm@Base 15 + _D3std12experimental9allocator18RCISharedAllocator15alignedAllocateMOFNbmkZAv@Base 15 + _D3std12experimental9allocator18RCISharedAllocator17alignedReallocateMOFNbKAvmkZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator22resolveInternalPointerMOFNbxPvKAvZSQDh8typecons7Ternary@Base 15 + _D3std12experimental9allocator18RCISharedAllocator4ownsMOFNbAvZSQCk8typecons7Ternary@Base 15 + _D3std12experimental9allocator18RCISharedAllocator5emptyMOFNbZSQCj8typecons7Ternary@Base 15 + _D3std12experimental9allocator18RCISharedAllocator6__ctorMOFNaNbNcNiNfOCQCsQCrQCg16ISharedAllocatorZOSQDwQDvQDkQDd@Base 15 + _D3std12experimental9allocator18RCISharedAllocator6__dtorMOFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator18RCISharedAllocator6__initZ@Base 15 + _D3std12experimental9allocator18RCISharedAllocator6expandMOFNbKAvmZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator8allocateMOFNbmC8TypeInfoZAv@Base 15 + _D3std12experimental9allocator18RCISharedAllocator9__xtoHashFNbNeKOxSQCpQCoQCdQBwZm@Base 15 + _D3std12experimental9allocator18RCISharedAllocator9alignmentMOFNbNdZk@Base 15 + _D3std12experimental9allocator18RCISharedAllocator__T6isNullTOSQCjQCiQBxQBqZQxMOFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator__T8opAssignZQkMOFNaNbNcNiNfOSQDaQCzQCoQChZOQp@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10deallocateMFNbAvZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10reallocateMFNbKAvmZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator11__fieldDtorMFNaNbNiNlNeZv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator11allocateAllMFNbZAv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13deallocateAllMFNbZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13goodAllocSizeMFNbmZm@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator15alignedAllocateMFNbmkZAv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator17alignedReallocateMFNbKAvmkZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator22resolveInternalPointerMFNbxPvKAvZSQEj8typecons7Ternary@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator4ownsMFNbAvZSQDm8typecons7Ternary@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator5emptyMFNbZSQDl8typecons7Ternary@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6__ctorMFNaNbNiNfKOSQDtQDsQDh18RCISharedAllocatorZCQEyQExQEmQEfFNbNcNiNfZQDm@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6__initZ@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6__vtblZ@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6decRefMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6expandMFNbKAvmZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6incRefMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator7__ClassZ@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator8allocateMFNbmC8TypeInfoZAv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator9alignmentMFNbNdZk@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ17__lambda_L1010_C5FNbNiNeZv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ21_threadAllocatorStateG4m@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZSQCjQCiQBx12RCIAllocator@Base 15 + _D3std12experimental9allocator5typed11__moduleRefZ@Base 15 + _D3std12experimental9allocator5typed12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator6common11__moduleRefZ@Base 15 + _D3std12experimental9allocator6common11alignDownToFNaNbNiNkMPvkZQe@Base 15 + _D3std12experimental9allocator6common12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator6common13divideRoundUpFNaNbNiNfmmZm@Base 15 + _D3std12experimental9allocator6common13trailingZerosFNaNbNiNfmZk@Base 15 + _D3std12experimental9allocator6common15forwardToMemberFAyaAQeXQh@Base 15 + _D3std12experimental9allocator6common17roundUpToPowerOf2FNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator6common18effectiveAlignmentFNaNbNiPvZm@Base 15 + _D3std12experimental9allocator6common18roundUpToAlignmentFNaNbNiAvkZQe@Base 15 + _D3std12experimental9allocator6common18roundUpToAlignmentFNaNbNiNfmkZm@Base 15 + _D3std12experimental9allocator6common19roundUpToMultipleOfFNaNbNiNfmkZm@Base 15 + _D3std12experimental9allocator6common20roundDownToAlignmentFNaNbNiNfmkZm@Base 15 + _D3std12experimental9allocator6common21isGoodStaticAlignmentFNaNbNiNfkZb@Base 15 + _D3std12experimental9allocator6common22isGoodDynamicAlignmentFNaNbNiNfkZb@Base 15 + _D3std12experimental9allocator6common22roundStartToMultipleOfFNaNbNiAvkZQe@Base 15 + _D3std12experimental9allocator6common9alignUpToFNaNbNiNkMPvkZQe@Base 15 + _D3std12experimental9allocator6common__T10reallocateTSQCaQBzQBo15building_blocks6region__T6RegionTSQDtQDsQDh14mmap_allocator13MmapAllocatorVki16VEQFo8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnZQGpFNaNbNiKQGnKAvmZb@Base 15 + _D3std12experimental9allocator6common__T13goodAllocSizeTSQCdQCcQBr15building_blocks15stats_collector__T14StatsCollectorTSQEpQEoQEdQCm6region__T6RegionTSQFuQFtQFi14mmap_allocator13MmapAllocatorVki16VEQHp8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQJfFNaNbNiNfKQJcmZm@Base 15 + _D3std12experimental9allocator6common__T9alignedAtTvZQnFNaNbNiNfPvkZb@Base 15 + _D3std12experimental9allocator8showcase11__moduleRefZ@Base 15 + _D3std12experimental9allocator8showcase12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__ctorMFNcmZSQDaQCzQCoQChQCbFmZQBo@Base 15 + _D3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__initZ@Base 15 + _D3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6opCallMFNaNbNimZSQDeQDdQCs15building_blocks6region__T6RegionTSQExQEwQEl14mmap_allocator13MmapAllocatorVki16VEQGs8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn@Base 15 + _D3std12experimental9allocator8showcase14mmapRegionListFmZSQCfQCeQBt15building_blocks14allocator_list__T13AllocatorListTSQEpQEoQEdQDwQDqFmZ7FactoryTSQFrQFqQFfQDm14null_allocator13NullAllocatorZQDl@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10deallocateMOFNbAvZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10reallocateMOFNbKAvmZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk11allocateAllMOFNbZAv@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13deallocateAllMOFNbZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13goodAllocSizeMOFNbmZm@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk15alignedAllocateMOFNbmkZAv@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk17alignedReallocateMOFNbKAvmkZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk22resolveInternalPointerMOFNbxPvKAvZSQHdQDm7Ternary@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk4ownsMOFNbAvZSQGgQCp7Ternary@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk5emptyMOFNbZSQGfQCo7Ternary@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6__initZ@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6__vtblZ@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6decRefMOFNaNbNiNeZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6expandMOFNbKAvmZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6incRefMOFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk7__ClassZ@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk8allocateMOFNbmC8TypeInfoZAv@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk9alignmentMOFNbNdZk@Base 15 + _D3std12experimental9allocator__T21sharedAllocatorObjectTOxSQCgQCfQBu12gc_allocator11GCAllocatorZQCmFNbKOxQBvZ5stateOG3m@Base 15 + _D3std12experimental9allocator__T21sharedAllocatorObjectTOxSQCgQCfQBu12gc_allocator11GCAllocatorZQCmFNbKOxQBvZ6resultOSQEnQEmQEb18RCISharedAllocator@Base 15 + _D3std12experimental9allocator__T21sharedAllocatorObjectTOxSQCgQCfQBu12gc_allocator11GCAllocatorZQCmFNbNiKOxQBxZOSQEiQEhQDw18RCISharedAllocator@Base 15 + _D3std3csv11__moduleRefZ@Base 15 + _D3std3csv12CSVException6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCnQCmQCl@Base 15 + _D3std3csv12CSVException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCnQCmQCl@Base 15 + _D3std3csv12CSVException6__ctorMFNaNbNiNfAyammC6object9ThrowableQxmZCQCpQCoQCn@Base 15 + _D3std3csv12CSVException6__initZ@Base 15 + _D3std3csv12CSVException6__vtblZ@Base 15 + _D3std3csv12CSVException7__ClassZ@Base 15 + _D3std3csv12CSVException8toStringMxFNaNfZAya@Base 15 + _D3std3csv12__ModuleInfoZ@Base 15 + _D3std3csv23HeaderMismatchException6__initZ@Base 15 + _D3std3csv23HeaderMismatchException6__vtblZ@Base 15 + _D3std3csv23HeaderMismatchException7__ClassZ@Base 15 + _D3std3csv23HeaderMismatchException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDhQDgQDf@Base 15 + _D3std3csv23HeaderMismatchException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDhQDgQDf@Base 15 + _D3std3csv23IncompleteCellException6__initZ@Base 15 + _D3std3csv23IncompleteCellException6__vtblZ@Base 15 + _D3std3csv23IncompleteCellException7__ClassZ@Base 15 + _D3std3csv23IncompleteCellException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDhQDgQDf@Base 15 + _D3std3csv23IncompleteCellException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDhQDgQDf@Base 15 + _D3std3net4curl11__moduleRefZ@Base 15 + _D3std3net4curl12AutoProtocol6__initZ@Base 15 + _D3std3net4curl12__ModuleInfoZ@Base 15 + _D3std3net4curl13CurlException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCrQCqQCpQCn@Base 15 + _D3std3net4curl13CurlException6__initZ@Base 15 + _D3std3net4curl13CurlException6__vtblZ@Base 15 + _D3std3net4curl13CurlException7__ClassZ@Base 15 + _D3std3net4curl19HTTPStatusException6__ctorMFNaNbNfiAyaQdmC6object9ThrowableZCQCyQCxQCwQCu@Base 15 + _D3std3net4curl19HTTPStatusException6__initZ@Base 15 + _D3std3net4curl19HTTPStatusException6__vtblZ@Base 15 + _D3std3net4curl19HTTPStatusException7__ClassZ@Base 15 + _D3std3net4curl20CurlTimeoutException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCyQCxQCwQCu@Base 15 + _D3std3net4curl20CurlTimeoutException6__initZ@Base 15 + _D3std3net4curl20CurlTimeoutException6__vtblZ@Base 15 + _D3std3net4curl20CurlTimeoutException7__ClassZ@Base 15 + _D3std3net4curl3FTP10addCommandMFAxaZv@Base 15 + _D3std3net4curl3FTP10initializeMFZv@Base 15 + _D3std3net4curl3FTP11__fieldDtorMFZv@Base 15 + _D3std3net4curl3FTP13clearCommandsMFZv@Base 15 + _D3std3net4curl3FTP13contentLengthMFNdmZv@Base 15 + _D3std3net4curl3FTP15__fieldPostblitMFNaNbNiNlZv@Base 15 + _D3std3net4curl3FTP3dupMFZSQzQxQvQs@Base 15 + _D3std3net4curl3FTP3urlMFNdAxaZv@Base 15 + _D3std3net4curl3FTP4Impl11__xopEqualsMxFKxSQBpQBoQBnQBlQBkZb@Base 15 + _D3std3net4curl3FTP4Impl6__dtorMFZv@Base 15 + _D3std3net4curl3FTP4Impl6__initZ@Base 15 + _D3std3net4curl3FTP4Impl8opAssignMFNcNjSQBmQBlQBkQBiQBhZQr@Base 15 + _D3std3net4curl3FTP4Impl9__xtoHashFNbNeKxSQBoQBnQBmQBkQBjZm@Base 15 + _D3std3net4curl3FTP6__initZ@Base 15 + _D3std3net4curl3FTP6opCallFAxaZSQBeQBdQBcQBa@Base 15 + _D3std3net4curl3FTP6opCallFZSQBbQBaQzQw@Base 15 + _D3std3net4curl3FTP7performMFEQBc8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 + _D3std3net4curl3FTP8encodingMFNdAyaZv@Base 15 + _D3std3net4curl3FTP8encodingMFNdZAya@Base 15 + _D3std3net4curl3FTP8opAssignMFNcNjSQBhQBgQBfQBdZQo@Base 15 + _D3std3net4curl3FTP9__mixin1910dnsTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl3FTP9__mixin1910onProgressMFNdDFmmmmZiZv@Base 15 + _D3std3net4curl3FTP9__mixin1910setNoProxyMFAyaZv@Base 15 + _D3std3net4curl3FTP9__mixin1910tcpNoDelayMFNdbZv@Base 15 + _D3std3net4curl3FTP9__mixin1910verifyHostMFNdbZv@Base 15 + _D3std3net4curl3FTP9__mixin1910verifyPeerMFNdbZv@Base 15 + _D3std3net4curl3FTP9__mixin1911dataTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl3FTP9__mixin1912netInterfaceMFNdAxaZv@Base 15 + _D3std3net4curl3FTP9__mixin1912netInterfaceMFNdCQBu6socket15InternetAddressZv@Base 15 + _D3std3net4curl3FTP9__mixin1912netInterfaceMFNdxG4hZv@Base 15 + _D3std3net4curl3FTP9__mixin1914connectTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl3FTP9__mixin1914localPortRangeMFNdtZv@Base 15 + _D3std3net4curl3FTP9__mixin1916operationTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl3FTP9__mixin1917setAuthenticationMFAxaQdQfZv@Base 15 + _D3std3net4curl3FTP9__mixin1922setProxyAuthenticationMFAxaQdZv@Base 15 + _D3std3net4curl3FTP9__mixin1928defaultAsyncStringBufferSizek@Base 15 + _D3std3net4curl3FTP9__mixin195proxyMFNdAxaZv@Base 15 + _D3std3net4curl3FTP9__mixin196handleMFNcNdNjZSQBsQBrQBq4Curl@Base 15 + _D3std3net4curl3FTP9__mixin196onSendMFNdDFAvZmZv@Base 15 + _D3std3net4curl3FTP9__mixin197verboseMFNdbZv@Base 15 + _D3std3net4curl3FTP9__mixin198shutdownMFZv@Base 15 + _D3std3net4curl3FTP9__mixin199isStoppedMFNdZb@Base 15 + _D3std3net4curl3FTP9__mixin199localPortMFNdtZv@Base 15 + _D3std3net4curl3FTP9__mixin199onReceiveMFNdDFAhZmZv@Base 15 + _D3std3net4curl3FTP9__mixin199proxyPortMFNdtZv@Base 15 + _D3std3net4curl3FTP9__mixin199proxyTypeMFNdE3etc1cQBo9CurlProxyZv@Base 15 + _D3std3net4curl3FTP9getTimingMFE3etc1cQBc8CurlInfoKdZi@Base 15 + _D3std3net4curl4Curl10initializeMFZv@Base 15 + _D3std3net4curl4Curl10onProgressMFNdDFmmmmZiZv@Base 15 + _D3std3net4curl4Curl11errorStringMFiZAya@Base 15 + _D3std3net4curl4Curl13_seekCallbackUPvliZi@Base 15 + _D3std3net4curl4Curl13_sendCallbackUPammPvZm@Base 15 + _D3std3net4curl4Curl14onSocketOptionMFNdDFEQBp6socket8socket_tE3etc1cQCh12CurlSockTypeZiZv@Base 15 + _D3std3net4curl4Curl14throwOnStoppedMFAyaZv@Base 15 + _D3std3net4curl4Curl15onReceiveHeaderMFNdDFIAaZvZv@Base 15 + _D3std3net4curl4Curl16_receiveCallbackUxPammPvZm@Base 15 + _D3std3net4curl4Curl16clearIfSupportedMFE3etc1cQBl10CurlOptionZv@Base 15 + _D3std3net4curl4Curl17_progressCallbackUPvddddZi@Base 15 + _D3std3net4curl4Curl21_socketOptionCallbackUPvEQBt6socket8socket_tiZi@Base 15 + _D3std3net4curl4Curl22_receiveHeaderCallbackUxPammPvZm@Base 15 + _D3std3net4curl4Curl3dupMFZSQBaQzQxQu@Base 15 + _D3std3net4curl4Curl3setMFE3etc1cQx10CurlOptionAxaZv@Base 15 + _D3std3net4curl4Curl3setMFE3etc1cQx10CurlOptionPvZv@Base 15 + _D3std3net4curl4Curl3setMFE3etc1cQx10CurlOptionlZv@Base 15 + _D3std3net4curl4Curl5clearMFE3etc1cQz10CurlOptionZv@Base 15 + _D3std3net4curl4Curl5pauseMFbbZv@Base 15 + _D3std3net4curl4Curl6__initZ@Base 15 + _D3std3net4curl4Curl6_checkMFiZv@Base 15 + _D3std3net4curl4Curl6onSeekMFNdDFlE3etc1cQBf11CurlSeekPosZEQyQwQCb8CurlSeekZv@Base 15 + _D3std3net4curl4Curl6onSendMFNdDFAvZmZv@Base 15 + _D3std3net4curl4Curl7performMFEQBd8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 + _D3std3net4curl4Curl7stoppedMxFNdZb@Base 15 + _D3std3net4curl4Curl8shutdownMFZv@Base 15 + _D3std3net4curl4Curl9getTimingMFE3etc1cQBd8CurlInfoKdZi@Base 15 + _D3std3net4curl4Curl9onReceiveMFNdDFAhZmZv@Base 15 + _D3std3net4curl4CurlQkFNcNdZSQBbQBaQz7CurlAPI3API@Base 15 + _D3std3net4curl4HTTP10StatusLine11__xopEqualsMxFKxSQBxQBwQBvQBtQBrZb@Base 15 + _D3std3net4curl4HTTP10StatusLine5resetMFNfZv@Base 15 + _D3std3net4curl4HTTP10StatusLine6__initZ@Base 15 + _D3std3net4curl4HTTP10StatusLine8toStringMxFZAya@Base 15 + _D3std3net4curl4HTTP10StatusLine9__xtoHashFNbNeKxSQBwQBvQBuQBsQBqZm@Base 15 + _D3std3net4curl4HTTP10initializeMFZv@Base 15 + _D3std3net4curl4HTTP10statusLineMFNdZSQBkQBjQBiQBg10StatusLine@Base 15 + _D3std3net4curl4HTTP11__fieldDtorMFZv@Base 15 + _D3std3net4curl4HTTP11setPostDataMFAxvAyaZv@Base 15 + _D3std3net4curl4HTTP12maxRedirectsMFNdkZv@Base 15 + _D3std3net4curl4HTTP12setCookieJarMFAxaZv@Base 15 + _D3std3net4curl4HTTP12setUserAgentMFAxaZv@Base 15 + _D3std3net4curl4HTTP13contentLengthMFNdmZv@Base 15 + _D3std3net4curl4HTTP14flushCookieJarMFZv@Base 15 + _D3std3net4curl4HTTP15__fieldPostblitMFNaNbNiNlZv@Base 15 + _D3std3net4curl4HTTP15clearAllCookiesMFZv@Base 15 + _D3std3net4curl4HTTP15onReceiveHeaderMFNdDFIAaIQdZvZv@Base 15 + _D3std3net4curl4HTTP15parseStatusLineFNfxAaJSQBrQBqQBpQBn10StatusLineZb@Base 15 + _D3std3net4curl4HTTP15responseHeadersMFNdZHAyaQd@Base 15 + _D3std3net4curl4HTTP16addRequestHeaderMFAxaQdZv@Base 15 + _D3std3net4curl4HTTP16defaultUserAgentFNdZ3bufG63a@Base 15 + _D3std3net4curl4HTTP16defaultUserAgentFNdZ9userAgentAya@Base 15 + _D3std3net4curl4HTTP16defaultUserAgentFNdZAya@Base 15 + _D3std3net4curl4HTTP16setTimeConditionMFE3etc1cQBl12CurlTimeCondSQCl8datetime7systime7SysTimeZv@Base 15 + _D3std3net4curl4HTTP19clearRequestHeadersMFZv@Base 15 + _D3std3net4curl4HTTP19clearSessionCookiesMFZv@Base 15 + _D3std3net4curl4HTTP19defaultMaxRedirectsk@Base 15 + _D3std3net4curl4HTTP19onReceiveStatusLineMFNdDFSQBuQBtQBsQBq10StatusLineZvZv@Base 15 + _D3std3net4curl4HTTP20authenticationMethodMFNdE3etc1cQBr8CurlAuthZv@Base 15 + _D3std3net4curl4HTTP3dupMFZSQBaQzQxQu@Base 15 + _D3std3net4curl4HTTP3urlMFNdAxaZv@Base 15 + _D3std3net4curl4HTTP4Impl11__xopEqualsMxFKxSQBqQBpQBoQBmQBkZb@Base 15 + _D3std3net4curl4HTTP4Impl15onReceiveHeaderMFNdDFIAaIQdZvZv@Base 15 + _D3std3net4curl4HTTP4Impl6__dtorMFZv@Base 15 + _D3std3net4curl4HTTP4Impl6__initZ@Base 15 + _D3std3net4curl4HTTP4Impl8opAssignMFNcNjSQBnQBmQBlQBjQBhZQr@Base 15 + _D3std3net4curl4HTTP4Impl9__xtoHashFNbNeKxSQBpQBoQBnQBlQBjZm@Base 15 + _D3std3net4curl4HTTP6__initZ@Base 15 + _D3std3net4curl4HTTP6caInfoMFNdAxaZv@Base 15 + _D3std3net4curl4HTTP6methodMFNdEQBeQBdQBcQBa6MethodZv@Base 15 + _D3std3net4curl4HTTP6methodMFNdZEQBfQBeQBdQBb6Method@Base 15 + _D3std3net4curl4HTTP6opCallFAxaZSQBfQBeQBdQBb@Base 15 + _D3std3net4curl4HTTP6opCallFZSQBcQBbQBaQy@Base 15 + _D3std3net4curl4HTTP7performMFEQBd8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 + _D3std3net4curl4HTTP8opAssignMFNcNjSQBiQBhQBgQBeZQo@Base 15 + _D3std3net4curl4HTTP8postDataMFNdAxaZv@Base 15 + _D3std3net4curl4HTTP8postDataMFNdAxvZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610dnsTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610onProgressMFNdDFmmmmZiZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610setNoProxyMFAyaZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610tcpNoDelayMFNdbZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610verifyHostMFNdbZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610verifyPeerMFNdbZv@Base 15 + _D3std3net4curl4HTTP9__mixin4611dataTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4HTTP9__mixin4612netInterfaceMFNdAxaZv@Base 15 + _D3std3net4curl4HTTP9__mixin4612netInterfaceMFNdCQBv6socket15InternetAddressZv@Base 15 + _D3std3net4curl4HTTP9__mixin4612netInterfaceMFNdxG4hZv@Base 15 + _D3std3net4curl4HTTP9__mixin4614connectTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4HTTP9__mixin4614localPortRangeMFNdtZv@Base 15 + _D3std3net4curl4HTTP9__mixin4616operationTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4HTTP9__mixin4617setAuthenticationMFAxaQdQfZv@Base 15 + _D3std3net4curl4HTTP9__mixin4622setProxyAuthenticationMFAxaQdZv@Base 15 + _D3std3net4curl4HTTP9__mixin4628defaultAsyncStringBufferSizek@Base 15 + _D3std3net4curl4HTTP9__mixin465proxyMFNdAxaZv@Base 15 + _D3std3net4curl4HTTP9__mixin466handleMFNcNdNjZSQBtQBsQBr4Curl@Base 15 + _D3std3net4curl4HTTP9__mixin466onSendMFNdDFAvZmZv@Base 15 + _D3std3net4curl4HTTP9__mixin467verboseMFNdbZv@Base 15 + _D3std3net4curl4HTTP9__mixin468shutdownMFZv@Base 15 + _D3std3net4curl4HTTP9__mixin469isStoppedMFNdZb@Base 15 + _D3std3net4curl4HTTP9__mixin469localPortMFNdtZv@Base 15 + _D3std3net4curl4HTTP9__mixin469onReceiveMFNdDFAhZmZv@Base 15 + _D3std3net4curl4HTTP9__mixin469proxyPortMFNdtZv@Base 15 + _D3std3net4curl4HTTP9__mixin469proxyTypeMFNdE3etc1cQBp9CurlProxyZv@Base 15 + _D3std3net4curl4HTTP9getTimingMFE3etc1cQBd8CurlInfoKdZi@Base 15 + _D3std3net4curl4HTTP9setCookieMFAxaZv@Base 15 + _D3std3net4curl4SMTP10initializeMFZv@Base 15 + _D3std3net4curl4SMTP11__fieldDtorMFZv@Base 15 + _D3std3net4curl4SMTP15__fieldPostblitMFNaNbNiNlZv@Base 15 + _D3std3net4curl4SMTP3urlMFNdAxaZv@Base 15 + _D3std3net4curl4SMTP4Impl6__dtorMFZv@Base 15 + _D3std3net4curl4SMTP4Impl6__initZ@Base 15 + _D3std3net4curl4SMTP4Impl7messageMFNdAyaZv@Base 15 + _D3std3net4curl4SMTP4Impl8opAssignMFNcNjSQBnQBmQBlQBjQBhZQr@Base 15 + _D3std3net4curl4SMTP6__initZ@Base 15 + _D3std3net4curl4SMTP6opCallFAxaZSQBfQBeQBdQBb@Base 15 + _D3std3net4curl4SMTP6opCallFZSQBcQBbQBaQy@Base 15 + _D3std3net4curl4SMTP7messageMFNdAyaZv@Base 15 + _D3std3net4curl4SMTP7performMFEQBd8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 + _D3std3net4curl4SMTP8opAssignMFNcNjSQBiQBhQBgQBeZQo@Base 15 + _D3std3net4curl4SMTP9__mixin1310dnsTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4SMTP9__mixin1310onProgressMFNdDFmmmmZiZv@Base 15 + _D3std3net4curl4SMTP9__mixin1310setNoProxyMFAyaZv@Base 15 + _D3std3net4curl4SMTP9__mixin1310tcpNoDelayMFNdbZv@Base 15 + _D3std3net4curl4SMTP9__mixin1310verifyHostMFNdbZv@Base 15 + _D3std3net4curl4SMTP9__mixin1310verifyPeerMFNdbZv@Base 15 + _D3std3net4curl4SMTP9__mixin1311dataTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4SMTP9__mixin1312netInterfaceMFNdAxaZv@Base 15 + _D3std3net4curl4SMTP9__mixin1312netInterfaceMFNdCQBv6socket15InternetAddressZv@Base 15 + _D3std3net4curl4SMTP9__mixin1312netInterfaceMFNdxG4hZv@Base 15 + _D3std3net4curl4SMTP9__mixin1314connectTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4SMTP9__mixin1314localPortRangeMFNdtZv@Base 15 + _D3std3net4curl4SMTP9__mixin1316operationTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4SMTP9__mixin1317setAuthenticationMFAxaQdQfZv@Base 15 + _D3std3net4curl4SMTP9__mixin1322setProxyAuthenticationMFAxaQdZv@Base 15 + _D3std3net4curl4SMTP9__mixin1328defaultAsyncStringBufferSizek@Base 15 + _D3std3net4curl4SMTP9__mixin135proxyMFNdAxaZv@Base 15 + _D3std3net4curl4SMTP9__mixin136handleMFNcNdNjZSQBtQBsQBr4Curl@Base 15 + _D3std3net4curl4SMTP9__mixin136onSendMFNdDFAvZmZv@Base 15 + _D3std3net4curl4SMTP9__mixin137verboseMFNdbZv@Base 15 + _D3std3net4curl4SMTP9__mixin138shutdownMFZv@Base 15 + _D3std3net4curl4SMTP9__mixin139isStoppedMFNdZb@Base 15 + _D3std3net4curl4SMTP9__mixin139localPortMFNdtZv@Base 15 + _D3std3net4curl4SMTP9__mixin139onReceiveMFNdDFAhZmZv@Base 15 + _D3std3net4curl4SMTP9__mixin139proxyPortMFNdtZv@Base 15 + _D3std3net4curl4SMTP9__mixin139proxyTypeMFNdE3etc1cQBp9CurlProxyZv@Base 15 + _D3std3net4curl7CurlAPI3API6__initZ@Base 15 + _D3std3net4curl7CurlAPI4_apiSQBbQBaQzQw3API@Base 15 + _D3std3net4curl7CurlAPI6__initZ@Base 15 + _D3std3net4curl7CurlAPI7_handlePv@Base 15 + _D3std3net4curl7CurlAPI7loadAPIFZ5namesyAAa@Base 15 + _D3std3net4curl7CurlAPI7loadAPIFZ7cleanupUZv@Base 15 + _D3std3net4curl7CurlAPI7loadAPIFZPv@Base 15 + _D3std3net4curl7CurlAPI8instanceFNcNdZSQBlQBkQBjQBh3API@Base 15 + _D3std3net4curl8isFTPUrlFAxaZb@Base 15 + _D3std3net7isemail10AsciiToken6__initZ@Base 15 + _D3std3net7isemail11EmailStatus10domainPartMxFNaNbNdNiNjNlNfZAya@Base 15 + _D3std3net7isemail11EmailStatus10statusCodeMxFNaNbNdNiNlNfZEQCgQCfQCe15EmailStatusCode@Base 15 + _D3std3net7isemail11EmailStatus11__xopEqualsMxFKxSQBwQBvQBuQBpZb@Base 15 + _D3std3net7isemail11EmailStatus5validMxFNaNbNdNiNlNfZb@Base 15 + _D3std3net7isemail11EmailStatus6__ctorMFNaNbNcNiNfbAyaQdEQCdQCcQCb15EmailStatusCodeZSQDfQDeQDdQCy@Base 15 + _D3std3net7isemail11EmailStatus6__initZ@Base 15 + _D3std3net7isemail11EmailStatus6statusMxFNaNbNdNiNlNfZAya@Base 15 + _D3std3net7isemail11EmailStatus8toStringMxFNaNlNfZAya@Base 15 + _D3std3net7isemail11EmailStatus9__xtoHashFNbNeKxSQBvQBuQBtQBoZm@Base 15 + _D3std3net7isemail11EmailStatus9localPartMxFNaNbNdNiNjNlNfZAya@Base 15 + _D3std3net7isemail11__moduleRefZ@Base 15 + _D3std3net7isemail12__ModuleInfoZ@Base 15 + _D3std3net7isemail15EmailStatusCode6__initZ@Base 15 + _D3std3net7isemail21statusCodeDescriptionFNaNbNiNfEQBxQBwQBv15EmailStatusCodeZAya@Base 15 + _D3std3uni10compressToFNaNbNfkMKAhZv@Base 15 + _D3std3uni10isAlphaNumFNaNbNiNfwZb@Base 15 + _D3std3uni10nfkcQCTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi8Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni10nfkcQCTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni10nfkdQCTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi8Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni10nfkdQCTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni10numberTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi7Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi7ZQCvZQFf@Base 15 + _D3std3uni10numberTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi7Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi7ZQCvZQFf@Base 15 + _D3std3uni10safeRead24FNaNbNiMxPhmZk@Base 15 + _D3std3uni10symbolTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi7Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi7ZQCvZQFf@Base 15 + _D3std3uni10symbolTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi7Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi7ZQCvZQFf@Base 15 + _D3std3uni10toLowerTabFNaNbNiNemZw@Base 15 + _D3std3uni10toTitleTabFNaNbNiNemZw@Base 15 + _D3std3uni10toUpperTabFNaNbNiNemZw@Base 15 + _D3std3uni10xpictoTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi8Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni10xpictoTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni11__moduleRefZ@Base 15 + _D3std3uni11caseEncloseFNaNfSQBbQBa__T13InversionListTSQCbQCa8GcPolicyZQBhZQBv@Base 15 + _D3std3uni11composeJamoFNaNbNiNfwwwZw@Base 15 + _D3std3uni11isGraphicalFNaNbNiNfwZb@Base 15 + _D3std3uni11isSurrogateFNaNbNiNfwZb@Base 15 + _D3std3uni11prependTrieFNaNbNdNiNfZ3resySQBnQBm__T4TrieTSQCdQCc__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDtQDs__T9sliceBitsVmi13Vmi21ZQvTSQFbQFa__TQBiVmi8Vmi13ZQBvTSQGcQGb__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni11prependTrieFNaNbNdNiNfZySQBjQBi__T4TrieTSQBzQBy__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDpQDo__T9sliceBitsVmi13Vmi21ZQvTSQExQEw__TQBiVmi8Vmi13ZQBvTSQFyQFx__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni11safeWrite24FNaNbNiMPhkmZv@Base 15 + _D3std3uni11toTitlecaseFNaNbNiNfwZw@Base 15 + _D3std3uni12__ModuleInfoZ@Base 15 + _D3std3uni12fullCaseTrieFNaNbNdNiNfZ3resySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni12fullCaseTrieFNaNbNdNiNfZySQBkQBj__T4TrieTtTwVmi1114112TSQCoQCn__T9sliceBitsVmi13Vmi21ZQvTSQDwQDv__TQBiVmi6Vmi13ZQBvTSQExQEw__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni12isPow2OrZeroFNaNbNiNfmZb@Base 15 + _D3std3uni12isPrivateUseFNaNbNiNfwZb@Base 15 + _D3std3uni12toLowerIndexFNaNbNiNewZt@Base 15 + _D3std3uni12toTitleIndexFNaNbNiNewZt@Base 15 + _D3std3uni12toUpperIndexFNaNbNiNewZt@Base 15 + _D3std3uni13ReallocPolicy6__initZ@Base 15 + _D3std3uni13ReallocPolicy__T5allocTkZQjFNaNbNiNemZAk@Base 15 + _D3std3uni13ReallocPolicy__T6appendTkTiZQmFNaNbNiNfKAkiZv@Base 15 + _D3std3uni13ReallocPolicy__T7destroyTkZQlFNaNbNiNeMKAkZv@Base 15 + _D3std3uni13ReallocPolicy__T7reallocTkZQlFNaNbNiNeNkMAkmZQe@Base 15 + _D3std3uni13getUnicodeSetFNfMxAabbZSQBiQBh__T13InversionListTSQCiQCh8GcPolicyZQBh@Base 15 + _D3std3uni13graphicalTrieFNaNbNdNiNfZ3resySQBpQBo__T4TrieTSQCfQCe__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDvQDu__T9sliceBitsVmi13Vmi21ZQvTSQFdQFc__TQBiVmi8Vmi13ZQBvTSQGeQGd__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13graphicalTrieFNaNbNdNiNfZySQBlQBk__T4TrieTSQCbQCa__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDrQDq__T9sliceBitsVmi13Vmi21ZQvTSQEzQEy__TQBiVmi8Vmi13ZQBvTSQGaQFz__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13isPunctuationFNaNbNiNfwZb@Base 15 + _D3std3uni13isSurrogateHiFNaNbNiNfwZb@Base 15 + _D3std3uni13isSurrogateLoFNaNbNiNfwZb@Base 15 + _D3std3uni13lowerCaseTrieFNaNbNdNiNfZ3resySQBpQBo__T4TrieTSQCfQCe__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDvQDu__T9sliceBitsVmi13Vmi21ZQvTSQFdQFc__TQBiVmi8Vmi13ZQBvTSQGeQGd__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13lowerCaseTrieFNaNbNdNiNfZySQBlQBk__T4TrieTSQCbQCa__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDrQDq__T9sliceBitsVmi13Vmi21ZQvTSQEzQEy__TQBiVmi8Vmi13ZQBvTSQGaQFz__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13upperCaseTrieFNaNbNdNiNfZ3resySQBpQBo__T4TrieTSQCfQCe__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDvQDu__T9sliceBitsVmi13Vmi21ZQvTSQFdQFc__TQBiVmi8Vmi13ZQBvTSQGeQGd__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13upperCaseTrieFNaNbNdNiNfZySQBlQBk__T4TrieTSQCbQCa__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDrQDq__T9sliceBitsVmi13Vmi21ZQvTSQEzQEy__TQBiVmi8Vmi13ZQBvTSQGaQFz__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13wordCharacterFNdNfZSQBeQBd__T13InversionListTSQCeQCd8GcPolicyZQBh@Base 15 + _D3std3uni14MatcherConcept6__initZ@Base 15 + _D3std3uni14combiningClassFNaNbNiNfwZh@Base 15 + _D3std3uni14decompressFromFNaNfMAxhKmZk@Base 15 + _D3std3uni14isNonCharacterFNaNbNiNfwZb@Base 15 + _D3std3uni14simpleCaseTrieFNaNbNdNiNfZ3resySQBqQBp__T4TrieTtTwVmi1114112TSQCuQCt__T9sliceBitsVmi13Vmi21ZQvTSQEcQEb__TQBiVmi6Vmi13ZQBvTSQFdQFc__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni14simpleCaseTrieFNaNbNdNiNfZySQBmQBl__T4TrieTtTwVmi1114112TSQCqQCp__T9sliceBitsVmi13Vmi21ZQvTSQDyQDx__TQBiVmi6Vmi13ZQBvTSQEzQEy__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni14toLowerInPlaceFNaNfKAaZv@Base 15 + _D3std3uni14toLowerInPlaceFNaNfKAuZv@Base 15 + _D3std3uni14toLowerInPlaceFNaNfKAwZv@Base 15 + _D3std3uni14toUpperInPlaceFNaNfKAaZv@Base 15 + _D3std3uni14toUpperInPlaceFNaNfKAuZv@Base 15 + _D3std3uni14toUpperInPlaceFNaNfKAwZv@Base 15 + _D3std3uni15decomposeHangulFNaNbNfwZSQBjQBi8Grapheme@Base 15 + _D3std3uni15hangulRecomposeFNaNbNiNfMAwZv@Base 15 + _D3std3uni15punctuationTrieFNaNbNdNiNfZ3resySQBrQBq__T4TrieTSQChQCg__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDxQDw__T9sliceBitsVmi13Vmi21ZQvTSQFfQFe__TQBiVmi8Vmi13ZQBvTSQGgQGf__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni15punctuationTrieFNaNbNdNiNfZySQBnQBm__T4TrieTSQCdQCc__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDtQDs__T9sliceBitsVmi13Vmi21ZQvTSQFbQFa__TQBiVmi8Vmi13ZQBvTSQGcQGb__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni15spacingMarkTrieFNaNbNdNiNfZ3resySQBrQBq__T4TrieTSQChQCg__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDxQDw__T9sliceBitsVmi13Vmi21ZQvTSQFfQFe__TQBiVmi8Vmi13ZQBvTSQGgQGf__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni15spacingMarkTrieFNaNbNdNiNfZySQBnQBm__T4TrieTSQCdQCc__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDtQDs__T9sliceBitsVmi13Vmi21ZQvTSQFbQFa__TQBiVmi8Vmi13ZQBvTSQGcQGb__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni15unalignedRead24FNaNbNiMxPhmZk@Base 15 + _D3std3uni16canonMappingTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi5Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni16canonMappingTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi5Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni16nonCharacterTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTSQCiQCh__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDyQDx__T9sliceBitsVmi14Vmi21ZQvTSQFgQFf__TQBiVmi10Vmi14ZQBwTSQGiQGh__TQCkVmi6Vmi10ZQCxTSQHjQHi__TQDlVmi0Vmi6ZQDxZQGh@Base 15 + _D3std3uni16nonCharacterTrieFNaNbNdNiNfZySQBoQBn__T4TrieTSQCeQCd__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDuQDt__T9sliceBitsVmi14Vmi21ZQvTSQFcQFb__TQBiVmi10Vmi14ZQBwTSQGeQGd__TQCkVmi6Vmi10ZQCxTSQHfQHe__TQDlVmi0Vmi6ZQDxZQGh@Base 15 + _D3std3uni16toLowerIndexTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi6Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16toLowerIndexTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16toTitleIndexTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi6Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16toTitleIndexTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16toUpperIndexTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi6Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16toUpperIndexTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16unalignedWrite24FNaNbNiMPhkmZv@Base 15 + _D3std3uni17CodepointInterval11__xopEqualsMxFKxSQBuQBtQBsZb@Base 15 + _D3std3uni17CodepointInterval1aMNgFNaNbNcNdNiNjNfZNgk@Base 15 + _D3std3uni17CodepointInterval1bMNgFNaNbNcNdNiNjNfZNgk@Base 15 + _D3std3uni17CodepointInterval6__ctorMFNaNbNcNiNfkkZSQByQBxQBw@Base 15 + _D3std3uni17CodepointInterval6__initZ@Base 15 + _D3std3uni17CodepointInterval__T8opEqualsTxSQBqQBpQBoZQwMxFNaNbNiNfxQzZb@Base 15 + _D3std3uni17compatMappingTrieFNaNbNdNiNfZ3resySQBtQBs__T4TrieTtTwVmi1114112TSQCxQCw__T9sliceBitsVmi13Vmi21ZQvTSQEfQEe__TQBiVmi5Vmi13ZQBvTSQFgQFf__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni17compatMappingTrieFNaNbNdNiNfZySQBpQBo__T4TrieTtTwVmi1114112TSQCtQCs__T9sliceBitsVmi13Vmi21ZQvTSQEbQEa__TQBiVmi5Vmi13ZQBvTSQFcQFb__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni18combiningClassTrieFNaNbNdNiNfZ3resySQBuQBt__T4TrieThTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi5Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni18combiningClassTrieFNaNbNdNiNfZySQBqQBp__T4TrieThTwVmi1114112TSQCuQCt__T9sliceBitsVmi13Vmi21ZQvTSQEcQEb__TQBiVmi5Vmi13ZQBvTSQFdQFc__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni18graphemeExtendTrieFNaNbNdNiNfZ3resySQBuQBt__T4TrieTSQCkQCj__T9BitPackedTbVmi1ZQrTwVmi1114112TSQEaQDz__T9sliceBitsVmi13Vmi21ZQvTSQFiQFh__TQBiVmi8Vmi13ZQBvTSQGjQGi__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni18graphemeExtendTrieFNaNbNdNiNfZySQBqQBp__T4TrieTSQCgQCf__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDwQDv__T9sliceBitsVmi13Vmi21ZQvTSQFeQFd__TQBiVmi8Vmi13ZQBvTSQGfQGe__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni18graphemeTransformsyAPFNaNbNiNfKEQBqQBp13GraphemeStatewZEQCoQCn12TransformRes@Base 15 + _D3std3uni18simpleCaseFoldingsFNaNbNiNfwZSQBoQBnQBmFNfwZ5Range@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range5frontMxFNaNbNdNiNfZw@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range6__ctorMFNaNbNcNiNfkkZSQCkQCjQCiFNfwZQBr@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range6__ctorMFNaNbNcNiNfwZSQCjQCiQChFNfwZQBq@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range6__initZ@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range7isSmallMxFNaNbNdNiNfZb@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range8popFrontMFNaNbNiNfZv@Base 15 + _D3std3uni18toLowerSimpleIndexFNaNbNiNewZt@Base 15 + _D3std3uni18toTitleSimpleIndexFNaNbNiNewZt@Base 15 + _D3std3uni18toUpperSimpleIndexFNaNbNiNewZt@Base 15 + _D3std3uni19compositionJumpTrieFNaNbNdNiNfZ3resySQBvQBu__T4TrieTtTwVmi1114112TSQCzQCy__T9sliceBitsVmi9Vmi21ZQuTSQEgQEf__TQBhVmi0Vmi9ZQBtZQDb@Base 15 + _D3std3uni19compositionJumpTrieFNaNbNdNiNfZySQBrQBq__T4TrieTtTwVmi1114112TSQCvQCu__T9sliceBitsVmi9Vmi21ZQuTSQEcQEb__TQBhVmi0Vmi9ZQBtZQDb@Base 15 + _D3std3uni19decompressIntervalsFNaNfAxhZSQBnQBm21DecompressedIntervals@Base 15 + _D3std3uni19graphemeControlTrieFNaNbNdNiNfZ3resySQBvQBu__T4TrieTSQClQCk__T9BitPackedTbVmi1ZQrTwVmi1114112TSQEbQEa__T9sliceBitsVmi13Vmi21ZQvTSQFjQFi__TQBiVmi8Vmi13ZQBvTSQGkQGj__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni19graphemeControlTrieFNaNbNdNiNfZySQBrQBq__T4TrieTSQChQCg__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDxQDw__T9sliceBitsVmi13Vmi21ZQvTSQFfQFe__TQBiVmi8Vmi13ZQBvTSQGgQGf__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni19hangulSyllableIndexFNaNbNiNfwZi@Base 15 + _D3std3uni19isRegionalIndicatorFNaNbNiNfwZb@Base 15 + _D3std3uni21DecompressedIntervals11__xopEqualsMxFKxSQByQBxQBwZb@Base 15 + _D3std3uni21DecompressedIntervals4saveMFNaNdNjNlNfZSQByQBxQBw@Base 15 + _D3std3uni21DecompressedIntervals5emptyMxFNaNdNfZb@Base 15 + _D3std3uni21DecompressedIntervals5frontMFNaNdNfZSQBvQBu17CodepointInterval@Base 15 + _D3std3uni21DecompressedIntervals6__ctorMFNaNcNfAxhZSQBzQByQBx@Base 15 + _D3std3uni21DecompressedIntervals6__initZ@Base 15 + _D3std3uni21DecompressedIntervals8popFrontMFNaNfZv@Base 15 + _D3std3uni21DecompressedIntervals9__xtoHashFNbNeKxSQBxQBwQBvZm@Base 15 + _D3std3uni22toLowerSimpleIndexTrieFNaNbNdNiNfZ3resySQByQBx__T4TrieTtTwVmi1114112TSQDcQDb__T9sliceBitsVmi13Vmi21ZQvTSQEkQEj__TQBiVmi6Vmi13ZQBvTSQFlQFk__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni22toLowerSimpleIndexTrieFNaNbNdNiNfZySQBuQBt__T4TrieTtTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi6Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni22toTitleSimpleIndexTrieFNaNbNdNiNfZ3resySQByQBx__T4TrieTtTwVmi1114112TSQDcQDb__T9sliceBitsVmi13Vmi21ZQvTSQEkQEj__TQBiVmi6Vmi13ZQBvTSQFlQFk__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni22toTitleSimpleIndexTrieFNaNbNdNiNfZySQBuQBt__T4TrieTtTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi6Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni22toUpperSimpleIndexTrieFNaNbNdNiNfZ3resySQByQBx__T4TrieTtTwVmi1114112TSQDcQDb__T9sliceBitsVmi13Vmi21ZQvTSQEkQEj__TQBiVmi6Vmi13ZQBvTSQFlQFk__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni22toUpperSimpleIndexTrieFNaNbNdNiNfZySQBuQBt__T4TrieTtTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi6Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni23genUnrolledSwitchSearchFNaNbNfmZAya@Base 15 + _D3std3uni4icmpFNaNbNiNfAxaQdZi@Base 15 + _D3std3uni4icmpFNaNbNiNfAxuQdZi@Base 15 + _D3std3uni4icmpFNaNbNiNfAxwQdZi@Base 15 + _D3std3uni5asSetFNaNfAxhZSQyQw__T13InversionListTSQBwQBv8GcPolicyZQBh@Base 15 + _D3std3uni5low_8FNaNbNiNfkZk@Base 15 + _D3std3uni5sicmpFNaNbNiNfMAxaMQeZi@Base 15 + _D3std3uni5sicmpFNaNbNiNfMAxuMQeZi@Base 15 + _D3std3uni5sicmpFNaNbNiNfMAxwMQeZi@Base 15 + _D3std3uni6hangLVFNaNbNdNiNfZ3resySQBhQBg__T4TrieTSQBxQBw__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDnQDm__T9sliceBitsVmi13Vmi21ZQvTSQEvQEu__TQBiVmi8Vmi13ZQBvTSQFwQFv__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni6hangLVFNaNbNdNiNfZySQBdQBc__T4TrieTSQBtQBs__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDjQDi__T9sliceBitsVmi13Vmi21ZQvTSQErQEq__TQBiVmi8Vmi13ZQBvTSQFsQFr__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni6isMarkFNaNbNiNfwZb@Base 15 + _D3std3uni6read24FNaNbNiMxPhmZk@Base 15 + _D3std3uni7composeFNaNbNfwwZw@Base 15 + _D3std3uni7hangLVTFNaNbNdNiNfZ3resySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni7hangLVTFNaNbNdNiNfZySQBeQBd__T4TrieTSQBuQBt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDkQDj__T9sliceBitsVmi13Vmi21ZQvTSQEsQEr__TQBiVmi8Vmi13ZQBvTSQFtQFs__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni7isAlphaFNaNbNiNfwZb@Base 15 + _D3std3uni7isJamoLFNaNbNiNfwZb@Base 15 + _D3std3uni7isJamoTFNaNbNiNfwZb@Base 15 + _D3std3uni7isJamoVFNaNbNiNfwZb@Base 15 + _D3std3uni7isLowerFNaNbNiNfwZb@Base 15 + _D3std3uni7isSpaceFNaNbNiNfwZb@Base 15 + _D3std3uni7isUpperFNaNbNiNfwZb@Base 15 + _D3std3uni7isWhiteFNaNbNiNfwZb@Base 15 + _D3std3uni7toLowerFNaNbNiNfwZw@Base 15 + _D3std3uni7toLowerFNaNfNkMAyaZQe@Base 15 + _D3std3uni7toLowerFNaNfNkMAyuZQe@Base 15 + _D3std3uni7toLowerFNaNfNkMAywZQe@Base 15 + _D3std3uni7toUpperFNaNbNiNfwZw@Base 15 + _D3std3uni7toUpperFNaNfNkMAyaZQe@Base 15 + _D3std3uni7toUpperFNaNfNkMAyuZQe@Base 15 + _D3std3uni7toUpperFNaNfNkMAywZQe@Base 15 + _D3std3uni7unicode18hangulSyllableType6__initZ@Base 15 + _D3std3uni7unicode5block6__initZ@Base 15 + _D3std3uni7unicode6__initZ@Base 15 + _D3std3uni7unicode6script6__initZ@Base 15 + _D3std3uni7unicode7findAnyFNfAyaZb@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa10_416c7068616265746963ZQBpFNaNdNfZSQCuQCt__T13InversionListTSQDuQDt8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_4c43ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_4d63ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_4d65ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_4d6eZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_4e64ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_5063ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa5_4153434949ZQBeFNaNdNfZSQCjQCi__T13InversionListTSQDjQDi8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T6opCallTaZQkFNaNfMxAaZSQBqQBp__T13InversionListTSQCqQCp8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T7loadAnyTSQBdQBc__T13InversionListTSQCdQCc8GcPolicyZQBhTaZQCgFNaNfMxAaZQCk@Base 15 + _D3std3uni7write24FNaNbNiMPhkmZv@Base 15 + _D3std3uni8GcPolicy6__initZ@Base 15 + _D3std3uni8GcPolicy__T5allocTkZQjFNaNbNfmZAk@Base 15 + _D3std3uni8GcPolicy__T6appendTkTiZQmFNaNbNfKAkiZv@Base 15 + _D3std3uni8GcPolicy__T7destroyTAkZQmFNaNbNiNfKQpZv@Base 15 + _D3std3uni8GcPolicy__T7reallocTkZQlFNaNbNfAkmZQe@Base 15 + _D3std3uni8Grapheme10__postblitMFNaNbNiNeZv@Base 15 + _D3std3uni8Grapheme11__xopEqualsMxFKxSQBkQBjQBiZb@Base 15 + _D3std3uni8Grapheme11smallLengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni8Grapheme12convertToBigMFNaNbNiNeZv@Base 15 + _D3std3uni8Grapheme13opIndexAssignMFNaNbNiNewmZv@Base 15 + _D3std3uni8Grapheme5isBigMxFNaNbNdNiNfZh@Base 15 + _D3std3uni8Grapheme6__dtorMFNaNbNiNeZv@Base 15 + _D3std3uni8Grapheme6__initZ@Base 15 + _D3std3uni8Grapheme6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni8Grapheme6setBigMFNaNbNiNfZv@Base 15 + _D3std3uni8Grapheme6toHashMxFNeZm@Base 15 + _D3std3uni8Grapheme7opIndexMxFNaNbNiNemZw@Base 15 + _D3std3uni8Grapheme7opSliceMFNaNbNiNjNfZSQBnQBm__T16SliceOverIndexedTSQCqQCpQCoZQBe@Base 15 + _D3std3uni8Grapheme7opSliceMFNaNbNiNjNfmmZSQBpQBo__T16SliceOverIndexedTSQCsQCrQCqZQBe@Base 15 + _D3std3uni8Grapheme8opAssignMFNaNbNcNiNjNeSQBpQBoQBnZQl@Base 15 + _D3std3uni8Grapheme__T10opOpAssignVAyaa1_7eTAxiZQBaMFNaNbNcNiNfMQuZSQCoQCnQCm@Base 15 + _D3std3uni8Grapheme__T10opOpAssignVAyaa1_7eTAxwZQBaMFNaNbNcNiNfMQuZSQCoQCnQCm@Base 15 + _D3std3uni8Grapheme__T10opOpAssignVAyaa1_7eZQwMFNaNbNcNiNewZSQChQCgQCf@Base 15 + _D3std3uni8Grapheme__T6__ctorTiZQkMFNaNbNcNiNfxAiXSQBxQBwQBv@Base 15 + _D3std3uni8Grapheme__T6__ctorTwZQkMFNaNbNcNiNfxAwXSQBxQBwQBv@Base 15 + _D3std3uni8Grapheme__T8opEqualsTSQBfQBeQBdZQvMxFNaNbNiNeKxSQCfQCeQCdZb@Base 15 + _D3std3uni8encodeToFNaNbNiNeMAamwZm@Base 15 + _D3std3uni8encodeToFNaNbNiNeMAwmwZm@Base 15 + _D3std3uni8encodeToFNaNeMAumwZm@Base 15 + _D3std3uni8isFormatFNaNbNiNfwZb@Base 15 + _D3std3uni8isNumberFNaNbNiNfwZb@Base 15 + _D3std3uni8isSymbolFNaNbNiNfwZb@Base 15 + _D3std3uni8markTrieFNaNbNdNiNfZ3resySQBjQBi__T4TrieTSQBzQBy__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDpQDo__T9sliceBitsVmi13Vmi21ZQvTSQExQEw__TQBiVmi8Vmi13ZQBvTSQFyQFx__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni8markTrieFNaNbNdNiNfZySQBfQBe__T4TrieTSQBvQBu__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDlQDk__T9sliceBitsVmi13Vmi21ZQvTSQEtQEs__TQBiVmi8Vmi13ZQBvTSQFuQFt__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni8midlow_8FNaNbNiNfkZk@Base 15 + _D3std3uni9alphaTrieFNaNbNdNiNfZ3resySQBkQBj__T4TrieTSQCaQBz__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDqQDp__T9sliceBitsVmi13Vmi21ZQvTSQEyQEx__TQBiVmi8Vmi13ZQBvTSQFzQFy__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9alphaTrieFNaNbNdNiNfZySQBgQBf__T4TrieTSQBwQBv__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDmQDl__T9sliceBitsVmi13Vmi21ZQvTSQEuQEt__TQBiVmi8Vmi13ZQBvTSQFvQFu__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9isControlFNaNbNiNfwZb@Base 15 + _D3std3uni9nfcQCTrieFNaNbNdNiNfZ3resySQBkQBj__T4TrieTSQCaQBz__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDqQDp__T9sliceBitsVmi13Vmi21ZQvTSQEyQEx__TQBiVmi8Vmi13ZQBvTSQFzQFy__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9nfcQCTrieFNaNbNdNiNfZySQBgQBf__T4TrieTSQBwQBv__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDmQDl__T9sliceBitsVmi13Vmi21ZQvTSQEuQEt__TQBiVmi8Vmi13ZQBvTSQFvQFu__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9nfdQCTrieFNaNbNdNiNfZ3resySQBkQBj__T4TrieTSQCaQBz__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDqQDp__T9sliceBitsVmi13Vmi21ZQvTSQEyQEx__TQBiVmi8Vmi13ZQBvTSQFzQFy__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9nfdQCTrieFNaNbNdNiNfZySQBgQBf__T4TrieTSQBwQBv__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDmQDl__T9sliceBitsVmi13Vmi21ZQvTSQEuQEt__TQBiVmi8Vmi13ZQBvTSQFvQFu__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9recomposeFNaNbNfmMAwMAhZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs11__xopEqualsMxFKxSQCzQCy__TQCxTQCoTtZQDhZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__ctorMFNaNbNcNfAmXSQDbQDa__TQCzTQCqTtZQDj@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQDrQDq__TQDpTQDgTtZQDz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs9__xtoHashFNbNeKxSQCyQCx__TQCwTQCnTtZQDgZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQDkQDj__T13PackedPtrImplTQDlVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQDkQDj__T13PackedPtrImplTtVmi16ZQx@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQDmQDl__T19PackedArrayViewImplTQDtVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQDmQDl__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi1ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo11__xopEqualsMxFKxSQDvQDu__TQDtTQDkTQClZQEfZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__ctorMFNaNbNcNfAmXSQDxQDw__TQDvTQDmTQCnZQEh@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEnQEm__TQElTQEcTQDdZQEx@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo9__xtoHashFNbNeKxSQDuQDt__TQDsTQDjTQCkZQEeZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEiQEh__T19PackedArrayViewImplTQEpVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEiQEh__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi1ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTQFhTQEjTQDoTQCtZQGkZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__ctorMFNaNbNcNfAmXSQFuQFt__TQFsTQFjTQElTQDqTQCvZQGm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQGkQGj__TQGiTQFzTQFbTQEgTQDlZQHc@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTQFgTQEiTQDnTQCsZQGjZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQGeVmi8ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQFcVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQEdVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi3ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQDeVmi1ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQGmVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQFkVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQElVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi3ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi2ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi3ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi3ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi3ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm11__xopEqualsMxFKxSQEtQEs__TQErTQEiTQDkTQCpZQFhZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMFNaNbNcNfAmXSQEvQEu__TQEtTQEkTQDmTQCrZQFj@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQFlQFk__TQFjTQFaTQEcTQDhZQFz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm9__xtoHashFNbNeKxSQEsQEr__TQEqTQEhTQDjTQCoZQFgZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQFfVmi8ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQEdVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQDeVmi1ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQFnVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQElVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm11__xopEqualsMxFKxSQEtQEs__TQErTQEiTQDkTQCpZQFhZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMFNaNbNcNfAmXSQEvQEu__TQEtTQEkTQDmTQCrZQFj@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQFlQFk__TQFjTQFaTQEcTQDhZQFz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm9__xtoHashFNbNeKxSQEsQEr__TQEqTQEhTQDjTQCoZQFgZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQFfVmi8ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQEdVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQDeVmi1ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQFnVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQElVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq11__xopEqualsMxFKxSQDxQDw__TQDvTQDmTQCoTtZQEjZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__ctorMFNaNbNcNfAmXSQDzQDy__TQDxTQDoTQCqTtZQEl@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEpQEo__TQEnTQEeTQDgTtZQFb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq9__xtoHashFNbNeKxSQDwQDv__TQDuTQDlTQCnTtZQEiZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQEjVmi8ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQDhVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTtVmi16ZQx@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQErVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQDpVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq11__xopEqualsMxFKxSQDxQDw__TQDvTQDmTQCoThZQEjZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__ctorMFNaNbNcNfAmXSQDzQDy__TQDxTQDoTQCqThZQEl@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEpQEo__TQEnTQEeTQDgThZQFb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq9__xtoHashFNbNeKxSQDwQDv__TQDuTQDlTQCnThZQEiZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQEjVmi8ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQDhVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplThVmi8ZQw@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQErVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQDpVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplThVmi8ZQBc@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq11__xopEqualsMxFKxSQDxQDw__TQDvTQDmTQCoTtZQEjZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__ctorMFNaNbNcNfAmXSQDzQDy__TQDxTQDoTQCqTtZQEl@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEpQEo__TQEnTQEeTQDgTtZQFb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq9__xtoHashFNbNeKxSQDwQDv__TQDuTQDlTQCnTtZQEiZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQErVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQDpVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10assumeSizeS_DQBaQz5low_8FNaNbNiNfkZkVmi8ZQBr6__initZ@Base 15 + _D3std3uni__T10assumeSizeS_DQBaQz8midlow_8FNaNbNiNfkZkVmi8ZQBu6__initZ@Base 15 + _D3std3uni__T10sharMethodSQyQw23switchUniformLowerBoundZ__TQBuVAyaa6_61203c3d2062TAxkTkZQCxFNaNbNiNfQskZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl10putRangeAtMFNaNbNemmbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTbTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTSQGfQGe__T9BitPackedTbVmi1ZQrTwVmi1114112TQGhTQFdTQEgZQCi@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl5putAtMFNaNbNembZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl6__ctorMFNaNbNcNebZSQFtQFs__TQFrTbTwVii1114112TQFhTQEdTQDgZQGv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl8putRangeMFNaNewwbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl8putValueMFNaNewbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTbTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi14ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi14ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi14ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T8addValueVmi2TbZQqMFNaNbNebmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl10putRangeAtMFNaNbNemmbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTbTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTSQGfQGe__T9BitPackedTbVmi1ZQrTwVmi1114112TQGhTQFdTQEgZQCi@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl5putAtMFNaNbNembZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl6__ctorMFNaNbNcNebZSQFtQFs__TQFrTbTwVii1114112TQFhTQEdTQDgZQGv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl8putRangeMFNaNewwbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl8putValueMFNaNewbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTbTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi13ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi13ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi13ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T8addValueVmi2TbZQqMFNaNbNebmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn10putRangeAtMFNaNbNemmbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn11__xopEqualsMxFKxSQGuQGt__TQGsTbTwVii1114112TQGiTQFeTQEgTQDjZQIaZb@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn5buildMFNaNbNeZSQGrQGq__T4TrieTSQHhQHg__T9BitPackedTbVmi1ZQrTwVmi1114112TQHjTQGfTQFhTQEkZQCm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn5putAtMFNaNbNembZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn6__ctorMFNaNbNcNebZSQGvQGu__TQGtTbTwVii1114112TQGjTQFfTQEhTQDkZQIb@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn8putRangeMFNaNewwbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn8putValueMFNaNewbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn9__xtoHashFNbNeKxSQGtQGs__TQGrTbTwVii1114112TQGhTQFdTQEfTQDiZQHzZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T14deduceMaxIndexTQFiTQEeTQDgTQCjZQBhFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi0TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTkVmi7ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi1TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTkVmi11ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi2TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi3TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T19spillToNextPageImplVmi1TSQHfQHe__T19PackedArrayViewImplTSQIlQIk__T9BitPackedTkVmi11ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T19spillToNextPageImplVmi2TSQHfQHe__T19PackedArrayViewImplTSQIlQIk__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T19spillToNextPageImplVmi3TSQHfQHe__T19PackedArrayViewImplTSQIlQIk__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi3ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi0TSQGtQGs__T9BitPackedTkVmi7ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi1TSQGtQGs__T9BitPackedTkVmi11ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi2TSQGtQGs__T9BitPackedTkVmi15ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi3TbZQqMFNaNbNebmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj10putRangeAtMFNaNbNemmbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj11__xopEqualsMxFKxSQEqQEp__TQEoTbTwVii1114112TQEeTQDbZQFoZb@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj5buildMFNaNbNeZSQEnQEm__T4TrieTSQFdQFc__T9BitPackedTbVmi1ZQrTwVmi1114112TQFfTQEcZQCe@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj5putAtMFNaNbNembZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj6__ctorMFNaNbNcNebZSQErQEq__TQEpTbTwVii1114112TQEfTQDcZQFp@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj8putRangeMFNaNewwbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj8putValueMFNaNewbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj9__xtoHashFNbNeKxSQEpQEo__TQEnTbTwVii1114112TQEdTQDaZQFnZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T14deduceMaxIndexTQDeTQCbZQzFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T15spillToNextPageVmi0TSQExQEw__T19PackedArrayViewImplTSQGdQGc__T9BitPackedTkVmi13ZQsVmi16ZQCgZQDqMFNaNbNiNeKQDiZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T15spillToNextPageVmi1TSQExQEw__T19PackedArrayViewImplTSQGdQGc__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T19spillToNextPageImplVmi1TSQFbQFa__T19PackedArrayViewImplTSQGhQGg__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T8addValueVmi0TSQEpQEo__T9BitPackedTkVmi13ZQsZQBtMFNaNbNiNeQBsmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T8addValueVmi1TbZQqMFNaNbNebmZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl10putRangeAtMFNaNbNemmhZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqThTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieThTwVmi1114112TQFfTQEbTQDeZQBg@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5putAtMFNaNbNemhZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__ctorMFNaNbNcNehZSQFtQFs__TQFrThTwVii1114112TQFhTQEdTQDgZQGv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putRangeMFNaNewwhZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putValueMFNaNewhZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpThTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplThVmi8ZQBcZQCmMFNaNbNeKQCcZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplThVmi8ZQBcZQCqMFNaNbNeKQCcZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi16ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi2ThZQqMFNaNbNehmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl10putRangeAtMFNaNbNemmtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTtTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTtTwVmi1114112TQFfTQEbTQDeZQBg@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5putAtMFNaNbNemtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__ctorMFNaNbNcNetZSQFtQFs__TQFrTtTwVii1114112TQFhTQEdTQDgZQGv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putRangeMFNaNewwtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putValueMFNaNewtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTtTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTtVmi16ZQBdZQCnMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTtVmi16ZQBdZQCrMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi16ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi2TtZQqMFNaNbNetmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl10putRangeAtMFNaNbNemmtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTtTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTtTwVmi1114112TQFfTQEbTQDeZQBg@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl5putAtMFNaNbNemtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl6__ctorMFNaNbNcNetZSQFtQFs__TQFrTtTwVii1114112TQFhTQEdTQDgZQGv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl8putRangeMFNaNewwtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl8putValueMFNaNewtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTtTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTtVmi16ZQBdZQCnMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTtVmi16ZQBdZQCrMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi15ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T8addValueVmi2TtZQqMFNaNbNetmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj10putRangeAtMFNaNbNemmtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj11__xopEqualsMxFKxSQEqQEp__TQEoTtTwVii1114112TQEeTQDbZQFoZb@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj5buildMFNaNbNeZSQEnQEm__T4TrieTtTwVmi1114112TQEdTQDaZQBc@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj5putAtMFNaNbNemtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj6__ctorMFNaNbNcNetZSQErQEq__TQEpTtTwVii1114112TQEfTQDcZQFp@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj8putRangeMFNaNewwtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj8putValueMFNaNewtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj9__xtoHashFNbNeKxSQEpQEo__TQEnTtTwVii1114112TQEdTQDaZQFnZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T14deduceMaxIndexTQDeTQCbZQzFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T15spillToNextPageVmi0TSQExQEw__T19PackedArrayViewImplTSQGdQGc__T9BitPackedTkVmi12ZQsVmi16ZQCgZQDqMFNaNbNiNeKQDiZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T15spillToNextPageVmi1TSQExQEw__T19PackedArrayViewImplTtVmi16ZQBdZQCnMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T19spillToNextPageImplVmi1TSQFbQFa__T19PackedArrayViewImplTtVmi16ZQBdZQCrMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T8addValueVmi0TSQEpQEo__T9BitPackedTkVmi12ZQsZQBtMFNaNbNiNeQBsmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T8addValueVmi1TtZQqMFNaNbNetmZv@Base 15 + _D3std3uni__T11copyForwardTiTkZQsFNaNbNiNfAiAkZv@Base 15 + _D3std3uni__T11copyForwardTkTkZQsFNaNbNiNfAkQcZv@Base 15 + _D3std3uni__T11copyForwardTmTmZQsFNaNbNiNfAmQcZv@Base 15 + _D3std3uni__T11findSetNameS_DQBb8internal14unicode_tables6blocks3tabFNaNdNfZAySQCzQByQBs15UnicodePropertyTaZQDrFNaNfMxAaZb@Base 15 + _D3std3uni__T11findSetNameS_DQBb8internal14unicode_tables7scripts3tabFNaNdNfZAySQDaQBzQBt15UnicodePropertyTaZQDsFNaNfMxAaZb@Base 15 + _D3std3uni__T11findSetNameS_DQBb8internal14unicode_tables8uniProps3tabFNaNdNfZAySQDbQCaQBu15UnicodePropertyTaZQDtFNaNfMxAaZb@Base 15 + _D3std3uni__T11memoizeExprVAyaa91_756e69636f64652e416c7068616265746963207c20756e69636f64652e4d6e207c20756e69636f64652e4d630a20202020202020207c20756e69636f64652e4d65207c20756e69636f64652e4e64207c20756e69636f64652e5063ZQHwFNfZSQIpQIo__T13InversionListTSQJpQJo8GcPolicyZQBh@Base 15 + _D3std3uni__T11memoizeExprVAyaa91_756e69636f64652e416c7068616265746963207c20756e69636f64652e4d6e207c20756e69636f64652e4d630a20202020202020207c20756e69636f64652e4d65207c20756e69636f64652e4e64207c20756e69636f64652e5063ZQHwFZ11initializedb@Base 15 + _D3std3uni__T11memoizeExprVAyaa91_756e69636f64652e416c7068616265746963207c20756e69636f64652e4d6e207c20756e69636f64652e4d630a20202020202020207c20756e69636f64652e4d65207c20756e69636f64652e4e64207c20756e69636f64652e5063ZQHwFZ4slotSQIsQIr__T13InversionListTSQJsQJr8GcPolicyZQBh@Base 15 + _D3std3uni__T12fullCasedCmpTAxwZQtFNaNbNiNfwwKQsZi@Base 15 + _D3std3uni__T12fullCasedCmpTSQBb3utf__T5byUTFTwVEQBv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQEyQDx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultZQHcFNaNbNiNfwwKQHcZi@Base 15 + _D3std3uni__T12fullCasedCmpTSQBb3utf__T5byUTFTwVEQBv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQEyQDx__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultZQHcFNaNbNiNfwwKQHcZi@Base 15 + _D3std3uni__T12loadPropertyTSQBbQBa__T13InversionListTSQCbQCa8GcPolicyZQBhTaZQCmFNaNfMxAaKQCkZb@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi5Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi5ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi5Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi5ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi6Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi6ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi6Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi6ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi7Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi7ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi7Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi7ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi8Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi8ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi8Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi8ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi14Vmi21ZQvTSQCjQCi__TQBiVmi10Vmi14ZQBwTSQDlQDk__TQCkVmi6Vmi10ZQCxTSQEmQEl__TQDlVmi0Vmi6ZQDxZ__TQFdTiZQFjFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi14Vmi21ZQvTSQCjQCi__TQBiVmi10Vmi14ZQBwTSQDlQDk__TQCkVmi6Vmi10ZQCxTSQEmQEl__TQDlVmi0Vmi6ZQDxZ__TQFdTwZQFjFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi8Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi8ZQBtZ__TQCzTiZQDfFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi8Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi8ZQBtZ__TQCzTwZQDfFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi9Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi9ZQBtZ__TQCzTiZQDfFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi9Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi9ZQBtZ__TQCzTwZQDfFNaNbNiNfwZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toLowerIndexFNaNbNiNewZtVki1460S_DQCsQCr10toLowerTabFNaNbNiNemZwZ__TQDpTaZQDvFNaNfMxAaZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toLowerIndexFNaNbNiNewZtVki1460S_DQCsQCr10toLowerTabFNaNbNiNemZwZ__TQDpTuZQDvFNaNfMxAuZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toLowerIndexFNaNbNiNewZtVki1460S_DQCsQCr10toLowerTabFNaNbNiNemZwZ__TQDpTwZQDvFNaNfMxAwZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toUpperIndexFNaNbNiNewZtVki1477S_DQCsQCr10toUpperTabFNaNbNiNemZwZ__TQDpTaZQDvFNaNfMxAaZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toUpperIndexFNaNbNiNewZtVki1477S_DQCsQCr10toUpperTabFNaNbNiNemZwZ__TQDpTuZQDvFNaNfMxAuZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toUpperIndexFNaNbNiNewZtVki1477S_DQCsQCr10toUpperTabFNaNbNiNemZwZ__TQDpTwZQDvFNaNfMxAwZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh10byIntervalMFNaNbNdNlNfZSQCvQCu__TQCtTQChZQDb__T9IntervalsTAkZQo@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11__fieldDtorMFNaNbNiNeZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11__xopEqualsMxFKxSQCoQCn__TQCmTQCaZQCuZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11addIntervalMFNaNbNlNfiimZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNaNbNdNfZSQCuQCt__TQCsTQCgZQDaQBtMFNdNfZ14CodepointRange@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange11__xopEqualsMxFKxSQDyQDx__TQDwTQDkZQEeQCxMFNdNfZQCnZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange5frontMxFNaNbNdNiNfZw@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange6__ctorMFNaNbNcNfSQDxQDw__TQDvTQDjZQEdZSQEtQEs__TQErTQEfZQEzQDsMFNdNfZQDi@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange6__initZ@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange8popFrontMFNaNbNiNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange9__xtoHashFNbNeKxSQDxQDw__TQDvTQDjZQEdQCwMFNdNfZQCmZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZQe@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZ__T11binaryScopeTQBxZQsFNfQCgQBhZQBl@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZ__T11linearScopeTQBxZQsFNaNfQCiQBjZQBn@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZ__T6bisectTQBrZQmFNfQCamQBcZQBg@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeMFNfAyaZQe@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6lengthMFNaNbNdNfZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh7opIndexMxFNaNbNiNfkZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh7subCharMFNaNbNcNfwZSQCqQCp__TQCoTQCcZQCw@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8dropUpToMFNaNbNfkmZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8invertedMFNaNbNdNfZSQCqQCp__TQCoTQCcZQCw@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8opAssignMFNaNbNcNiNjNeSQCtQCs__TQCrTQCfZQCzZQw@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8sanitizeMFNaNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8skipUpToMFNaNbNfkmZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh9__xtoHashFNbNeKxSQCnQCm__TQClTQBzZQCtZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh9intervalsMxFNaNbNdNfZAxSQCuQCt17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T10opOpAssignVAyaa1_26TSQCvQCu__TQCtTQChZQDbZQBsMFNaNbNcNfQBjZQBn@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T10opOpAssignVAyaa1_7cTSQCvQCu__TQCtTQChZQDbZQBsMFNaNbNcNfQBjZQBn@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T10opOpAssignVAyaa1_7cTwZQyMFNaNbNcNfwZSQDlQDk__TQDjTQCxZQDr@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T13fromIntervalsTSQCpQCo21DecompressedIntervalsZQBvFNaNfQBnZSQEgQEf__TQEeTQDsZQEm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T13fromIntervalsZQqFNaNbNfAkXSQDbQDa__TQCzTQCnZQDh@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T3addTSQCeQCd__TQCcTQBqZQCkZQBbMFNaNbNcNfQBjZQBn@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T6__ctorTSQChQCg__TQCfTQBtZQCnZQBeMFNaNbNcNfQBjZQBn@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T8opBinaryVAyaa1_26TSQCsQCr__TQCqTQCeZQCyZQBpMFNaNbNfQBhZQBl@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T8opBinaryVAyaa1_7cTSQCsQCr__TQCqTQCeZQCyZQBpMFNaNbNfQBhZQBl@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo11__xopEqualsMxFKxSQDhQDg__TQDfTQCtZQDn__TQCgTQBzZQCoZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo13opIndexAssignMFNaNbNiNfSQDoQDn17CodepointIntervalmZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo4backMFNaNbNdNiNfSQDgQDf17CodepointIntervalZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo4backMxFNaNbNdNiNfZSQDiQDh17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo4saveMFNaNbNdNiNfZSQDhQDg__TQDfTQCtZQDn__TQCgTQBzZQCo@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo5frontMFNaNbNdNiNfSQDhQDg17CodepointIntervalZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo5frontMxFNaNbNdNiNfZSQDjQDi17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__ctorMFNaNbNcNiNlNfQBaZSQDoQDn__TQDmTQDaZQDu__TQCnTQCgZQCv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__ctorMFNaNbNcNiNlNfQBammZSQDqQDp__TQDoTQDcZQDw__TQCpTQCiZQCx@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__initZ@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo7opIndexMxFNaNbNiNfmZSQDkQDj17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo7opSliceMFNaNbNiNfmmZSQDkQDj__TQDiTQCwZQDq__TQCjTQCcZQCr@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo7popBackMFNaNbNiNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo8popFrontMFNaNbNiNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo9__xtoHashFNbNeKxSQDgQDf__TQDeTQCsZQDm__TQCfTQByZQCnZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp11__xopEqualsMxFKxSQDiQDh__TQDgTQCuZQDo__TQChTQCaZQCpZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp4backMxFNaNbNdNiNfZSQDjQDi17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp4saveMFNaNbNdNiNfZSQDiQDh__TQDgTQCuZQDo__TQChTQCaZQCp@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp5frontMxFNaNbNdNiNfZSQDkQDj17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__ctorMFNaNbNcNiNlNfQBbZSQDpQDo__TQDnTQDbZQDv__TQCoTQChZQCw@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__ctorMFNaNbNcNiNlNfQBbmmZSQDrQDq__TQDpTQDdZQDx__TQCqTQCjZQCy@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__initZ@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp7opIndexMxFNaNbNiNfmZSQDlQDk17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp7opSliceMFNaNbNiNfmmZSQDlQDk__TQDjTQCxZQDr__TQCkTQCdZQCs@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp7popBackMFNaNbNiNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp8popFrontMFNaNbNiNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp9__xtoHashFNbNeKxSQDhQDg__TQDfTQCtZQDn__TQCgTQBzZQCoZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9intersectTSQCkQCj__TQCiTQBwZQCqZQBhMFNaNbNcNfQBjZQBn@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy11simpleIndexMNgFNaNbNimZQCk@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy11simpleWriteMFNaNbNibmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy13opIndexAssignMFNaNbNibmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi1ZQDz@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy11simpleIndexMNgFNaNbNimZQCk@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi8ZQDz@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy11simpleIndexMNgFNaNbNimZQCk@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi8ZQDz@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw11simpleIndexMNgFNaNbNimZh@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw11simpleWriteMFNaNbNihmZv@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw13opIndexAssignMFNaNbNihmZv@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw6__ctorMNgFNaNbNcNiNfPNgmZNgSQCmQCl__TQCkThVmi8ZQCu@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw7opIndexMNgFNaNbNimZh@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx11simpleIndexMNgFNaNbNimZt@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx11simpleWriteMFNaNbNitmZv@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx13opIndexAssignMFNaNbNitmZv@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx6__ctorMNgFNaNbNcNiNfPNgmZNgSQCnQCm__TQClTtVmi16ZQCw@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx7opIndexMNgFNaNbNimZt@Base 15 + _D3std3uni__T13copyBackwardsTkTkZQuFNaNbNiNfAkQcZv@Base 15 + _D3std3uni__T13copyBackwardsTmTmZQuFNaNbNiNfAmQcZv@Base 15 + _D3std3uni__T13replicateBitsVmi1Vmi64ZQzFNaNbNiNfmZm@Base 15 + _D3std3uni__T13replicateBitsVmi2Vmi32ZQzFNaNbNiNfmZm@Base 15 + _D3std3uni__T13replicateBitsVmi4Vmi16ZQzFNaNbNiNfmZm@Base 15 + _D3std3uni__T13replicateBitsVmi64Vmi1ZQzFNaNbNiNfmZm@Base 15 + _D3std3uni__T13replicateBitsVmi8Vmi8ZQyFNaNbNiNfmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTaZQDpFNaNeKAaZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTaZQDpFNaNeKAaZv@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTuZQDpFNaNeKAuZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTuZQDpFNaNeKAuZv@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTwZQDpFNaNeKAwZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTwZQDpFNaNeKAwZv@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTaZQDpFNaNeKAaZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTaZQDpFNaNeKAaZv@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTuZQDpFNaNeKAuZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTuZQDpFNaNeKAuZv@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTwZQDpFNaNeKAwZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTwZQDpFNaNeKAwZv@Base 15 + _D3std3uni__T14findUnicodeSetS_DQBe8internal14unicode_tables6blocks3tabFNaNdNfZAySQDcQByQBs15UnicodePropertyTaZQDuFNaNfMxAaZl@Base 15 + _D3std3uni__T14findUnicodeSetS_DQBe8internal14unicode_tables7scripts3tabFNaNdNfZAySQDdQBzQBt15UnicodePropertyTaZQDvFNaNfMxAaZl@Base 15 + _D3std3uni__T14findUnicodeSetS_DQBe8internal14unicode_tables8uniProps3tabFNaNdNfZAySQDeQCaQBu15UnicodePropertyTaZQDwFNaNfMxAaZl@Base 15 + _D3std3uni__T14genericReplaceTvTSQBfQBe__T8CowArrayTSQBzQBy8GcPolicyZQBbTAiZQClFNaNbNeKQCdmmQtZm@Base 15 + _D3std3uni__T14genericReplaceTvTSQBfQBe__T8CowArrayTSQBzQBy8GcPolicyZQBbTAkZQClFNaNbNeKQCdmmQtZm@Base 15 + _D3std3uni__T14graphemeStrideTaZQtFNaNfMxAamZm@Base 15 + _D3std3uni__T14graphemeStrideTuZQtFNaNfMxAumZm@Base 15 + _D3std3uni__T14graphemeStrideTwZQtFNaNbNiNfMxAwmZm@Base 15 + _D3std3uni__T14loadUnicodeSetS_DQBe8internal14unicode_tables6blocks3tabFNaNdNfZAySQDcQByQBs15UnicodePropertyTSQEeQEd__T13InversionListTSQFeQFd8GcPolicyZQBhTaZQFpFNaNfMxAaKQCkZb@Base 15 + _D3std3uni__T14loadUnicodeSetS_DQBe8internal14unicode_tables7scripts3tabFNaNdNfZAySQDdQBzQBt15UnicodePropertyTSQEfQEe__T13InversionListTSQFfQFe8GcPolicyZQBhTaZQFqFNaNfMxAaKQCkZb@Base 15 + _D3std3uni__T14loadUnicodeSetS_DQBe8internal14unicode_tables8uniProps3tabFNaNdNfZAySQDeQCaQBu15UnicodePropertyTSQEgQEf__T13InversionListTSQFgQFf8GcPolicyZQBhTaZQFrFNaNfMxAaKQCkZb@Base 15 + _D3std3uni__T14toLowerInPlaceTaZQtFNaNeKAaZv@Base 15 + _D3std3uni__T14toLowerInPlaceTuZQtFNaNeKAuZv@Base 15 + _D3std3uni__T14toLowerInPlaceTwZQtFNaNeKAwZv@Base 15 + _D3std3uni__T14toUpperInPlaceTaZQtFNaNeKAaZv@Base 15 + _D3std3uni__T14toUpperInPlaceTuZQtFNaNeKAuZv@Base 15 + _D3std3uni__T14toUpperInPlaceTwZQtFNaNeKAwZv@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTbVmi1ZQrZQBwFNaNbNiNfPNgmmZNgSQDcQDb__T19PackedArrayViewImplTQDeVmi1ZQBe@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi11ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi12ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi13ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi14ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi15ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi16ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi7ZQrZQBwFNaNbNiNfPNgmmZNgSQDcQDb__T19PackedArrayViewImplTQDeVmi8ZQBe@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi8ZQrZQBwFNaNbNiNfPNgmmZNgSQDcQDb__T19PackedArrayViewImplTQDeVmi8ZQBe@Base 15 + _D3std3uni__T15packedArrayViewThZQuFNaNbNiNfPNgmmZNgSQBzQBy__T19PackedArrayViewImplThVmi8ZQBc@Base 15 + _D3std3uni__T15packedArrayViewTtZQuFNaNbNiNfPNgmmZNgSQBzQBy__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk11__xopEqualsMxFKxSQCrQCq__TQCpTQCaZQCxZb@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk13opIndexAssignMFNaNbNiNfwmZv@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk4backMFNaNbNdNiNfwZv@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk4backMxFNaNbNdNiNfZw@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk4saveMNgFNaNbNdNiNfZNgSQCvQCu__TQCtTQCeZQDb@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk5frontMFNaNbNdNiNfwZv@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk5frontMxFNaNbNdNiNfZw@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk6__initZ@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7opIndexMxFNaNbNiNfmZw@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7opSliceMFNaNbNiNfZSQCsQCr__TQCqTQCbZQCy@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCdZQDa@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7popBackMFNaNbNiNfZv@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk8popFrontMFNaNbNiNfZv@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk__T8opEqualsTxSQCnQCm__TQClTQBwZQCtZQBhMxFNaNbNiNfKxQBmZb@Base 15 + _D3std3uni__T16codepointSetTrieVii13Vii8Z__TQBfTSQBvQBu__T13InversionListTSQCvQCu8GcPolicyZQBhZQDeFNaNfQCdZSQEcQEb__T4TrieTSQEsQEr__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGiQGh__T9sliceBitsVmi8Vmi21ZQuTSQHpQHo__TQBhVmi0Vmi8ZQBtZQEd@Base 15 + _D3std3uni__T16propertyNameLessTaTaZQxFNaNfAxaQdZb@Base 15 + _D3std3uni__T16sliceOverIndexedTSQBfQBe8GraphemeZQBkFNaNbNiNfmmPQBgZSQCpQCo__T16SliceOverIndexedTQCnZQx@Base 15 + _D3std3uni__T18__lambda_L7012_C26TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7035_C23TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7044_C23TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7054_C22TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7074_C22TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7089_C24TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7101_C26TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7124_C29TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7133_C28TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7146_C24TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toLowerIndexFNaNbNiNewZtVki1460S_DQCyQCx10toLowerTabFNaNbNiNemZwZ__TQDvTaZQEbFNaNeKAammZv@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toLowerIndexFNaNbNiNewZtVki1460S_DQCyQCx10toLowerTabFNaNbNiNemZwZ__TQDvTuZQEbFNaNeKAummZv@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toLowerIndexFNaNbNiNewZtVki1460S_DQCyQCx10toLowerTabFNaNbNiNemZwZ__TQDvTwZQEbFNaNeKAwmmZv@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toUpperIndexFNaNbNiNewZtVki1477S_DQCyQCx10toUpperTabFNaNbNiNemZwZ__TQDvTaZQEbFNaNeKAammZv@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toUpperIndexFNaNbNiNewZtVki1477S_DQCyQCx10toUpperTabFNaNbNiNemZwZ__TQDvTuZQEbFNaNeKAummZv@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toUpperIndexFNaNbNiNewZtVki1477S_DQCyQCx10toUpperTabFNaNbNiNemZwZ__TQDvTwZQEbFNaNeKAwmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe11__xopEqualsMxFKxSQDlQDk__TQDjTQCrVmi1ZQDvZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opIndexAssignMFNaNbNibmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opSliceAssignMFNaNbNiQCimmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opSliceAssignMFNaNbNibmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDxQDw__TQDvTQDdVmi1ZQEh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe7opSliceMFNaNbNiNfZSQDmQDl__TQDkTQCsVmi1ZQDw@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe7opSliceMNgFNaNbNiNfmmZNgSQDsQDr__TQDqTQCyVmi1ZQEc@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe__T8opEqualsTxSQDhQDg__TQDfTQCnVmi1ZQDrZQBlMxFNaNbNiKxQBoZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe11__xopEqualsMxFKxSQDlQDk__TQDjTQCrVmi8ZQDvZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opSliceAssignMFNaNbNiQCimmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDxQDw__TQDvTQDdVmi8ZQEh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe7opSliceMFNaNbNiNfZSQDmQDl__TQDkTQCsVmi8ZQDw@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe7opSliceMNgFNaNbNiNfmmZNgSQDsQDr__TQDqTQCyVmi8ZQEc@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe__T8opEqualsTxSQDhQDg__TQDfTQCnVmi8ZQDrZQBlMxFNaNbNiKxQBoZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe11__xopEqualsMxFKxSQDlQDk__TQDjTQCrVmi8ZQDvZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opSliceAssignMFNaNbNiQCimmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDxQDw__TQDvTQDdVmi8ZQEh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe7opSliceMFNaNbNiNfZSQDmQDl__TQDkTQCsVmi8ZQDw@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe7opSliceMNgFNaNbNiNfmmZNgSQDsQDr__TQDqTQCyVmi8ZQEc@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe__T8opEqualsTxSQDhQDg__TQDfTQCnVmi8ZQDrZQBlMxFNaNbNiKxQBoZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc11__xopEqualsMxFKxSQCjQCi__TQChThVmi8ZQCrZb@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc13opIndexAssignMFNaNbNihmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc13opSliceAssignMFNaNbNihmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQCvQCu__TQCtThVmi8ZQDd@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc7opIndexMNgFNaNbNimZh@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc7opSliceMFNaNbNiNfZSQCkQCj__TQCiThVmi8ZQCs@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc7opSliceMNgFNaNbNiNfmmZNgSQCqQCp__TQCoThVmi8ZQCy@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc__T8opEqualsTxSQCfQCe__TQCdThVmi8ZQCnZQBjMxFNaNbNiKxQBmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd11__xopEqualsMxFKxSQCkQCj__TQCiTtVmi16ZQCtZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd13opIndexAssignMFNaNbNitmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd13opSliceAssignMFNaNbNitmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQCwQCv__TQCuTtVmi16ZQDf@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd7opIndexMNgFNaNbNimZt@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd7opSliceMFNaNbNiNfZSQClQCk__TQCjTtVmi16ZQCu@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd7opSliceMNgFNaNbNiNfmmZNgSQCrQCq__TQCpTtVmi16ZQDa@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd__T8opEqualsTxSQCgQCf__TQCeTtVmi16ZQCpZQBkMxFNaNbNiKxQBnZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZb@Base 15 + _D3std3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZi@Base 15 + _D3std3uni__T20isPrettyPropertyNameTaZQzFNaNfMxAaZb@Base 15 + _D3std3uni__T21genericDecodeGraphemeVEQBkQBj11GraphemeReti0Z__TQByTAxaZQCgFNaNfKQnZv@Base 15 + _D3std3uni__T21genericDecodeGraphemeVEQBkQBj11GraphemeReti0Z__TQByTAxuZQCgFNaNfKQnZv@Base 15 + _D3std3uni__T21genericDecodeGraphemeVEQBkQBj11GraphemeReti0Z__TQByTAxwZQCgFNaNbNiNfKQrZv@Base 15 + _D3std3uni__T23switchUniformLowerBoundSQBl10functional__T9binaryFunVAyaa6_61203c3d2062VQta1_61VQBba1_62ZQBvTAxkTkZQDxFNaNbNiNfQskZm@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd11__xopEqualsMxFKxSQGkQGj__TQGiTQGgTwVmi1114112TQFiTQEeTQDhZQHoZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd6__initZ@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd9__xtoHashFNbNeKxSQGjQGi__TQGhTQGfTwVmi1114112TQFhTQEdTQDgZQHnZm@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd__T6__ctorZQiMFNaNbNcNiNeSQGrQGq__T10MultiArrayTSQHoQHn__TQGyTkVmi8ZQHiTSQImQIl__TQHwTkVmi14ZQIhTQItZQCoZSQJtQJs__TQJrTQJpTwVmi1114112TQIrTQHnTQGqZQKx@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQHbQHa__TQGzTQGxTwVmi1114112TQFzTQEvTQDyZQIf@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd__T7opIndexZQjMxFNaNbNiNewZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd11__xopEqualsMxFKxSQGkQGj__TQGiTQGgTwVmi1114112TQFiTQEeTQDhZQHoZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd6__initZ@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd9__xtoHashFNbNeKxSQGjQGi__TQGhTQGfTwVmi1114112TQFhTQEdTQDgZQHnZm@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd__T6__ctorZQiMFNaNbNcNiNeSQGrQGq__T10MultiArrayTSQHoQHn__TQGyTkVmi8ZQHiTSQImQIl__TQHwTkVmi13ZQIhTQItZQCoZSQJtQJs__TQJrTQJpTwVmi1114112TQIrTQHnTQGqZQKx@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQHbQHa__TQGzTQGxTwVmi1114112TQFzTQEvTQDyZQIf@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd__T7opIndexZQjMxFNaNbNiNewZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf11__xopEqualsMxFKxSQHmQHl__TQHkTQHiTwVmi1114112TQGkTQFgTQEiTQDlZQIuZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf6__initZ@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf9__xtoHashFNbNeKxSQHlQHk__TQHjTQHhTwVmi1114112TQGjTQFfTQEhTQDkZQItZm@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf__T6__ctorZQiMFNaNbNcNiNeSQHtQHs__T10MultiArrayTSQIqQIp__TQIaTkVmi7ZQIkTSQJoQJn__TQIyTkVmi11ZQJjTSQKnQKm__TQJxTkVmi15ZQKiTQKuZQDnZSQLuQLt__TQLsTQLqTwVmi1114112TQKsTQJoTQIqTQHtZQNc@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQIdQIc__TQIbTQHzTwVmi1114112TQHbTQFxTQEzTQEcZQJl@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf__T7opIndexZQjMxFNaNbNiNewZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb11__xopEqualsMxFKxSQFiQFh__TQFgTQFeTwVmi1114112TQEgTQDdZQGiZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb6__initZ@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb9__xtoHashFNbNeKxSQFhQFg__TQFfTQFdTwVmi1114112TQEfTQDcZQGhZm@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb__T6__ctorZQiMFNaNbNcNiNeSQFpQFo__T10MultiArrayTSQGmQGl__TQFwTkVmi13ZQGhTQGtZQBqZSQHtQHs__TQHrTQHpTwVmi1114112TQGrTQFoZQIt@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd11__xopEqualsMxFKxSQFkQFj__TQFiThTwVmi1114112TQFgTQEcTQDfZQGmZb@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd9__xtoHashFNbNeKxSQFjQFi__TQFhThTwVmi1114112TQFfTQEbTQDeZQGlZm@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMFNaNbNcNiNeSQFrQFq__T10MultiArrayTSQGoQGn__T9BitPackedTkVmi8ZQrTSQHsQHr__TQBeTkVmi16ZQBpThZQCsZSQIxQIw__TQIvThTwVmi1114112TQItTQHpTQGsZQJz@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQGbQGa__TQFzThTwVmi1114112TQFxTQEtTQDwZQHd@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T7opIndexZQjMxFNaNbNiNewZh@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd11__xopEqualsMxFKxSQFkQFj__TQFiTtTwVmi1114112TQFgTQEcTQDfZQGmZb@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd9__xtoHashFNbNeKxSQFjQFi__TQFhTtTwVmi1114112TQFfTQEbTQDeZQGlZm@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMFNaNbNcNiNeSQFrQFq__T10MultiArrayTSQGoQGn__T9BitPackedTkVmi8ZQrTSQHsQHr__TQBeTkVmi16ZQBpTtZQCsZSQIxQIw__TQIvTtTwVmi1114112TQItTQHpTQGsZQJz@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQGbQGa__TQFzTtTwVmi1114112TQFxTQEtTQDwZQHd@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd11__xopEqualsMxFKxSQFkQFj__TQFiTtTwVmi1114112TQFgTQEcTQDfZQGmZb@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd6__initZ@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd9__xtoHashFNbNeKxSQFjQFi__TQFhTtTwVmi1114112TQFfTQEbTQDeZQGlZm@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd__T6__ctorZQiMFNaNbNcNiNeSQFrQFq__T10MultiArrayTSQGoQGn__T9BitPackedTkVmi8ZQrTSQHsQHr__TQBeTkVmi15ZQBpTtZQCsZSQIxQIw__TQIvTtTwVmi1114112TQItTQHpTQGsZQJz@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQGbQGa__TQFzTtTwVmi1114112TQFxTQEtTQDwZQHd@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd__T7opIndexZQjMxFNaNbNiNewZt@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb11__xopEqualsMxFKxSQEiQEh__TQEgTtTwVmi1114112TQEeTQDbZQFgZb@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb6__initZ@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb9__xtoHashFNbNeKxSQEhQEg__TQEfTtTwVmi1114112TQEdTQDaZQFfZm@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb__T6__ctorZQiMFNaNbNcNiNeSQEpQEo__T10MultiArrayTSQFmQFl__T9BitPackedTkVmi12ZQsTtZQBuZSQGxQGw__TQGvTtTwVmi1114112TQGtTQFqZQHv@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQEzQEy__TQExTtTwVmi1114112TQEvTQDsZQFx@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb__T7opIndexZQjMxFNaNbNiNewZt@Base 15 + _D3std3uni__T4icmpTAxaTQeZQnFNaNbNiNfQsQuZi@Base 15 + _D3std3uni__T4icmpTAxuTQeZQnFNaNbNiNfQsQuZi@Base 15 + _D3std3uni__T4icmpTAxwTQeZQnFNaNbNiNfQsQuZi@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm11__xopEqualsMxFKxSQCtQCs__TQCrTQCoZQCzZb@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm3popMFNbNeZQBt@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm3topMFNaNbNcNdNiNfZQCb@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm4pushMFNaNbNfQBvZv@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm6__initZ@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm6lengthMFNaNbNdNiNfZm@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm9__xtoHashFNbNeKxSQCsQCr__TQCqTQCnZQCyZm@Base 15 + _D3std3uni__T5StackTkZQj11__xopEqualsMxFKxSQBpQBo__TQBnTkZQBtZb@Base 15 + _D3std3uni__T5StackTkZQj3popMFNbNeZk@Base 15 + _D3std3uni__T5StackTkZQj3topMFNaNbNcNdNiNfZk@Base 15 + _D3std3uni__T5StackTkZQj4pushMFNaNbNfkZv@Base 15 + _D3std3uni__T5StackTkZQj5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3uni__T5StackTkZQj6__initZ@Base 15 + _D3std3uni__T5StackTkZQj6lengthMFNaNbNdNiNfZm@Base 15 + _D3std3uni__T5StackTkZQj9__xtoHashFNbNeKxSQBoQBn__TQBmTkZQBsZm@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi11ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi11ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi12ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi12ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi13ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi13ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi14ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi14ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi15ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi15ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi16ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi16ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi7ZQrTQBcZQBnFNaNbNiNfQBsZQBw@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi7ZQrTmZQBlFNaNbNiNfmZQBs@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi8ZQrTQBcZQBnFNaNbNiNfQBsZQBw@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi8ZQrTmZQBlFNaNbNiNfmZQBs@Base 15 + _D3std3uni__T5forceTkTiZQlFNaNbNiNfiZk@Base 15 + _D3std3uni__T5sicmpTAxaTQeZQoFNaNbNiNfMQtMQwZi@Base 15 + _D3std3uni__T5sicmpTAxuTQeZQoFNaNbNiNfMQtMQwZi@Base 15 + _D3std3uni__T5sicmpTAxwTQeZQoFNaNbNiNfMQtMQwZi@Base 15 + _D3std3uni__T6asTrieTbVii7Vii4Vii4Vii6ZQBaFNaNbNiNfMxSQCa8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBdZxSQEoQEn__T4TrieTSQFeQFd__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGuQGt__T9sliceBitsVmi14Vmi21ZQvTSQIcQIb__TQBiVmi10Vmi14ZQBwTSQJeQJd__TQCkVmi6Vmi10ZQCxTSQKfQKe__TQDlVmi0Vmi6ZQDxZQGh@Base 15 + _D3std3uni__T6asTrieTbVii8Vii5Vii8ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQzZxSQEeQEd__T4TrieTSQEuQEt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGkQGj__T9sliceBitsVmi13Vmi21ZQvTSQHsQHr__TQBiVmi8Vmi13ZQBvTSQItQIs__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni__T6asTrieTbVii8Vii6Vii7ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQzZxSQEeQEd__T4TrieTSQEuQEt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGkQGj__T9sliceBitsVmi13Vmi21ZQvTSQHsQHr__TQBiVmi7Vmi13ZQBvTSQItQIs__TQCjVmi0Vmi7ZQCvZQFf@Base 15 + _D3std3uni__T6asTrieThVii8Vii8Vii5ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQzZxSQEeQEd__T4TrieThTwVmi1114112TSQFiQFh__T9sliceBitsVmi13Vmi21ZQvTSQGqQGp__TQBiVmi5Vmi13ZQBvTSQHrQHq__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni__T6asTrieTtVii12Vii9ZQtFNaNbNiNfMxSQBs8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQwZxSQDyQDx__T4TrieTtTwVmi1114112TSQFcQFb__T9sliceBitsVmi9Vmi21ZQuTSQGjQGi__TQBhVmi0Vmi9ZQBtZQDb@Base 15 + _D3std3uni__T6asTrieTtVii8Vii7Vii6ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQzZxSQEeQEd__T4TrieTtTwVmi1114112TSQFiQFh__T9sliceBitsVmi13Vmi21ZQvTSQGqQGp__TQBiVmi6Vmi13ZQBvTSQHrQHq__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni__T6asTrieTtVii8Vii8Vii5ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQzZxSQEeQEd__T4TrieTtTwVmi1114112TSQFiQFh__T9sliceBitsVmi13Vmi21ZQvTSQGqQGp__TQBiVmi5Vmi13ZQBvTSQHrQHq__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAxaZQDzFNaNfQmZQp@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAyaZQDzFNaNfQmZQp@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAyuZQDzFNaNfQmZQp@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAywZQDzFNaNbNfQoZQr@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toUpperIndexFNaNbNiNewZtVii1477S_DQCjQCi10toUpperTabFNaNbNiNemZwSQDo5ascii7toUpperTAyaZQDzFNaNfQmZQp@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toUpperIndexFNaNbNiNewZtVii1477S_DQCjQCi10toUpperTabFNaNbNiNemZwSQDo5ascii7toUpperTAyuZQDzFNaNfQmZQp@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toUpperIndexFNaNbNiNewZtVii1477S_DQCjQCi10toUpperTabFNaNbNiNemZwSQDo5ascii7toUpperTAywZQDzFNaNbNfQoZQr@Base 15 + _D3std3uni__T7toLowerTAxaZQnFNaNeNkMQoZQr@Base 15 + _D3std3uni__T7toLowerTAyaZQnFNaNeNkMQoZQr@Base 15 + _D3std3uni__T7toLowerTAyuZQnFNaNeNkMQoZQr@Base 15 + _D3std3uni__T7toLowerTAywZQnFNaNbNeNkMQqZQt@Base 15 + _D3std3uni__T7toUpperTAyaZQnFNaNeNkMQoZQr@Base 15 + _D3std3uni__T7toUpperTAyuZQnFNaNeNkMQoZQr@Base 15 + _D3std3uni__T7toUpperTAywZQnFNaNbNeNkMQqZQt@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf10__postblitMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf11__xopEqualsMxFKxSQCmQCl__TQCkTQCeZQCsZb@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf13opIndexAssignMFNaNbNiNfkmZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf16dupThisReferenceMFNaNbNiNfkZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf17freeThisReferenceMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf5reuseFNaNbNiNfAkZSQCmQCl__TQCkTQCeZQCs@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6__dtorMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6__initZ@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6lengthMFNaNbNdNiNfmZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMFNaNbNiNfZAk@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMFNaNbNiNfmmZAk@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMxFNaNbNiNfZAxk@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMxFNaNbNiNfmmZAxk@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf8opAssignMFNaNbNcNiNjNeSQCrQCq__TQCpTQCjZQCxZQw@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf8refCountMFNaNbNdNiNfkZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf8refCountMxFNaNbNdNiNfZk@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf9__xtoHashFNbNeKxSQClQCk__TQCjTQCdZQCrZm@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf__T8opEqualsZQkMxFNaNbNiNfKxSQCwQCv__TQCuTQCoZQDcZb@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz10__postblitMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz11__xopEqualsMxFKxSQCfQCe__TQCdTQBxZQClZb@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz13opIndexAssignMFNaNbNfkmZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz16dupThisReferenceMFNaNbNfkZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz17freeThisReferenceMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz5reuseFNaNbNfAkZSQCdQCc__TQCbTQBvZQCj@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__dtorMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__initZ@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6lengthMFNaNbNdNfmZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMFNaNbNfZAk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMFNaNbNfmmZAk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMxFNaNbNiNfZAxk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMxFNaNbNiNfmmZAxk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz8opAssignMFNaNbNcNiNjNeSQCkQCj__TQCiTQCcZQCqZQw@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz8refCountMFNaNbNdNiNfkZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz8refCountMxFNaNbNdNiNfZk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz9__xtoHashFNbNeKxSQCeQCd__TQCcTQBwZQCkZm@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T6__ctorTAkZQlMFNaNbNcNfQpZSQCqQCp__TQCoTQCiZQCw@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T6__ctorTSQBy5range__T10roundRobinTSQCy9algorithm9iteration__T9MapResultSQEj10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQGnQGm21DecompressedIntervalsZQDtTSQHwQEyQEr__TQEkSQImQEd__TQDuVQDoa4_615b315dVQEda1_61ZQEwTQDpZQGhZQHzFQHqQCvZ6ResultZQJnMFNaNcNfQJqZSQLsQLr__TQLqTQLkZQLy@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T6appendZQiMFNaNbNfAkXv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T7opIndexZQjMxFNaNbNiNfmZk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T8opEqualsZQkMxFNaNbNiNfKxSQCpQCo__TQCnTQChZQCvZb@Base 15 + _D3std3uni__T8spaceForVmi11ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi12ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi13ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi14ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi15ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi16ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi1ZQoFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi7ZQoFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi8ZQoFNaNbNiNfmZm@Base 15 + _D3std3uni__T9BitPackedTbVmi1ZQr6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi11ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi12ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi13ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi14ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi15ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi16ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi7ZQr6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi8ZQr6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi5ZQt6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi5ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi5ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi6ZQt6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi6ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi6ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi7ZQt6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi7ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi7ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi8ZQt6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi8ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi8ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi9ZQt6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi9ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi9ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi10Vmi14ZQv6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi10Vmi14ZQv__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi10Vmi14ZQv__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi13Vmi21ZQv6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi13Vmi21ZQv__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi13Vmi21ZQv__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi14Vmi21ZQv6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi14Vmi21ZQv__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi14Vmi21ZQv__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi5Vmi13ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi5Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi5Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi10ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi10ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi10ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi13ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi7Vmi13ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi7Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi7Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi13ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi21ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi21ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi21ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi9Vmi21ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi9Vmi21ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi9Vmi21ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uri10URI_EncodeFNaNfAywkZAya@Base 15 + _D3std3uri11__moduleRefZ@Base 15 + _D3std3uri12URIException6__initZ@Base 15 + _D3std3uri12URIException6__vtblZ@Base 15 + _D3std3uri12URIException7__ClassZ@Base 15 + _D3std3uri12URIException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCwQCvQCu@Base 15 + _D3std3uri12URIException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCwQCvQCu@Base 15 + _D3std3uri12__ModuleInfoZ@Base 15 + _D3std3uri9ascii2hexFNaNbNiNfwZk@Base 15 + _D3std3uri9hex2asciiyG16a@Base 15 + _D3std3uri9uri_flagsyG128h@Base 15 + _D3std3uri9urlEncodeFNaNfMHAyaQdZQg@Base 15 + _D3std3uri__T15encodeComponentTaZQuFNaNfMAxaZAya@Base 15 + _D3std3utf10strideImplFNaNeamZk@Base 15 + _D3std3utf11__moduleRefZ@Base 15 + _D3std3utf12UTFException11setSequenceMFNaNbNiNlNjNfAkXCQCbQCaQBz@Base 15 + _D3std3utf12UTFException6__ctorMFNaNbNfAyamQemC6object9ThrowableZCQCmQClQCk@Base 15 + _D3std3utf12UTFException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCnQCmQCl@Base 15 + _D3std3utf12UTFException6__initZ@Base 15 + _D3std3utf12UTFException6__vtblZ@Base 15 + _D3std3utf12UTFException7__ClassZ@Base 15 + _D3std3utf12UTFException8toStringMxFZAya@Base 15 + _D3std3utf12__ModuleInfoZ@Base 15 + _D3std3utf12isValidDcharFNaNbNiNfwZb@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFNaNbNiNfQoZSQBqQBp__TQBoTQBfZQBwFQBnZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCqQCp__TQCoTQCfZQCwFQCnZQCiZb@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZNga@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCqQCp__TQCoTQCfZQCwFQCnZQCi@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZNga@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6__initZ@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZNga@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCtQCs__TQCrTQCiZQCzFQCqZQCl@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCpQCo__TQCnTQCeZQCvFQCmZQChZm@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZNgxa@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZNgxa@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZNgxa@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZNgxu@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZNgxu@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZNgxu@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 + _D3std3utf__T10byCodeUnitTAxwZQrFNaNbNiNfQpZQs@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZya@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZya@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZya@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZyu@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZyu@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZyu@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 + _D3std3utf__T10byCodeUnitTAywZQrFNaNbNiNfQpZQs@Base 15 + _D3std3utf__T10byCodeUnitTSQz4path__T16asNormalizedPathTSQCd5range__T5chainTSQCxQCw__TQCvTAyaZQDdFQiZ14ByCodeUnitImplTSQEnQCk__T10OnlyResultTaZQpTQCsZQDdFQDaQBnQDgZ6ResultZQFfFNkMQEtZQtZQGrFNaNbNiNfQGqZQGu@Base 15 + _D3std3utf__T10byCodeUnitTSQz5range__T5chainTSQBsQBr__TQBqTAxaZQByFQiZ14ByCodeUnitImplTSQDiQCk__T10OnlyResultTaZQpTQCsZQDdFQDaQBnQDgZ6ResultZQEyFNaNbNiNfQExZQFb@Base 15 + _D3std3utf__T10byCodeUnitTSQzQx__TQvTAaZQBbFQhZ14ByCodeUnitImplZQBzFNaNbNiNfQByZQCc@Base 15 + _D3std3utf__T10byCodeUnitTSQzQx__TQvTAxaZQBcFQiZ14ByCodeUnitImplZQCaFNaNbNiNfQBzZQCd@Base 15 + _D3std3utf__T10byCodeUnitTSQzQx__TQvTAyaZQBcFQiZ14ByCodeUnitImplZQCaFNaNbNiNfQBzZQCd@Base 15 + _D3std3utf__T10codeLengthTaZQpFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTuZQpFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTwZQpFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTxaZQqFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTyaZQqFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTyuZQqFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTywZQqFNaNbNiNfwZh@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFgFNaNfKQChJmZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFgFNaNfKQChZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClJmZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClJmZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFhFNaNfKQCiJmZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFhFNaNfKQCiZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFKQjKmZ__T9exceptionTQBcZQpFNaNbNfQBpQDsZCQFvQFu12UTFException@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaKQlKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaQkKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxuZQDrFNaKQlKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxuZQDrFNaQkKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxwZQDrFNaKQlKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxwZQDrFNaQkKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDrFNaNbNiKQpKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDrFNaNbNiQoKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxuZQDrFNaNbNiKQpKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxwZQDrFNaNbNiKQpKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFlFNaNbNiNfKQClKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFlFNaNbNiNfKQClKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFlFNaNbNiNfKQClKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFmFNaNbNiNfKQCmKmZw@Base 15 + _D3std3utf__T10strideBackTANgaZQsFNaNfKQnmZk@Base 15 + _D3std3utf__T10strideBackTAxaZQrFNaNfKQmmZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfmZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfKQCjZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfmZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfKQCjZk@Base 15 + _D3std3utf__T10toUTFzImplTPaTAxaZQuFNaNbNfNkMQqZQw@Base 15 + _D3std3utf__T10toUTFzImplTPaTAyaZQuFNaNbNfNkMQqZQw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNeMKQnJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNfKQmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAuZQDnFNaNeMKQnJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAuZQDnFNaNfKQmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAwZQDnFNaNeMKQnJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAwZQDnFNaNfKQmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAyuZQDoFNaNeMKQoJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAyuZQDoFNaNfKQnZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAywZQDoFNaNeMKQoJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAywZQDoFNaNfKQnZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDoFNaNbNiNeMKQsJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDoFNaNbNiNfKQrZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxuZQDoFNaNbNiNeMKQsJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxuZQDoFNaNbNiNfKQrZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxwZQDoFNaNbNiNeMKQsJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxwZQDoFNaNbNiNfKQrZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFjFNaNbNiNfKQCmJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFjFNaNbNiNfKQCmZw@Base 15 + _D3std3utf__T13_utfExceptionVEQBc8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDmFNaNfQCiwZw@Base 15 + _D3std3utf__T13_utfExceptionVEQBc8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1ZQDmFNaNbNiNfQCmwZw@Base 15 + _D3std3utf__T20canSearchInCodeUnitsTaZQzFNaNbNiNfwZb@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAaZQDoFNaNbNiNfQpZSQEpQEo__T10byCodeUnitTQBpZQrFQBwZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxaZQDpFNaNbNiNfQqZSQEqQEp__T10byCodeUnitTQBqZQrFQBxZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTQChZQDpFNaNbNiNfQCxZSQErQEq__T10byCodeUnitTQDyZQrFQEfZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDx4path__T16asNormalizedPathTSQFc5range__T5chainTSQFwQFv__T10byCodeUnitTQFdZQrFQFkZ14ByCodeUnitImplTSQHvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQtZQJzFNaNbNiNfQHaZQHe@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDx5range__T5chainTSQErQEq__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQGpQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6ResultZQIfFNaNbNiNfQFgZQFk@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQFiFNaNbNiNfQCjZQCn@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZQCo@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNaNbNiNfQClZQCp@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxaZQDpFNaNbNiNfQqZSQEqQEp__TQEoTwVQEli1Z__TQFdTSQFtQFs__T10byCodeUnitTQCtZQrFQDaZ14ByCodeUnitImplZQHgFNcQCfZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxuZQDpFNaNbNiNfQqZSQEqQEp__TQEoTwVQEli1Z__TQFdTSQFtQFs__T10byCodeUnitTQCtZQrFQDaZ14ByCodeUnitImplZQHgFNcQCfZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxwZQDpFNaNbNiNfQqZQt@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAyuZQDpFNaNbNiNfQqZSQEqQEp__TQEoTwVQEli1Z__TQFdTSQFtQFs__T10byCodeUnitTQCtZQrFQDaZ14ByCodeUnitImplZQHgFNcQCfZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAywZQDpFNaNbNiNfQqZQt@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTQChZQDpFNaNbNiNfQCxZSQErQEq__TQEpTwVQEmi1Z__TQFeTSQFuQFt__T10byCodeUnitTQFbZQrFQFiZ14ByCodeUnitImplZQHhFNcQCfZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZSQGlQGk__TQGjTwVQGgi1Z__TQGyTQDrZQHgFNcQEbZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result11__xopEqualsMxFKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCqZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4backMFNaNdNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4saveMFNaNbNdNiNfZSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCq@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlZSQHmQHl__TQHkTwVQHhi1Z__TQHzTQEsZQIhFNcQFcZQCy@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCz@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQDa@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result7popBackMFNaNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result9__xtoHashFNbNeKxSQHdQHc__TQHbTwVQGyi1Z__TQHqTQEjZQHyFNcQEtZQCpZm@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZSQGlQGk__TQGjTwVQGgi1Z__TQGyTQDrZQHgFNcQEbZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result11__xopEqualsMxFKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCqZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4backMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4saveMFNaNbNdNiNfZSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCq@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlZSQHmQHl__TQHkTwVQHhi1Z__TQHzTQEsZQIhFNcQFcZQCy@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCz@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQDa@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result9__xtoHashFNbNeKxSQHdQHc__TQHbTwVQGyi1Z__TQHqTQEjZQHyFNcQEtZQCpZm@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZSQGlQGk__TQGjTwVQGgi1Z__TQGyTQDrZQHgFNcQEbZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result11__xopEqualsMxFKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCqZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4backMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4saveMFNaNbNdNiNfZSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCq@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlZSQHmQHl__TQHkTwVQHhi1Z__TQHzTQEsZQIhFNcQFcZQCy@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCz@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQDa@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result9__xtoHashFNbNeKxSQHdQHc__TQHbTwVQGyi1Z__TQHqTQEjZQHyFNcQEtZQCpZm@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNaNbNiNfQClZSQGmQGl__TQGkTwVQGhi1Z__TQGzTQDsZQHhFNcQEcZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result11__xopEqualsMxFKxSQHfQHe__TQHdTwVQHai1Z__TQHsTQElZQIaFNcQEvZQCqZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result4backMFNaNdNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result4saveMFNaNbNdNiNfZSQHfQHe__TQHdTwVQHai1Z__TQHsTQElZQIaFNcQEvZQCq@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__ctorMFNaNbNcNiNfNkMQDmZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCy@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__ctorMFNaNbNcNiNfNkMQDmkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQCz@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__ctorMFNaNbNcNiNfNkMQDmkkZSQHpQHo__TQHnTwVQHki1Z__TQIcTQEvZQIkFNcQFfZQDa@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__initZ@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result7popBackMFNaNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result9__xtoHashFNbNeKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCpZm@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDgFNaNeMKQnKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAuZQDgFNaNeMKQnKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAwZQDgFNaNeMKQnKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDhFNaNeMKQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxuZQDhFNaNeMKQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAyuZQDhFNaNeMKQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TQCaZQDhFNaNeMKQCoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TxAaZQDhFNaNeMKxQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TxAuZQDhFNaNeMKxQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TxAwZQDhFNaNeMKxQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TQCaZQDhFNaNbNiNeMKQCsKmZw@Base 15 + _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG1wwZm@Base 15 + _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG2uwZm@Base 15 + _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm@Base 15 + _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfMKAawZv@Base 15 + _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1ZQDdFNaNbNiNfJG4awZm@Base 15 + _D3std3utf__T6strideTAaZQlFNaNfQkZk@Base 15 + _D3std3utf__T6strideTAyaZQmFNaNfKQmmZk@Base 15 + _D3std3utf__T6toUTFzTPaZ__TQoTAyaZQvFNaNbNfQnZQz@Base 15 + _D3std3utf__T7toUTF32TAxaZQnFNaNbNfMQoZAyw@Base 15 + _D3std3utf__T9toUTFImplTAywTAxaZQtFNaNbNfMQoZQv@Base 15 + _D3std3zip10ZipArchive12deleteMemberMFNfCQBnQBm13ArchiveMemberZv@Base 15 + _D3std3zip10ZipArchive12totalEntriesMxFNaNbNdNiNfZk@Base 15 + _D3std3zip10ZipArchive13removeSegmentMFNaNfkkZv@Base 15 + _D3std3zip10ZipArchive19zip64ExtractVersionxt@Base 15 + _D3std3zip10ZipArchive24endOfCentralDirSignatureyAh@Base 15 + _D3std3zip10ZipArchive24localFileHeaderSignatureyAh@Base 15 + _D3std3zip10ZipArchive25archiveExtraDataSignatureyAh@Base 15 + _D3std3zip10ZipArchive25digitalSignatureSignatureyAh@Base 15 + _D3std3zip10ZipArchive25findEndOfCentralDirRecordMFZk@Base 15 + _D3std3zip10ZipArchive26centralFileHeaderSignatureyAh@Base 15 + _D3std3zip10ZipArchive29zip64EndOfCentralDirSignatureyAh@Base 15 + _D3std3zip10ZipArchive36zip64EndOfCentralDirLocatorSignatureyAh@Base 15 + _D3std3zip10ZipArchive4dataMFNaNbNdNiNfZAh@Base 15 + _D3std3zip10ZipArchive5buildMFNaNfZAv@Base 15 + _D3std3zip10ZipArchive6__ctorMFAvZCQBhQBgQBf@Base 15 + _D3std3zip10ZipArchive6__ctorMFNaNbNiNfZCQBnQBmQBl@Base 15 + _D3std3zip10ZipArchive6__initZ@Base 15 + _D3std3zip10ZipArchive6__vtblZ@Base 15 + _D3std3zip10ZipArchive6expandMFCQBeQBd13ArchiveMemberZAh@Base 15 + _D3std3zip10ZipArchive7Segment6__initZ@Base 15 + _D3std3zip10ZipArchive7__ClassZ@Base 15 + _D3std3zip10ZipArchive7getUintMFNaNbNiNfkZk@Base 15 + _D3std3zip10ZipArchive7isZip64MFNaNbNdNiNfbZv@Base 15 + _D3std3zip10ZipArchive7isZip64MxFNaNbNdNiNfZb@Base 15 + _D3std3zip10ZipArchive7putUintMFNaNbNiNfkkZv@Base 15 + _D3std3zip10ZipArchive8getUlongMFNaNbNiNfkZm@Base 15 + _D3std3zip10ZipArchive8putUlongMFNaNbNiNfkmZv@Base 15 + _D3std3zip10ZipArchive9addMemberMFNfCQBjQBi13ArchiveMemberZv@Base 15 + _D3std3zip10ZipArchive9directoryMFNaNbNdNiNfZHAyaCQBwQBv13ArchiveMember@Base 15 + _D3std3zip10ZipArchive9getUshortMFNaNbNiNfkZt@Base 15 + _D3std3zip10ZipArchive9putUshortMFNaNbNiNfktZv@Base 15 + _D3std3zip11__moduleRefZ@Base 15 + _D3std3zip12ZipException6__initZ@Base 15 + _D3std3zip12ZipException6__vtblZ@Base 15 + _D3std3zip12ZipException7__ClassZ@Base 15 + _D3std3zip12ZipException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCwQCvQCu@Base 15 + _D3std3zip12ZipException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCwQCvQCu@Base 15 + _D3std3zip12__ModuleInfoZ@Base 15 + _D3std3zip13ArchiveMember12expandedDataMFNaNbNdNiNfZAh@Base 15 + _D3std3zip13ArchiveMember12expandedDataMFNdNfAhZv@Base 15 + _D3std3zip13ArchiveMember12expandedSizeMxFNaNbNdNiNfZk@Base 15 + _D3std3zip13ArchiveMember14compressedDataMFNaNbNdNiNfZAh@Base 15 + _D3std3zip13ArchiveMember14compressedSizeMxFNaNbNdNiNfZk@Base 15 + _D3std3zip13ArchiveMember14extractVersionMxFNaNbNdNiNfZt@Base 15 + _D3std3zip13ArchiveMember14fileAttributesMFNdNfkZv@Base 15 + _D3std3zip13ArchiveMember14fileAttributesMxFNbNdNiZk@Base 15 + _D3std3zip13ArchiveMember17compressionMethodMFNaNdNfEQBzQBy17CompressionMethodZv@Base 15 + _D3std3zip13ArchiveMember17compressionMethodMxFNaNbNdNiNfZEQCfQCe17CompressionMethod@Base 15 + _D3std3zip13ArchiveMember4timeMFNaNbNdNiNfkZv@Base 15 + _D3std3zip13ArchiveMember4timeMFNdSQBh8datetime7systime7SysTimeZv@Base 15 + _D3std3zip13ArchiveMember4timeMxFNaNbNdNiNfZk@Base 15 + _D3std3zip13ArchiveMember5crc32MxFNaNbNdNiNfZk@Base 15 + _D3std3zip13ArchiveMember5indexMFNaNbNdNiNfkZk@Base 15 + _D3std3zip13ArchiveMember5indexMxFNaNbNdNiNfZk@Base 15 + _D3std3zip13ArchiveMember6__initZ@Base 15 + _D3std3zip13ArchiveMember6__vtblZ@Base 15 + _D3std3zip13ArchiveMember7__ClassZ@Base 15 + _D3std4conv10parseErrorFNaNfLAyaQdmZCQBjQBi13ConvException@Base 15 + _D3std4conv11__moduleRefZ@Base 15 + _D3std4conv11hexToStringFNaNbNfAyaZQe@Base 15 + _D3std4conv11hexToStringFNaNbNfAyuZQe@Base 15 + _D3std4conv11hexToStringFNaNbNfAywZQe@Base 15 + _D3std4conv12__ModuleInfoZ@Base 15 + _D3std4conv13ConvException6__initZ@Base 15 + _D3std4conv13ConvException6__vtblZ@Base 15 + _D3std4conv13ConvException7__ClassZ@Base 15 + _D3std4conv13ConvException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCyQCxQCv@Base 15 + _D3std4conv13ConvException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCyQCxQCv@Base 15 + _D3std4conv14isOctalLiteralFNaNbNiNfxAyaZb@Base 15 + _D3std4conv20strippedOctalLiteralFAyaZQe@Base 15 + _D3std4conv21ConvOverflowException6__ctorMFNaNbNfAyaQdmZCQCdQCcQCa@Base 15 + _D3std4conv21ConvOverflowException6__initZ@Base 15 + _D3std4conv21ConvOverflowException6__vtblZ@Base 15 + _D3std4conv21ConvOverflowException7__ClassZ@Base 15 + _D3std4conv__T13hexStrLiteralTAyaZQuFNaNbNeMQoZAa@Base 15 + _D3std4conv__T13hexStrLiteralTAyuZQuFNaNbNeMQoZAu@Base 15 + _D3std4conv__T13hexStrLiteralTAywZQuFNaNbNeMQoZAw@Base 15 + _D3std4conv__T14convertToOctalTiZQtFNaNbNiNfiZi@Base 15 + _D3std4conv__T2toTAyaZ__TQlTAaZQrFNaNbNfQmZQz@Base 15 + _D3std4conv__T2toTAyaZ__TQlTAxaZQsFNaNbNfQnZQBa@Base 15 + _D3std4conv__T2toTAyaZ__TQlTEQBb5regex8internal2ir2IRZQBoFNaNfQBiZQBw@Base 15 + _D3std4conv__T2toTAyaZ__TQlTEQBb6logger4core8LogLevelZQBoFNaNfQBiZQBw@Base 15 + _D3std4conv__T2toTAyaZ__TQlTEQBb6socket12SocketOptionZQBoFNaNfQBiZQBw@Base 15 + _D3std4conv__T2toTAyaZ__TQlTPSQBc11parallelism12AbstractTaskZQBvFNaNfQBpZQCd@Base 15 + _D3std4conv__T2toTAyaZ__TQlTPaZQrFNaNbQkZQx@Base 15 + _D3std4conv__T2toTAyaZ__TQlTPxaZQsFNaNbQlZQy@Base 15 + _D3std4conv__T2toTAyaZ__TQlTQkZQrFNaNbNiNfQyZQBb@Base 15 + _D3std4conv__T2toTAyaZ__TQlTSQBb11concurrency3TidZQBkFNaNfQBeZQBs@Base 15 + _D3std4conv__T2toTAyaZ__TQlTSQBb4path__T16asNormalizedPathTSQCg5range__T5chainTSQDa3utf__T10byCodeUnitTQDhZQrFQDoZ14ByCodeUnitImplTSQFaQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQHdFNaNfQGxZQHl@Base 15 + _D3std4conv__T2toTAyaZ__TQlTSQBb5range__T5chainTSQBv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDuQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFjFNaNfQFdZQFr@Base 15 + _D3std4conv__T2toTAyaZ__TQlTiZQqFNaNbNfiZQx@Base 15 + _D3std4conv__T2toTAyaZ__TQlTkZQqFNaNbNfkZQx@Base 15 + _D3std4conv__T2toTAyaZ__TQlTmZQqFNaNbNfmZQx@Base 15 + _D3std4conv__T2toTAyaZ__TQlTtZQqFNaNbNftZQx@Base 15 + _D3std4conv__T2toTAyaZ__TQlTxkZQrFNaNbNfxkZQz@Base 15 + _D3std4conv__T2toTAyaZ__TQlTxlZQrFNaNbNfxlZQz@Base 15 + _D3std4conv__T2toTAyaZ__TQlTxmZQrFNaNbNfxmZQz@Base 15 + _D3std4conv__T2toTAyaZ__TQlTykZQrFNaNbNfykZQz@Base 15 + _D3std4conv__T2toThZ__TQjTxkZQpFNaNfxkZh@Base 15 + _D3std4conv__T2toTiZ__TQjTEQz3net7isemail15EmailStatusCodeZQBtFNaNbNiNfQBtZi@Base 15 + _D3std4conv__T2toTiZ__TQjTEQz8datetime4date5MonthZQBkFNaNbNiNfQBkZi@Base 15 + _D3std4conv__T2toTiZ__TQjThZQoFNaNbNiNfhZi@Base 15 + _D3std4conv__T2toTiZ__TQjTiZQoFNaNbNiNfiZi@Base 15 + _D3std4conv__T2toTiZ__TQjTkZQoFNaNfkZi@Base 15 + _D3std4conv__T2toTiZ__TQjTmZQoFNaNfmZi@Base 15 + _D3std4conv__T2toTiZ__TQjTsZQoFNaNbNiNfsZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxEQBa8datetime4date5MonthZQBmFNaNbNiNfxQBmZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxhZQpFNaNbNiNfxhZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxkZQpFNaNfxkZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxlZQpFNaNfxlZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxmZQpFNaNfxmZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxsZQpFNaNbNiNfxsZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxtZQpFNaNbNiNfxtZi@Base 15 + _D3std4conv__T2toTiZ__TQjTykZQpFNaNfykZi@Base 15 + _D3std4conv__T2toTiZ__TQjTymZQpFNaNfymZi@Base 15 + _D3std4conv__T2toTkZ__TQjTkZQoFNaNbNiNfkZk@Base 15 + _D3std4conv__T2toTkZ__TQjTmZQoFNaNfmZk@Base 15 + _D3std4conv__T2toTlZ__TQjTlZQoFNaNbNiNflZl@Base 15 + _D3std4conv__T2toTlZ__TQjTmZQoFNaNfmZl@Base 15 + _D3std4conv__T2toTmZ__TQjTkZQoFNaNbNiNfkZm@Base 15 + _D3std4conv__T2toTmZ__TQjTmZQoFNaNbNiNfmZm@Base 15 + _D3std4conv__T2toTsZ__TQjTiZQoFNaNfiZs@Base 15 + _D3std4conv__T2toTtZ__TQjTAxaZQqFNaNfQlZt@Base 15 + _D3std4conv__T4textTAxaTAyaTQiZQrFNaNbNfQuQsQyZQx@Base 15 + _D3std4conv__T4textTAyaTAxaTQiZQrFNaNbNfQuQsQyZQBb@Base 15 + _D3std4conv__T4textTAyaTAxaZQoFNaNbNfQrQpZQw@Base 15 + _D3std4conv__T4textTAyaTQeTQhTAxaTQoZQxFNaNbNfQBaQBdQBgQzQBlZQBp@Base 15 + _D3std4conv__T4textTAyaTQeTQhTQkTkZQvFNaNbNfQyQBaQBdQBgkZQBl@Base 15 + _D3std4conv__T4textTAyaTQeTQhZQqFNaNbNfQtQvQxZQBa@Base 15 + _D3std4conv__T4textTAyaTQeTiTQjTiTQoZQxFNaNbNfQBaQBdiQBhiQBlZQBp@Base 15 + _D3std4conv__T4textTAyaTQeZQnFNaNbNfQqQsZQv@Base 15 + _D3std4conv__T4textTAyaTaZQmFNaNbNfQpaZQt@Base 15 + _D3std4conv__T4textTAyaTiTQgZQpFNaNbNfQsiQvZQy@Base 15 + _D3std4conv__T4textTAyaTiZQmFNaNbNfQpiZQt@Base 15 + _D3std4conv__T4textTAyaTkTQgTkZQrFNaNbNfQukQxkZQBb@Base 15 + _D3std4conv__T4textTAyaTkTQgTmTQlZQuFNaNbNfQxkQBamQBeZQBi@Base 15 + _D3std4conv__T4textTAyaTtTQgTtTaTaTQpTmZQBaFNaNbNfQBetQBitaaQBomZQBt@Base 15.2 + _D3std4conv__T4textTAyaTtTaTaTQkTmZQvFNaNbNfQytaaQBdmZQBi@Base 15.2 + _D3std4conv__T4textTAyaTwTQgZQpFNaNfQqwQtZQw@Base 15 + _D3std4conv__T4textTAyaTxaZQnFNaNbNfQqxaZQv@Base 15 + _D3std4conv__T4textTAyaZQkFNaNbNiNfQpZQs@Base 15 + _D3std4conv__T4textTPSQu11parallelism12AbstractTaskTaTQBiZQBsFNaNfQBuaQByZAya@Base 15 + _D3std4conv__T5parseTiTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi0ZQCkFNaNfMKQClZi@Base 15 + _D3std4conv__T5parseTkTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi0ZQCkFNaNfMKQClZk@Base 15 + _D3std4conv__T5parseTkTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi1ZQCkFNaNfMKQClZSQDlQCl__T5TupleTkVQCia4_64617461TmVQCza5_636f756e74ZQBr@Base 15 + _D3std4conv__T5parseTtTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi0ZQCkFNaNfMKQClZt@Base 15 + _D3std4conv__T5toStrTAyaTPSQz11parallelism12AbstractTaskZQBrFNaNfQBoZQBw@Base 15 + _D3std4conv__T5toStrTAyaTSQy11concurrency3TidZQBgFNaNfQBdZQBl@Base 15 + _D3std4conv__T5toStrTAyaTSQy4path__T16asNormalizedPathTSQCc5range__T5chainTSQCw3utf__T10byCodeUnitTQDaZQrFQDhZ14ByCodeUnitImplTSQEwQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQGzFNaNfQGwZQHe@Base 15 + _D3std4conv__T5toStrTAyaTSQy5range__T5chainTSQBr3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDqQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFfFNaNfQFcZQFk@Base 15 + _D3std4conv__T5toStrTyAaTEQy5regex8internal2ir2IRZQBkFNaNfQBhZyQBp@Base 15 + _D3std4conv__T5toStrTyAaTEQy6logger4core8LogLevelZQBkFNaNfQBhZyQBp@Base 15 + _D3std4conv__T5toStrTyAaTEQy6socket12SocketOptionZQBkFNaNfQBhZyQBp@Base 15 + _D3std4conv__T6toImplTAyaTAaZQpFNaNbNfQmZQt@Base 15 + _D3std4conv__T6toImplTAyaTAxaZQqFNaNbNfQnZQu@Base 15 + _D3std4conv__T6toImplTAyaTEQz5regex8internal2ir2IRZQBlFNaNfQBhZQBp@Base 15 + _D3std4conv__T6toImplTAyaTEQz6logger4core8LogLevelZQBlFNaNfQBhZQBp@Base 15 + _D3std4conv__T6toImplTAyaTEQz6socket12SocketOptionZQBlFNaNfQBhZQBp@Base 15 + _D3std4conv__T6toImplTAyaTPSQBa11parallelism12AbstractTaskZQBtFNaNfQBpZQBx@Base 15 + _D3std4conv__T6toImplTAyaTPaZQpFNaNbQkZQr@Base 15 + _D3std4conv__T6toImplTAyaTPxaZQqFNaNbQlZQs@Base 15 + _D3std4conv__T6toImplTAyaTQeZQpFNaNbNiNfQsZQv@Base 15 + _D3std4conv__T6toImplTAyaTSQz11concurrency3TidZQBhFNaNfQBdZQBl@Base 15 + _D3std4conv__T6toImplTAyaTSQz4path__T16asNormalizedPathTSQCd5range__T5chainTSQCx3utf__T10byCodeUnitTQDaZQrFQDhZ14ByCodeUnitImplTSQExQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQHaFNaNfQGwZQHe@Base 15 + _D3std4conv__T6toImplTAyaTSQz5range__T5chainTSQBs3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDrQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFgFNaNfQFcZQFk@Base 15 + _D3std4conv__T6toImplTAyaTiZQoFNaNbNfiZQr@Base 15 + _D3std4conv__T6toImplTAyaTkZQoFNaNbNfkZQr@Base 15 + _D3std4conv__T6toImplTAyaTmZQoFNaNbNfmZQr@Base 15 + _D3std4conv__T6toImplTAyaTtZQoFNaNbNftZQr@Base 15 + _D3std4conv__T6toImplTAyaTxkZQpFNaNbNfxkZQt@Base 15 + _D3std4conv__T6toImplTAyaTxlZQpFNaNbNfxlZQt@Base 15 + _D3std4conv__T6toImplTAyaTxmZQpFNaNbNfxmZQt@Base 15 + _D3std4conv__T6toImplTAyaTykZQpFNaNbNfykZQt@Base 15 + _D3std4conv__T6toImplThTxkZQnFNaNfxkZh@Base 15 + _D3std4conv__T6toImplTiTEQx3net7isemail15EmailStatusCodeZQBrFNaNbNiNfQBtZi@Base 15 + _D3std4conv__T6toImplTiTEQx8datetime4date5MonthZQBiFNaNbNiNfQBkZi@Base 15 + _D3std4conv__T6toImplTiThZQmFNaNbNiNfhZi@Base 15 + _D3std4conv__T6toImplTiTiZQmFNaNbNiNfiZi@Base 15 + _D3std4conv__T6toImplTiTkZQmFNaNfkZi@Base 15 + _D3std4conv__T6toImplTiTmZQmFNaNfmZi@Base 15 + _D3std4conv__T6toImplTiTsZQmFNaNbNiNfsZi@Base 15 + _D3std4conv__T6toImplTiTxEQy8datetime4date5MonthZQBjFNaNbNiNfxQBlZi@Base 15 + _D3std4conv__T6toImplTiTxhZQnFNaNbNiNfxhZi@Base 15 + _D3std4conv__T6toImplTiTxkZQnFNaNfxkZi@Base 15 + _D3std4conv__T6toImplTiTxlZQnFNaNfxlZi@Base 15 + _D3std4conv__T6toImplTiTxmZQnFNaNfxmZi@Base 15 + _D3std4conv__T6toImplTiTxsZQnFNaNbNiNfxsZi@Base 15 + _D3std4conv__T6toImplTiTxtZQnFNaNbNiNfxtZi@Base 15 + _D3std4conv__T6toImplTiTykZQnFNaNfykZi@Base 15 + _D3std4conv__T6toImplTiTymZQnFNaNfymZi@Base 15 + _D3std4conv__T6toImplTkTkZQmFNaNbNiNfkZk@Base 15 + _D3std4conv__T6toImplTkTmZQmFNaNfmZk@Base 15 + _D3std4conv__T6toImplTlTlZQmFNaNbNiNflZl@Base 15 + _D3std4conv__T6toImplTlTmZQmFNaNfmZl@Base 15 + _D3std4conv__T6toImplTmTkZQmFNaNbNiNfkZm@Base 15 + _D3std4conv__T6toImplTmTmZQmFNaNbNiNfmZm@Base 15 + _D3std4conv__T6toImplTsTiZQmFNaNfiZs@Base 15 + _D3std4conv__T6toImplTtTAxaZQoFNaNfQlZt@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai128ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai129ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai130ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai132ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai133ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai134ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai136ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai137ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai138ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai140ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai141ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai142ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai144ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai145ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai146ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai148ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai149ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai150ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai152ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai153ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai154ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai156ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai157ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai158ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai160ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai161ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai162ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai164ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai165ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai166ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai168ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai172ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai176ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai180ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai184ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai188ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai192ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai196ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai128ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai160ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai192ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai1ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai255ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai32ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai64ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai96ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai10ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai13ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai15ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai16ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai17ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai18ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai19ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai1ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai20ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai21ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai26ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai2ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai30ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai3ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai4ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai5ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai6ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai7ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai8ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai9ZQBtyQBn@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result10initializeMFNaNbNiNfiZv@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result4backMFNaNbNdNiNfZa@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result4saveMFNaNbNdNiNfZSQDrQDq__TQDoVhi10TaVQDji1TiZQEhFNaNbNiNfiZQCq@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result5frontMFNaNbNdNiNfZa@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result6__initZ@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result6lengthMFNaNbNdNiNfZm@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result7opIndexMFNaNbNiNfmZa@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result7opSliceMFNaNbNiNfmmZSQDuQDt__TQDrVhi10TaVQDmi1TiZQEkFNaNbNiNfiZQCt@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZSQCsQCr__TQCpVhi10TaVQCki1TiZQDiFNaNbNiNfiZ6Result@Base 15 + _D3std4conv__T8textImplTAyaTAxaTQiTQhZQyFNaNbNfQtQzQxZQBe@Base 15 + _D3std4conv__T8textImplTAyaTPSQBc11parallelism12AbstractTaskTaTQBjZQCbFNaNfQBvaQBzZQCh@Base 15 + _D3std4conv__T8textImplTAyaTQeTAxaTQlZQyFNaNbNfQxQsQBbZQBf@Base 15 + _D3std4conv__T8textImplTAyaTQeTAxaZQvFNaNbNfQuQpZQz@Base 15 + _D3std4conv__T8textImplTAyaTQeTQhTQkTAxaTQrZQBeFNaNbNfQBeQBhQBkQBaQBqZQBu@Base 15 + _D3std4conv__T8textImplTAyaTQeTQhTQkTQnTkZQBcFNaNbNfQBcQBfQBiQBlkZQBq@Base 15 + _D3std4conv__T8textImplTAyaTQeTQhTQkZQxFNaNbNfQwQyQBaZQBe@Base 15 + _D3std4conv__T8textImplTAyaTQeTQhTiTQmTiTQrZQBeFNaNbNfQBeQBhiQBliQBpZQBt@Base 15 + _D3std4conv__T8textImplTAyaTQeTQhZQuFNaNbNfQtQvZQy@Base 15 + _D3std4conv__T8textImplTAyaTQeTaZQtFNaNbNfQsaZQw@Base 15 + _D3std4conv__T8textImplTAyaTQeTiTQjZQwFNaNbNfQviQyZQBb@Base 15 + _D3std4conv__T8textImplTAyaTQeTiZQtFNaNbNfQsiZQw@Base 15 + _D3std4conv__T8textImplTAyaTQeTkTQjTkZQyFNaNbNfQxkQBakZQBf@Base 15 + _D3std4conv__T8textImplTAyaTQeTkTQjTmTQoZQBbFNaNbNfQBbkQBfmQBjZQBn@Base 15 + _D3std4conv__T8textImplTAyaTQeTtTQjTtTaTaTQsTmZQBhFNaNbNfQBhtQBltaaQBrmZQBw@Base 15.2 + _D3std4conv__T8textImplTAyaTQeTtTaTaTQnTmZQBcFNaNbNfQBctaaQBimZQBn@Base 15.2 + _D3std4conv__T8textImplTAyaTQeTwTQjZQwFNaNfQtwQwZQz@Base 15 + _D3std4conv__T8textImplTAyaTQeTxaZQuFNaNbNfQtxaZQy@Base 15 + _D3std4conv__T8textImplTAyaTQeZQrFNaNbNiNfQsZQv@Base 15 + _D3std4conv__T8textImplTAyaTiZQqFNaNbNfiZQr@Base 15 + _D3std4conv__T8textImplTAyaTkZQqFNaNbNfkZQr@Base 15 + _D3std4conv__T8textImplTAyaTmZQqFNaNbNfmZQr@Base 15 + _D3std4conv__T8unsignedTiZQmFNaNbNiNfiZk@Base 15 + _D3std4conv__T8unsignedTmZQmFNaNbNiNfmZm@Base 15 + _D3std4conv__T9convErrorTAxaTiZQrFNaNfQnAyamZCQBsQBr13ConvException@Base 15 + _D3std4conv__T9convErrorTAxaTkZQrFNaNfQnAyamZCQBsQBr13ConvException@Base 15 + _D3std4conv__T9convErrorTAxaTtZQrFNaNfQnAyamZCQBsQBr13ConvException@Base 15 + _D3std4file10attrIsFileFNaNbNiNfkZb@Base 15 + _D3std4file10existsImplFNbNiNeMPxaZb@Base 15 + _D3std4file10removeImplFNeMAxaMPxaZv@Base 15 + _D3std4file10renameImplFNeMAxaMQeMPxaMQeZv@Base 15 + _D3std4file11__moduleRefZ@Base 15 + _D3std4file11thisExePathFNeZAya@Base 15 + _D3std4file12__ModuleInfoZ@Base 15 + _D3std4file12mkdirRecurseFNfMAxaZv@Base 15 + _D3std4file12rmdirRecurseFNfMAxaZv@Base 15 + _D3std4file12rmdirRecurseFNfMKSQBdQBc8DirEntryZv@Base 15 + _D3std4file12rmdirRecurseFNfMSQBcQBb8DirEntryZv@Base 15 + _D3std4file12setTimesImplFNeMAxaMPxaSQBj8datetime7systime7SysTimeQBdZv@Base 15 + _D3std4file13FileException6__ctorMFNaNfMAxaMQeAyamZCQByQBxQBv@Base 15 + _D3std4file13FileException6__ctorMFNaNfMAxaMQeAyamkZCQBzQByQBw@Base 15 + _D3std4file13FileException6__ctorMFNeMAxakAyamZCQBuQBtQBr@Base 15 + _D3std4file13FileException6__initZ@Base 15 + _D3std4file13FileException6__vtblZ@Base 15 + _D3std4file13FileException7__ClassZ@Base 15 + _D3std4file13attrIsSymlinkFNaNbNiNfkZb@Base 15 + _D3std4file15DirIteratorImpl11__xopEqualsMxFKxSQBtQBsQBqZb@Base 15 + _D3std4file15DirIteratorImpl11popDirStackMFNeZv@Base 15 + _D3std4file15DirIteratorImpl15releaseDirStackMFNeZv@Base 15 + _D3std4file15DirIteratorImpl4nextMFNeZb@Base 15 + _D3std4file15DirIteratorImpl5emptyMFNdNfZb@Base 15 + _D3std4file15DirIteratorImpl5frontMFNdNfZSQBoQBn8DirEntry@Base 15 + _D3std4file15DirIteratorImpl6__dtorMFNfZv@Base 15 + _D3std4file15DirIteratorImpl6__initZ@Base 15 + _D3std4file15DirIteratorImpl6stepInMFNfAyaZ14trustedOpendirFNbNiNeQBbZPS4core3sys5posix6dirent3DIR@Base 15 + _D3std4file15DirIteratorImpl6stepInMFNfAyaZb@Base 15 + _D3std4file15DirIteratorImpl8hasExtraMFNfZb@Base 15 + _D3std4file15DirIteratorImpl8opAssignMFNcNjNeSQBsQBrQBpZQl@Base 15 + _D3std4file15DirIteratorImpl8popExtraMFNfZSQBpQBo8DirEntry@Base 15 + _D3std4file15DirIteratorImpl8popFrontMFNfZv@Base 15 + _D3std4file15DirIteratorImpl9DirHandle11__xopEqualsMxFKxSQCdQCcQCaQBmZb@Base 15 + _D3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D3std4file15DirIteratorImpl9DirHandle9__xtoHashFNbNeKxSQCcQCbQBzQBlZm@Base 15 + _D3std4file15DirIteratorImpl9__xtoHashFNbNeKxSQBsQBrQBpZm@Base 15 + _D3std4file15DirIteratorImpl9mayStepInMFNfZb@Base 15 + _D3std4file15DirIteratorImpl9pushExtraMFNfSQBpQBo8DirEntryZv@Base 15 + _D3std4file15DirIteratorImpl__T6__ctorTAyaZQmMFNcNfQmEQCaQBz8SpanModebZSQCsQCrQCp@Base 15 + _D3std4file21getAvailableDiskSpaceFNfMAxaZm@Base 15 + _D3std4file6getcwdFNeZAya@Base 15 + _D3std4file7tempDirFNeZ12addSeparatorFNaNbNfAyaZQe@Base 15 + _D3std4file7tempDirFNeZ5cacheAya@Base 15 + _D3std4file7tempDirFNeZAya@Base 15 + _D3std4file7tempDirFNeZ__T15findExistingDirTAyaTQeTQhTQkTQnTQqZQBlFNfLQBaLQBeLQBiLQBmLQBqLQBuZQBy@Base 15 + _D3std4file8DirEntry10attributesMFNdNlNfZk@Base 15 + _D3std4file8DirEntry11__xopEqualsMxFKxSQBlQBkQBiZb@Base 15 + _D3std4file8DirEntry14linkAttributesMFNdNlNfZk@Base 15 + _D3std4file8DirEntry15_ensureStatDoneMFNlNeZv@Base 15 + _D3std4file8DirEntry16_ensureLStatDoneMFNlNeZv@Base 15 + _D3std4file8DirEntry16timeLastAccessedMFNdNlNfZSQBu8datetime7systime7SysTime@Base 15 + _D3std4file8DirEntry16timeLastModifiedMFNdNlNfZSQBu8datetime7systime7SysTime@Base 15 + _D3std4file8DirEntry17timeStatusChangedMFNdNlNfZSQBv8datetime7systime7SysTime@Base 15 + _D3std4file8DirEntry22_ensureStatOrLStatDoneMFNlNeZv@Base 15 + _D3std4file8DirEntry4nameMxFNaNbNdNjNlNfZAya@Base 15 + _D3std4file8DirEntry4sizeMFNdNlNfZm@Base 15 + _D3std4file8DirEntry5isDirMFNdNlNfZb@Base 15 + _D3std4file8DirEntry6__ctorMFNcNfAyaPS4core3sys5posix6direntQhZSQCkQCjQCh@Base 15 + _D3std4file8DirEntry6__ctorMFNcNfNkMAyaZSQBnQBmQBk@Base 15 + _D3std4file8DirEntry6__initZ@Base 15 + _D3std4file8DirEntry6isFileMFNdNlNfZb@Base 15 + _D3std4file8DirEntry7statBufMFNdNlNfZS4core3sys5posixQk4stat6stat_t@Base 15 + _D3std4file8DirEntry9__xtoHashFNbNeKxSQBkQBjQBhZm@Base 15 + _D3std4file8DirEntry9isSymlinkMFNdNlNfZb@Base 15 + _D3std4file8copyImplFNeMAxaMQeMPxaMQeEQBk8typecons__T4FlagVAyaa18_707265736572766541747472696275746573ZQByZv@Base 15 + _D3std4file8deletemeFNdNfZ8fileNameAya@Base 15 + _D3std4file8deletemeFNdNfZAya@Base 15 + _D3std4file8readImplFNeMAxaMPxamZAv@Base 15 + _D3std4file9attrIsDirFNaNbNiNfkZb@Base 15 + _D3std4file9writeImplFNeMAxaMPxaMAxvbZv@Base 15 + _D3std4file__T10dirEntriesVbi1ZQrFNfAyaEQBmQBl8SpanModebZSQCeQCd__T12_DirIteratorVbi1ZQt@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt11__fieldDtorMFNeZv@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt5emptyMFNdNeZb@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt5frontMFNdNeZSQBvQBu8DirEntry@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt6__ctorMFNcNeAyaEQByQBx8SpanModebZSQCqQCp__TQCnVbi1ZQCv@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt6__initZ@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt8opAssignMFNcNjNfSQBzQBy__TQBwVbi1ZQCeZQw@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt8popFrontMFNeZv@Base 15 + _D3std4file__T13getAttributesTAxaZQuFNfQjZk@Base 15 + _D3std4file__T13getAttributesTAyaZQuFNfQjZk@Base 15 + _D3std4file__T15ensureDirExistsZQsFNfMAxaZb@Base 15 + _D3std4file__T17statTimeToStdTimeVai109ZQBaFNaNbNfKxS4core3sys5posixQk4stat6stat_tZSQDe8datetime7systime7SysTime@Base 15 + _D3std4file__T17statTimeToStdTimeVai97ZQzFNaNbNfKxS4core3sys5posixQk4stat6stat_tZSQDc8datetime7systime7SysTime@Base 15 + _D3std4file__T17statTimeToStdTimeVai99ZQzFNaNbNfKxS4core3sys5posixQk4stat6stat_tZSQDc8datetime7systime7SysTime@Base 15 + _D3std4file__T5isDirTAxaZQlFNdNfQlZb@Base 15 + _D3std4file__T5isDirTAyaZQlFNdNfQlZb@Base 15 + _D3std4file__T5rmdirTAyaZQlFNfQjZv@Base 15 + _D3std4file__T5rmdirTAyaZQlFQhZ12trustedRmdirFNbNiNeMPxaZb@Base 15 + _D3std4file__T6existsTAxaZQmFNbNiNfQnZb@Base 15 + _D3std4file__T6existsTAyaZQmFNbNiNfQnZb@Base 15 + _D3std4file__T6isFileTAyaZQmFNdNfQlZb@Base 15 + _D3std4file__T6removeTAyaZQmFNfQjZv@Base 15 + _D3std4file__T8cenforceTPS4core3sys5posix6dirent3DIRZQBnFNfQBjMLAxaAyamZQBw@Base 15 + _D3std4file__T8cenforceTPaZQnFNfQiMLAxaAyamZQu@Base 15 + _D3std4file__T8cenforceTbZQmFNebMAxaMPxaAyamZb@Base 15 + _D3std4file__T8cenforceTbZQmFNfbMLAxaAyamZb@Base 15 + _D3std4file__T8readLinkTAyaZQoFNfQjZQm@Base 15 + _D3std4json11__moduleRefZ@Base 15 + _D3std4json12__ModuleInfoZ@Base 15 + _D3std4json13JSONException6__ctorMFNaNbNfAyaQdmZCQBvQBuQBs@Base 15 + _D3std4json13JSONException6__ctorMFNaNbNfAyaiiZCQBuQBtQBr@Base 15 + _D3std4json13JSONException6__initZ@Base 15 + _D3std4json13JSONException6__vtblZ@Base 15 + _D3std4json13JSONException7__ClassZ@Base 15 + _D3std4json16JSONFloatLiteral6__initZ@Base 15 + _D3std4json6toJSONFNfKxSQwQu9JSONValueIbIEQBoQBn11JSONOptionsZAya@Base 15 + _D3std4json9JSONValue10arrayNoRefMNgFNaNdNeZNgASQBuQBtQBr@Base 15 + _D3std4json9JSONValue11objectNoRefMNgFNaNdNeZNgHAyaSQByQBxQBv@Base 15 + _D3std4json9JSONValue13orderedObjectMFNaNbNdNiNeNkMASQBz8typecons__T5TupleTAyaVQea3_6b6579TSQDmQDlQDjVQBba5_76616c7565ZQBzZQCu@Base 15 + _D3std4json9JSONValue13orderedObjectMNgFNaNcNdNjZNgASQBz8typecons__T5TupleTAyaVQea3_6b6579TSQDmQDlQDjVQBba5_76616c7565ZQBz@Base 15 + _D3std4json9JSONValue14toPrettyStringMxFNfIEQBqQBp11JSONOptionsZAya@Base 15 + _D3std4json9JSONValue18orderedObjectNoRefMNgFNaNdNeZNgASQCc8typecons__T5TupleTAyaVQea3_6b6579TSQDpQDoQDmVQBba5_76616c7565ZQBz@Base 15 + _D3std4json9JSONValue3strMFNaNbNdNiNjNeNkMAyaZQe@Base 15 + _D3std4json9JSONValue3strMxFNaNdNjNlNeZAya@Base 15 + _D3std4json9JSONValue4typeMxFNaNbNdNiNfZEQBnQBm8JSONType@Base 15 + _D3std4json9JSONValue5Store6Object6__initZ@Base 15 + _D3std4json9JSONValue5Store6__initZ@Base 15 + _D3std4json9JSONValue5arrayMFNaNbNdNiNlNeNkMASQBsQBrQBpZQm@Base 15 + _D3std4json9JSONValue5arrayMNgFNaNcNdNlNjZNgASQBsQBrQBp@Base 15 + _D3std4json9JSONValue6__initZ@Base 15 + _D3std4json9JSONValue6isNullMxFNaNbNdNiNfZb@Base 15 + _D3std4json9JSONValue6objectMFNaNbNdNiNeNkMHAyaSQBuQBtQBrZQp@Base 15 + _D3std4json9JSONValue6objectMNgFNaNcNdNjZNgHAyaSQBuQBtQBr@Base 15 + _D3std4json9JSONValue7booleanMFNaNbNdNiNfbZb@Base 15 + _D3std4json9JSONValue7booleanMxFNaNdNfZb@Base 15 + _D3std4json9JSONValue7integerMFNaNbNdNiNflZl@Base 15 + _D3std4json9JSONValue7integerMxFNaNdNfZl@Base 15 + _D3std4json9JSONValue7opApplyMFMDFAyaKSQBlQBkQBiZiZi@Base 15 + _D3std4json9JSONValue7opApplyMFMDFmKSQBjQBiQBgZiZi@Base 15 + _D3std4json9JSONValue7opIndexMNgFNaNcNfNkMAyaZNgSQBvQBuQBs@Base 15 + _D3std4json9JSONValue7opIndexMNgFNaNcNfmZNgSQBqQBpQBn@Base 15 + _D3std4json9JSONValue8floatingMFNaNbNdNiNfdZd@Base 15 + _D3std4json9JSONValue8floatingMxFNaNdNfZd@Base 15 + _D3std4json9JSONValue8opEqualsMxFNaNbNiNeKxSQBqQBpQBnZb@Base 15 + _D3std4json9JSONValue8opEqualsMxFNaNbNiNfxSQBpQBoQBmZb@Base 15 + _D3std4json9JSONValue8toStringMxFNfIEQBjQBi11JSONOptionsZAya@Base 15 + _D3std4json9JSONValue8uintegerMFNaNbNdNiNfmZm@Base 15 + _D3std4json9JSONValue8uintegerMxFNaNdNfZm@Base 15 + _D3std4json9JSONValue9isOrderedMxFNaNdNeZb@Base 15 + _D3std4json9JSONValue__T6__ctorTASQBgQBfQBdZQuMFNaNbNcNiNfQBaZQBd@Base 15 + _D3std4json9JSONValue__T6__ctorTAyaZQmMFNaNbNcNiNfQsZSQCaQBzQBx@Base 15 + _D3std4json9JSONValue__T6__ctorTHAyaQdZQpMFNaNcNfQrZSQBzQByQBw@Base 15 + _D3std4json9JSONValue__T6assignTASQBg8typecons__T5TupleTAyaVQea3_6b6579TSQCtQCsQCqVQBba5_76616c7565ZQBzZQDcMFNaNbNiNfQDhZv@Base 15 + _D3std4json9JSONValue__T6assignTASQBgQBfQBdZQuMFNaNbNiNfQyZv@Base 15 + _D3std4json9JSONValue__T6assignTAyaZQmMFNaNbNiNfQqZv@Base 15 + _D3std4json9JSONValue__T6assignTHAyaQdZQpMFNaNfQpZv@Base 15 + _D3std4json9JSONValue__T6assignTHAyaSQBjQBiQBgZQxMFNaNbNiNfQBbZv@Base 15 + _D3std4json9JSONValue__T6assignTbZQkMFNaNbNiNfbZv@Base 15 + _D3std4json9JSONValue__T6assignTdZQkMFNaNbNiNfdZv@Base 15 + _D3std4json9JSONValue__T6assignTlZQkMFNaNbNiNflZv@Base 15 + _D3std4json9JSONValue__T6assignTmZQkMFNaNbNiNfmZv@Base 15 + _D3std4json__T6toJSONTSQv5array__T8AppenderTAyaZQoZQBlFNfKQBkKxSQCkQCj9JSONValueIbIEQDeQDd11JSONOptionsZv@Base 15 + _D3std4math10operations11__moduleRefZ@Base 15 + _D3std4math10operations12__ModuleInfoZ@Base 15 + _D3std4math10operations13getNaNPayloadFNaNbNiNeeZm@Base 15 + _D3std4math10operations3NaNFNaNbNiNemZe@Base 15 + _D3std4math10operations3fmaFNaNbNiNfeeeZe@Base 15 + _D3std4math10operations4fdimFNaNbNiNfeeZe@Base 15 + _D3std4math10operations6nextUpFNaNbNiNedZd@Base 15 + _D3std4math10operations6nextUpFNaNbNiNeeZe@Base 15 + _D3std4math10operations6nextUpFNaNbNiNefZf@Base 15 + _D3std4math10operations8nextDownFNaNbNiNfdZd@Base 15 + _D3std4math10operations8nextDownFNaNbNiNfeZe@Base 15 + _D3std4math10operations8nextDownFNaNbNiNffZf@Base 15 + _D3std4math10operations__T17extractBitpatternTdZQwFNaNbNiNexdZSQCjQCiQCg__T23FloatingPointBitpatternTdZQBc@Base 15 + _D3std4math10operations__T17extractBitpatternTeZQwFNaNbNiNexeZSQCjQCiQCg__T23FloatingPointBitpatternTeZQBc@Base 15 + _D3std4math10operations__T23FloatingPointBitpatternTdZQBc6__initZ@Base 15 + _D3std4math10operations__T23FloatingPointBitpatternTeZQBc6__initZ@Base 15 + _D3std4math11__moduleRefZ@Base 15 + _D3std4math11exponential11__moduleRefZ@Base 15 + _D3std4math11exponential12__ModuleInfoZ@Base 15 + _D3std4math11exponential3expFNaNbNiNeeZe@Base 15 + _D3std4math11exponential3expFNaNbNiNfdZd@Base 15 + _D3std4math11exponential3expFNaNbNiNffZf@Base 15 + _D3std4math11exponential3logFNaNbNiNfdZd@Base 15 + _D3std4math11exponential3logFNaNbNiNfeZe@Base 15 + _D3std4math11exponential3logFNaNbNiNffZf@Base 15 + _D3std4math11exponential3logFNaNbNiNfiZe@Base 15 + _D3std4math11exponential3logFNaNbNiNfkZe@Base 15 + _D3std4math11exponential3logFNaNbNiNflZe@Base 15 + _D3std4math11exponential3logFNaNbNiNfmZe@Base 15 + _D3std4math11exponential4exp2FNaNbNiNeeZe@Base 15 + _D3std4math11exponential4exp2FNaNbNiNfdZd@Base 15 + _D3std4math11exponential4exp2FNaNbNiNffZf@Base 15 + _D3std4math11exponential4log2FNaNbNiNfdZd@Base 15 + _D3std4math11exponential4log2FNaNbNiNfeZe@Base 15 + _D3std4math11exponential4log2FNaNbNiNffZf@Base 15 + _D3std4math11exponential4log2FNaNbNiNfiZe@Base 15 + _D3std4math11exponential4log2FNaNbNiNfkZe@Base 15 + _D3std4math11exponential4log2FNaNbNiNflZe@Base 15 + _D3std4math11exponential4log2FNaNbNiNfmZe@Base 15 + _D3std4math11exponential4logbFNaNbNiNedZd@Base 15 + _D3std4math11exponential4logbFNaNbNiNeeZe@Base 15 + _D3std4math11exponential4logbFNaNbNiNefZf@Base 15 + _D3std4math11exponential5expm1FNaNbNiNeeZe@Base 15 + _D3std4math11exponential5expm1FNaNbNiNfdZd@Base 15 + _D3std4math11exponential5expm1FNaNbNiNffZf@Base 15 + _D3std4math11exponential5ldexpFNaNbNiNfdiZd@Base 15 + _D3std4math11exponential5ldexpFNaNbNiNfeiZe@Base 15 + _D3std4math11exponential5ldexpFNaNbNiNffiZf@Base 15 + _D3std4math11exponential5log10FNaNbNiNfdZd@Base 15 + _D3std4math11exponential5log10FNaNbNiNfeZe@Base 15 + _D3std4math11exponential5log10FNaNbNiNffZf@Base 15 + _D3std4math11exponential5log10FNaNbNiNfiZe@Base 15 + _D3std4math11exponential5log10FNaNbNiNfkZe@Base 15 + _D3std4math11exponential5log10FNaNbNiNflZe@Base 15 + _D3std4math11exponential5log10FNaNbNiNfmZe@Base 15 + _D3std4math11exponential5log1pFNaNbNiNfdZd@Base 15 + _D3std4math11exponential5log1pFNaNbNiNfeZe@Base 15 + _D3std4math11exponential5log1pFNaNbNiNffZf@Base 15 + _D3std4math11exponential5log1pFNaNbNiNfiZe@Base 15 + _D3std4math11exponential5log1pFNaNbNiNfkZe@Base 15 + _D3std4math11exponential5log1pFNaNbNiNflZe@Base 15 + _D3std4math11exponential5log1pFNaNbNiNfmZe@Base 15 + _D3std4math11exponential6scalbnFNaNbNiNfdiZd@Base 15 + _D3std4math11exponential6scalbnFNaNbNiNfeiZe@Base 15 + _D3std4math11exponential6scalbnFNaNbNiNffiZf@Base 15 + _D3std4math11exponential8_powImplFNaNbNiNfeeZe@Base 15 + _D3std4math11exponential__T3powTdTdZQjFNaNbNiNeddZd@Base 15 + _D3std4math11exponential__T3powTeTeZQjFNaNbNiNeeeZe@Base 15 + _D3std4math11exponential__T3powTeTiZQjFNaNbNiNeeiZe@Base 15 + _D3std4math11exponential__T3powTeTlZQjFNaNbNiNeelZe@Base 15 + _D3std4math11exponential__T3powTiTiZQjFNaNbNiNfiiZi@Base 15 + _D3std4math11exponential__T3powTmTmZQjFNaNbNiNfmmZm@Base 15 + _D3std4math11exponential__T5frexpTdZQjFNaNbNiNexdJiZd@Base 15 + _D3std4math11exponential__T5frexpTeZQjFNaNbNiNexeJiZe@Base 15 + _D3std4math11exponential__T5frexpTfZQjFNaNbNiNexfJiZf@Base 15 + _D3std4math11exponential__T5ilogbTdZQjFNaNbNiNexdZ9floatBits6__initZ@Base 15 + _D3std4math11exponential__T5ilogbTdZQjFNaNbNiNexdZi@Base 15 + _D3std4math11exponential__T5ilogbTeZQjFNaNbNiNexeZ9floatBits6__initZ@Base 15 + _D3std4math11exponential__T5ilogbTeZQjFNaNbNiNexeZi@Base 15 + _D3std4math11exponential__T5ilogbTfZQjFNaNbNiNexfZ9floatBits6__initZ@Base 15 + _D3std4math11exponential__T5ilogbTfZQjFNaNbNiNexfZi@Base 15 + _D3std4math11exponential__T7expImplTdZQlFNaNbNiNfdZ1PyG3d@Base 15 + _D3std4math11exponential__T7expImplTdZQlFNaNbNiNfdZ1QyG4d@Base 15 + _D3std4math11exponential__T7expImplTdZQlFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T7expImplTeZQlFNaNbNiNfeZ1PyG3e@Base 15 + _D3std4math11exponential__T7expImplTeZQlFNaNbNiNfeZ1QyG4e@Base 15 + _D3std4math11exponential__T7expImplTeZQlFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T7expImplTfZQlFNaNbNiNffZ1PyG6f@Base 15 + _D3std4math11exponential__T7expImplTfZQlFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T7logImplTdVbi0ZQpFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T7logImplTdVbi1ZQpFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T7logImplTeVbi0ZQpFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T7logImplTeVbi1ZQpFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T7logImplTfVbi0ZQpFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T7logImplTfVbi1ZQpFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T8exp2ImplTdZQmFNaNbNiNfdZ1PyG3d@Base 15 + _D3std4math11exponential__T8exp2ImplTdZQmFNaNbNiNfdZ1QyG3d@Base 15 + _D3std4math11exponential__T8exp2ImplTdZQmFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T8exp2ImplTeZQmFNaNbNiNfeZ1PyG3e@Base 15 + _D3std4math11exponential__T8exp2ImplTeZQmFNaNbNiNfeZ1QyG4e@Base 15 + _D3std4math11exponential__T8exp2ImplTeZQmFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T8exp2ImplTfZQmFNaNbNiNffZ1PyG6f@Base 15 + _D3std4math11exponential__T8exp2ImplTfZQmFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T8log2ImplTdZQmFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T8log2ImplTeZQmFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T8log2ImplTfZQmFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T8logbImplTdZQmFNaNbNiNedZd@Base 15 + _D3std4math11exponential__T8logbImplTeZQmFNaNbNiNeeZe@Base 15 + _D3std4math11exponential__T8logbImplTfZQmFNaNbNiNefZf@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ4logPyG6d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ4logQyG6d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ4logRyG3d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ4logSyG4d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ6log10PyG7d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ6log10QyG7d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ6logp1PyG7d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ6logp1QyG7d@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ4logPyG7e@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ4logQyG7e@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ4logRyG4e@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ4logSyG4e@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ5log2PyG7e@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ5log2QyG8e@Base 15 + _D3std4math11exponential__T9LogCoeffsTfZ4logPyG9f@Base 15 + _D3std4math11exponential__T9LogCoeffsTfZ6logp1PyG7f@Base 15 + _D3std4math11exponential__T9LogCoeffsTfZ6logp1QyG7f@Base 15 + _D3std4math11exponential__T9expm1ImplTdZQnFNaNbNiNfdZ1PyG3d@Base 15 + _D3std4math11exponential__T9expm1ImplTdZQnFNaNbNiNfdZ1QyG4d@Base 15 + _D3std4math11exponential__T9expm1ImplTdZQnFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T9expm1ImplTeZQnFNaNbNiNfeZ1PyG5e@Base 15 + _D3std4math11exponential__T9expm1ImplTeZQnFNaNbNiNfeZ1QyG6e@Base 15 + _D3std4math11exponential__T9expm1ImplTeZQnFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T9log10ImplTdZQnFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T9log10ImplTeZQnFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T9log10ImplTfZQnFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T9log1pImplTdZQnFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T9log1pImplTeZQnFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T9log1pImplTfZQnFNaNbNiNffZf@Base 15 + _D3std4math12__ModuleInfoZ@Base 15 + _D3std4math12trigonometry11__moduleRefZ@Base 15 + _D3std4math12trigonometry12__ModuleInfoZ@Base 15 + _D3std4math12trigonometry3cosFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry3cosFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry3cosFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry3sinFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry3sinFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry3sinFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry3tanFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry3tanFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry3tanFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4acosFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4acosFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4acosFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4asinFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4asinFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4asinFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4atanFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4atanFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4atanFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4coshFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4coshFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4coshFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4sinhFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4sinhFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4sinhFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4tanhFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4tanhFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4tanhFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry5acoshFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry5acoshFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry5acoshFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry5asinhFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry5asinhFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry5asinhFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry5atan2FNaNbNiNeeeZe@Base 15 + _D3std4math12trigonometry5atan2FNaNbNiNfddZd@Base 15 + _D3std4math12trigonometry5atan2FNaNbNiNfffZf@Base 15 + _D3std4math12trigonometry5atanhFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry5atanhFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry5atanhFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T5_sinhTdZQjFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T5_sinhTeZQjFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T5_sinhTfZQjFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T5_tanhTdZQjFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T5_tanhTeZQjFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T5_tanhTfZQjFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T6_acoshTdZQkFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T6_acoshTeZQkFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T6_acoshTfZQkFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T6_asinhTdZQkFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T6_asinhTeZQkFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T6_asinhTfZQkFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T7tanImplTdZQlFNaNbNiNfdZ1PyG3d@Base 15 + _D3std4math12trigonometry__T7tanImplTdZQlFNaNbNiNfdZ1QyG5d@Base 15 + _D3std4math12trigonometry__T7tanImplTdZQlFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T7tanImplTeZQlFNaNbNiNfeZ1PyG3e@Base 15 + _D3std4math12trigonometry__T7tanImplTeZQlFNaNbNiNfeZ1QyG5e@Base 15 + _D3std4math12trigonometry__T7tanImplTeZQlFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T7tanImplTfZQlFNaNbNiNffZ1PyG6f@Base 15 + _D3std4math12trigonometry__T7tanImplTfZQlFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T8atanImplTdZQmFNaNbNiNfdZ1PyG5d@Base 15 + _D3std4math12trigonometry__T8atanImplTdZQmFNaNbNiNfdZ1QyG6d@Base 15 + _D3std4math12trigonometry__T8atanImplTdZQmFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T8atanImplTeZQmFNaNbNiNfeZ1PyG5e@Base 15 + _D3std4math12trigonometry__T8atanImplTeZQmFNaNbNiNfeZ1QyG6e@Base 15 + _D3std4math12trigonometry__T8atanImplTeZQmFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T8atanImplTfZQmFNaNbNiNffZ1PyG4f@Base 15 + _D3std4math12trigonometry__T8atanImplTfZQmFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T9atan2ImplTdZQnFNaNbNiNfddZd@Base 15 + _D3std4math12trigonometry__T9atan2ImplTeZQnFNaNbNiNfeeZe@Base 15 + _D3std4math12trigonometry__T9atan2ImplTfZQnFNaNbNiNfffZf@Base 15 + _D3std4math6traits11__moduleRefZ@Base 15 + _D3std4math6traits11isIdenticalFNaNbNiNeeeZb@Base 15 + _D3std4math6traits12__ModuleInfoZ@Base 15 + _D3std4math6traits__T10isInfinityTdZQpFNaNbNiNedZb@Base 15 + _D3std4math6traits__T10isInfinityTeZQpFNaNbNiNeeZb@Base 15 + _D3std4math6traits__T10isInfinityTfZQpFNaNbNiNefZb@Base 15 + _D3std4math6traits__T10isInfinityTxdZQqFNaNbNiNexdZb@Base 15 + _D3std4math6traits__T10isPowerOf2TkZQpFNaNbNiNfxkZb@Base 15 + _D3std4math6traits__T10isPowerOf2TmZQpFNaNbNiNfxmZb@Base 15 + _D3std4math6traits__T11isSubnormalTxdZQrFNaNbNiNexdZb@Base 15 + _D3std4math6traits__T11isSubnormalTxeZQrFNaNbNiNexeZb@Base 15 + _D3std4math6traits__T11isSubnormalTxfZQrFNaNbNiNexfZb@Base 15 + _D3std4math6traits__T5isNaNTdZQjFNaNbNiNedZb@Base 15 + _D3std4math6traits__T5isNaNTeZQjFNaNbNiNeeZb@Base 15 + _D3std4math6traits__T5isNaNTfZQjFNaNbNiNefZb@Base 15 + _D3std4math6traits__T5isNaNTxdZQkFNaNbNiNexdZb@Base 15 + _D3std4math6traits__T5isNaNTxeZQkFNaNbNiNexeZb@Base 15 + _D3std4math6traits__T7signbitTdZQlFNaNbNiNedZi@Base 15 + _D3std4math6traits__T7signbitTeZQlFNaNbNiNeeZi@Base 15 + _D3std4math6traits__T7signbitTfZQlFNaNbNiNefZi@Base 15 + _D3std4math6traits__T7signbitTxeZQmFNaNbNiNexeZi@Base 15 + _D3std4math6traits__T7signbitTyeZQmFNaNbNiNeyeZi@Base 15 + _D3std4math6traits__T8copysignTdTdZQoFNaNbNiNeddZd@Base 15 + _D3std4math6traits__T8copysignTdTiZQoFNaNbNiNeidZd@Base 15 + _D3std4math6traits__T8copysignTeTeZQoFNaNbNiNeeeZe@Base 15 + _D3std4math6traits__T8copysignTeTiZQoFNaNbNiNeieZe@Base 15 + _D3std4math6traits__T8copysignTfTfZQoFNaNbNiNeffZf@Base 15 + _D3std4math6traits__T8copysignTfTiZQoFNaNbNiNeifZf@Base 15 + _D3std4math6traits__T8isFiniteTdZQmFNaNbNiNedZb@Base 15 + _D3std4math6traits__T8isFiniteTeZQmFNaNbNiNeeZb@Base 15 + _D3std4math6traits__T8isFiniteTfZQmFNaNbNiNefZb@Base 15 + _D3std4math8hardware11__moduleRefZ@Base 15 + _D3std4math8hardware12__ModuleInfoZ@Base 15 + _D3std4math8hardware14resetIeeeFlagsFNbNiNeZv@Base 15 + _D3std4math8hardware20FloatingPointControl10initializeMFNbNiNfZv@Base 15 + _D3std4math8hardware20FloatingPointControl15clearExceptionsFNbNiNfZv@Base 15 + _D3std4math8hardware20FloatingPointControl15getControlStateFNaNbNiNeZt@Base 15 + _D3std4math8hardware20FloatingPointControl15setControlStateFNbNiNetZv@Base 15 + _D3std4math8hardware20FloatingPointControl16enableExceptionsMFNbNiNekZv@Base 15 + _D3std4math8hardware20FloatingPointControl17disableExceptionsMFNbNiNekZv@Base 15 + _D3std4math8hardware20FloatingPointControl17enabledExceptionsFNaNbNdNiNeZk@Base 15 + _D3std4math8hardware20FloatingPointControl17hasExceptionTrapsFNaNbNdNiNfZb@Base 15 + _D3std4math8hardware20FloatingPointControl6__dtorMFNbNiNeZv@Base 15 + _D3std4math8hardware20FloatingPointControl6__initZ@Base 15 + _D3std4math8hardware20FloatingPointControl8opAssignMFNbNcNiNjNeSQCkQCjQChQCbZQo@Base 15 + _D3std4math8hardware20FloatingPointControl8roundingFNaNbNdNiNeZk@Base 15 + _D3std4math8hardware20FloatingPointControl8roundingMFNbNdNiNekZv@Base 15 + _D3std4math8hardware9IeeeFlags12getIeeeFlagsFNaNbNiNeZk@Base 15 + _D3std4math8hardware9IeeeFlags14resetIeeeFlagsFNbNiNeZv@Base 15 + _D3std4math8hardware9IeeeFlags6__initZ@Base 15 + _D3std4math8hardware9IeeeFlags7inexactMxFNbNdNiNfZb@Base 15 + _D3std4math8hardware9IeeeFlags7invalidMxFNbNdNiNfZb@Base 15 + _D3std4math8hardware9IeeeFlags8overflowMxFNbNdNiNfZb@Base 15 + _D3std4math8hardware9IeeeFlags9divByZeroMxFNbNdNiNfZb@Base 15 + _D3std4math8hardware9IeeeFlags9underflowMxFNbNdNiNfZb@Base 15 + _D3std4math8hardware9ieeeFlagsFNaNbNdNiNeZSQBpQBoQBm9IeeeFlags@Base 15 + _D3std4math8rounding11__moduleRefZ@Base 15 + _D3std4math8rounding12__ModuleInfoZ@Base 15 + _D3std4math8rounding4ceilFNaNbNiNedZd@Base 15 + _D3std4math8rounding4ceilFNaNbNiNeeZe@Base 15 + _D3std4math8rounding4ceilFNaNbNiNefZf@Base 15 + _D3std4math8rounding4rintFNaNbNiNfdZd@Base 15 + _D3std4math8rounding4rintFNaNbNiNfeZe@Base 15 + _D3std4math8rounding4rintFNaNbNiNffZf@Base 15 + _D3std4math8rounding5floorFNaNbNiNedZd@Base 15 + _D3std4math8rounding5floorFNaNbNiNeeZe@Base 15 + _D3std4math8rounding5floorFNaNbNiNefZf@Base 15 + _D3std4math8rounding5lrintFNaNbNiNeeZl@Base 15 + _D3std4math8rounding5roundFNaNbNiNeeZe@Base 15 + _D3std4math8rounding5truncFNaNbNiNeeZe@Base 15 + _D3std4math8rounding6lroundFNbNiNeeZl@Base 15 + _D3std4math8rounding6rndtolFNaNbNiNfdZl@Base 15 + _D3std4math8rounding6rndtolFNaNbNiNfeZl@Base 15 + _D3std4math8rounding6rndtolFNaNbNiNffZl@Base 15 + _D3std4math8rounding9nearbyintFNaNbNiNfeZe@Base 15 + _D3std4math8rounding__T9floorImplTdZQnFNaNbNiNexdZ9floatBits6__initZ@Base 15 + _D3std4math8rounding__T9floorImplTdZQnFNaNbNiNexdZd@Base 15 + _D3std4math8rounding__T9floorImplTeZQnFNaNbNiNexeZ9floatBits6__initZ@Base 15 + _D3std4math8rounding__T9floorImplTeZQnFNaNbNiNexeZe@Base 15 + _D3std4math8rounding__T9floorImplTfZQnFNaNbNiNexfZ9floatBits6__initZ@Base 15 + _D3std4math8rounding__T9floorImplTfZQnFNaNbNiNexfZf@Base 15 + _D3std4math9algebraic11__moduleRefZ@Base 15 + _D3std4math9algebraic12__ModuleInfoZ@Base 15 + _D3std4math9algebraic4cbrtFNbNiNeeZe@Base 15 + _D3std4math9algebraic4fabsFNaNbNiNfdZd@Base 15 + _D3std4math9algebraic4fabsFNaNbNiNfeZe@Base 15 + _D3std4math9algebraic4fabsFNaNbNiNffZf@Base 15 + _D3std4math9algebraic4sqrtFNaNbNiNfdZd@Base 15 + _D3std4math9algebraic4sqrtFNaNbNiNfeZe@Base 15 + _D3std4math9algebraic4sqrtFNaNbNiNffZf@Base 15 + _D3std4math9algebraic8polyImplFNaNbNiNeeIAeZe@Base 15 + _D3std4math9algebraic__T12polyImplBaseTeTeZQtFNaNbNiNeeIAeZe@Base 15 + _D3std4math9algebraic__T4polyTdTdVii3ZQoFNaNbNiNfdKxG3dZd@Base 15 + _D3std4math9algebraic__T4polyTdTdVii4ZQoFNaNbNiNfdKxG4dZd@Base 15 + _D3std4math9algebraic__T4polyTdTdVii5ZQoFNaNbNiNfdKxG5dZd@Base 15 + _D3std4math9algebraic__T4polyTdTdVii6ZQoFNaNbNiNfdKxG6dZd@Base 15 + _D3std4math9algebraic__T4polyTdTdVii7ZQoFNaNbNiNfdKxG7dZd@Base 15 + _D3std4math9algebraic__T4polyTeTeVii3ZQoFNaNbNiNfeKxG3eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii4ZQoFNaNbNiNfeKxG4eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii5ZQoFNaNbNiNfeKxG5eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii6ZQoFNaNbNiNfeKxG6eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii7ZQoFNaNbNiNfeKxG7eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii8ZQoFNaNbNiNfeKxG8eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii9ZQoFNaNbNiNfeKxG9eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeZQkFNaNbNiNeeIAeZe@Base 15 + _D3std4math9algebraic__T4polyTfTfVii6ZQoFNaNbNiNffKxG6fZf@Base 15 + _D3std4math9algebraic__T4polyTfTfVii7ZQoFNaNbNiNffKxG7fZf@Base 15 + _D3std4math9algebraic__T4polyTfTfVii9ZQoFNaNbNiNffKxG9fZf@Base 15 + _D3std4math9algebraic__T4polyTxdTdVii3ZQpFNaNbNiNfxdKxG3dZd@Base 15 + _D3std4math9algebraic__T4polyTxdTdVii4ZQpFNaNbNiNfxdKxG4dZd@Base 15 + _D3std4math9algebraic__T4polyTxdTdVii5ZQpFNaNbNiNfxdKxG5dZd@Base 15 + _D3std4math9algebraic__T4polyTxeTeVii3ZQpFNaNbNiNfxeKxG3eZe@Base 15 + _D3std4math9algebraic__T4polyTxeTeVii4ZQpFNaNbNiNfxeKxG4eZe@Base 15 + _D3std4math9algebraic__T4polyTxeTeVii5ZQpFNaNbNiNfxeKxG5eZe@Base 15 + _D3std4math9algebraic__T4polyTxeTeVii6ZQpFNaNbNiNfxeKxG6eZe@Base 15 + _D3std4math9algebraic__T4polyTxfTfVii4ZQpFNaNbNiNfxfKxG4fZf@Base 15 + _D3std4math9algebraic__T4polyTxfTfVii6ZQpFNaNbNiNfxfKxG6fZf@Base 15 + _D3std4math9algebraic__T4polyTyeTeVii7ZQpFNaNbNiNfyeKxG7eZe@Base 15 + _D3std4math9algebraic__T8nextPow2TmZQmFNaNbNiNfxmZm@Base 15 + _D3std4math9algebraic__T9truncPow2TmZQnFNaNbNiNfxmZm@Base 15 + _D3std4math9constants11__moduleRefZ@Base 15 + _D3std4math9constants12__ModuleInfoZ@Base 15 + _D3std4math9remainder11__moduleRefZ@Base 15 + _D3std4math9remainder12__ModuleInfoZ@Base 15 + _D3std4math9remainder4fmodFNbNiNeeeZe@Base 15 + _D3std4math9remainder4modfFNbNiNeeKeZe@Base 15 + _D3std4math9remainder6remquoFNbNiNeeeJiZe@Base 15 + _D3std4math9remainderQkFNbNiNeeeZe@Base 15 + _D3std4math__T8ieeeMeanTeZQmFNaNbNiNexexeZe@Base 15 + _D3std4meta11__moduleRefZ@Base 15 + _D3std4meta12__ModuleInfoZ@Base 15 + _D3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i2Z4Impl6__initZ@Base 15 + _D3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i3Z4Impl6__initZ@Base 15 + _D3std4path11__moduleRefZ@Base 15 + _D3std4path11expandTildeFNbNfNkMxAyaZ18expandFromDatabaseFNbNfAyaZQe@Base 15 + _D3std4path11expandTildeFNbNfNkMxAyaZ21combineCPathWithDPathFNaNbNePaAyamZQf@Base 15 + _D3std4path11expandTildeFNbNfNkMxAyaZ21expandFromEnvironmentFNbNfAyaZ18__lambda_L4041_C25FNbNiNeZPa@Base 15 + _D3std4path11expandTildeFNbNfNkMxAyaZ21expandFromEnvironmentFNbNfAyaZQe@Base 15 + _D3std4path11expandTildeFNbNfNkMxAyaZAya@Base 15 + _D3std4path12__ModuleInfoZ@Base 15 + _D3std4path12absolutePathFNaNfNkMxAyaLAyaZQe@Base 15 + _D3std4path14isDirSeparatorFNaNbNiNfwZb@Base 15 + _D3std4path16isDriveSeparatorFNaNbNiNfwZb@Base 15 + _D3std4path__T10stripDriveTxaZQqFNaNbNiNfAxaZQe@Base 15 + _D3std4path__T10stripDriveTyaZQqFNaNbNiNfAyaZQe@Base 15 + _D3std4path__T11_stripDriveTAxaZQsFNaNbNiNfQpZQs@Base 15 + _D3std4path__T11_stripDriveTAyaZQsFNaNbNiNfQpZQs@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFNaNbNiNfQFhZSQGnQGm__TQGkTQFzZQGsFQGhZ12PathSplitter@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter11__xopEqualsMxFKxSQHlQHk__TQHiTQGxZQHqFQHfZQCgZb@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter4backMFNaNbNdNiNfZQGj@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter4saveMFNaNbNdNiNfZSQHlQHk__TQHiTQGxZQHqFQHfZQCg@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5frontMFNaNbNdNiNfZQGk@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5ltrimMFNaNbNiNfmmZm@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5rtrimMFNaNbNiNfmmZm@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__ctorMFNaNbNcNiNfQGkZSQHqQHp__TQHnTQHcZQHvFQHkZQCl@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__initZ@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter7popBackMFNaNbNiNfZv@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter8popFrontMFNaNbNiNfZv@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter9__xtoHashFNbNeKxSQHkQHj__TQHhTQGwZQHpFQHeZQCfZm@Base 15 + _D3std4path__T13lastSeparatorTAxaZQuFNaNbNiNfQpZl@Base 15 + _D3std4path__T13lastSeparatorTAyaZQuFNaNbNiNfQpZl@Base 15 + _D3std4path__T15extSeparatorPosTAyaZQwFNaNbNiNfxAyaZl@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNaNbNiNfNkMQFkZSQGuQGt__TQGrTQGcZQGzFNkMQGnZQCe@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt11__xopEqualsMxFKxSQHgQHf__TQHdTQGoZQHlFNkMQGzZQCqZb@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt11getElement0MFNaNbNiNfZa@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt4saveMFNaNbNdNiNfZSQHgQHf__TQHdTQGoZQHlFNkMQGzZQCq@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt5emptyMFNaNbNdNiNfZb@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt5frontMFNaNbNdNiNfZa@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt5isDotFNaNbNiNfQFxZb@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt6__ctorMFNaNbNcNiNfQGbZSQHlQHk__TQHiTQGtZQHqFNkMQHeZQCv@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt6__initZ@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt8isDotDotFNaNbNiNfQGaZb@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt8popFrontMFNaNbNiNfZv@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt9__xtoHashFNbNeKxSQHfQHe__TQHcTQGnZQHkFNkMQGyZQCpZm@Base 15 + _D3std4path__T18rtrimDirSeparatorsTAxaZQzFNaNbNiNfQpZQs@Base 15 + _D3std4path__T18rtrimDirSeparatorsTAyaZQzFNaNbNiNfQpZQs@Base 15 + _D3std4path__T7dirNameTxaZQmFNaNbNiNfNkMAxaZQe@Base 15 + _D3std4path__T8_dirNameTAxaZQoFNaNbNiNfNkMQsZQv@Base 15 + _D3std4path__T8_dirNameTAxaZQoFNkMQkZ6resultFNaNbNiNfbQBeZQBi@Base 15 + _D3std4path__T8baseNameTxaZQnFNaNbNiNfNkMAxaZQe@Base 15 + _D3std4path__T8baseNameTyaZQnFNaNbNiNfNkMAyaZQe@Base 15 + _D3std4path__T8isRootedTAxaZQoFNaNbNiNfQpZb@Base 15 + _D3std4path__T8isRootedTAyaZQoFNaNbNiNfQpZb@Base 15 + _D3std4path__T8isRootedTSQx5range__T5chainTSQBq3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDpQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFeFNaNbNiNfQFgZb@Base 15 + _D3std4path__T8rootNameTSQx5range__T5chainTSQBq3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDpQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFeFNaNbNiNfQFgZQFk@Base 15 + _D3std4path__T9_baseNameTAxaZQpFNaNbNiNfNkMQsZQv@Base 15 + _D3std4path__T9_baseNameTAyaZQpFNaNbNiNfNkMQsZQv@Base 15 + _D3std4path__T9_rootNameTSQy5range__T5chainTSQBr3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDqQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFfFNaNbNiNfQFgZQFk@Base 15 + _D3std4path__T9buildPathTAAxaZQqFMQjZ__T11trustedCastTAyaTAaZQvFNaNbNiNeQoZQv@Base 15 + _D3std4path__T9buildPathTAAxaZQqFNaNbNfMQpZAya@Base 15 + _D3std4path__T9buildPathTaZQnFNaNbNfAAxaXAya@Base 15 + _D3std4path__T9chainPathTAaTAxaZQsFNaNbNiNfQsQrZSQBv5range__T5chainTSQCp3utf__T10byCodeUnitTQCpZQrFQCwZ14ByCodeUnitImplTSQEpQCu__T10OnlyResultTaZQpTSQFrQDc__TQDbTQFeZQDjFQFmZQCtZQEnFQEkQCnQBoZ6Result@Base 15 + _D3std4path__T9chainPathTAxaTQeZQsFNaNbNiNfQsQuZSQBv5range__T5chainTSQCp3utf__T10byCodeUnitTQCpZQrFQCwZ14ByCodeUnitImplTSQEpQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6Result@Base 15 + _D3std4path__T9chainPathTAyaTQeZQsFNaNbNiNfQsQuZSQBv5range__T5chainTSQCp3utf__T10byCodeUnitTQCpZQrFQCwZ14ByCodeUnitImplTSQEpQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6Result@Base 15 + _D3std4path__T9extensionTAyaZQpFNaNbNiNfQpZQs@Base 15 + _D3std4uuid10randomUUIDFNbNiNfZSQBeQBd4UUID@Base 15 + _D3std4uuid11__moduleRefZ@Base 15 + _D3std4uuid12__ModuleInfoZ@Base 15 + _D3std4uuid20UUIDParsingException6__ctorMFNaNeAyamEQBxQBwQBu6ReasonQvC6object9ThrowableQBpmZCQDnQDmQDk@Base 15 + _D3std4uuid20UUIDParsingException6__initZ@Base 15 + _D3std4uuid20UUIDParsingException6__vtblZ@Base 15 + _D3std4uuid20UUIDParsingException7__ClassZ@Base 15 + _D3std4uuid4UUID11uuidVersionMxFNaNbNdNiNfZEQBqQBpQBn7Version@Base 15 + _D3std4uuid4UUID4swapMFNaNbNiNfKSQBfQBeQBcZv@Base 15 + _D3std4uuid4UUID5emptyMxFNaNbNdNiNeZb@Base 15 + _D3std4uuid4UUID5opCmpMxFNaNbNiNfMKxSQBjQBiQBgZi@Base 15 + _D3std4uuid4UUID5opCmpMxFNaNbNiNfxSQBhQBgQBeZi@Base 15 + _D3std4uuid4UUID6__ctorMFNaNbNcNiNfMKxG16hZSQBqQBpQBn@Base 15 + _D3std4uuid4UUID6__ctorMFNaNbNcNiNfxG16hZSQBoQBnQBl@Base 15 + _D3std4uuid4UUID6__initZ@Base 15 + _D3std4uuid4UUID6toHashMxFNaNbNiNfZm@Base 15 + _D3std4uuid4UUID7Version6__initZ@Base 15 + _D3std4uuid4UUID7variantMxFNaNbNdNiNfZEQBlQBkQBi7Variant@Base 15 + _D3std4uuid4UUID8opAssignMFNaNbNiNfMKxSQBlQBkQBiZSQBwQBvQBt@Base 15 + _D3std4uuid4UUID8opAssignMFNaNbNiNfxSQBjQBiQBgZSQBuQBtQBr@Base 15 + _D3std4uuid4UUID8opEqualsMxFNaNbNiNfMKxSQBmQBlQBjZb@Base 15 + _D3std4uuid4UUID8opEqualsMxFNaNbNiNfxSQBkQBjQBhZb@Base 15 + _D3std4uuid4UUID8toStringMxFNaNbNeZAya@Base 15 + _D3std4uuid4UUID__T6__ctorTaZQkMFNaNcNfIAaZSQBqQBpQBn@Base 15 + _D3std4uuid4UUID__T6__ctorTaZQkMFNcIAaZ7skipIndyAi@Base 15 + _D3std4uuid4UUID__T6toCharTaZQkMxFNaNbNiNfmZa@Base 15 + _D3std4uuid4UUID__T8toStringTAaZQnMxFNaNbNiNfMQrZv@Base 15 + _D3std4uuid4UUID__T9asArrayOfTkZQnMFNaNbNcNiNjNeZG4k@Base 15 + _D3std4uuid7md5UUIDFNaNbNiNfxAaxSQBfQBe4UUIDZSQBsQBrQn@Base 15 + _D3std4uuid7md5UUIDFNaNbNiNfxAhxSQBfQBe4UUIDZSQBsQBrQn@Base 15 + _D3std4uuid8sha1UUIDFNaNbNiNfMAxaMxSQBiQBh4UUIDZSQBvQBuQn@Base 15 + _D3std4uuid8sha1UUIDFNaNbNiNfMAxhMxSQBiQBh4UUIDZSQBvQBuQn@Base 15 + _D3std4uuid__T10randomUUIDTSQBa6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFcZQGhFNaNbNiNfKQGhZSQHlQHk4UUID@Base 15 + _D3std4zlib10UnCompress10uncompressMFAxvZQe@Base 15 + _D3std4zlib10UnCompress5emptyMxFNdZb@Base 15 + _D3std4zlib10UnCompress5errorMFiZv@Base 15 + _D3std4zlib10UnCompress5flushMFZAv@Base 15 + _D3std4zlib10UnCompress6__ctorMFEQBfQBe12HeaderFormatZCQCbQCaQBy@Base 15 + _D3std4zlib10UnCompress6__ctorMFkZCQBhQBgQBe@Base 15 + _D3std4zlib10UnCompress6__dtorMFNlZv@Base 15 + _D3std4zlib10UnCompress6__initZ@Base 15 + _D3std4zlib10UnCompress6__vtblZ@Base 15 + _D3std4zlib10UnCompress7__ClassZ@Base 15 + _D3std4zlib10uncompressFAxvmiZAv@Base 15 + _D3std4zlib11__moduleRefZ@Base 15 + _D3std4zlib12__ModuleInfoZ@Base 15 + _D3std4zlib13ZlibException6__ctorMFiZCQBkQBjQBh@Base 15 + _D3std4zlib13ZlibException6__initZ@Base 15 + _D3std4zlib13ZlibException6__vtblZ@Base 15 + _D3std4zlib13ZlibException6getmsgFNaNbNiNfiZAya@Base 15 + _D3std4zlib13ZlibException7__ClassZ@Base 15 + _D3std4zlib5crc32FkAxvZk@Base 15 + _D3std4zlib7adler32FkAxvZk@Base 15 + _D3std4zlib8Compress5errorMFiZv@Base 15 + _D3std4zlib8Compress5flushMFiZAv@Base 15 + _D3std4zlib8Compress6__ctorMFEQBcQBb12HeaderFormatZCQByQBxQBv@Base 15 + _D3std4zlib8Compress6__ctorMFiEQBdQBc12HeaderFormatZCQBzQByQBw@Base 15 + _D3std4zlib8Compress6__dtorMFNlZv@Base 15 + _D3std4zlib8Compress6__initZ@Base 15 + _D3std4zlib8Compress6__vtblZ@Base 15 + _D3std4zlib8Compress7__ClassZ@Base 15 + _D3std4zlib8Compress8compressMFAxvZQe@Base 15 + _D3std4zlib8compressFAxvZAh@Base 15 + _D3std4zlib8compressFAxviZAh@Base 15 + _D3std5array11__moduleRefZ@Base 15 + _D3std5array12__ModuleInfoZ@Base 15 + _D3std5array__T11replaceIntoTxaTSQBfQBe__T8AppenderTAxaZQoTAyaTQeZQBzFNaNbNfQBsQBbQxQzKmZv@Base 15 + _D3std5array__T11replaceIntoTyaTSQBfQBe__T8AppenderTAyaZQoTQhTQkZQByFNaNbNfQBrQBaQBdQBgKmZv@Base 15 + _D3std5array__T13copyBackwardsTSQBe5regex8internal2ir10NamedGroupZQBzFNaAQBqQeZv@Base 15 + _D3std5array__T13copyBackwardsTSQBe5regex8internal2ir8BytecodeZQBwFNaAQBnQeZv@Base 15 + _D3std5array__T13insertInPlaceTSQBe5regex8internal2ir10NamedGroupTQBjZQCdFNaNfKAQBxmQCbZv@Base 15 + _D3std5array__T13insertInPlaceTSQBe5regex8internal2ir8BytecodeTQBgTQBkZQCeFNaNfKAQBymQCcQCfZv@Base 15 + _D3std5array__T13insertInPlaceTSQBe5regex8internal2ir8BytecodeTQBgZQCaFNaNfKAQBumQByZv@Base 15 + _D3std5array__T14arrayAllocImplVbi0TASQBk3uni17CodepointIntervalTmZQCaFNaNbmZQBp@Base 15 + _D3std5array__T14arrayAllocImplVbi0TAaTmZQBaFNaNbmZQp@Base 15 + _D3std5array__T14arrayAllocImplVbi0TAfTmZQBaFNaNbmZQp@Base 15 + _D3std5array__T14arrayAllocImplVbi0TAhTmZQBaFNaNbmZQp@Base 15 + _D3std5array__T14arrayAllocImplVbi0TAkTmZQBaFNaNbmZQp@Base 15 + _D3std5array__T14arrayAllocImplVbi0TAmTmZQBaFNaNbmZQp@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx11__xopEqualsMxFKxSQCfQCe__TQCbTQBnZQCjZb@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx12toStringImplFNaNfQzxAAyaZQBh@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx4dataMNgFNaNbNdNiNfZANgAya@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx5clearMFNaNbNiNeZv@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx6__ctorMFNaNbNcNeQyZSQChQCg__TQCdTQBpZQCl@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx7opSliceMNgFNaNbNiNeZANgAya@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx8shrinkToMFNaNemZv@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx8toStringMxFNaNfZQx@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx9__xtoHashFNbNeKxSQCeQCd__TQCaTQBmZQCiZm@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx__T12toStringImplTSQCfQCe__TQCbTQBmZQCjZQBlFNaNfQCcxAAyaMKQBoMKxSQDz6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr11__xopEqualsMxFKxSQDaQCz__TQCwTQCiZQDeZb@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr12toStringImplFNaNfAyaxACQDgQBzQByZQq@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr4dataMNgFNaNbNdNiNfZANgCQDfQByQBx@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr5clearMFNaNbNiNeZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6__ctorMFNaNbNcNeQBtZSQDdQDc__TQCzTQClZQDh@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr7opSliceMNgFNaNbNiNeZANgCQDgQBzQBy@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr8shrinkToMFNaNemZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr8toStringMxFNaNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr9__xtoHashFNbNeKxSQCzQCy__TQCvTQChZQDdZm@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr__T12toStringImplTSQDaQCz__TQCwTAyaZQDeZQBlFNaNfQqxACQEiQDbQDaMKQBuMKxSQFa6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr__T3putTQBjZQjMFNaNbNfQBxZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs11__xopEqualsMxFKxSQDbQDa__TQCxTQCjZQDfZb@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs12toStringImplFNfAyaxASQDfQByQBuZQq@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs4dataMNgFNaNbNdNiNfZANgSQDgQBzQBv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs5clearMFNaNbNiNeZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6__ctorMFNaNbNcNeQBuZSQDeQDd__TQDaTQCmZQDi@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs7opSliceMNgFNaNbNiNeZANgSQDhQCaQBw@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs8shrinkToMFNaNemZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs8toStringMxFNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs9__xtoHashFNbNeKxSQDaQCz__TQCwTQCiZQDeZm@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs__T12toStringImplTSQDbQDa__TQCxTAyaZQDfZQBlFNfQoxASQEhQDaQCwMKQBsMKxSQEz6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs__T3putTQBkZQjMFNaNbNfQByZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw12toStringImplFNaNfAyaxAaZQh@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw4dataMNgFNaNbNdNiNfZANgxa@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw7opSliceMNgFNaNbNiNeZANgxa@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw8toStringMxFNaNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAaMKQBlMKxSQDv6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTAaZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTAyaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw12toStringImplFNaNfQzxAyaZQBg@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw7opSliceMNgFNaNbNiNeZQBb@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw8toStringMxFNaNfZQx@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T12toStringImplTSQCeQCd__TQCaTQBmZQCiZQBlFNaNfQCcxAyaMKQBnMKxSQDx6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAaZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAhZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAuZQiMFNaNfQlZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAwZQiMFNaNfQlZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAxaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAyuZQjMFNaNfQmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAywZQjMFNaNfQmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTSQBu4path__T16asNormalizedPathTSQCz5range__T5chainTSQDt3utf__T10byCodeUnitTQDlZQrFQDsZ14ByCodeUnitImplTSQFtQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQGuMFNaNbNfQHaZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTSQBu5range__T5chainTSQCo3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEnQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFaMFNaNbNfQFgZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTSQBu5range__T5chainTSQCoQu__T4TakeTSQDdQBj__T6RepeatTaZQkZQBdTSQEe4conv__T7toCharsVhi10TaVEQFg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEwFQEtQDgZQtZQGcMFNaNbNfQGiZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTaZQhMFNaNbNfaZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTxaZQiMFNaNbNfxaZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTxwZQiMFNaNfxwZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTyaZQiMFNaNbNfyaZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw12toStringImplFNaNfAyaxAyuZQi@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw7opSliceMNgFNaNbNiNeZQBb@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw8toStringMxFNaNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAyuMKQBmMKxSQDw6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw__T3putTAuZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw12toStringImplFNaNfAyaxAywZQi@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw7opSliceMNgFNaNbNiNeZQBb@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw8toStringMxFNaNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAywMKQBmMKxSQDw6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw__T3putTwZQhMFNaNbNfwZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw11__xopEqualsMxFKxSQCeQCd__TQCaTyQBmZQCjZb@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw12toStringImplFNaNfAyaxAyaZQi@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw4dataMNgFNaNbNdNiNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw6__ctorMFNaNbNcNiNeyQzZSQCjQCi__TQCfTyQBrZQCo@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw7opSliceMNgFNaNbNiNeZAya@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw8toStringMxFNaNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTyQBlZQCiZm@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAyaMKQBmMKxSQDw6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAaZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAwZQiMFNaNfQlZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAxaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAyaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTaZQhMFNaNbNfaZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTxaZQiMFNaNbNfxaZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTxwZQiMFNaNfxwZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTyaZQiMFNaNbNfyaZv@Base 15 + _D3std5array__T18uninitializedArrayTASQBk3uni17CodepointIntervalTmZQCaFNaNbNemZQBr@Base 15 + _D3std5array__T18uninitializedArrayTASQBk3uni17CodepointIntervalTxmZQCbFNaNbNexmZQBt@Base 15 + _D3std5array__T18uninitializedArrayTASQBk3uni17CodepointIntervalTyiZQCbFNaNbNeyiZQBt@Base 15 + _D3std5array__T18uninitializedArrayTAaTmZQBaFNaNbNemZQr@Base 15 + _D3std5array__T18uninitializedArrayTAaTxmZQBbFNaNbNexmZQt@Base 15 + _D3std5array__T18uninitializedArrayTAfTmZQBaFNaNbNemZQr@Base 15 + _D3std5array__T18uninitializedArrayTAhTkZQBaFNaNbNekZQr@Base 15 + _D3std5array__T18uninitializedArrayTAhTmZQBaFNaNbNemZQr@Base 15 + _D3std5array__T18uninitializedArrayTAkTxmZQBbFNaNbNexmZQt@Base 15 + _D3std5array__T18uninitializedArrayTAmTxmZQBbFNaNbNexmZQt@Base 15 + _D3std5array__T19appenderNewCapacityVmi16ZQBbFNaNbNiNfmmZm@Base 15 + _D3std5array__T19appenderNewCapacityVmi1ZQBaFNaNbNiNfmmZm@Base 15 + _D3std5array__T19appenderNewCapacityVmi2ZQBaFNaNbNiNfmmZm@Base 15 + _D3std5array__T19appenderNewCapacityVmi40ZQBbFNaNbNiNfmmZm@Base 15 + _D3std5array__T19appenderNewCapacityVmi4ZQBaFNaNbNiNfmmZm@Base 15 + _D3std5array__T19appenderNewCapacityVmi8ZQBaFNaNbNiNfmmZm@Base 15 + _D3std5array__T5splitTAyaTQeZQoFNaNbNfQqQsZAQw@Base 15 + _D3std5array__T5splitTAyaZQlFNaNfQlZAQp@Base 15 + _D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf@Base 15 + _D3std5array__T7replaceTxaTAyaTQeZQtFNaNbNfAxaQtQvKmZQk@Base 15 + _D3std5array__T7replaceTxaTAyaTQeZQtFNaNbNfAxaQtQvZQi@Base 15 + _D3std5array__T7replaceTyaTAyaTQeZQtFNaNbNfQqQsQuKmZQz@Base 15 + _D3std5array__T7replaceTyaTAyaTQeZQtFNaNbNfQqQsQuZQx@Base 15 + _D3std5array__T8AppenderTAAyaZQp10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTAAyaZQp4dataMNgFNaNbNdNiNfZANgAya@Base 15 + _D3std5array__T8AppenderTAAyaZQp5clearMFNaNbNiNfZv@Base 15 + _D3std5array__T8AppenderTAAyaZQp6__ctorMFNaNbNcNfQyZSQBzQBy__TQBvTQBpZQCd@Base 15 + _D3std5array__T8AppenderTAAyaZQp6__initZ@Base 15 + _D3std5array__T8AppenderTAAyaZQp6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAAyaZQp7opSliceMNgFNaNbNdNiNfZANgAya@Base 15 + _D3std5array__T8AppenderTAAyaZQp7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTAAyaZQp8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAAyaZQp8shrinkToMFNaNfmZv@Base 15 + _D3std5array__T8AppenderTAAyaZQp__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi4dataMNgFNaNbNdNiNfZANgCQCwQByQBx@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi5clearMFNaNbNiNfZv@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6__ctorMFNaNbNcNfQBsZSQCuQCt__TQCqTQCkZQCy@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6__initZ@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi7opSliceMNgFNaNbNdNiNfZANgCQCzQCbQCa@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi8shrinkToMFNaNfmZv@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi__T3putTQBiZQjMFNaNbNfQBwZv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj4dataMNgFNaNbNdNiNfZANgSQCxQBzQBv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj5clearMFNaNbNiNfZv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6__ctorMFNaNbNcNfQBtZSQCvQCu__TQCrTQClZQCz@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6__initZ@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj7opSliceMNgFNaNbNdNiNfZANgSQDaQCcQBy@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj8shrinkToMFNaNfmZv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj__T3putTQBjZQjMFNaNbNfQBxZv@Base 15 + _D3std5array__T8AppenderTAxaZQo10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTAxaZQo4dataMNgFNaNbNdNiNfZANgxa@Base 15 + _D3std5array__T8AppenderTAxaZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 + _D3std5array__T8AppenderTAxaZQo6__initZ@Base 15 + _D3std5array__T8AppenderTAxaZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAxaZQo7opSliceMNgFNaNbNdNiNfZANgxa@Base 15 + _D3std5array__T8AppenderTAxaZQo7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTAxaZQo8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAxaZQo__T3putTAyaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T8AppenderTAxaZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T8AppenderTAxaZQo__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T8AppenderTAyaZQo10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTAyaZQo4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T8AppenderTAyaZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 + _D3std5array__T8AppenderTAyaZQo6__initZ@Base 15 + _D3std5array__T8AppenderTAyaZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAyaZQo7opSliceMNgFNaNbNdNiNfZQBd@Base 15 + _D3std5array__T8AppenderTAyaZQo7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTAyaZQo8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTAaZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTAhZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTAwZQiMFNaNfQlZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTAxaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTSQBm4path__T16asNormalizedPathTSQCr5range__T5chainTSQDl3utf__T10byCodeUnitTQDlZQrFQDsZ14ByCodeUnitImplTSQFlQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQGuMFNaNbNfQHaZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTSQBm5range__T5chainTSQCg3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEfQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFaMFNaNbNfQFgZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTSQBm5range__T5chainTSQCgQu__T4TakeTSQCvQBj__T6RepeatTaZQkZQBdTSQDw4conv__T7toCharsVhi10TaVEQEy5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEwFQEtQDgZQtZQGcMFNaNbNfQGiZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTaZQhMFNaNbNfaZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTxaZQiMFNaNbNfxaZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTxwZQiMFNaNfxwZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTyaZQiMFNaNbNfyaZv@Base 15 + _D3std5array__T8AppenderTAyuZQo10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTAyuZQo4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T8AppenderTAyuZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 + _D3std5array__T8AppenderTAyuZQo6__initZ@Base 15 + _D3std5array__T8AppenderTAyuZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAyuZQo7opSliceMNgFNaNbNdNiNfZQBd@Base 15 + _D3std5array__T8AppenderTAyuZQo7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTAyuZQo8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAyuZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T8AppenderTAyuZQo__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T8AppenderTAywZQo10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTAywZQo4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T8AppenderTAywZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 + _D3std5array__T8AppenderTAywZQo6__initZ@Base 15 + _D3std5array__T8AppenderTAywZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAywZQo7opSliceMNgFNaNbNdNiNfZQBd@Base 15 + _D3std5array__T8AppenderTAywZQo7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTAywZQo8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAywZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T8AppenderTAywZQo__T3putTwZQhMFNaNbNfwZv@Base 15 + _D3std5array__T8AppenderTyAaZQo10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTyAaZQo4dataMNgFNaNbNdNiNfZAya@Base 15 + _D3std5array__T8AppenderTyAaZQo6__ctorMFNaNbNcNfyQxZSQBzQBy__TQBvTyQBpZQCe@Base 15 + _D3std5array__T8AppenderTyAaZQo6__initZ@Base 15 + _D3std5array__T8AppenderTyAaZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTyAaZQo7opSliceMNgFNaNbNdNiNfZAya@Base 15 + _D3std5array__T8AppenderTyAaZQo7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTyAaZQo8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTAaZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTAwZQiMFNaNfQlZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTAxaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTAyaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTaZQhMFNaNbNfaZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTxaZQiMFNaNbNfxaZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTxwZQiMFNaNfxwZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTyaZQiMFNaNbNfyaZv@Base 15 + _D3std5array__T8appenderTAAyaZQpFNaNbNfZSQBnQBm__T8AppenderTQBjZQo@Base 15 + _D3std5array__T8appenderTACQz3zip13ArchiveMemberZQBiFNaNbNfZSQChQCg__T8AppenderTQCdZQo@Base 15 + _D3std5array__T8appenderTASQz6socket11AddressInfoZQBjFNaNbNfZSQCiQCh__T8AppenderTQCeZQo@Base 15 + _D3std5array__T8appenderTAxaZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 + _D3std5array__T8appenderTAyaZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 + _D3std5array__T8appenderTAyuZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 + _D3std5array__T8appenderTAywZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 + _D3std5array__T8appenderTyAaZQoFNaNbNfZSQBmQBl__T8AppenderTyQBiZQp@Base 15 + _D3std5array__TQjTS6object__T7byValueHTHAyaCQBq3zip13ArchiveMemberTQBbTQBcZQBuFNaNbNiNfQBwZ6ResultZQDpFNaNbNfQDnZAQCt@Base 15 + _D3std5array__TQjTSQr3uni__T13InversionListTSQBrQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDaFNaNbNfQCyZASQDuQDe17CodepointInterval@Base 15 + _D3std5array__TQjTSQr3uni__T13InversionListTSQBrQBb8GcPolicyZQBh__T9IntervalsTAxkZQpZQDbFNaNbNfQCzZASQDvQDf17CodepointInterval@Base 15 + _D3std5array__TQjTSQr3uni__T8CowArrayTSQBlQv8GcPolicyZQBaZQCaFNaNbNfQByZAk@Base 15 + _D3std5array__TQjTSQr5range__T4iotaTmTmZQkFmmZ6ResultZQBwFNaNbNfQBuZAm@Base 15 + _D3std5array__TQjTSQr5range__T5chainTSQBk3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDjQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFgFNaNbNfQFeZAxa@Base 15 + _D3std5array__TQjTSQr9algorithm9iteration__T10UniqResultSQCd10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEv5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGsQBx18SortedRangeOptionsi0ZQCoZQGjZQHzFNaNbNfQHxZQCw@Base 15 + _D3std5array__TQjTSQr9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCu8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6ResultZQGcFNaNbNfQGaZAQEv@Base 15 + _D3std5ascii10isAlphaNumFNaNbNiNfwZb@Base 15 + _D3std5ascii10isHexDigitFNaNbNiNfwZb@Base 15 + _D3std5ascii10whitespaceyAa@Base 15 + _D3std5ascii11__moduleRefZ@Base 15 + _D3std5ascii11isGraphicalFNaNbNiNfwZb@Base 15 + _D3std5ascii11isPrintableFNaNbNiNfwZb@Base 15 + _D3std5ascii11octalDigitsyAa@Base 15 + _D3std5ascii12__ModuleInfoZ@Base 15 + _D3std5ascii12isOctalDigitFNaNbNiNfwZb@Base 15 + _D3std5ascii13fullHexDigitsyAa@Base 15 + _D3std5ascii13isPunctuationFNaNbNiNfwZb@Base 15 + _D3std5ascii14lowerHexDigitsyAa@Base 15 + _D3std5ascii6digitsyAa@Base 15 + _D3std5ascii7isASCIIFNaNbNiNfwZb@Base 15 + _D3std5ascii7isAlphaFNaNbNiNfwZb@Base 15 + _D3std5ascii7isDigitFNaNbNiNfwZb@Base 15 + _D3std5ascii7isLowerFNaNbNiNfwZb@Base 15 + _D3std5ascii7isUpperFNaNbNiNfwZb@Base 15 + _D3std5ascii7isWhiteFNaNbNiNfwZb@Base 15 + _D3std5ascii7lettersyAa@Base 15 + _D3std5ascii7newlineyAa@Base 15 + _D3std5ascii9hexDigitsyAa@Base 15 + _D3std5ascii9isControlFNaNbNiNfwZb@Base 15 + _D3std5ascii9lowercaseyAa@Base 15 + _D3std5ascii9uppercaseyAa@Base 15 + _D3std5ascii__T7toLowerTwZQlFNaNbNiNfwZw@Base 15 + _D3std5ascii__T7toLowerTxaZQmFNaNbNiNfxaZa@Base 15 + _D3std5ascii__T7toLowerTxuZQmFNaNbNiNfxuZu@Base 15 + _D3std5ascii__T7toLowerTxwZQmFNaNbNiNfxwZw@Base 15 + _D3std5ascii__T7toLowerTyaZQmFNaNbNiNfyaZa@Base 15 + _D3std5ascii__T7toLowerTywZQmFNaNbNiNfywZw@Base 15 + _D3std5ascii__T7toUpperTwZQlFNaNbNiNfwZw@Base 15 + _D3std5range10interfaces11__moduleRefZ@Base 15 + _D3std5range10interfaces12__ModuleInfoZ@Base 15 + _D3std5range10interfaces22UnsupportedRangeMethod6__initZ@Base 15 + _D3std5range10interfaces22UnsupportedRangeMethod6__vtblZ@Base 15 + _D3std5range10interfaces22UnsupportedRangeMethod7__ClassZ@Base 15 + _D3std5range10interfaces22UnsupportedRangeMethod8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDuQDtQDqQDh@Base 15 + _D3std5range10interfaces22UnsupportedRangeMethod8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDuQDtQDqQDh@Base 15 + _D3std5range10primitives11__moduleRefZ@Base 15 + _D3std5range10primitives12__ModuleInfoZ@Base 15 + _D3std5range10primitives__T10walkLengthTAyaZQrFNaNbNiNfQpZm@Base 15 + _D3std5range10primitives__T10walkLengthTSQBn4path__T16asNormalizedPathTSQCsQCr__T5chainTSQDj3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQFiQFh__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFlFNkMQEzZQtZQGyFNaNbNiNfQGxZm@Base 15 + _D3std5range10primitives__T10walkLengthTSQBnQBm__T10roundRobinTSQCk9algorithm9iteration__T9MapResultSQDv10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQFz3uni21DecompressedIntervalsZQDuTSQHjQEzQEs__TQElSQHzQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6ResultZQJqFNaNfQJlZm@Base 15 + _D3std5range10primitives__T14popBackExactlyTAAyaZQwFNaNbNiNfKQrmZv@Base 15 + _D3std5range10primitives__T14popBackExactlyTAC4core6thread5fiber5FiberZQBsFNaNbNiNfKQBomZv@Base 15 + _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 + _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 + _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 + _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 + _D3std5range10primitives__T15popFrontExactlyTAAyaZQxFNaNbNiNfKQrmZv@Base 15 + _D3std5range10primitives__T15popFrontExactlyTAC4core6thread5fiber5FiberZQBtFNaNbNiNfKQBomZv@Base 15 + _D3std5range10primitives__T3putTAkTkZQkFNaNbNiNfKQrkZv@Base 15 + _D3std5range10primitives__T3putTDFMAxaZvTAaZQrFKQqQjZv@Base 15 + _D3std5range10primitives__T3putTDFMAxaZvTAyaZQsFKQrQkZv@Base 15 + _D3std5range10primitives__T3putTDFMAxaZvTQgZQrFKQqQpZv@Base 15 + _D3std5range10primitives__T3putTDFNaNbNfAxaZvTAaZQwFNaNbNfKQBbQqZv@Base 15 + _D3std5range10primitives__T3putTDFNaNbNfAxaZvTAyaZQxFNaNbNfKQBcQrZv@Base 15 + _D3std5range10primitives__T3putTDFNaNbNfAxaZvTaZQvFNaNbNfKQBaaZv@Base 15 + _D3std5range10primitives__T3putTDFNaNbNfAxaZvTxaZQwFNaNbNfKQBbxaZv@Base 15 + _D3std5range10primitives__T3putTDFNaNbNfAxaZvTxwZQwFNaNfKQzxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAaZQBuFNaNbNfKQCaQrZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAuZQBuFNaNfKQByQpZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAwZQBuFNaNfKQByQpZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAxaZQBvFNaNbNfKQCbQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAyuZQBvFNaNfKQBzQqZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAywZQBvFNaNfKQBzQqZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTQhZQBuFNaNbNfKQCaQyZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTaZQBtFNaNbNfKQBzaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTxaZQBuFNaNbNfKQCaxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTxwZQBuFNaNfKQByxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTyaZQBuFNaNbNfKQCayaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAAyaZQpTQhZQBnFNaNbNfKQBtQyZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTAaZQBmFNaNbNfKQBsQrZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTAwZQBmFNaNfKQBqQpZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTAxaZQBnFNaNbNfKQBtQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTQhZQBmFNaNbNfKQBsQyZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTSQCj4path__T16asNormalizedPathTSQDoQDn__T5chainTSQEf3utf__T10byCodeUnitTQDbZQrFQDiZ14ByCodeUnitImplTSQGfQGe__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFmFNkMQFaZQtZQHvFNaNbNfKQIbQHaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTSQCjQCi__T5chainTSQDa3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEzQEy__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQGbFNaNbNfKQGhQFgZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTSQCjQCi__T5chainTSQDaQCz__T4TakeTSQDqQDp__T6RepeatTaZQkZQBdTSQEr4conv__T7toCharsVhi10TaVEQFt5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQExFQEuQDgZQtZQHeFNaNbNfKQHkQGjZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTaZQBlFNaNbNfKQBraZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTxaZQBmFNaNbNfKQBsxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTxwZQBmFNaNfKQBqxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTyaZQBmFNaNbNfKQBsyaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAaZQBmFNaNbNfKQBsQrZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAwZQBmFNaNfKQBqQpZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAxaZQBnFNaNbNfKQBtQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAyaZQBnFNaNbNfKQBtQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTaZQBlFNaNbNfKQBraZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTxaZQBmFNaNbNfKQBsxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTxwZQBmFNaNfKQBqxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTyaZQBmFNaNbNfKQBsyaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAaZQBrFNfKQBtQnZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAwZQBrFNfKQBtQnZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAxaZQBsFNfKQBuQoZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAyaZQBsFNfKQBuQoZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTaZQBqFNfKQBsaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTxaZQBrFNfKQBtxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTxwZQBrFNfKQBtxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTyaZQBrFNfKQBtyaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRangeTAxaZQCsFNaNbNiNfKQDaQuZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTAaZQBdFNaNbNiNfKQBlQtZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTAxaZQBeFNaNbNiNfKQBmQuZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTAyaZQBeFNaNbNiNfKQBmQuZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTaZQBcFNaNbNiNfKQBkaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTxaZQBdFNaNbNiNfKQBlxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTxwZQBdFNaNbNiNfKQBlxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaZQCgFNaNbNfKQCmQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQmZQCfFNaNbNfKQClQBdZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpZQCfFNaNbNfKQClQBgZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTaZQCeFNaNbNfKQCkaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxaZQCfFNaNbNfKQClxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxwZQCfFNaNfKQCjxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTAyaZQCuFNaNbNfKQDaQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQrZQCtFNaNbNfKQCzQBiZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuZQCtFNaNbNfKQCzQBlZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaZQCsFNaNbNfKQCyaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxaZQCtFNaNbNfKQCzxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxwZQCtFNaNfKQCxxwZv@Base 15 + _D3std5range10primitives__T4backTAyaZQkFNaNbNcNdNiNfNkMANgAyaZNgQg@Base 15 + _D3std5range10primitives__T4backTCQBg3zip13ArchiveMemberZQBeFNaNbNcNdNiNfNkMANgCQDaQBuQBtZNgQn@Base 15 + _D3std5range10primitives__T4backTSQBg5regex8internal2ir10NamedGroupZQBpFNaNbNcNdNiNfNkMANgSQDlQCfQCcQBwQBwZNgQt@Base 15 + _D3std5range10primitives__T4backTSQBg6logger11multilogger16MultiLoggerEntryZQBxFNaNbNcNdNiNfNkMANgSQDtQCnQCjQBzZNgQq@Base 15 + _D3std5range10primitives__T4backTSQBg8datetime8timezone13PosixTimeZone10LeapSecondZQCeFNaNbNcNdNiNfNkMANgSQEaQCuQCoQCiQBwZNgQt@Base 15 + _D3std5range10primitives__T4backTSQBg8datetime8timezone13PosixTimeZone10TransitionZQCeFNaNbNcNdNiNfNkMANgSQEaQCuQCoQCiQBwZNgQt@Base 15 + _D3std5range10primitives__T4backTSQBg8datetime8timezone13PosixTimeZone14TempTransitionZQCiFNaNbNcNdNiNfNkMANgSQEeQCyQCsQCmQCaZNgQt@Base 15 + _D3std5range10primitives__T4backTSQBg8internal14unicode_tables15UnicodePropertyZQCbFNaNbNcNdNiNfNkMANgSQDxQCrQClQByZNgQq@Base 15 + _D3std5range10primitives__T4backTaZQiFNaNdNfMAxaZw@Base 15 + _D3std5range10primitives__T4backTkZQiFNaNbNcNdNiNfNkMANgkZNgk@Base 15 + _D3std5range10primitives__T4backTwZQiFNaNbNcNdNiNfNkMANgwZNgw@Base 15 + _D3std5range10primitives__T4saveTAxaZQkFNaNbNdNiNfNkMANgANgxaZQj@Base 15 + _D3std5range10primitives__T4saveTAyaZQkFNaNbNdNiNfNkMANgAyaZQh@Base 15 + _D3std5range10primitives__T4saveTCQBg3zip13ArchiveMemberZQBeFNaNbNdNiNfNkMANgCQCyQBsQBrZQo@Base 15 + _D3std5range10primitives__T4saveTSQBg5regex8internal2ir10NamedGroupZQBpFNaNbNdNiNfNkMANgSQDjQCdQCaQBuQBuZQu@Base 15 + _D3std5range10primitives__T4saveTSQBg8datetime8timezone13PosixTimeZone10LeapSecondZQCeFNaNbNdNiNfNkMANgSQDyQCsQCmQCgQBuZQu@Base 15 + _D3std5range10primitives__T4saveTSQBg8datetime8timezone13PosixTimeZone10TransitionZQCeFNaNbNdNiNfNkMANgSQDyQCsQCmQCgQBuZQu@Base 15 + _D3std5range10primitives__T4saveTSQBg8datetime8timezone13PosixTimeZone14TempTransitionZQCiFNaNbNdNiNfNkMANgSQEcQCwQCqQCkQByZQu@Base 15 + _D3std5range10primitives__T4saveTSQBg8internal14unicode_tables15UnicodePropertyZQCbFNaNbNdNiNfNkMANgSQDvQCpQCjQBwZQr@Base 15 + _D3std5range10primitives__T4saveTaZQiFNaNbNdNiNfNkMANgaZQf@Base 15 + _D3std5range10primitives__T4saveTfZQiFNaNbNdNiNfNkMANgfZQf@Base 15 + _D3std5range10primitives__T4saveThZQiFNaNbNdNiNfNkMANghZQf@Base 15 + _D3std5range10primitives__T4saveTkZQiFNaNbNdNiNfNkMANgkZQf@Base 15 + _D3std5range10primitives__T4saveTuZQiFNaNbNdNiNfNkMANguZQf@Base 15 + _D3std5range10primitives__T4saveTwZQiFNaNbNdNiNfNkMANgwZQf@Base 15 + _D3std5range10primitives__T5doPutTAkTkZQmFNaNbNiNfKQrKkZv@Base 15 + _D3std5range10primitives__T5doPutTDFMAxaZvTAaZQtFKQqKQkZv@Base 15 + _D3std5range10primitives__T5doPutTDFMAxaZvTAyaZQuFKQrKQlZv@Base 15 + _D3std5range10primitives__T5doPutTDFMAxaZvTQgZQtFKQqKQqZv@Base 15 + _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTAaZQyFNaNbNfKQBbKQrZv@Base 15 + _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTAaZQyFNaNbNfKQBbQqZv@Base 15 + _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTAyaZQzFNaNbNfKQBcKQsZv@Base 15 + _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTQgZQyFNaNbNfKQBbQwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAaZQBwFNaNbNfKQCaKQsZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAuZQBwFNaNfKQByKQqZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAwZQBwFNaNfKQByKQqZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAxaZQBxFNaNbNfKQCbKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAyuZQBxFNaNfKQBzKQrZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAywZQBxFNaNfKQBzKQrZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTQhZQBwFNaNbNfKQCaKQzZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTaZQBvFNaNbNfKQBzKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTxaZQBwFNaNbNfKQCaKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTxwZQBwFNaNfKQByKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTyaZQBwFNaNbNfKQCaKyaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAAyaZQpTQhZQBpFNaNbNfKQBtKQzZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTAaZQBoFNaNbNfKQBsKQsZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTAwZQBoFNaNfKQBqKQqZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTAxaZQBpFNaNbNfKQBtKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTQhZQBoFNaNbNfKQBsKQzZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTSQCl4path__T16asNormalizedPathTSQDqQDp__T5chainTSQEh3utf__T10byCodeUnitTQDbZQrFQDiZ14ByCodeUnitImplTSQGhQGg__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFmFNkMQFaZQtZQHxFNaNbNfKQIbKQHbZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTSQClQCk__T5chainTSQDc3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFbQFa__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQGdFNaNbNfKQGhKQFhZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTSQClQCk__T5chainTSQDcQDb__T4TakeTSQDsQDr__T6RepeatTaZQkZQBdTSQEt4conv__T7toCharsVhi10TaVEQFv5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQExFQEuQDgZQtZQHgFNaNbNfKQHkKQGkZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTaZQBnFNaNbNfKQBrKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTxaZQBoFNaNbNfKQBsKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTxwZQBoFNaNfKQBqKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTyaZQBoFNaNbNfKQBsKyaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAaZQBoFNaNbNfKQBsKQsZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAwZQBoFNaNfKQBqKQqZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAxaZQBpFNaNbNfKQBtKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAyaZQBpFNaNbNfKQBtKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTaZQBnFNaNbNfKQBrKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTxaZQBoFNaNbNfKQBsKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTxwZQBoFNaNfKQBqKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTyaZQBoFNaNbNfKQBsKyaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAaZQBtFNfKQBtKQoZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAwZQBtFNfKQBtKQoZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAxaZQBuFNfKQBuKQpZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAyaZQBuFNfKQBuKQpZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTaZQBsFNfKQBsKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTxaZQBtFNfKQBtKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTxwZQBtFNfKQBtKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTyaZQBtFNfKQBtKyaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRangeTAxaZQCuFNaNbNiNfKQDaKQvZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTAaZQBfFNaNbNiNfKQBlKQuZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTAxaZQBgFNaNbNiNfKQBmKQvZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTAyaZQBgFNaNbNiNfKQBmKQvZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTaZQBeFNaNbNiNfKQBkKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTxaZQBfFNaNbNiNfKQBlKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTxwZQBfFNaNbNiNfKQBlKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaZQCiFNaNbNfKQCmKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQmZQChFNaNbNfKQClKQBeZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpZQChFNaNbNfKQClKQBhZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTaZQCgFNaNbNfKQCkKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxaZQChFNaNbNfKQClKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxwZQChFNaNfKQCjKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTAyaZQCwFNaNbNfKQDaKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQrZQCvFNaNbNfKQCzKQBjZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuZQCvFNaNbNfKQCzKQBmZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaZQCuFNaNbNfKQCyKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxaZQCvFNaNbNfKQCzKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxwZQCvFNaNfKQCxKxwZv@Base 15 + _D3std5range10primitives__T5emptyTAAxaZQmFNaNbNdNiNfMKQuZb@Base 15 + _D3std5range10primitives__T5emptyTAAyaZQmFNaNbNdNiNfMKQuZb@Base 15 + _D3std5range10primitives__T5emptyTACQBi3zip13ArchiveMemberZQBgFNaNbNdNiNfMKQBpZb@Base 15 + _D3std5range10primitives__T5emptyTASQBi5regex8internal2ir10NamedGroupZQBrFNaNbNdNiNfMKQCaZb@Base 15 + _D3std5range10primitives__T5emptyTASQBi8datetime8timezone13PosixTimeZone10LeapSecondZQCgFNaNbNdNiNfMKQCpZb@Base 15 + _D3std5range10primitives__T5emptyTASQBi8datetime8timezone13PosixTimeZone10TransitionZQCgFNaNbNdNiNfMKQCpZb@Base 15 + _D3std5range10primitives__T5emptyTASQBi8datetime8timezone13PosixTimeZone14TempTransitionZQCkFNaNbNdNiNfMKQCtZb@Base 15 + _D3std5range10primitives__T5emptyTASQBi8typecons__T5TupleTkTkTkZQnZQBoFNaNbNdNiNfMKQBxZb@Base 15 + _D3std5range10primitives__T5emptyTAaZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAaZQkFNaNbNdNiNfMQrZb@Base 15 + _D3std5range10primitives__T5emptyTAbZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAhZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAkZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAkZQkFNaNbNdNiNfMQrZb@Base 15 + _D3std5range10primitives__T5emptyTAuZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAuZQkFNaNbNdNiNfMQrZb@Base 15 + _D3std5range10primitives__T5emptyTAwZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAwZQkFNaNbNdNiNfMQrZb@Base 15 + _D3std5range10primitives__T5emptyTAxAaZQmFNaNbNdNiNfMKQuZb@Base 15 + _D3std5range10primitives__T5emptyTAxAyaZQnFNaNbNdNiNfMKQvZb@Base 15 + _D3std5range10primitives__T5emptyTAxCQBj3zip13ArchiveMemberZQBhFNaNbNdNiNfMKQBqZb@Base 15 + _D3std5range10primitives__T5emptyTAxSQBj5regex8internal2ir8BytecodeZQBpFNaNbNdNiNfMKQByZb@Base 15 + _D3std5range10primitives__T5emptyTAxSQBj6socket11AddressInfoZQBiFNaNbNdNiNfMKQBrZb@Base 15 + _D3std5range10primitives__T5emptyTAxSQBj8typecons__T5TupleTAyaVQea3_6b6579TSQCw4json9JSONValueVQBka5_76616c7565ZQCiZQDlFNaNbNdNiNfMQDtZb@Base 15 + _D3std5range10primitives__T5emptyTAxaZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAxaZQlFNaNbNdNiNfMQsZb@Base 15 + _D3std5range10primitives__T5emptyTAxhZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAxuZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAxwZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAyAaZQmFNaNbNdNiNfMKQuZb@Base 15 + _D3std5range10primitives__T5emptyTAyAaZQmFNaNbNdNiNfMQtZb@Base 15 + _D3std5range10primitives__T5emptyTAySQBj8internal14unicode_tables15UnicodePropertyZQCeFNaNbNdNiNfMKQCnZb@Base 15 + _D3std5range10primitives__T5emptyTAyaZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAyaZQlFNaNbNdNiNfMQsZb@Base 15 + _D3std5range10primitives__T5emptyTAyhZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAyhZQlFNaNbNdNiNfMQsZb@Base 15 + _D3std5range10primitives__T5emptyTAyuZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAyuZQlFNaNbNdNiNfMQsZb@Base 15 + _D3std5range10primitives__T5emptyTAywZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAywZQlFNaNbNdNiNfMQsZb@Base 15 + _D3std5range10primitives__T5emptyTxASQBj4json9JSONValueZQBdFNaNbNdNiNfMKxQBmZb@Base 15 + _D3std5range10primitives__T5emptyTxAaZQlFNaNbNdNiNfMKxQtZb@Base 15 + _D3std5range10primitives__T5emptyTxAyaZQmFNaNbNdNiNfMKxQuZb@Base 15 + _D3std5range10primitives__T5emptyTyASQBj8datetime8timezone13PosixTimeZone10LeapSecondZQChFNaNbNdNiNfMKyQCqZb@Base 15 + _D3std5range10primitives__T5emptyTyASQBj8datetime8timezone13PosixTimeZone10TransitionZQChFNaNbNdNiNfMKyQCqZb@Base 15 + _D3std5range10primitives__T5frontTAaZQkFNaNbNcNdNiNfNkMANgAaZNgQf@Base 15 + _D3std5range10primitives__T5frontTAyaZQlFNaNbNcNdNiNfNkMANgAyaZNgQg@Base 15 + _D3std5range10primitives__T5frontTCQBh3zip13ArchiveMemberZQBfFNaNbNcNdNiNfNkMANgCQDbQBuQBtZNgQn@Base 15 + _D3std5range10primitives__T5frontTSQBh5regex8internal2ir10NamedGroupZQBqFNaNbNcNdNiNfNkMANgSQDmQCfQCcQBwQBwZNgQt@Base 15 + _D3std5range10primitives__T5frontTSQBh6socket11AddressInfoZQBgFNaNbNcNdNiNfNkMANgSQDcQBvQBrZNgQn@Base 15 + _D3std5range10primitives__T5frontTSQBh8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNcNdNiNfNkMANgSQEbQCuQCoQCiQBwZNgQt@Base 15 + _D3std5range10primitives__T5frontTSQBh8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNcNdNiNfNkMANgSQEbQCuQCoQCiQBwZNgQt@Base 15 + _D3std5range10primitives__T5frontTSQBh8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNcNdNiNfNkMANgSQEfQCyQCsQCmQCaZNgQt@Base 15 + _D3std5range10primitives__T5frontTSQBh8internal14unicode_tables15UnicodePropertyZQCcFNaNbNcNdNiNfNkMANgSQDyQCrQClQByZNgQq@Base 15 + _D3std5range10primitives__T5frontTaZQjFNaNdNfMAxaZw@Base 15 + _D3std5range10primitives__T5frontThZQjFNaNbNcNdNiNfNkMANghZNgh@Base 15 + _D3std5range10primitives__T5frontTkZQjFNaNbNcNdNiNfNkMANgkZNgk@Base 15 + _D3std5range10primitives__T5frontTuZQjFNaNdNfMAxuZw@Base 15 + _D3std5range10primitives__T5frontTwZQjFNaNbNcNdNiNfNkMANgwZNgw@Base 15 + _D3std5range10primitives__T6moveAtTASQBj8datetime8timezone13PosixTimeZone10TransitionZQChFNaNbNiNfQClmZQCp@Base 15 + _D3std5range10primitives__T6moveAtTAywZQmFNaNbNiNfQpmZyw@Base 15 + _D3std5range10primitives__T6moveAtTSQBi3uni__T13InversionListTSQCjQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCxFNaNbNiNfQDbmZSQEoQDg17CodepointInterval@Base 15 + _D3std5range10primitives__T6moveAtTSQBi3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCgFNaNbNiNfQCkmZa@Base 15 + _D3std5range10primitives__T6moveAtTSQBi3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQChFNaNbNiNfQClmZxa@Base 15 + _D3std5range10primitives__T6moveAtTSQBi3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQChFNaNbNiNfQClmZya@Base 15 + _D3std5range10primitives__T6moveAtTSQBi4conv__T7toCharsVhi10TaVEQCk5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDhFNaNbNiNfQDlmZa@Base 15 + _D3std5range10primitives__T6moveAtTSQBiQBh__T10OnlyResultTaZQpZQBkFNaNbNiNfQBomZa@Base 15 + _D3std5range10primitives__T6moveAtTSQBiQBh__T6RepeatTaZQkZQBfFNaNbNiNfQBjmZa@Base 15 + _D3std5range10primitives__T7popBackTAyaZQnFNaNbNiNfMKANgAyaZv@Base 15 + _D3std5range10primitives__T7popBackTCQBj3zip13ArchiveMemberZQBhFNaNbNiNfMKANgCQCyQBpQBoZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj4file15DirIteratorImpl9DirHandleZQBuFNaNbNiNfMKANgSQDlQCcQCaQBmZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj4file8DirEntryZQBcFNaNbNiNfMKANgSQCtQBkQBiZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj5regex8internal2ir10NamedGroupZQBsFNaNbNiNfMKANgSQDjQCaQBxQBrQBrZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj6logger11multilogger16MultiLoggerEntryZQCaFNaNbNiNfMKANgSQDrQCiQCeQBuZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj8datetime8timezone13PosixTimeZone10LeapSecondZQChFNaNbNiNfMKANgSQDyQCpQCjQCdQBrZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj8datetime8timezone13PosixTimeZone10TransitionZQChFNaNbNiNfMKANgSQDyQCpQCjQCdQBrZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj8datetime8timezone13PosixTimeZone14TempTransitionZQClFNaNbNiNfMKANgSQEcQCtQCnQChQBvZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj8internal14unicode_tables15UnicodePropertyZQCeFNaNbNiNfMKANgSQDvQCmQCgQBtZv@Base 15 + _D3std5range10primitives__T7popBackTaZQlFNaNfMKANgaZv@Base 15 + _D3std5range10primitives__T7popBackTkZQlFNaNbNiNfMKANgkZv@Base 15 + _D3std5range10primitives__T7putCharTDFNaNbNfAxaZvTxwZQBaFNaNfKQBaxwZv@Base 15 + _D3std5range10primitives__T8moveBackTASQBl8datetime8timezone13PosixTimeZone10TransitionZQCjFNaNbNiNfQClZQCo@Base 15 + _D3std5range10primitives__T8moveBackTAywZQoFNaNbNiNfQpZyw@Base 15 + _D3std5range10primitives__T8moveBackTSQBk3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCiFNaNbNiNfQCkZa@Base 15 + _D3std5range10primitives__T8moveBackTSQBk3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfQClZxa@Base 15 + _D3std5range10primitives__T8moveBackTSQBk3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfQClZya@Base 15 + _D3std5range10primitives__T8moveBackTSQBk4conv__T7toCharsVhi10TaVEQCm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDjFNaNbNiNfQDlZa@Base 15 + _D3std5range10primitives__T8moveBackTSQBkQBj__T10OnlyResultTaZQpZQBmFNaNbNiNfQBoZa@Base 15 + _D3std5range10primitives__T8popBackNTAywZQoFNaNbNiNfKQqmZm@Base 15 + _D3std5range10primitives__T8popFrontTAaZQnFNaNbNiNfMKANgAaZv@Base 15 + _D3std5range10primitives__T8popFrontTAyaZQoFNaNbNiNfMKANgAyaZv@Base 15 + _D3std5range10primitives__T8popFrontTCQBk3zip13ArchiveMemberZQBiFNaNbNiNfMKANgCQCzQBpQBoZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk5regex8internal2ir10NamedGroupZQBtFNaNbNiNfMKANgSQDkQCaQBxQBrQBrZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk6socket11AddressInfoZQBjFNaNbNiNfMKANgSQDaQBqQBmZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk8datetime8timezone13PosixTimeZone10LeapSecondZQCiFNaNbNiNfMKANgSQDzQCpQCjQCdQBrZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk8datetime8timezone13PosixTimeZone10TransitionZQCiFNaNbNiNfMKANgSQDzQCpQCjQCdQBrZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk8datetime8timezone13PosixTimeZone14TempTransitionZQCmFNaNbNiNfMKANgSQEdQCtQCnQChQBvZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk8internal14unicode_tables15UnicodePropertyZQCfFNaNbNiNfMKANgSQDwQCmQCgQBtZv@Base 15 + _D3std5range10primitives__T8popFrontTaZQmFNaNbNeMKANgaZ12charWidthTabyAh@Base 15 + _D3std5range10primitives__T8popFrontTaZQmFNaNbNiNeMKANgaZv@Base 15 + _D3std5range10primitives__T8popFrontThZQmFNaNbNiNfMKANghZv@Base 15 + _D3std5range10primitives__T8popFrontTkZQmFNaNbNiNfMKANgkZv@Base 15 + _D3std5range10primitives__T8popFrontTuZQmFNaNbNiNeMKANguZv@Base 15 + _D3std5range10primitives__T8popFrontTwZQmFNaNbNiNfMKANgwZv@Base 15 + _D3std5range10primitives__T9moveFrontTASQBm8datetime8timezone13PosixTimeZone10TransitionZQCkFNaNbNiNfQClZQCo@Base 15 + _D3std5range10primitives__T9moveFrontTAywZQpFNaNbNiNfQpZyw@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCjFNaNbNiNfQCkZa@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCkFNaNbNiNfQClZxa@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCkFNaNbNiNfQClZya@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl4conv__T7toCharsVhi10TaVEQCn5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDkFNaNbNiNfQDlZa@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl9algorithm9iteration__T12FilterResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQFhQFg__T4iotaTmTxmZQlFmxmZ6ResultZQEfZQFvFNaNbNiQFuZm@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl9algorithm9iteration__T6joinerTSQCuQBjQBc__T9MapResultSQDr8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFyQEnQEg__T12FilterResultSQGzQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQIpQIo__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyZQJqFNaNbNiQJpZm@Base 15 + _D3std5range10primitives__T9moveFrontTSQBlQBk__T10OnlyResultTaZQpZQBnFNaNbNiNfQBoZa@Base 15 + _D3std5range10primitives__T9moveFrontTSQBlQBk__T6RepeatTaZQkZQBiFNaNbNiNfQBjZa@Base 15 + _D3std5range10primitives__T9popFrontNTAhZQoFNaNbNiNfKQpmZm@Base 15 + _D3std5range10primitives__T9popFrontNTAxSQBn5regex8internal2ir8BytecodeZQBtFNaNbNiNfKQBvmZm@Base 15 + _D3std5range10primitives__T9popFrontNTAywZQpFNaNbNiNfKQqmZm@Base 15 + _D3std5range11__moduleRefZ@Base 15 + _D3std5range12__ModuleInfoZ@Base 15 + _D3std5range8NullSink6__initZ@Base 15 + _D3std5range8nullSinkFNaNbNcNiNfZSQBgQBf8NullSink@Base 15 + _D3std5range8nullSinkFNcZ4sinkSQBdQBc8NullSink@Base 15 + _D3std5range__T10OnlyResultTaZQp10fetchFrontMFNaNbNiNeZa@Base 15 + _D3std5range__T10OnlyResultTaZQp11assignFrontMFNaNbNiNeaZv@Base 15 + _D3std5range__T10OnlyResultTaZQp13opIndexAssignMFNaNbNiNfamZv@Base 15 + _D3std5range__T10OnlyResultTaZQp4backMFNaNbNdNiNfZa@Base 15 + _D3std5range__T10OnlyResultTaZQp4backMFNaNbNdNiNfaZv@Base 15 + _D3std5range__T10OnlyResultTaZQp4saveMFNaNbNdNiNfZSQBxQBw__TQBtTaZQBz@Base 15 + _D3std5range__T10OnlyResultTaZQp5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std5range__T10OnlyResultTaZQp5frontMFNaNbNdNiNfZa@Base 15 + _D3std5range__T10OnlyResultTaZQp5frontMFNaNbNdNiNfaZv@Base 15 + _D3std5range__T10OnlyResultTaZQp6__initZ@Base 15 + _D3std5range__T10OnlyResultTaZQp6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5range__T10OnlyResultTaZQp7opIndexMFNaNbNiNfmZa@Base 15 + _D3std5range__T10OnlyResultTaZQp7opSliceMFNaNbNiNfZSQByQBx__TQBuTaZQCa@Base 15 + _D3std5range__T10OnlyResultTaZQp7opSliceMFNaNbNiNfmmZSQCaQBz__TQBwTaZQCc@Base 15 + _D3std5range__T10OnlyResultTaZQp7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T10OnlyResultTaZQp8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T10OnlyResultTaZQp__T6__ctorZQiMFNaNbNcNiNfNkMKaZSQCkQCj__TQCgTaZQCm@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFNaNfQHvQCzZSQJdQJc__TQIzTQIqTQDvZQJlFQJcQEgZ6Result@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result11__xopEqualsMxFKxSQJyQJx__TQJuTQJlTQEqZQKgFQJxQFbZQCgZb@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result4saveMFNaNdNfZSQJuQJt__TQJqTQJhTQEmZQKcFQJtQExZQCc@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result5emptyMFNaNdNfZb@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result5frontMFNaNdNfZk@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result6__initZ@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result8popFrontMFNaNfZv@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result9__xtoHashFNbNeKxSQJxQJw__TQJtTQJkTQEpZQKfFQJwQFaZQCfZm@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn11__xopEqualsMxFKxSQDwQDv__TQDsTQDiVQDla5_61203c2062VQDii0ZQExZb@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn4backMFNaNbNcNdNiNfZQCv@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn4saveMFNaNbNdNiNfZSQDwQDv__TQDsTQDiVQDla5_61203c2062VQDii0ZQEx@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn5frontMFNaNbNcNdNiNfZQCw@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__ctorMFNaNbNcNiNfQCvZSQEbQEa__TQDxTQDnVQDqa5_61203c2062VQDni0ZQFc@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__initZ@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7opIndexMFNaNbNcNiNfmZQCx@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7opSliceMFNaNbNiNjNlNfmmZSQEdQEc__TQDzTQDpVQDsa5_61203c2062VQDpi0ZQFe@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7releaseMFNaNbNiNjNlNfZQCz@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn9__xtoHashFNbNeKxSQDvQDu__TQDrTQDhVQDka5_61203c2062VQDhi0ZQEwZm@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp11__xopEqualsMxFKxSQFyQFx__TQFuTQFkSQGpQFmQEqQEhMFNaNfZQEeVQDoi0ZQHfZb@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp4backMFNaNbNcNdNiNfZQEx@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp4saveMFNaNbNdNiNfZSQFyQFx__TQFuTQFkSQGpQFmQEqQEhMFNaNfZQEeVQDoi0ZQHf@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp5frontMFNaNbNcNdNiNfZQEy@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp6__ctorMFNaNbNcNiNfQExZSQGdQGc__TQFzTQFpSQGuQFrQEvQEmMFNaNfZQEjVQDti0ZQHk@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp6__initZ@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7opIndexMFNaNbNcNiNfmZQEz@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7opSliceMFNaNbNiNjNlNfmmZSQGfQGe__TQGbTQFrSQGwQFtQExQEoMFNaNfZQElVQDvi0ZQHm@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7releaseMFNaNbNiNjNlNfZQFb@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp9__xtoHashFNbNeKxSQFxQFw__TQFtTQFjSQGoQFlQEpQEgMFNaNfZQEdVQDni0ZQHeZm@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo11__xopEqualsMxFKxSQFxQFw__TQFtTQFjVQEda15_612e6e616d65203c20622e6e616d65VQEdi0ZQHtZb@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo4backMFNaNbNcNdNiNfZQEw@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo4saveMFNaNbNdNiNfZSQFxQFw__TQFtTQFjVQEda15_612e6e616d65203c20622e6e616d65VQEdi0ZQHt@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo5frontMFNaNbNcNdNiNfZQEx@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo6__ctorMFNaNbNcNiNfQEwZSQGcQGb__TQFyTQFoVQEia15_612e6e616d65203c20622e6e616d65VQEii0ZQHy@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo6__initZ@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7opIndexMFNaNbNcNiNfmZQEy@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7opSliceMFNaNbNiNjNlNfmmZSQGeQGd__TQGaTQFqVQEka15_612e6e616d65203c20622e6e616d65VQEki0ZQIa@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7releaseMFNaNbNiNjNlNfZQFa@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo9__xtoHashFNbNeKxSQFwQFv__TQFsTQFiVQEca15_612e6e616d65203c20622e6e616d65VQEci0ZQHsZm@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo__T10lowerBoundVEQFvQFu12SearchPolicyi3TQFqZQBpMFNaNbNiNfQGhZSQHoQHn__TQHkTQHaVQFua15_612e6e616d65203c20622e6e616d65VQFui0ZQJk@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo__T18getTransitionIndexVEQGdQGc12SearchPolicyi3SQHaQGz__TQGwTQGmVQFga15_612e6e616d65203c20622e6e616d65VQFgi0ZQIw3geqTQIpZQEoMFNaNbNiNfQJgZm@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo__T3geqTQEkTQEoZQnMFNaNbNiNfQFeQFhZb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh11__xopEqualsMxFKxSQGqQGp__TQGmTQGcVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIqZb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh4backMFNaNbNcNdNiNfZQFp@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh4saveMFNaNbNdNiNfZSQGqQGp__TQGmTQGcVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIq@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh5frontMFNaNbNcNdNiNfZQFq@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh6__ctorMFNaNbNcNiNfQFpZSQGvQGu__TQGrTQGhVQEma17_612e74696d6554203c20622e74696d6554VQEmi0ZQIv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh6__initZ@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7opIndexMFNaNbNcNiNfmZQFr@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7opSliceMFNaNbNiNjNlNfmmZSQGxQGw__TQGtTQGjVQEoa17_612e74696d6554203c20622e74696d6554VQEoi0ZQIx@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7releaseMFNaNbNiNjNlNfZQFt@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh9__xtoHashFNbNeKxSQGpQGo__TQGlTQGbVQEga17_612e74696d6554203c20622e74696d6554VQEgi0ZQIpZm@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl11__xopEqualsMxFKxSQGuQGt__TQGqTQGgVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIuZb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl4backMFNaNbNcNdNiNfZQFt@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl4saveMFNaNbNdNiNfZSQGuQGt__TQGqTQGgVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIu@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl5frontMFNaNbNcNdNiNfZQFu@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl6__ctorMFNaNbNcNiNfQFtZSQGzQGy__TQGvTQGlVQEma17_612e74696d6554203c20622e74696d6554VQEmi0ZQIz@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl6__initZ@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7opIndexMFNaNbNcNiNfmZQFv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7opSliceMFNaNbNiNjNlNfmmZSQHbQHa__TQGxTQGnVQEoa17_612e74696d6554203c20622e74696d6554VQEoi0ZQJb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7releaseMFNaNbNiNjNlNfZQFx@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl9__xtoHashFNbNeKxSQGtQGs__TQGpTQGfVQEga17_612e74696d6554203c20622e74696d6554VQEgi0ZQItZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm11__xopEqualsMxFKxSQDvQDu__TQDrTQDhVQDia5_61203c2062VQDii0ZQEwZb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm4backMFNaNbNcNdNiNfZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm4saveMFNaNbNdNiNfZSQDvQDu__TQDrTQDhVQDia5_61203c2062VQDii0ZQEw@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm5frontMFNaNbNcNdNiNfZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm6__ctorMFNaNbNcNiNfQCuZSQEaQDz__TQDwTQDmVQDna5_61203c2062VQDni0ZQFb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm6__initZ@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7opIndexMFNaNbNcNiNfmZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7opSliceMFNaNbNiNjNlNfmmZSQEcQEb__TQDyTQDoVQDpa5_61203c2062VQDpi0ZQFd@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7releaseMFNaNbNiNjNlNfZQCy@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm9__xtoHashFNbNeKxSQDuQDt__TQDqTQDgVQDha5_61203c2062VQDhi0ZQEvZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T10lowerBoundVEQDtQDs12SearchPolicyi2TiZQBnMFNaNbNiNfiZSQFiQFh__TQFeTQEuVQEva5_61203c2062VQEvi0ZQGj@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T18getTransitionIndexVEQEbQEa12SearchPolicyi2SQEyQEx__TQEuTQEkVQEla5_61203c2062VQEli0ZQFz3geqTiZQDrMFNaNbNiNfiZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T18getTransitionIndexVEQEbQEa12SearchPolicyi3SQEyQEx__TQEuTQEkVQEla5_61203c2062VQEli0ZQFz3geqTiZQDrMFNaNbNiNfiZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T3geqTkTiZQjMFNaNbNiNfkiZb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo11__xopEqualsMxFKxSQDxQDw__TQDtTQDjVQDka6_61203c3d2062VQDki0ZQFaZb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo4backMFNaNbNcNdNiNfZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo4saveMFNaNbNdNiNfZSQDxQDw__TQDtTQDjVQDka6_61203c3d2062VQDki0ZQFa@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo5frontMFNaNbNcNdNiNfZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo6__ctorMFNaNbNcNiNfQCwZSQEcQEb__TQDyTQDoVQDpa6_61203c3d2062VQDpi0ZQFf@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo6__initZ@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7opIndexMFNaNbNcNiNfmZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7opSliceMFNaNbNiNjNlNfmmZSQEeQEd__TQEaTQDqVQDra6_61203c3d2062VQDri0ZQFh@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7releaseMFNaNbNiNjNlNfZQDa@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo9__xtoHashFNbNeKxSQDwQDv__TQDsTQDiVQDja6_61203c3d2062VQDji0ZQEzZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo__T10lowerBoundVEQDvQDu12SearchPolicyi3TkZQBnMFNaNbNiNfkZSQFkQFj__TQFgTQEwVQExa6_61203c3d2062VQExi0ZQGn@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo__T18getTransitionIndexVEQEdQEc12SearchPolicyi3SQFaQEz__TQEwTQEmVQEna6_61203c3d2062VQEni0ZQGd3geqTkZQDtMFNaNbNiNfkZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo__T3geqTkTkZQjMFNaNbNiNfkkZb@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk11__xopEqualsMxFKxSQHtQHs__TQHpTQHfSQIkQHi__TQHhTQGvZQHpQEuMFNfZQEoVQDxi0ZQJjZb@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk4backMFNaNbNdNiNfZSQHtQGr17CodepointInterval@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk4saveMFNaNbNdNiNfZSQHtQHs__TQHpTQHfSQIkQHi__TQHhTQGvZQHpQEuMFNfZQEoVQDxi0ZQJj@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk5frontMFNaNbNdNiNfZSQHuQGs17CodepointInterval@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk6__ctorMFNaNbNcNiNfQGsZSQHyQHx__TQHuTQHkSQIpQHn__TQHmTQHaZQHuQEzMFNfZQEtVQEci0ZQJo@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk6__initZ@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7opIndexMFNaNbNiNfmZSQHvQGt17CodepointInterval@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7opSliceMFNaNbNiNjNlNfmmZSQIaQHz__TQHwTQHmSQIrQHp__TQHoTQHcZQHwQFbMFNfZQEvVQEei0ZQJq@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7releaseMFNaNbNiNjNlNfZQGw@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk9__xtoHashFNbNeKxSQHsQHr__TQHoTQHeSQIjQHh__TQHgTQGuZQHoQEtMFNfZQEnVQDwi0ZQJiZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd11__xopEqualsMxFKxSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFqQFpTaZQHiFMxQFhZQFiVQEpi0ZQOuZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd4backMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd4saveMFNaNbNdNiNfZSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFqQFpTaZQHiFMxQFhZQFiVQEpi0ZQOu@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd5frontMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd6__ctorMFNaNbNcNiNfQLlZSQMrQMq__TQMnTQMdSQNiQGn__TQGmS_DQNxQJaQIuQFzQFvQFuTaZQHnFMxQFmZQFnVQEui0ZQOz@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7opIndexMFNaNbNiNfmZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7opSliceMFNaNbNiNjNlNfmmZSQMtQMs__TQMpTQMfSQNkQGp__TQGoS_DQNzQJcQIwQGbQFxQFwTaZQHpFMxQFoZQFpVQEwi0ZQPb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7releaseMFNaNbNiNjNlNfZQLp@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd9__xtoHashFNbNeKxSQMlQMk__TQMhTQLxSQNcQGh__TQGgS_DQNrQIuQIoQFtQFpQFoTaZQHhFMxQFgZQFhVQEoi0ZQOtZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd__T10lowerBoundVEQMkQMj12SearchPolicyi3TAxaZQBpMFNaNfQnZSQNyQNx__TQNuTQNkSQOpQHu__TQHtS_DQPeQKhQKbQHgQHcQHbTaZQIuFMxQGtZQGuVQGbi0ZQQg@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd__T18getTransitionIndexVEQMsQMr12SearchPolicyi3SQNpQNo__TQNlTQNbSQOgQHl__TQHkS_DQOvQJyQJsQGxQGtQGsTaZQIlFMxQGkZQGlVQFsi0ZQPx3geqTAxaZQFaMFNaNfQnZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd__T3geqTQImTAxaZQnMFNaNfQJcQpZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe11__xopEqualsMxFKxSQMnQMm__TQMjTQLzSQNeQGj__TQGiS_DQNtQIwQIqQFvQFqQFpTaZQHjFMxQFhZQFiVQEpi0ZQOvZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe4backMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe4saveMFNaNbNdNiNfZSQMnQMm__TQMjTQLzSQNeQGj__TQGiS_DQNtQIwQIqQFvQFqQFpTaZQHjFMxQFhZQFiVQEpi0ZQOv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe5frontMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe6__ctorMFNaNbNcNiNfQLmZSQMsQMr__TQMoTQMeSQNjQGo__TQGnS_DQNyQJbQIvQGaQFvQFuTaZQHoFMxQFmZQFnVQEui0ZQPa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe6__initZ@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7opIndexMFNaNbNiNfmZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7opSliceMFNaNbNiNjNlNfmmZSQMuQMt__TQMqTQMgSQNlQGq__TQGpS_DQOaQJdQIxQGcQFxQFwTaZQHqFMxQFoZQFpVQEwi0ZQPc@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7releaseMFNaNbNiNjNlNfZQLq@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe9__xtoHashFNbNeKxSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFpQFoTaZQHiFMxQFgZQFhVQEoi0ZQOuZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe__T10lowerBoundVEQMlQMk12SearchPolicyi3TAxaZQBpMFNaNfQnZSQNzQNy__TQNvTQNlSQOqQHv__TQHuS_DQPfQKiQKcQHhQHcQHbTaZQIvFMxQGtZQGuVQGbi0ZQQh@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe__T18getTransitionIndexVEQMtQMs12SearchPolicyi3SQNqQNp__TQNmTQNcSQOhQHm__TQHlS_DQOwQJzQJtQGyQGtQGsTaZQImFMxQGkZQGlVQFsi0ZQPy3geqTAxaZQFaMFNaNfQnZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe__T3geqTQInTAxaZQnMFNaNfQJdQpZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd11__xopEqualsMxFKxSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFoQFnTaZQHiFMxQFfZQFgVQEpi0ZQOuZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd4backMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd4saveMFNaNbNdNiNfZSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFoQFnTaZQHiFMxQFfZQFgVQEpi0ZQOu@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd5frontMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd6__ctorMFNaNbNcNiNfQLlZSQMrQMq__TQMnTQMdSQNiQGn__TQGmS_DQNxQJaQIuQFzQFtQFsTaZQHnFMxQFkZQFlVQEui0ZQOz@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7opIndexMFNaNbNiNfmZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7opSliceMFNaNbNiNjNlNfmmZSQMtQMs__TQMpTQMfSQNkQGp__TQGoS_DQNzQJcQIwQGbQFvQFuTaZQHpFMxQFmZQFnVQEwi0ZQPb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7releaseMFNaNbNiNjNlNfZQLp@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd9__xtoHashFNbNeKxSQMlQMk__TQMhTQLxSQNcQGh__TQGgS_DQNrQIuQIoQFtQFnQFmTaZQHhFMxQFeZQFfVQEoi0ZQOtZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd__T10lowerBoundVEQMkQMj12SearchPolicyi3TAxaZQBpMFNaNfQnZSQNyQNx__TQNuTQNkSQOpQHu__TQHtS_DQPeQKhQKbQHgQHaQGzTaZQIuFMxQGrZQGsVQGbi0ZQQg@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd__T18getTransitionIndexVEQMsQMr12SearchPolicyi3SQNpQNo__TQNlTQNbSQOgQHl__TQHkS_DQOvQJyQJsQGxQGrQGqTaZQIlFMxQGiZQGjVQFsi0ZQPx3geqTAxaZQFaMFNaNfQnZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd__T3geqTQImTAxaZQnMFNaNfQJcQpZb@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu11__xopEqualsMxFKxSQFdQFc__TQEzTQEpVQDia5_61203c2062VQDii0ZQGeZb@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu4backMFNaNbNcNdNiNfZyw@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu4saveMFNaNbNdNiNfZSQFdQFc__TQEzTQEpVQDia5_61203c2062VQDii0ZQGe@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu5frontMFNaNbNcNdNiNfZyw@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu6__ctorMFNaNbNcNiNfQEcZSQFiQFh__TQFeTQEuVQDna5_61203c2062VQDni0ZQGj@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu6__initZ@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7opIndexMFNaNbNcNiNfmZyw@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7opSliceMFNaNbNiNjNlNfmmZSQFkQFj__TQFgTQEwVQDpa5_61203c2062VQDpi0ZQGl@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7releaseMFNaNbNiNjNlNfZQEg@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu9__xtoHashFNbNeKxSQFcQFb__TQEyTQEoVQDha5_61203c2062VQDhi0ZQGdZm@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu__T10lowerBoundVEQFbQFa12SearchPolicyi3TwZQBnMFNaNbNiNfwZSQGqQGp__TQGmTQGcVQEva5_61203c2062VQEvi0ZQHr@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu__T18getTransitionIndexVEQFjQFi12SearchPolicyi3SQGgQGf__TQGcTQFsVQEla5_61203c2062VQEli0ZQHh3geqTwZQDrMFNaNbNiNfwZm@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu__T3geqTywTwZQkMFNaNbNiNfywwZb@Base 15 + _D3std5range__T11takeExactlyTSQBcQBb__T6RepeatTaZQkZQBlFNaNbNiNfQBjmZSQCqQCp__T4TakeTQCeZQk@Base 15 + _D3std5range__T12assumeSortedVAyaa15_612e6e616d65203c20622e6e616d65TASQCq5regex8internal2ir10NamedGroupZQDlFNaNbNiNfQBwZSQEpQEo__T11SortedRangeTQCyVQEoa15_612e6e616d65203c20622e6e616d65VEQHdQHc18SortedRangeOptionsi0ZQDi@Base 15 + _D3std5range__T12assumeSortedVAyaa17_612e74696d6554203c20622e74696d6554TASQCu8datetime8timezone13PosixTimeZone10LeapSecondZQEeFNaNbNiNfQClZSQFiQFh__T11SortedRangeTQDnVQFha17_612e74696d6554203c20622e74696d6554VEQIaQHz18SortedRangeOptionsi0ZQDm@Base 15 + _D3std5range__T12assumeSortedVAyaa17_612e74696d6554203c20622e74696d6554TASQCu8datetime8timezone13PosixTimeZone14TempTransitionZQEiFNaNbNiNfQCpZSQFmQFl__T11SortedRangeTQDrVQFla17_612e74696d6554203c20622e74696d6554VEQIeQId18SortedRangeOptionsi0ZQDm@Base 15 + _D3std5range__T12assumeSortedVAyaa5_61203c2062TAQsZQBkFNaNbNiNfQqZSQCnQCm__T11SortedRangeTQBrVQCma5_61203c2062VEQEgQEf18SortedRangeOptionsi0ZQCn@Base 15 + _D3std5range__T12assumeSortedVAyaa5_61203c2062TAkZQBjFNaNbNiNfQpZSQCmQCl__T11SortedRangeTQBqVQCla5_61203c2062VEQEfQEe18SortedRangeOptionsi0ZQCn@Base 15 + _D3std5range__T12assumeSortedVAyaa5_61203c2062TSQBuQBt__T6strideTAywZQmFQhmZ6ResultZQCrFNaNbNiNfQBxZSQDvQDu__T11SortedRangeTQCzVQDua5_61203c2062VEQFoQFn18SortedRangeOptionsi0ZQCn@Base 15 + _D3std5range__T12assumeSortedVAyaa6_61203c3d2062TAkZQBlFNaNbNiNfQpZSQCoQCn__T11SortedRangeTQBqVQCna6_61203c3d2062VEQEjQEi18SortedRangeOptionsi0ZQCp@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb4backMFNaNbNdNiNfZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb4saveMFNaNbNdNiNfZSQCkQCj__TQCgTQCeZQCo@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb5frontMFNaNbNdNiNfZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6__initZ@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6moveAtMFNaNbNiNfmZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb7opIndexMFNaNbNiNfmZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb8moveBackMFNaNbNiNfZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb9maxLengthMxFNaNbNdNiNfZm@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb9moveFrontMFNaNbNiNfZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb__T7opSliceZQjMFNaNbNiNfmmZSQCtQCs__TQCpTQCnZQCx@Base 15 + _D3std5range__T4iotaTmTmZQkFNaNbNiNfmmZSQBmQBl__TQBiTmTmZQBqFmmZ6Result@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result4backMNgFNaNbNdNiNfZNgm@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result4saveMFNaNbNdNiNfZSQCdQCc__TQBzTmTmZQChFmmZQBy@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result5frontMNgFNaNbNdNiNfZNgm@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result6__ctorMFNaNbNcNiNfmmZSQChQCg__TQCdTmTmZQClFmmZQCc@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result6__initZ@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result7opIndexMNgFNaNbNiNfmZNgm@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result7opSliceMNgFNaNbNiNfZNgSQCiQCh__TQCeTmTmZQCmFmmZQCd@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result7opSliceMNgFNaNbNiNfmmZNgSQCkQCj__TQCgTmTmZQCoFmmZQCf@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result8containsMFNaNbNiNfmZb@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result__T13opBinaryRightVAyaa2_696eZQBbMxFNaNbNiNfmZb@Base 15 + _D3std5range__T4iotaTmTxmZQlFNaNbNiNfmxmZSQBoQBn__TQBkTmTxmZQBtFmxmZ6Result@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result4backMNgFNaNbNdNiNfZNgm@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result4saveMFNaNbNdNiNfZSQCfQCe__TQCbTmTxmZQCkFmxmZQCa@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result5frontMNgFNaNbNdNiNfZNgm@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result6__ctorMFNaNbNcNiNfmmZSQCjQCi__TQCfTmTxmZQCoFmxmZQCe@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result6__initZ@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7opIndexMNgFNaNbNiNfmZNgm@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7opSliceMNgFNaNbNiNfZNgSQCkQCj__TQCgTmTxmZQCpFmxmZQCf@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7opSliceMNgFNaNbNiNfmmZNgSQCmQCl__TQCiTmTxmZQCrFmxmZQCh@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result8containsMFNaNbNiNfmZb@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result__T13opBinaryRightVAyaa2_696eZQBbMxFNaNbNiNfmZb@Base 15 + _D3std5range__T4iotaTmZQiFNaNbNiNfmZSQBjQBi__TQBfTmTmZQBnFmmZ6Result@Base 15 + _D3std5range__T4onlyTaZQiFNaNbNiNfMaZSQBkQBj__T10OnlyResultTaZQp@Base 15 + _D3std5range__T4takeTAhZQjFNaNbNiNfQomZQs@Base 15 + _D3std5range__T4takeTSQuQs__T6RepeatTaZQkZQBbFNaNbNiNfQBhmZSQCgQCf__T4TakeTQCcZQk@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFNaNbNiNfQEoQCuQBvZSQFtQFs__TQFpTQFmTQDtTQCvZQGfFQGcQEiQDjZ6Result@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result11__xopEqualsMxFKxSQGkQGj__TQGgTQGdTQEkTQDmZQGwFQGtQEzQEaZQCnZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result4backMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result4saveMFNaNbNdNiNfZSQGkQGj__TQGgTQGdTQEkTQDmZQGwFQGtQEzQEaZQCn@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result5frontMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__ctorMFNaNbNcNiNfQFqQDwQCxZSQGvQGu__TQGrTQGoTQEvTQDxZQHhFQHeQFkQElZQCy@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__ctorMFNaNbNcNiNfQFqQDwQCxmmZSQGxQGw__TQGtTQGqTQExTQDzZQHjFQHgQFmQEnZQDa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6fixRefFNaNbNiNfxaZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6moveAtMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opIndexMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNaNbNiNjNlNfmmZSQGrQGq__TQGnTQGkTQErTQDtZQHdFQHaQFgQEhZQCu@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges11__xopEqualsMxFKxSQHpQHo__TQHlTQHiTQFpTQErZQIbFQHyQGeQFfZQDsQDoMFNjNlmmZQDjZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges9__xtoHashFNbNeKxSQHoQHn__TQHkTQHhTQFoTQEqZQIaFQHxQGdQFeZQDrQDnMFNjNlmmZQDiZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result8moveBackMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result9__xtoHashFNbNeKxSQGjQGi__TQGfTQGcTQEjTQDlZQGvFQGsQEyQDzZQCmZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result9moveFrontMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFNaNbNiNfQDqQBvQDwZSQEvQEu__TQErTQEoTQCuTQEwZQFhFQFeQDjQFkZ6Result@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result11__xopEqualsMxFKxSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCnZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4backMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4saveMFNaNbNdNiNfZSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCn@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5frontMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEyZSQFxQFw__TQFtTQFqTQDwTQFyZQGjFQGgQElQGmZQCy@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEymmZSQFzQFy__TQFvTQFsTQDyTQGaZQGlFQGiQEnQGoZQDa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6fixRefFNaNbNiNfxaZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6moveAtMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opIndexMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNaNbNiNjNlNfmmZSQFtQFs__TQFpTQFmTQDsTQFuZQGfFQGcQEhQGiZQCu@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges11__xopEqualsMxFKxSQGrQGq__TQGnTQGkTQEqTQGsZQHdFQHaQFfQHgZQDsQDoMFNjNlmmZQDjZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges9__xtoHashFNbNeKxSQGqQGp__TQGmTQGjTQEpTQGrZQHcFQGzQFeQHfZQDrQDnMFNjNlmmZQDiZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8moveBackMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9__xtoHashFNbNeKxSQFlQFk__TQFhTQFeTQDkTQFmZQFxFQFuQDzQGaZQCmZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9moveFrontMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFNaNbNiNfQDqQBvQDwZSQEvQEu__TQErTQEoTQCuTQEwZQFhFQFeQDjQFkZ6Result@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result11__xopEqualsMxFKxSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCnZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4backMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4saveMFNaNbNdNiNfZSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCn@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5frontMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEyZSQFxQFw__TQFtTQFqTQDwTQFyZQGjFQGgQElQGmZQCy@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEymmZSQFzQFy__TQFvTQFsTQDyTQGaZQGlFQGiQEnQGoZQDa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6fixRefFNaNbNiNfxaZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6moveAtMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opIndexMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNaNbNiNjNlNfmmZSQFtQFs__TQFpTQFmTQDsTQFuZQGfFQGcQEhQGiZQCu@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges11__xopEqualsMxFKxSQGrQGq__TQGnTQGkTQEqTQGsZQHdFQHaQFfQHgZQDsQDoMFNjNlmmZQDjZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges9__xtoHashFNbNeKxSQGqQGp__TQGmTQGjTQEpTQGrZQHcFQGzQFeQHfZQDrQDnMFNjNlmmZQDiZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8moveBackMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9__xtoHashFNbNeKxSQFlQFk__TQFhTQFeTQDkTQFmZQFxFQFuQDzQGaZQCmZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9moveFrontMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFNaNbNiQNdQEcZSQOfQOe__TQObTQNyTQEyZQOnFQOkQFjZQGo@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb4saveMFNaNbNdNiZSQOsQOr__TQOoTQOlTQFlZQPaFQOxQFwZQHb@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb5emptyMFNaNbNdNiZb@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb5frontMFNaNbNdNiZm@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__ctorMFNaNbNcNiNfQOaQEzmZSQPdQPc__TQOzTQOwTQFwZQPlFQPiQGhZQHm@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__ctorMFNaNbNcNiQNyQExZSQPaQOz__TQOwTQOtTQFtZQPiFQPfQGeZQHj@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__initZ@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6fixRefFNaNbNiNfmZm@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb8popFrontMFNaNbNiZv@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb9moveFrontMFNaNbNiZm@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFNaNbNiNfQFaQDoZSQGcQGb__TQFyTQFvTQEkZQGkFQGhQEvZQCi@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt4backMFNaNbNdNiNfZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt4saveMFNaNbNdNiNfZSQGoQGn__TQGkTQGhTQEwZQGwFQGtQFhZQCu@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt5frontMFNaNbNdNiNfZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__ctorMFNaNbNcNiNfQFuQEiZSQGwQGv__TQGsTQGpTQFeZQHeFQHbQFpZQDc@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__ctorMFNaNbNcNiNfQFuQEimmZSQGyQGx__TQGuTQGrTQFgZQHgFQHdQFrZQDe@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__initZ@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6fixRefFNaNbNiNfaZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6moveAtMFNaNbNiNfmZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opIndexMFNaNbNiNfmZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opSliceMFNaNbNiNfmmZSQGrQGq__TQGnTQGkTQEzZQGzFQGwQFkZQCx@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt8moveBackMFNaNbNiNfZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt9moveFrontMFNaNbNiNfZa@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNiNfQCkZSQDjQDi__TQDfTQDcZQDnFQDkZ__T6ResultZQi@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi10retroIndexMFNaNbNiNfmZm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi11__xopEqualsMxFKxSQEgQEf__TQEcTQDzZQEkFQEhZ__TQCfZQCjZb@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi13opIndexAssignMFNaNbNiNfQDrmZv@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi4backMFNaNbNcNdNiNfZQDm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi4backMFNaNbNdNiNfQDjZv@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi4saveMFNaNbNdNiNfZSQEgQEf__TQEcTQDzZQEkFQEhZ__TQCfZQCj@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi5frontMFNaNbNcNdNiNfZQDn@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi5frontMFNaNbNdNiNfQDkZv@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi6__initZ@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi6moveAtMFNaNbNiNfmZQDl@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi7opIndexMFNaNbNcNiNfmZQDo@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi7opSliceMFNaNbNiNfmmZSQEjQEi__TQEfTQEcZQEnFQEkZ__TQCiZQCm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi8moveBackMFNaNbNiNfZQDm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi9__mixin176lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi9__xtoHashFNbNeKxSQEfQEe__TQEbTQDyZQEjFQEgZ__TQCeZQCiZm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi9moveFrontMFNaNbNiNfZQDn@Base 15 + _D3std5range__T6ChunksTAhZQl11DollarToken6__initZ@Base 15 + _D3std5range__T6ChunksTAhZQl11DollarToken9momLengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T6ChunksTAhZQl11__xopEqualsMxFKxSQBtQBs__TQBpTQBlZQBxZb@Base 15 + _D3std5range__T6ChunksTAhZQl4backMFNaNbNdNiNfZQx@Base 15 + _D3std5range__T6ChunksTAhZQl4saveMFNaNbNdNiNfZSQBtQBs__TQBpTQBlZQBx@Base 15 + _D3std5range__T6ChunksTAhZQl5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T6ChunksTAhZQl5frontMFNaNbNdNiNfZQy@Base 15 + _D3std5range__T6ChunksTAhZQl6__ctorMFNaNbNcNiNfQymZSQByQBx__TQBuTQBqZQCc@Base 15 + _D3std5range__T6ChunksTAhZQl6__initZ@Base 15 + _D3std5range__T6ChunksTAhZQl6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T6ChunksTAhZQl7opIndexMFNaNbNiNfmZQz@Base 15 + _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfSQBtQBs__TQBpTQBlZQBx11DollarTokenQBiZSQDfQDe__TQDbTQCxZQDj@Base 15 + _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfSQBtQBs__TQBpTQBlZQBx11DollarTokenmZSQDdQDc__TQCzTQCvZQDh@Base 15 + _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfmSQBuQBt__TQBqTQBmZQBy11DollarTokenZSQDdQDc__TQCzTQCvZQDh@Base 15 + _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfmmZSQBwQBv__TQBsTQBoZQCa@Base 15 + _D3std5range__T6ChunksTAhZQl7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T6ChunksTAhZQl8opDollarMFNaNbNiNfZSQBvQBu__TQBrTQBnZQBz11DollarToken@Base 15 + _D3std5range__T6ChunksTAhZQl8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T6ChunksTAhZQl9__xtoHashFNbNeKxSQBsQBr__TQBoTQBkZQBwZm@Base 15 + _D3std5range__T6RepeatTaZQk11DollarToken6__initZ@Base 15 + _D3std5range__T6RepeatTaZQk4backMNgFNaNbNdNiNfZNga@Base 15 + _D3std5range__T6RepeatTaZQk4saveMNgFNaNbNdNiNfZNgSQBwQBv__TQBsTaZQBy@Base 15 + _D3std5range__T6RepeatTaZQk5frontMNgFNaNbNdNiNfZNga@Base 15 + _D3std5range__T6RepeatTaZQk6__initZ@Base 15 + _D3std5range__T6RepeatTaZQk7opIndexMNgFNaNbNiNfmZNga@Base 15 + _D3std5range__T6RepeatTaZQk7opSliceMFNaNbNiNfmmZSQBvQBu__T4TakeTSQClQCk__TQChTaZQCnZQBa@Base 15 + _D3std5range__T6RepeatTaZQk7opSliceMNgFNaNbNiNfmSQBvQBu__TQBrTaZQBx11DollarTokenZNgSQDeQDd__TQDaTaZQDg@Base 15 + _D3std5range__T6RepeatTaZQk7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T6RepeatTaZQk8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T6chunksTAhZQlFNaNbNiNfQomZSQBoQBn__T6ChunksTQBkZQm@Base 15 + _D3std5range__T6repeatTaZQkFNaNbNiNfaZSQBlQBk__T6RepeatTaZQk@Base 15 + _D3std5range__T6repeatTaZQkFNaNbNiNfamZSQBmQBl__T4TakeTSQCcQCb__T6RepeatTaZQkZQBd@Base 15 + _D3std5range__T6strideTAywZQmFNaNbNiNfQpmZSQBpQBo__TQBlTQBhZQBtFQBpmZ6Result@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result11__xopEqualsMxFKxSQCgQCf__TQCcTQByZQCkFQCgmZQCaZb@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result22eliminateSlackElementsMFNaNbNiNfZv@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result4backMFNaNbNcNdNiNfZyw@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result4saveMFNaNbNdNiNfZSQCgQCf__TQCcTQByZQCkFQCgmZQCa@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result5frontMFNaNbNcNdNiNfZyw@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result6__initZ@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result6moveAtMFNaNbNiNfmZyw@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result7opIndexMFNaNbNcNiNfmZyw@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result7opSliceMFNaNbNiNfmmZSQCjQCi__TQCfTQCbZQCnFQCjmZQCd@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result8moveBackMFNaNbNiNfZyw@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result9__xtoHashFNbNeKxSQCfQCe__TQCbTQBxZQCjFQCfmZQBzZm@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result9moveFrontMFNaNbNiNfZyw@Base 15 + _D3std5range__T7padLeftTSQx4conv__T7toCharsVhi10TaVEQBy5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultTaZQDjFNaNbNiNfQDmamZSQEpQEo__T5chainTSQFgQFf__T4TakeTSQFwQFv__T6RepeatTaZQkZQBdTQGaZQCcFQBzQGlZQDz@Base 15 + _D3std5regex11__moduleRefZ@Base 15 + _D3std5regex12__ModuleInfoZ@Base 15 + _D3std5regex8internal12backtracking11__moduleRefZ@Base 15 + _D3std5regex8internal12backtracking12__ModuleInfoZ@Base 15 + _D3std5regex8internal12backtracking9CtContext10ctAtomCodeMFAxSQCiQChQCe2ir8BytecodeiZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext10ctGenBlockMFAxSQCiQChQCe2ir8BytecodeiZSQDgQDfQDcQCwQCl7CtState@Base 15 + _D3std5regex8internal12backtracking9CtContext10ctGenGroupMFKAxSQCjQCiQCf2ir8BytecodeiZSQDhQDgQDdQCxQCm7CtState@Base 15 + _D3std5regex8internal12backtracking9CtContext10ctGenRegExMFAxSQCiQChQCe2ir8BytecodeZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext10lookaroundMFkkZSQCjQCiQCfQBzQBo@Base 15 + _D3std5regex8internal12backtracking9CtContext11__xopEqualsMxFKxSQCkQCjQCgQCaQBpZb@Base 15 + _D3std5regex8internal12backtracking9CtContext11ctQuickTestMFAxSQCjQCiQCf2ir8BytecodeiZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext11restoreCodeMFZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext14ctGenFixupCodeMFAxSQCmQClQCi2ir8BytecodeiiZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext14ctGenFixupCodeMFKAxSQCnQCmQCj2ir8BytecodeiiZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext16ctGenAlternationMFAxSQCoQCnQCk2ir8BytecodeiZSQDmQDlQDiQDcQCr7CtState@Base 15 + _D3std5regex8internal12backtracking9CtContext6__initZ@Base 15 + _D3std5regex8internal12backtracking9CtContext7CtState11__xopEqualsMxFKxSQCsQCrQCoQCiQBxQBqZb@Base 15 + _D3std5regex8internal12backtracking9CtContext7CtState6__initZ@Base 15 + _D3std5regex8internal12backtracking9CtContext7CtState9__xtoHashFNbNeKxSQCrQCqQCnQChQBwQBpZm@Base 15 + _D3std5regex8internal12backtracking9CtContext8saveCodeMFkAyaZQe@Base 15 + _D3std5regex8internal12backtracking9CtContext9__xtoHashFNbNeKxSQCjQCiQCfQBzQBoZm@Base 15 + _D3std5regex8internal12backtracking9CtContext9ctGenAtomMFKAxSQChQCgQCd2ir8BytecodeiZSQDfQDeQDbQCvQCk7CtState@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhTQkTQnZQxFNaNbNeQzQBbQBeQBhQBkQBnZQBr@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhTQkZQuFNaNbNeQwQyQBaQBdQBgZQBk@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhTxkTxkTiTQsTQvTQyZQBiFNaNbNeQBlQBoQBrQBuxkxkiQCcQCfQCiZQCm@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhZQrFNaNbNeQtQvQxQzZQBc@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiTQjTQmTQpTxkTxkTiTQBaTQBeTQBiZQBtFNaNbNeQBwQBzQCciQCgQCjQCmxkxkiQCuQCxQDaZQDe@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiTQjTiTQoTiZQBaFNaNbNeQBdQBgQBjiQBniQBriZQBw@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiTiTQlZQvFNaNbNeQxQzQBbiiQBgZQBk@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiZQqFNaNbNeQsQuQwiZQBa@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTxkTxkTiTQpTQsTQvZQBfFNaNbNeQBiQBlQBoxkxkiQBwQBzQCcZQCg@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeZQoFNaNbNeQqQsQuZQx@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiTQgTQjTQmTxkTxkTiTQxTQBaTQBeZQBpFNaNbNeQBsQBviQBzQCcQCfxkxkiQCnQCqQCtZQCx@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiTQgTiTQlTiZQxFNaNbNeQzQBbiQBfiQBjiZQBo@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiTQgTiZQsFNaNbNeQuQwiQziZQBd@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiTiTQiTiZQuFNaNbNeQwQyiiQBciZQBh@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiTiTQiZQsFNaNbNeQuQwiiQBaZQBe@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiZQnFNaNbNeQpQriZQv@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTxkTxkTiTQmTQpTQsZQBcFNaNbNeQBfQBixkxkiQBqQBtQBwZQCa@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTykTiZQqFNaNbNeQsQuykiZQBa@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaZQlFNaNbNeQnQpZQs@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTQhTxkTxkTiTQsTQvTQyZQBkFNaNbNeQBliQBpQBsQBvxkxkiQCdQCgQCjZQCn@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTQhZQtFNaNbNeQtiQwQyQBaZQBe@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTiTQjTQmTQpTxkTxkTiTQBaTQBeTQBiZQBvFNaNbNeQBwiQCaQCdiQChQCkQCnxkxkiQCvQCyQDbZQDf@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTiZQsFNaNbNeQsiQvQxiZQBb@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTiTQgTiZQuFNaNbNeQuiQxiQBaiZQBf@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTiZQpFNaNbNeQpiQsiZQw@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaZQnFNaNbNeQniQqZQt@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTiTAyaTiZQrFNaNbNeQpiiQtiZQx@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTiTAyaZQpFNaNbNeQniiQrZQu@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTiZQlFNaNbNeAyaiiZQg@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTykTiZQoFNaNbNeAyaiykiZQi@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiZQjFNaNbNeAyaiZQf@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTkTAyaTQeTQhZQtFNaNbNeQtkQwQyQBaZQBe@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTkTAyaTQeZQqFNaNbNeQqkQtQvZQy@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTkTAyaZQnFNaNbNeQnkQqZQt@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTkTkZQlFNaNbNeAyakkZQg@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTkZQjFNaNbNeAyakZQf@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTxkTAyaTQeTiTQjTiTQoTiZQBdFNaNbNeQBdxkQBiQBliQBpiQBtiZQBy@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTxkTAyaTQeTiTiTQlZQyFNaNbNeQxxkQBbQBeiiQBjZQBn@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTxkTiTAyaTQeTQhZQwFNaNbNeQtxkiQyQBaQBdZQBh@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTxkTxkTiTAyaTQeTQhZQzFNaNbNeQtxkxkiQBaQBdQBgZQBk@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTxkTykTiTykTiZQuFNaNbNeAyaxkykiykiZQm@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTykTAyaTykTiZQtFNaNbNeQsykQwykiZQBc@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTykTiTiTAyaTiZQuFNaNbNeQpykiiQviZQz@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTykTiTykTiZQrFNaNbNeAyaykiykiZQk@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTykTiZQmFNaNbNeAyaykiZQh@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTykZQkFNaNbNeAyaykZQg@Base 15 + _D3std5regex8internal12backtracking__T5ctSubZQhFNaNbNiNeAyaZQe@Base 15 + _D3std5regex8internal2ir10NamedGroup11__xopEqualsMxFKxSQCbQCaQBxQBrQBrZb@Base 15 + _D3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D3std5regex8internal2ir10NamedGroup9__xtoHashFNbNeKxSQCaQBzQBwQBqQBqZm@Base 15 + _D3std5regex8internal2ir10getMatcherFNeSQBm3uni__T13InversionListTSQCnQBb8GcPolicyZQBhZSQDiQDhQDeQCy11CharMatcher@Base 15 + _D3std5regex8internal2ir10lengthOfIRFNaNbNiNfEQBsQBrQBoQBi2IRZi@Base 15 + _D3std5regex8internal2ir11CharMatcher11__xopEqualsMxFKxSQCcQCbQByQBsQBsZb@Base 15 + _D3std5regex8internal2ir11CharMatcher6__ctorMFNcSQBv3uni__T13InversionListTSQCwQBb8GcPolicyZQBhZSQDrQDqQDnQDhQDh@Base 15 + _D3std5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D3std5regex8internal2ir11CharMatcher9__xtoHashFNbNeKxSQCbQCaQBxQBrQBrZm@Base 15 + _D3std5regex8internal2ir11RegexOption6__initZ@Base 15 + _D3std5regex8internal2ir11__moduleRefZ@Base 15 + _D3std5regex8internal2ir12__ModuleInfoZ@Base 15 + _D3std5regex8internal2ir12matcherCacheHSQBm3uni__T13InversionListTSQCnQBb8GcPolicyZQBhSQDhQDgQDdQCx11CharMatcher@Base 15 + _D3std5regex8internal2ir14RegexException6__initZ@Base 15 + _D3std5regex8internal2ir14RegexException6__vtblZ@Base 15 + _D3std5regex8internal2ir14RegexException7__ClassZ@Base 15 + _D3std5regex8internal2ir14RegexException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDmQDlQDiQDcQDc@Base 15 + _D3std5regex8internal2ir14RegexException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDmQDlQDiQDcQDc@Base 15 + _D3std5regex8internal2ir16lengthOfPairedIRFNaNbNiNfEQByQBxQBuQBo2IRZi@Base 15 + _D3std5regex8internal2ir17immediateParamsIRFNaNbNiNfEQBzQByQBvQBp2IRZi@Base 15 + _D3std5regex8internal2ir2IR6__initZ@Base 15 + _D3std5regex8internal2ir7isEndIRFNaNbNiNfEQBoQBnQBkQBe2IRZb@Base 15 + _D3std5regex8internal2ir8BitTable6__ctorMFNcSQBr3uni__T13InversionListTSQCsQBb8GcPolicyZQBhZSQDnQDmQDjQDdQDd@Base 15 + _D3std5regex8internal2ir8BitTable6__initZ@Base 15 + _D3std5regex8internal2ir8BitTable__T3addZQfMFNaNbNiNfwZv@Base 15 + _D3std5regex8internal2ir8BitTable__T5indexZQhFNaNbNiNfwZk@Base 15 + _D3std5regex8internal2ir8Bytecode11indexOfPairMxFNaNfkZk@Base 15 + _D3std5regex8internal2ir8Bytecode11setLocalRefMFNaNfZv@Base 15 + _D3std5regex8internal2ir8Bytecode12pairedLengthMxFNaNdNfZk@Base 15 + _D3std5regex8internal2ir8Bytecode13backreferenceMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode14setBackrefenceMFNaNfZv@Base 15 + _D3std5regex8internal2ir8Bytecode4argsMxFNaNdNfZi@Base 15 + _D3std5regex8internal2ir8Bytecode5isEndMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode6__ctorMFNaNcNfEQBvQBuQBrQBl2IRkZSQCnQCmQCjQCdQCd@Base 15 + _D3std5regex8internal2ir8Bytecode6__ctorMFNaNcNfEQBvQBuQBrQBl2IRkkZSQCoQCnQCkQCeQCe@Base 15 + _D3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D3std5regex8internal2ir8Bytecode6isAtomMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode6lengthMxFNaNdNfZk@Base 15 + _D3std5regex8internal2ir8Bytecode6pairedMxFNaNdNfZSQBxQBwQBtQBnQBn@Base 15 + _D3std5regex8internal2ir8Bytecode7fromRawFNaNfkZSQBvQBuQBrQBlQBl@Base 15 + _D3std5regex8internal2ir8Bytecode7hotspotMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode7isStartMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode8localRefMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode__T4codeZQgMxFNaNbNdNiNfZEQCfQCeQCbQBv2IR@Base 15 + _D3std5regex8internal2ir8Bytecode__T4dataZQgMxFNaNbNdNiNfZk@Base 15 + _D3std5regex8internal2ir8Bytecode__T8mnemonicZQkMxFNaNdNeZAya@Base 15 + _D3std5regex8internal2ir8Bytecode__T8sequenceZQkMxFNaNbNdNiNfZk@Base 15 + _D3std5regex8internal2ir8hasMergeFNaNbNiNfEQBpQBoQBlQBf2IRZb@Base 15 + _D3std5regex8internal2ir8isAtomIRFNaNbNiNfEQBpQBoQBlQBf2IRZb@Base 15 + _D3std5regex8internal2ir8pairedIRFNaNbNiNfEQBpQBoQBlQBf2IRZQr@Base 15 + _D3std5regex8internal2ir9RegexInfo6__initZ@Base 15 + _D3std5regex8internal2ir9isStartIRFNaNbNiNfEQBqQBpQBmQBg2IRZb@Base 15 + _D3std5regex8internal5tests11__moduleRefZ@Base 15 + _D3std5regex8internal5tests12__ModuleInfoZ@Base 15 + _D3std5regex8internal6parser11__moduleRefZ@Base 15 + _D3std5regex8internal6parser12__ModuleInfoZ@Base 15 + _D3std5regex8internal6parser7CodeGen10endPatternMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen11__xopEqualsMxFKxSQCbQCaQBxQBrQBnZb@Base 15 + _D3std5regex8internal6parser7CodeGen11charsetToIrMFNeSQCa3uni__T13InversionListTSQDbQBb8GcPolicyZQBhZv@Base 15 + _D3std5regex8internal6parser7CodeGen11fixupLengthMFNdZm@Base 15 + _D3std5regex8internal6parser7CodeGen11isOpenGroupMFkZb@Base 15 + _D3std5regex8internal6parser7CodeGen11markBackrefMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen13fixLookaroundMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen13fixRepetitionMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen13fixRepetitionMFkkkbZv@Base 15 + _D3std5regex8internal6parser7CodeGen13genLogicGroupMFZv@Base 15 + _D3std5regex8internal6parser7CodeGen13genLookaroundMFEQCaQBzQBw2ir2IRZv@Base 15 + _D3std5regex8internal6parser7CodeGen13genNamedGroupMFAyaZv@Base 15 + _D3std5regex8internal6parser7CodeGen14fixAlternationMFZv@Base 15 + _D3std5regex8internal6parser7CodeGen17finishAlternationMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen3putMFSQBpQBoQBl2ir8BytecodeZv@Base 15 + _D3std5regex8internal6parser7CodeGen5startMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen6__initZ@Base 15 + _D3std5regex8internal6parser7CodeGen6lengthMFNdZk@Base 15 + _D3std5regex8internal6parser7CodeGen6putRawMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen7onCloseMFZSQBu8typecons__T5TupleTbTkZQl@Base 15 + _D3std5regex8internal6parser7CodeGen8genGroupMFZv@Base 15 + _D3std5regex8internal6parser7CodeGen8popFixupMFZk@Base 15 + _D3std5regex8internal6parser7CodeGen8topFixupMFNdZk@Base 15 + _D3std5regex8internal6parser7CodeGen9__xtoHashFNbNeKxSQCaQBzQBwQBqQBmZm@Base 15 + _D3std5regex8internal6parser7CodeGen9pushFixupMFkZv@Base 15 + _D3std5regex8internal6parser__T15reverseBytecodeZQsFNeASQCcQCbQBy2ir8BytecodeZv@Base 15 + _D3std5regex8internal6tests211__moduleRefZ@Base 15 + _D3std5regex8internal6tests212__ModuleInfoZ@Base 15 + _D3std5regex8internal8thompson11__moduleRefZ@Base 15 + _D3std5regex8internal8thompson12__ModuleInfoZ@Base 15 + _D3std5regex8internal9generator11__moduleRefZ@Base 15 + _D3std5regex8internal9generator12__ModuleInfoZ@Base 15 + _D3std5regex8internal9kickstart11__moduleRefZ@Base 15 + _D3std5regex8internal9kickstart12__ModuleInfoZ@Base 15 + _D3std5stdio10ChunksImpl11__fieldDtorMFNeZv@Base 15 + _D3std5stdio10ChunksImpl11__xopEqualsMxFKxSQBpQBoQBlZb@Base 15 + _D3std5stdio10ChunksImpl15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio10ChunksImpl6__ctorMFNcSQBiQBh4FilemZSQBwQBvQBs@Base 15 + _D3std5stdio10ChunksImpl6__initZ@Base 15 + _D3std5stdio10ChunksImpl8opAssignMFNcNjNeSQBoQBnQBkZQl@Base 15 + _D3std5stdio10ChunksImpl9__xtoHashFNbNeKxSQBoQBnQBkZm@Base 15 + _D3std5stdio10LockedFile14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D3std5stdio10LockedFile5fgetcMFNbNiNeZi@Base 15 + _D3std5stdio10LockedFile6__ctorMFNcNePOS4core4stdcQBs8_IO_FILEZSQCkQCjQCg@Base 15 + _D3std5stdio10LockedFile6__dtorMFNeZv@Base 15 + _D3std5stdio10LockedFile6__initZ@Base 15 + _D3std5stdio10LockedFile6fgetwcMFNbNiNeZw@Base 15 + _D3std5stdio10readlnImplFNfPOS4core4stdcQBi8_IO_FILEKAawEQCdQCc4File11OrientationZ18__lambda_L5639_C16MFNeZ1nm@Base 15 + _D3std5stdio10readlnImplFNfPOS4core4stdcQBi8_IO_FILEKAawEQCdQCc4File11OrientationZ18__lambda_L5639_C16MFNeZ7lineptrPa@Base 15 + _D3std5stdio10readlnImplFNfPOS4core4stdcQBi8_IO_FILEKAawEQCdQCc4File11OrientationZm@Base 15 + _D3std5stdio11__moduleRefZ@Base 15 + _D3std5stdio11openNetworkFAyatZSQBeQBd4File@Base 15 + _D3std5stdio12__ModuleInfoZ@Base 15 + _D3std5stdio13StdFileHandle6__initZ@Base 15 + _D3std5stdio13trustedStdoutFNdNeZSQBgQBf4File@Base 15 + _D3std5stdio14ReadlnAppender10initializeMFNfAaZv@Base 15 + _D3std5stdio14ReadlnAppender11__xopEqualsMxFKxSQBtQBsQBpZb@Base 15 + _D3std5stdio14ReadlnAppender24reserveWithoutAllocatingMFmZb@Base 15 + _D3std5stdio14ReadlnAppender4dataMFNdNeZAa@Base 15 + _D3std5stdio14ReadlnAppender6__initZ@Base 15 + _D3std5stdio14ReadlnAppender7putcharMFNeaZv@Base 15 + _D3std5stdio14ReadlnAppender7putonlyMFNexAaZv@Base 15 + _D3std5stdio14ReadlnAppender7reserveMFNemZv@Base 15 + _D3std5stdio14ReadlnAppender8putdcharMFNewZv@Base 15 + _D3std5stdio14ReadlnAppender9__xtoHashFNbNeKxSQBsQBrQBoZm@Base 15 + _D3std5stdio14StdioException6__ctorMFNeAyakZCQBrQBqQBn@Base 15 + _D3std5stdio14StdioException6__initZ@Base 15 + _D3std5stdio14StdioException6__vtblZ@Base 15 + _D3std5stdio14StdioException6opCallFNfAyaZv@Base 15 + _D3std5stdio14StdioException6opCallFNfZv@Base 15 + _D3std5stdio14StdioException7__ClassZ@Base 15 + _D3std5stdio17LockingTextReader10__aggrDtorMFZv@Base 15 + _D3std5stdio17LockingTextReader10__postblitMFZv@Base 15 + _D3std5stdio17LockingTextReader11__fieldDtorMFNeZv@Base 15 + _D3std5stdio17LockingTextReader11__xopEqualsMxFKxSQBwQBvQBsZb@Base 15 + _D3std5stdio17LockingTextReader14__aggrPostblitMFZv@Base 15 + _D3std5stdio17LockingTextReader15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio17LockingTextReader5emptyMFNdZb@Base 15 + _D3std5stdio17LockingTextReader5frontMFNdZa@Base 15 + _D3std5stdio17LockingTextReader6__ctorMFNcSQBpQBo4FileZSQCcQCbQBy@Base 15 + _D3std5stdio17LockingTextReader6__dtorMFZv@Base 15 + _D3std5stdio17LockingTextReader6__initZ@Base 15 + _D3std5stdio17LockingTextReader8opAssignMFSQBpQBoQBlZv@Base 15 + _D3std5stdio17LockingTextReader8popFrontMFZv@Base 15 + _D3std5stdio17LockingTextReader9__xtoHashFNbNeKxSQBvQBuQBrZm@Base 15 + _D3std5stdio4File10__postblitMFNaNbNiNfZv@Base 15 + _D3std5stdio4File11ByChunkImpl11__fieldDtorMFNeZv@Base 15 + _D3std5stdio4File11ByChunkImpl11__xopEqualsMxFKxSQBvQBuQBrQBpZb@Base 15 + _D3std5stdio4File11ByChunkImpl15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio4File11ByChunkImpl5emptyMxFNbNdZb@Base 15 + _D3std5stdio4File11ByChunkImpl5frontMFNbNdZAh@Base 15 + _D3std5stdio4File11ByChunkImpl5primeMFZv@Base 15 + _D3std5stdio4File11ByChunkImpl6__ctorMFNcSQBoQBnQBkAhZSQCbQCaQBxQBv@Base 15 + _D3std5stdio4File11ByChunkImpl6__ctorMFNcSQBoQBnQBkmZSQCaQBzQBwQBu@Base 15 + _D3std5stdio4File11ByChunkImpl6__initZ@Base 15 + _D3std5stdio4File11ByChunkImpl8opAssignMFNcNjNeSQBuQBtQBqQBoZQo@Base 15 + _D3std5stdio4File11ByChunkImpl8popFrontMFZv@Base 15 + _D3std5stdio4File11ByChunkImpl9__xtoHashFNbNeKxSQBuQBtQBqQBoZm@Base 15 + _D3std5stdio4File11__xopEqualsMxFKxSQBiQBhQBeZb@Base 15 + _D3std5stdio4File12closeHandlesMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter10__postblitMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter11__fieldDtorMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter11__xopEqualsMxFKxSQCbQCaQBxQBvZb@Base 15 + _D3std5stdio4File17LockingTextWriter14__aggrPostblitMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter26highSurrogateShouldBeEmptyMFNfZv@Base 15 + _D3std5stdio4File17LockingTextWriter6__ctorMFNcNeKSQBxQBwQBtZSQCiQChQCeQCc@Base 15 + _D3std5stdio4File17LockingTextWriter6__dtorMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter6__initZ@Base 15 + _D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE@Base 15 + _D3std5stdio4File17LockingTextWriter8opAssignMFNcNjNeSQCaQBzQBwQBuZQo@Base 15 + _D3std5stdio4File17LockingTextWriter9__xtoHashFNbNeKxSQCaQBzQBwQBuZm@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTAaZQiMFNfMQkZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTAwZQiMFNfMQkZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTAxaZQjMFNfMQlZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfMaZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTwZQhMFNfMwZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTxaZQiMFNfMxaZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTxwZQiMFNfMxwZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTyaZQiMFNfMyaZv@Base 15 + _D3std5stdio4File17lockingTextWriterMFNfZSQBoQBnQBk17LockingTextWriter@Base 15 + _D3std5stdio4File19lockingBinaryWriterMFZSQBoQBnQBk__T16BinaryWriterImplVbi1ZQx@Base 15 + _D3std5stdio4File3eofMxFNaNdNeZb@Base 15 + _D3std5stdio4File4Impl6__initZ@Base 15 + _D3std5stdio4File4lockMFEQxQv8LockTypemmZv@Base 15 + _D3std5stdio4File4nameMxFNaNbNdNjNfZAya@Base 15 + _D3std5stdio4File4openMFNeAyaMAxaZv@Base 15 + _D3std5stdio4File4seekMFNeliZv@Base 15 + _D3std5stdio4File4sizeMFNdNfZm@Base 15 + _D3std5stdio4File4syncMFNeZv@Base 15 + _D3std5stdio4File4tellMxFNdNeZm@Base 15 + _D3std5stdio4File5closeMFNeZv@Base 15 + _D3std5stdio4File5errorMxFNaNbNdNeZb@Base 15 + _D3std5stdio4File5flushMFNeZv@Base 15 + _D3std5stdio4File5getFPMFNaNfZPOS4core4stdcQBl8_IO_FILE@Base 15 + _D3std5stdio4File5popenMFNfAyaMAxaZv@Base 15 + _D3std5stdio4File6__ctorMFNbNcNiNePOS4core4stdcQBp8_IO_FILEAyakbZSQCmQClQCi@Base 15 + _D3std5stdio4File6__ctorMFNcNfAyaMAxaZSQBlQBkQBh@Base 15 + _D3std5stdio4File6__dtorMFNfZv@Base 15 + _D3std5stdio4File6__initZ@Base 15 + _D3std5stdio4File6detachMFNeZv@Base 15 + _D3std5stdio4File6fdopenMFNeiMAxaAyaZv@Base 15 + _D3std5stdio4File6fdopenMFNfiMAxaZv@Base 15 + _D3std5stdio4File6filenoMxFNdNeZi@Base 15 + _D3std5stdio4File6isOpenMxFNaNbNdNfZb@Base 15 + _D3std5stdio4File6reopenMFNeAyaMAxaZv@Base 15 + _D3std5stdio4File6rewindMFNfZv@Base 15 + _D3std5stdio4File6unlockMFmmZv@Base 15 + _D3std5stdio4File7byChunkMFAhZSQBdQBcQz11ByChunkImpl@Base 15 + _D3std5stdio4File7byChunkMFmZSQBcQBbQy11ByChunkImpl@Base 15 + _D3std5stdio4File7setvbufMFNeAviZv@Base 15 + _D3std5stdio4File7setvbufMFNemiZv@Base 15 + _D3std5stdio4File7tmpfileFNfZSQBcQBbQy@Base 15 + _D3std5stdio4File7tryLockMFEQBaQz8LockTypemmZb@Base 15 + _D3std5stdio4File8clearerrMFNaNbNfZv@Base 15 + _D3std5stdio4File8initImplMFNaNbNiNfPOS4core4stdcQBr8_IO_FILEAyakbZv@Base 15 + _D3std5stdio4File8lockImplMFismmZi@Base 15 + _D3std5stdio4File8opAssignMFNcNjNfSQBhQBgQBdZQl@Base 15 + _D3std5stdio4File8wrapFileFNfPOS4core4stdcQBk8_IO_FILEZSQCcQCbQBy@Base 15 + _D3std5stdio4File9__xtoHashFNbNeKxSQBhQBgQBdZm@Base 15 + _D3std5stdio4File9resetFileMFNeAyaMAxabZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx10__aggrDtorMFZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx10__postblitMFNbNiZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx11__fieldDtorMFNeZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx11__xopEqualsMxFKxSQCkQCjQCg__TQCeVbi1ZQCmZb@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx14__aggrPostblitMFNbNiZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__ctorMFNcMKSQCfQCeQCbZSQCqQCpQCm__TQCkVbi1ZQCs@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__dtorMFNbNiZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__initZ@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx8opAssignMFNcNjSQChQCgQCd__TQCbVbi1ZQCjZQz@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx9__xtoHashFNbNeKxSQCjQCiQCf__TQCdVbi1ZQClZm@Base 15 + _D3std5stdio4File__T6readlnTAyaZQmMFNfwZQm@Base 15 + _D3std5stdio4File__T6readlnTaZQkMFNfKAawZm@Base 15 + _D3std5stdio4File__T7rawReadTaZQlMFNfAaZQd@Base 15 + _D3std5stdio4File__T7rawReadTbZQlMFNfAbZQd@Base 15 + _D3std5stdio4File__T7rawReadThZQlMFNfAhZQd@Base 15 + _D3std5stdio4File__T7rawReadTiZQlMFNfAiZQd@Base 15 + _D3std5stdio4File__T7rawReadTlZQlMFNfAlZQd@Base 15 + _D3std5stdio4File__T8writeflnTaTAyaTmTQgTQjTxlZQBbMFNfIAaQzmQBcQBfxlZv@Base 15 + _D3std5stdio4File__T8writeflnTaTAyaTmTQgTQjTxmZQBbMFNfIAaQzmQBcQBfxmZv@Base 15 + _D3std5stdio4File__T8writeflnTaTAyaTmTQgTxmZQyMFNfIAaQvmQyxmZv@Base 15 + _D3std5stdio4File__T8writeflnTaTAyaTxmTQhTQkTmZQBbMFNfIAaQzxmQBdQBgmZv@Base 15 + _D3std5stdio4File__T8writeflnTaTAyaTxmTQhTxmZQzMFNfIAaQwxmQBaxmZv@Base 15 + _D3std5stdio5lines11__fieldDtorMFNeZv@Base 15 + _D3std5stdio5lines11__xopEqualsMxFKxSQBjQBiQBfZb@Base 15 + _D3std5stdio5lines15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio5lines6__ctorMFNcNfSQBeQBd4FilewZSQBsQBrQBo@Base 15 + _D3std5stdio5lines6__initZ@Base 15 + _D3std5stdio5lines8opAssignMFNcNjNeSQBiQBhQBeZQl@Base 15 + _D3std5stdio5lines9__xtoHashFNbNeKxSQBiQBhQBeZm@Base 15 + _D3std5stdio6chunksFSQtQr4FilemZSQBfQBe10ChunksImpl@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNbNcNdNiZSQEfQEe4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNcNdZ4implSQEgQEf4File4Impl@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNcNdZ6resultSQEiQEh4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNcNdZ8spinlockOk@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNbNcNdNiZSQEhQEg4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNcNdZ4implSQEiQEh4File4Impl@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNcNdZ6resultSQEkQEj4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNcNdZ8spinlockOk@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNbNcNdNiZSQEhQEg4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNcNdZ4implSQEiQEh4File4Impl@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNcNdZ6resultSQEkQEj4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNcNdZ8spinlockOk@Base 15 + _D3std5stdio__T12trustedFreadTaZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAaZm@Base 15 + _D3std5stdio__T12trustedFreadTbZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAbZm@Base 15 + _D3std5stdio__T12trustedFreadThZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAhZm@Base 15 + _D3std5stdio__T12trustedFreadTiZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAiZm@Base 15 + _D3std5stdio__T12trustedFreadTlZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAlZm@Base 15 + _D3std5stdio__T13trustedFwriteTaZQsFNbNiNePOS4core4stdcQBx8_IO_FILExAaZm@Base 15 + _D3std5stdio__T6_fopenTAyaTAxaZQqFNbNiNfQrQpZPOS4core4stdcQCa8_IO_FILE@Base 15 + _D3std5stdio__T6_fopenTAyaTAxaZQqFQlQjZ10_fopenImplFNbNiNeMPxaMQeZPOS4core4stdcQCv8_IO_FILE@Base 15 + _D3std5stdio__T6_popenTAyaTAxaZQqFNbNiNeQrQpZ9popenImplFNbNiNePxaQdZPOS4core4stdcQCx8_IO_FILE@Base 15 + _D3std5stdio__T6_popenTAyaTAxaZQqFNbNiNeQrQpZPOS4core4stdcQCa8_IO_FILE@Base 15 + _D3std6base6411__moduleRefZ@Base 15 + _D3std6base6412__ModuleInfoZ@Base 15 + _D3std6base6415Base64Exception6__ctorMFNaNbNfAyaQdmZCQBzQByQBu@Base 15 + _D3std6base6415Base64Exception6__initZ@Base 15 + _D3std6base6415Base64Exception6__vtblZ@Base 15 + _D3std6base6415Base64Exception7__ClassZ@Base 15 + _D3std6base64__T10Base64ImplVai43Vai47Vai61Z12decodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai43Vai47Vai61Z12encodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai43Vai47Vai61Z9DecodeMapyG256i@Base 15 + _D3std6base64__T10Base64ImplVai43Vai47Vai61Z9EncodeMapyAa@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai0Z12decodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai0Z12encodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai0Z9DecodeMapyG256i@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai0Z9EncodeMapyAa@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai61Z12decodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai61Z12encodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai61Z9DecodeMapyG256i@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai61Z9EncodeMapyAa@Base 15 + _D3std6bigint11__moduleRefZ@Base 15 + _D3std6bigint12__ModuleInfoZ@Base 15 + _D3std6bigint15toDecimalStringFNaNbNfxSQBlQBk6BigIntZAya@Base 15 + _D3std6bigint5toHexFNaNfxSQyQw6BigIntZAya@Base 15 + _D3std6bigint6BigInt10uintLengthMxFNaNbNdNiNfZm@Base 15 + _D3std6bigint6BigInt11__xopEqualsMxFKxSQBlQBkQBgZb@Base 15 + _D3std6bigint6BigInt11ulongLengthMxFNaNbNdNiNfZm@Base 15 + _D3std6bigint6BigInt14checkDivByZeroMxFNaNbNlNfZv@Base 15 + _D3std6bigint6BigInt5opCmpMxFNaNbNiNfKxSQBmQBlQBhZi@Base 15 + _D3std6bigint6BigInt5toIntMxFNaNbNiNfZi@Base 15 + _D3std6bigint6BigInt6__initZ@Base 15 + _D3std6bigint6BigInt6isZeroMxFNaNbNiNlNfZb@Base 15 + _D3std6bigint6BigInt6negateMFNaNbNiNlNfZv@Base 15 + _D3std6bigint6BigInt6toHashMxFNaNbNiNfZm@Base 15 + _D3std6bigint6BigInt6toLongMxFNaNbNiNfZl@Base 15 + _D3std6bigint6BigInt8toStringMxFMDFMAxaZvAyaZv@Base 15 + _D3std6bigint6BigInt8toStringMxFMDFMAxaZvMKxSQBr6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6bigint6BigInt__T10opOpAssignVAyaa1_25TSQBsQBrQBnZQBhMFNaNbNjNlNfQBaZQBe@Base 15 + _D3std6bigint6BigInt__T10opOpAssignVAyaa1_2aTSQBsQBrQBnZQBhMFNaNbNjNlNfQBaZQBe@Base 15 + _D3std6bigint6BigInt__T10opOpAssignVAyaa2_3e3eTiZQBaMFNaNbNjNlNfiZSQCnQCmQCi@Base 15 + _D3std6bigint6BigInt__T5opCmpHTSQBeQBdQzZQsMxFNaNbNiNfxSQCcQCbQBxZi@Base 15 + _D3std6bigint6BigInt__T6__ctorTiZQkMFNaNbNcNfiZSQBuQBtQBp@Base 15 + _D3std6bigint6BigInt__T6opCastHTbZQlMxFNaNbNiNfZb@Base 15 + _D3std6bigint6BigInt__T8opAssignHTSQBhQBgQBcZQwMFNaNbNiNfQxZQBa@Base 15 + _D3std6bigint6BigInt__T8opAssignTiZQmMFNaNbNfiZSQBuQBtQBp@Base 15 + _D3std6bigint6BigInt__T8opBinaryVAyaa1_25TSQBpQBoQBkZQBeMxFNaNbNjNlNfQBbZQBf@Base 15 + _D3std6bigint6BigInt__T8opBinaryVAyaa1_2aTSQBpQBoQBkZQBeMxFNaNbNjNlNfQBbZQBf@Base 15 + _D3std6bigint6BigInt__T8opEqualsZQkMxFNaNbNiNfKxSQBvQBuQBqZb@Base 15 + _D3std6bigint6BigInt__T8toStringTDFMAxaZvZQtMxFMKQqAyaZv@Base 15 + _D3std6bigint6BigInt__T8toStringTDFMAxaZvZQtMxFMKQqMKxSQCb6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6bigint6BigInt__T8toStringTSQBg5array__T8AppenderTAyaZQoZQBoMxFNaNfMKQBqMKxSQDc6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6bigint6BigInt__T8toStringTSQBg5array__T8AppenderTAyaZQoZQBoMxFNaNfMKQBqQwZv@Base 15 + _D3std6bigint6divModFNaNbNfxSQBbQBa6BigIntxQpJSQBtQBsQsJQkZv@Base 15 + _D3std6bigint6powmodFNaNbNfSQBaQz6BigIntQnQpZQs@Base 15 + _D3std6bigint__T9absUnsignTiZQnFNaNbNiNfiZk@Base 15 + _D3std6digest10murmurhash11__moduleRefZ@Base 15 + _D3std6digest10murmurhash12__ModuleInfoZ@Base 15 + _D3std6digest11__moduleRefZ@Base 15 + _D3std6digest12__ModuleInfoZ@Base 15 + _D3std6digest14hexDigitToByteFNaNbNiNfwZ18hexDigitToByteImplFNaNbNiNfwZi@Base 15 + _D3std6digest14hexDigitToByteFNaNbNiNfwZh@Base 15 + _D3std6digest2md11__moduleRefZ@Base 15 + _D3std6digest2md12__ModuleInfoZ@Base 15 + _D3std6digest2md3MD51FFNaNbNiNfkkkZk@Base 15 + _D3std6digest2md3MD51GFNaNbNiNfkkkZk@Base 15 + _D3std6digest2md3MD51HFNaNbNiNfkkkZk@Base 15 + _D3std6digest2md3MD51IFNaNbNiNfkkkZk@Base 15 + _D3std6digest2md3MD52FFFNaNbNiNfKkkkkkkkZv@Base 15 + _D3std6digest2md3MD52GGFNaNbNiNfKkkkkkkkZv@Base 15 + _D3std6digest2md3MD52HHFNaNbNiNfKkkkkkkkZv@Base 15 + _D3std6digest2md3MD52IIFNaNbNiNfKkkkkkkkZv@Base 15 + _D3std6digest2md3MD53putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest2md3MD55startMFNaNbNiNfZv@Base 15 + _D3std6digest2md3MD56__initZ@Base 15 + _D3std6digest2md3MD56finishMFNaNbNiNeZG16h@Base 15 + _D3std6digest2md3MD58_paddingyG64h@Base 15 + _D3std6digest2md3MD59transformMFNaNbNiPxG64hZv@Base 15 + _D3std6digest3crc11__moduleRefZ@Base 15 + _D3std6digest3crc12__ModuleInfoZ@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx4peekMxFNaNbNiNfZG4h@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx5startMFNaNbNiNfZv@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6__initZ@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6finishMFNaNbNiNfZG4h@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6tablesyG8G256k@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg4peekMxFNaNbNiNfZG8h@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg5startMFNaNbNiNfZv@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6__initZ@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6finishMFNaNbNiNfZG8h@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6tablesyG8G256m@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg4peekMxFNaNbNiNfZG8h@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg5startMFNaNbNiNfZv@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6__initZ@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6finishMFNaNbNiNfZG8h@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6tablesyG8G256m@Base 15 + _D3std6digest3crc__T9genTablesTkZQnFNaNbNiNfkZG8G256k@Base 15 + _D3std6digest3crc__T9genTablesTmZQnFNaNbNiNfmZG8G256m@Base 15 + _D3std6digest3sha11__moduleRefZ@Base 15 + _D3std6digest3sha12__ModuleInfoZ@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs6finishMFNaNbNiNeZG28h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs9constantsyG80m@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs6finishMFNaNbNiNeZG32h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs9constantsyG80m@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs6finishMFNaNbNiNeZG48h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs9constantsyG80m@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs6finishMFNaNbNiNeZG64h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs9constantsyG80m@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr6finishMFNaNbNiNeZG20h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr9constantsyG64k@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr6finishMFNaNbNiNeZG28h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr9constantsyG64k@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr__T12T_SHA2_16_79TkZQrFNaNbNiNfiKG16kkkkKkkkkKkkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr__T13transformSHA2TkZQsFNaNbNiPG8kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr6finishMFNaNbNiNeZG32h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr9constantsyG64k@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr__T12T_SHA2_16_79TkZQrFNaNbNiNfiKG16kkkkKkkkkKkkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr__T13transformSHA2TkZQsFNaNbNiPG8kPxG64hZv@Base 15 + _D3std6digest4hmac11__moduleRefZ@Base 15 + _D3std6digest4hmac12__ModuleInfoZ@Base 15 + _D3std6digest6Digest11__InterfaceZ@Base 15 + _D3std6digest6DigestQoMFNbNeAxAvXAh@Base 15 + _D3std6digest6ripemd11__moduleRefZ@Base 15 + _D3std6digest6ripemd12__ModuleInfoZ@Base 15 + _D3std6digest6ripemd9RIPEMD1601FFNaNbNiNfkkkZk@Base 15 + _D3std6digest6ripemd9RIPEMD1601GFNaNbNiNfkkkZk@Base 15 + _D3std6digest6ripemd9RIPEMD1601HFNaNbNiNfkkkZk@Base 15 + _D3std6digest6ripemd9RIPEMD1601IFNaNbNiNfkkkZk@Base 15 + _D3std6digest6ripemd9RIPEMD1601JFNaNbNiNfkkkZk@Base 15 + _D3std6digest6ripemd9RIPEMD1602FFFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1602GGFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1602HHFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1602IIFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1602JJFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603FFFFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603GGGFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603HHHFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603IIIFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603JJJFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest6ripemd9RIPEMD1605startMFNaNbNiNfZv@Base 15 + _D3std6digest6ripemd9RIPEMD1606__initZ@Base 15 + _D3std6digest6ripemd9RIPEMD1606finishMFNaNbNiNeZG20h@Base 15 + _D3std6digest6ripemd9RIPEMD1608_paddingyG64h@Base 15 + _D3std6digest6ripemd9RIPEMD1609transformMFNaNbNiPxG64hZv@Base 15 + _D3std6digest__T11toHexStringVEQBdQBc5Orderi1VEQBt5ascii10LetterCasei0ZQCdFNaNbNfIAhZAya@Base 15 + _D3std6digest__T11toHexStringVEQBdQBc5Orderi1Vmi16VEQBy5ascii10LetterCasei0ZQCiFNaNbNiNfxG16hZG32a@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6__ctorMFNaNbNiNfZCQCpQCo__TQCkTQByZQCs@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe4peekMxFNaNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe4peekMxFNaNeAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6__ctorMFNaNbNiNfZCQDoQDn__TQDjTQCxZQDr@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo4peekMxFNaNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo4peekMxFNaNeAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6__ctorMFNaNbNiNfZCQDyQDx__TQDtTQDhZQEb@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo4peekMxFNaNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo4peekMxFNaNeAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6__ctorMFNaNbNiNfZCQDyQDx__TQDtTQDhZQEb@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6__ctorMFNaNbNiNfZCQDiQDh__TQDdTQCrZQDl@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6__ctorMFNaNbNiNfZCQDiQDh__TQDdTQCrZQDl@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6__ctorMFNaNbNiNfZCQDiQDh__TQDdTQCrZQDl@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6__ctorMFNaNbNiNfZCQCzQCy__TQCuTQCiZQDc@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp7__ClassZ@Base 15 + _D3std6digest__T15toHexStringImplVEQBhQBg5Orderi1VEQBx5ascii10LetterCasei0TAxhTAaZQCoFNaNbNiNfMKxAhKQvZv@Base 15 + _D3std6digest__T15toHexStringImplVEQBhQBg5Orderi1VEQBx5ascii10LetterCasei0TG16hTG32aZQCrFNaNbNiNfMKxG16hKQzZv@Base 15 + _D3std6digest__T7asArrayVmi16ThZQqFNaNbNcNiKAhAyaZG16h@Base 15 + _D3std6digest__T7asArrayVmi20ThZQqFNaNbNcNiKAhAyaZG20h@Base 15 + _D3std6digest__T7asArrayVmi28ThZQqFNaNbNcNiKAhAyaZG28h@Base 15 + _D3std6digest__T7asArrayVmi32ThZQqFNaNbNcNiKAhAyaZG32h@Base 15 + _D3std6digest__T7asArrayVmi48ThZQqFNaNbNcNiKAhAyaZG48h@Base 15 + _D3std6digest__T7asArrayVmi4ThZQpFNaNbNcNiKAhAyaZG4h@Base 15 + _D3std6digest__T7asArrayVmi64ThZQqFNaNbNcNiKAhAyaZG64h@Base 15 + _D3std6digest__T7asArrayVmi8ThZQpFNaNbNcNiKAhAyaZG8h@Base 15 + _D3std6format11__moduleRefZ@Base 15 + _D3std6format12__ModuleInfoZ@Base 15 + _D3std6format15FormatException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCsQCo@Base 15 + _D3std6format15FormatException6__ctorMFNaNbNiNfZCQBvQBuQBq@Base 15 + _D3std6format15FormatException6__initZ@Base 15 + _D3std6format15FormatException6__vtblZ@Base 15 + _D3std6format15FormatException7__ClassZ@Base 15 + _D3std6format4read11__moduleRefZ@Base 15 + _D3std6format4read12__ModuleInfoZ@Base 15 + _D3std6format4spec11__moduleRefZ@Base 15 + _D3std6format4spec12__ModuleInfoZ@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp11__xopEqualsMxFKxSQCdQCcQBy__TQBwTaZQCcZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp11flSeparatorMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp11flSeparatorMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp12getCurFmtStrMxFNaNfZAya@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp16separatorCharPosMFNaNbNiNfZi@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp16separatorCharPosMFNaNbNiNfiZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6__ctorMFNaNbNcNiNfIAaZSQCiQChQCd__TQCbTaZQCh@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6__initZ@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6fillUpMFNaNlNfZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flDashMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flDashMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flHashMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flHashMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flPlusMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flPlusMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flZeroMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flZeroMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp7flEqualMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp7flEqualMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp7flSpaceMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp7flSpaceMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp8toStringMxFNaNfZAya@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp9__xtoHashFNbNeKxSQCcQCbQBx__TQBvTaZQCbZm@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTDFMAxaZvZQBdMFNlKQrZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5array__T15InPlaceAppenderTAyaZQwZQCgMFNaNlNfKQByZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5array__T8AppenderTAyaZQoZQByMFNaNlNfKQBqZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5array__T8AppenderTyAaZQoZQByMFNaNlNfKQBqZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5stdio4File17LockingTextWriterZQCdMFNlNfKQBtZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQCh8NoOpSinkZQBlMFNaNlNfKQBdZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQChQCd__T10singleSpecTyaZQqFAyaZ16DummyOutputRangeZQCxMFNaNlNfKQCpZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQCh__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkZQCnMFNaNlNfKQCfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQCh__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkZQDbMFNaNlNfKQCtZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T8toStringTSQBy5array__T8AppenderTAyaZQoZQBoMxFNaNfKQBpZv@Base 15 + _D3std6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRange6__initZ@Base 15 + _D3std6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRange__T3putTaZQhMFNaNbNiNfMxAaZv@Base 15 + _D3std6format4spec__T10singleSpecTyaZQqFNaNfAyaZSQBvQBuQBq__T10FormatSpecTaZQp@Base 15 + _D3std6format5write11__moduleRefZ@Base 15 + _D3std6format5write12__ModuleInfoZ@Base 15 + _D3std6format5write__T11formatValueTDFNaNbNfAxaZvTxeTaZQBhFNaNfKQBcKxeMKxSQCuQCt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTAxhTaZQCgFNaNfKQCbKQtMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTQhTaZQCfFNaNfKQCaKQzMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTkTaZQCeFNaNfKQBzKkMKxSQDqQDp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTwTaZQCeFNaNfKQBzKwMKxSQDqQDp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTwTaZQCeFNaNfKQBzwMKxSQDpQDo4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAAyaTaZQCiFNaNfKQCdKxQvMKxSQDwQDv4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxACQCx3zip13ArchiveMemberTaZQDcFNaNfKQCxKxQBpMKxSQErQEq4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxASQCx6socket11AddressInfoTaZQDdFNfKQCwKxQBoMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAaTaZQCgFNaNfKQCbKxQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAyaTaZQChFNaNfKQCcKxQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAyuTaZQChFNaNfKQCcKxQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAywTaZQChFNaNfKQCcKxQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxCQCw3zip13ArchiveMemberTaZQDbFNaNfKQCwKxQBoMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxCQCw6socket7AddressTaZQCxFNfKQCqKxQBiMKxSQEkQEj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxEQCw6socket10SocketTypeTaZQDbFNaNfKQCwKxQBoMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxEQCw6socket12ProtocolTypeTaZQDdFNaNfKQCyKxQBqMKxSQEsQEr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxEQCw6socket13AddressFamilyTaZQDeFNaNfKQCzKxQBrMKxSQEtQEs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxSQCw6socket11AddressInfoTaZQDcFNfKQCvKxQBnMKxSQEpQEo4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxaTaZQCfFNaNfKQCaKxaMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxhTaZQCfFNaNfKQCaKxhMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTyaTaZQCfFNaNfKQCaKyaMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTyuTaZQCfFNaNfKQCaKyuMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTywTaZQCfFNaNfKQCaKywMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAaTaZQBxFNaNfKQBsKQsMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAxaTaZQByFNaNfKQBtKQtMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAxhTaZQByFNaNfKQBtKQtMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAyAaTaZQBzFNaNfKQBuKQuMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTC14TypeInfo_ClassTaZQCmFNaNfKQChKQBhMKxSQEaQDz4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTEQCn3net7isemail15EmailStatusCodeTaZQDcFNaNfKQCxKQBxMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTEQCn8datetime4date5MonthTaZQCtFNaNfKQCoKQBoMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTPSQCo11parallelism12AbstractTaskTaZQDbFNaNfKQCwKQBwMKxSQEpQEo4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTPvTaZQBxFNaNfKQBsKQsMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTPxSQCpQCo4spec__T10FormatSpecTaZQpTaZQDdFNaNfKQCyQBxMKxQCbZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTQhTaZQBxFNaNfKQBsKQzMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTSQCn11concurrency3TidTaZQCqFNaNfKQClKQBlMKxSQEeQEd4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTSQCn4path__T16asNormalizedPathTSQDs5range__T5chainTSQEm3utf__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplTSQGmQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtTaZQIjFNaNfKQIeKQHeMKxSQJxQJw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTSQCn5range__T5chainTSQDh3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFgQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQGpFNaNfKQGkKQFkMKxSQIdQIc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTaTaZQBwFNaNfKQBrKaMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTaTaZQBwFNaNfKQBraMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTbTaZQBwFNaNfKQBrKbMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTbTaZQBwFNaNfKQBrbMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoThTaZQBwFNaNfKQBrKhMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTiTaZQBwFNaNfKQBrKiMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTkTaZQBwFNaNfKQBrKkMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTmTaZQBwFNaNfKQBrKmMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTwTaZQBwFNaNfKQBrKwMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTwTaZQBwFNaNfKQBrwMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxAaTaZQByFNaNfKQBtKxQtMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxEQCo8datetime4date5MonthTaZQCuFNaNfKQCpKxQBpMKxSQEjQEi4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxaTaZQBxFNaNfKQBsKxaMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxaTaZQBxFNaNfKQBsxaMKxSQDjQDi4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxhTaZQBxFNaNfKQBsKxhMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxiTaZQBxFNaNfKQBsKxiMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxkTaZQBxFNaNfKQBsKxkMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxsTaZQBxFNaNfKQBsKxsMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxtTaZQBxFNaNfKQBsKxtMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTyAaTaZQByFNaNfKQBtKyQtMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTyaTaZQBxFNaNfKQBsKyaMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTymTaZQBxFNaNfKQBsKymMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTEQCn5regex8internal2ir2IRTaZQCuFNaNfKQCpKQBpMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTEQCn6logger4core8LogLevelTaZQCuFNaNfKQCpKQBpMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTEQCn6socket12SocketOptionTaZQCuFNaNfKQCpKQBpMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTkTaZQBwFNaNfKQBrKkMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTwTaZQBwFNaNfKQBrKwMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTwTaZQBwFNaNfKQBrwMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTyaTaZQBxFNaNfKQBsKyaMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTAxaTaZQCdFNfKQBwKQrMKxSQDoQDn4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDoQDn4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTEQCs8datetime4date5MonthTaZQCyFNfKQCrKQBmMKxSQEkQEj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterThTaZQCbFNfKQBuKhMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTiTaZQCbFNfKQBuKiMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTkTaZQCbFNfKQBuKkMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTmTaZQCbFNfKQBuKmMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTsTaZQCbFNfKQBuKsMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTwTaZQCbFNfKQBuKwMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTwTaZQCbFNfKQBuwMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTxaTaZQCcFNfKQBvKxaMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTxlTaZQCcFNfKQBvKxlMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTxmTaZQCcFNfKQBvKxmMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTyaTaZQCcFNfKQBvKyaMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTmTaZQBjFNaNfKQBeKmMKxSQCvQCu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTxdTaZQBkFNaNfKQBfKxdMKxSQCxQCw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTxhTaZQBkFNaNfKQBfKxhMKxSQCxQCw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTymTaZQBkFNaNfKQBfKymMKxSQCxQCw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxdTaZQCmFNaNfKQChKxdMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTkTaZQCzFNaNfKQCuKkMKxSQElQEk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTykTaZQDaFNaNfKQCvKykMKxSQEnQEm4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T15InPlaceAppenderTAyaZQwTaTAxhZQCjFNaNfKQCbMxAaQuZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T15InPlaceAppenderTAyaZQwTaTkZQChFNaNfKQBzMxAakZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAaTPvZQCdFNaNfKQBvMxAaQwQvZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAxaTQeZQCeFNaNfKQBwMxAaQxQzZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAxhZQCbFNaNfKQBtMxAaQuZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAyAaZQCcFNaNfKQBuMxAaQvZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTC14TypeInfo_ClassTkTkZQCtFNaNfKQClMxAaQBmkkZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTEQCs8datetime4date5MonthZQCwFNaNfKQCoMxAaQBpZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTPvZQCaFNaNfKQBsMxAaQtZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTQmTmZQCfFNaNfKQBxMxAaQBhQBkmZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTQmZQCdFNaNfKQBvMxAaQBfQBiZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTxkTQpZQCgFNaNfKQByMxAaQBixkQBnZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTxkTkZQCfFNaNfKQBxMxAaQBhxkkZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTxkZQCdFNaNfKQBvMxAaQBfxkZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjZQCaFNaNfKQBsMxAaQBcZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTbTQlTQoTEQDa3net7isemail15EmailStatusCodeZQDnFNaNfKQDfMxAabQCqQCtQCfZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTiTEQCu8datetime4date5MonthTiZQDaFNaNfKQCsMxAaiQBsiZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTiTiZQCbFNaNfKQBtMxAaiiZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTiZQBzFNaNfKQBrMxAaiZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTkZQBzFNaNfKQBrMxAakZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTmTmTymZQCeFNaNfKQBwMxAammymZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTmTmZQCbFNaNfKQBtMxAammZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTmZQBzFNaNfKQBrMxAamZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxhTxhTxhTxhZQCjFNaNfKQCbMxAaxhxhxhxhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxhTxhTxhZQCgFNaNfKQByMxAaxhxhxhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxsTQmTxhZQCgFNaNfKQByMxAaxsQBkxhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxsTxEQCw8datetime4date5MonthTxhZQDdFNaNfKQCvMxAaxsxQBvxhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxsZQCaFNaNfKQBsMxAaxsZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxtTQmTxtTxtZQCjFNaNfKQCbMxAaxtQBnxtxtZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTyAaZQoTaTkZQBzFNaNfKQBrMxAakZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAxaZQCgFNfQBvMxAaQrZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTQeTiTQjZQCoFNfKQCeMxAaQBaQBdiQBhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTmTQgTQjTxlZQCrFNfKQChMxAaQBdmQBhQBkxlZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTmTQgTQjTxmZQCrFNfKQChMxAaQBdmQBhQBkxmZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTmTQgTxmZQCoFNfKQCeMxAaQBamQBexmZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTxmTQhTQkTmZQCrFNfKQChMxAaQBdxmQBiQBlmZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTxmTQhTxmZQCpFNfKQCfMxAaQBbxmQBgxmZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaZQCgFNfKQBwMxAaQsZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTkZQCeFNfKQBuMxAakZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTmTAyaTmTQgTmTQlTQoZQCvFNfKQClMxAamQBgmQBkmQBoQBrZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTsTEQCz8datetime4date5MonthThThThThTxlZQDoFNfKQDeMxAasQBzhhhhxlZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTmTmTymZQBrFNaNfQBiMxAammymZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTmTmZQBoFNaNfQBfMxAammZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTmZQBmFNaNfQBdMxAamZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTxdZQBnFNaNfQBeMxAaxdZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTxhTxhTxhZQBtFNaNfQBkMxAaxhxhxhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTaTxdZQCpFNaNfKQChMxAaxdZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaTykTykTkTkTkZQDmFNaNfKQDeMxAaykykkkkZk@Base 15 + _D3std6format5write__T14formattedWriteVAyaa13_54253032642530326425303264TSQCu5array__T8AppenderTQCfZQoTxhTxhTxhZQDmFNaNfKQBwxhxhxhZk@Base 15 + _D3std6format5write__T14formattedWriteVAyaa15_20253032643a253032643a25303264TSQCy5array__T8AppenderTQCjZQoTxhTxhTxhZQDqFNaNfKQBwxhxhxhZk@Base 15 + _D3std6format5write__T14formattedWriteVAyaa15_54253032643a253032643a25303264TSQCy5array__T8AppenderTQCjZQoTxhTxhTxhZQDqFNaNfKQBwxhxhxhZk@Base 15 + _D3std6format8NoOpSink6__initZ@Base 15 + _D3std6format8NoOpSink__T3putTAaZQiMFNaNbNiNfMxAaZv@Base 15 + _D3std6format8NoOpSink__T3putTAxaZQjMFNaNbNiNfMxAaZv@Base 15 + _D3std6format8NoOpSink__T3putTAyaZQjMFNaNbNiNfMxAyaZv@Base 15 + _D3std6format8NoOpSink__T3putTaZQhMFNaNbNiNfMxaZv@Base 15 + _D3std6format8NoOpSink__T3putTwZQhMFNaNbNiNfMxwZv@Base 15 + _D3std6format8internal4read11__moduleRefZ@Base 15 + _D3std6format8internal4read12__ModuleInfoZ@Base 15 + _D3std6format8internal5write10baseOfSpecFNaNfIaZk@Base 15 + _D3std6format8internal5write11__moduleRefZ@Base 15 + _D3std6format8internal5write12__ModuleInfoZ@Base 15 + _D3std6format8internal5write12hasPreviewInyb@Base 15 + _D3std6format8internal5write__T10formatCharTSQBr5array__T15InPlaceAppenderTAyaZQwZQBzFNaNfKQBvIwIaZv@Base 15 + _D3std6format8internal5write__T10formatCharTSQBr5array__T8AppenderTAyaZQoZQBrFNaNfKQBnIwIaZv@Base 15 + _D3std6format8internal5write__T10formatCharTSQBr5array__T8AppenderTyAaZQoZQBrFNaNfKQBnIwIaZv@Base 15 + _D3std6format8internal5write__T10formatCharTSQBr5stdio4File17LockingTextWriterZQBwFNfKQBqIwIaZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxAyaTaZQCiFNaNfKQCdKQvMKxSQEeQEd4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxCQDg3zip13ArchiveMemberTaZQDcFNaNfKQCxKQBpMKxSQEzQEy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxSQDg6socket11AddressInfoTaZQDdFNfKQCwKQBoMKxSQEyQEx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxaTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxhTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAyuTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAywTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTQhTaZQCfFNaNfKQCaKQzMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTAxaTaZQByFNaNfKQBtKQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTAxhTaZQByFNaNfKQBtKQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTAyAaTaZQBzFNaNfKQBuKQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTQhTaZQBxFNaNfKQBsKQzMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTSQCw4path__T16asNormalizedPathTSQEb5range__T5chainTSQEv3utf__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplTSQGvQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtTaZQIjFNaNfKQIeKQHeMKxSQKgQKf4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTSQCw5range__T5chainTSQDq3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFpQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQGpFNaNfKQGkKQFkMKxSQImQIl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTyAaZQoTAyaTaZQByFNaNfKQBtKQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5stdio4File17LockingTextWriterTAxaTaZQCdFNfKQBwKQrMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12formatObjectTSQBt5array__T15InPlaceAppenderTAyaZQwTxCQDg6socket7AddressTaZQCyFNfKQCqKxQBiMKxSQEuQEt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12formatObjectTSQBt5array__T8AppenderTAyaZQoTC14TypeInfo_ClassTaZQCnFNaNbNfKQCjKQBjMKxSQEmQEl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12formatObjectTSQBt5array__T8AppenderTAyaZQoTSQCx11concurrency3TidTaZQCrFNaNfKQClKQBlMKxSQEoQEn4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAaTAyaTQeTQhTaZQBsFNaNfKQBmQBbQBbQBeQBhMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAaTQdTQgTQjTaZQBrFNaNfKQBlQBaQBdQBgQBjMKxSQDwQDv4spec__T10FormatSpecTaZQpEQFcQFbQExQEr13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTAaTQdTQgTaZQBsFNaNfKQBmQBbQBaQBdQBgMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTAaTQdTQkTaZQBsFNaNfKQBmQBbQBaQBdQBkMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTQeTQhTQkTaZQBsFNaNfKQBmQBbQBeQBhQBkMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTQeTQhTaZQBpFNaNfKQBjQyQBaQBdMKxSQDqQDp4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTQdTQgTQjTaZQCpFNaNfKQCjQBaQBdQBgQBjMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTQdTQnTQqTaZQCpFNaNfKQCjQBaQBdQBnQBqMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTQdTQnTaZQCmFNaNfKQCgQxQzQBiMKxSQEmQEl4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTaZQCgFNaNfKQCaQrMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAuTaZQCgFNaNfKQCaQrMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAwTaZQCgFNaNfKQCaQrMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAxaTaZQChFNaNfKQCbQsMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAyuTaZQChFNaNfKQCbQsMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAywTaZQChFNaNfKQCbQsMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAaTaZQCmFNaNfKQCgQBeQBhQxMKxSQEnQEm4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAuTaZQCmFNaNfKQCgQBeQBhQxMKxSQEnQEm4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAwTaZQCmFNaNfKQCgQBeQBhQxMKxSQEnQEm4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAxaTaZQCnFNaNfKQChQBfQBiQyMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAyuTaZQCnFNaNfKQChQBfQBiQyMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAywTaZQCnFNaNfKQChQBfQBiQyMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAaTaZQCpFNaNfKQCjQBhQBkQBnQBaMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAuTaZQCpFNaNfKQCjQBhQBkQBnQBaMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAwTaZQCpFNaNfKQCjQBhQBkQBnQBaMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAxaTaZQCqFNaNfKQCkQBiQBlQBoQBbMKxSQEvQEu4spec__T10FormatSpecTaZQpEQGbQGaQFwQFq13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAyuTaZQCqFNaNfKQCkQBiQBlQBoQBbMKxSQEvQEu4spec__T10FormatSpecTaZQpEQGbQGaQFwQFq13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAywTaZQCqFNaNfKQCkQBiQBlQBoQBbMKxSQEvQEu4spec__T10FormatSpecTaZQpEQGbQGaQFwQFq13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTQqTaZQCpFNaNfKQCjQBhQBkQBnQBqMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTaZQCmFNaNfKQCgQBeQBhQBkMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTaZQCgFNaNfKQCaQyMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTQdTQgTQjTaZQChFNaNfKQCbQBaQBdQBgQBjMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTQdTQnTQqTaZQChFNaNfKQCbQBaQBdQBnQBqMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTQdTQnTaZQCeFNaNfKQByQxQzQBiMKxSQEeQEd4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAwTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAxaTaZQBzFNaNfKQBtQsMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTAaTaZQCeFNaNfKQByQBeQBhQxMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTAwTaZQCeFNaNfKQByQBeQBhQxMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTAxaTaZQCfFNaNfKQBzQBfQBiQyMKxSQEgQEf4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTAaTaZQChFNaNfKQCbQBhQBkQBnQBaMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTAwTaZQChFNaNfKQCbQBhQBkQBnQBaMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTAxaTaZQCiFNaNfKQCcQBiQBlQBoQBbMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTQqTaZQChFNaNfKQCbQBhQBkQBnQBqMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTaZQCeFNaNfKQByQBeQBhQBkMKxSQEgQEf4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTaZQByFNaNfKQBsQyMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTQdTAyaTQeTaZQCiFNaNfKQCcQBbQBeQBbQBeMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTQdTAyaTaZQCfFNaNfKQBzQyQBaQxMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTQdTQgTQjTaZQChFNaNfKQCbQBaQBdQBgQBjMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAwTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTAaTaZQCfFNaNfKQBzQyQBaQwMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTAwTaZQCfFNaNfKQBzQyQBaQwMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTAaTaZQCiFNaNfKQCcQBbQBeQBhQBaMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTAwTaZQCiFNaNfKQCcQBbQBeQBhQBaMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTQkTaZQCiFNaNfKQCcQBbQBeQBhQBkMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTaZQCfFNaNfKQBzQyQBaQBdMKxSQEgQEf4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTaZQBzFNaNfKQBtQsMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTQdTAyaTQeTaZQCnFNfKQCfQzQBbQyQBaMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTQdTAyaTaZQCkFNfKQCcQwQyQuMKxSQEhQEg4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTQdTQgTQjTaZQCmFNfKQCeQyQBaQBdQBgMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTaZQCdFNfKQBvQpMKxSQDwQDv4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAwTaZQCdFNfKQBvQpMKxSQDwQDv4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAxaTaZQCeFNfKQBwQqMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTAaTaZQCkFNfKQCcQwQyQtMKxSQEhQEg4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTAwTaZQCkFNfKQCcQwQyQtMKxSQEhQEg4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTAxaTaZQClFNfKQCdQxQzQuMKxSQEiQEh4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTAaTaZQCnFNfKQCfQzQBbQBeQxMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTAwTaZQCnFNfKQCfQzQBbQBeQxMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTAxaTaZQCoFNfKQCgQBaQBdQBgQzMKxSQEqQEp4spec__T10FormatSpecTaZQpEQFwQFvQFrQFl13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTQkTaZQCnFNfKQCfQzQBbQBeQBhMKxSQEpQEo4spec__T10FormatSpecTaZQpEQFvQFuQFqQFk13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTaZQCkFNfKQCcQwQyQBaMKxSQEiQEh4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTAyaTQeTQhTaZQBvFNaNfKQBpQBbQBbQBeQBhMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTQdTAyaTQeTaZQBvFNaNfKQBpQBbQBeQBbQBeMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTQdTAyaTaZQBsFNaNfKQBmQyQBaQxMKxSQDsQDr4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTQdTQgTQjTaZQBuFNaNfKQBoQBaQBdQBgQBjMKxSQDzQDy4spec__T10FormatSpecTaZQpEQFfQFeQFaQEu13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTAaTQdTQgTaZQBvFNaNfKQBpQBbQBaQBdQBgMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTAaTQdTQkTaZQBvFNaNfKQBpQBbQBaQBdQBkMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTQeTQhTQkTaZQBvFNaNfKQBpQBbQBeQBhQBkMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTQeTQhTaZQBsFNaNfKQBmQyQBaQBdMKxSQDtQDs4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQeTQhTQkTaZQCxFNaNfKQCrQBbQBeQBhQBkMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQeTQhTaZQCuFNaNfKQCoQyQBaQBdMKxSQEvQEu4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQtTQwTQkTaZQCxFNaNfKQCrQBbQBtQBwQBkMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQtTQwTQzTaZQCxFNaNfKQCrQBbQBtQBwQBzMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpTAyaTQeTQhTaZQCxFNaNfKQCrQBqQBbQBeQBhMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpTQsTQvTQyTaZQCwFNaNfKQCqQBpQBsQBvQByMKxSQFbQFa4spec__T10FormatSpecTaZQpEQGhQGgQGcQFw13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuTQxTAyaTQeTaZQDlFNaNfKQDfQBvQByQBbQBeMKxSQFqQFp4spec__T10FormatSpecTaZQpEQGwQGvQGrQGl13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuTQxTAyaTaZQDiFNaNfKQDcQBsQBvQyMKxSQFjQFi4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuTQxTQBaTQBeTaZQDmFNaNfKQDgQBwQBzQCcQCfMKxSQFrQFq4spec__T10FormatSpecTaZQpEQGxQGwQGsQGm13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTQhTaZQChFNaNfKQCaQyMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTwTaZQCgFNaNfKQBzwMKxSQEaQDz4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxCQDh3zip13ArchiveMemberTaZQDdFNaNfKQCwKxQBoMKxSQFbQFa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxCQDh6socket7AddressTaZQCzFNfKQCqKxQBiMKxSQEvQEu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxEQDh6socket10SocketTypeTaZQDdFNaNfKQCwKxQBoMKxSQFbQFa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxEQDh6socket12ProtocolTypeTaZQDfFNaNfKQCyKxQBqMKxSQFdQFc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxEQDh6socket13AddressFamilyTaZQDgFNaNfKQCzKxQBrMKxSQFeQFd4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxSQDh6socket11AddressInfoTaZQDeFNfKQCvKxQBnMKxSQFaQEz4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxhTaZQChFNaNfKQCaKxhMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTywTaZQChFNaNfKQCaywMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTQhTaZQBzFNaNfKQBsQyMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTaTaZQByFNaNfKQBraMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTwTaZQByFNaNfKQBrwMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTxaTaZQBzFNaNfKQBsxaMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTxhTaZQBzFNaNfKQBsKxhMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTyAaZQoTwTaZQByFNaNfKQBrwMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5stdio4File17LockingTextWriterTwTaZQCdFNfKQBuwMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeMKxSQDfQDe4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxAyaTaZQCmFNaNfKQCdQuMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxCQDk3zip13ArchiveMemberTaZQDgFNaNfKQCxQBoMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxSQDk6socket11AddressInfoTaZQDhFNfKQCwQBnMKxSQFbQFa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxaTaZQCkFNaNfKQCbMxAaMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxhTaZQCkFNaNfKQCbQsMKxSQEfQEe4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAyuTaZQCkFNaNfKQCbMxAyuMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAywTaZQCkFNaNfKQCbMxAywMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTQhTaZQCjFNaNfKQCaMxAyaMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTaTaZQCiFNaNfKQBzxaMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwThTaZQCiFNaNfKQBzxhMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTiTaZQCiFNaNfKQBzxiMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTkTaZQCiFNaNfKQBzxkMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTtTaZQCiFNaNfKQBzxtMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTuTaZQCiFNaNfKQBzxuMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTwTaZQCiFNaNfKQBzxwMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxCQDj3zip13ArchiveMemberTaZQDfFNaNfKQCwxQBnMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxCQDj6socket7AddressTaZQDbFNfKQCqxQBhMKxSQEwQEv4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxEQDj6socket10SocketTypeTaZQDfFNaNfKQCwxQBnMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxEQDj6socket12ProtocolTypeTaZQDhFNaNfKQCyxQBpMKxSQFeQFd4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxEQDj6socket13AddressFamilyTaZQDiFNaNfKQCzxQBqMKxSQFfQFe4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxSQDj6socket11AddressInfoTaZQDgFNfKQCvKxQBnMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAaTaZQCbFNaNfKQBsMxAaMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAxaTaZQCcFNaNfKQBtMxAaMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAxhTaZQCcFNaNfKQBtQsMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAyAaTaZQCdFNaNfKQBuQtMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTC14TypeInfo_ClassTaZQCqFNaNfKQChQBgMKxSQEmQEl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTEQDa3net7isemail15EmailStatusCodeTaZQDgFNaNfKQCxQBwMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTEQDa8datetime4date5MonthTaZQCxFNaNfKQCoQBnMKxSQEtQEs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTPSQDb11parallelism12AbstractTaskTaZQDfFNaNfKQCwMxPSQEyQBxQBnMKxSQFlQFk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTPvTaZQCbFNaNfKQBsMxPvMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTPxSQDcQDb4spec__T10FormatSpecTaZQpTaZQDhFNaNfKQCyMxPQByMKxQCeZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTQhTaZQCbFNaNfKQBsMxAyaMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTSQDa11concurrency3TidTaZQCuFNaNfKQClKQBlMKxSQErQEq4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTSQDa4path__T16asNormalizedPathTSQEf5range__T5chainTSQEz3utf__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplTSQGzQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtTaZQInFNaNfKQIeKQHeMKxSQKkQKj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTSQDa5range__T5chainTSQDu3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFtQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQGtFNaNfKQGkKQFkMKxSQIqQIp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTaTaZQCaFNaNfKQBrxaMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTbTaZQCaFNaNfKQBrxbMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTgTaZQCaFNaNfKQBrxgMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoThTaZQCaFNaNfKQBrxhMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTiTaZQCaFNaNfKQBrxiMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTkTaZQCaFNaNfKQBrxkMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTmTaZQCaFNaNfKQBrxmMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTsTaZQCaFNaNfKQBrxsMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTtTaZQCaFNaNfKQBrxtMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTwTaZQCaFNaNfKQBrxwMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTxEQDb8datetime4date5MonthTaZQCyFNaNfKQCpxQBoMKxSQEvQEu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTAyaTaZQCcFNaNfKQBtMxAyaMKxSQEaQDz4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTEQDa5regexQCy2ir2IRTaZQCsFNaNfKQCjQBiMKxSQEoQEn4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTEQDa6logger4core8LogLevelTaZQCyFNaNfKQCpQBoMKxSQEuQEt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTEQDa6socket12SocketOptionTaZQCyFNaNfKQCpQBoMKxSQEuQEt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTaTaZQCaFNaNfKQBrxaMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoThTaZQCaFNaNfKQBrxhMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTiTaZQCaFNaNfKQBrxiMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTkTaZQCaFNaNfKQBrxkMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTwTaZQCaFNaNfKQBrxwMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTAxaTaZQChFNfKQBwMxAaMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTAyaTaZQChFNfKQBwMxAyaMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTEQDf8datetime4date5MonthTaZQDcFNfKQCrQBlMKxSQEwQEv4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTaTaZQCfFNfKQBuxaMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterThTaZQCfFNfKQBuxhMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTiTaZQCfFNfKQBuxiMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTkTaZQCfFNfKQBuxkMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTlTaZQCfFNfKQBuxlMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTmTaZQCfFNfKQBuxmMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTsTaZQCfFNfKQBuxsMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTwTaZQCfFNfKQBuxwMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBwQBv8NoOpSinkTdTaZQBnFNaNfKQBexdMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBwQBv8NoOpSinkThTaZQBnFNaNfKQBexhMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBwQBv8NoOpSinkTmTaZQBnFNaNfKQBexmMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBwQBv__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdMKxSQEkQEj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBwQBv__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTkTaZQDdFNaNfKQCuxkMKxSQEyQEx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T19needToSwapEndianessTaZQyFNaNbNiNfMKxSQCqQCp4spec__T10FormatSpecTaZQpZb@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCb5array__T15InPlaceAppenderTAyaZQwTaZQClFNaNfKQBxmIbMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCb5array__T8AppenderTAyaZQoTaZQCdFNaNfKQBpmIbMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCb5array__T8AppenderTyAaZQoTaZQCdFNaNfKQBpmIbMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCb5stdio4File17LockingTextWriterTaZQCiFNfKQBsmIbMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCbQCa8NoOpSinkTaZQBqFNaNfKQBcmIbMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCbQCa__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaZQDgFNaNfKQCsmIbMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTC14TypeInfo_ClassTaZQBtFNaNfMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTSQCd11concurrency3TidTaZQBxFNaNfMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTSQCd4path__T16asNormalizedPathTSQDi5range__T5chainTSQEc3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQGbQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQtTaZQHpFNaNbNiNfMKxSQJiQJh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTSQCd5range__T5chainTSQCx3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEwQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQFwFNaNbNiNfMKxSQHpQHo4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTxCQCe3zip13ArchiveMemberTaZQCaFNaNfMKxSQDpQDo4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTxCQCe6socket7AddressTaZQBwFNaNfMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTxSQCe6socket11AddressInfoTaZQCbFNaNfMKxSQDqQDp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T5roundTG1077aZQoFNaNbNiNfKQtmmEQCiQChQCdQBx13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG1078aZQoFNaNbNiNfKQtmmEQCiQChQCdQBx13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG15aZQmFNaNbNiNfKQrmmEQCgQCfQCbQBv13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG16448aZQpFNaNbNiNfKQummEQCjQCiQCeQBy13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG16449aZQpFNaNbNiNfKQummEQCjQCiQCeQBy13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG18aZQmFNaNbNiNfKQrmmEQCgQCfQCbQBv13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG64aZQmFNaNbNiNfKQrmmEQCgQCfQCbQBv13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAaTPvZQCvFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAxaTQeZQCwFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAxaZQCtFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAxhZQCtFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAyAaZQCuFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTC14TypeInfo_ClassTkTkZQDlFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTEQDt8datetime4date5MonthZQDoFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTPvZQCsFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTQClTiTQCrZQDdFNaNfkQDeQDhiQDlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTQClTmZQCzFNaNfkQDaQDdmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTQClZQCxFNaNfkQCyQDbZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTmTQCnTQCrTxlZQDgFNaNfkQDhmQDlQDoxlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTmTQCnTQCrTxmZQDgFNaNfkQDhmQDlQDoxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTmTQCnTxmZQDcFNaNfkQDdmQDhxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxkTQCoZQDaFNaNfkQDbxkQDgZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxkTkZQCyFNaNfkQCzxkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxkZQCwFNaNfkQCxxkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxmTQCoTQCsTmZQDgFNaNfkQDhxmQDmQDpmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxmTQCoTxmZQDdFNaNfkQDexmQDjxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChZQCtFNaNfkQCuZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTbTQCjTQCnTEQEd3net7isemail15EmailStatusCodeZQEhFNaNfkbQEjQEmQByZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTiTEQDv8datetime4date5MonthTiZQDsFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTiTiZQCtFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTiZQCrFNaNfkiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTkZQCrFNaNfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmTQCjTmTQCpTmTQCvTQCzZQDlFNaNfkmQDnmQDrmQDvQDyZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmTmTymZQCwFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmTmZQCtFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmZQCrFNaNfkmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTsTEQDv8datetime4date5MonthThThThThTxlZQEbFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxdZQCsFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxhTxhTxhTxhZQDbFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxhTxhTxhZQCyFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxsTQCkTxhZQCzFNaNfkxsQDcxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxsTxEQDx8datetime4date5MonthTxhZQDvFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxsZQCsFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxtTQCkTxtTxtZQDcFNaNfkxtQDfxtxtZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTykTykTkTkTkZQDbFNaNfkykykkkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAaTPvZQDdFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAxaTQeZQDeFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAxaZQDbFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAxhZQDbFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAyAaZQDcFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTC14TypeInfo_ClassTkTkZQDtFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTEQEb8datetime4date5MonthZQDwFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTPvZQDaFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTQCtTiTQCzZQDlFNaNfkQDmQDpiQDtZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTQCtTmZQDhFNaNfkQDiQDlmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTQCtZQDfFNaNfkQDgQDjZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTmTQCvTQCzTxlZQDoFNaNfkQDpmQDtQDwxlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTmTQCvTQCzTxmZQDoFNaNfkQDpmQDtQDwxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTmTQCvTxmZQDkFNaNfkQDlmQDpxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxkTQCwZQDiFNaNfkQDjxkQDoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxkTkZQDgFNaNfkQDhxkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxkZQDeFNaNfkQDfxkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxmTQCwTQDaTmZQDoFNaNfkQDpxmQDuQDxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxmTQCwTxmZQDlFNaNfkQDmxmQDrxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpZQDbFNaNfkQDcZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTbTQCrTQCvTEQEl3net7isemail15EmailStatusCodeZQEpFNaNfkbQErQEuQByZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTiTEQEd8datetime4date5MonthTiZQEaFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTiTiZQDbFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTiZQCzFNaNfkiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTkZQCzFNaNfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmTQCrTmTQCxTmTQDdTQDhZQDtFNaNfkmQDvmQDzmQEdQEgZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmTmTymZQDeFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmTmZQDbFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmZQCzFNaNfkmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTsTEQEd8datetime4date5MonthThThThThTxlZQEjFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxdZQDaFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxhTxhTxhTxhZQDjFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxhTxhTxhZQDgFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxsTQCsTxhZQDhFNaNfkxsQDkxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxsTxEQEf8datetime4date5MonthTxhZQEdFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxsZQDaFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxtTQCsTxtTxtZQDkFNaNfkxtQDnxtxtZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTykTykTkTkTkZQDjFNaNfkykykkkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAaTPvZQDhFNaNfkQpQoZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAxaTQeZQDiFNaNfkQqQsZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAxaZQDfFNaNfkQnZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAxhZQDfFNaNfkQnZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAyAaZQDgFNaNfkQoZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTC14TypeInfo_ClassTkTkZQDxFNaNfkQBfkkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTEQEf8datetime4date5MonthZQEaFNaNfkQBiZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTPvZQDeFNaNfkQmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTQCxTiTQDdZQDpFNaNfkQDqQDtiQDxZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTQCxTmZQDlFNaNfkQDmQDpmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTQCxZQDjFNaNfkQDkQDnZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTmTQCzTQDdTxlZQDsFNaNfkQDtmQDxQEaxlZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTmTQCzTQDdTxmZQDsFNaNfkQDtmQDxQEaxmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTmTQCzTxmZQDoFNaNfkQDpmQDtxmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxkTQDaZQDmFNaNfkQDnxkQDsZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxkTkZQDkFNaNfkQDlxkkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxkZQDiFNaNfkQDjxkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxmTQDaTQDeTmZQDsFNaNfkQDtxmQDyQEbmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxmTQDaTxmZQDpFNaNfkQDqxmQDvxmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtZQDfFNaNfkQDgZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTbTQCvTQCzTEQEp3net7isemail15EmailStatusCodeZQEtFNaNfkbQEvQEyQByZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTiTEQEh8datetime4date5MonthTiZQEeFNaNfkiQBliZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTiTiZQDfFNaNfkiiZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTiZQDdFNaNfkiZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTkZQDdFNaNfkkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmTQCvTmTQDbTmTQDhTQDlZQDxFNaNfkmQDzmQEdmQEhQEkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmTmTymZQDiFNaNfkmmymZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmTmZQDfFNaNfkmmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmZQDdFNaNfkmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTsTEQEh8datetime4date5MonthThThThThTxlZQEnFNaNfksQBuhhhhxlZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxdZQDeFNaNfkxdZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxhTxhTxhTxhZQDnFNaNfkxhxhxhxhZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxhTxhTxhZQDkFNaNfkxhxhxhZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxsTQCwTxhZQDlFNaNfkxsQDoxhZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxsTxEQEj8datetime4date5MonthTxhZQEhFNaNfkxsxQBoxhZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxsZQDeFNaNfkxsZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxtTQCwTxtTxtZQDoFNaNfkxtQDrxtxtZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTykTykTkTkTkZQDnFNaNfkykykkkkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAaTPvZQDlFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAxaTQeZQDmFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAxaZQDjFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAxhZQDjFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAyAaZQDkFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTC14TypeInfo_ClassTkTkZQEbFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTEQEj8datetime4date5MonthZQEeFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTPvZQDiFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTQDbTiTQDhZQDtFNaNfkQDuQDxiQEbZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTQDbTmZQDpFNaNfkQDqQDtmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTQDbZQDnFNaNfkQDoQDrZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTmTQDdTQDhTxlZQDwFNaNfkQDxmQEbQEexlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTmTQDdTQDhTxmZQDwFNaNfkQDxmQEbQEexmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTmTQDdTxmZQDsFNaNfkQDtmQDxxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxkTQDeZQDqFNaNfkQDrxkQDwZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxkTkZQDoFNaNfkQDpxkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxkZQDmFNaNfkQDnxkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxmTQDeTQDiTmZQDwFNaNfkQDxxmQEcQEfmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxmTQDeTxmZQDtFNaNfkQDuxmQDzxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxZQDjFNaNfkQDkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTbTQCzTQDdTEQEt3net7isemail15EmailStatusCodeZQExFNaNfkbQEzQFcQByZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTiTEQEl8datetime4date5MonthTiZQEiFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTiTiZQDjFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTiZQDhFNaNfkiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTkZQDhFNaNfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmTQCzTmTQDfTmTQDlTQDpZQEbFNaNfkmQEdmQEhmQElQEoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmTmTymZQDmFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmTmZQDjFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmZQDhFNaNfkmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTsTEQEl8datetime4date5MonthThThThThTxlZQErFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxdZQDiFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxhTxhTxhTxhZQDrFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxhTxhTxhZQDoFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxsTQDaTxhZQDpFNaNfkxsQDsxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxsTxEQEn8datetime4date5MonthTxhZQElFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxsZQDiFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxtTQDaTxtTxtZQDsFNaNfkxtQDvxtxtZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTykTykTkTkTkZQDrFNaNfkykykkkkZi@Base 15 + _D3std6format8internal5write__T8getWidthTAaZQnFNaNfQkZl@Base 15 + _D3std6format8internal5write__T8getWidthTAuZQnFNaNfQkZl@Base 15 + _D3std6format8internal5write__T8getWidthTAwZQnFNaNbNiNfQoZl@Base 15 + _D3std6format8internal5write__T8getWidthTAxaZQoFNaNfQlZl@Base 15 + _D3std6format8internal5write__T8getWidthTAyaZQoFNaNfQlZl@Base 15 + _D3std6format8internal5write__T8getWidthTAyuZQoFNaNfQlZl@Base 15 + _D3std6format8internal5write__T8getWidthTAywZQoFNaNbNiNfQpZl@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAaTPvZQBzFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAxaTQeZQCaFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAxaZQBxFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAxhZQBxFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAyAaZQByFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TC14TypeInfo_ClassTkTkZQCpFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TEQCx8datetime4date5MonthZQCsFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TPvZQBwFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTQBmTiTQBsZQChFNaNfkQCfQCiiQCmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTQBmTmZQCdFNaNfkQCbQCemZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTQBmZQCbFNaNfkQBzQCcZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTmTQBoTQBsTxlZQCkFNaNfkQCimQCmQCpxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTmTQBoTQBsTxmZQCkFNaNfkQCimQCmQCpxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTmTQBoTxmZQCgFNaNfkQCemQCixmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxkTQBpZQCeFNaNfkQCcxkQChZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxkTkZQCcFNaNfkQCaxkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxkZQCaFNaNfkQByxkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxmTQBpTQBtTmZQCkFNaNfkQCixmQCnQCqmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxmTQBpTxmZQChFNaNfkQCfxmQCkxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiZQBxFNaNfkQBvZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TbTQBkTQBoTEQDh3net7isemail15EmailStatusCodeZQDlFNaNfkbQDkQDnQByZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TiTEQCz8datetime4date5MonthTiZQCwFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TiTiZQBxFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TiZQBvFNaNfkiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TkZQBvFNaNfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmTQBkTmTQBqTmTQBwTQCaZQCpFNaNfkmQComQCsmQCwQCzZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmTmTymZQCaFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmTmZQBxFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmZQBvFNaNfkmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TsTEQCz8datetime4date5MonthThThThThTxlZQDfFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxdZQBwFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxhTxhTxhTxhZQCfFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxhTxhTxhZQCcFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxsTQBlTxhZQCdFNaNfkxsQCdxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxsTxEQDb8datetime4date5MonthTxhZQCzFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxsZQBwFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxtTQBlTxtTxtZQCgFNaNfkxtQCgxtxtZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TykTykTkTkTkZQCfFNaNfkykykkkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAaTPvZQChFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAxaTQeZQCiFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAxaZQCfFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAxhZQCfFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAyAaZQCgFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTC14TypeInfo_ClassTkTkZQCxFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTEQDf8datetime4date5MonthZQDaFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTPvZQCeFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTQBuTiTQCaZQCpFNaNfkQCnQCqiQCuZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTQBuTmZQClFNaNfkQCjQCmmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTQBuZQCjFNaNfkQChQCkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTmTQBwTQCaTxlZQCsFNaNfkQCqmQCuQCxxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTmTQBwTQCaTxmZQCsFNaNfkQCqmQCuQCxxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTmTQBwTxmZQCoFNaNfkQCmmQCqxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxkTQBxZQCmFNaNfkQCkxkQCpZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxkTkZQCkFNaNfkQCixkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxkZQCiFNaNfkQCgxkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxmTQBxTQCbTmZQCsFNaNfkQCqxmQCvQCymZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxmTQBxTxmZQCpFNaNfkQCnxmQCsxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqZQCfFNaNfkQCdZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTbTQBsTQBwTEQDp3net7isemail15EmailStatusCodeZQDtFNaNfkbQDsQDvQByZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTiTEQDh8datetime4date5MonthTiZQDeFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTiTiZQCfFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTiZQCdFNaNfkiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTkZQCdFNaNfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmTQBsTmTQByTmTQCeTQCiZQCxFNaNfkmQCwmQDamQDeQDhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmTmTymZQCiFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmTmZQCfFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmZQCdFNaNfkmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTsTEQDh8datetime4date5MonthThThThThTxlZQDnFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxdZQCeFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxhTxhTxhTxhZQCnFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxhTxhTxhZQCkFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxsTQBtTxhZQClFNaNfkxsQClxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxsTxEQDj8datetime4date5MonthTxhZQDhFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxsZQCeFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxtTQBtTxtTxtZQCoFNaNfkxtQCoxtxtZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTykTykTkTkTkZQCnFNaNfkykykkkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAaTPvZQCpFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAxaTQeZQCqFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAxaZQCnFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAxhZQCnFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAyAaZQCoFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TC14TypeInfo_ClassTkTkZQDfFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TEQDn8datetime4date5MonthZQDiFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TPvZQCmFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTQCcTiTQCiZQCxFNaNfkQCvQCyiQDcZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTQCcTmZQCtFNaNfkQCrQCumZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTQCcZQCrFNaNfkQCpQCsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTmTQCeTQCiTxlZQDaFNaNfkQCymQDcQDfxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTmTQCeTQCiTxmZQDaFNaNfkQCymQDcQDfxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTmTQCeTxmZQCwFNaNfkQCumQCyxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxkTQCfZQCuFNaNfkQCsxkQCxZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxkTkZQCsFNaNfkQCqxkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxkZQCqFNaNfkQCoxkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxmTQCfTQCjTmZQDaFNaNfkQCyxmQDdQDgmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxmTQCfTxmZQCxFNaNfkQCvxmQDaxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByZQCnFNaNfkQClZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TbTQCaTQCeTEQDx3net7isemail15EmailStatusCodeZQEbFNaNfkbQEaQEdQByZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TiTEQDp8datetime4date5MonthTiZQDmFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TiTiZQCnFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TiZQClFNaNfkiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TkZQClFNaNfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmTQCaTmTQCgTmTQCmTQCqZQDfFNaNfkmQDemQDimQDmQDpZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmTmTymZQCqFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmTmZQCnFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmZQClFNaNfkmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TsTEQDp8datetime4date5MonthThThThThTxlZQDvFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxdZQCmFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxhTxhTxhTxhZQCvFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxhTxhTxhZQCsFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxsTQCbTxhZQCtFNaNfkxsQCtxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxsTxEQDr8datetime4date5MonthTxhZQDpFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxsZQCmFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxtTQCbTxtTxtZQCwFNaNfkxtQCwxtxtZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TykTykTkTkTkZQCvFNaNfkykykkkkZi@Base 15 + _D3std6format8internal6floats11__moduleRefZ@Base 15 + _D3std6format8internal6floats11isFloatSpecFNaNbNiNfaZb@Base 15 + _D3std6format8internal6floats12__ModuleInfoZ@Base 15 + _D3std6format8internal6floats__T10printFloatTDFNaNbNfAxaZvTeTaZQBfFNaNfKQBbxeSQCyQCx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal6floats__T10printFloatTSQBsQBr8NoOpSinkTdTaZQBiFNaNfKQBexdSQDbQDa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal6floats__T10printFloatTSQBsQBr__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCkFNaNfKQCgxdSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal6floats__T11printFloatATDFNaNbNfAxaZvTeTaZQBgFNaNfKQBbxeSQCzQCy4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatATSQBtQBs8NoOpSinkTdTaZQBjFNaNfKQBexdSQDcQDb4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatATSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQClFNaNfKQCgxdSQEeQEd4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi0TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi0TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi0TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi1TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi1TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi1TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi0TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi0TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi0TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi1TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi1TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi1TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatGTDFNaNbNfAxaZvTeTaZQBgFNaNfKQBbxeSQCzQCy4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatGTSQBtQBs8NoOpSinkTdTaZQBjFNaNfKQBexdSQDcQDb4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatGTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQClFNaNfKQCgxdSQEeQEd4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format__T11guessLengthTaTAyaZQuFNaNfQlZm@Base 15 + _D3std6format__T7sformatTaTxdZQoFNaNfNkMAaMAxaxdZQj@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink11__xopEqualsMxFKxSQCpQCo__TQCkTaTxdZQCtFNkMQCgMQChxdZQChZb@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNbNfMQyZv@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNbNfaZv@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNfMAxuZv@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNfMAxwZv@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNfwZv@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink6__initZ@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink9__xtoHashFNbNeKxSQCoQCn__TQCjTaTxdZQCsFNkMQCfMQCgxdZQCgZm@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNaNfNkMAaMAxaykykkkkZQo@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink11__xopEqualsMxFKxSQDdQDc__TQCyTaTykTykTkTkTkZQDqFNkMQCuMQCvykykkkkZQCvZb@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNbNfMQBdZv@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNbNfaZv@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNfMAxuZv@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNfMAxwZv@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNfwZv@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink6__initZ@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink9__xtoHashFNbNeKxSQDcQDb__TQCxTaTykTykTkTkTkZQDpFNkMQCtMQCuykykkkkZQCuZm@Base 15 + _D3std6format__T7sformatVAyaa5_252e313867TxdZQBdFNaNfAaxdZQf@Base 15 + _D3std6format__TQkTaTAaTPvZQvFNaNfIAaQqQpZAya@Base 15 + _D3std6format__TQkTaTAxaTQeZQwFNaNfIAaQrQtZAya@Base 15 + _D3std6format__TQkTaTAyAaZQuFNaNfIAaQpZAya@Base 15 + _D3std6format__TQkTaTAyaTQeTmZQyFNaNfIAaQtQvmZQz@Base 15 + _D3std6format__TQkTaTAyaTQeZQwFNaNfIAaQrQtZQw@Base 15 + _D3std6format__TQkTaTAyaTxkTQhZQzFNaNfIAaQuxkQyZQBb@Base 15 + _D3std6format__TQkTaTAyaTxkTkZQyFNaNfIAaQtxkkZQz@Base 15 + _D3std6format__TQkTaTAyaTxkZQwFNaNfIAaQrxkZQw@Base 15 + _D3std6format__TQkTaTAyaZQtFNaNfIAaQoZQr@Base 15 + _D3std6format__TQkTaTC14TypeInfo_ClassTkTkZQBlFNaNfIAaQBhkkZAya@Base 15 + _D3std6format__TQkTaTEQu8datetime4date5MonthZQBnFNaNfIAaQBjZAya@Base 15 + _D3std6format__TQkTaTbTAyaTQeTEQBd3net7isemail15EmailStatusCodeZQCgFNaNfIAabQCbQCeQCaZQCl@Base 15 + _D3std6format__TQkTaTiTEQw8datetime4date5MonthTiZQBrFNaNfIAaiQBmiZAya@Base 15 + _D3std6format__TQkTaTiZQrFNaNfIAaiZAya@Base 15 + _D3std6format__TQkTaTxhTxhTxhTxhZQBbFNaNfIAaxhxhxhxhZAya@Base 15 + _D3std6format__TQkTaTxhTxhTxhZQyFNaNfIAaxhxhxhZAya@Base 15 + _D3std6format__TQkTaTxsTxEQy8datetime4date5MonthTxhZQBuFNaNfIAaxsxQBpxhZAya@Base 15 + _D3std6format__TQkTaTxsZQsFNaNfIAaxsZAya@Base 15 + _D3std6format__TQkTaTxtTAyaTxtTxtZQBcFNaNfIAaxtQxxtxtZQBe@Base 15 + _D3std6format__TQkVAyaa35_737461636b2e6c656e677468202d206174202573206d7573742062652032206f722033TmZQDpFNaNfmZQDm@Base 15 + _D3std6format__TQkVAyaa39_7372632e6c656e677468202573206d75737420657175616c20646573742e6c656e677468202573TmTmZQDzFNaNfmmZQDx@Base 15 + _D3std6format__TQkVAyaa42_74656d702e6c656e677468202573203e3d2072616e67652e6c656e677468202573202d206d6964202573TmTmTymZQEiFNaNfmmymZQEi@Base 15 + _D3std6getopt10assignCharw@Base 15 + _D3std6getopt10optionCharw@Base 15 + _D3std6getopt11__moduleRefZ@Base 15 + _D3std6getopt11splitAndGetFNaNbNeAyaZSQBkQBj6Option@Base 15 + _D3std6getopt12GetoptResult11__xopEqualsMxFKxSQBsQBrQBnZb@Base 15 + _D3std6getopt12GetoptResult6__initZ@Base 15 + _D3std6getopt12GetoptResult9__xtoHashFNbNeKxSQBrQBqQBmZm@Base 15 + _D3std6getopt12__ModuleInfoZ@Base 15 + _D3std6getopt12endOfOptionsAya@Base 15 + _D3std6getopt13configuration11passThroughMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration11passThroughMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt13configuration13caseSensitiveMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration13caseSensitiveMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt13configuration16keepEndOfOptionsMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration16keepEndOfOptionsMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt13configuration20stopOnFirstNonOptionMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration20stopOnFirstNonOptionMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt13configuration6__initZ@Base 15 + _D3std6getopt13configuration8bundlingMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration8bundlingMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt13configuration8requiredMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration8requiredMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt15GetOptException6__initZ@Base 15 + _D3std6getopt15GetOptException6__vtblZ@Base 15 + _D3std6getopt15GetOptException7__ClassZ@Base 15 + _D3std6getopt15GetOptException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx@Base 15 + _D3std6getopt15GetOptException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDbQCx@Base 15 + _D3std6getopt20defaultGetoptPrinterFNfAyaASQBpQBo6OptionZ18__lambda_L1704_C15FNeZSQDc5stdio4File17LockingTextWriter@Base 15.2 + _D3std6getopt20defaultGetoptPrinterFNfAyaASQBpQBo6OptionZv@Base 15 + _D3std6getopt6Option11__xopEqualsMxFKxSQBlQBkQBgZb@Base 15 + _D3std6getopt6Option6__initZ@Base 15 + _D3std6getopt6Option9__xtoHashFNbNeKxSQBkQBjQBfZm@Base 15 + _D3std6getopt8arraySepAya@Base 15 + _D3std6getopt8optMatchFNfAyaMQeKQhSQBhQBg13configurationZb@Base 15 + _D3std6getopt9setConfigFNaNbNiNfKSQBgQBf13configurationEQCcQCb6configZv@Base 15 + _D3std6getopt__T22defaultGetoptFormatterTSQBo5stdio4File17LockingTextWriterZQCiFNfQBpAyaASQDkQDj6OptionQsZv@Base 15 + _D3std6int12811__moduleRefZ@Base 15 + _D3std6int12812__ModuleInfoZ@Base 15 + _D3std6int1286Int12811__xopEqualsMxFKxSQBlQBkQBgZb@Base 15 + _D3std6int1286Int1285opCmpMxFNaNbNiNfSQBkQBjQBfZi@Base 15 + _D3std6int1286Int1286__ctorMFNaNbNcNiNfS4coreQBn4CentZSQCbQCaQBw@Base 15 + _D3std6int1286Int1286__ctorMFNaNbNcNiNflZSQBoQBnQBj@Base 15 + _D3std6int1286Int1286__ctorMFNaNbNcNiNfllZSQBpQBoQBk@Base 15 + _D3std6int1286Int1286__ctorMFNaNbNcNiNfmZSQBoQBnQBj@Base 15 + _D3std6int1286Int1286__initZ@Base 15 + _D3std6int1286Int1286toHashMxFNaNbNiNfZm@Base 15 + _D3std6int1286Int1288__xopCmpMxFKxSQBhQBgQBcZi@Base 15 + _D3std6int1286Int1288opEqualsMxFNaNbNiNfSQBnQBmQBiZb@Base 15 + _D3std6int1286Int1288opEqualsMxFNaNbNiNflZb@Base 15 + _D3std6int1286Int1288opEqualsMxFNaNbNiNfmZb@Base 15 + _D3std6logger10filelogger10FileLogger10logMsgPartMFNfMAxaZv@Base 15 + _D3std6logger10filelogger10FileLogger11__fieldDtorMFNlNeZv@Base 15 + _D3std6logger10filelogger10FileLogger11beginLogMsgMFNfAyaiQeQgQiEQClQCk4core8LogLevelSQDg11concurrency3TidSQEb8datetime7systime7SysTimeCQFeQFdQCt6LoggerZv@Base 15 + _D3std6logger10filelogger10FileLogger11getFilenameMFZAya@Base 15 + _D3std6logger10filelogger10FileLogger11writeLogMsgMFNfKSQCcQCb4core6Logger8LogEntryZv@Base 15 + _D3std6logger10filelogger10FileLogger12finishLogMsgMFNfZv@Base 15 + _D3std6logger10filelogger10FileLogger4fileMFNdNfZSQBw5stdio4File@Base 15 + _D3std6logger10filelogger10FileLogger6__ctorMFNfSQBv5stdio4FilexEQClQCk4core8LogLevelZCQDhQDgQDcQCt@Base 15 + _D3std6logger10filelogger10FileLogger6__initZ@Base 15 + _D3std6logger10filelogger10FileLogger6__vtblZ@Base 15 + _D3std6logger10filelogger10FileLogger7__ClassZ@Base 15 + _D3std6logger10filelogger11__moduleRefZ@Base 15 + _D3std6logger10filelogger12__ModuleInfoZ@Base 15 + _D3std6logger10nulllogger10NullLogger11writeLogMsgMFNiNfKSQCeQCd4core6Logger8LogEntryZv@Base 15 + _D3std6logger10nulllogger10NullLogger6__ctorMFNfxEQBwQBv4core8LogLevelZCQCsQCrQCnQCe@Base 15 + _D3std6logger10nulllogger10NullLogger6__initZ@Base 15 + _D3std6logger10nulllogger10NullLogger6__vtblZ@Base 15 + _D3std6logger10nulllogger10NullLogger7__ClassZ@Base 15 + _D3std6logger10nulllogger11__moduleRefZ@Base 15 + _D3std6logger10nulllogger12__ModuleInfoZ@Base 15 + _D3std6logger11__moduleRefZ@Base 15 + _D3std6logger11multilogger11MultiLogger11writeLogMsgMFNfKSQCeQCd4core6Logger8LogEntryZv@Base 15 + _D3std6logger11multilogger11MultiLogger12insertLoggerMFNfAyaCQChQCg4core6LoggerZv@Base 15 + _D3std6logger11multilogger11MultiLogger12removeLoggerMFNfIAaZCQCiQCh4core6Logger@Base 15 + _D3std6logger11multilogger11MultiLogger6__ctorMFNfxEQByQBx4core8LogLevelZCQCuQCtQCpQCf@Base 15 + _D3std6logger11multilogger11MultiLogger6__initZ@Base 15 + _D3std6logger11multilogger11MultiLogger6__vtblZ@Base 15 + _D3std6logger11multilogger11MultiLogger7__ClassZ@Base 15 + _D3std6logger11multilogger11__moduleRefZ@Base 15 + _D3std6logger11multilogger12__ModuleInfoZ@Base 15 + _D3std6logger11multilogger16MultiLoggerEntry11__xopEqualsMxFKxSQCjQCiQCeQBuZb@Base 15 + _D3std6logger11multilogger16MultiLoggerEntry6__initZ@Base 15 + _D3std6logger11multilogger16MultiLoggerEntry9__xtoHashFNbNeKxSQCiQChQCdQBtZm@Base 15 + _D3std6logger12__ModuleInfoZ@Base 15 + _D3std6logger4core10TestLogger11writeLogMsgMFNfKSQBvQBuQBq6Logger8LogEntryZv@Base 15 + _D3std6logger4core10TestLogger6__ctorMFNfxEQBpQBoQBk8LogLevelZCQCjQCiQCeQCc@Base 15 + _D3std6logger4core10TestLogger6__initZ@Base 15 + _D3std6logger4core10TestLogger6__vtblZ@Base 15 + _D3std6logger4core10TestLogger7__ClassZ@Base 15 + _D3std6logger4core11__moduleRefZ@Base 15 + _D3std6logger4core12__ModuleInfoZ@Base 15 + _D3std6logger4core14globalLogLevelFNdNfEQBmQBlQBh8LogLevelZv@Base 15 + _D3std6logger4core14globalLogLevelFNdNiNfZEQBpQBoQBk8LogLevel@Base 15 + _D3std6logger4core15stdSharedLoggerOCQBjQBiQBe6Logger@Base 15 + _D3std6logger4core16StdForwardLogger11writeLogMsgMFNeKSQCbQCaQBw6Logger8LogEntryZv@Base 15 + _D3std6logger4core16StdForwardLogger6__ctorMFNfxEQBvQBuQBq8LogLevelZCQCpQCoQCkQCi@Base 15 + _D3std6logger4core16StdForwardLogger6__initZ@Base 15 + _D3std6logger4core16StdForwardLogger6__vtblZ@Base 15 + _D3std6logger4core16StdForwardLogger7__ClassZ@Base 15 + _D3std6logger4core17stdThreadLocalLogFNdNfCQBpQBoQBk6LoggerZv@Base 15 + _D3std6logger4core17stdThreadLocalLogFNdNfZCQBqQBpQBl6Logger@Base 15 + _D3std6logger4core21stdLoggerThreadLoggerCQBoQBnQBj6Logger@Base 15 + _D3std6logger4core21stdThreadLocalLogImplFNdNeZ6bufferG184v@Base 15 + _D3std6logger4core21stdThreadLocalLogImplFNdNeZCQBuQBtQBp6Logger@Base 15 + _D3std6logger4core22stdSharedDefaultLoggerOCQBqQBpQBl6Logger@Base 15 + _D3std6logger4core23defaultSharedLoggerImplFNdNeZ18__lambda_L1423_C37FZOCQCtQCs10filelogger10FileLogger@Base 15 + _D3std6logger4core23defaultSharedLoggerImplFNdNeZ7_bufferG224v@Base 15 + _D3std6logger4core23defaultSharedLoggerImplFNdNeZOCQBxQBwQBs6Logger@Base 15 + _D3std6logger4core23stdLoggerGlobalLogLevelOEQBrQBqQBm8LogLevel@Base 15 + _D3std6logger4core28stdLoggerDefaultThreadLoggerCQBvQBuQBq6Logger@Base 15 + _D3std6logger4core6Logger10forwardMsgMFNeKSQBpQBoQBkQBi8LogEntryZv@Base 15 + _D3std6logger4core6Logger10logMsgPartMFNfMAxaZv@Base 15 + _D3std6logger4core6Logger11beginLogMsgMFNfAyaiQeQgQiEQBzQByQBu8LogLevelSQCs11concurrency3TidSQDn8datetime7systime7SysTimeCQEqQEpQElQEjZv@Base 15 + _D3std6logger4core6Logger12fatalHandlerMFNdNiNfDFNfZvZv@Base 15 + _D3std6logger4core6Logger12fatalHandlerMFNdNiNfZDFZv@Base 15 + _D3std6logger4core6Logger12finishLogMsgMFNfZv@Base 15 + _D3std6logger4core6Logger6__initZ@Base 15 + _D3std6logger4core6Logger6__vtblZ@Base 15 + _D3std6logger4core6Logger7__ClassZ@Base 15 + _D3std6logger4core6Logger8LogEntry11__xopEqualsMxFKxSQBzQByQBuQBsQBoZb@Base 15 + _D3std6logger4core6Logger8LogEntry6__initZ@Base 15 + _D3std6logger4core6Logger8LogEntry8opAssignMFNaNbNcNiNjNfSQCeQCdQBzQBxQBtZQr@Base 15 + _D3std6logger4core6Logger8LogEntry9__xtoHashFNbNeKxSQByQBxQBtQBrQBnZm@Base 15 + _D3std6logger4core6Logger8logLevelMFNdNiNfxEQBqQBpQBl8LogLevelZv@Base 15 + _D3std6logger4core6Logger8logLevelMxFNaNdNiNfZEQBtQBsQBo8LogLevel@Base 15 + _D3std6logger4core6Logger__T6__ctorTCQBjQBi10filelogger10FileLoggerZQBoMFNbNfEQCyQCxQCt8LogLevelZCQDsQDrQDnQDl@Base 15 + _D3std6logger4core6Logger__T6__ctorTCQBjQBi10nulllogger10NullLoggerZQBoMFNbNfEQCyQCxQCt8LogLevelZCQDsQDrQDnQDl@Base 15 + _D3std6logger4core6Logger__T6__ctorTCQBjQBi11multilogger11MultiLoggerZQBqMFNbNfEQDaQCzQCv8LogLevelZCQDuQDtQDpQDn@Base 15 + _D3std6logger4core6Logger__T6__ctorTCQBjQBiQBe10TestLoggerZQBfMFNbNfEQCpQCoQCk8LogLevelZCQDjQDiQDeQDc@Base 15 + _D3std6logger4core6Logger__T6__ctorTCQBjQBiQBe16StdForwardLoggerZQBlMFNbNfEQCvQCuQCq8LogLevelZCQDpQDoQDkQDi@Base 15 + _D3std6logger4core8LogLevel6__initZ@Base 15 + _D3std6logger4core8MsgRange11__xopEqualsMxFKxSQBsQBrQBnQBlZb@Base 15 + _D3std6logger4core8MsgRange3putMFNfwZv@Base 15 + _D3std6logger4core8MsgRange6__ctorMFNcNfCQBnQBmQBi6LoggerZSQCfQCeQCaQBy@Base 15 + _D3std6logger4core8MsgRange6__initZ@Base 15 + _D3std6logger4core8MsgRange9__xtoHashFNbNeKxSQBrQBqQBmQBkZm@Base 15 + _D3std6logger4core9sharedLogFNdNfOCQBhQBgQBc6LoggerZv@Base 15 + _D3std6logger4core9sharedLogFNdNfZOCQBiQBhQBd6Logger@Base 15 + _D3std6logger4core__T11trustedLoadTEQBiQBhQBd8LogLevelZQBiFNaNbNiNeKOEQCqQCpQClQBiZQBw@Base 15 + _D3std6logger4core__T11trustedLoadTxEQBjQBiQBe8LogLevelZQBjFNaNbNiNeKOxEQCsQCrQCnQBjZEQDgQDfQDbQBx@Base 15 + _D3std6logger4core__T12trustedStoreTEQBjQBiQBe8LogLevelZQBjFNaNbNiNeKOEQCrQCqQCmQBiKQBwZv@Base 15 + _D3std6logger4core__T16isLoggingEnabledZQtFNaNfEQBuQBtQBp8LogLevelQtQvLbZb@Base 15 + _D3std6logger4core__T18systimeToISOStringTSQBp5stdio4File17LockingTextWriterZQCeFNfQBpKxSQDj8datetime7systime7SysTimeZv@Base 15 + _D3std6mmfile11__moduleRefZ@Base 15 + _D3std6mmfile12__ModuleInfoZ@Base 15 + _D3std6mmfile6MmFile10__aggrDtorMFNlZv@Base 15 + _D3std6mmfile6MmFile11__fieldDtorMFNlNeZv@Base 15 + _D3std6mmfile6MmFile12ensureMappedMFmZv@Base 15 + _D3std6mmfile6MmFile12ensureMappedMFmmZv@Base 15 + _D3std6mmfile6MmFile13opIndexAssignMFhmZh@Base 15 + _D3std6mmfile6MmFile3mapMFmmZv@Base 15 + _D3std6mmfile6MmFile4modeMFZEQBbQBaQw4Mode@Base 15 + _D3std6mmfile6MmFile5flushMFZv@Base 15 + _D3std6mmfile6MmFile5unmapMFZv@Base 15 + _D3std6mmfile6MmFile6__ctorMFNlAyaEQBhQBgQBc4ModemPvmZCQCbQCaQBw@Base 15 + _D3std6mmfile6MmFile6__ctorMFNlAyaZCQBiQBhQBd@Base 15 + _D3std6mmfile6MmFile6__ctorMFNlSQBe5stdio4FileEQBtQBsQBo4ModemPvmZCQCnQCmQCi@Base 15 + _D3std6mmfile6MmFile6__ctorMFNliEQBfQBeQBa4ModemPvmZCQBzQByQBu@Base 15 + _D3std6mmfile6MmFile6__dtorMFNlZv@Base 15 + _D3std6mmfile6MmFile6__initZ@Base 15 + _D3std6mmfile6MmFile6__vtblZ@Base 15 + _D3std6mmfile6MmFile6lengthMxFNdZm@Base 15 + _D3std6mmfile6MmFile6mappedMFmZi@Base 15 + _D3std6mmfile6MmFile7__ClassZ@Base 15 + _D3std6mmfile6MmFile7opIndexMFmZh@Base 15 + _D3std6mmfile6MmFile7opSliceMFZAv@Base 15 + _D3std6mmfile6MmFile7opSliceMFmmZAv@Base 15 + _D3std6random11__moduleRefZ@Base 15 + _D3std6random12__ModuleInfoZ@Base 15 + _D3std6random12fallbackSeedFNbNiZ11initializedOb@Base 15 + _D3std6random12fallbackSeedFNbNiZ4seedOm@Base 15 + _D3std6random12fallbackSeedFNbNiZ6fmix64FNaNbNiNfmZm@Base 15 + _D3std6random12fallbackSeedFNbNiZm@Base 15 + _D3std6random13bootstrapSeedFNbNiZm@Base 15 + _D3std6random17unpredictableSeedFNbNdNiNeZk@Base 15 + _D3std6random18RandomCoverChoices10__postblitMFNaNbNiNeZv@Base 15 + _D3std6random18RandomCoverChoices13opIndexAssignMFNaNbNiNebmZv@Base 15 + _D3std6random18RandomCoverChoices6__ctorMFNaNbNcNiNemZSQCbQCaQBw@Base 15 + _D3std6random18RandomCoverChoices6__dtorMFNaNbNiNeZv@Base 15 + _D3std6random18RandomCoverChoices6__initZ@Base 15 + _D3std6random18RandomCoverChoices6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std6random18RandomCoverChoices7opIndexMxFNaNbNiNemZb@Base 15 + _D3std6random6rndGenFNbNcNdNiNfZ11initializedb@Base 15 + _D3std6random6rndGenFNbNcNdNiNfZ6resultSQBmQBl__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc@Base 15 + _D3std6random6rndGenFNbNcNdNiNfZSQBfQBe__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc@Base 15 + _D3std6random__T12initMTEngineTSQBeQBd__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFcZQGfFNbNiNfMKQGcZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn4saveMxFNaNbNdNiNfZSQCyQCx__TQCtTkVki128Vii11ViN8ViN19ZQDt@Base 15 + _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl4saveMxFNaNbNdNiNfZSQCwQCv__TQCrTkVki160Vii2ViN1ViN4ZQDp@Base 15 + _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl4saveMxFNaNbNdNiNfZSQCwQCv__TQCrTkVki192ViN2Vii1Vii4ZQDp@Base 15 + _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn4saveMxFNaNbNdNiNfZSQCyQCx__TQCtTkVki32Vii13ViN17Vii15ZQDt@Base 15 + _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn4saveMxFNaNbNdNiNfZSQCyQCx__TQCtTkVki64Vii10ViN13ViN10ZQDt@Base 15 + _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm4saveMxFNaNbNdNiNfZSQCxQCw__TQCsTkVki96Vii10ViN5ViN26ZQDr@Base 15 + _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T17unpredictableSeedTmZQwFNbNdNiNeZm@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc12defaultStateFNaNbNiNfZSQGsQGr__TQGnTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKv5State@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc12popFrontImplFNaNbNiNfKSQGsQGr__TQGnTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKv5StateZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc4saveMxFNaNbNdNiNfZSQGnQGm__TQGiTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKq@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc5State6__initZ@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc6__ctorMFNaNbNcNiNfkZSQGpQGo__TQGkTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKs@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc6__initZ@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc8seedImplFNaNbNiNfkKSQGoQGn__TQGjTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKr5StateZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc__T4seedZQgMFNaNbNiNfkZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt12defaultStateFNaNbNiNfZSQIjQIi__TQIeTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQOd5State@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt12popFrontImplFNaNbNiNfKSQIjQIi__TQIeTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQOd5StateZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt4saveMxFNaNbNdNiNfZSQIeQId__TQHzTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQNy@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt5State6__initZ@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt5frontMxFNaNbNdNiNfZm@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt6__ctorMFNaNbNcNiNfmZSQIgQIf__TQIbTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQOa@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt6__initZ@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt8seedImplFNaNbNiNfmKSQIfQIe__TQIaTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQNz5StateZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt__T4seedZQgMFNaNbNiNfmZv@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc16primeFactorsOnlyFNaNbNiNfmZm@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc34properLinearCongruentialParametersFNaNbNiNfmmmZb@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc3gcdFNaNbNiNfmmZm@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc4saveMxFNaNbNdNiNfZSQDnQDm__TQDiTkVki16807Vki0Vki2147483647ZQEn@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc4seedMFNaNbNiNfkZv@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc6__ctorMFNaNbNcNiNfkZSQDpQDo__TQDkTkVki16807Vki0Vki2147483647ZQEp@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc6__initZ@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc16primeFactorsOnlyFNaNbNiNfmZm@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc34properLinearCongruentialParametersFNaNbNiNfmmmZb@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc3gcdFNaNbNiNfmmZm@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc4saveMxFNaNbNdNiNfZSQDnQDm__TQDiTkVki48271Vki0Vki2147483647ZQEn@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc4seedMFNaNbNiNfkZv@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc6__ctorMFNaNbNcNiNfkZSQDpQDo__TQDkTkVki48271Vki0Vki2147483647ZQEp@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc6__initZ@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc8popFrontMFNaNbNiNfZv@Base 15 + _D3std6socket10SocketType6__initZ@Base 15 + _D3std6socket10getAddressFNfMAxaMQeZACQBkQBj7Address@Base 15 + _D3std6socket10getAddressFNfMAxatZACQBiQBh7Address@Base 15 + _D3std6socket10socketPairFNeZG2CQBeQBd6Socket@Base 15 + _D3std6socket11AddressInfo11__xopEqualsMxFKxSQBrQBqQBmZb@Base 15 + _D3std6socket11AddressInfo6__initZ@Base 15 + _D3std6socket11AddressInfo9__xtoHashFNbNeKxSQBqQBpQBlZm@Base 15 + _D3std6socket11UnixAddress10setNameLenMFNekZv@Base 15 + _D3std6socket11UnixAddress4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCj8sockaddr@Base 15 + _D3std6socket11UnixAddress4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCl8sockaddr@Base 15 + _D3std6socket11UnixAddress4pathMxFNaNdNeZAya@Base 15 + _D3std6socket11UnixAddress6__ctorMFNaNbNiNfS4core3sys5posixQk2un11sockaddr_unZCQCzQCyQCu@Base 15 + _D3std6socket11UnixAddress6__ctorMFNaNbNiNfZCQBrQBqQBm@Base 15 + _D3std6socket11UnixAddress6__ctorMFNaNeMAxaZCQBrQBqQBm@Base 15 + _D3std6socket11UnixAddress6__initZ@Base 15 + _D3std6socket11UnixAddress6__vtblZ@Base 15 + _D3std6socket11UnixAddress7__ClassZ@Base 15 + _D3std6socket11UnixAddress7nameLenMxFNaNbNdNiNeZk@Base 15 + _D3std6socket11UnixAddress8toStringMxFNaNfZAya@Base 15 + _D3std6socket11__moduleRefZ@Base 15 + _D3std6socket12InternetHost12validHostentMFNfIPS4core3sys5posix5netdb7hostentZv@Base 15 + _D3std6socket12InternetHost13getHostByAddrMFNeMAxaZb@Base 15 + _D3std6socket12InternetHost13getHostByAddrMFNekZb@Base 15 + _D3std6socket12InternetHost13getHostByNameMFNeMAxaZb@Base 15 + _D3std6socket12InternetHost6__initZ@Base 15 + _D3std6socket12InternetHost6__vtblZ@Base 15 + _D3std6socket12InternetHost7__ClassZ@Base 15 + _D3std6socket12InternetHost8populateMFNaNbPS4core3sys5posix5netdb7hostentZv@Base 15 + _D3std6socket12InternetHost__T13getHostNoSyncVAyaa118_0a2020202020202020202020206175746f2078203d2068746f6e6c28706172616d293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TkZQKdMFkZb@Base 15 + _D3std6socket12InternetHost__T13getHostNoSyncVAyaa245_0a2020202020202020202020206175746f2078203d20696e65745f6164647228706172616d2e74656d7043537472696e672829293b0a202020202020202020202020656e666f726365287820213d20494e414444525f4e4f4e452c0a202020202020202020202020202020206e657720536f636b6574506172616d65746572457863657074696f6e2822496e76616c6964204950763420616464726573732229293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TAxaZQTzMFQjZb@Base 15 + _D3std6socket12InternetHost__T13getHostNoSyncVAyaa75_0a202020202020202020202020202020206175746f206865203d20676574686f737462796e616d6528706172616d2e74656d7043537472696e672829293b0a202020202020202020202020TAxaZQGwMFQjZb@Base 15 + _D3std6socket12InternetHost__T7getHostVAyaa118_0a2020202020202020202020206175746f2078203d2068746f6e6c28706172616d293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TkZQJwMFkZb@Base 15 + _D3std6socket12InternetHost__T7getHostVAyaa245_0a2020202020202020202020206175746f2078203d20696e65745f6164647228706172616d2e74656d7043537472696e672829293b0a202020202020202020202020656e666f726365287820213d20494e414444525f4e4f4e452c0a202020202020202020202020202020206e657720536f636b6574506172616d65746572457863657074696f6e2822496e76616c6964204950763420616464726573732229293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TAxaZQTsMFQjZb@Base 15 + _D3std6socket12InternetHost__T7getHostVAyaa75_0a202020202020202020202020202020206175746f206865203d20676574686f737462796e616d6528706172616d2e74656d7043537472696e672829293b0a202020202020202020202020TAxaZQGpMFQjZb@Base 15 + _D3std6socket12SocketOption6__initZ@Base 15 + _D3std6socket12__ModuleInfoZ@Base 15 + _D3std6socket12parseAddressFNfMAxaMQeZCQBlQBk7Address@Base 15 + _D3std6socket12parseAddressFNfMAxatZCQBjQBi7Address@Base 15 + _D3std6socket13HostException6__initZ@Base 15 + _D3std6socket13HostException6__vtblZ@Base 15 + _D3std6socket13HostException7__ClassZ@Base 15 + _D3std6socket13HostException8__mixin16__ctorMFNfAyaC6object9ThrowableQvmiZCQCvQCuQCq@Base 15 + _D3std6socket13HostException8__mixin16__ctorMFNfAyaQdmC6object9ThrowableiZCQCvQCuQCq@Base 15 + _D3std6socket13HostException8__mixin16__ctorMFNfAyaiQemC6object9ThrowableZCQCvQCuQCq@Base 15 + _D3std6socket13_SOCKET_ERRORxi@Base 15 + _D3std6socket13serviceToPortFNfMAxaZt@Base 15 + _D3std6socket14UnknownAddress4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCm8sockaddr@Base 15 + _D3std6socket14UnknownAddress4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCo8sockaddr@Base 15 + _D3std6socket14UnknownAddress6__initZ@Base 15 + _D3std6socket14UnknownAddress6__vtblZ@Base 15 + _D3std6socket14UnknownAddress7__ClassZ@Base 15 + _D3std6socket14UnknownAddress7nameLenMxFNaNbNdNiNfZk@Base 15 + _D3std6socket14formatGaiErrorFNeiZ12__critsec231OPv@Base 15 + _D3std6socket14formatGaiErrorFNeiZAya@Base 15 + _D3std6socket15InternetAddress12addrToStringFNbNekZAya@Base 15 + _D3std6socket15InternetAddress12toAddrStringMxFNeZAya@Base 15 + _D3std6socket15InternetAddress12toPortStringMxFNfZAya@Base 15 + _D3std6socket15InternetAddress16toHostNameStringMxFNfZAya@Base 15 + _D3std6socket15InternetAddress4addrMxFNaNbNdNiNfZk@Base 15 + _D3std6socket15InternetAddress4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCn8sockaddr@Base 15 + _D3std6socket15InternetAddress4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCp8sockaddr@Base 15 + _D3std6socket15InternetAddress4portMxFNaNbNdNiNfZt@Base 15 + _D3std6socket15InternetAddress5parseFNbNeMAxaZk@Base 15 + _D3std6socket15InternetAddress6__ctorMFNaNbNiNfS4core3sys5posix7netinet3in_11sockaddr_inZCQDkQDjQDf@Base 15 + _D3std6socket15InternetAddress6__ctorMFNaNbNiNfZCQBvQBuQBq@Base 15 + _D3std6socket15InternetAddress6__ctorMFNaNbNiNfktZCQBxQBwQBs@Base 15 + _D3std6socket15InternetAddress6__ctorMFNaNbNiNftZCQBwQBvQBr@Base 15 + _D3std6socket15InternetAddress6__ctorMFNfMAxatZCQBuQBtQBp@Base 15 + _D3std6socket15InternetAddress6__initZ@Base 15 + _D3std6socket15InternetAddress6__vtblZ@Base 15 + _D3std6socket15InternetAddress7__ClassZ@Base 15 + _D3std6socket15InternetAddress7nameLenMxFNaNbNdNiNfZk@Base 15 + _D3std6socket15InternetAddress8opEqualsMxFNfC6ObjectZb@Base 15 + _D3std6socket15SocketException6__initZ@Base 15 + _D3std6socket15SocketException6__vtblZ@Base 15 + _D3std6socket15SocketException7__ClassZ@Base 15 + _D3std6socket15SocketException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx@Base 15 + _D3std6socket15SocketException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDbQCx@Base 15 + _D3std6socket15lastSocketErrorFNdNfZAya@Base 15 + _D3std6socket16AddressException6__initZ@Base 15 + _D3std6socket16AddressException6__vtblZ@Base 15 + _D3std6socket16AddressException7__ClassZ@Base 15 + _D3std6socket16AddressException8__mixin16__ctorMFNfAyaC6object9ThrowableQvmiZCQCyQCxQCt@Base 15 + _D3std6socket16AddressException8__mixin16__ctorMFNfAyaQdmC6object9ThrowableiZCQCyQCxQCt@Base 15 + _D3std6socket16AddressException8__mixin16__ctorMFNfAyaiQemC6object9ThrowableZCQCyQCxQCt@Base 15 + _D3std6socket16AddressInfoFlags6__initZ@Base 15 + _D3std6socket16Internet6Address4addrMxFNaNbNdNiNfZG16h@Base 15 + _D3std6socket16Internet6Address4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCo8sockaddr@Base 15 + _D3std6socket16Internet6Address4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCq8sockaddr@Base 15 + _D3std6socket16Internet6Address4portMxFNaNbNdNiNfZt@Base 15 + _D3std6socket16Internet6Address5parseFNeMAxaZG16h@Base 15 + _D3std6socket16Internet6Address6__ctorMFNaNbNiNfG16htZCQCbQCaQBw@Base 15 + _D3std6socket16Internet6Address6__ctorMFNaNbNiNfS4core3sys5posix7netinet3in_12sockaddr_in6ZCQDmQDlQDh@Base 15 + _D3std6socket16Internet6Address6__ctorMFNaNbNiNfZCQBwQBvQBr@Base 15 + _D3std6socket16Internet6Address6__ctorMFNaNbNiNftZCQBxQBwQBs@Base 15 + _D3std6socket16Internet6Address6__ctorMFNeMAxaMQeZCQBxQBwQBs@Base 15 + _D3std6socket16Internet6Address6__ctorMFNfMAxatZCQBvQBuQBq@Base 15 + _D3std6socket16Internet6Address6__initZ@Base 15 + _D3std6socket16Internet6Address6__vtblZ@Base 15 + _D3std6socket16Internet6Address7__ClassZ@Base 15 + _D3std6socket16Internet6Address7nameLenMxFNaNbNdNiNfZk@Base 15 + _D3std6socket16Internet6Address8ADDR_ANYFNaNbNcNdNiNfZxG16h@Base 15 + _D3std6socket16wouldHaveBlockedFNbNiNfZb@Base 15 + _D3std6socket17SocketOSException6__ctorMFNfAyaC6object9ThrowableQvmiPFNeiZQBfZCQCzQCyQCu@Base 15 + _D3std6socket17SocketOSException6__ctorMFNfAyaQdmC6object9ThrowableiPFNeiZQBfZCQCzQCyQCu@Base 15 + _D3std6socket17SocketOSException6__ctorMFNfAyaiPFNeiZQkQmmC6object9ThrowableZCQCyQCxQCt@Base 15 + _D3std6socket17SocketOSException6__initZ@Base 15 + _D3std6socket17SocketOSException6__vtblZ@Base 15 + _D3std6socket17SocketOSException7__ClassZ@Base 15 + _D3std6socket17SocketOptionLevel6__initZ@Base 15 + _D3std6socket17formatSocketErrorFNeiZAya@Base 15 + _D3std6socket18getAddressInfoImplFMAxaMQePS4core3sys5posix5netdb8addrinfoZASQCwQCv11AddressInfo@Base 15 + _D3std6socket18getaddrinfoPointeryPUNbNiPxaQdPxS4core3sys5posix5netdb8addrinfoPPSQBhQBfQBeQBbQyZi@Base 15 + _D3std6socket18getnameinfoPointeryPUNbNiPxS4core3sys5posixQkQCc8sockaddrkPakQdkiZi@Base 15 + _D3std6socket19freeaddrinfoPointeryPUNbNiPS4core3sys5posix5netdb8addrinfoZv@Base 15 + _D3std6socket21SocketAcceptException6__initZ@Base 15 + _D3std6socket21SocketAcceptException6__vtblZ@Base 15 + _D3std6socket21SocketAcceptException7__ClassZ@Base 15 + _D3std6socket21SocketAcceptException8__mixin16__ctorMFNfAyaC6object9ThrowableQvmiZCQDdQDcQCy@Base 15 + _D3std6socket21SocketAcceptException8__mixin16__ctorMFNfAyaQdmC6object9ThrowableiZCQDdQDcQCy@Base 15 + _D3std6socket21SocketAcceptException8__mixin16__ctorMFNfAyaiQemC6object9ThrowableZCQDdQDcQCy@Base 15 + _D3std6socket22SocketFeatureException6__initZ@Base 15 + _D3std6socket22SocketFeatureException6__vtblZ@Base 15 + _D3std6socket22SocketFeatureException7__ClassZ@Base 15 + _D3std6socket22SocketFeatureException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDjQDiQDe@Base 15 + _D3std6socket22SocketFeatureException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDjQDiQDe@Base 15 + _D3std6socket23UnknownAddressReference4nameMFNaNbNdNiNfZPS4core3sys5posixQkQCr8sockaddr@Base 15 + _D3std6socket23UnknownAddressReference4nameMxFNaNbNdNiNfZPxS4core3sys5posixQkQCt8sockaddr@Base 15 + _D3std6socket23UnknownAddressReference6__ctorMFNaNbNiNfPS4core3sys5posixQkQCq8sockaddrkZCQDjQDiQDe@Base 15 + _D3std6socket23UnknownAddressReference6__ctorMFNaNbPxS4core3sys5posixQkQCn8sockaddrkZCQDgQDfQDb@Base 15 + _D3std6socket23UnknownAddressReference6__initZ@Base 15 + _D3std6socket23UnknownAddressReference6__vtblZ@Base 15 + _D3std6socket23UnknownAddressReference7__ClassZ@Base 15 + _D3std6socket23UnknownAddressReference7nameLenMxFNaNbNdNiNfZk@Base 15 + _D3std6socket24SocketParameterException6__initZ@Base 15 + _D3std6socket24SocketParameterException6__vtblZ@Base 15 + _D3std6socket24SocketParameterException7__ClassZ@Base 15 + _D3std6socket24SocketParameterException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDlQDkQDg@Base 15 + _D3std6socket24SocketParameterException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDlQDkQDg@Base 15 + _D3std6socket25_sharedStaticCtor_L291_C1FZv@Base 15 + _D3std6socket25_sharedStaticDtor_L326_C1FNbNiZv@Base 15 + _D3std6socket6Linger2onMNgFNaNbNcNdNiNjNfZNgi@Base 15 + _D3std6socket6Linger4timeMNgFNaNbNcNdNiNjNfZNgi@Base 15 + _D3std6socket6Linger6__initZ@Base 15 + _D3std6socket6Socket11receiveFromMFNeMAvEQBnQBm11SocketFlagsKCQCiQCh7AddressZl@Base 15 + _D3std6socket6Socket11receiveFromMFNeMAvEQBnQBm11SocketFlagsZl@Base 15 + _D3std6socket6Socket11receiveFromMFNfMAvKCQBoQBn7AddressZl@Base 15 + _D3std6socket6Socket11receiveFromMFNfMAvZl@Base 15 + _D3std6socket6Socket12getErrorTextMFNfZAya@Base 15 + _D3std6socket6Socket12localAddressMFNdNeZCQBoQBn7Address@Base 15 + _D3std6socket6Socket12setKeepAliveMFNeiiZv@Base 15 + _D3std6socket6Socket13addressFamilyMFNdNfZEQBpQBo13AddressFamily@Base 15 + _D3std6socket6Socket13createAddressMFNaNbNfZCQBrQBq7Address@Base 15 + _D3std6socket6Socket13remoteAddressMFNdNeZCQBpQBo7Address@Base 15 + _D3std6socket6Socket4bindMFNeCQBcQBb7AddressZv@Base 15 + _D3std6socket6Socket4sendMFNeMAxvEQBgQBf11SocketFlagsZl@Base 15 + _D3std6socket6Socket4sendMFNfMAxvZl@Base 15 + _D3std6socket6Socket5closeMFNbNiNlNeZv@Base 15 + _D3std6socket6Socket6__ctorMFNaNbNiNfEQBkQBj8socket_tEQCaQBz13AddressFamilyZCQCxQCwQCs@Base 15 + _D3std6socket6Socket6__ctorMFNaNbNiNfZCQBlQBkQBg@Base 15 + _D3std6socket6Socket6__ctorMFNeEQBeQBd13AddressFamilyEQCaQBz10SocketTypeEQCtQCs12ProtocolTypeZCQDpQDoQDk@Base 15 + _D3std6socket6Socket6__ctorMFNeEQBeQBd13AddressFamilyEQCaQBz10SocketTypeMAxaZCQCyQCxQCt@Base 15 + _D3std6socket6Socket6__ctorMFNfEQBeQBd13AddressFamilyEQCaQBz10SocketTypeZCQCuQCtQCp@Base 15 + _D3std6socket6Socket6__ctorMFNfMxSQBgQBf11AddressInfoZCQCbQCaQBw@Base 15 + _D3std6socket6Socket6__dtorMFNbNiNlNfZv@Base 15 + _D3std6socket6Socket6__initZ@Base 15 + _D3std6socket6Socket6__vtblZ@Base 15 + _D3std6socket6Socket6_closeFNbNiEQBfQBe8socket_tZv@Base 15 + _D3std6socket6Socket6acceptMFNeZCQBfQBeQBa@Base 15 + _D3std6socket6Socket6handleMxFNaNbNdNiNfZEQBoQBn8socket_t@Base 15 + _D3std6socket6Socket6listenMFNeiZv@Base 15 + _D3std6socket6Socket6selectFNeCQBdQBc9SocketSetQrQtPSQBzQBy7TimeValZi@Base 15 + _D3std6socket6Socket6selectFNeCQBdQBc9SocketSetQrQtS4core4time8DurationZi@Base 15 + _D3std6socket6Socket6selectFNfCQBdQBc9SocketSetQrQtZi@Base 15 + _D3std6socket6Socket6sendToMFNeMAxvEQBiQBh11SocketFlagsCQCcQCb7AddressZl@Base 15 + _D3std6socket6Socket6sendToMFNeMAxvEQBiQBh11SocketFlagsZl@Base 15 + _D3std6socket6Socket6sendToMFNfMAxvCQBiQBh7AddressZl@Base 15 + _D3std6socket6Socket6sendToMFNfMAxvZl@Base 15 + _D3std6socket6Socket7__ClassZ@Base 15 + _D3std6socket6Socket7connectMFNeCQBfQBe7AddressZv@Base 15 + _D3std6socket6Socket7isAliveMxFNdNeZb@Base 15 + _D3std6socket6Socket7receiveMFNeMAvEQBiQBh11SocketFlagsZl@Base 15 + _D3std6socket6Socket7receiveMFNfMAvZl@Base 15 + _D3std6socket6Socket7releaseMFNaNbNdNiNfZEQBoQBn8socket_t@Base 15 + _D3std6socket6Socket7setSockMFNfEQBfQBe8socket_tZv@Base 15 + _D3std6socket6Socket8blockingMFNdNebZv@Base 15 + _D3std6socket6Socket8blockingMxFNbNdNiNeZb@Base 15 + _D3std6socket6Socket8capToIntFNbNiNfmZi@Base 15 + _D3std6socket6Socket8hostNameFNdNeZAya@Base 15 + _D3std6socket6Socket8shutdownMFNbNiNeEQBkQBj14SocketShutdownZv@Base 15 + _D3std6socket6Socket9acceptingMFNaNbNfZCQBmQBlQBh@Base 15 + _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionJS4core4time8DurationZv@Base 15 + _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionJSQDdQDc6LingerZi@Base 15 + _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionJiZi@Base 15 + _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionMAvZi@Base 15 + _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionMAvZv@Base 15 + _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionS4core4time8DurationZv@Base 15 + _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionSQDcQDb6LingerZv@Base 15 + _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptioniZv@Base 15 + _D3std6socket7Address10setNameLenMFNfkZv@Base 15 + _D3std6socket7Address12toAddrStringMxFNfZAya@Base 15 + _D3std6socket7Address12toHostStringMxFNebZAya@Base 15 + _D3std6socket7Address12toPortStringMxFNfZAya@Base 15 + _D3std6socket7Address13addressFamilyMxFNaNbNdNiNfZEQBxQBw13AddressFamily@Base 15 + _D3std6socket7Address15toServiceStringMxFNebZAya@Base 15 + _D3std6socket7Address16toHostNameStringMxFNfZAya@Base 15 + _D3std6socket7Address19toServiceNameStringMxFNfZAya@Base 15 + _D3std6socket7Address6__initZ@Base 15 + _D3std6socket7Address6__vtblZ@Base 15 + _D3std6socket7Address7__ClassZ@Base 15 + _D3std6socket7Address8toStringMxFNfZAya@Base 15 + _D3std6socket7Service16getServiceByNameMFNbNeMAxaMQeZb@Base 15 + _D3std6socket7Service16getServiceByPortMFNbNetMAxaZb@Base 15 + _D3std6socket7Service6__initZ@Base 15 + _D3std6socket7Service6__vtblZ@Base 15 + _D3std6socket7Service7__ClassZ@Base 15 + _D3std6socket7Service8populateMFNaNbPS4core3sys5posix5netdb7serventZv@Base 15 + _D3std6socket7TimeVal12microsecondsMNgFNaNbNcNdNiNjNfZNgl@Base 15 + _D3std6socket7TimeVal6__initZ@Base 15 + _D3std6socket7TimeVal7secondsMNgFNaNbNcNdNiNjNfZNgl@Base 15 + _D3std6socket8Protocol17getProtocolByNameMFNbNeMAxaZb@Base 15 + _D3std6socket8Protocol17getProtocolByTypeMFNbNeEQBuQBt12ProtocolTypeZb@Base 15 + _D3std6socket8Protocol6__initZ@Base 15 + _D3std6socket8Protocol6__vtblZ@Base 15 + _D3std6socket8Protocol7__ClassZ@Base 15 + _D3std6socket8Protocol8populateMFNaNbPS4core3sys5posix5netdb8protoentZv@Base 15 + _D3std6socket8_lasterrFNbNiNfZi@Base 15 + _D3std6socket8socket_t6__initZ@Base 15 + _D3std6socket9SocketSet14setMinCapacityMFNaNbNfmZv@Base 15 + _D3std6socket9SocketSet3addMFNaNbNeEQBiQBh8socket_tZv@Base 15 + _D3std6socket9SocketSet3addMFNaNbNfCQBiQBh6SocketZv@Base 15 + _D3std6socket9SocketSet3maxMxFNaNbNdNiNfZk@Base 15 + _D3std6socket9SocketSet4maskFNaNbNiNfkZl@Base 15 + _D3std6socket9SocketSet5isSetMxFNaNbNiNfCQBnQBm6SocketZi@Base 15 + _D3std6socket9SocketSet5isSetMxFNaNbNiNfEQBnQBm8socket_tZi@Base 15 + _D3std6socket9SocketSet5resetMFNaNbNiNfZv@Base 15 + _D3std6socket9SocketSet6__ctorMFNaNbNfmZCQBnQBmQBi@Base 15 + _D3std6socket9SocketSet6__initZ@Base 15 + _D3std6socket9SocketSet6__vtblZ@Base 15 + _D3std6socket9SocketSet6removeMFNaNbNfCQBlQBk6SocketZv@Base 15 + _D3std6socket9SocketSet6removeMFNaNbNfEQBlQBk8socket_tZv@Base 15 + _D3std6socket9SocketSet6resizeMFNaNbNfmZv@Base 15 + _D3std6socket9SocketSet7__ClassZ@Base 15 + _D3std6socket9SocketSet7selectnMxFNaNbNiNfZi@Base 15 + _D3std6socket9SocketSet8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std6socket9SocketSet8toFd_setMFNaNbNiNeZPS4core3sys5posixQk6select6fd_set@Base 15 + _D3std6socket9SocketSet9lengthForFNaNbNiNfmZm@Base 15 + _D3std6socket9TcpSocket6__ctorMFNfCQBhQBg7AddressZCQBxQBwQBs@Base 15 + _D3std6socket9TcpSocket6__ctorMFNfEQBhQBg13AddressFamilyZCQCeQCdQBz@Base 15 + _D3std6socket9TcpSocket6__ctorMFNfZCQBiQBhQBd@Base 15 + _D3std6socket9TcpSocket6__initZ@Base 15 + _D3std6socket9TcpSocket6__vtblZ@Base 15 + _D3std6socket9TcpSocket7__ClassZ@Base 15 + _D3std6socket9UdpSocket6__ctorMFNfEQBhQBg13AddressFamilyZCQCeQCdQBz@Base 15 + _D3std6socket9UdpSocket6__ctorMFNfZCQBiQBhQBd@Base 15 + _D3std6socket9UdpSocket6__initZ@Base 15 + _D3std6socket9UdpSocket6__vtblZ@Base 15 + _D3std6socket9UdpSocket7__ClassZ@Base 15 + _D3std6socket__T14getAddressInfoTAxaTEQBkQBj13AddressFamilyZQBsFNfMQBiMQBmMQBmZASQDbQDa11AddressInfo@Base 15 + _D3std6socket__T14getAddressInfoTAxaTEQBkQBj16AddressInfoFlagsZQBvFNfMQBlMQBpMQBpZASQDeQDd11AddressInfo@Base 15 + _D3std6socket__T14getAddressInfoTAxaZQvFNfMQkMQnZASQBxQBw11AddressInfo@Base 15 + _D3std6socket__T14getAddressInfoTEQBgQBf16AddressInfoFlagsZQBrFNfMAxaMQBlZASQCwQCv11AddressInfo@Base 15 + _D3std6stdint11__moduleRefZ@Base 15 + _D3std6stdint12__ModuleInfoZ@Base 15 + _D3std6string11__moduleRefZ@Base 15 + _D3std6string12__ModuleInfoZ@Base 15 + _D3std6string14makeTransTableFNaNbNiNfMAxaMQeZG256a@Base 15 + _D3std6string15StringException6__initZ@Base 15 + _D3std6string15StringException6__vtblZ@Base 15 + _D3std6string15StringException7__ClassZ@Base 15 + _D3std6string15StringException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx@Base 15 + _D3std6string15StringException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDbQCx@Base 15 + _D3std6string6abbrevFNaNfAAyaZHQfQh@Base 15 + _D3std6string7soundexFNaNbNfMAxaNkMAaZQd@Base 15 + _D3std6string9makeTransFNaNbNeMAxaMQeZAya@Base 15 + _D3std6string9toStringzFNaNbNeMAxaZPya@Base 15 + _D3std6string__T10stripRightTAyaZQrFNaNbNiNfQpZQs@Base 15 + _D3std6string__T11_indexOfStrVEQBd8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoi0Z__TQDbTAxaTaZQDlFNaNfQoQqZl@Base 15 + _D3std6string__T11_indexOfStrVEQBd8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoi1Z__TQDbTAxaTaZQDlFNaNbNiNfQsQuZl@Base 15 + _D3std6string__T11_indexOfStrVEQBd8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoi1Z__TQDbTQBvTaZQDlFNaNbNiNfQCnAxaZl@Base 15 + _D3std6string__T11lastIndexOfTaZQqFNaNiNfAxaIwIEQBu8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf11__xopEqualsMxFKxSQEpQEo__TQEkVQDzi0TQDjZQEyZb@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf4saveMFNaNbNdNiNfZSQEpQEo__TQEkVQDzi0TQDjZQEy@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf5emptyMFNaNbNdNiNfZb@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf5frontMFNaNbNdNiNfZQCq@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf6__ctorMFNaNbNcNiNfQCqZSQEuQEt__TQEpVQEei0TQDoZQFd@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf6__initZ@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf8popFrontMFNaNbNiNfZv@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf9__xtoHashFNbNeKxSQEoQEn__TQEjVQDyi0TQDiZQExZm@Base 15 + _D3std6string__T12lineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TyaZQDeFNaNbNiNfQCfZSQEjQEi__T12LineSplitterVQEei0TQDoZQz@Base 15 + _D3std6string__T14representationTxaZQuFNaNbNiNfAxaZAxh@Base 15 + _D3std6string__T14representationTyaZQuFNaNbNiNfAyaZAyh@Base 15 + _D3std6string__T5chompTAxaZQlFNaNbNiNfQpZQs@Base 15 + _D3std6string__T5stripTAyaZQlFNaNbNiNfQpZQs@Base 15 + _D3std6string__T7indexOfTAxaTaZQpFNaNbNiNfQrQtZl@Base 15 + _D3std6string__T7indexOfTAxaTaZQpFNaNfQnQpIEQBq8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 + _D3std6string__T7indexOfTAyaTaZQpFNaNbNiNfQrAxaZl@Base 15 + _D3std6string__T7indexOfTaZQlFNaNbNiNfMAxawEQBq8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 + _D3std6string__T8_indexOfTAxaZQoFNaNbNiNfQpwEQBr8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 + _D3std6string__T8_indexOfTAxaZQoFQhwEQBj8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZ13trustedmemchrFNaNbNiNeQDqaZl@Base 15 + _D3std6string__T9isNumericTAxaZQpFNaNbNiNfQpbZb@Base 15 + _D3std6string__T9isNumericTAxaZQpFQhbZ__T8asciiCmpTSQBy3utf__T10byCodeUnitTQBwZQrFQCdZ14ByCodeUnitImplZQCkFNaNbNiNfQCmAyaZb@Base 15 + _D3std6string__T9soundexerTAxaZQpFNaNbNiNfQpZG4a@Base 15 + _D3std6string__T9soundexerTAxaZQpFQhZ3dexyAa@Base 15 + _D3std6string__T9stripLeftTAyaZQpFNaNbNiNfQpZQs@Base 15 + _D3std6system11__moduleRefZ@Base 15 + _D3std6system12__ModuleInfoZ@Base 15 + _D3std6system26instructionSetArchitectureyEQBpQBo3ISA@Base 15 + _D3std6system2OS6__initZ@Base 15 + _D3std6system2osyEQqQo2OS@Base 15 + _D3std6system6endianyEQuQs6Endian@Base 15 + _D3std6traits11__moduleRefZ@Base 15 + _D3std6traits11dip1000TestFNaNbNiNfiZi@Base 15 + _D3std6traits12__ModuleInfoZ@Base 15 + _D3std6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D3std6traits__T18extractAttribFlagsVAyaa7_6e6f7468726f77VQva5_406e6f6763VQBla5_4073616665ZQCxFNaNbNiNfZEQDzQDy17FunctionAttribute@Base 15 + _D3std7complex11__moduleRefZ@Base 15 + _D3std7complex12__ModuleInfoZ@Base 15 + _D3std7complex4expiFNaNbNiNeeZSQBdQBc__T7ComplexTeZQl@Base 15 + _D3std7complex9coshisinhFNaNbNiNfeZSQBiQBh__T7ComplexTeZQl@Base 15 + _D3std7complex__T7ComplexTeZQl11__xopEqualsMxFKxSQBvQBu__TQBpTeZQBvZb@Base 15 + _D3std7complex__T7ComplexTeZQl6__initZ@Base 15 + _D3std7complex__T7ComplexTeZQl8toNativeMFNaNbNiNfZE4core4stdc6config16__c_complex_real@Base 15 + _D3std7complex__T7ComplexTeZQl8toStringMxFNaNfZAya@Base 15 + _D3std7complex__T7ComplexTeZQl8toStringMxFNfZ__T19trustedAssumeUniqueTAaZQzFNaNbNiNeQoZAya@Base 15 + _D3std7complex__T7ComplexTeZQl9__xtoHashFNbNeKxSQBuQBt__TQBoTeZQBuZm@Base 15 + _D3std7complex__T7ComplexTeZQl__T6__ctorHTeHTeZQoMFNaNbNcNiNfxexeZSQCnQCm__TQChTeZQCn@Base 15 + _D3std7complex__T7ComplexTeZQl__T8opEqualsHTeZQnMxFNaNbNiNfSQCgQCf__TQCaTeZQCgZb@Base 15 + _D3std7complex__T7ComplexTeZQl__T8toStringTDFNaNbNfAxaZvTaZQBaMxFNaNfMQBbMKxSQCx6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std7numeric11__moduleRefZ@Base 15 + _D3std7numeric12__ModuleInfoZ@Base 15 + _D3std7numeric16CustomFloatFlags6__initZ@Base 15 + _D3std7numeric18decimalToFactorialFNaNbNiNfmKG21hZm@Base 15 + _D3std7numeric20isCorrectCustomFloatFNaNbNiNfkkEQBuQBt16CustomFloatFlagsZb@Base 15 + _D3std7numeric3Fft4sizeMxFNdZm@Base 15 + _D3std7numeric3Fft6__ctorMFAfZCQBdQBcQx@Base 15 + _D3std7numeric3Fft6__ctorMFmZCQBcQBbQw@Base 15 + _D3std7numeric3Fft6__initZ@Base 15 + _D3std7numeric3Fft6__vtblZ@Base 15 + _D3std7numeric3Fft7__ClassZ@Base 15 + _D3std7numeric__T13oppositeSignsTyeTeZQvFNaNbNiNfyeeZb@Base 15 + _D3std7numeric__T6StrideTAfZQl11__xopEqualsMxFKxSQBvQBu__TQBpTQBlZQBxZb@Base 15 + _D3std7numeric__T6StrideTAfZQl11doubleStepsMFNaNbNiNfZv@Base 15 + _D3std7numeric__T6StrideTAfZQl4saveMFNaNbNdNiNfZSQBvQBu__TQBpTQBlZQBx@Base 15 + _D3std7numeric__T6StrideTAfZQl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std7numeric__T6StrideTAfZQl5frontMFNaNbNdNiNfZf@Base 15 + _D3std7numeric__T6StrideTAfZQl6__ctorMFNaNbNcNiNfQymZSQCaQBz__TQBuTQBqZQCc@Base 15 + _D3std7numeric__T6StrideTAfZQl6__initZ@Base 15 + _D3std7numeric__T6StrideTAfZQl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std7numeric__T6StrideTAfZQl6nStepsMFNaNbNdNiNfmZm@Base 15 + _D3std7numeric__T6StrideTAfZQl6nStepsMxFNaNbNdNiNfZm@Base 15 + _D3std7numeric__T6StrideTAfZQl7opIndexMFNaNbNiNfmZf@Base 15 + _D3std7numeric__T6StrideTAfZQl7popHalfMFNaNbNiNfZv@Base 15 + _D3std7numeric__T6StrideTAfZQl8popFrontMFNaNbNiNfZv@Base 15 + _D3std7numeric__T6StrideTAfZQl9__xtoHashFNbNeKxSQBuQBt__TQBoTQBkZQBwZm@Base 15 + _D3std7numeric__T8findRootTeTDFNaNbNiNfeZeTPFNaNbNiNfeeZbZQBpFNaNbNiNfMQBqxexeMQBkZe@Base 15 + _D3std7numeric__T8findRootTeTDFNaNbNiNfeZeZQBaFMQtxexeZ18__lambda_L1165_C30FNaNbNiNfeeZb@Base 15 + _D3std7numeric__T8findRootTeTDFNaNbNiNfeZeZQBaFNaNbNiNfMQBbxexeZe@Base 15 + _D3std7numeric__T8findRootTeTeTDFNaNbNiNfeZeTPFNaNbNiNfeeZbZQBrFMQBixexexexeMQBgZ18secant_interpolateFNaNbNiNfeeeeZe@Base 15 + _D3std7numeric__T8findRootTeTeTDFNaNbNiNfeZeTPFNaNbNiNfeeZbZQBrFNaNbNiNfMQBqxexexexeMQBoZSQDk8typecons__T5TupleTeTeTeTeZQp@Base 15 + _D3std7process10setCLOEXECFNbNiibZv@Base 15 + _D3std7process10spawnShellFNeMAxaMxHAyaAyaSQBpQBo6ConfigMQBbMQzZCQClQCk3Pid@Base 15 + _D3std7process10spawnShellFNeMAxaSQBg5stdio4FileQpQrMxHAyaAyaSQCiQCh6ConfigMQBuMQzZCQDeQDd3Pid@Base 15 + _D3std7process10toAStringzFIAAyaZPPxa@Base 15 + _D3std7process11__moduleRefZ@Base 15 + _D3std7process11environment13opIndexAssignFNeNkMNgAaMAxaZANga@Base 15 + _D3std7process11environment3getFNfMAxaAyaZQe@Base 15 + _D3std7process11environment4toAAFNeZHAyaQd@Base 15 + _D3std7process11environment6__initZ@Base 15 + _D3std7process11environment6__vtblZ@Base 15 + _D3std7process11environment6removeFNbNiNeMAxaZv@Base 15 + _D3std7process11environment7__ClassZ@Base 15 + _D3std7process11environment7getImplFNeMAxaMDFNfQiZvZv@Base 15 + _D3std7process11environment7opIndexFNfMAxaZAya@Base 15 + _D3std7process11environment__T14cachedToStringTaZQtFNbNfMAxaZAya@Base 15 + _D3std7process11environment__T14cachedToStringTaZQtFNfMAxaZ10lastResultAya@Base 15 + _D3std7process11nativeShellFNaNbNdNiNfZAya@Base 15 + _D3std7process11pipeProcessFNfMAxAaEQBiQBh8RedirectxHAyaAyaSQCgQCf6ConfigMAxaZSQCzQCy12ProcessPipes@Base 15 + _D3std7process11pipeProcessFNfMAxaEQBhQBg8RedirectxHAyaAyaSQCfQCe6ConfigMQBqZSQCyQCx12ProcessPipes@Base 15 + _D3std7process11shellSwitchyAa@Base 15 + _D3std7process12ProcessPipes11__fieldDtorMFNeZv@Base 15 + _D3std7process12ProcessPipes11__xopEqualsMxFKxSQBtQBsQBnZb@Base 15 + _D3std7process12ProcessPipes15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std7process12ProcessPipes3pidMFNbNdNfZCQBoQBn3Pid@Base 15 + _D3std7process12ProcessPipes5stdinMFNbNdNfZSQBq5stdio4File@Base 15 + _D3std7process12ProcessPipes6__initZ@Base 15 + _D3std7process12ProcessPipes6stderrMFNbNdNfZSQBr5stdio4File@Base 15 + _D3std7process12ProcessPipes6stdoutMFNbNdNfZSQBr5stdio4File@Base 15 + _D3std7process12ProcessPipes8opAssignMFNcNjNeSQBsQBrQBmZQl@Base 15 + _D3std7process12ProcessPipes9__xtoHashFNbNeKxSQBsQBrQBmZm@Base 15 + _D3std7process12__ModuleInfoZ@Base 15 + _D3std7process12executeShellFNfMAxaxHAyaAyaSQBqQBp6ConfigmMQBbQzZSQCm8typecons__T5TupleTiVQCba6_737461747573TQCuVQCya6_6f7574707574ZQBz@Base 15 + _D3std7process12spawnProcessFNeMAxAaxHAyaAyaSQBrQBq6ConfigMAxaZCQCkQCj3Pid@Base 15 + _D3std7process12spawnProcessFNeMAxaSQBi5stdio4FileQpQrxHAyaAyaSQCjQCi6ConfigMQBtZCQDcQDb3Pid@Base 15 + _D3std7process12spawnProcessFNeMAxaxHAyaAyaSQBqQBp6ConfigMQBaZCQCjQCi3Pid@Base 15 + _D3std7process12spawnProcessFNfMAxAaSQBj5stdio4FileQpQrxHAyaAyaSQCkQCj6ConfigMxQBtZCQDeQDd3Pid@Base 15 + _D3std7process12thisThreadIDFNbNdNiNeZm@Base 15 + _D3std7process13charAllocatorFNaNbNfmZAa@Base 15 + _D3std7process13searchPathForFNfMAxaZAya@Base 15 + _D3std7process13thisProcessIDFNbNdNiNeZi@Base 15 + _D3std7process14uniqueTempPathFNfZAya@Base 15 + _D3std7process16ProcessException12newFromErrnoFAyaQdmZCQCbQCaQBv@Base 15 + _D3std7process16ProcessException12newFromErrnoFiAyaQdmZCQCcQCbQBw@Base 15 + _D3std7process16ProcessException6__initZ@Base 15 + _D3std7process16ProcessException6__vtblZ@Base 15 + _D3std7process16ProcessException7__ClassZ@Base 15 + _D3std7process16ProcessException8__mixin36__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDeQDdQCy@Base 15 + _D3std7process16ProcessException8__mixin36__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDeQDdQCy@Base 15 + _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZ12abortOnErrorFNbNiiEQEdQEc13InternalErroriZv@Base 15 + _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZ5getFDFNfKQCfZi@Base 15 + _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZ9forkChildMFNbNiZ11execProcessMFZ9closefromMFiZ17tryGlibcClosefromFNbNiiZb@Base 15 + _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZCQDjQDi3Pid@Base 15 + _D3std7process18escapeShellCommandFNaNfAxAaXAya@Base 15 + _D3std7process19escapePosixArgumentFNaNbNeMAxaZAya@Base 15 + _D3std7process19escapeShellFileNameFNaNbNeMAxaZAya@Base 15 + _D3std7process20escapeShellArgumentsFNaNbNeAxAaX9allocatorMFNaNbNfmZAa@Base 15 + _D3std7process20escapeShellArgumentsFNaNbNeAxAaXAya@Base 15 + _D3std7process21escapeWindowsArgumentFNaNbNeMAxaZAya@Base 15 + _D3std7process24escapeShellCommandStringFNaNfNkMAyaZQe@Base 15 + _D3std7process25escapeWindowsShellCommandFNaNfMAxaZAya@Base 15 + _D3std7process3Pid11performWaitMFNebZi@Base 15 + _D3std7process3Pid6__ctorMFNaNbNfibZCQBjQBiQBd@Base 15 + _D3std7process3Pid6__initZ@Base 15 + _D3std7process3Pid6__vtblZ@Base 15 + _D3std7process3Pid7__ClassZ@Base 15 + _D3std7process3Pid8osHandleMFNaNbNdNiNfZi@Base 15 + _D3std7process3Pid9processIDMxFNaNbNdNfZi@Base 15 + _D3std7process4Pipe11__fieldDtorMFNeZv@Base 15 + _D3std7process4Pipe11__xopEqualsMxFKxSQBkQBjQBeZb@Base 15 + _D3std7process4Pipe15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std7process4Pipe5closeMFNfZv@Base 15 + _D3std7process4Pipe6__initZ@Base 15 + _D3std7process4Pipe7readEndMFNbNdNfZSQBj5stdio4File@Base 15 + _D3std7process4Pipe8opAssignMFNcNjNeSQBjQBiQBdZQl@Base 15 + _D3std7process4Pipe8writeEndMFNbNdNfZSQBk5stdio4File@Base 15 + _D3std7process4Pipe9__xtoHashFNbNeKxSQBjQBiQBdZm@Base 15 + _D3std7process4killFCQtQr3PidZv@Base 15 + _D3std7process4killFCQtQr3PidiZv@Base 15 + _D3std7process4pipeFNeZSQwQu4Pipe@Base 15 + _D3std7process4waitFNfCQvQt3PidZi@Base 15 + _D3std7process5execvFIAyaIAQfZi@Base 15 + _D3std7process6Config6__initZ@Base 15 + _D3std7process6browseFNbNiNfMAxaZ18__lambda_L4546_C33FNbNiNeZPa@Base 15 + _D3std7process6browseFNbNiNfMAxaZv@Base 15 + _D3std7process6execv_FIAyaIAQfZi@Base 15 + _D3std7process6execveFIAyaIAQfIQeZi@Base 15 + _D3std7process6execvpFIAyaIAQfZi@Base 15 + _D3std7process7executeFNfMAxAaxHAyaAyaSQBlQBk6ConfigmMAxaZSQCf8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 + _D3std7process7executeFNfMAxaxHAyaAyaSQBkQBj6ConfigmMQBbZSQCe8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 + _D3std7process7execve_FIAyaIAQfIQeZi@Base 15 + _D3std7process7execvp_FIAyaIAQfZi@Base 15 + _D3std7process7execvpeFIAyaIAQfIQeZi@Base 15 + _D3std7process7tryWaitFNfCQyQw3PidZSQBi8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg@Base 15 + _D3std7process8Redirect6__initZ@Base 15 + _D3std7process8execvpe_FIAyaIAQfIQeZi@Base 15 + _D3std7process9createEnvFxHAyaAyabZPxPa@Base 15 + _D3std7process9pipeShellFNfMAxaEQBeQBd8RedirectxHAyaAyaSQCcQCb6ConfigMQBqQyZSQCxQCw12ProcessPipes@Base 15 + _D3std7process9userShellFNdNfZAya@Base 15 + _D3std7process__T11executeImplSQBdQBc11pipeProcessTAxAaZQBnFNeQlxHAyaAyaSQCtQCs6ConfigmMAxaZSQDn8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 + _D3std7process__T11executeImplSQBdQBc11pipeProcessTAxaZQBmFNeQkxHAyaAyaSQCsQCr6ConfigmMQBkZSQDm8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 + _D3std7process__T11executeImplS_DQBfQBe9pipeShellFNfMAxaEQCdQCc8RedirectxHAyaAyaSQDbQDa6ConfigMQBqQyZSQDwQDv12ProcessPipesTQCsTQCbZQEkFNeQDgxQCqQCmmMQDsQDaZSQFz8typecons__T5TupleTiVQEda6_737461747573TQEwVQFaa6_6f7574707574ZQBz@Base 15 + _D3std7process__T12isExecutableTSQBf5range__T5chainTSQBz3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDyQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFNbNiNeQFfZb@Base 15 + _D3std7process__T15pipeProcessImplSQBhQBg10spawnShellTAxaTAyaZQBtFNeMQpEQCsQCr8RedirectxHQBfAyaSQDqQDp6ConfigMQCeQCdZSQEmQEl12ProcessPipes@Base 15 + _D3std7process__T15pipeProcessImplSQBhQBg12spawnProcessTAxAaZQBsFNeMQmEQCrQCq8RedirectxHAyaAyaSQDpQDo6ConfigMAxaZSQEiQEh12ProcessPipes@Base 15 + _D3std7process__T15pipeProcessImplSQBhQBg12spawnProcessTAxaZQBrFNeMQlEQCqQCp8RedirectxHAyaAyaSQDoQDn6ConfigMQCaZSQEhQEg12ProcessPipes@Base 15 + _D3std7process__T23escapePosixArgumentImplS_DQBrQBq13charAllocatorFNaNbNfmZAaZQCjFNaNbNfMAxaZQs@Base 15 + _D3std7process__T25escapeWindowsArgumentImplS_DQBtQBs13charAllocatorFNaNbNfmZAaZQClFNaNbNfMAxaZQs@Base 15 + _D3std7signals11__moduleRefZ@Base 15 + _D3std7signals12__ModuleInfoZ@Base 15 + _D3std7signals6linkinFZv@Base 15 + _D3std7sumtype11__moduleRefZ@Base 15 + _D3std7sumtype12__ModuleInfoZ@Base 15 + _D3std7sumtype14MatchException6__ctorMFNaNbNiNfAyaQdmZCQCbQCaQBv@Base 15 + _D3std7sumtype14MatchException6__initZ@Base 15 + _D3std7sumtype14MatchException6__vtblZ@Base 15 + _D3std7sumtype14MatchException7__ClassZ@Base 15 + _D3std7sumtype4This6__initZ@Base 15 + _D3std7variant11__moduleRefZ@Base 15 + _D3std7variant12__ModuleInfoZ@Base 15 + _D3std7variant15FakeComplexReal11__xopEqualsMxFKxSQBwQBvQBqZb@Base 15 + _D3std7variant15FakeComplexReal6__initZ@Base 15 + _D3std7variant15FakeComplexReal9__xtoHashFNbNeKxSQBvQBuQBpZm@Base 15 + _D3std7variant16VariantException6__ctorMFAyaZCQBsQBrQBm@Base 15 + _D3std7variant16VariantException6__ctorMFC8TypeInfoQkZCQCbQCaQBv@Base 15 + _D3std7variant16VariantException6__initZ@Base 15 + _D3std7variant16VariantException6__vtblZ@Base 15 + _D3std7variant16VariantException7__ClassZ@Base 15 + _D3std7variant__T8VariantNVmi32ZQp10__postblitMFZv@Base 15 + _D3std7variant__T8VariantNVmi32ZQp11SizeChecker6__initZ@Base 15 + _D3std7variant__T8VariantNVmi32ZQp11__xopEqualsMxFKxSQBzQBy__TQBtVmi32ZQCcZb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp4typeMxFNbNdNeZC8TypeInfo@Base 15 + _D3std7variant__T8VariantNVmi32ZQp5opCmpMxFKxSQBsQBr__TQBmVmi32ZQBvZi@Base 15 + _D3std7variant__T8VariantNVmi32ZQp6__dtorMFNfZv@Base 15 + _D3std7variant__T8VariantNVmi32ZQp6__initZ@Base 15 + _D3std7variant__T8VariantNVmi32ZQp6lengthMFNdZm@Base 15 + _D3std7variant__T8VariantNVmi32ZQp6toHashMxFNbNfZm@Base 15 + _D3std7variant__T8VariantNVmi32ZQp8hasValueMxFNaNbNdNiNfZb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp8toStringMFZAya@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T10convertsToTSQBx11concurrency3TidZQBjMxFNdZb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T3getTSQBp11concurrency3TidZQBbMNgFNdZNgSQCxQBiQy@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T4peekTvZQiMNgFNbNdNfZPNgv@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T5opCmpTSQBrQBq__TQBlVmi32ZQBuZQBeMFQBcZi@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T6__ctorTSQBs11concurrency3TidZQBeMFNcQBdZSQCzQCy__TQCtVmi32ZQDc@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T7handlerHTvZQmFEQBzQBy__TQBtVmi32ZQCc4OpIDPG32hPvZl@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZ10tryPuttingFPQCxC8TypeInfoQBeZb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZ6getPtrFNaNbNiQrZPQDb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZ7compareFPQCtQeQByZl@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZl@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T8opAssignTSQBu11concurrency3TidZQBgMFQBbZSQCzQCy__TQCtVmi32ZQDc@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T8opEqualsTSQBuQBt__TQBoVmi32ZQBxZQBhMxFKQBeZb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T8opEqualsTxSQBvQBu__TQBpVmi32ZQByZQBiMxFKxQBfZb@Base 15 + _D3std7windows7charset11__moduleRefZ@Base 15 + _D3std7windows7charset12__ModuleInfoZ@Base 15 + _D3std7windows8registry11__moduleRefZ@Base 15 + _D3std7windows8registry12__ModuleInfoZ@Base 15 + _D3std7windows8syserror11__moduleRefZ@Base 15 + _D3std7windows8syserror12__ModuleInfoZ@Base 15 + _D3std8bitmanip10myToStringFNaNfmZAya@Base 15 + _D3std8bitmanip11__moduleRefZ@Base 15 + _D3std8bitmanip12__ModuleInfoZ@Base 15 + _D3std8bitmanip15getBitsForAlignFmZm@Base 15 + _D3std8bitmanip8BitArray13opIndexAssignMFNaNbNibmZb@Base 15 + _D3std8bitmanip8BitArray13opSliceAssignMFNaNbNibZv@Base 15 + _D3std8bitmanip8BitArray13opSliceAssignMFNaNbNibmmZv@Base 15 + _D3std8bitmanip8BitArray3dimMxFNaNbNdNiNfZm@Base 15 + _D3std8bitmanip8BitArray3dupMxFNaNbNdZSQBlQBkQBe@Base 15 + _D3std8bitmanip8BitArray4flipMFNaNbNiZv@Base 15 + _D3std8bitmanip8BitArray4flipMFNaNbNimZv@Base 15 + _D3std8bitmanip8BitArray4sortMFNaNbNdNiNjZSQBpQBoQBi@Base 15 + _D3std8bitmanip8BitArray5countMxFNaNbNiNlNfZm@Base 15 + _D3std8bitmanip8BitArray5opCmpMxFNaNbNiSQBmQBlQBfZi@Base 15 + _D3std8bitmanip8BitArray6__ctorMFNaNbNcIAbZSQBqQBpQBj@Base 15 + _D3std8bitmanip8BitArray6__ctorMFNaNbNcNiAvmZSQBsQBrQBl@Base 15 + _D3std8bitmanip8BitArray6__ctorMFNaNbNcNimPmZSQBsQBrQBl@Base 15 + _D3std8bitmanip8BitArray6__initZ@Base 15 + _D3std8bitmanip8BitArray6lengthMFNaNbNdmZm@Base 15 + _D3std8bitmanip8BitArray6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8bitmanip8BitArray6toHashMxFNaNbNiZm@Base 15 + _D3std8bitmanip8BitArray7bitsSetMxFNaNbNdZSQBp5range__T5chainTSQCj9algorithm9iteration__T6joinerTSQDsQBjQBc__T9MapResultSQEpQEoQEiQEcMxFNbNdZ18__lambda_L2658_C23TSQGfQDwQDp__T12FilterResultSQHgQHfQGzQGtMxFNbNdZ18__lambda_L2657_C26TSQIwQHh__T4iotaTmTmZQkFmmZ6ResultZQDmZQGdZQHcFQGyZQyTSQKxQIoQIh__TQEsSQLnQLmQLgQLaMxFNbNdZ18__lambda_L2661_C26TSQNdQLo__TQEhTmTxmZQEqFmxmZQEiZQHqZQMkFQMhQDwZQFb@Base 15 + _D3std8bitmanip8BitArray7endBitsMxFNaNbNdNiNlNfZm@Base 15 + _D3std8bitmanip8BitArray7endMaskMxFNaNbNdNiNlNfZm@Base 15 + _D3std8bitmanip8BitArray7opApplyMFMDFKbZiZi@Base 15 + _D3std8bitmanip8BitArray7opApplyMFMDFmKbZiZi@Base 15 + _D3std8bitmanip8BitArray7opApplyMxFMDFbZiZi@Base 15 + _D3std8bitmanip8BitArray7opApplyMxFMDFmbZiZi@Base 15 + _D3std8bitmanip8BitArray7opIndexMxFNaNbNimZb@Base 15 + _D3std8bitmanip8BitArray7reverseMFNaNbNdNiNjZSQBsQBrQBl@Base 15 + _D3std8bitmanip8BitArray8lenToDimFNaNbNiNfmZm@Base 15 + _D3std8bitmanip8BitArray8opEqualsMxFNaNbNiKxSQBrQBqQBkZb@Base 15 + _D3std8bitmanip8BitArray9fullWordsMxFNaNbNdNiNlNfZm@Base 15 + _D3std8bitmanip__T12countBitsSetTmZQrFNaNbNiNfxmZk@Base 15 + _D3std8bitmanip__T17bigEndianToNativeTaVmi1ZQBaFNaNbNiNeG1hZa@Base 15 + _D3std8bitmanip__T17bigEndianToNativeTbVmi1ZQBaFNaNbNiNeG1hZb@Base 15 + _D3std8bitmanip__T17bigEndianToNativeThVmi1ZQBaFNaNbNiNeG1hZh@Base 15 + _D3std8bitmanip__T17bigEndianToNativeTiVmi4ZQBaFNaNbNiNeG4hZi@Base 15 + _D3std8bitmanip__T17bigEndianToNativeTlVmi8ZQBaFNaNbNiNeG8hZl@Base 15 + _D3std8bitmanip__T20littleEndianToNativeTkVmi4ZQBdFNaNbNiNeG4hZk@Base 15 + _D3std8bitmanip__T20littleEndianToNativeTmVmi8ZQBdFNaNbNiNeG8hZm@Base 15 + _D3std8bitmanip__T20littleEndianToNativeTtVmi2ZQBdFNaNbNiNeG2hZt@Base 15 + _D3std8bitmanip__T20nativeToLittleEndianTkZQzFNaNbNiNexkZG4h@Base 15 + _D3std8bitmanip__T20nativeToLittleEndianTmZQzFNaNbNiNexmZG8h@Base 15 + _D3std8bitmanip__T20nativeToLittleEndianTtZQzFNaNbNiNextZG2h@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg4signMFNaNbNdNiNfbZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg4signMxFNaNbNdNiNfZb@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg6__initZ@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8exponentMFNaNbNdNiNftZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8exponentMxFNaNbNdNiNfZt@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8fractionMFNaNbNdNiNfmZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8fractionMxFNaNbNdNiNfZm@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg4signMFNaNbNdNiNfbZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg4signMxFNaNbNdNiNfZb@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg6__initZ@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8exponentMFNaNbNdNiNfhZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8exponentMxFNaNbNdNiNfZh@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8fractionMFNaNbNdNiNfkZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8fractionMxFNaNbNdNiNfZk@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl4saveMxFNaNbNdNiNfZSQBxQBw__TQBqTmZQBw@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl5frontMxFNaNbNdNiNfZm@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl6__ctorMFNaNbNcNiNfmmZSQCaQBz__TQBtTmZQBz@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl6__initZ@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl8popFrontMFNaNbNiNfZv@Base 15 + _D3std8compiler11__moduleRefZ@Base 15 + _D3std8compiler12__ModuleInfoZ@Base 15 + _D3std8compiler13version_majoryk@Base 15 + _D3std8compiler13version_minoryk@Base 15 + _D3std8compiler4nameyAa@Base 15 + _D3std8compiler6vendoryEQwQu6Vendor@Base 15 + _D3std8compiler7D_majoryk@Base 15 + _D3std8compiler7D_minoryk@Base 15 + _D3std8datetime11__moduleRefZ@Base 15 + _D3std8datetime12__ModuleInfoZ@Base 15 + _D3std8datetime4date10castToYearFNaNfiAyamZs@Base 15 + _D3std8datetime4date11__moduleRefZ@Base 15 + _D3std8datetime4date11_monthNamesyG12Aa@Base 15 + _D3std8datetime4date11lastDayLeapyG13i@Base 15 + _D3std8datetime4date11timeStringsyAAa@Base 15 + _D3std8datetime4date12__ModuleInfoZ@Base 15 + _D3std8datetime4date12cmpTimeUnitsFNaNfAyaQdZi@Base 15 + _D3std8datetime4date12getDayOfWeekFNaNbNiNfiZEQBsQBrQBl9DayOfWeek@Base 15 + _D3std8datetime4date13monthToStringFNaNfEQBnQBmQBg5MonthZAya@Base 15 + _D3std8datetime4date13monthsToMonthFNaNfiiZi@Base 15 + _D3std8datetime4date14lastDayNonLeapyG13i@Base 15 + _D3std8datetime4date14validTimeUnitsFNaNbNiNfAAyaXb@Base 15 + _D3std8datetime4date14yearIsLeapYearFNaNbNiNfiZb@Base 15 + _D3std8datetime4date15daysToDayOfWeekFNaNbNiNfEQBtQBsQBm9DayOfWeekQuZi@Base 15 + _D3std8datetime4date16cmpTimeUnitsCTFEFNaNbNiNfAyaQdZi@Base 15 + _D3std8datetime4date4Date10diffMonthsMxFNaNbNiNfSQBvQBuQBoQBmZi@Base 15 + _D3std8datetime4date4Date10endOfMonthMxFNaNbNdNfZSQBwQBvQBpQBn@Base 15 + _D3std8datetime4date4Date10isLeapYearMxFNaNbNdNiNfZb@Base 15 + _D3std8datetime4date4Date11__invariantMxFNaNfZv@Base 15 + _D3std8datetime4date4Date11daysInMonthMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date4Date11fromISOWeekFNaNbNiNfshEQBwQBvQBp9DayOfWeekZSQCrQCqQCkQCi@Base 15 + _D3std8datetime4date4Date11isoWeekYearMxFNaNbNdNfZs@Base 15 + _D3std8datetime4date4Date11toISOStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date4Date12__invariant0MxFNaNfZv@Base 15 + _D3std8datetime4date4Date12modJulianDayMxFNaNbNdNiNfZl@Base 15 + _D3std8datetime4date4Date14isoWeekAndYearMxFNaNbNdNfZ14ISOWeekAndYear6__initZ@Base 15 + _D3std8datetime4date4Date14isoWeekAndYearMxFNaNbNdNfZSQCaQBzQBtQBrQBpMxFNaNbNdNfZ14ISOWeekAndYear@Base 15 + _D3std8datetime4date4Date14toISOExtStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date4Date14toSimpleStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date4Date17dayOfGregorianCalMFNaNbNdNiNfiZv@Base 15 + _D3std8datetime4date4Date17dayOfGregorianCalMxFNaNbNdNiNfZi@Base 15 + _D3std8datetime4date4Date3dayMFNaNdNfiZv@Base 15 + _D3std8datetime4date4Date3dayMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date4Date3maxFNaNbNdNiNfZSQBoQBnQBhQBf@Base 15 + _D3std8datetime4date4Date3minFNaNbNdNiNfZSQBoQBnQBhQBf@Base 15 + _D3std8datetime4date4Date4isADMxFNaNbNdNiNfZb@Base 15 + _D3std8datetime4date4Date4yearMFNaNdNfiZv@Base 15 + _D3std8datetime4date4Date4yearMxFNaNbNdNiNfZs@Base 15 + _D3std8datetime4date4Date5monthMFNaNdNfEQBmQBlQBf5MonthZv@Base 15 + _D3std8datetime4date4Date5monthMxFNaNbNdNiNfZEQBsQBrQBl5Month@Base 15 + _D3std8datetime4date4Date5opCmpMxFNaNbNiNfSQBpQBoQBiQBgZi@Base 15 + _D3std8datetime4date4Date6__ctorMFNaNbNcNiNfiZSQBtQBsQBmQBk@Base 15 + _D3std8datetime4date4Date6__ctorMFNaNcNfiiiZSQBrQBqQBkQBi@Base 15 + _D3std8datetime4date4Date6__initZ@Base 15 + _D3std8datetime4date4Date6_validFNaNbNiNfiiiZb@Base 15 + _D3std8datetime4date4Date6yearBCMFNaNdNfiZv@Base 15 + _D3std8datetime4date4Date6yearBCMxFNaNdNfZt@Base 15 + _D3std8datetime4date4Date7isoWeekMxFNaNbNdNfZh@Base 15 + _D3std8datetime4date4Date8__xopCmpMxFKxSQBmQBlQBfQBdZi@Base 15 + _D3std8datetime4date4Date8_addDaysMFNaNbNcNiNjNflZSQBxQBwQBqQBo@Base 15 + _D3std8datetime4date4Date8toStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date4Date9dayOfWeekMxFNaNbNdNiNfZEQBwQBvQBp9DayOfWeek@Base 15 + _D3std8datetime4date4Date9dayOfYearMFNaNdNfiZv@Base 15 + _D3std8datetime4date4Date9dayOfYearMxFNaNbNdNiNfZt@Base 15 + _D3std8datetime4date4Date9julianDayMxFNaNbNdNiNfZl@Base 15 + _D3std8datetime4date4Date__T11toISOStringTSQBp5array__T8AppenderTAyaZQoZQBsMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date4Date__T12setDayOfYearVbi0ZQtMFNaNbNiNfiZv@Base 15 + _D3std8datetime4date4Date__T12setDayOfYearVbi1ZQtMFNaNfiZv@Base 15 + _D3std8datetime4date4Date__T14toISOExtStringTSQBs5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date4Date__T14toSimpleStringTSQBs5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date4Date__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQChQCgQCaQByZS4core4time8Duration@Base 15 + _D3std8datetime4date5Month6__initZ@Base 15 + _D3std8datetime4date6maxDayFNaNbNiNfiiZh@Base 15 + _D3std8datetime4date8DateTime10diffMonthsMxFNaNbNiNfSQBzQByQBsQBqZi@Base 15 + _D3std8datetime4date8DateTime10endOfMonthMxFNaNbNdNfZSQCaQBzQBtQBr@Base 15 + _D3std8datetime4date8DateTime10isLeapYearMxFNaNbNdNiNfZb@Base 15 + _D3std8datetime4date8DateTime11_addSecondsMFNaNbNcNiNjNflZSQCfQCeQByQBw@Base 15 + _D3std8datetime4date8DateTime11daysInMonthMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date8DateTime11isoWeekYearMxFNaNbNdNfZs@Base 15 + _D3std8datetime4date8DateTime11toISOStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date8DateTime12modJulianDayMxFNaNbNdNiNfZl@Base 15 + _D3std8datetime4date8DateTime14toISOExtStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date8DateTime14toSimpleStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date8DateTime17dayOfGregorianCalMFNaNbNdNiNfiZv@Base 15 + _D3std8datetime4date8DateTime17dayOfGregorianCalMxFNaNbNdNiNfZi@Base 15 + _D3std8datetime4date8DateTime3dayMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime3dayMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date8DateTime3maxFNaNbNdNiNfZSQBsQBrQBlQBj@Base 15 + _D3std8datetime4date8DateTime3minFNaNbNdNiNfZSQBsQBrQBlQBj@Base 15 + _D3std8datetime4date8DateTime4hourMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime4hourMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date8DateTime4isADMxFNaNbNdNiNfZb@Base 15 + _D3std8datetime4date8DateTime4yearMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime4yearMxFNaNbNdNiNfZs@Base 15 + _D3std8datetime4date8DateTime5monthMFNaNdNfEQBqQBpQBj5MonthZv@Base 15 + _D3std8datetime4date8DateTime5monthMxFNaNbNdNiNfZEQBwQBvQBp5Month@Base 15 + _D3std8datetime4date8DateTime5opCmpMxFNaNbNiNfSQBtQBsQBmQBkZi@Base 15 + _D3std8datetime4date8DateTime6__ctorMFNaNbNcNiNfSQBvQBuQBo4DateSQCkQCjQCd9TimeOfDayZSQDfQDeQCyQCw@Base 15 + _D3std8datetime4date8DateTime6__ctorMFNaNcNfiiiiiiZSQByQBxQBrQBp@Base 15 + _D3std8datetime4date8DateTime6__initZ@Base 15 + _D3std8datetime4date8DateTime6minuteMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime6minuteMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date8DateTime6secondMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime6secondMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date8DateTime6yearBCMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime6yearBCMxFNaNdNfZs@Base 15 + _D3std8datetime4date8DateTime7isoWeekMxFNaNbNdNfZh@Base 15 + _D3std8datetime4date8DateTime8__xopCmpMxFKxSQBqQBpQBjQBhZi@Base 15 + _D3std8datetime4date8DateTime8toStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date8DateTime9dayOfWeekMxFNaNbNdNiNfZEQCaQBzQBt9DayOfWeek@Base 15 + _D3std8datetime4date8DateTime9dayOfYearMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime9dayOfYearMxFNaNbNdNiNfZt@Base 15 + _D3std8datetime4date8DateTime9julianDayMxFNaNbNdNiNfZl@Base 15 + _D3std8datetime4date8DateTime9timeOfDayMFNaNbNdNiNfSQByQBxQBr9TimeOfDayZv@Base 15 + _D3std8datetime4date8DateTime9timeOfDayMxFNaNbNdNiNfZSQCaQBzQBt9TimeOfDay@Base 15 + _D3std8datetime4date8DateTimeQoMFNaNbNdNiNfSQBqQBpQBj4DateZv@Base 15 + _D3std8datetime4date8DateTimeQoMxFNaNbNdNiNfZSQBsQBrQBl4Date@Base 15 + _D3std8datetime4date8DateTime__T11toISOStringTSQBt5array__T8AppenderTAyaZQoZQBsMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date8DateTime__T14toISOExtStringTSQBw5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date8DateTime__T14toSimpleStringTSQBw5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date9TimeOfDay11__invariantMxFNaNfZv@Base 15 + _D3std8datetime4date9TimeOfDay11_addSecondsMFNaNbNcNiNjNflZSQCgQCfQBzQBx@Base 15 + _D3std8datetime4date9TimeOfDay11toISOStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date9TimeOfDay12__invariant0MxFNaNfZv@Base 15 + _D3std8datetime4date9TimeOfDay14toISOExtStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date9TimeOfDay3maxFNaNbNdNiNfZSQBtQBsQBmQBk@Base 15 + _D3std8datetime4date9TimeOfDay3minFNaNbNdNiNfZSQBtQBsQBmQBk@Base 15 + _D3std8datetime4date9TimeOfDay4hourMFNaNdNfiZv@Base 15 + _D3std8datetime4date9TimeOfDay4hourMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date9TimeOfDay5opCmpMxFNaNbNiNfSQBuQBtQBnQBlZi@Base 15 + _D3std8datetime4date9TimeOfDay6__ctorMFNaNcNfiiiZSQBwQBvQBpQBn@Base 15 + _D3std8datetime4date9TimeOfDay6__initZ@Base 15 + _D3std8datetime4date9TimeOfDay6_validFNaNbNiNfiiiZb@Base 15 + _D3std8datetime4date9TimeOfDay6minuteMFNaNdNfiZv@Base 15 + _D3std8datetime4date9TimeOfDay6minuteMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date9TimeOfDay6secondMFNaNdNfiZv@Base 15 + _D3std8datetime4date9TimeOfDay6secondMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date9TimeOfDay8__xopCmpMxFKxSQBrQBqQBkQBiZi@Base 15 + _D3std8datetime4date9TimeOfDay8toStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date9TimeOfDay__T11toISOStringTSQBu5array__T8AppenderTAyaZQoZQBsMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date9TimeOfDay__T14toISOExtStringTSQBx5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date9TimeOfDay__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQCmQClQCfQCdZS4core4time8Duration@Base 15 + _D3std8datetime4date__T12enforceValidVAyaa4_64617973ZQBeFNaNfiEQCjQCiQCc5MonthiQBpmZv@Base 15 + _D3std8datetime4date__T12enforceValidVAyaa5_686f757273ZQBgFNaNfiQBamZv@Base 15 + _D3std8datetime4date__T12enforceValidVAyaa6_6d6f6e746873ZQBiFNaNfiQBcmZv@Base 15 + _D3std8datetime4date__T12enforceValidVAyaa7_6d696e75746573ZQBkFNaNfiQBemZv@Base 15 + _D3std8datetime4date__T12enforceValidVAyaa7_7365636f6e6473ZQBkFNaNfiQBemZv@Base 15 + _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa4_64617973ZQBmFNaNbNiNfKlZl@Base 15 + _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa5_686f757273ZQBoFNaNbNiNfKlZl@Base 15 + _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa7_6d696e75746573ZQBsFNaNbNiNfKlZl@Base 15 + _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBsFNaNbNiNfKlZl@Base 15 + _D3std8datetime4date__T5validVAyaa4_64617973ZQwFNaNbNiNfiiiZb@Base 15 + _D3std8datetime4date__T5validVAyaa5_686f757273ZQyFNaNbNiNfiZb@Base 15 + _D3std8datetime4date__T5validVAyaa6_6d6f6e746873ZQBaFNaNbNiNfiZb@Base 15 + _D3std8datetime4date__T5validVAyaa7_6d696e75746573ZQBcFNaNbNiNfiZb@Base 15 + _D3std8datetime4date__T5validVAyaa7_7365636f6e6473ZQBcFNaNbNiNfiZb@Base 15 + _D3std8datetime7systime11__moduleRefZ@Base 15 + _D3std8datetime7systime12__ModuleInfoZ@Base 15 + _D3std8datetime7systime17unixTimeToStdTimeFNaNbNiNflZl@Base 15 + _D3std8datetime7systime19fracSecsToISOStringFNaNbNfiiZAya@Base 15 + _D3std8datetime7systime20DosFileTimeToSysTimeFNfkyCQBxQBw8timezone8TimeZoneZSQCxQCwQCq7SysTime@Base 15 + _D3std8datetime7systime20SysTimeToDosFileTimeFNfMSQBwQBvQBp7SysTimeZk@Base 15 + _D3std8datetime7systime5Clock6__initZ@Base 15 + _D3std8datetime7systime5Clock6__vtblZ@Base 15 + _D3std8datetime7systime5Clock7__ClassZ@Base 15 + _D3std8datetime7systime5Clock__T11currStdTimeVE4core4time9ClockTypei0ZQBmFNbNdNiNeZl@Base 15 + _D3std8datetime7systime5Clock__T8currTimeVE4core4time9ClockTypei0ZQBiFNbNfyCQCwQCv8timezone8TimeZoneZSQDwQDvQDp7SysTime@Base 15 + _D3std8datetime7systime7SysTime10diffMonthsMxFNbNlNfMSQCaQBzQBtQBoZi@Base 15 + _D3std8datetime7systime7SysTime10endOfMonthMxFNbNdNjNlNfZSQCeQCdQBxQBs@Base 15 + _D3std8datetime7systime7SysTime10isLeapYearMxFNbNdNlNfZb@Base 15 + _D3std8datetime7systime7SysTime10toTimeSpecMxFNaNbNlNfZS4core3sys5posix4time8timespec@Base 15 + _D3std8datetime7systime7SysTime11__xopEqualsMxFKxSQBwQBvQBpQBkZb@Base 15 + _D3std8datetime7systime7SysTime11daysInMonthMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime11dstInEffectMxFNbNdNjNlNfZb@Base 15 + _D3std8datetime7systime7SysTime11toISOStringMxFNbNlNfZAya@Base 15 + _D3std8datetime7systime7SysTime11toLocalTimeMxFNaNbNlNfZSQCdQCcQBwQBr@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone11dstInEffectMxFNbNiNlNflZb@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone11utcOffsetAtMxFNbNiNlNflZS4core4time8Duration@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone13_initTimeZoneyCQCiQChQCbQBwQBr@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone6__ctorMyFNaNfZyCQCiQChQCbQBwQBr@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone6__initZ@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone6__vtblZ@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone6hasDSTMxFNbNdNiNfZb@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone6opCallFNaNbNiNfZyCQCkQCjQCdQByQBt@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone7__ClassZ@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone7tzToUTCMxFNbNiNlNflZl@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone7utcToTZMxFNbNiNlNflZl@Base 15 + _D3std8datetime7systime7SysTime12fromUnixTimeFNaNbNflyCQCbQCa8timezone8TimeZoneZSQDbQDaQCuQCp@Base 15 + _D3std8datetime7systime7SysTime12modJulianDayMxFNbNdNlNfZl@Base 15 + _D3std8datetime7systime7SysTime14toISOExtStringMxFNbNlNfiZAya@Base 15 + _D3std8datetime7systime7SysTime14toSimpleStringMxFNbNlNfZAya@Base 15 + _D3std8datetime7systime7SysTime17dayOfGregorianCalMFNbNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime17dayOfGregorianCalMxFNbNdNlNfZi@Base 15 + _D3std8datetime7systime7SysTime3dayMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime3dayMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime3maxFNaNbNdNfZSQBsQBrQBlQBg@Base 15 + _D3std8datetime7systime7SysTime3minFNaNbNdNfZSQBsQBrQBlQBg@Base 15 + _D3std8datetime7systime7SysTime4hourMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime4hourMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime4isADMxFNbNdNlNfZb@Base 15 + _D3std8datetime7systime7SysTime4toTMMxFNbNlNfZS4core3sys5posix4stdc4time2tm@Base 15 + _D3std8datetime7systime7SysTime4yearMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime4yearMxFNbNdNlNfZs@Base 15 + _D3std8datetime7systime7SysTime5monthMFNdNlNfEQBsQBr4date5MonthZv@Base 15 + _D3std8datetime7systime7SysTime5monthMxFNbNdNlNfZEQBwQBv4date5Month@Base 15 + _D3std8datetime7systime7SysTime5toUTCMxFNaNbNlNfZSQBwQBvQBpQBk@Base 15 + _D3std8datetime7systime7SysTime6__ctorMFNaNbNcNjNlNflNkMyCQCeQCd8timezone8TimeZoneZSQDeQDdQCxQCs@Base 15 + _D3std8datetime7systime7SysTime6__ctorMFNbNcNjNlNfSQBxQBw4date4DateNkMyCQCsQCr8timezone8TimeZoneZSQDsQDrQDlQDg@Base 15 + _D3std8datetime7systime7SysTime6__ctorMFNbNcNjNlNfSQBxQBw4date8DateTimeNkMyCQCwQCv8timezone8TimeZoneZSQDwQDvQDpQDk@Base 15 + _D3std8datetime7systime7SysTime6__ctorMFNcNjNlNfSQBvQBu4date8DateTimeS4core4time8DurationNkMyCQDoQDn8timezone8TimeZoneZSQEoQEnQEhQEc@Base 15 + _D3std8datetime7systime7SysTime6__initZ@Base 15 + _D3std8datetime7systime7SysTime6minuteMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime6minuteMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime6secondMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime6secondMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime6toHashMxFNaNbNiNlNfZm@Base 15 + _D3std8datetime7systime7SysTime6yearBCMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime6yearBCMxFNdNlNfZt@Base 15 + _D3std8datetime7systime7SysTime7adjTimeMFNbNdNlNflZv@Base 15 + _D3std8datetime7systime7SysTime7adjTimeMxFNbNdNlNfZl@Base 15 + _D3std8datetime7systime7SysTime7isoWeekMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime7stdTimeMFNaNbNdNlNflZv@Base 15 + _D3std8datetime7systime7SysTime7stdTimeMxFNaNbNdNiNlNfZl@Base 15 + _D3std8datetime7systime7SysTime8__xopCmpMxFKxSQBsQBrQBlQBgZi@Base 15 + _D3std8datetime7systime7SysTime8fracSecsMFNdNlNfS4core4time8DurationZv@Base 15 + _D3std8datetime7systime7SysTime8fracSecsMxFNbNdNlNfZS4core4time8Duration@Base 15 + _D3std8datetime7systime7SysTime8timezoneMFNaNbNdNlNfyCQCaQBzQBd8TimeZoneZv@Base 15 + _D3std8datetime7systime7SysTime8timezoneMxFNaNbNdNjNlNfZyCQCeQCdQBh8TimeZone@Base 15 + _D3std8datetime7systime7SysTime8toStringMxFNbNlNfZAya@Base 15 + _D3std8datetime7systime7SysTime9_timezoneMFNaNbNdNiNlNfNkMyCQCgQCf8timezone8TimeZoneZv@Base 15 + _D3std8datetime7systime7SysTime9_timezoneMxFNaNbNdNiNfZyCQCdQCc8timezone8TimeZone@Base 15 + _D3std8datetime7systime7SysTime9dayOfWeekMxFNbNdNlNfZEQCaQBz4date9DayOfWeek@Base 15 + _D3std8datetime7systime7SysTime9dayOfYearMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime9dayOfYearMxFNbNdNlNfZt@Base 15 + _D3std8datetime7systime7SysTime9julianDayMxFNbNdNlNfZl@Base 15 + _D3std8datetime7systime7SysTime9toOtherTZMxFNaNbNlNfyCQCaQBz8timezone8TimeZoneZSQDaQCzQCtQCo@Base 15 + _D3std8datetime7systime7SysTime9toTimeValMxFNaNbNlNfZS4core3sys5posixQk4time7timeval@Base 15 + _D3std8datetime7systime7SysTime9utcOffsetMxFNbNdNjNlNfZS4core4time8Duration@Base 15 + _D3std8datetime7systime7SysTime__T10toUnixTimeTlZQpMxFNaNbNiNlNfZl@Base 15 + _D3std8datetime7systime7SysTime__T11toISOStringTSQBv5array__T8AppenderTAyaZQoZQBsMxFNlNfKQBpZv@Base 15 + _D3std8datetime7systime7SysTime__T14toISOExtStringTSQBy5array__T8AppenderTAyaZQoZQBvMxFNlNfKQBpiZv@Base 15 + _D3std8datetime7systime7SysTime__T14toSimpleStringTSQBy5array__T8AppenderTAyaZQoZQBvMxFNlNfKQBpZv@Base 15 + _D3std8datetime7systime7SysTime__T5opCmpZQhMxFNaNbNiNlNfKxSQCfQCeQByQBtZi@Base 15 + _D3std8datetime7systime7SysTime__T6opCastTSQBpQBo4date4DateZQBaMxFNbNlNfZQBf@Base 15 + _D3std8datetime7systime7SysTime__T6opCastTSQBpQBo4date8DateTimeZQBeMxFNbNlNfZQBj@Base 15 + _D3std8datetime7systime7SysTime__T8opAssignZQkMFNaNbNcNiNlNjNfKxSQClQCkQCeQBzZSQCzQCyQCsQCn@Base 15 + _D3std8datetime7systime7SysTime__T8opEqualsZQkMxFNaNbNiNlNfKxSQCiQChQCbQBwZb@Base 15 + _D3std8datetime7systime__T17stdTimeToUnixTimeTlZQwFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa4_64617973ZQBkFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa5_686f757273ZQBmFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa7_6d696e75746573ZQBqFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBqFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T19fracSecsToISOStringTSQBv5array__T8AppenderTAyaZQoZQCaFNaNbNfKQBpiiZv@Base 15 + _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa4_64617973ZQBnFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa5_686f757273ZQBpFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa7_6d696e75746573ZQBtFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBtFNaNbNiNflZl@Base 15 + _D3std8datetime8interval11__moduleRefZ@Base 15 + _D3std8datetime8interval12__ModuleInfoZ@Base 15 + _D3std8datetime8timezone11__moduleRefZ@Base 15 + _D3std8datetime8timezone11setTZEnvVarFNbNeAyaZv@Base 15 + _D3std8datetime8timezone12__ModuleInfoZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone10LeapSecond6__ctorMFNaNcNfliZSQCqQCpQCjQCdQBr@Base 15 + _D3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone10TempTTInfo6__ctorMFNaNcNfibhZSQCrQCqQCkQCeQBs@Base 15 + _D3std8datetime8timezone13PosixTimeZone10TempTTInfo6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone10Transition6__ctorMFNaNcNflPySQCqQCpQCjQCd6TTInfoZSQDlQDkQDeQCyQCm@Base 15 + _D3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone11dstInEffectMxFNbNlNflZb@Base 15 + _D3std8datetime8timezone13PosixTimeZone11getTimeZoneFNeAyaQdZyCQCjQCiQCcQBw@Base 15 + _D3std8datetime8timezone13PosixTimeZone14TempTransition6__ctorMFNaNcNflPySQCuQCtQCnQCh6TTInfoPSQDpQDoQDiQDc14TransitionTypeZSQEtQEsQEmQEgQDu@Base 15 + _D3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone14TransitionType6__ctorMFNaNcNfbbZSQCuQCtQCnQChQBv@Base 15 + _D3std8datetime8timezone13PosixTimeZone14TransitionType6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone19_enforceValidTZFileFNaNfbmZv@Base 15 + _D3std8datetime8timezone13PosixTimeZone19getInstalledTZNamesFNfAyaQdZAQh@Base 15 + _D3std8datetime8timezone13PosixTimeZone20calculateLeapSecondsMxFNaNbNlNflZi@Base 15 + _D3std8datetime8timezone13PosixTimeZone6TTInfo11__xopEqualsMxFKxSQClQCkQCeQByQBmZb@Base 15 + _D3std8datetime8timezone13PosixTimeZone6TTInfo6__ctorMyFNaNcNfMxSQClQCkQCeQBy10TempTTInfoAyaZySQDpQDoQDiQDcQCq@Base 15 + _D3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone6TTInfo9__xtoHashFNbNeKxSQCkQCjQCdQBxQBlZm@Base 15 + _D3std8datetime8timezone13PosixTimeZone6__ctorMyFNaNfyASQCcQCbQBvQBp10TransitionyASQDdQDcQCwQCq10LeapSecondAyaQdQfbZyCQEmQElQEfQDz@Base 15 + _D3std8datetime8timezone13PosixTimeZone6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone6__vtblZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone6hasDSTMxFNbNdNfZb@Base 15 + _D3std8datetime8timezone13PosixTimeZone7__ClassZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone7tzToUTCMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone13PosixTimeZone7utcToTZMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTAaZQmFNeKSQCh5stdio4FilemZQBa@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTAhZQmFNeKSQCh5stdio4FilemZQBa@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTSQByQBxQBrQBl10TempTTInfoZQBjFNfKSQDf5stdio4FileZQBx@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTaZQlFNeKSQCg5stdio4FileZa@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTbZQlFNeKSQCg5stdio4FileZb@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValThZQlFNeKSQCg5stdio4FileZh@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTiZQlFNeKSQCg5stdio4FileZi@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTlZQlFNeKSQCg5stdio4FileZl@Base 15 + _D3std8datetime8timezone13TZConversions11__xopEqualsMxFKxSQCeQCdQBxQBrZb@Base 15 + _D3std8datetime8timezone13TZConversions6__initZ@Base 15 + _D3std8datetime8timezone13TZConversions9__xtoHashFNbNeKxSQCdQCcQBwQBqZm@Base 15 + _D3std8datetime8timezone13clearTZEnvVarFNbNeZv@Base 15 + _D3std8datetime8timezone14SimpleTimeZone11dstInEffectMxFNbNlNflZb@Base 15 + _D3std8datetime8timezone14SimpleTimeZone11toISOStringFNaNfS4core4time8DurationZAya@Base 15 + _D3std8datetime8timezone14SimpleTimeZone11utcOffsetAtMxFNbNlNflZS4core4time8Duration@Base 15 + _D3std8datetime8timezone14SimpleTimeZone14toISOExtStringFNaNfS4core4time8DurationZAya@Base 15 + _D3std8datetime8timezone14SimpleTimeZone6__ctorMyFNaNfS4core4time8DurationAyaZyCQDaQCzQCtQCn@Base 15 + _D3std8datetime8timezone14SimpleTimeZone6__initZ@Base 15 + _D3std8datetime8timezone14SimpleTimeZone6__vtblZ@Base 15 + _D3std8datetime8timezone14SimpleTimeZone6hasDSTMxFNbNdNfZb@Base 15 + _D3std8datetime8timezone14SimpleTimeZone7__ClassZ@Base 15 + _D3std8datetime8timezone14SimpleTimeZone7tzToUTCMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone14SimpleTimeZone7utcToTZMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone14SimpleTimeZone9utcOffsetMxFNaNbNdNfZS4core4time8Duration@Base 15 + _D3std8datetime8timezone14SimpleTimeZone__T11toISOStringTSQCe5array__T8AppenderTAyaZQoZQBsFNaNfKQBnS4core4time8DurationZv@Base 15 + _D3std8datetime8timezone14SimpleTimeZone__T14toISOExtStringTSQCh5array__T8AppenderTAyaZQoZQBvFNaNfKQBnS4core4time8DurationZv@Base 15 + _D3std8datetime8timezone18parseTZConversionsFNaNfAyaZSQCaQBzQBt13TZConversions@Base 15 + _D3std8datetime8timezone3UTC11dstInEffectMxFNbNlNflZb@Base 15 + _D3std8datetime8timezone3UTC11utcOffsetAtMxFNbNlNflZS4core4time8Duration@Base 15 + _D3std8datetime8timezone3UTC4_utcyCQBhQBgQBaQu@Base 15 + _D3std8datetime8timezone3UTC6__ctorMyFNaNfZyCQBrQBqQBkQBe@Base 15 + _D3std8datetime8timezone3UTC6__initZ@Base 15 + _D3std8datetime8timezone3UTC6__vtblZ@Base 15 + _D3std8datetime8timezone3UTC6hasDSTMxFNbNdNfZb@Base 15 + _D3std8datetime8timezone3UTC6opCallFNaNbNfZyCQBrQBqQBkQBe@Base 15 + _D3std8datetime8timezone3UTC7__ClassZ@Base 15 + _D3std8datetime8timezone3UTC7tzToUTCMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone3UTC7utcToTZMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone8TimeZone11_getOldNameFNaNbNfAyaZQe@Base 15 + _D3std8datetime8timezone8TimeZone11utcOffsetAtMxFNbNlNflZS4core4time8Duration@Base 15 + _D3std8datetime8timezone8TimeZone4nameMxFNbNdNfZAya@Base 15 + _D3std8datetime8timezone8TimeZone6__ctorMyFNaNfAyaQdQfZyCQCdQCcQBwQBq@Base 15 + _D3std8datetime8timezone8TimeZone6__initZ@Base 15 + _D3std8datetime8timezone8TimeZone6__vtblZ@Base 15 + _D3std8datetime8timezone8TimeZone7__ClassZ@Base 15 + _D3std8datetime8timezone8TimeZone7dstNameMxFNbNdNlNfZAya@Base 15 + _D3std8datetime8timezone8TimeZone7stdNameMxFNbNdNlNfZAya@Base 15 + _D3std8datetime8timezone9LocalTime11dstInEffectMxFNbNlNelZb@Base 15 + _D3std8datetime8timezone9LocalTime6__ctorMyFNaNfZyCQBxQBwQBqQBk@Base 15 + _D3std8datetime8timezone9LocalTime6__initZ@Base 15 + _D3std8datetime8timezone9LocalTime6__vtblZ@Base 15 + _D3std8datetime8timezone9LocalTime6hasDSTMxFNbNdNeZb@Base 15 + _D3std8datetime8timezone9LocalTime6opCallFNaNbNeZyCQBxQBwQBqQBk@Base 15 + _D3std8datetime8timezone9LocalTime7__ClassZ@Base 15 + _D3std8datetime8timezone9LocalTime7dstNameMxFNbNdNlNeZAya@Base 15 + _D3std8datetime8timezone9LocalTime7stdNameMxFNbNdNlNeZAya@Base 15 + _D3std8datetime8timezone9LocalTime7tzToUTCMxFNbNlNelZl@Base 15 + _D3std8datetime8timezone9LocalTime7utcToTZMxFNbNlNelZl@Base 15 + _D3std8datetime8timezone9LocalTime9singletonFNeZ18__lambda_L1107_C24FNbNiNfZb@Base 15 + _D3std8datetime8timezone9LocalTime9singletonFNeZ5guardOb@Base 15 + _D3std8datetime8timezone9LocalTime9singletonFNeZ8instanceyCQCfQCeQByQBs@Base 15 + _D3std8datetime8timezone9LocalTime9singletonFNeZyCQBwQBvQBpQBj@Base 15 + _D3std8datetime9stopwatch11__moduleRefZ@Base 15 + _D3std8datetime9stopwatch12__ModuleInfoZ@Base 15 + _D3std8datetime9stopwatch9StopWatch14setTimeElapsedMFNbNiNfS4core4time8DurationZv@Base 15 + _D3std8datetime9stopwatch9StopWatch4peekMxFNbNiNfZS4core4time8Duration@Base 15 + _D3std8datetime9stopwatch9StopWatch4stopMFNbNiNfZv@Base 15 + _D3std8datetime9stopwatch9StopWatch5resetMFNbNiNfZv@Base 15 + _D3std8datetime9stopwatch9StopWatch5startMFNbNiNfZv@Base 15 + _D3std8datetime9stopwatch9StopWatch6__ctorMFNbNcNiNfEQBz8typecons__T4FlagVAyaa9_6175746f5374617274ZQBfZSQDyQDxQDrQDk@Base 15 + _D3std8datetime9stopwatch9StopWatch6__initZ@Base 15 + _D3std8datetime9stopwatch9StopWatch7runningMxFNaNbNdNiNfZb@Base 15 + _D3std8demangle11__moduleRefZ@Base 15 + _D3std8demangle12__ModuleInfoZ@Base 15 + _D3std8demangleQjFNaNbNfAyaZQe@Base 15 + _D3std8encoding11__moduleRefZ@Base 15 + _D3std8encoding12__ModuleInfoZ@Base 15 + _D3std8encoding14EncodingScheme18supportedFactoriesHAyaQd@Base 15 + _D3std8encoding14EncodingScheme6__initZ@Base 15 + _D3std8encoding14EncodingScheme6__vtblZ@Base 15 + _D3std8encoding14EncodingScheme6createFAyaZ11initializedOb@Base 15 + _D3std8encoding14EncodingScheme6createFAyaZ24registerDefaultEncodingsFZb@Base 15 + _D3std8encoding14EncodingScheme6createFAyaZCQBqQBpQBj@Base 15 + _D3std8encoding14EncodingScheme7__ClassZ@Base 15 + _D3std8encoding14EncodingScheme7isValidMFAxhZb@Base 15 + _D3std8encoding14EncodingScheme8registerFAyaZv@Base 15 + _D3std8encoding14EncodingScheme9supportedHAyaPFZCQBvQBuQBo@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr18EncodingSchemeUtf8ZQBnFZ18__lambda_L2592_C48FNaNbNfZCQEbQEaQDu@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr18EncodingSchemeUtf8ZQBnFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr19EncodingSchemeASCIIZQBoFZ18__lambda_L2592_C48FNaNbNfZCQEcQEbQDv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr19EncodingSchemeASCIIZQBoFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin1ZQBpFZ18__lambda_L2592_C48FNaNbNfZCQEdQEcQDw@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin1ZQBpFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin2ZQBpFZ18__lambda_L2592_C48FNaNbNfZCQEdQEcQDw@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin2ZQBpFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf16NativeZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf16NativeZQBuFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf32NativeZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf32NativeZQBuFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1250ZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1250ZQBuFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1251ZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1251ZQBuFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1252ZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1252ZQBuFZv@Base 15 + _D3std8encoding16isValidCodePointFNaNbNiNfwZb@Base 15 + _D3std8encoding17EncodingException6__ctorMFNaNfAyaZCQByQBxQBr@Base 15 + _D3std8encoding17EncodingException6__initZ@Base 15 + _D3std8encoding17EncodingException6__vtblZ@Base 15 + _D3std8encoding17EncodingException7__ClassZ@Base 15 + _D3std8encoding18EncodingSchemeUtf810safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding18EncodingSchemeUtf813encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding18EncodingSchemeUtf819replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding18EncodingSchemeUtf85namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding18EncodingSchemeUtf86__initZ@Base 15 + _D3std8encoding18EncodingSchemeUtf86__vtblZ@Base 15 + _D3std8encoding18EncodingSchemeUtf86decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding18EncodingSchemeUtf86encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding18EncodingSchemeUtf87__ClassZ@Base 15 + _D3std8encoding18EncodingSchemeUtf88toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding18EncodingSchemeUtf89canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding19EncodingSchemeASCII10safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding19EncodingSchemeASCII13encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding19EncodingSchemeASCII19replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding19EncodingSchemeASCII5namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding19EncodingSchemeASCII6__initZ@Base 15 + _D3std8encoding19EncodingSchemeASCII6__vtblZ@Base 15 + _D3std8encoding19EncodingSchemeASCII6decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding19EncodingSchemeASCII6encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding19EncodingSchemeASCII7__ClassZ@Base 15 + _D3std8encoding19EncodingSchemeASCII8toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding19EncodingSchemeASCII9canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding20EncodingSchemeLatin110safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding20EncodingSchemeLatin113encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding20EncodingSchemeLatin119replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding20EncodingSchemeLatin15namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding20EncodingSchemeLatin16__initZ@Base 15 + _D3std8encoding20EncodingSchemeLatin16__vtblZ@Base 15 + _D3std8encoding20EncodingSchemeLatin16decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding20EncodingSchemeLatin16encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding20EncodingSchemeLatin17__ClassZ@Base 15 + _D3std8encoding20EncodingSchemeLatin18toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding20EncodingSchemeLatin19canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding20EncodingSchemeLatin210safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding20EncodingSchemeLatin213encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding20EncodingSchemeLatin219replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding20EncodingSchemeLatin25namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding20EncodingSchemeLatin26__initZ@Base 15 + _D3std8encoding20EncodingSchemeLatin26__vtblZ@Base 15 + _D3std8encoding20EncodingSchemeLatin26decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding20EncodingSchemeLatin26encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding20EncodingSchemeLatin27__ClassZ@Base 15 + _D3std8encoding20EncodingSchemeLatin28toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding20EncodingSchemeLatin29canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native10safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native13encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native19replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native5namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native6__initZ@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native6__vtblZ@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native6decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native6encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native7__ClassZ@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native8toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native9canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native10safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native13encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native19replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native5namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native6__initZ@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native6__vtblZ@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native6decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native6encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native7__ClassZ@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native8toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native9canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding25EncodingSchemeWindows125010safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows125013encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding25EncodingSchemeWindows125019replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding25EncodingSchemeWindows12505namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12506__initZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12506__vtblZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12506decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows12506encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding25EncodingSchemeWindows12507__ClassZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12508toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12509canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding25EncodingSchemeWindows125110safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows125113encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding25EncodingSchemeWindows125119replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding25EncodingSchemeWindows12515namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12516__initZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12516__vtblZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12516decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows12516encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding25EncodingSchemeWindows12517__ClassZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12518toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12519canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding25EncodingSchemeWindows125210safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows125213encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding25EncodingSchemeWindows125219replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding25EncodingSchemeWindows12525namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12526__initZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12526__vtblZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12526decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows12526encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding25EncodingSchemeWindows12527__ClassZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12528toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12529canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding29UnrecognizedEncodingException6__ctorMFNaNfAyaZCQCkQCjQCd@Base 15 + _D3std8encoding29UnrecognizedEncodingException6__initZ@Base 15 + _D3std8encoding29UnrecognizedEncodingException6__vtblZ@Base 15 + _D3std8encoding29UnrecognizedEncodingException7__ClassZ@Base 15 + _D3std8encoding8bomTableyASQz8typecons__T5TupleTEQBvQBu3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCl@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf10Latin1CharZQBjFNaNbNiNfKQBjZw@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf10Latin2CharZQBjFNaNbNiNfKQBjZw@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf15Windows1250CharZQBoFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf15Windows1251CharZQBoFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf15Windows1252CharZQBoFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf9AsciiCharZQBhFNaNbNiNfKQBhZw@Base 15 + _D3std8encoding__T10safeDecodeTAxaZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T10safeDecodeTAxuZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T10safeDecodeTAxwZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg10Latin1CharZQBkFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg10Latin2CharZQBkFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg15Windows1250CharZQBpFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg15Windows1251CharZQBpFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg15Windows1252CharZQBpFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg9AsciiCharZQBiFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTaZQsFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTuZQsFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTwZQsFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ15isValidCodeUnitFNaNbNiNfQBuZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ19replacementSequenceFNaNbNdNiNfZAyEQDnQDmQCd@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin1313decodeReverseFNaNbNiNfKAxEQDpQDoQCfZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin134skipFNaNbNiNfKAxEQDfQDeQBvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin136encodeFNaNbNfwZAQBv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin136encodeFNaNbNiNfwKAQBxZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin136encodeFwDFQBpZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ6bstMapyASQCn8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCeZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQDxQDwQCn@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDrQDqQChZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDhQDgQBxZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk6encodeFNaNbNfwZAQBx@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQBzZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk6encodeFwDFQBrZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ6bstMapyASQCs8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEcQEbQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDwQDvQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDmQDlQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk6encodeFNaNbNfwZAQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk6encodeFwDFQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ6bstMapyASQCs8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEcQEbQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDwQDvQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDmQDlQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk6encodeFNaNbNfwZAQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk6encodeFwDFQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ6bstMapyASQCs8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEcQEbQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDwQDvQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDmQDlQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk6encodeFNaNbNfwZAQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk6encodeFwDFQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ15isValidCodeUnitFNaNbNiNfQBsZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ19replacementSequenceFNaNbNdNiNfZAyEQDlQDkQCb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin1413decodeReverseFNaNbNiNfKAxEQDnQDmQCdZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin144skipFNaNbNiNfKAxEQDdQDcQBtZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin146encodeFNaNbNfwZAQBt@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin146encodeFNaNbNiNfwKAQBvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin146encodeFwDFQBnZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ15isValidCodeUnitFNaNbNiNfaZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ19replacementSequenceFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ5tailsFNaNbNiNfaZi@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9__mixin1513decodeReverseFNaNbNiNfKAxaZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9__mixin154skipFNaNbNiNfKAxaZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9__mixin156encodeFNaNbNfwZAa@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9__mixin156encodeFNaNbNiNfwKAaZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9__mixin156encodeFwDFaZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9tailTableyG128h@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ15isValidCodeUnitFNaNbNiNfuZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ19replacementSequenceFNaNbNdNiNfZAyu@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9__mixin1313decodeReverseFNaNbNiNfKAxuZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9__mixin134skipFNaNbNiNfKAxuZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9__mixin136encodeFNaNbNfwZAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9__mixin136encodeFNaNbNiNfwKAuZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9__mixin136encodeFwDFuZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ15isValidCodeUnitFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ19replacementSequenceFNaNbNdNiNfZAyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9__mixin1313decodeReverseFNaNbNiNfKAxwZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9__mixin134skipFNaNbNiNfKAxwZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9__mixin136encodeFNaNbNfwZAw@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9__mixin136encodeFNaNbNiNfwKAwZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9__mixin136encodeFwDFwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ15isValidCodeUnitFNaNbNiNfEQDfQDeQBuZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ19replacementSequenceFNaNbNdNiNfZAyEQDoQDnQCd@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin1313decodeReverseFNaNbNiNfKAxQCfZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin134skipFNaNbNiNfKAxQBvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin136encodeFNaNbNfwZAEQDgQDfQBv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin136encodeFNaNbNiNfwKAEQDiQDhQBxZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin136encodeFwDFEQDaQCzQBpZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin13__T10safeDecodeTAxQBwZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin13__T6decodeTAxQBrZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ6bstMapyASQCo8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDpQDoQCeZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQDyQDxQCn@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQChZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk4skipFNaNbNiNfKAxQBxZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDiQDhQBx@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDkQDjQBzZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk6encodeFwDFEQDcQDbQBrZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk__T10safeDecodeTAxQByZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk__T6decodeTAxQBtZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ6bstMapyASQCt8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDuQDtQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEdQEcQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk4skipFNaNbNiNfKAxQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDnQDmQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDpQDoQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk6encodeFwDFEQDhQDgQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk__T10safeDecodeTAxQCdZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk__T6decodeTAxQByZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ6bstMapyASQCt8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDuQDtQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEdQEcQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk4skipFNaNbNiNfKAxQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDnQDmQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDpQDoQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk6encodeFwDFEQDhQDgQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk__T10safeDecodeTAxQCdZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk__T6decodeTAxQByZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ6bstMapyASQCt8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDuQDtQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEdQEcQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk4skipFNaNbNiNfKAxQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDnQDmQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDpQDoQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk6encodeFwDFEQDhQDgQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk__T10safeDecodeTAxQCdZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk__T6decodeTAxQByZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ15isValidCodeUnitFNaNbNiNfEQDdQDcQBsZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ19replacementSequenceFNaNbNdNiNfZAyEQDmQDlQCb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin1413decodeReverseFNaNbNiNfKAxQCdZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin144skipFNaNbNiNfKAxQBtZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin146encodeFNaNbNfwZAEQDeQDdQBt@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin146encodeFNaNbNiNfwKAEQDgQDfQBvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin146encodeFwDFEQCyQCxQBnZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin14__T10safeDecodeTAxQBuZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin14__T6decodeTAxQBpZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ15isValidCodeUnitFNaNbNiNfaZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ19replacementSequenceFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ5tailsFNaNbNiNfaZi@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin1513decodeReverseFNaNbNiNfKAxaZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin154skipFNaNbNiNfKAxaZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin156encodeFNaNbNfwZAa@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin156encodeFNaNbNiNfwKAaZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin156encodeFwDFaZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin15__T10safeDecodeTAxaZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin15__T6decodeTAxaZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9tailTableyG128h@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ15isValidCodeUnitFNaNbNiNfuZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ19replacementSequenceFNaNbNdNiNfZAyu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin1313decodeReverseFNaNbNiNfKAxuZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin134skipFNaNbNiNfKAxuZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin136encodeFNaNbNfwZAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin136encodeFNaNbNiNfwKAuZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin136encodeFwDFuZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin13__T10safeDecodeTAxuZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin13__T6decodeTAxuZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ15isValidCodeUnitFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ19replacementSequenceFNaNbNdNiNfZAyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin1313decodeReverseFNaNbNiNfKAxwZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin134skipFNaNbNiNfKAxwZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin136encodeFNaNbNfwZAw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin136encodeFNaNbNiNfwKAwZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin136encodeFwDFwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin13__T10safeDecodeTAxwZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin13__T6decodeTAxwZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa10Latin1CharZQBeFNaNbNiNfKQBjZw@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa10Latin2CharZQBeFNaNbNiNfKQBjZw@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa15Windows1250CharZQBjFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa15Windows1251CharZQBjFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa15Windows1252CharZQBjFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa9AsciiCharZQBcFNaNbNiNfKQBhZw@Base 15 + _D3std8encoding__T6decodeTAxaZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T6decodeTAxuZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T6decodeTAxwZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T6encodeTEQzQx10Latin1CharZQBaFNaNbNiNfwAQBgZm@Base 15 + _D3std8encoding__T6encodeTEQzQx10Latin2CharZQBaFNaNbNiNfwAQBgZm@Base 15 + _D3std8encoding__T6encodeTEQzQx15Windows1250CharZQBfFNaNbNiNfwAQBlZm@Base 15 + _D3std8encoding__T6encodeTEQzQx15Windows1251CharZQBfFNaNbNiNfwAQBlZm@Base 15 + _D3std8encoding__T6encodeTEQzQx15Windows1252CharZQBfFNaNbNiNfwAQBlZm@Base 15 + _D3std8encoding__T6encodeTEQzQx9AsciiCharZQyFNaNbNiNfwAQBdZm@Base 15 + _D3std8encoding__T6encodeTaZQkFNaNbNiNfwAaZm@Base 15 + _D3std8encoding__T6encodeTuZQkFNaNbNiNfwAuZm@Base 15 + _D3std8encoding__T6encodeTwZQkFNaNbNiNfwAwZm@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb10Latin1CharZQBfFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb10Latin2CharZQBfFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb15Windows1250CharZQBkFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb15Windows1251CharZQBkFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb15Windows1252CharZQBkFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb9AsciiCharZQBdFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTaZQnFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTuZQnFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTwZQnFNaNbNiNfwZb@Base 15 + _D3std8internal10attributes11__moduleRefZ@Base 15 + _D3std8internal10attributes12__ModuleInfoZ@Base 15 + _D3std8internal11scopebuffer11__moduleRefZ@Base 15 + _D3std8internal11scopebuffer12__ModuleInfoZ@Base 15 + _D3std8internal12unicode_comp11__moduleRefZ@Base 15 + _D3std8internal12unicode_comp12__ModuleInfoZ@Base 15 + _D3std8internal12unicode_comp16compositionTableFNaNbNiNfZ1tyG1922w@Base 15 + _D3std8internal12unicode_comp16compositionTableFNaNbNiNfZAyw@Base 15 + _D3std8internal12unicode_norm11__moduleRefZ@Base 15 + _D3std8internal12unicode_norm12__ModuleInfoZ@Base 15 + _D3std8internal14unicode_decomp11__moduleRefZ@Base 15 + _D3std8internal14unicode_decomp12__ModuleInfoZ@Base 15 + _D3std8internal14unicode_decomp16decompCanonTableFNaNbNiNfZ1tyG5276w@Base 15 + _D3std8internal14unicode_decomp16decompCanonTableFNaNbNiNfZAyw@Base 15 + _D3std8internal14unicode_decomp17decompCompatTableFNaNbNiNfZ1tyG10489w@Base 15 + _D3std8internal14unicode_decomp17decompCompatTableFNaNbNiNfZAyw@Base 15 + _D3std8internal14unicode_tables10isSpaceGenFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables10isWhiteGenFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables11__moduleRefZ@Base 15 + _D3std8internal14unicode_tables11isFormatGenFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables12__ModuleInfoZ@Base 15 + _D3std8internal14unicode_tables12isControlGenFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables12toLowerTableFNaNbNiNfZ1tyAk@Base 15 + _D3std8internal14unicode_tables12toLowerTableFNaNbNiNfZAyk@Base 15 + _D3std8internal14unicode_tables12toTitleTableFNaNbNiNfZ1tyAk@Base 15 + _D3std8internal14unicode_tables12toTitleTableFNaNbNiNfZAyk@Base 15 + _D3std8internal14unicode_tables12toUpperTableFNaNbNiNfZ1tyAk@Base 15 + _D3std8internal14unicode_tables12toUpperTableFNaNbNiNfZAyk@Base 15 + _D3std8internal14unicode_tables13fullCaseTableFNaNbNdNiNfmZ1tyAm@Base 15 + _D3std8internal14unicode_tables13fullCaseTableFNaNbNdNiNfmZSQCgQCfQBz3FCE@Base 15 + _D3std8internal14unicode_tables15UnicodeProperty11__xopEqualsMxFKxSQCnQCmQCgQBtZb@Base 15 + _D3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 + _D3std8internal14unicode_tables15UnicodeProperty9__xtoHashFNbNeKxSQCmQClQCfQBsZm@Base 15 + _D3std8internal14unicode_tables15simpleCaseTableFNaNbNiNfmZ1tyAk@Base 15 + _D3std8internal14unicode_tables15simpleCaseTableFNaNbNiNfmZSQCgQCfQBz3SCE@Base 15 + _D3std8internal14unicode_tables3FCE1nMxFNaNbNiNfZh@Base 15 + _D3std8internal14unicode_tables3FCE3seqMxFNaNbNiNfZG3w@Base 15 + _D3std8internal14unicode_tables3FCE4sizeMxFNaNbNiNfZh@Base 15 + _D3std8internal14unicode_tables3FCE6__ctorMFNaNbNcNiNfG3whhhZSQCiQChQCbQBo@Base 15 + _D3std8internal14unicode_tables3FCE6__ctorMFNaNbNcNiNfmZSQCdQCcQBwQBj@Base 15 + _D3std8internal14unicode_tables3FCE6__initZ@Base 15 + _D3std8internal14unicode_tables3FCE9entry_lenMxFNaNbNiNfZh@Base 15 + _D3std8internal14unicode_tables3SCE1nMxFNaNbNiNfZi@Base 15 + _D3std8internal14unicode_tables3SCE2chMxFNaNbNiNfZi@Base 15 + _D3std8internal14unicode_tables3SCE4sizeMxFNaNbNiNfZi@Base 15 + _D3std8internal14unicode_tables3SCE6__ctorMFNaNbNcNiNfkZSQCdQCcQBwQBj@Base 15 + _D3std8internal14unicode_tables3SCE6__ctorMFNaNbNcNiNfkhhZSQCfQCeQByQBl@Base 15 + _D3std8internal14unicode_tables3SCE6__initZ@Base 15 + _D3std8internal14unicode_tables6blocks10ChorasmianyAh@Base 15 + _D3std8internal14unicode_tables6blocks10DevanagariyAh@Base 15 + _D3std8internal14unicode_tables6blocks10GlagoliticyAh@Base 15 + _D3std8internal14unicode_tables6blocks10KharoshthiyAh@Base 15 + _D3std8internal14unicode_tables6blocks10ManichaeanyAh@Base 15 + _D3std8internal14unicode_tables6blocks10Old_ItalicyAh@Base 15 + _D3std8internal14unicode_tables6blocks10Old_PermicyAh@Base 15 + _D3std8internal14unicode_tables6blocks10Old_TurkicyAh@Base 15 + _D3std8internal14unicode_tables6blocks10Old_UyghuryAh@Base 15 + _D3std8internal14unicode_tables6blocks10PhoenicianyAh@Base 15 + _D3std8internal14unicode_tables6blocks10SaurashtrayAh@Base 15 + _D3std8internal14unicode_tables6blocks11Basic_LatinyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Box_DrawingyAh@Base 15 + _D3std8internal14unicode_tables6blocks11CJK_StrokesyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Dives_AkuruyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Hangul_JamoyAh@Base 15 + _D3std8internal14unicode_tables6blocks11MedefaidrinyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Nag_MundariyAh@Base 15 + _D3std8internal14unicode_tables6blocks11NandinagariyAh@Base 15 + _D3std8internal14unicode_tables6blocks11New_Tai_LueyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Old_PersianyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Old_SogdianyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Pau_Cin_HauyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Warang_CitiyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Yi_RadicalsyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Cypro_MinoanyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Domino_TilesyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Gurung_KhemayAh@Base 15 + _D3std8internal14unicode_tables6blocks12Meetei_MayekyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Number_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Pahawh_HmongyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Sora_SompengyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Syloti_NagriyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Yi_SyllablesyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Chess_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Gunjala_GondiyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Khmer_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Mahjong_TilesyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Masaram_GondiyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Mende_KikakuiyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Old_HungarianyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Phaistos_DiscyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Playing_CardsyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Tulu_TigalariyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Aegean_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Block_ElementsyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Greek_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks14IPA_ExtensionsyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Low_SurrogatesyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Mayan_NumeralsyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Vertical_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Ancient_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Hanifi_RohingyayAh@Base 15 + _D3std8internal14unicode_tables6blocks15High_SurrogatesyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Kana_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Kana_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks15Kana_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Kangxi_RadicalsyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Lisu_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Musical_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Psalter_PahlaviyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Bamum_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Braille_PatternsyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Control_PicturesyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Currency_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Geometric_ShapesyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Greek_and_CopticyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Hangul_SyllablesyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Imperial_AramaicyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_DyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_EyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_FyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_GyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Meroitic_CursiveyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Private_Use_AreayAh@Base 15 + _D3std8internal14unicode_tables6blocks16Tamil_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Vedic_ExtensionsyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Zanabazar_SquareyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Arabic_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Arabic_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks17Arabic_Extended_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Arabic_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Bopomofo_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks17CJK_CompatibilityyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Cypriot_SyllabaryyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Ethiopic_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Georgian_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Kaktovik_NumeralsyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Old_North_ArabianyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Old_South_ArabianyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Syriac_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Tangut_ComponentsyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Tangut_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Alchemical_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Caucasian_AlbanianyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Latin_1_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Letterlike_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Linear_B_IdeogramsyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Linear_B_SyllabaryyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Myanmar_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Myanmar_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks18Myanmar_Extended_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Sutton_SignWritingyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cherokee_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_DyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cyrillic_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Devanagari_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Ethiopic_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Ethiopic_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks19Ethiopic_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks19General_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Georgian_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Indic_Siyaq_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Khitan_Small_ScriptyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Ornamental_DingbatsyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Phonetic_ExtensionsyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Small_Form_VariantsyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Variation_SelectorsyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Combining_Half_MarksyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Coptic_Epact_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Egyptian_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Meroitic_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Mongolian_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Rumi_Numeral_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Small_Kana_ExtensionyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Sundanese_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Anatolian_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Ancient_Greek_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Counting_Rod_NumeralsyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Devanagari_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Glagolitic_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Inscriptional_PahlaviyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Miscellaneous_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Modifier_Tone_LettersyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Ottoman_Siyaq_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Supplemental_Arrows_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Supplemental_Arrows_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks21Supplemental_Arrows_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Tai_Xuan_Jing_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks22CJK_Unified_IdeographsyAh@Base 15 + _D3std8internal14unicode_tables6blocks22Enclosed_AlphanumericsyAh@Base 15 + _D3std8internal14unicode_tables6blocks22Hangul_Jamo_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks22Hangul_Jamo_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks22Inscriptional_ParthianyAh@Base 15 + _D3std8internal14unicode_tables6blocks22Mathematical_OperatorsyAh@Base 15 + _D3std8internal14unicode_tables6blocks22Nyiakeng_Puachue_HmongyAh@Base 15 + _D3std8internal14unicode_tables6blocks23CJK_Compatibility_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks23CJK_Radicals_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks23Meetei_Mayek_ExtensionsyAh@Base 15 + _D3std8internal14unicode_tables6blocks23Miscellaneous_TechnicalyAh@Base 15 + _D3std8internal14unicode_tables6blocks23Sinhala_Archaic_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks23Yijing_Hexagram_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks24Early_Dynastic_CuneiformyAh@Base 15 + _D3std8internal14unicode_tables6blocks24Spacing_Modifier_LettersyAh@Base 15 + _D3std8internal14unicode_tables6blocks24Supplemental_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Byzantine_Musical_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Common_Indic_Number_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Geometric_Shapes_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Hangul_Compatibility_JamoyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Latin_Extended_AdditionalyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Shorthand_Format_ControlsyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Transport_and_Map_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Znamenny_Musical_NotationyAh@Base 15 + _D3std8internal14unicode_tables6blocks27Arabic_Presentation_Forms_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks27Arabic_Presentation_Forms_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks27CJK_Symbols_and_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables6blocks27Combining_Diacritical_MarksyAh@Base 15 + _D3std8internal14unicode_tables6blocks27High_Private_Use_SurrogatesyAh@Base 15 + _D3std8internal14unicode_tables6blocks27Superscripts_and_SubscriptsyAh@Base 15 + _D3std8internal14unicode_tables6blocks28CJK_Compatibility_IdeographsyAh@Base 15 + _D3std8internal14unicode_tables6blocks28Katakana_Phonetic_ExtensionsyAh@Base 15 + _D3std8internal14unicode_tables6blocks28Symbols_for_Legacy_ComputingyAh@Base 15 + _D3std8internal14unicode_tables6blocks29Alphabetic_Presentation_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks29Halfwidth_and_Fullwidth_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks29Optical_Character_RecognitionyAh@Base 15 + _D3std8internal14unicode_tables6blocks30Ancient_Greek_Musical_NotationyAh@Base 15 + _D3std8internal14unicode_tables6blocks30Phonetic_Extensions_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks30Variation_Selectors_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks31Egyptian_Hieroglyphs_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks31Enclosed_CJK_Letters_and_MonthsyAh@Base 15 + _D3std8internal14unicode_tables6blocks31Enclosed_Ideographic_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks32Enclosed_Alphanumeric_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks32Miscellaneous_Symbols_and_ArrowsyAh@Base 15 + _D3std8internal14unicode_tables6blocks32Supplementary_Private_Use_Area_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks32Supplementary_Private_Use_Area_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks33Cuneiform_Numbers_and_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables6blocks33Mathematical_Alphanumeric_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_DyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_EyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_FyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_GyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_HyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_IyAh@Base 15 + _D3std8internal14unicode_tables6blocks34Ideographic_Description_CharactersyAh@Base 15 + _D3std8internal14unicode_tables6blocks34Symbols_and_Pictographs_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks35Egyptian_Hieroglyph_Format_ControlsyAh@Base 15 + _D3std8internal14unicode_tables6blocks35Ideographic_Symbols_and_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables6blocks35Supplemental_Mathematical_OperatorsyAh@Base 15 + _D3std8internal14unicode_tables6blocks36Combining_Diacritical_Marks_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks36Miscellaneous_Mathematical_Symbols_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks36Miscellaneous_Mathematical_Symbols_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks36Supplemental_Symbols_and_PictographsyAh@Base 15 + _D3std8internal14unicode_tables6blocks37Miscellaneous_Symbols_and_PictographsyAh@Base 15 + _D3std8internal14unicode_tables6blocks37Unified_Canadian_Aboriginal_SyllabicsyAh@Base 15 + _D3std8internal14unicode_tables6blocks38Arabic_Mathematical_Alphabetic_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks38Combining_Diacritical_Marks_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks39CJK_Compatibility_Ideographs_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks39Combining_Diacritical_Marks_for_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks39Symbols_for_Legacy_Computing_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks3LaoyAh@Base 15 + _D3std8internal14unicode_tables6blocks3MroyAh@Base 15 + _D3std8internal14unicode_tables6blocks3NKoyAh@Base 15 + _D3std8internal14unicode_tables6blocks3VaiyAh@Base 15 + _D3std8internal14unicode_tables6blocks3tabFNaNdNfZAySQBzQByQBs15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables6blocks46Unified_Canadian_Aboriginal_Syllabics_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks48Unified_Canadian_Aboriginal_Syllabics_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks4AhomyAh@Base 15 + _D3std8internal14unicode_tables6blocks4ChamyAh@Base 15 + _D3std8internal14unicode_tables6blocks4KawiyAh@Base 15 + _D3std8internal14unicode_tables6blocks4LisuyAh@Base 15 + _D3std8internal14unicode_tables6blocks4MiaoyAh@Base 15 + _D3std8internal14unicode_tables6blocks4ModiyAh@Base 15 + _D3std8internal14unicode_tables6blocks4NewayAh@Base 15 + _D3std8internal14unicode_tables6blocks4TagsyAh@Base 15 + _D3std8internal14unicode_tables6blocks4ThaiyAh@Base 15 + _D3std8internal14unicode_tables6blocks4TotoyAh@Base 15 + _D3std8internal14unicode_tables6blocks4_tabyASQBsQBrQBl15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables6blocks5AdlamyAh@Base 15 + _D3std8internal14unicode_tables6blocks5BamumyAh@Base 15 + _D3std8internal14unicode_tables6blocks5BatakyAh@Base 15 + _D3std8internal14unicode_tables6blocks5BuhidyAh@Base 15 + _D3std8internal14unicode_tables6blocks5DograyAh@Base 15 + _D3std8internal14unicode_tables6blocks5GarayyAh@Base 15 + _D3std8internal14unicode_tables6blocks5KhmeryAh@Base 15 + _D3std8internal14unicode_tables6blocks5LimbuyAh@Base 15 + _D3std8internal14unicode_tables6blocks5NushuyAh@Base 15 + _D3std8internal14unicode_tables6blocks5OghamyAh@Base 15 + _D3std8internal14unicode_tables6blocks5OriyayAh@Base 15 + _D3std8internal14unicode_tables6blocks5OsageyAh@Base 15 + _D3std8internal14unicode_tables6blocks5RunicyAh@Base 15 + _D3std8internal14unicode_tables6blocks5TakriyAh@Base 15 + _D3std8internal14unicode_tables6blocks5TamilyAh@Base 15 + _D3std8internal14unicode_tables6blocks6ArabicyAh@Base 15 + _D3std8internal14unicode_tables6blocks6ArrowsyAh@Base 15 + _D3std8internal14unicode_tables6blocks6BrahmiyAh@Base 15 + _D3std8internal14unicode_tables6blocks6CarianyAh@Base 15 + _D3std8internal14unicode_tables6blocks6ChakmayAh@Base 15 + _D3std8internal14unicode_tables6blocks6CopticyAh@Base 15 + _D3std8internal14unicode_tables6blocks6GothicyAh@Base 15 + _D3std8internal14unicode_tables6blocks6HatranyAh@Base 15 + _D3std8internal14unicode_tables6blocks6HebrewyAh@Base 15 + _D3std8internal14unicode_tables6blocks6KaithiyAh@Base 15 + _D3std8internal14unicode_tables6blocks6KanbunyAh@Base 15 + _D3std8internal14unicode_tables6blocks6KhojkiyAh@Base 15 + _D3std8internal14unicode_tables6blocks6LepchayAh@Base 15 + _D3std8internal14unicode_tables6blocks6LycianyAh@Base 15 + _D3std8internal14unicode_tables6blocks6LydianyAh@Base 15 + _D3std8internal14unicode_tables6blocks6RejangyAh@Base 15 + _D3std8internal14unicode_tables6blocks6SyriacyAh@Base 15 + _D3std8internal14unicode_tables6blocks6Tai_LeyAh@Base 15 + _D3std8internal14unicode_tables6blocks6TangsayAh@Base 15 + _D3std8internal14unicode_tables6blocks6TangutyAh@Base 15 + _D3std8internal14unicode_tables6blocks6TeluguyAh@Base 15 + _D3std8internal14unicode_tables6blocks6ThaanayAh@Base 15 + _D3std8internal14unicode_tables6blocks6TodhriyAh@Base 15 + _D3std8internal14unicode_tables6blocks6WanchoyAh@Base 15 + _D3std8internal14unicode_tables6blocks6YezidiyAh@Base 15 + _D3std8internal14unicode_tables6blocks6__initZ@Base 15 + _D3std8internal14unicode_tables6blocks7AvestanyAh@Base 15 + _D3std8internal14unicode_tables6blocks7BengaliyAh@Base 15 + _D3std8internal14unicode_tables6blocks7DeseretyAh@Base 15 + _D3std8internal14unicode_tables6blocks7ElbasanyAh@Base 15 + _D3std8internal14unicode_tables6blocks7ElymaicyAh@Base 15 + _D3std8internal14unicode_tables6blocks7GranthayAh@Base 15 + _D3std8internal14unicode_tables6blocks7HanunooyAh@Base 15 + _D3std8internal14unicode_tables6blocks7KannadayAh@Base 15 + _D3std8internal14unicode_tables6blocks7MakasaryAh@Base 15 + _D3std8internal14unicode_tables6blocks7MandaicyAh@Base 15 + _D3std8internal14unicode_tables6blocks7MarchenyAh@Base 15 + _D3std8internal14unicode_tables6blocks7MultaniyAh@Base 15 + _D3std8internal14unicode_tables6blocks7MyanmaryAh@Base 15 + _D3std8internal14unicode_tables6blocks7Ol_OnalyAh@Base 15 + _D3std8internal14unicode_tables6blocks7OsmanyayAh@Base 15 + _D3std8internal14unicode_tables6blocks7SharadayAh@Base 15 + _D3std8internal14unicode_tables6blocks7ShavianyAh@Base 15 + _D3std8internal14unicode_tables6blocks7SiddhamyAh@Base 15 + _D3std8internal14unicode_tables6blocks7SinhalayAh@Base 15 + _D3std8internal14unicode_tables6blocks7SogdianyAh@Base 15 + _D3std8internal14unicode_tables6blocks7SoyomboyAh@Base 15 + _D3std8internal14unicode_tables6blocks7SunuwaryAh@Base 15 + _D3std8internal14unicode_tables6blocks7TagalogyAh@Base 15 + _D3std8internal14unicode_tables6blocks7TibetanyAh@Base 15 + _D3std8internal14unicode_tables6blocks7TirhutayAh@Base 15 + _D3std8internal14unicode_tables6blocks8ArmenianyAh@Base 15 + _D3std8internal14unicode_tables6blocks8BalineseyAh@Base 15 + _D3std8internal14unicode_tables6blocks8BopomofoyAh@Base 15 + _D3std8internal14unicode_tables6blocks8BugineseyAh@Base 15 + _D3std8internal14unicode_tables6blocks8CherokeeyAh@Base 15 + _D3std8internal14unicode_tables6blocks8CyrillicyAh@Base 15 + _D3std8internal14unicode_tables6blocks8DingbatsyAh@Base 15 + _D3std8internal14unicode_tables6blocks8DuployanyAh@Base 15 + _D3std8internal14unicode_tables6blocks8EthiopicyAh@Base 15 + _D3std8internal14unicode_tables6blocks8GeorgianyAh@Base 15 + _D3std8internal14unicode_tables6blocks8GujaratiyAh@Base 15 + _D3std8internal14unicode_tables6blocks8GurmukhiyAh@Base 15 + _D3std8internal14unicode_tables6blocks8HiraganayAh@Base 15 + _D3std8internal14unicode_tables6blocks8JavaneseyAh@Base 15 + _D3std8internal14unicode_tables6blocks8KatakanayAh@Base 15 + _D3std8internal14unicode_tables6blocks8Kayah_LiyAh@Base 15 + _D3std8internal14unicode_tables6blocks8Linear_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks8MahajaniyAh@Base 15 + _D3std8internal14unicode_tables6blocks8Ol_ChikiyAh@Base 15 + _D3std8internal14unicode_tables6blocks8Phags_payAh@Base 15 + _D3std8internal14unicode_tables6blocks8SpecialsyAh@Base 15 + _D3std8internal14unicode_tables6blocks8TagbanwayAh@Base 15 + _D3std8internal14unicode_tables6blocks8Tai_ThamyAh@Base 15 + _D3std8internal14unicode_tables6blocks8Tai_VietyAh@Base 15 + _D3std8internal14unicode_tables6blocks8TifinaghyAh@Base 15 + _D3std8internal14unicode_tables6blocks8UgariticyAh@Base 15 + _D3std8internal14unicode_tables6blocks8VithkuqiyAh@Base 15 + _D3std8internal14unicode_tables6blocks9Bassa_VahyAh@Base 15 + _D3std8internal14unicode_tables6blocks9BhaiksukiyAh@Base 15 + _D3std8internal14unicode_tables6blocks9CuneiformyAh@Base 15 + _D3std8internal14unicode_tables6blocks9EmoticonsyAh@Base 15 + _D3std8internal14unicode_tables6blocks9KhudawadiyAh@Base 15 + _D3std8internal14unicode_tables6blocks9Kirat_RaiyAh@Base 15 + _D3std8internal14unicode_tables6blocks9MalayalamyAh@Base 15 + _D3std8internal14unicode_tables6blocks9MongolianyAh@Base 15 + _D3std8internal14unicode_tables6blocks9NabataeanyAh@Base 15 + _D3std8internal14unicode_tables6blocks9PalmyreneyAh@Base 15 + _D3std8internal14unicode_tables6blocks9SamaritanyAh@Base 15 + _D3std8internal14unicode_tables6blocks9SundaneseyAh@Base 15 + _D3std8internal14unicode_tables6hangul1LyAh@Base 15 + _D3std8internal14unicode_tables6hangul1TyAh@Base 15 + _D3std8internal14unicode_tables6hangul1VyAh@Base 15 + _D3std8internal14unicode_tables6hangul2LVyAh@Base 15 + _D3std8internal14unicode_tables6hangul3LVTyAh@Base 15 + _D3std8internal14unicode_tables6hangul3tabFNaNdNfZAySQBzQByQBs15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables6hangul4_tabyASQBsQBrQBl15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables6hangul6__initZ@Base 15 + _D3std8internal14unicode_tables7isHangLFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables7isHangTFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables7isHangVFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables7scripts10ChorasmianyAh@Base 15 + _D3std8internal14unicode_tables7scripts10DevanagariyAh@Base 15 + _D3std8internal14unicode_tables7scripts10GlagoliticyAh@Base 15 + _D3std8internal14unicode_tables7scripts10KharoshthiyAh@Base 15 + _D3std8internal14unicode_tables7scripts10ManichaeanyAh@Base 15 + _D3std8internal14unicode_tables7scripts10Old_ItalicyAh@Base 15 + _D3std8internal14unicode_tables7scripts10Old_PermicyAh@Base 15 + _D3std8internal14unicode_tables7scripts10Old_TurkicyAh@Base 15 + _D3std8internal14unicode_tables7scripts10Old_UyghuryAh@Base 15 + _D3std8internal14unicode_tables7scripts10PhoenicianyAh@Base 15 + _D3std8internal14unicode_tables7scripts10SaurashtrayAh@Base 15 + _D3std8internal14unicode_tables7scripts11Dives_AkuruyAh@Base 15 + _D3std8internal14unicode_tables7scripts11MedefaidrinyAh@Base 15 + _D3std8internal14unicode_tables7scripts11Nag_MundariyAh@Base 15 + _D3std8internal14unicode_tables7scripts11NandinagariyAh@Base 15 + _D3std8internal14unicode_tables7scripts11New_Tai_LueyAh@Base 15 + _D3std8internal14unicode_tables7scripts11Old_PersianyAh@Base 15 + _D3std8internal14unicode_tables7scripts11Old_SogdianyAh@Base 15 + _D3std8internal14unicode_tables7scripts11Pau_Cin_HauyAh@Base 15 + _D3std8internal14unicode_tables7scripts11SignWritingyAh@Base 15 + _D3std8internal14unicode_tables7scripts11Warang_CitiyAh@Base 15 + _D3std8internal14unicode_tables7scripts12Cypro_MinoanyAh@Base 15 + _D3std8internal14unicode_tables7scripts12Gurung_KhemayAh@Base 15 + _D3std8internal14unicode_tables7scripts12Meetei_MayekyAh@Base 15 + _D3std8internal14unicode_tables7scripts12Pahawh_HmongyAh@Base 15 + _D3std8internal14unicode_tables7scripts12Sora_SompengyAh@Base 15 + _D3std8internal14unicode_tables7scripts12Syloti_NagriyAh@Base 15 + _D3std8internal14unicode_tables7scripts13Gunjala_GondiyAh@Base 15 + _D3std8internal14unicode_tables7scripts13Masaram_GondiyAh@Base 15 + _D3std8internal14unicode_tables7scripts13Mende_KikakuiyAh@Base 15 + _D3std8internal14unicode_tables7scripts13Old_HungarianyAh@Base 15 + _D3std8internal14unicode_tables7scripts13Tulu_TigalariyAh@Base 15 + _D3std8internal14unicode_tables7scripts15Hanifi_RohingyayAh@Base 15 + _D3std8internal14unicode_tables7scripts15Psalter_PahlaviyAh@Base 15 + _D3std8internal14unicode_tables7scripts16Imperial_AramaicyAh@Base 15 + _D3std8internal14unicode_tables7scripts16Meroitic_CursiveyAh@Base 15 + _D3std8internal14unicode_tables7scripts16Zanabazar_SquareyAh@Base 15 + _D3std8internal14unicode_tables7scripts17Old_North_ArabianyAh@Base 15 + _D3std8internal14unicode_tables7scripts17Old_South_ArabianyAh@Base 15 + _D3std8internal14unicode_tables7scripts18Caucasian_AlbanianyAh@Base 15 + _D3std8internal14unicode_tables7scripts19Canadian_AboriginalyAh@Base 15 + _D3std8internal14unicode_tables7scripts19Khitan_Small_ScriptyAh@Base 15 + _D3std8internal14unicode_tables7scripts20Egyptian_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables7scripts20Meroitic_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables7scripts21Anatolian_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables7scripts21Inscriptional_PahlaviyAh@Base 15 + _D3std8internal14unicode_tables7scripts22Inscriptional_ParthianyAh@Base 15 + _D3std8internal14unicode_tables7scripts22Nyiakeng_Puachue_HmongyAh@Base 15 + _D3std8internal14unicode_tables7scripts2YiyAh@Base 15 + _D3std8internal14unicode_tables7scripts3HanyAh@Base 15 + _D3std8internal14unicode_tables7scripts3LaoyAh@Base 15 + _D3std8internal14unicode_tables7scripts3MroyAh@Base 15 + _D3std8internal14unicode_tables7scripts3NkoyAh@Base 15 + _D3std8internal14unicode_tables7scripts3VaiyAh@Base 15 + _D3std8internal14unicode_tables7scripts3tabFNaNdNfZAySQCaQBzQBt15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables7scripts4AhomyAh@Base 15 + _D3std8internal14unicode_tables7scripts4ChamyAh@Base 15 + _D3std8internal14unicode_tables7scripts4KawiyAh@Base 15 + _D3std8internal14unicode_tables7scripts4LisuyAh@Base 15 + _D3std8internal14unicode_tables7scripts4MiaoyAh@Base 15 + _D3std8internal14unicode_tables7scripts4ModiyAh@Base 15 + _D3std8internal14unicode_tables7scripts4NewayAh@Base 15 + _D3std8internal14unicode_tables7scripts4ThaiyAh@Base 15 + _D3std8internal14unicode_tables7scripts4TotoyAh@Base 15 + _D3std8internal14unicode_tables7scripts4_tabyASQBtQBsQBm15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables7scripts5AdlamyAh@Base 15 + _D3std8internal14unicode_tables7scripts5BamumyAh@Base 15 + _D3std8internal14unicode_tables7scripts5BatakyAh@Base 15 + _D3std8internal14unicode_tables7scripts5BuhidyAh@Base 15 + _D3std8internal14unicode_tables7scripts5DograyAh@Base 15 + _D3std8internal14unicode_tables7scripts5GarayyAh@Base 15 + _D3std8internal14unicode_tables7scripts5GreekyAh@Base 15 + _D3std8internal14unicode_tables7scripts5KhmeryAh@Base 15 + _D3std8internal14unicode_tables7scripts5LatinyAh@Base 15 + _D3std8internal14unicode_tables7scripts5LimbuyAh@Base 15 + _D3std8internal14unicode_tables7scripts5NushuyAh@Base 15 + _D3std8internal14unicode_tables7scripts5OghamyAh@Base 15 + _D3std8internal14unicode_tables7scripts5OriyayAh@Base 15 + _D3std8internal14unicode_tables7scripts5OsageyAh@Base 15 + _D3std8internal14unicode_tables7scripts5RunicyAh@Base 15 + _D3std8internal14unicode_tables7scripts5TakriyAh@Base 15 + _D3std8internal14unicode_tables7scripts5TamilyAh@Base 15 + _D3std8internal14unicode_tables7scripts6ArabicyAh@Base 15 + _D3std8internal14unicode_tables7scripts6BrahmiyAh@Base 15 + _D3std8internal14unicode_tables7scripts6CarianyAh@Base 15 + _D3std8internal14unicode_tables7scripts6ChakmayAh@Base 15 + _D3std8internal14unicode_tables7scripts6CommonyAh@Base 15 + _D3std8internal14unicode_tables7scripts6CopticyAh@Base 15 + _D3std8internal14unicode_tables7scripts6GothicyAh@Base 15 + _D3std8internal14unicode_tables7scripts6HangulyAh@Base 15 + _D3std8internal14unicode_tables7scripts6HatranyAh@Base 15 + _D3std8internal14unicode_tables7scripts6HebrewyAh@Base 15 + _D3std8internal14unicode_tables7scripts6KaithiyAh@Base 15 + _D3std8internal14unicode_tables7scripts6KhojkiyAh@Base 15 + _D3std8internal14unicode_tables7scripts6LepchayAh@Base 15 + _D3std8internal14unicode_tables7scripts6LycianyAh@Base 15 + _D3std8internal14unicode_tables7scripts6LydianyAh@Base 15 + _D3std8internal14unicode_tables7scripts6RejangyAh@Base 15 + _D3std8internal14unicode_tables7scripts6SyriacyAh@Base 15 + _D3std8internal14unicode_tables7scripts6Tai_LeyAh@Base 15 + _D3std8internal14unicode_tables7scripts6TangsayAh@Base 15 + _D3std8internal14unicode_tables7scripts6TangutyAh@Base 15 + _D3std8internal14unicode_tables7scripts6TeluguyAh@Base 15 + _D3std8internal14unicode_tables7scripts6ThaanayAh@Base 15 + _D3std8internal14unicode_tables7scripts6TodhriyAh@Base 15 + _D3std8internal14unicode_tables7scripts6WanchoyAh@Base 15 + _D3std8internal14unicode_tables7scripts6YezidiyAh@Base 15 + _D3std8internal14unicode_tables7scripts6__initZ@Base 15 + _D3std8internal14unicode_tables7scripts7AvestanyAh@Base 15 + _D3std8internal14unicode_tables7scripts7BengaliyAh@Base 15 + _D3std8internal14unicode_tables7scripts7BrailleyAh@Base 15 + _D3std8internal14unicode_tables7scripts7CypriotyAh@Base 15 + _D3std8internal14unicode_tables7scripts7DeseretyAh@Base 15 + _D3std8internal14unicode_tables7scripts7ElbasanyAh@Base 15 + _D3std8internal14unicode_tables7scripts7ElymaicyAh@Base 15 + _D3std8internal14unicode_tables7scripts7GranthayAh@Base 15 + _D3std8internal14unicode_tables7scripts7HanunooyAh@Base 15 + _D3std8internal14unicode_tables7scripts7KannadayAh@Base 15 + _D3std8internal14unicode_tables7scripts7MakasaryAh@Base 15 + _D3std8internal14unicode_tables7scripts7MandaicyAh@Base 15 + _D3std8internal14unicode_tables7scripts7MarchenyAh@Base 15 + _D3std8internal14unicode_tables7scripts7MultaniyAh@Base 15 + _D3std8internal14unicode_tables7scripts7MyanmaryAh@Base 15 + _D3std8internal14unicode_tables7scripts7Ol_OnalyAh@Base 15 + _D3std8internal14unicode_tables7scripts7OsmanyayAh@Base 15 + _D3std8internal14unicode_tables7scripts7SharadayAh@Base 15 + _D3std8internal14unicode_tables7scripts7ShavianyAh@Base 15 + _D3std8internal14unicode_tables7scripts7SiddhamyAh@Base 15 + _D3std8internal14unicode_tables7scripts7SinhalayAh@Base 15 + _D3std8internal14unicode_tables7scripts7SogdianyAh@Base 15 + _D3std8internal14unicode_tables7scripts7SoyomboyAh@Base 15 + _D3std8internal14unicode_tables7scripts7SunuwaryAh@Base 15 + _D3std8internal14unicode_tables7scripts7TagalogyAh@Base 15 + _D3std8internal14unicode_tables7scripts7TibetanyAh@Base 15 + _D3std8internal14unicode_tables7scripts7TirhutayAh@Base 15 + _D3std8internal14unicode_tables7scripts8ArmenianyAh@Base 15 + _D3std8internal14unicode_tables7scripts8BalineseyAh@Base 15 + _D3std8internal14unicode_tables7scripts8BopomofoyAh@Base 15 + _D3std8internal14unicode_tables7scripts8BugineseyAh@Base 15 + _D3std8internal14unicode_tables7scripts8CherokeeyAh@Base 15 + _D3std8internal14unicode_tables7scripts8CyrillicyAh@Base 15 + _D3std8internal14unicode_tables7scripts8DuployanyAh@Base 15 + _D3std8internal14unicode_tables7scripts8EthiopicyAh@Base 15 + _D3std8internal14unicode_tables7scripts8GeorgianyAh@Base 15 + _D3std8internal14unicode_tables7scripts8GujaratiyAh@Base 15 + _D3std8internal14unicode_tables7scripts8GurmukhiyAh@Base 15 + _D3std8internal14unicode_tables7scripts8HiraganayAh@Base 15 + _D3std8internal14unicode_tables7scripts8JavaneseyAh@Base 15 + _D3std8internal14unicode_tables7scripts8KatakanayAh@Base 15 + _D3std8internal14unicode_tables7scripts8Kayah_LiyAh@Base 15 + _D3std8internal14unicode_tables7scripts8Linear_AyAh@Base 15 + _D3std8internal14unicode_tables7scripts8Linear_ByAh@Base 15 + _D3std8internal14unicode_tables7scripts8MahajaniyAh@Base 15 + _D3std8internal14unicode_tables7scripts8Ol_ChikiyAh@Base 15 + _D3std8internal14unicode_tables7scripts8Phags_PayAh@Base 15 + _D3std8internal14unicode_tables7scripts8TagbanwayAh@Base 15 + _D3std8internal14unicode_tables7scripts8Tai_ThamyAh@Base 15 + _D3std8internal14unicode_tables7scripts8Tai_VietyAh@Base 15 + _D3std8internal14unicode_tables7scripts8TifinaghyAh@Base 15 + _D3std8internal14unicode_tables7scripts8UgariticyAh@Base 15 + _D3std8internal14unicode_tables7scripts8VithkuqiyAh@Base 15 + _D3std8internal14unicode_tables7scripts9Bassa_VahyAh@Base 15 + _D3std8internal14unicode_tables7scripts9BhaiksukiyAh@Base 15 + _D3std8internal14unicode_tables7scripts9CuneiformyAh@Base 15 + _D3std8internal14unicode_tables7scripts9InheritedyAh@Base 15 + _D3std8internal14unicode_tables7scripts9KhudawadiyAh@Base 15 + _D3std8internal14unicode_tables7scripts9Kirat_RaiyAh@Base 15 + _D3std8internal14unicode_tables7scripts9MalayalamyAh@Base 15 + _D3std8internal14unicode_tables7scripts9MongolianyAh@Base 15 + _D3std8internal14unicode_tables7scripts9NabataeanyAh@Base 15 + _D3std8internal14unicode_tables7scripts9PalmyreneyAh@Base 15 + _D3std8internal14unicode_tables7scripts9SamaritanyAh@Base 15 + _D3std8internal14unicode_tables7scripts9SundaneseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps10AlphabeticyAh@Base 15 + _D3std8internal14unicode_tables8uniProps10DeprecatedyAh@Base 15 + _D3std8internal14unicode_tables8uniProps10Other_MathyAh@Base 15 + _D3std8internal14unicode_tables8uniProps11ID_ContinueyAh@Base 15 + _D3std8internal14unicode_tables8uniProps11IdeographicyAh@Base 15 + _D3std8internal14unicode_tables8uniProps11Soft_DottedyAh@Base 15 + _D3std8internal14unicode_tables8uniProps11White_SpaceyAh@Base 15 + _D3std8internal14unicode_tables8uniProps12Bidi_ControlyAh@Base 15 + _D3std8internal14unicode_tables8uniProps12Join_ControlyAh@Base 15 + _D3std8internal14unicode_tables8uniProps12XID_ContinueyAh@Base 15 + _D3std8internal14unicode_tables8uniProps13Grapheme_BaseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps13Grapheme_LinkyAh@Base 15 + _D3std8internal14unicode_tables8uniProps14Case_IgnorableyAh@Base 15 + _D3std8internal14unicode_tables8uniProps14Other_ID_StartyAh@Base 15 + _D3std8internal14unicode_tables8uniProps14Pattern_SyntaxyAh@Base 15 + _D3std8internal14unicode_tables8uniProps14Quotation_MarkyAh@Base 15 + _D3std8internal14unicode_tables8uniProps15ASCII_Hex_DigityAh@Base 15 + _D3std8internal14unicode_tables8uniProps15Grapheme_ExtendyAh@Base 15 + _D3std8internal14unicode_tables8uniProps15Other_LowercaseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps15Other_UppercaseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps16Other_AlphabeticyAh@Base 15 + _D3std8internal14unicode_tables8uniProps17Other_ID_ContinueyAh@Base 15 + _D3std8internal14unicode_tables8uniProps17Sentence_TerminalyAh@Base 15 + _D3std8internal14unicode_tables8uniProps17Unified_IdeographyAh@Base 15 + _D3std8internal14unicode_tables8uniProps18IDS_Unary_OperatoryAh@Base 15 + _D3std8internal14unicode_tables8uniProps18Regional_IndicatoryAh@Base 15 + _D3std8internal14unicode_tables8uniProps18Variation_SelectoryAh@Base 15 + _D3std8internal14unicode_tables8uniProps19IDS_Binary_OperatoryAh@Base 15 + _D3std8internal14unicode_tables8uniProps19Pattern_White_SpaceyAh@Base 15 + _D3std8internal14unicode_tables8uniProps20IDS_Trinary_OperatoryAh@Base 15 + _D3std8internal14unicode_tables8uniProps20ID_Compat_Math_StartyAh@Base 15 + _D3std8internal14unicode_tables8uniProps20Terminal_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables8uniProps21Other_Grapheme_ExtendyAh@Base 15 + _D3std8internal14unicode_tables8uniProps23ID_Compat_Math_ContinueyAh@Base 15 + _D3std8internal14unicode_tables8uniProps23Logical_Order_ExceptionyAh@Base 15 + _D3std8internal14unicode_tables8uniProps23Modifier_Combining_MarkyAh@Base 15 + _D3std8internal14unicode_tables8uniProps23Noncharacter_Code_PointyAh@Base 15 + _D3std8internal14unicode_tables8uniProps28Default_Ignorable_Code_PointyAh@Base 15 + _D3std8internal14unicode_tables8uniProps28Prepended_Concatenation_MarkyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2CcyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2CfyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2CnyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2CoyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2CsyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2LlyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2LmyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2LoyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2LtyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2LuyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2McyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2MeyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2MnyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2NdyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2NlyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2NoyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PcyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PdyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PeyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PfyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PiyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PoyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PsyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2ScyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2SkyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2SmyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2SoyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2ZlyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2ZpyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2ZsyAh@Base 15 + _D3std8internal14unicode_tables8uniProps34Other_Default_Ignorable_Code_PointyAh@Base 15 + _D3std8internal14unicode_tables8uniProps3tabFNaNdNfZAySQCbQCaQBu15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables8uniProps4DashyAh@Base 15 + _D3std8internal14unicode_tables8uniProps4MathyAh@Base 15 + _D3std8internal14unicode_tables8uniProps4_tabyASQBuQBtQBn15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables8uniProps5CasedyAh@Base 15 + _D3std8internal14unicode_tables8uniProps6HyphenyAh@Base 15 + _D3std8internal14unicode_tables8uniProps6__initZ@Base 15 + _D3std8internal14unicode_tables8uniProps7RadicalyAh@Base 15 + _D3std8internal14unicode_tables8uniProps8ExtenderyAh@Base 15 + _D3std8internal14unicode_tables8uniProps8ID_StartyAh@Base 15 + _D3std8internal14unicode_tables8uniProps9DiacriticyAh@Base 15 + _D3std8internal14unicode_tables8uniProps9Hex_DigityAh@Base 15 + _D3std8internal14unicode_tables8uniProps9LowercaseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps9UppercaseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps9XID_StartyAh@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd11__xopEqualsMxFKxSQDfQDeQCy__TQClTbVii7Vii4Vii4Vii6ZQDhZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd9__xtoHashFNbNeKxSQDeQDdQCx__TQCkTbVii7Vii4Vii4Vii6ZQDgZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTbVii8Vii5Vii8ZQCyZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTbVii8Vii5Vii8ZQCxZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTbVii8Vii6Vii7ZQCyZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTbVii8Vii6Vii7ZQCxZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgThVii8Vii8Vii5ZQCyZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfThVii8Vii8Vii5ZQCxZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw11__xopEqualsMxFKxSQCxQCwQCq__TQCdTtVii12Vii9ZQCsZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw9__xtoHashFNbNeKxSQCwQCvQCp__TQCcTtVii12Vii9ZQCrZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTtVii8Vii7Vii6ZQCyZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTtVii8Vii7Vii6ZQCxZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTtVii8Vii8Vii5ZQCyZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTtVii8Vii8Vii5ZQCxZm@Base 15 + _D3std8internal16unicode_grapheme11__moduleRefZ@Base 15 + _D3std8internal16unicode_grapheme12__ModuleInfoZ@Base 15 + _D3std8internal4math11biguintcore10inplaceSubFNaNbNfAkAxkQdZb@Base 15 + _D3std8internal4math11biguintcore11__moduleRefZ@Base 15 + _D3std8internal4math11biguintcore11blockDivModFNaNbNfAkQcIAkZv@Base 15 + _D3std8internal4math11biguintcore11includeSignFNaNbNfMAxkmbZAk@Base 15 + _D3std8internal4math11biguintcore11mulInternalFNaNbNfAkAxkQdZv@Base 15 + _D3std8internal4math11biguintcore12__ModuleInfoZ@Base 15 + _D3std8internal4math11biguintcore12biguintToHexFNaNbNfNkMAaMxAkaEQCl5ascii10LetterCaseZQBe@Base 15 + _D3std8internal4math11biguintcore12mulKaratsubaFNaNbNfAkAxkQdQhZv@Base 15 + _D3std8internal4math11biguintcore12squareSimpleFNaNbNfAkAxkZv@Base 15 + _D3std8internal4math11biguintcore13getCacheLimitFNaNbNiNfZm@Base 15 + _D3std8internal4math11biguintcore14biguintToOctalFNaNbNiNfAaAxkZm@Base 15 + _D3std8internal4math11biguintcore14divModInternalFNaNbNfAkQcxAkxQdZv@Base 15 + _D3std8internal4math11biguintcore14itoaZeroPaddedFNaNbNiNfAakZv@Base 15 + _D3std8internal4math11biguintcore14squareInternalFNaNbNfAkxAkZv@Base 15 + _D3std8internal4math11biguintcore14twosComplementFNaNbNfAxkAkZv@Base 15 + _D3std8internal4math11biguintcore15addAssignSimpleFNaNbNfAkAxkZk@Base 15 + _D3std8internal4math11biguintcore15adjustRemainderFNaNbNfAkQcAxklQibZv@Base 15 + _D3std8internal4math11biguintcore15recursiveDivModFNaNbNfAkQcAxkQhbZv@Base 15 + _D3std8internal4math11biguintcore15squareKaratsubaFNaNbNfAkxAkQfZv@Base 15 + _D3std8internal4math11biguintcore15subAssignSimpleFNaNbNfAkAxkZk@Base 15 + _D3std8internal4math11biguintcore15toHexZeroPaddedFNaNbNfAakEQCh5ascii10LetterCaseZ14lowerHexDigitsyAa@Base 15 + _D3std8internal4math11biguintcore15toHexZeroPaddedFNaNbNfAakEQCh5ascii10LetterCaseZ14upperHexDigitsyAa@Base 15 + _D3std8internal4math11biguintcore15toHexZeroPaddedFNaNbNfAakEQCh5ascii10LetterCaseZv@Base 15 + _D3std8internal4math11biguintcore16biguintToDecimalFNaNbNfAaAkZm@Base 15 + _D3std8internal4math11biguintcore16schoolbookDivModFNaNbNfAkQcIAkZv@Base 15 + _D3std8internal4math11biguintcore17firstNonZeroDigitFNaNbNiNfxAkZi@Base 15 + _D3std8internal4math11biguintcore18removeLeadingZerosFNaNbNfNkMANgkZQf@Base 15 + _D3std8internal4math11biguintcore20addOrSubAssignSimpleFNaNbNfAkAxkbZk@Base 15 + _D3std8internal4math11biguintcore21highestDifferentDigitFNaNbNiNfxAkxQdZm@Base 15 + _D3std8internal4math11biguintcore24highestPowerBelowUintMaxFNaNbNfkZ6maxpwryG22h@Base 15 + _D3std8internal4math11biguintcore24highestPowerBelowUintMaxFNaNbNfkZi@Base 15 + _D3std8internal4math11biguintcore25highestPowerBelowUlongMaxFNaNbNfkZ6maxpwryG39h@Base 15 + _D3std8internal4math11biguintcore25highestPowerBelowUlongMaxFNaNbNfkZi@Base 15 + _D3std8internal4math11biguintcore25karatsubaRequiredBuffSizeFNaNbNfmZm@Base 15 + _D3std8internal4math11biguintcore3ONEyAk@Base 15 + _D3std8internal4math11biguintcore3TENyAk@Base 15 + _D3std8internal4math11biguintcore3TWOyAk@Base 15 + _D3std8internal4math11biguintcore3addFNaNbNfMxAkMxQeZAk@Base 15 + _D3std8internal4math11biguintcore3subFNaNbNfMxAkMxQePbZAk@Base 15 + _D3std8internal4math11biguintcore4ZEROyAk@Base 15 + _D3std8internal4math11biguintcore4lessFNaNbNfAxkQdZb@Base 15 + _D3std8internal4math11biguintcore6addIntFNaNbNfxAkmZAk@Base 15 + _D3std8internal4math11biguintcore6subIntFNaNbNfxAkmZAk@Base 15 + _D3std8internal4math11biguintcore7BigUint10uintLengthMxFNaNbNdNiNlNfZm@Base 15 + _D3std8internal4math11biguintcore7BigUint11__invariantMxFNaZv@Base 15 + _D3std8internal4math11biguintcore7BigUint11__xopEqualsMxFKxSQCgQCfQBzQBxQBnZb@Base 15 + _D3std8internal4math11biguintcore7BigUint11toHexStringMxFNaNbNlNfiaiaEQCq5ascii10LetterCaseZAa@Base 15 + _D3std8internal4math11biguintcore7BigUint11ulongLengthMxFNaNbNdNiNlNfZm@Base 15 + _D3std8internal4math11biguintcore7BigUint12__invariant0MxFNaZv@Base 15 + _D3std8internal4math11biguintcore7BigUint13toOctalStringMxFNaNbNlNfZAa@Base 15 + _D3std8internal4math11biguintcore7BigUint15toDecimalStringMxFNaNbNlNfiZAa@Base 15 + _D3std8internal4math11biguintcore7BigUint22__funcliteral_L259_C32FNaNbNiNeAkZAyk@Base 15 + _D3std8internal4math11biguintcore7BigUint3divFNaNbNfNkMSQCcQCbQBvQBtQBjMQrZQu@Base 15 + _D3std8internal4math11biguintcore7BigUint3modFNaNbNfNkMSQCcQCbQBvQBtQBjMQrZQu@Base 15 + _D3std8internal4math11biguintcore7BigUint3mulFNaNbNfMSQCaQBzQBtQBrQBhMQrZQu@Base 15 + _D3std8internal4math11biguintcore7BigUint3powFNaNbNfNkMSQCcQCbQBvQBtQBjmZQs@Base 15 + _D3std8internal4math11biguintcore7BigUint6__ctorMFNaNbNcNiNfNkMAykZSQCoQCnQChQCfQBv@Base 15 + _D3std8internal4math11biguintcore7BigUint6__initZ@Base 15 + _D3std8internal4math11biguintcore7BigUint6divModFNaNbNfSQCcQCbQBvQBtQBjMQrJQuJQxZv@Base 15 + _D3std8internal4math11biguintcore7BigUint6isZeroMxFNaNbNiNlNfZb@Base 15 + _D3std8internal4math11biguintcore7BigUint6toHashMxFNaNbNiNlNfZm@Base 15 + _D3std8internal4math11biguintcore7BigUint8__xopCmpMxFKxSQCcQCbQBvQBtQBjZi@Base 15 + _D3std8internal4math11biguintcore7BigUint8addOrSubFNaNbNfMSQCfQCeQByQBwQBmMQrbKbZQx@Base 15 + _D3std8internal4math11biguintcore7BigUint8numBytesMxFNaNbNiNlNfZm@Base 15 + _D3std8internal4math11biguintcore7BigUint8peekUintMxFNaNbNiNlNfmZk@Base 15 + _D3std8internal4math11biguintcore7BigUint9peekUlongMxFNaNbNiNlNfmZm@Base 15 + _D3std8internal4math11biguintcore7BigUint__T5opCmpTvZQjMxFNaNbNiNlNfxSQCqQCpQCjQChQBxZi@Base 15 + _D3std8internal4math11biguintcore7BigUint__T6divIntTykZQlFNaNbNfNkMSQCoQCnQChQCfQBvykZQt@Base 15 + _D3std8internal4math11biguintcore7BigUint__T6modIntTykZQlFNaNbNfMSQCmQClQCfQCdQBtykZk@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opAssignTmZQmMFNaNbNlNfmZv@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opAssignTvZQmMFNaNbNiNlNfSQCrQCqQCkQCiQByZv@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opBinaryVAyaa2_3c3cTmZQxMxFNaNbNlNfmZSQDdQDcQCwQCuQCk@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opBinaryVAyaa2_3e3eTmZQxMxFNaNbNjNlNfmZSQDfQDeQCyQCwQCm@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opEqualsTvZQmMxFNaNbNiNlNfKxSQCuQCtQCnQClQCbZb@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opEqualsTvZQmMxFNaNbNiNlNfmZb@Base 15 + _D3std8internal4math11biguintcore9addSimpleFNaNbNfAkxAkxQdZk@Base 15 + _D3std8internal4math11biguintcore9mulSimpleFNaNbNfAkAxkQdZv@Base 15 + _D3std8internal4math11biguintcore__T6intpowTkZQkFNaNbNiNfkmZk@Base 15 + _D3std8internal4math12biguintnoasm11__moduleRefZ@Base 15 + _D3std8internal4math12biguintnoasm12__ModuleInfoZ@Base 15 + _D3std8internal4math12biguintnoasm12multibyteMulFNaNbNiNfAkAxkkkZk@Base 15 + _D3std8internal4math12biguintnoasm12multibyteShlFNaNbNiNfAkAxkkZk@Base 15 + _D3std8internal4math12biguintnoasm12multibyteShrFNaNbNiNfAkAxkkZv@Base 15 + _D3std8internal4math12biguintnoasm15multibyteSquareFNaNbNiNfAkAxkZv@Base 15 + _D3std8internal4math12biguintnoasm18multibyteDivAssignFNaNbNiNfAkkkZk@Base 15 + _D3std8internal4math12biguintnoasm27multibyteAddDiagonalSquaresFNaNbNiNfAkAxkZv@Base 15 + _D3std8internal4math12biguintnoasm27multibyteMultiplyAccumulateFNaNbNiNfAkAxkQdZv@Base 15 + _D3std8internal4math12biguintnoasm27multibyteTriangleAccumulateFNaNbNiNfAkAxkZv@Base 15 + _D3std8internal4math12biguintnoasm__T15multibyteAddSubVai43ZQxFNaNbNiNfAkAxkQdkZk@Base 15 + _D3std8internal4math12biguintnoasm__T15multibyteAddSubVai45ZQxFNaNbNiNfAkAxkQdkZk@Base 15 + _D3std8internal4math12biguintnoasm__T15multibyteMulAddVai43ZQxFNaNbNiNfAkAxkkkZk@Base 15 + _D3std8internal4math12biguintnoasm__T15multibyteMulAddVai45ZQxFNaNbNiNfAkAxkkkZk@Base 15 + _D3std8internal4math12biguintnoasm__T24multibyteIncrementAssignVai43ZQBgFNaNbNiNfAkkZk@Base 15 + _D3std8internal4math12biguintnoasm__T24multibyteIncrementAssignVai45ZQBgFNaNbNiNfAkkZk@Base 15 + _D3std8internal4math13errorfunction11__moduleRefZ@Base 15 + _D3std8internal4math13errorfunction12__ModuleInfoZ@Base 15 + _D3std8internal4math13errorfunction1PyG10e@Base 15 + _D3std8internal4math13errorfunction1QyG11e@Base 15 + _D3std8internal4math13errorfunction1RyG5e@Base 15 + _D3std8internal4math13errorfunction1SyG6e@Base 15 + _D3std8internal4math13errorfunction1TyG7e@Base 15 + _D3std8internal4math13errorfunction1UyG7e@Base 15 + _D3std8internal4math13errorfunction22normalDistributionImplFNaNbNiNfeZe@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P0yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P1yG10e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P2yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P3yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q0yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q1yG10e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q2yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q3yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZe@Base 15 + _D3std8internal4math13errorfunction3erfFNaNbNiNfeZe@Base 15 + _D3std8internal4math13errorfunction4erfcFNaNbNiNfeZe@Base 15 + _D3std8internal4math13errorfunction5EXP_2ye@Base 15 + _D3std8internal4math13errorfunction5erfceFNaNbNiNfeZe@Base 15 + _D3std8internal4math13errorfunction5expx2FNaNbNiNfeiZe@Base 15 + _D3std8internal4math13errorfunction__T12rationalPolyTeZQrFNaNbNiNfeAxeQdZe@Base 15 + _D3std8internal4math13gammafunction10EULERGAMMAye@Base 15 + _D3std8internal4math13gammafunction11__moduleRefZ@Base 15 + _D3std8internal4math13gammafunction11logmdigammaFNaNbNiNfeZe@Base 15 + _D3std8internal4math13gammafunction12__ModuleInfoZ@Base 15 + _D3std8internal4math13gammafunction13gammaStirlingFNaNbNiNfeZ19LargeStirlingCoeffsyG7e@Base 15 + _D3std8internal4math13gammafunction13gammaStirlingFNaNbNiNfeZ19SmallStirlingCoeffsyG9e@Base 15 + _D3std8internal4math13gammafunction13gammaStirlingFNaNbNiNfeZe@Base 15 + _D3std8internal4math13gammafunction14betaIncompleteFNaNbNiNfeeeZe@Base 15 + _D3std8internal4math13gammafunction15gammaIncompleteFNaNbNiNfeeZe@Base 15 + _D3std8internal4math13gammafunction16GammaSmallCoeffsyG9e@Base 15 + _D3std8internal4math13gammafunction16igammaTemmeLargeFNaNbNiNfeeZ4coefyG13Ae@Base 15 + _D3std8internal4math13gammafunction16igammaTemmeLargeFNaNbNiNfeeZe@Base 15 + _D3std8internal4math13gammafunction17betaIncompleteInvFNaNbNiNfeeeZe@Base 15 + _D3std8internal4math13gammafunction17logGammaNumeratoryG7e@Base 15 + _D3std8internal4math13gammafunction18betaDistExpansion1FNaNbNiNfeeeZe@Base 15 + _D3std8internal4math13gammafunction18betaDistExpansion2FNaNbNiNfeeeZe@Base 15 + _D3std8internal4math13gammafunction18logmdigammaInverseFNaNbNiNfeZe@Base 15 + _D3std8internal4math13gammafunction19GammaSmallNegCoeffsyG9e@Base 15 + _D3std8internal4math13gammafunction19betaDistPowerSeriesFNaNbNiNfeeeZe@Base 15 + _D3std8internal4math13gammafunction19logGammaDenominatoryG8e@Base 15 + _D3std8internal4math13gammafunction20GammaNumeratorCoeffsyG8e@Base 15 + _D3std8internal4math13gammafunction20gammaIncompleteComplFNaNbNiNfeeZe@Base 15 + _D3std8internal4math13gammafunction22GammaDenominatorCoeffsyG9e@Base 15 + _D3std8internal4math13gammafunction22logGammaStirlingCoeffsyG7e@Base 15 + _D3std8internal4math13gammafunction23gammaIncompleteComplInvFNaNbNiNfeeZe@Base 15 + _D3std8internal4math13gammafunction4Bn_nyG7e@Base 15 + _D3std8internal4math13gammafunction5gammaFNaNbNiNfeZe@Base 15 + _D3std8internal4math13gammafunction7digammaFNaNbNiNfeZe@Base 15 + _D3std8internal4math13gammafunction8logGammaFNaNbNiNfeZe@Base 15 + _D3std8internal4test10dummyrange11__moduleRefZ@Base 15 + _D3std8internal4test10dummyrange12__ModuleInfoZ@Base 15 + _D3std8internal4test10dummyrange7TestFoo6__initZ@Base 15 + _D3std8internal4test10dummyrange7TestFoo8opEqualsMxFKxSQCbQCaQBuQBsQBjZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei1TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei1TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui0VQDdi1TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei2TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei2TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui0VQDdi2TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei3TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4backMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei3TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opIndexMNgFNaNbNcNiNfmZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfZSQFqQFpQFjQFh__TQEyVQEpi0VQDwi0VQDfi3TQClZQFy@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfmmZSQFsQFrQFlQFj__TQFaVQEri0VQDyi0VQDhi3TQCnZQGa@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui0VQDdi3TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei1TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei1TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui1VQDdi1TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei2TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei2TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui1VQDdi2TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei0TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi0TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei1TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei1TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi1TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei2TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei2TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi2TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei3TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm13opIndexAssignMFNaNbNiNfkmZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4backMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4backMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei3TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opIndexMxFNaNbNiNfmZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfZSQFqQFpQFjQFh__TQEyVQEpi1VQDwi0VQDfi3TQClZQFy@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfmmZSQFsQFrQFlQFj__TQFaVQEri1VQDyi0VQDhi3TQCnZQGa@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi3TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei0TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui1VQDdi0TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei1TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei1TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui1VQDdi1TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei2TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei2TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui1VQDdi2TQCjZQFwZm@Base 15 + _D3std8internal4test25sumtype_example_overloads11__moduleRefZ@Base 15 + _D3std8internal4test25sumtype_example_overloads12__ModuleInfoZ@Base 15 + _D3std8internal4test25sumtype_example_overloads6handleFNfAyaZQe@Base 15 + _D3std8internal4test25sumtype_example_overloads6handleFNfdZAya@Base 15 + _D3std8internal4test25sumtype_example_overloads6handleFNfiZAya@Base 15 + _D3std8internal4test3uda11__moduleRefZ@Base 15 + _D3std8internal4test3uda12__ModuleInfoZ@Base 15 + _D3std8internal4test3uda17HasPrivateMembers6__initZ@Base 15 + _D3std8internal4test5range11__moduleRefZ@Base 15 + _D3std8internal4test5range12__ModuleInfoZ@Base 15 + _D3std8internal6memory11__moduleRefZ@Base 15 + _D3std8internal6memory12__ModuleInfoZ@Base 15 + _D3std8internal6memory__T13enforceCallocZQqFNaNbNiNfmmZPv@Base 15 + _D3std8internal6memory__T13enforceMallocZQqFNaNbNiNfmZPv@Base 15 + _D3std8internal6memory__T14enforceReallocZQrFNaNbNiNkMPvmZQe@Base 15 + _D3std8internal7cstring11__moduleRefZ@Base 15 + _D3std8internal7cstring12__ModuleInfoZ@Base 15 + _D3std8internal7cstring__T11tempCStringTaTANgaZQvFNaNbNiNfMQrZSQCjQCiQCc__T17TempCStringBufferTaZQw@Base 15 + _D3std8internal7cstring__T11tempCStringTaTAxaZQuFNaNbNiNfMQqZSQCiQChQCb__T17TempCStringBufferTaZQw@Base 15 + _D3std8internal7cstring__T11tempCStringTaTAyaZQuFNaNbNiNfMQqZSQCiQChQCb__T17TempCStringBufferTaZQw@Base 15 + _D3std8internal7cstring__T11tempCStringTaTSQBp4path__T16asNormalizedPathTSQCu5range__T5chainTSQDo3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQFnQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQtZQHeFNaNbNiMQGzZSQIsQIrQIl__T17TempCStringBufferTaZQw@Base 15 + _D3std8internal7cstring__T11tempCStringTaTSQBp5range__T5chainTSQCj3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEiQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFlFNaNbNiNfMQFiZSQHbQHaQGu__T17TempCStringBufferTaZQw@Base 15 + _D3std8internal7cstring__T14trustedReallocTaZQtFNaNbNiNeNkMAaZQd@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw15trustedVoidInitFNaNbNiNeZSQCyQCxQCr__TQCmTaZQCs@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw3ptrMxFNaNbNdNiNeZPxa@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw6__dtorMFNaNbNiNeZv@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw6__initZ@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw7buffPtrMNgFNaNbNdNiNjNeZPNga@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw7opIndexMxFNaNbNiNeZAxa@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw8opAssignMFNaNbNcNiNjNeSQCuQCtQCn__TQCiTaZQCoZQx@Base 15 + _D3std8internal7cstring__T19trustedReallocStackTaZQyFNaNbNiNeMAamZQe@Base 15 + _D3std8internal7windows6bcrypt11__moduleRefZ@Base 15.2 + _D3std8internal7windows6bcrypt12__ModuleInfoZ@Base 15.2 + _D3std8internal7windows8advapi3211__moduleRefZ@Base 15 + _D3std8internal7windows8advapi3212__ModuleInfoZ@Base 15 + _D3std8typecons10Structural11__InterfaceZ@Base 15 + _D3std8typecons11__moduleRefZ@Base 15 + _D3std8typecons12__ModuleInfoZ@Base 15 + _D3std8typecons19NotImplementedError6__ctorMFNaNbNfAyaZCQCcQCbQBv@Base 15 + _D3std8typecons19NotImplementedError6__initZ@Base 15 + _D3std8typecons19NotImplementedError6__vtblZ@Base 15 + _D3std8typecons19NotImplementedError7__ClassZ@Base 15 + _D3std8typecons2No6__initZ@Base 15 + _D3std8typecons3Yes6__initZ@Base 15 + _D3std8typecons7Ternary4makeFNaNbNiNfhZSQBmQBlQBf@Base 15 + _D3std8typecons7Ternary6__ctorMFNaNbNcNiNfbZSQBrQBqQBk@Base 15 + _D3std8typecons7Ternary6__ctorMFNaNbNcNiNfxSQBqQBpQBjZSQCbQCaQBu@Base 15 + _D3std8typecons7Ternary6__initZ@Base 15 + _D3std8typecons7Ternary8opAssignMFNaNbNiNfbZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl11__xopEqualsMxFKxSQDxQDw__TQDqTQDhZQDyZb@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__ctorMFNaNbNcNiNeQCuZSQEcQEb__TQDvTQDmZQEd@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl9__xtoHashFNbNeKxSQDwQDv__TQDpTQDgZQDxZm@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T3getTSQDnQDm__TQDgTQCxZQDoZQBbMFNaNbNdNiNeZQDv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T3setTSQDnQDm__TQDgTQCxZQDoZQBbMFNaNbNiNfQDsZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T5clearTSQDpQDo__TQDiTQCzZQDqZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T8opAssignTSQDsQDr__TQDlTQDcZQDtZQBgMFNaNbNiNeQDxZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm11__xopEqualsMxFKxSQDyQDx__TQDrTQDiZQDzZb@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__ctorMFNaNbNcNiNeQCvZSQEdQEc__TQDwTQDnZQEe@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm9__xtoHashFNbNeKxSQDxQDw__TQDqTQDhZQDyZm@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T3getTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNdNiNeZQDw@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T3setTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNiNfQDtZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T5clearTSQDqQDp__TQDjTQDaZQDrZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T8opAssignTSQDtQDs__TQDmTQDdZQDuZQBgMFNaNbNiNeQDyZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm11__xopEqualsMxFKxSQDyQDx__TQDrTQDiZQDzZb@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__ctorMFNaNbNcNiNeQCvZSQEdQEc__TQDwTQDnZQEe@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm9__xtoHashFNbNeKxSQDxQDw__TQDqTQDhZQDyZm@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T3getTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNdNiNeZQDw@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T3setTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNiNfQDtZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T5clearTSQDqQDp__TQDjTQDaZQDrZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T8opAssignTSQDtQDs__TQDmTQDdZQDuZQBgMFNaNbNiNeQDyZv@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm6__ctorMFNaNbNcNiNeQDvZSQFdQFc__TQEwTQEnZQFe@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T3getTSQEoQEn__TQEhTQDyZQEpZQBbMFNaNbNdNiNeZQEw@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T3setTSQEoQEn__TQEhTQDyZQEpZQBbMFNaNbNiNfQEtZv@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T5clearTSQEqQEp__TQEjTQEaZQErZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T8opAssignTSQEtQEs__TQEmTQEdZQEuZQBgMFNaNbNiNeQEyZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__ctorMFNaNbNcNiNeQCbZSQDjQDi__TQDcTQCtZQDk@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T3getTSQCuQCt__TQCnTQCeZQCvZQBbMFNaNbNdNiNeZQDc@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T3setTSQCuQCt__TQCnTQCeZQCvZQBbMFNaNbNiNfQCzZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T5clearTSQCwQCv__TQCpTQCgZQCxZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T8opAssignTSQCzQCy__TQCsTQCjZQDaZQBgMFNaNbNiNeQDeZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg6__ctorMFNaNbNcNiNeQCpZSQDxQDw__TQDqTQDhZQDy@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T3getTSQDiQDh__TQDbTQCsZQDjZQBbMFNaNbNdNiNeZQDq@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T3setTSQDiQDh__TQDbTQCsZQDjZQBbMFNaNbNiNfQDnZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T5clearTSQDkQDj__TQDdTQCuZQDlZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T8opAssignTSQDnQDm__TQDgTQCxZQDoZQBgMFNaNbNiNeQDsZv@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu11__xopEqualsMxFKxSQDgQDf__TQCzTyQCqZQDiZb@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu6__initZ@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin13getMNgFNaNbNdNiNjNlNeZyQCq@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin16__ctorMFNaNbNcNiNfyQCmZSQDvQDu__TQDoTyQDfZQDx@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin18opAssignMFNaNbNiNeSQDqQDp__TQDjTyQDaZQDsZv@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin18opAssignMFNaNbNiNfNkMyQCpZv@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin18opEqualsMxFxCQDkQCfQBzQBtZb@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin1__T8opEqualsZQkMxFKxSQDrQDq__TQDkTyQDbZQDtZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu10__postblitMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore13allocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore4moveMFNaNbNiKQDpZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk11__fieldDtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk11__xopEqualsMxFKxSQFaQEz__TQEtTQEkVQDri1ZQFhQCnQEjZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk8opAssignMFNcNjSQExQEw__TQEqTQEhVQDoi1ZQFeQCkQEgZQBi@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk9__xtoHashFNbNeKxSQEzQEy__TQEsTQEjVQDqi1ZQFgQCmQEiZm@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore__T10initializeZQnMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore__T17ensureInitializedZQuMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15refCountedStoreMNgFNaNbNcNdNiNfZNgSQEyQEx__TQErTQEiVQDpi1ZQFf15RefCountedStore@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu17refCountedPayloadMFNaNbNcNdNiNjZQDs@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFcQDyQDxQDvQDu@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__ctorMFNcQCvZSQEdQEc__TQDwTQDnVQCui1ZQEk@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__dtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu8opAssignMFQCvZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu8opAssignMFSQDzQDy__TQDsTQDjVQCqi1ZQEgZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv10__postblitMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13allocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore4moveMFNaNbNiKQDqZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk11__fieldDtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk11__xopEqualsMxFKxSQFbQFa__TQEuTQElVQDri1ZQFiQCnQEjZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk8opAssignMFNcNjSQEyQEx__TQErTQEiVQDoi1ZQFfQCkQEgZQBi@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk9__xtoHashFNbNeKxSQFaQEz__TQEtTQEkVQDqi1ZQFhQCmQEiZm@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T10initializeZQnMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T17ensureInitializedZQuMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15refCountedStoreMNgFNaNbNcNdNiNfZNgSQEzQEy__TQEsTQEjVQDpi1ZQFg15RefCountedStore@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMFNaNbNcNdNiNjZQDt@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFdQDzQDyQDwQDu@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__ctorMFNcQCwZSQEeQEd__TQDxTQDoVQCui1ZQEl@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__dtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFQCwZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFSQEaQDz__TQDtTQDkVQCqi1ZQEhZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv10__postblitMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13allocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore4moveMFNaNbNiKQDqZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk11__fieldDtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk8opAssignMFNcNjSQEyQEx__TQErTQEiVQDoi1ZQFfQCkQEgZQBi@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T10initializeZQnMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T17ensureInitializedZQuMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15refCountedStoreMNgFNaNbNcNdNiNfZNgSQEzQEy__TQEsTQEjVQDpi1ZQFg15RefCountedStore@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMFNaNbNcNdNiNjZQDt@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFdQDzQDyQDwQDu@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__ctorMFNcQCwZSQEeQEd__TQDxTQDoVQCui1ZQEl@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__dtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFQCwZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFSQEaQDz__TQDtTQDkVQCqi1ZQEhZv@Base 15 + _D3std8typecons__T10rebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQClFNaNbNiNfQCkZSQDsQDr__T10RebindableTQDlZQr@Base 15 + _D3std8typecons__T10rebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCmFNaNbNiNfQClZSQDtQDs__T10RebindableTQDmZQr@Base 15 + _D3std8typecons__T10rebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCmFNaNbNiNfQClZSQDtQDs__T10RebindableTQDmZQr@Base 15 + _D3std8typecons__T10rebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDmFNaNbNiNfQDlZSQEtQEs__T10RebindableTQEmZQr@Base 15 + _D3std8typecons__T10rebindableTSQBe5range__T10OnlyResultTaZQpZQBsFNaNbNiNfQBrZSQCzQCy__T10RebindableTQCsZQr@Base 15 + _D3std8typecons__T10rebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCgFNaNbNiNfQCfZSQDnQDm__T10RebindableTQDgZQr@Base 15 + _D3std8typecons__T11Rebindable2TaZQq3getMNgFNaNbNdNiNeZNga@Base 15 + _D3std8typecons__T11Rebindable2TaZQq6__ctorMFNaNbNcNiNeaZSQCeQCd__TQBxTaZQCd@Base 15 + _D3std8typecons__T11Rebindable2TaZQq6__initZ@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc10__postblitMFNaNbNiNfZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore13allocateStoreMFNaNbNiNfZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl11__fieldDtorMFNeZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl11__xopEqualsMxFKxSQFkQFj__TQFdTQEqVQDti0ZQFrQCpQCbZb@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl6__initZ@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl8opAssignMFNcNjNeSQFjQFi__TQFcTQEpVQDsi0ZQFqQCoQCaZQBi@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl9__xtoHashFNbNeKxSQFjQFi__TQFcTQEpVQDsi0ZQFqQCoQCaZm@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4moveMFNaNbNiNfKQDvZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore6__initZ@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore__T10initializeTAyaTEQFhQDz8SpanModeTbZQBkMFNfKQBfKQBfKbZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15refCountedStoreMNgFNaNbNcNdNiNfZNgSQFgQFf__TQEzTQEmVQDpi0ZQFn15RefCountedStore@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc17refCountedPayloadMNgFNaNbNcNdNiNjZNgSQFiQEaQDy@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__ctorMFNcNkMQDcZSQEoQEn__TQEhTQDuVQCxi0ZQEv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__dtorMFNfZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__initZ@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc8opAssignMFNfSQEjQEi__TQEcTQDpVQCsi0ZQEqZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc8opAssignMFQCzZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc__T6__ctorTAyaTEQElQDd8SpanModeTbZQBfMFNcNfKQBhKQBhKbZSQFyQFx__TQFrTQFeVQEhi0ZQGf@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr11__xopEqualsMxFKxSQCcQCb__TQBvTQBsTQBwTQCaZQClZb@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr6__ctorMFNaNbNcNiNfQBfQBiQBlZSQCnQCm__TQCgTQCdTQChTQClZQCw@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr6__initZ@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr8__xopCmpMxFKxSQByQBx__TQBrTQBoTQBsTQBwZQChZi@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr__T5opCmpTxSQBvQBu__TQBoTQBlTQBpTQBtZQCeZQBmMxFNaNbNiNfxQBtZi@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr__T8opAssignTSQBxQBw__TQBqTQBnTQBrTQBvZQCgZQBoMFNaNbNcNiNfKQBuZQBy@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr__T8opEqualsTxSQByQBx__TQBrTQBoTQBsTQBwZQChZQBpMxFNaNbNiNfxQBtZb@Base 15 + _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf11__xopEqualsMxFKxSQCrQCq__TQCkTQChTQChZQCwZb@Base 15 + _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6__ctorMFNaNbNcNiNfQBuQBtZSQCzQCy__TQCsTQCpTQCpZQDe@Base 15 + _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6__initZ@Base 15 + _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf__T8opEqualsTxSQCnQCm__TQCgTQCdTQCdZQCsZQBlMxFNaNbNiNfxQBpZb@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi11__xopEqualsMxFKxSQDuQDt__TQDnTQDkVQDoa3_6b6579TQDlVQEfa5_76616c7565ZQFdZb@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi12_Tuple_superMNgFNaNbNcNdNiNeZNgSQEjQEi__TQEcTQDzTQDnZQEo@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__ctorMFNaNbNcNiNfQCxQCkZSQEcQEb__TQDvTQDsVQDwa3_6b6579TQDtVQEna5_76616c7565ZQFl@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__initZ@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi__T8opEqualsTxSQDqQDp__TQDjTQDgVQDka3_6b6579TQDhVQEba5_76616c7565ZQEzZQCpMxFNaNbNiNfxQCtZb@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg11__xopEqualsMxFKxSQCsQCr__TQClTQCiTQBtZQCxZb@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6__ctorMFNaNbNcNiNfQBvQBfZSQDaQCz__TQCtTQCqTQCbZQDf@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6__initZ@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6toHashMxFNbNfZm@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg__T8opEqualsTxSQCoQCn__TQChTQCeTQBpZQCtZQBlMxFxQBhZb@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx11__xopEqualsMxFKxSQDjQDi__TQDcTQCzTQCkZQDoZb@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6__ctorMFNaNbNcNiNfQCmQBwZSQDrQDq__TQDkTQDhTQCsZQDw@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6__initZ@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6toHashMxFNbNfZm@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx__T8opEqualsTxSQDfQDe__TQCyTQCvTQCgZQDkZQBlMxFxQBhZb@Base 15 + _D3std8typecons__T5TupleTC8TypeInfoTPvZQv11__xopEqualsMxFKxSQCgQCf__TQBzTQBwTQBpZQClZb@Base 15 + _D3std8typecons__T5TupleTC8TypeInfoTPvZQv6__ctorMFNaNbNcNiNfQBjQBbZSQCoQCn__TQChTQCeTQBxZQCt@Base 15 + _D3std8typecons__T5TupleTC8TypeInfoTPvZQv6__initZ@Base 15 + _D3std8typecons__T5TupleTC8TypeInfoTPvZQv6toHashMxFNbNfZm@Base 15 + _D3std8typecons__T5TupleTC8TypeInfoTPvZQv__T8opEqualsTxSQCcQCb__TQBvTQBsTQBlZQChZQBlMxFNbNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb11__xopEqualsMxFKxSQCnQCm__TQCgTQCdTQBqZQCsZb@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6__ctorMFNaNbNcNiNfQBqQBcZSQCvQCu__TQCoTQClTQByZQDa@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6__initZ@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb8__xopCmpMxFKxSQCjQCi__TQCcTQBzTQBmZQCoZi@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb__T5opCmpTxSQCgQCf__TQBzTQBwTQBjZQClZQBiMxFNaNbNiNfxQBpZi@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb__T8opEqualsTxSQCjQCi__TQCcTQBzTQBmZQCoZQBlMxFNaNbNiNfxQBpZb@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq11__xopEqualsMxFKxSQEcQEb__TQDvTQDsVQDfa6_736368656d61TQDfVQEca8_73657175656e6365ZQFxZb@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq12_Tuple_superMNgFNaNbNcNdNiNeZNgSQErQEq__TQEkTQEhTQDbZQEw@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__ctorMFNaNbNcNiNfQDfQByZSQEkQEj__TQEdTQEaVQDna6_736368656d61TQDnVQEka8_73657175656e6365ZQGf@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__initZ@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq8__xopCmpMxFKxSQDyQDx__TQDrTQDoVQDba6_736368656d61TQDbVQDya8_73657175656e6365ZQFtZi@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq__T5opCmpTxSQDvQDu__TQDoTQDlVQCya6_736368656d61TQCyVQDva8_73657175656e6365ZQFqZQCyMxFNaNbNiNfxQDfZi@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq__T8opEqualsTxSQDyQDx__TQDrTQDoVQDba6_736368656d61TQDbVQDya8_73657175656e6365ZQFtZQDbMxFNaNbNiNfxQDfZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt11__xopEqualsMxFKxSQJfQJe__TQIyTQIvTQEbZQJkZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6__ctorMFNaNbNcNiNfQIiQDnZSQJnQJm__TQJgTQJdTQEjZQJs@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6__initZ@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt__T8opEqualsTxSQJbQJa__TQIuTQIrTQDxZQJgZQBlMxFNaNbNiNfxQBpZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf11__xopEqualsMxFKxSQGrQGq__TQGkTQGhZQGsZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__ctorMFNaNbNcNiNfQFuZSQGwQGv__TQGpTQGmZQGx@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf__T8opBinaryVQDba1_7eTSQGvQGu__TQGoTSQHjQGmQGf__TQFySQHzQFr__TQFiVQFca4_615b315dVQFra1_61ZQGkTQFdZQHvZQJgZQDzMFNaNbNiNfQDtZSQKsQKr__TQKlTQKiTQEbZQKx@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf__T8opEqualsTxSQGnQGm__TQGgTQGdZQGoZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf11__xopEqualsMxFKxSQGrQGq__TQGkTQGhZQGsZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__ctorMFNaNbNcNiNfQFuZSQGwQGv__TQGpTQGmZQGx@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf__T8opEqualsTxSQGnQGm__TQGgTQGdZQGoZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTbTiZQl11__xopEqualsMxFKxSQBwQBv__TQBpTbTiZQBxZb@Base 15 + _D3std8typecons__T5TupleTbTiZQl6__ctorMFNaNbNcNiNfbiZSQCaQBz__TQBtTbTiZQCb@Base 15 + _D3std8typecons__T5TupleTbTiZQl6__initZ@Base 15 + _D3std8typecons__T5TupleTbTiZQl6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTbTiZQl8__xopCmpMxFKxSQBsQBr__TQBlTbTiZQBtZi@Base 15 + _D3std8typecons__T5TupleTbTiZQl__T5opCmpTxSQBpQBo__TQBiTbTiZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 + _D3std8typecons__T5TupleTbTiZQl__T8opEqualsTxSQBsQBr__TQBlTbTiZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTbTkZQl11__xopEqualsMxFKxSQBwQBv__TQBpTbTkZQBxZb@Base 15 + _D3std8typecons__T5TupleTbTkZQl6__ctorMFNaNbNcNiNfbkZSQCaQBz__TQBtTbTkZQCb@Base 15 + _D3std8typecons__T5TupleTbTkZQl6__initZ@Base 15 + _D3std8typecons__T5TupleTbTkZQl6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTbTkZQl8__xopCmpMxFKxSQBsQBr__TQBlTbTkZQBtZi@Base 15 + _D3std8typecons__T5TupleTbTkZQl__T5opCmpTxSQBpQBo__TQBiTbTkZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 + _D3std8typecons__T5TupleTbTkZQl__T8opEqualsTxSQBsQBr__TQBlTbTkZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg11__xopEqualsMxFKxSQDsQDr__TQDlTbVQDia10_7465726d696e61746564TiVQEma6_737461747573ZQFoZb@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg12_Tuple_superMNgFNaNbNcNdNiNeZNgSQEhQEg__TQEaTbTiZQEi@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6__ctorMFNaNbNcNiNfbiZSQDwQDv__TQDpTbVQDma10_7465726d696e61746564TiVQEqa6_737461747573ZQFs@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6__initZ@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg8__xopCmpMxFKxSQDoQDn__TQDhTbVQDea10_7465726d696e61746564TiVQEia6_737461747573ZQFkZi@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg__T5opCmpTxSQDlQDk__TQDeTbVQDba10_7465726d696e61746564TiVQEfa6_737461747573ZQFhZQCzMxFNaNbNiNfxQDgZi@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg__T8opEqualsTxSQDoQDn__TQDhTbVQDea10_7465726d696e61746564TiVQEia6_737461747573ZQFkZQDcMxFNaNbNiNfxQDgZb@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp11__xopEqualsMxFKxSQCaQBz__TQBtTeTeTeTeZQCfZb@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp6__ctorMFNaNbNcNiNfeeeeZSQCgQCf__TQBzTeTeTeTeZQCl@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp6__initZ@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp__T5opCmpTxSQBtQBs__TQBmTeTeTeTeZQByZQBiMxFNaNbNiNfxQBpZf@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp__T8opEqualsTxSQBwQBv__TQBpTeTeTeTeZQCbZQBlMxFNaNbNiNfxQBpZb@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn11__xopEqualsMxFKxSQByQBx__TQBrTiTQBoZQCbZb@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn6__ctorMFNaNbNcNiNfiQBaZSQCeQCd__TQBxTiTQBuZQCh@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn6__initZ@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn8__xopCmpMxFKxSQBuQBt__TQBnTiTQBkZQBxZi@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn__T5opCmpTxSQBrQBq__TQBkTiTQBhZQBuZQBgMxFNaNbNiNfxQBnZi@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn__T8opEqualsTxSQBuQBt__TQBnTiTQBkZQBxZQBjMxFNaNbNiNfxQBnZb@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx11__xopEqualsMxFKxSQDjQDi__TQDcTiVQCza6_737461747573TQDsVQDwa6_6f7574707574ZQEyZb@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx12_Tuple_superMNgFNaNbNcNdNiNeZNgSQDyQDx__TQDrTiTQDoZQEb@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6__ctorMFNaNbNcNiNfiQClZSQDpQDo__TQDiTiVQDfa6_737461747573TQDyVQEca6_6f7574707574ZQFe@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6__initZ@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx8__xopCmpMxFKxSQDfQDe__TQCyTiVQCva6_737461747573TQDoVQDsa6_6f7574707574ZQEuZi@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx__T5opCmpTxSQDcQDb__TQCvTiVQCsa6_737461747573TQDlVQDpa6_6f7574707574ZQErZQCsMxFNaNbNiNfxQCzZi@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx__T8opEqualsTxSQDfQDe__TQCyTiVQCva6_737461747573TQDoVQDsa6_6f7574707574ZQEuZQCvMxFNaNbNiNfxQCzZb@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn11__xopEqualsMxFKxSQByQBx__TQBrTkTkTkZQCbZb@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn6__ctorMFNaNbNcNiNfkkkZSQCdQCc__TQBwTkTkTkZQCg@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn8__xopCmpMxFKxSQBuQBt__TQBnTkTkTkZQBxZi@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn__T5opCmpTxSQBrQBq__TQBkTkTkTkZQBuZQBgMxFNaNbNiNfxQBnZi@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn__T8opEqualsTxSQBuQBt__TQBnTkTkTkZQBxZQBjMxFNaNbNiNfxQBnZb@Base 15 + _D3std8typecons__T5TupleTkTmZQl11__xopEqualsMxFKxSQBwQBv__TQBpTkTmZQBxZb@Base 15 + _D3std8typecons__T5TupleTkTmZQl6__ctorMFNaNbNcNiNfkmZSQCaQBz__TQBtTkTmZQCb@Base 15 + _D3std8typecons__T5TupleTkTmZQl6__initZ@Base 15 + _D3std8typecons__T5TupleTkTmZQl6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTkTmZQl8__xopCmpMxFKxSQBsQBr__TQBlTkTmZQBtZi@Base 15 + _D3std8typecons__T5TupleTkTmZQl__T5opCmpTxSQBpQBo__TQBiTkTmZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 + _D3std8typecons__T5TupleTkTmZQl__T8opEqualsTxSQBsQBr__TQBlTkTmZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq11__xopEqualsMxFKxSQDcQDb__TQCvTkVQCsa4_64617461TmVQDja5_636f756e74ZQEjZb@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq12_Tuple_superMNgFNaNbNcNdNiNeZNgSQDrQDq__TQDkTkTmZQDs@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6__ctorMFNaNbNcNiNfkmZSQDgQDf__TQCzTkVQCwa4_64617461TmVQDna5_636f756e74ZQEn@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6__initZ@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq8__xopCmpMxFKxSQCyQCx__TQCrTkVQCoa4_64617461TmVQDfa5_636f756e74ZQEfZi@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq__T5opCmpTxSQCvQCu__TQCoTkVQCla4_64617461TmVQDca5_636f756e74ZQEcZQCkMxFNaNbNiNfxQCrZi@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq__T8opEqualsTxSQCyQCx__TQCrTkVQCoa4_64617461TmVQDfa5_636f756e74ZQEfZQCnMxFNaNbNiNfxQCrZb@Base 15 + _D3std8typecons__T5TupleTmTmZQl11__xopEqualsMxFKxSQBwQBv__TQBpTmTmZQBxZb@Base 15 + _D3std8typecons__T5TupleTmTmZQl6__ctorMFNaNbNcNiNfmmZSQCaQBz__TQBtTmTmZQCb@Base 15 + _D3std8typecons__T5TupleTmTmZQl6__initZ@Base 15 + _D3std8typecons__T5TupleTmTmZQl6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTmTmZQl8__xopCmpMxFKxSQBsQBr__TQBlTmTmZQBtZi@Base 15 + _D3std8typecons__T5TupleTmTmZQl__T5opCmpTxSQBpQBo__TQBiTmTmZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 + _D3std8typecons__T5TupleTmTmZQl__T8opEqualsTxSQBsQBr__TQBlTmTmZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk11__xopEqualsMxFKxSQCwQCv__TQCpTmVQCma3_706f73TmVQDba3_6c656eZQDxZb@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk12_Tuple_superMNgFNaNbNcNdNiNeZNgSQDlQDk__TQDeTmTmZQDm@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6__ctorMFNaNbNcNiNfmmZSQDaQCz__TQCtTmVQCqa3_706f73TmVQDfa3_6c656eZQEb@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6__initZ@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk8__xopCmpMxFKxSQCsQCr__TQClTmVQCia3_706f73TmVQCxa3_6c656eZQDtZi@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk__T5opCmpTxSQCpQCo__TQCiTmVQCfa3_706f73TmVQCua3_6c656eZQDqZQCeMxFNaNbNiNfxQClZi@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk__T8opEqualsTxSQCsQCr__TQClTmVQCia3_706f73TmVQCxa3_6c656eZQDtZQChMxFNaNbNiNfxQClZb@Base 15 + _D3std8typecons__T5TupleTuTaZQl11__xopEqualsMxFKxSQBwQBv__TQBpTuTaZQBxZb@Base 15 + _D3std8typecons__T5TupleTuTaZQl6__ctorMFNaNbNcNiNfuaZSQCaQBz__TQBtTuTaZQCb@Base 15 + _D3std8typecons__T5TupleTuTaZQl6__initZ@Base 15 + _D3std8typecons__T5TupleTuTaZQl6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTuTaZQl8__xopCmpMxFKxSQBsQBr__TQBlTuTaZQBtZi@Base 15 + _D3std8typecons__T5TupleTuTaZQl__T5opCmpTxSQBpQBo__TQBiTuTaZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 + _D3std8typecons__T5TupleTuTaZQl__T8opEqualsTxSQBsQBr__TQBlTuTaZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5tupleVAyaa4_64617461VQpa5_636f756e74Z__TQBpTkTmZQBxFNaNbNiNfkmZSQDdQDc__T5TupleTkVQCya4_64617461TmVQDpa5_636f756e74ZQBr@Base 15 + _D3std8typecons__T5tupleZ__TQkTC15TypeInfo_StructTPG32hZQBmFNaNbNiNfQBlQvZSQCvQCu__T5TupleTQCiTQBtZQp@Base 15 + _D3std8typecons__T5tupleZ__TQkTC15TypeInfo_StructTPSQBy11concurrency3TidZQCdFNaNbNiNfQCcQBmZSQDnQDm__T5TupleTQDaTQClZQp@Base 15 + _D3std8typecons__T5tupleZ__TQkTSQBe9algorithm9iteration__T9MapResultSQCp10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEt3uni21DecompressedIntervalsZQDuZQFmFNaNbNiNfQFlZSQGtQGs__T5TupleTQGgZQl@Base 15 + _D3std8typecons__T5tupleZ__TQkTSQBe9algorithm9iteration__T9MapResultSQCp10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEt3uni21DecompressedIntervalsZQDuZQFmFNaNbNiNfQFlZSQGtQGs__T5TupleTQGgZQl@Base 15 + _D3std8typecons__T5tupleZ__TQkTbTkZQrFNaNbNiNfbkZSQBwQBv__T5TupleTbTkZQl@Base 15 + _D3std8typecons__T5tupleZ__TQkTkTkTkZQtFNaNbNiNfkkkZSQBzQBy__T5TupleTkTkTkZQn@Base 15 + _D3std8typecons__T5tupleZ__TQkTuTaZQrFNaNbNiNfuaZSQBwQBv__T5TupleTuTaZQl@Base 15 + _D3std9algorithm10comparison11__moduleRefZ@Base 15 + _D3std9algorithm10comparison12__ModuleInfoZ@Base 15 + _D3std9algorithm10comparison6EditOp6__initZ@Base 15 + _D3std9algorithm10comparison__T3cmpTAxhTQeZQmFNaNbNiNfQsQuZi@Base 15 + _D3std9algorithm10comparison__T3cmpTSQBjQBi9iteration__T12FilterResultS_DQCt3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQFkQFjQEb__T9MapResultSQGh5ascii7toLowerTQCoZQBhZQFfTQGdZQGmFNaNfQGpQGsZi@Base 15 + _D3std9algorithm10comparison__T3maxTiTiZQjFNaNbNiNfiiZi@Base 15 + _D3std9algorithm10comparison__T3maxTkTkZQjFNaNbNiNfkkZk@Base 15 + _D3std9algorithm10comparison__T3maxTmTiZQjFNaNbNiNfmiZm@Base 15 + _D3std9algorithm10comparison__T3maxTmTmZQjFNaNbNiNfmmZm@Base 15 + _D3std9algorithm10comparison__T3minTPvTQdZQlFNaNbNiNfQrQtZQw@Base 15 + _D3std9algorithm10comparison__T3minTlTmZQjFNaNbNiNflmZl@Base 15 + _D3std9algorithm10comparison__T3minTmTiZQjFNaNbNiNfmiZi@Base 15 + _D3std9algorithm10comparison__T3minTmTmZQjFNaNbNiNfmmZm@Base 15 + _D3std9algorithm10comparison__T3minTmTyiZQkFNaNbNiNfmyiZyi@Base 15 + _D3std9algorithm10comparison__T3minTmTymZQkFNaNbNiNfmymZm@Base 15 + _D3std9algorithm10comparison__T3minTyiTmZQkFNaNbNiNfyimZyi@Base 15 + _D3std9algorithm10comparison__T3minTymTmZQkFNaNbNiNfymmZym@Base 15 + _D3std9algorithm10comparison__T3minTymTymZQlFNaNbNiNfymymZym@Base 15 + _D3std9algorithm10comparison__T5amongSQBkQBjQBc16__lambda_L88_C25TAyaTQeTQhTQkZQBwFNaNbNiNfQzQBbQBeQBhZk@Base 15 + _D3std9algorithm10comparison__T5amongSQBkQBjQBc16__lambda_L88_C25TEQCn6format8internal5write17HasToStringResultTQBuTQByTQCcZQDpFNaNbNiNfQCsQCvQCyQDbZk@Base 15 + _D3std9algorithm10comparison__T5amongSQBkQBjQBc16__lambda_L88_C25TaTaTaTaTaTaTaTaTaTaTaZQCfFNaNbNiNfaaaaaaaaaaaZk@Base 15 + _D3std9algorithm10comparison__T5amongVai105Vai73Z__TQvTyaZQBbFNaNbNiNfyaZk@Base 15 + _D3std9algorithm10comparison__T5amongVai108Vai76Vai102Vai70Vai105Vai73Z__TQBrTyaZQByFNaNbNiNfyaZk@Base 15 + _D3std9algorithm10comparison__T5amongVai117Vai108Vai85Vai76Z__TQBgTyaZQBnFNaNbNiNfyaZk@Base 15 + _D3std9algorithm10comparison__T5amongVai95Vai44Z__TQuTyaZQBaFNaNbNiNfyaZk@Base 15 + _D3std9algorithm10comparison__T5equalZ__T9equalLoopTSQBzQBy9iteration__T9MapResultSQDd5ascii7toLowerTSQDw3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDcTSQFzQFyQEa__TQDtSQGpQDmQDjTSQHaQDe__TQDdTAyaZQDlFQiZQCvZQFkZQGtFNaNbNiNfKQGvKQCzZb@Base 15 + _D3std9algorithm10comparison__T5equalZ__TQkTAxaTAyaZQvFNaNbNiNfQtQrZb@Base 15 + _D3std9algorithm10comparison__T5equalZ__TQkTSQBrQBq9iteration__T9MapResultSQCv5ascii7toLowerTSQDo3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDcTSQFrQFqQEa__TQDtSQGhQDmQDjTSQGsQDe__TQDdTAyaZQDlFQiZQCvZQFkZQGvFNaNbNiNfQGuQCxZb@Base 15 + _D3std9algorithm11__moduleRefZ@Base 15 + _D3std9algorithm12__ModuleInfoZ@Base 15 + _D3std9algorithm6setops11__moduleRefZ@Base 15 + _D3std9algorithm6setops12__ModuleInfoZ@Base 15 + _D3std9algorithm7sorting11__moduleRefZ@Base 15 + _D3std9algorithm7sorting12__ModuleInfoZ@Base 15 + _D3std9algorithm7sorting__T11TimSortImplSQBn3uni__T13InversionListTSQCoQBb8GcPolicyZQBh8sanitizeMFNfZ18__lambda_L2889_C15TSQErQDe__TQDdTQCrZQDl__T9IntervalsTAkZQoZ5Slice6__initZ@Base 15 + _D3std9algorithm7sorting__T13quickSortImplSQBp10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFg8datetime8timezone13PosixTimeZone10LeapSecondZQGeFNaNbNiNfQClmZv@Base 15 + _D3std9algorithm7sorting__T13quickSortImplSQBp10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFg8datetime8timezone13PosixTimeZone14TempTransitionZQGiFNaNbNiNfQCpmZv@Base 15 + _D3std9algorithm7sorting__T13quickSortImplSQBp10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDjFNaNbNiNfQrmZv@Base 15 + _D3std9algorithm7sorting__T18trustedMoveEmplaceTAyaZQzFNaNbNiNeKQqKQtZv@Base 15 + _D3std9algorithm7sorting__T18trustedMoveEmplaceTCQBv3zip13ArchiveMemberZQBtFNaNbNiNeKQBlKQBpZv@Base 15 + _D3std9algorithm7sorting__T18trustedMoveEmplaceTSQBv8datetime8timezone13PosixTimeZone10LeapSecondZQCtFNaNbNiNeKQClKQCpZv@Base 15 + _D3std9algorithm7sorting__T18trustedMoveEmplaceTSQBv8datetime8timezone13PosixTimeZone14TempTransitionZQCxFNaNbNiNeKQCpKQCtZv@Base 15 + _D3std9algorithm7sorting__T4sortVAyaa17_612e74696d6554203c20622e74696d6554VEQCwQCv8mutation12SwapStrategyi0TASQEe8datetime8timezone13PosixTimeZone10LeapSecondZQFcFNaNbNiNfQClZSQGs5range__T11SortedRangeTQDqVQGra17_612e74696d6554203c20622e74696d6554VEQJnQCv18SortedRangeOptionsi0ZQDm@Base 15 + _D3std9algorithm7sorting__T4sortVAyaa17_612e74696d6554203c20622e74696d6554VEQCwQCv8mutation12SwapStrategyi0TASQEe8datetime8timezone13PosixTimeZone14TempTransitionZQFgFNaNbNiNfQCpZSQGw5range__T11SortedRangeTQDuVQGva17_612e74696d6554203c20622e74696d6554VEQJrQCv18SortedRangeOptionsi0ZQDm@Base 15 + _D3std9algorithm7sorting__T4sortVAyaa5_61203c2062VEQBxQBw8mutation12SwapStrategyi0TAQBzZQCjFNaNbNiNfQrZSQDy5range__T11SortedRangeTQBvVQDxa5_61203c2062VEQFuQBw18SortedRangeOptionsi0ZQCn@Base 15 + _D3std9algorithm7sorting__T5sort5SQBg10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEx8datetime8timezone13PosixTimeZone10LeapSecondZQFvFNaNbNiNfQClZv@Base 15 + _D3std9algorithm7sorting__T5sort5SQBg10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEx8datetime8timezone13PosixTimeZone14TempTransitionZQFzFNaNbNiNfQCpZv@Base 15 + _D3std9algorithm7sorting__T5sort5SQBg10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDaFNaNbNiNfQrZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T6isHeapZQiFNaNbNiNfQCvZb@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T8heapSortZQkFNaNbNiNfQCxZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T8siftDownZQkFNaNbNiNfQCxmymZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T9buildHeapZQlFNaNbNiNfQCyZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T9percolateZQlFNaNbNiNfQCymymZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T6isHeapZQiFNaNbNiNfQCzZb@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T8heapSortZQkFNaNbNiNfQDbZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T8siftDownZQkFNaNbNiNfQDbmymZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T9buildHeapZQlFNaNbNiNfQDcZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T9percolateZQlFNaNbNiNfQDcmymZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T6isHeapZQiFNaNbNiNfQBbZb@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T8heapSortZQkFNaNbNiNfQBdZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T8siftDownZQkFNaNbNiNfQBdmymZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T9buildHeapZQlFNaNbNiNfQBeZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T9percolateZQlFNaNbNiNfQBemymZv@Base 15 + _D3std9algorithm7sorting__T8getPivotSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone10LeapSecondZQFyFNaNbNiNfQClZm@Base 15 + _D3std9algorithm7sorting__T8getPivotSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone14TempTransitionZQGcFNaNbNiNfQCpZm@Base 15 + _D3std9algorithm7sorting__T8getPivotSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDdFNaNbNiNfQrZm@Base 15 + _D3std9algorithm7sorting__T8isSortedSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone10LeapSecondZQFyFNaNbNiNfQClZb@Base 15 + _D3std9algorithm7sorting__T8isSortedSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone14TempTransitionZQGcFNaNbNiNfQCpZb@Base 15 + _D3std9algorithm7sorting__T8isSortedSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDdFNaNbNiNfQrZb@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone10LeapSecondTmTmTmTmTmZQIjFNaNbNiNfQCvmmmmmZv@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone10LeapSecondTmTmTmZQIfFNaNbNiNfQCrmmmZv@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone14TempTransitionTmTmTmTmTmZQInFNaNbNiNfQCzmmmmmZv@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone14TempTransitionTmTmTmZQIjFNaNbNiNfQCvmmmZv@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsVEQDy8typecons__T4FlagVQCha9_6c65616e5269676874ZQBfi0TAQDnTmTmTmTmTmZQFoFNaNbNiNfQBbmmmmmZv@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsVEQDy8typecons__T4FlagVQCha9_6c65616e5269676874ZQBfi0TAQDnTmTmTmZQFkFNaNbNiNfQxmmmZv@Base 15 + _D3std9algorithm7sorting__T9shortSortSQBk10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFb8datetime8timezone13PosixTimeZone10LeapSecondZQFzFNaNbNiNfQClZv@Base 15 + _D3std9algorithm7sorting__T9shortSortSQBk10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFb8datetime8timezone13PosixTimeZone14TempTransitionZQGdFNaNbNiNfQCpZv@Base 15 + _D3std9algorithm7sorting__T9shortSortSQBk10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDeFNaNbNiNfQrZv@Base 15 + _D3std9algorithm8internal11__moduleRefZ@Base 15 + _D3std9algorithm8internal12__ModuleInfoZ@Base 15 + _D3std9algorithm8mutation11__moduleRefZ@Base 15 + _D3std9algorithm8mutation12__ModuleInfoZ@Base 15 + _D3std9algorithm8mutation__T10removeImplVEQBoQBnQBg12SwapStrategyi0TAAyaTlZQBvFNaNbNiNfQtlZQx@Base 15 + _D3std9algorithm8mutation__T10removeImplVEQBoQBnQBg12SwapStrategyi2TAC4core6thread5fiber5FiberTmZQCrFNaNbNiNfQBpmZQBu@Base 15 + _D3std9algorithm8mutation__T11moveAllImplSQBoQBnQBg4moveTAC4core6thread5fiber5FiberTQBbZQCiFNaNbNiNfKQBsKQBwZQCa@Base 15 + _D3std9algorithm8mutation__T11moveEmplaceTSQBp3net4curl3FTP4ImplZQBlFNaNbNiKQBiKQBmZv@Base 15 + _D3std9algorithm8mutation__T11moveEmplaceTSQBp3net4curl4HTTP4ImplZQBmFNaNbNiKQBjKQBnZv@Base 15 + _D3std9algorithm8mutation__T11moveEmplaceTSQBp3net4curl4SMTP4ImplZQBmFNaNbNiKQBjKQBnZv@Base 15 + _D3std9algorithm8mutation__T11moveEmplaceTSQBp4file15DirIteratorImplZQBpFNaNbNiKQBmKQBqZv@Base 15 + _D3std9algorithm8mutation__T12removeStableTAC4core6thread5fiber5FiberTmZQBsFNaNbNiNfQBpmZQBu@Base 15 + _D3std9algorithm8mutation__T14removeUnstableTAAyaTlZQyFNaNbNiNfQslZQw@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTAAyaZQxFNaNbNiNfMKQsNkMKQyZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTACQBu3zip13ArchiveMemberZQBrFNaNbNiNfMKQBnNkMKQBuZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTASQBu5regex8internal2ir10NamedGroupZQCcFNaNbNiNfMKQByNkMKQCfZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTASQBu8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNfMKQCnNkMKQCuZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTASQBu8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNfMKQCrNkMKQCyZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTAkZQvFNaNbNiNfMKQqNkMKQwZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTAyaZQwFNaNbNiNfMKQrNkMKQxZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTC4core6thread5fiber5FiberZQBsFNaNbNiNfMKQBoNkMKQBvZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3net4curl3FTP4ImplZQBpFNaNbNiNfMKQBlNkMKQBsZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3net4curl4HTTP4ImplZQBqFNaNbNiNfMKQBmNkMKQBtZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3net4curl4SMTP4ImplZQBqFNaNbNiNfMKQBmNkMKQBtZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3uni17CodepointIntervalZQBuFNaNbNiNfMKQBqNkMKQBxZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3uni__T13InversionListTSQCuQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDhFNaNbNiNfMKQDdNkMKQDkZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt4file15DirIteratorImplZQBtFNaNbNiNfMKQBpNkMKQBwZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5range__T6strideTAywZQmFQhmZ6ResultZQCgFNaNbNiNfMKQCcNkMKQCjZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBtQBs9iteration__T9MapResultSQCx10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQFh8internal14unicode_tables15UnicodePropertyZQEpZQGfFNaNbNiNfMKQGbNkMKQGiZv@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTAAyaZQxFNaNbNiNeNkMKQuZQx@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTACQBu3zip13ArchiveMemberZQBrFNaNbNiNeNkMKQBpZQBt@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTASQBu5regex8internal2ir10NamedGroupZQCcFNaNbNiNeNkMKQCaZQCe@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTASQBu8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNeNkMKQCpZQCt@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTASQBu8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNeNkMKQCtZQCx@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTAkZQvFNaNbNiNeNkMKQsZQv@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTSQBt3uni17CodepointIntervalZQBuFNaNbNiNeNkMKQBsZQBw@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTSQBt3uni__T13InversionListTSQCuQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDhFNaNbNiNeNkMKQDfZQDj@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTSQBt5range__T6strideTAywZQmFQhmZ6ResultZQCgFNaNbNiNeNkMKQCeZQCi@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTSQBtQBs9iteration__T9MapResultSQCx10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQFh8internal14unicode_tables15UnicodePropertyZQEpZQGfFNaNbNiNeNkMKQGdZQGh@Base 15 + _D3std9algorithm8mutation__T4copyTASQBi5regex8internal2ir8BytecodeTQBhZQBrFNaNbNiNfQBxQCaZQCe@Base 15 + _D3std9algorithm8mutation__T4copyTAiTAkZQmFNaNbNiNfQrQqZQt@Base 15 + _D3std9algorithm8mutation__T4copyTAkTQdZQmFNaNbNiNfQrQtZQw@Base 15 + _D3std9algorithm8mutation__T4copyTSQBh3uni__T13InversionListTSQCiQBb8GcPolicyZQBh__T9IntervalsTAkZQoTASQDxQCq17CodepointIntervalZQDxFNaNbNiNfQEdQBrZQBv@Base 15 + _D3std9algorithm8mutation__T4copyTSQBh5range__T10roundRobinTSQChQCg9iteration__T9MapResultSQDl10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQFp3uni21DecompressedIntervalsZQDuTSQGzQGyQEs__TQElSQHpQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHtFQHkQCvZ6ResultTAkZQJiFNaNfQJkQoZQr@Base 15 + _D3std9algorithm8mutation__T4moveTAAyaZQlFNaNbNiNfNkMKQuZQx@Base 15 + _D3std9algorithm8mutation__T4moveTACQBi3zip13ArchiveMemberZQBfFNaNbNiNfNkMKQBpZQBt@Base 15 + _D3std9algorithm8mutation__T4moveTASQBi5regex8internal2ir10NamedGroupZQBqFNaNbNiNfNkMKQCaZQCe@Base 15 + _D3std9algorithm8mutation__T4moveTASQBi8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNiNfNkMKQCpZQCt@Base 15 + _D3std9algorithm8mutation__T4moveTASQBi8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNiNfNkMKQCtZQCx@Base 15 + _D3std9algorithm8mutation__T4moveTAkZQjFNaNbNiNfNkMKQsZQv@Base 15 + _D3std9algorithm8mutation__T4moveTAyaZQkFNaNbNiNfKQqKQtZv@Base 15 + _D3std9algorithm8mutation__T4moveTC4core6thread5fiber5FiberZQBgFNaNbNiNfKQBnKQBrZv@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh3net4curl3FTP4ImplZQBdFKQBcKQBgZv@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh3net4curl4HTTP4ImplZQBeFKQBdKQBhZv@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh3net4curl4SMTP4ImplZQBeFKQBdKQBhZv@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh3uni17CodepointIntervalZQBiFNaNbNiNfNkMKQBsZQBw@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh3uni__T13InversionListTSQCiQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCvFNaNbNiNfNkMKQDfZQDj@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh4file15DirIteratorImplZQBhFKQBgKQBkZv@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh5range__T6strideTAywZQmFQhmZ6ResultZQBuFNaNbNiNfNkMKQCeZQCi@Base 15 + _D3std9algorithm8mutation__T4moveTSQBhQBg9iteration__T9MapResultSQCl10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEv8internal14unicode_tables15UnicodePropertyZQEpZQFtFNaNbNiNfNkMKQGdZQGh@Base 15 + _D3std9algorithm8mutation__T4swapTAAyaZQlFNaNbNiNeKQrKQuZv@Base 15 + _D3std9algorithm8mutation__T4swapTACQBi3zip13ArchiveMemberZQBfFNaNbNiNeKQBmKQBqZv@Base 15 + _D3std9algorithm8mutation__T4swapTASQBi8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNiNeKQCmKQCqZv@Base 15 + _D3std9algorithm8mutation__T4swapTASQBi8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNiNeKQCqKQCuZv@Base 15 + _D3std9algorithm8mutation__T4swapTAyaZQkFNaNbNiNeKQqKQtZv@Base 15 + _D3std9algorithm8mutation__T4swapTCQBh3zip13ArchiveMemberZQBeFNaNbNiNeKQBlKQBpZv@Base 15 + _D3std9algorithm8mutation__T4swapTPSQBi5stdio4File4ImplZQBcFNaNbNiNeKQBjKQBnZv@Base 15 + _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl3net4curl3FTP4ImplVEQDiQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCkZQEpFNaNbNiNeKQEwKQFaZv@Base 15 + _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl3net4curl4HTTP4ImplVEQDjQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkZQEqFNaNbNiNeKQExKQFbZv@Base 15 + _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl3net4curl4SMTP4ImplVEQDjQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkZQEqFNaNbNiNeKQExKQFbZv@Base 15 + _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T14SafeRefCountedTSQCp4file15DirIteratorImplVEQDqQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4ImplZQEzFNaNbNiNeKQFgKQFkZv@Base 15 + _D3std9algorithm8mutation__T4swapTSQBh5stdio17LockingTextReaderZQBkFNaNbNiNeKQBrKQBvZv@Base 15 + _D3std9algorithm8mutation__T4swapTSQBh5stdio4FileZQwFNaNbNiNeKQBcKQBgZv@Base 15 + _D3std9algorithm8mutation__T4swapTSQBh8datetime8timezone13PosixTimeZone10LeapSecondZQCeFNaNbNiNeKQClKQCpZv@Base 15 + _D3std9algorithm8mutation__T4swapTSQBh8datetime8timezone13PosixTimeZone14TempTransitionZQCiFNaNbNiNeKQCpKQCtZv@Base 15 + _D3std9algorithm8mutation__T4swapThZQiFNaNbNiNeKhKhZv@Base 15 + _D3std9algorithm8mutation__T6removeVEQBjQBiQBb12SwapStrategyi0TAAyaTlZQBqFNaNbNiNfQtlZQx@Base 15 + _D3std9algorithm8mutation__T6removeVEQBjQBiQBb12SwapStrategyi2TAC4core6thread5fiber5FiberTmZQCmFNaNbNiNfQBpmZQBu@Base 15 + _D3std9algorithm8mutation__T6swapAtTAAyaZQnFNaNbNiNfKQrmmZv@Base 15 + _D3std9algorithm8mutation__T6swapAtTACQBk3zip13ArchiveMemberZQBhFNaNbNiNfKQBmmmZv@Base 15 + _D3std9algorithm8mutation__T6swapAtTASQBk8datetime8timezone13PosixTimeZone10LeapSecondZQChFNaNbNiNfKQCmmmZv@Base 15 + _D3std9algorithm8mutation__T6swapAtTASQBk8datetime8timezone13PosixTimeZone14TempTransitionZQClFNaNbNiNfKQCqmmZv@Base 15 + _D3std9algorithm8mutation__T6swapAtTAhZQlFNaNbNiNfKQpmmZv@Base 15 + _D3std9algorithm8mutation__T6swapAtTSQBj3uni__T13InversionListTSQCkQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCxFNaNbNiNfKQDcmmZv@Base 15 + _D3std9algorithm8mutation__T7moveAllTAC4core6thread5fiber5FiberTQBbZQBoFNaNbNiNfQBrQBuZQBy@Base 15 + _D3std9algorithm8mutation__T7reverseTAhZQmFNaNbNiNfQoZQr@Base 15 + _D3std9algorithm8mutation__T7reverseTSQBk3uni__T13InversionListTSQClQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCyFNaNbNiNfQDbZQDf@Base 15 + _D3std9algorithm8mutation__T8moveImplTAAyaZQpFNaNbNiNfNkMKQuZQx@Base 15 + _D3std9algorithm8mutation__T8moveImplTACQBm3zip13ArchiveMemberZQBjFNaNbNiNfNkMKQBpZQBt@Base 15 + _D3std9algorithm8mutation__T8moveImplTASQBm5regex8internal2ir10NamedGroupZQBuFNaNbNiNfNkMKQCaZQCe@Base 15 + _D3std9algorithm8mutation__T8moveImplTASQBm8datetime8timezone13PosixTimeZone10LeapSecondZQCjFNaNbNiNfNkMKQCpZQCt@Base 15 + _D3std9algorithm8mutation__T8moveImplTASQBm8datetime8timezone13PosixTimeZone14TempTransitionZQCnFNaNbNiNfNkMKQCtZQCx@Base 15 + _D3std9algorithm8mutation__T8moveImplTAkZQnFNaNbNiNfNkMKQsZQv@Base 15 + _D3std9algorithm8mutation__T8moveImplTAyaZQoFNaNbNiNfMKQrNkMKQxZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTC4core6thread5fiber5FiberZQBkFNaNbNiNfMKQBoNkMKQBvZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl3net4curl3FTP4ImplZQBhFMKQBdNkMKQBkZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl3net4curl4HTTP4ImplZQBiFMKQBeNkMKQBlZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl3net4curl4SMTP4ImplZQBiFMKQBeNkMKQBlZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl3uni17CodepointIntervalZQBmFNaNbNiNfNkMKQBsZQBw@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl3uni__T13InversionListTSQCmQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCzFNaNbNiNfNkMKQDfZQDj@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl4file15DirIteratorImplZQBlFMKQBhNkMKQBoZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl5range__T6strideTAywZQmFQhmZ6ResultZQByFNaNbNiNfNkMKQCeZQCi@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBlQBk9iteration__T9MapResultSQCp10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEz8internal14unicode_tables15UnicodePropertyZQEpZQFxFNaNbNiNfNkMKQGdZQGh@Base 15 + _D3std9algorithm9iteration11__moduleRefZ@Base 15 + _D3std9algorithm9iteration12__ModuleInfoZ@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj11__xopEqualsMxFKxSQIgQIfQHy__TQHrSQIwQHi__TQGzVQGsa6_61203d3d2062VQHla1_61VQHua1_62ZQIoTQGtZQKbZb@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj4backMFNaNbNdNiNfZQFo@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj4saveMFNaNbNdNiNfZSQIgQIfQHy__TQHrSQIwQHi__TQGzVQGsa6_61203d3d2062VQHla1_61VQHua1_62ZQIoTQGtZQKb@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj5frontMFNaNbNdNiNfZQFp@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj6__ctorMFNaNbNcNiNfQEbZSQIlQIkQId__TQHwSQJbQHn__TQHeVQGxa6_61203d3d2062VQHqa1_61VQHza1_62ZQItTQGyZQKg@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj6__initZ@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj7opSliceMFNaNbNiNfZSQIhQIgQHz__TQHsSQIxQHj__TQHaVQGta6_61203d3d2062VQHma1_61VQHva1_62ZQIpTQGuZQKc@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj7popBackMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj9__xtoHashFNbNeKxSQIfQIeQHx__TQHqSQIvQHh__TQGyVQGra6_61203d3d2062VQHka1_61VQHta1_62ZQInTQGsZQKaZm@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg4saveMFNaNbNdNiNfZSQGdQGcQFv__TQFoSQGtQFdQExQErMxFNbNdZQEmTQDvZQGu@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg5emptyMFNaNbNdNiZb@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg5frontMFNaNbNdNiZm@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg5primeMFNaNbNiZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__ctorMFNaNbNcNiNfQChZSQGiQGhQGa__TQFtSQGyQFiQFcQEwMxFNbNdZQErTQEaZQGz@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__ctorMFNaNbNcNiNfQChbZSQGjQGiQGb__TQFuSQGzQFjQFdQExMxFNbNdZQEsTQEbZQHa@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__initZ@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg7opSliceMFNaNbNiNfZSQGeQGdQFw__TQFpSQGuQFeQEyQEsMxFNbNdZQEnTQDwZQGv@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg8popFrontMFNaNbNiZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi4saveMFNaNbNdNiNfZSQGfQGeQFx__TQFqSQGvQFfQEzQEtMxFNbNdZQEoTQDxZQGw@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi5emptyMFNaNbNdNiZb@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi5frontMFNaNbNdNiZm@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi5primeMFNaNbNiZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__ctorMFNaNbNcNiNfQCjZSQGkQGjQGc__TQFvSQHaQFkQFeQEyMxFNbNdZQEtTQEcZQHb@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__ctorMFNaNbNcNiNfQCjbZSQGlQGkQGd__TQFwSQHbQFlQFfQEzMxFNbNdZQEuTQEdZQHc@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__initZ@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi7opSliceMFNaNbNiNfZSQGgQGfQFy__TQFrSQGwQFgQFaQEuMxFNbNdZQEpTQDyZQGx@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi8popFrontMFNaNbNiZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf11__xopEqualsMxFKxSQHcQHbQGu__TQGnS_DQHuQGc__TQGbTaTaZQGjFNaNfQFjQFmZQFkQFiTQEzZQIkZb@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf4saveMFNaNbNdNiNfZSQHcQHbQGu__TQGnS_DQHuQGc__TQGbTaTaZQGjFNaNfQFjQFmZQFkQFiTQEzZQIk@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf5emptyMFNaNdNfZb@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf5frontMFNaNdNfZw@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf5primeMFNaNfZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__ctorMFNaNbNcNiNfQCuZSQHhQHgQGz__TQGsS_DQHzQGh__TQGgTaTaZQGoFNaNfQFoQFrZQFpQFnTQFeZQIp@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__ctorMFNaNbNcNiNfQCubZSQHiQHhQHa__TQGtS_DQIaQGi__TQGhTaTaZQGpFNaNfQFpQFsZQFqQFoTQFfZQIq@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__initZ@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf7opSliceMFNaNbNiNfZSQHdQHcQGv__TQGoS_DQHvQGd__TQGcTaTaZQGkFNaNfQFkQFnZQFlQFjTQFaZQIl@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf8popFrontMFNaNfZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf9__xtoHashFNbNeKxSQHbQHaQGt__TQGmS_DQHtQGb__TQGaTaTaZQGiFNaNfQFiQFlZQFjQFhTQEyZQIjZm@Base 15 + _D3std9algorithm9iteration__T3mapSQBg5ascii7toLowerZ__TQBaTAxaZQBiFNaNbNiNfQqZSQCzQCyQCr__T9MapResultSQDwQCqQCnTQCbZQz@Base 15 + _D3std9algorithm9iteration__T3mapSQBg5ascii7toLowerZ__TQBaTSQCg3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDdFNaNbNiNfQClZSQEvQEuQEn__T9MapResultSQFsQEmQEjTQDxZQz@Base 15 + _D3std9algorithm9iteration__T3mapSQBg5ascii7toLowerZ__TQBaTSQCg3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDdFNaNbNiNfQClZSQEvQEuQEn__T9MapResultSQFsQEmQEjTQDxZQz@Base 15 + _D3std9algorithm9iteration__T3mapVAyaa4_615b305dZ__TQxTSQCc3uni21DecompressedIntervalsZQCgFNaNbNiNfQBsZSQDyQDxQDq__T9MapResultSQEv10functional__T8unaryFunVQEra4_615b305dVQFga1_61ZQBiTQEyZQCt@Base 15 + _D3std9algorithm9iteration__T3mapVAyaa4_615b315dZ__TQxTSQCc3uni21DecompressedIntervalsZQCgFNaNbNiNfQBsZSQDyQDxQDq__T9MapResultSQEv10functional__T8unaryFunVQEra4_615b315dVQFga1_61ZQBiTQEyZQCt@Base 15 + _D3std9algorithm9iteration__T3mapVAyaa6_612e6e616d65Z__TQBbTAySQCj8internal14unicode_tables15UnicodePropertyZQDcFNaNbNiNfQCjZSQEuQEtQEm__T9MapResultSQFr10functional__T8unaryFunVQFna6_612e6e616d65VQGga1_61ZQBmTQFtZQCx@Base 15 + _D3std9algorithm9iteration__T4uniqVAyaa6_61203d3d2062TSQCb5range__T11SortedRangeTAQBvVQBza5_61203c2062VEQDyQBx18SortedRangeOptionsi0ZQCoZQEeFNaNbNiNfQDrZSQFwQFvQFo__T10UniqResultSQGv10functional__T9binaryFunVQGra6_61203d3d2062VQHka1_61VQHta1_62ZQBwTQHnZQDj@Base 15 + _D3std9algorithm9iteration__T6filterS_DQBl3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbZ__TQDdTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCvZQBhZQFfFNaNbNiNfQCkZSQGxQGwQGp__T12FilterResultS_DQIaQGp__TQGoTaTaZQGwFNaNfQFwQFzZQFxQFvTQFfZQCi@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFNaNbNiQHyZSQJmQJlQJe__TQIxTQItZQJfFQJbZQCh@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy14replaceCurrentMFNaNbNiNeSQKiQIb__T7BitsSetTmZQlZv@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy4saveMFNaNbNdNiNfZSQKaQJzQJs__TQJlTQJhZQJtFQJpZQCv@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy5emptyMFNaNbNdNiZb@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy5frontMFNaNbNdNiZm@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__ctorMFNaNbNcNiNfQIrSQKeQHx__T7BitsSetTmZQlZSQLcQLbQKu__TQKnTQKjZQKvFQKrZQDx@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__ctorMFNaNbNcNiQIpZSQKdQKcQJv__TQJoTQJkZQJwFQJsZQCy@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__initZ@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy8popFrontMFNaNbNiZv@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFNaNbNiNfQuQEbZSQFrQFqQFj__TQFcVQEwa6_61203d3d2062VQEwi0TQCqTQFzZQGnFQDcQGkZ6Result@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result11__xopEqualsMxFKxSQGiQGhQGa__TQFtVQFna6_61203d3d2062VQFni0TQDhTQGqZQHeFQDtQHbZQDiZb@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result15separatorLengthMFNaNbNdNiNfZm@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result17ensureFrontLengthMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result4saveMFNaNbNdNiNfZSQGiQGhQGa__TQFtVQFna6_61203d3d2062VQFni0TQDhTQGqZQHeFQDtQHbZQDi@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result5frontMFNaNbNdNiNfZQBs@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result6__ctorMFNaNbNcNiNfQBsQFaZSQGqQGpQGi__TQGbVQFva6_61203d3d2062VQFvi0TQDpTQGyZQHmFQEbQHjZQDq@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result6__initZ@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result9__xtoHashFNbNeKxSQGhQGgQFz__TQFsVQFma6_61203d3d2062VQFmi0TQDgTQGpZQHdFQDsQHaZQDhZm@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFNaNbNiNfQDzQEcZSQFsQFrQFk__TQFdVQExa6_61203d3d2062VQExi0TQFwTQGaZQGoFQGiQGlZ6Result@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result11__xopEqualsMxFKxSQGjQGiQGb__TQFuVQFoa6_61203d3d2062VQFoi0TQGnTQGrZQHfFQGzQHcZQDiZb@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result15separatorLengthMFNaNbNdNiNfZm@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result17ensureFrontLengthMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result4saveMFNaNbNdNiNfZSQGjQGiQGb__TQFuVQFoa6_61203d3d2062VQFoi0TQGnTQGrZQHfFQGzQHcZQDi@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result5frontMFNaNbNdNiNfZQEy@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result6__ctorMFNaNbNcNiNfQEyQFbZSQGrQGqQGj__TQGcVQFwa6_61203d3d2062VQFwi0TQGvTQGzZQHnFQHhQHkZQDq@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result6__initZ@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result9__xtoHashFNbNeKxSQGiQGhQGa__TQFtVQFna6_61203d3d2062VQFni0TQGmTQGqZQHeFQGyQHbZQDhZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu11__xopEqualsMxFKxSQFrQFqQFj__TQFcSQGhQEv__TQEmVQEga4_615b305dVQEva1_61ZQFoTQEhZQGzZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu4saveMFNaNdNfZSQFnQFmQFf__TQEySQGdQEr__TQEiVQEca4_615b305dVQEra1_61ZQFkTQEdZQGv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5emptyMFNaNdNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5frontMFNaNdNfZk@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__ctorMFNaNbNcNiNfQCcZSQFwQFvQFo__TQFhSQGmQFa__TQErVQEla4_615b305dVQFaa1_61ZQFtTQEmZQHe@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu8popFrontMFNaNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu9__xtoHashFNbNeKxSQFqQFpQFi__TQFbSQGgQEu__TQElVQEfa4_615b305dVQEua1_61ZQFnTQEgZQGyZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu11__xopEqualsMxFKxSQFrQFqQFj__TQFcSQGhQEv__TQEmVQEga4_615b315dVQEva1_61ZQFoTQEhZQGzZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu4saveMFNaNdNfZSQFnQFmQFf__TQEySQGdQEr__TQEiVQEca4_615b315dVQEra1_61ZQFkTQEdZQGv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5emptyMFNaNdNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5frontMFNaNdNfZk@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__ctorMFNaNbNcNiNfQCcZSQFwQFvQFo__TQFhSQGmQFa__TQErVQEla4_615b315dVQFaa1_61ZQFtTQEmZQHe@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu8popFrontMFNaNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu9__xtoHashFNbNeKxSQFqQFpQFi__TQFbSQGgQEu__TQElVQEfa4_615b315dVQEua1_61ZQFnTQEgZQGyZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp11__xopEqualsMxFKxSQGmQGlQGe__TQFxSQHcQFq__TQFhVQFba6_612e6e616d65VQFua1_61ZQGnTQFcZQHyZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp4saveMFNaNbNdNiNfZSQGmQGlQGe__TQFxSQHcQFq__TQFhVQFba6_612e6e616d65VQFua1_61ZQGnTQFcZQHy@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp5frontMFNaNbNdNiNfZyAa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__ctorMFNaNbNcNiNfQCtZSQGrQGqQGj__TQGcSQHhQFv__TQFmVQFga6_612e6e616d65VQFza1_61ZQGsTQFhZQId@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp7opIndexMFNaNbNiNfmZyAa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp7opSliceMFNaNbNiNfmmZSQGpQGoQGh__TQGaSQHfQFt__TQFkVQFea6_612e6e616d65VQFxa1_61ZQGqTQFfZQIb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp9__mixin116lengthMFNaNbNdNiNfZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp9__xtoHashFNbNeKxSQGlQGkQGd__TQFwSQHbQFp__TQFgVQFaa6_612e6e616d65VQFta1_61ZQGmTQFbZQHxZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp__T4backZQgMFNaNbNdNiNfZyAa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp__T7popBackZQjMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh11__xopEqualsMxFKxSQDeQDdQCw__TQCpSQDuQCiQCfTQCaZQDhZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh4saveMFNaNbNdNiNfZSQDeQDdQCw__TQCpSQDuQCiQCfTQCaZQDh@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh5frontMFNaNdNfZw@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__ctorMFNaNbNcNiNfQBaZSQDjQDiQDb__TQCuSQDzQCnQCkTQCfZQDm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh9__xtoHashFNbNeKxSQDdQDcQCv__TQCoSQDtQChQCeTQBzZQDgZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc11__xopEqualsMxFKxSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFcZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc4saveMFNaNbNdNiNfZSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFc@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc5frontMFNaNbNdNiNfZa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc6__ctorMFNaNbNcNiNfQCvZSQFeQFdQEw__TQEpSQFuQEiQEfTQEaZQFh@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc7opIndexMFNaNbNiNfmZa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc7opSliceMFNaNbNiNfmmZSQFcQFbQEu__TQEnSQFsQEgQEdTQDyZQFf@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc9__mixin116lengthMFNaNbNdNiNfZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc9__xtoHashFNbNeKxSQEyQExQEq__TQEjSQFoQEcQDzTQDuZQFbZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc11__xopEqualsMxFKxSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFcZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc4saveMFNaNbNdNiNfZSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFc@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc5frontMFNaNbNdNiNfZa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc6__ctorMFNaNbNcNiNfQCvZSQFeQFdQEw__TQEpSQFuQEiQEfTQEaZQFh@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc7opIndexMFNaNbNiNfmZa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc7opSliceMFNaNbNiNfmmZSQFcQFbQEu__TQEnSQFsQEgQEdTQDyZQFf@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc9__mixin116lengthMFNaNbNdNiNfZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc9__xtoHashFNbNeKxSQEyQExQEq__TQEjSQFoQEcQDzTQDuZQFbZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx4saveMFNaNbNdNiNfZSQIuQItQIm__TQIfSQJkQHyQHsQHmMxFNbNdZQHhTQGqZQJl@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx5emptyMFNaNbNdNiZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx5frontMFNaNbNdNiZSQItQHh__T7BitsSetTmZQl@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx6__ctorMFNaNbNcNiNfQFcZSQIzQIyQIr__TQIkSQJpQIdQHxQHrMxFNbNdZQHmTQGvZQJq@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx8popFrontMFNaNbNiZv@Base 15 + _D3std9algorithm9searching11__moduleRefZ@Base 15 + _D3std9algorithm9searching12__ModuleInfoZ@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa11_615b305d203e2030783830TAxSQCv3uni17CodepointIntervalZQCvFNaNbNiNfQBqZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa11_62203c20612e74696d6554TAySQCv8datetime8timezone13PosixTimeZone10LeapSecondTylZQDuFNaNbNiNfQCpylZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa11_62203c20612e74696d6554TAySQCv8datetime8timezone13PosixTimeZone10TransitionTlZQDtFNaNbNiNfQColZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa11_62203c20612e74696d6554TAySQCv8datetime8timezone13PosixTimeZone10TransitionTylZQDuFNaNbNiNfQCpylZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAQuTQxZQBnFNaNbNiNfQtQBoZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TASQCj3uni__T13InversionListTSQDkQBb8GcPolicyZQBhTQBwZQDhFNaNbNiNfQCnQCpZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAaTaZQBlFNaNiNfQpaZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAxhTQeZQBnFNaNbNiNfQtQvZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAyAaTQyZQBoFNaNbNiNfQuQBpZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAyhTAxhZQBoFNaNbNiNfQuQsZl@Base 15 + _D3std9algorithm9searching__T10startsWithSQBoQBnQBg18__lambda_L4941_C30TAxaTAyaTQeTQhZQCfFNaNfQwQuQwQyZk@Base 15 + _D3std9algorithm9searching__T10startsWithSQBoQBnQBg18__lambda_L4941_C30TAxaTAyaTQeZQCcFNaNfQtQrQtZk@Base 15 + _D3std9algorithm9searching__T10startsWithSQBoQBnQBg18__lambda_L4941_C30TAxaTAyaZQBzFNaNfQqQoZb@Base 15 + _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TAxaTQxZQBnFNaNbNiNfQtQBoZb@Base 15 + _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TAxaTaZQBmFNaNbNiNfQsaZb@Base 15 + _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TAyhTQxZQBnFNaNfQpQBkZb@Base 15 + _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TQtTQwZQBmFNaNbNiNfQBlQBoZb@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg11__xopEqualsMxFKxSQDdQDcQCv__TQCoVhi1TQCaTQCeTQCiZQDiZb@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg6__ctorMFNaNbNcNiNfQBgQBjQBmZSQDoQDnQDg__TQCzVhi1TQClTQCpTQCtZQDt@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg6__initZ@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg8opAssignMFNaNbNcNiNjNfSQDiQDhQDa__TQCtVhi1TQCfTQCjTQCnZQDnZQBl@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg8opAssignMFNaNbNiNfSQDe8typecons__T5TupleTQCdTQChTQClZQtZv@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg9__xtoHashFNbNeKxSQDcQDbQCu__TQCnVhi1TQBzTQCdTQChZQDhZm@Base 15 + _D3std9algorithm9searching__T3anyS_DQBi4path14isDirSeparatorFNaNbNiNfwZbZ__TQBvTAxaZQCdFNaNfQmZb@Base 15 + _D3std9algorithm9searching__T4findS_DQBj4path14isDirSeparatorFNaNbNiNfwZbTAxaZQBxFNaNfQmZQp@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTQdZQBfFNaNbNiNfQsMQvZQy@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTQdZQBfFQkMQnZ__T5forceTAhTQBdZQoFNaNbNiNeNgAaZQx@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTQdZQBfFQkMQnZ__T5forceTQBaTAhZQoFNaNbNiNeNgAhZQBx@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTaZQBeFNaNfQnMaZQs@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTaZQBeFQjMaZ13trustedMemchrFNaNbNiNeNkMKNgAaMKxaZNgQj@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAhTQdZQBfFNaNbNiNfQsMQvZQy@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxSQCd8typecons__T5TupleTQBsVQBwa3_6b6579TSQDr4json9JSONValueVQDda5_76616c7565ZQCjTxQDeZQEjFNaNbNiNfQDwMxQDzZQEf@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxaTQxZQBgFNaNbNiNfQtMQBpZQBa@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxaTQxZQBgFQlMQBhZ__T5forceTAhTAaZQnFNaNbNiNeNgAaZQw@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxaTQxZQBgFQlMQBhZ__T5forceTQBcTAhZQoFNaNbNiNeNgAhZQBz@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxhTQeZQBgFNaNbNiNfQtMQwZQz@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAyAaTQyZQBhFNaNbNiNfQuMQBqZQBb@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAyhTAxhZQBhFNaNbNiNfQuMQtZQBa@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAyhTQxZQBgFNaNfQpMQBlZQw@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTAaZQBfFNaNbNiNfQBlMQtZQBs@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTAaZQBfFQBdMQlZ__T5forceTAhTQBbZQoFNaNbNiNeNgAaZQx@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTAaZQBfFQBdMQlZ__T5forceTQBuTAhZQoFNaNbNiNeNgAhZQCr@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTQwZQBfFNaNbNiNfQBlMQBpZQBt@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTQwZQBfFQBdMQBhZ__T5forceTAhTAaZQnFNaNbNiNeNgAaZQw@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTQwZQBfFQBdMQBhZ__T5forceTQBvTAhZQoFNaNbNiNeNgAhZQCs@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTaZQBeFNaNfQBgMaZQBm@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTaZQBeFQBcMaZ13trustedMemchrFNaNbNiNeNkMKNgAyaMKxaZNgQk@Base 15 + _D3std9algorithm9searching__T7canFindZ__TQmTAaTaZQuFNaNfQmMaZb@Base 15 + _D3std9algorithm9searching__T7canFindZ__TQmTAxSQBt8typecons__T5TupleTAyaVQea3_6b6579TSQDg4json9JSONValueVQBka5_76616c7565ZQCiTxQDdZQDyFNaNbNiNfQDvMxQDyZb@Base 15 + _D3std9algorithm9searching__T7canFindZ__TQmTAyAaTAyaZQyFNaNbNiNfQuMQsZb@Base 15 + _D3std9algorithm9searching__T7canFindZ__TQmTAyhTAyaZQxFNaNfQpMQoZb@Base 15 + _D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TQtTQwZQBjFNaNbNiNfQBlQBoZb@Base 15 + _D3std9algorithm9searching__T8skipOverZ__TQnTAxwTQeZQxFNaNbNiNfKQtQvZb@Base 15 + _D3std9algorithm9searching__T8skipOverZ__TQnTSQBs3utf__T5byUTFTwVEQCm8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQFpQDx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultTAxwZQHhFNaNbNiNfKQHeQuZb@Base 15 + _D3std9algorithm9searching__T8skipOverZ__TQnTSQBs3utf__T5byUTFTwVEQCm8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQFpQDx__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultTAxwZQHhFNaNbNiNfKQHeQuZb@Base 15 + _D3std9algorithm9searching__T9findSplitVAyaa6_61203d3d2062TAxaTQxZQBlFNaNbNiNfQtQBoZSQDfQDeQCx__T15FindSplitResultVhi1TQCiTQCmTQCqZQBi@Base 15 + _D3std9container10binaryheap11__moduleRefZ@Base 15 + _D3std9container10binaryheap12__ModuleInfoZ@Base 15 + _D3std9container11__moduleRefZ@Base 15 + _D3std9container12__ModuleInfoZ@Base 15 + _D3std9container4util11__moduleRefZ@Base 15 + _D3std9container4util12__ModuleInfoZ@Base 15 + _D3std9container5array11__moduleRefZ@Base 15 + _D3std9container5array12__ModuleInfoZ@Base 15 + _D3std9container5dlist11__moduleRefZ@Base 15 + _D3std9container5dlist12__ModuleInfoZ@Base 15 + _D3std9container5dlist6DRange4backMFNaNbNdNiNjNlNfZPSQBzQByQBr8BaseNode@Base 15 + _D3std9container5dlist6DRange4saveMFNaNbNdNiNjNlNfZSQByQBxQBqQBn@Base 15 + _D3std9container5dlist6DRange5emptyMxFNaNbNdNiNlNfZb@Base 15 + _D3std9container5dlist6DRange5frontMFNaNbNdNiNjNlNfZPSQCaQBzQBs8BaseNode@Base 15 + _D3std9container5dlist6DRange6__ctorMFNaNbNcNiNfPSQBwQBvQBo8BaseNodeQuZSQCsQCrQCkQCh@Base 15 + _D3std9container5dlist6DRange6__ctorMFNaNbNcNiNfPSQBwQBvQBo8BaseNodeZSQCqQCpQCiQCf@Base 15 + _D3std9container5dlist6DRange6__initZ@Base 15 + _D3std9container5dlist6DRange7popBackMFNaNbNiNlNfZv@Base 15 + _D3std9container5dlist6DRange8popFrontMFNaNbNiNlNfZv@Base 15 + _D3std9container5dlist8BaseNode6__initZ@Base 15 + _D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv@Base 15 + _D3std9container5slist11__moduleRefZ@Base 15 + _D3std9container5slist12__ModuleInfoZ@Base 15 + _D3std9container6rbtree11__moduleRefZ@Base 15 + _D3std9container6rbtree12__ModuleInfoZ@Base 15 + _D3std9exception11__moduleRefZ@Base 15 + _D3std9exception11errnoStringFNbNeiZAya@Base 15 + _D3std9exception12__ModuleInfoZ@Base 15 + _D3std9exception14ErrnoException5errnoMFNaNbNdNiNlNfZk@Base 15 + _D3std9exception14ErrnoException6__ctorMFNfAyaQdmZCQBxQBwQBp@Base 15 + _D3std9exception14ErrnoException6__ctorMFNfAyaiQemZCQByQBxQBq@Base 15 + _D3std9exception14ErrnoException6__initZ@Base 15 + _D3std9exception14ErrnoException6__vtblZ@Base 15 + _D3std9exception14ErrnoException7__ClassZ@Base 15 + _D3std9exception14ErrnoException8errnoMsgMFNaNbNdNiNlNfZAya@Base 15 + _D3std9exception14RangePrimitive6__initZ@Base 15 + _D3std9exception__T11doesPointToTAAyaTQfTvZQyFNaNbNiNeKxAAyaKxQgZb@Base 15 + _D3std9exception__T11doesPointToTACQBh3zip13ArchiveMemberTQzTvZQBsFNaNbNiNeKxACQCzQBsQBrKxQnZb@Base 15 + _D3std9exception__T11doesPointToTASQBh5regex8internal2ir10NamedGroupTQBkTvZQCeFNaNbNiNeKxASQDlQCeQCbQBvQBvKxQtZb@Base 15 + _D3std9exception__T11doesPointToTASQBh8datetime8timezone13PosixTimeZone10LeapSecondTQBzTvZQCtFNaNbNiNeKxASQEaQCtQCnQChQBvKxQtZb@Base 15 + _D3std9exception__T11doesPointToTASQBh8datetime8timezone13PosixTimeZone14TempTransitionTQCdTvZQCxFNaNbNiNeKxASQEeQCxQCrQClQBzKxQtZb@Base 15 + _D3std9exception__T11doesPointToTAkTQdTvZQwFNaNbNiNeKxAkKxQeZb@Base 15 + _D3std9exception__T11doesPointToTAxSQBi4file15DirIteratorImpl9DirHandleTSQCtQBlQBjTvZQCoFNaNbNiNeKxAQCnKxSQEaQCsQCqZb@Base 15 + _D3std9exception__T11doesPointToTAxSQBi4file8DirEntryTSQCbQt15DirIteratorImplTvZQCjFNaNbNiNeKxAQCiKxSQDvQCnQBvZb@Base 15 + _D3std9exception__T11doesPointToTAxkTSQBk3uni__T13InversionListTSQClQBb8GcPolicyZQBh__T9IntervalsTAkZQoTvZQDjFNaNbNiNeKxAkKxSQEtQDj__TQDiTQCwZQDq__TQCjTQCcZQCrZb@Base 15 + _D3std9exception__T11doesPointToTAyaTSQBk3net4curl3FTP4ImplTvZQBrFNaNbNiNeKxAyaKxSQDcQBsQBrQBpQBoZb@Base 15 + _D3std9exception__T11doesPointToTAyaTSQBk3net4curl4HTTP4ImplTvZQBsFNaNbNiNeKxAyaKxSQDdQBtQBsQBqQBoZb@Base 15 + _D3std9exception__T11doesPointToTAyaTSQBk4file15DirIteratorImplTvZQBvFNaNbNiNeKxAyaKxSQDgQBwQBuZb@Base 15 + _D3std9exception__T11doesPointToTAyaTSQBk5stdio17LockingTextReaderTvZQByFNaNbNiNeKxAyaKxSQDjQBzQBwZb@Base 15 + _D3std9exception__T11doesPointToTAyaTSQBk5stdio4FileTvZQBkFNaNbNiNeKxAyaKxSQCvQBlQBiZb@Base 15 + _D3std9exception__T11doesPointToTCQBg3zip13ArchiveMemberTQyTvZQBrFNaNbNiNeKxCQCxQBrQBqKxQmZb@Base 15 + _D3std9exception__T11doesPointToTDFAhZmTSQBn3net4curl3FTP4ImplTvZQBuFNaNbNiNeKxDQBuKxSQDgQBtQBsQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFAhZmTSQBn3net4curl4HTTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFAhZmTSQBn3net4curl4SMTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFAvZmTSQBn3net4curl3FTP4ImplTvZQBuFNaNbNiNeKxDQBuKxSQDgQBtQBsQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFAvZmTSQBn3net4curl4HTTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFAvZmTSQBn3net4curl4SMTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFEQBi6socket8socket_tE3etc1c4curl12CurlSockTypeZiTSQDf3netQBe3FTP4ImplTvZQDkFNaNbNiNeKxDQDkKxSQEwQBrQCuQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFEQBi6socket8socket_tE3etc1c4curl12CurlSockTypeZiTSQDf3netQBe4HTTP4ImplTvZQDlFNaNbNiNeKxDQDlKxSQExQBsQCvQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFEQBi6socket8socket_tE3etc1c4curl12CurlSockTypeZiTSQDf3netQBe4SMTP4ImplTvZQDlFNaNbNiNeKxDQDlKxSQExQBsQCvQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFIAaZvTSQBo3net4curl3FTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBtQBsQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFIAaZvTSQBo3net4curl4HTTP4ImplTvZQBwFNaNbNiNeKxDQBwKxSQDiQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFIAaZvTSQBo3net4curl4SMTP4ImplTvZQBwFNaNbNiNeKxDQBwKxSQDiQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFSQBi3net4curl4HTTP10StatusLineZvTSQCpQBhQBgQBe4ImplTvZQCsFNaNbNiNeKxDQCsKxSQEeQCwQCvQCtQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFlE3etc1c4curl11CurlSeekPosZEQBaQzQz8CurlSeekTSQDb3netQBt3FTP4ImplTvZQDgFNaNbNiNeKxDQDgKxSQEsQBrQDjQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFlE3etc1c4curl11CurlSeekPosZEQBaQzQz8CurlSeekTSQDb3netQBt4HTTP4ImplTvZQDhFNaNbNiNeKxDQDhKxSQEtQBsQDkQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFlE3etc1c4curl11CurlSeekPosZEQBaQzQz8CurlSeekTSQDb3netQBt4SMTP4ImplTvZQDhFNaNbNiNeKxDQDhKxSQEtQBsQDkQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFmmmmZiTSQBp3net4curl3FTP4ImplTvZQBwFNaNbNiNeKxDQBwKxSQDiQBtQBsQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFmmmmZiTSQBp3net4curl4HTTP4ImplTvZQBxFNaNbNiNeKxDQBxKxSQDjQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFmmmmZiTSQBp3net4curl4SMTP4ImplTvZQBxFNaNbNiNeKxDQBxKxSQDjQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTEQBg3net4curl4HTTP6MethodTSQCgQBaQzQw4ImplTvZQChFNaNbNiNeKxEQDnQChQCgQCeQCcKxSQEfQCzQCyQCwQCbZb@Base 15 + _D3std9exception__T11doesPointToTEQBg4file8SpanModeTSQBzQt15DirIteratorImplTvZQChFNaNbNiNeKxEQDnQChQCfKxSQDzQCtQCbZb@Base 15 + _D3std9exception__T11doesPointToTG3lTSQBk4file15DirIteratorImplTvZQBvFNaNbNiNeKxG3lKxSQDgQBwQBuZb@Base 15 + _D3std9exception__T11doesPointToTHAyaxAyaTSQBp3net4curl4HTTP4ImplTvZQBxFNaNbNiNeKxHQBxQBwKxSQDmQBxQBwQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTPSQBh5stdio4File4ImplTQwTvZQBpFNaNbNiNeKxPSQCwQBpQBmQBkKxQqZb@Base 15 + _D3std9exception__T11doesPointToTPSQBh8typecons__T10RefCountedTSQCk3net4curl3FTP4ImplVEQDhQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCkTQEjTvZQFdFNaNbNiNeKxPSQGkQFd__TQExTQEoVQDvi1ZQFlQCrQEnKxQBkZb@Base 15 + _D3std9exception__T11doesPointToTPSQBh8typecons__T10RefCountedTSQCk3net4curl4HTTP4ImplVEQDiQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkTQEkTvZQFeFNaNbNiNeKxPSQGlQFe__TQEyTQEpVQDvi1ZQFmQCrQEnKxQBkZb@Base 15 + _D3std9exception__T11doesPointToTPSQBh8typecons__T10RefCountedTSQCk3net4curl4SMTP4ImplVEQDiQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkTQEkTvZQFeFNaNbNiNeKxPSQGlQFe__TQEyTQEpVQDvi1ZQFmQCrQEnKxQBkZb@Base 15 + _D3std9exception__T11doesPointToTPSQBh8typecons__T14SafeRefCountedTSQCo4file15DirIteratorImplVEQDpQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4ImplTQEtTvZQFnFNaNbNiNeKxPSQGuQFn__TQFhTQEuVQDxi0ZQFvQCtQCfKxQBkZb@Base 15 + _D3std9exception__T11doesPointToTPxS3etc1c4curl10curl_slistTSQCh3netQBa3FTP4ImplTvZQCmFNaNbNiNeKxPQClKxSQDyQBrQCqQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTPxS3etc1c4curl10curl_slistTSQCh3netQBa4HTTP4ImplTvZQCnFNaNbNiNeKxPQCmKxSQDzQBsQCrQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTPxSQBi5stdio4File4ImplTSQCdQv17LockingTextReaderTvZQCnFNaNbNiNeKxPQCmKxSQDzQCrQBxZb@Base 15 + _D3std9exception__T11doesPointToTPxSQBi5stdio4File4ImplTSQCdQvQrTvZQBwFNaNbNiNeKxPQBvKxSQDiQCaQBxZb@Base 15 + _D3std9exception__T11doesPointToTPxSQBi8datetime8timezone13PosixTimeZone14TransitionTypeTSQDkQCcQBwQBq14TempTransitionTvZQDyFNaNbNiNeKxPQDxKxSQFkQEcQDwQDqQCaZb@Base 15 + _D3std9exception__T11doesPointToTPxvTSQBk3net4curl3FTP4ImplTvZQBrFNaNbNiNeKxPvKxSQDbQBrQBqQBoQBnZb@Base 15 + _D3std9exception__T11doesPointToTPxvTSQBk3net4curl4HTTP4ImplTvZQBsFNaNbNiNeKxPvKxSQDcQBsQBrQBpQBnZb@Base 15 + _D3std9exception__T11doesPointToTPxvTSQBk3net4curl4SMTP4ImplTvZQBsFNaNbNiNeKxPvKxSQDcQBsQBrQBpQBnZb@Base 15 + _D3std9exception__T11doesPointToTPySQBi8datetime8timezone13PosixTimeZone6TTInfoTSQDbQBtQBnQBh14TempTransitionTvZQDpFNaNbNiNeKxPyQDpKxSQFcQDuQDoQDiQCbZb@Base 15 + _D3std9exception__T11doesPointToTS4core3sys5posixQk4stat6stat_tTSQCl4file15DirIteratorImplTvZQCwFNaNbNiNeKxSQCwQCuQCtQDaQCrQCpKxSQExQCmQCkZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl3FTP4ImplTQxTvZQBqFNaNbNiNeKxSQCwQBqQBpQBnQBmKxQsZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4CurlTSQBzQtQr3FTP4ImplTvZQCbFNaNbNiNeKxSQDhQCbQCaQByKxSQDwQCqQCpQBzQByZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4CurlTSQBzQtQr4HTTP4ImplTvZQCcFNaNbNiNeKxSQDiQCcQCbQBzKxSQDxQCrQCqQCaQByZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4CurlTSQBzQtQr4SMTP4ImplTvZQCcFNaNbNiNeKxSQDiQCcQCbQBzKxSQDxQCrQCqQCaQByZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4HTTP10StatusLineTSQClQBfQBeQBc4ImplTvZQCoFNaNbNiNeKxSQDuQCoQCnQClQCjKxSQEmQDgQDfQDdQCbZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4HTTP4ImplTQyTvZQBrFNaNbNiNeKxSQCxQBrQBqQBoQBmKxQsZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4SMTP4ImplTQyTvZQBrFNaNbNiNeKxSQCxQBrQBqQBoQBmKxQsZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3uni__T13InversionListTSQChQBb8GcPolicyZQBh__T9IntervalsTAkZQoTQCpTvZQDjFNaNbNiNeKxSQEpQDj__TQDiTQCwZQDq__TQCjTQCcZQCrKxQBlZb@Base 15 + _D3std9exception__T11doesPointToTSQBg4file15DirIteratorImplTQBbTvZQBvFNaNbNiNeKxSQDbQBvQBtKxQmZb@Base 15 + _D3std9exception__T11doesPointToTSQBg4file8DirEntryTSQBzQt15DirIteratorImplTvZQChFNaNbNiNeKxSQDnQChQCfKxSQDzQCtQCbZb@Base 15 + _D3std9exception__T11doesPointToTSQBg5stdio17LockingTextReaderTQBeTvZQByFNaNbNiNeKxSQDeQByQBvKxQmZb@Base 15 + _D3std9exception__T11doesPointToTSQBg5stdio4FileTQqTvZQBjFNaNbNiNeKxSQCpQBjQBgKxQmZb@Base 15 + _D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQq17LockingTextReaderTvZQCgFNaNbNiNeKxSQDmQCgQCdKxSQDyQCsQCdZb@Base 15 + _D3std9exception__T11doesPointToTSQBg8datetime8timezone13PosixTimeZone14TempTransitionTQCcTvZQCwFNaNbNiNeKxSQEcQCwQCqQCkQByKxQsZb@Base 15 + _D3std9exception__T11doesPointToTaTSQBi5stdio17LockingTextReaderTvZQBwFNaNbNiNeKxaKxSQDfQBxQBuZb@Base 15 + _D3std9exception__T11doesPointToTbTSQBi3net4curl3FTP4ImplTvZQBpFNaNbNiNeKxbKxSQCyQBqQBpQBnQBmZb@Base 15 + _D3std9exception__T11doesPointToTbTSQBi3net4curl4HTTP4ImplTvZQBqFNaNbNiNeKxbKxSQCzQBrQBqQBoQBmZb@Base 15 + _D3std9exception__T11doesPointToTbTSQBi3net4curl4SMTP4ImplTvZQBqFNaNbNiNeKxbKxSQCzQBrQBqQBoQBmZb@Base 15 + _D3std9exception__T11doesPointToTbTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxbKxSQDcQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTbTSQBi5stdio17LockingTextReaderTvZQBwFNaNbNiNeKxbKxSQDfQBxQBuZb@Base 15 + _D3std9exception__T11doesPointToThTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxhKxSQDcQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTkTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxkKxSQDcQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTlTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxlKxSQDcQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTlTSQBi8datetime8timezone13PosixTimeZone14TempTransitionTvZQCuFNaNbNiNeKxlKxSQEdQCvQCpQCjQBxZb@Base 15 + _D3std9exception__T11doesPointToTmTSQBi3uni__T13InversionListTSQCjQBb8GcPolicyZQBh__T9IntervalsTAkZQoTvZQDhFNaNbNiNeKxmKxSQEqQDi__TQDhTQCvZQDp__TQCiTQCbZQCqZb@Base 15 + _D3std9exception__T11doesPointToTmTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxmKxSQDcQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTtTSQBi3net4curl4HTTP4ImplTvZQBqFNaNbNiNeKxtKxSQCzQBrQBqQBoQBmZb@Base 15 + _D3std9exception__T12assumeUniqueTaZQrFNaNbNiAaZAya@Base 15 + _D3std9exception__T12assumeUniqueTaZQrFNaNbNiKAaZAya@Base 15 + _D3std9exception__T12assumeUniqueTkZQrFNaNbNiKAkZAyk@Base 15 + _D3std9exception__T12assumeUniqueTxaZQsFNaNbNiKAxaZAya@Base 15 + _D3std9exception__T16collectExceptionHTC9ExceptionTmZQBiFNaNbNfLmZQBb@Base 15 + _D3std9exception__T18isUnionAliasedImplTS4core3sys5posixQk4stat6stat_tZQCaFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl3FTP4ImplZQBsFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4CurlZQBoFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4HTTP10StatusLineZQCaFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4HTTP4ImplZQBtFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4SMTP4ImplZQBtFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3uni__T13InversionListTSQCoQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDkFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn4file15DirIteratorImplZQBwFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn4file8DirEntryZQBoFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn5stdio17LockingTextReaderZQBzFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn5stdio4FileZQBlFNaNbNiNfmZb@Base 15 + _D3std9exception__T7bailOutHTC4core4time13TimeExceptionZQBlFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTC9ExceptionZQwFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc11concurrency19TidMissingExceptionZQBxFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc3net4curl13CurlExceptionZQBnFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc3net4curl20CurlTimeoutExceptionZQBuFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc3zip12ZipExceptionZQBhFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc4json13JSONExceptionZQBjFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc6format15FormatExceptionZQBnFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc7process16ProcessExceptionZQBpFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBcQBb14ErrnoExceptionZQBiFNfAyamMAxaZNn@Base 15 + _D3std9exception__T7enforceHTC4core4time13TimeExceptionZ__TQBoTbZQBuFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc11concurrency19TidMissingExceptionZ__TQCaTbZQCgFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc3net4curl13CurlExceptionZ__TQBqTPvZQBxFNaNfQlLAxaAyamZQw@Base 15 + _D3std9exception__T7enforceHTCQBc3net4curl13CurlExceptionZ__TQBqTbZQBwFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc3net4curl20CurlTimeoutExceptionZ__TQBxTbZQCdFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc3zip12ZipExceptionZ__TQBkTbZQBqFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc4json13JSONExceptionZ__TQBmTNgbZQBuFNaNfNgbLAxaAyamZNgb@Base 15 + _D3std9exception__T7enforceHTCQBc4json13JSONExceptionZ__TQBmTPNgSQClQBj9JSONValueZQClFNaNfQBdLAxaAyamZQBp@Base 15 + _D3std9exception__T7enforceHTCQBc4json13JSONExceptionZ__TQBmTbZQBsFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc6format15FormatExceptionZ__TQBqTbZQBwFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc6format15FormatExceptionZ__TQBqTmZQBwFNaNfmLAxaAyamZm@Base 15 + _D3std9exception__T7enforceHTCQBc7process16ProcessExceptionZ__TQBsTbZQByFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBcQBb14ErrnoExceptionZ__TQBlTPOS4core4stdc5stdio8_IO_FILEZQCsFNfQBjLAxaAyamZQBv@Base 15 + _D3std9exception__T7enforceHTCQBcQBb14ErrnoExceptionZ__TQBlTbZQBrFNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBcQBb14ErrnoExceptionZ__TQBlTiZQBrFNfiLAxaAyamZi@Base 15 + _D3std9exception__T7enforceTPS4core3sys5posix5netdb7hostentZQBpFNaNfQBoLC6object9ThrowableZQCl@Base 15 + _D3std9exception__T7enforceTbZQlFNaNfbLC6object9ThrowableZb@Base 15 + _D3std9exception__T7enforceZ__TQmTAyaZQtFNaNfQlLAxaQrmZQv@Base 15 + _D3std9exception__T7enforceZ__TQmTPOS4core4stdc5stdio8_IO_FILEZQBsFNaNfQBlLAxaAyamZQBx@Base 15 + _D3std9exception__T7enforceZ__TQmTPSQBi11concurrency__T4ListTSQCiQBa7MessageZQw4NodeZQCoFNaNfQChLAxaAyamZQCt@Base 15 + _D3std9exception__T7enforceZ__TQmTPvZQsFNaNfQkLAxaAyamZQv@Base 15 + _D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceZ__TQmTiZQrFNaNfiLAxaAyamZi@Base 15 + _D3std9exception__T7enforceZ__TQmTmZQrFNaNfmLAxaAyamZm@Base 15 + _D3std9outbuffer11__moduleRefZ@Base 15 + _D3std9outbuffer12__ModuleInfoZ@Base 15 + _D3std9outbuffer9OutBuffer11__invariantMxFZv@Base 15 + _D3std9outbuffer9OutBuffer12__invariant0MxFZv@Base 15 + _D3std9outbuffer9OutBuffer4fillMFNaNbNfmhZv@Base 15 + _D3std9outbuffer9OutBuffer5clearMFNaNbNfZv@Base 15 + _D3std9outbuffer9OutBuffer5fill0MFNaNbNfmZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNeMAxaZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNeMAxuZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNeMAxwZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNedZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNeeZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNefZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNekZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNemZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNetZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNeuZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfMAxhZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfMxCQBpQBoQBhZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfaZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfgZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfhZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfiZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNflZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfsZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfwZv@Base 15 + _D3std9outbuffer9OutBuffer6__initZ@Base 15 + _D3std9outbuffer9OutBuffer6__vtblZ@Base 15 + _D3std9outbuffer9OutBuffer6align2MFNaNbNfhZv@Base 15 + _D3std9outbuffer9OutBuffer6align4MFNaNbNfhZv@Base 15 + _D3std9outbuffer9OutBuffer6printfMFMAyaYv@Base 15 + _D3std9outbuffer9OutBuffer6spreadMFNaNbNfmmZv@Base 15 + _D3std9outbuffer9OutBuffer7__ClassZ@Base 15 + _D3std9outbuffer9OutBuffer7reserveMFNaNbNemZv@Base 15 + _D3std9outbuffer9OutBuffer7toBytesMNgFNaNbNlNfZANgh@Base 15 + _D3std9outbuffer9OutBuffer7vprintfMFNbMAyaG1S3gcc8builtins13__va_list_tagZv@Base 15 + _D3std9outbuffer9OutBuffer8toStringMxFNaNbNfZAya@Base 15 + _D3std9outbuffer9OutBuffer9alignSizeMFNaNbNfmhZv@Base 15 + _D3std9typetuple11__moduleRefZ@Base 15 + _D3std9typetuple12__ModuleInfoZ@Base 15 + _D40TypeInfo_AxAS3std3uni17CodepointInterval6__initZ@Base 15 + _D40TypeInfo_C3std11concurrency11IsGenerator6__initZ@Base 15 + _D40TypeInfo_E3std3uni20UnicodeDecomposition6__initZ@Base 15 + _D40TypeInfo_E3std5range18SortedRangeOptions6__initZ@Base 15 + _D40TypeInfo_E3std6socket17SocketOptionLevel6__initZ@Base 15 + _D40TypeInfo_E3std6traits17FunctionAttribute6__initZ@Base 15 + _D40TypeInfo_E3std7numeric16CustomFloatFlags6__initZ@Base 15 + _D40TypeInfo_E3std8encoding15Windows1250Char6__initZ@Base 15 + _D40TypeInfo_E3std8encoding15Windows1251Char6__initZ@Base 15 + _D40TypeInfo_E3std8encoding15Windows1252Char6__initZ@Base 15 + _D40TypeInfo_E3std9exception14RangePrimitive6__initZ@Base 15 + _D40TypeInfo_E4core6stdcpp4new_11align_val_t6__initZ@Base 15 + _D40TypeInfo_E4core8demangle14FuncAttributes6__initZ@Base 15 + _D40TypeInfo_S3etc1c4odbc6odbc3210tagSQLGUID6__initZ@Base 15.2 + _D40TypeInfo_S3etc1c4odbc6odbc6410tagSQLGUID6__initZ@Base 15.2 + _D40TypeInfo_S3etc1c7sqlite314Fts5PhraseIter6__initZ@Base 15.2 + _D40TypeInfo_S3etc1c7sqlite314fts5_tokenizer6__initZ@Base 15.2 + _D40TypeInfo_S3etc1c7sqlite314sqlite3_module6__initZ@Base 15.2 + _D40TypeInfo_S3std3net4curl4HTTP10StatusLine6__initZ@Base 15 + _D40TypeInfo_S3std3uni__T9BitPackedTbVmi1ZQr6__initZ@Base 15 + _D40TypeInfo_S3std3uni__T9BitPackedTkVmi7ZQr6__initZ@Base 15 + _D40TypeInfo_S3std3uni__T9BitPackedTkVmi8ZQr6__initZ@Base 15 + _D40TypeInfo_S3std5array__T8AppenderTAAyaZQp6__initZ@Base 15 + _D40TypeInfo_S3std5range__T10OnlyResultTaZQp6__initZ@Base 15 + _D40TypeInfo_S4core3sys5linux4tipc9tipc_name6__initZ@Base 15 + _D40TypeInfo_S4core3sys5linux5input8input_id6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix5netdb8addrinfo6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix5netdb8protoent6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix6signal7stack_t6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk4time7timeval6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk5ioctl6termio6__initZ@Base 15 + _D40TypeInfo_xAAS3std3uni17CodepointInterval6__initZ@Base 15 + _D40TypeInfo_xS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D40TypeInfo_xS3std8datetime7systime7SysTime6__initZ@Base 15 + _D40TypeInfo_xS4core3sys5posixQk4stat6stat_t6__initZ@Base 15 + _D41TypeInfo_AE3std8encoding15Windows1250Char6__initZ@Base 15 + _D41TypeInfo_AE3std8encoding15Windows1251Char6__initZ@Base 15 + _D41TypeInfo_AE3std8encoding15Windows1252Char6__initZ@Base 15 + _D41TypeInfo_E3etc1c4curl18CurlFInfoFlagKnown6__initZ@Base 15 + _D41TypeInfo_E3etc1c4odbc6odbc3211SQLINTERVAL6__initZ@Base 15.2 + _D41TypeInfo_E3etc1c4odbc6odbc6411SQLINTERVAL6__initZ@Base 15.2 + _D41TypeInfo_E4core3sys5posixQk4wait8idtype_t6__initZ@Base 15 + _D41TypeInfo_E4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 + _D41TypeInfo_E4core4stdc6config12__c_longlong6__initZ@Base 15 + _D41TypeInfo_E4core8internal5newaa4Impl5Flags6__initZ@Base 15 + _D41TypeInfo_FZC3std8encoding14EncodingScheme6__initZ@Base 15 + _D41TypeInfo_OC4core4sync9condition9Condition6__initZ@Base 15 + _D41TypeInfo_PxS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D41TypeInfo_S3std10checkedint13ProperCompare6__initZ@Base 15 + _D41TypeInfo_S3std11parallelism12AbstractTask6__initZ@Base 15 + _D41TypeInfo_S3std3uni21DecompressedIntervals6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi11ZQs6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi12ZQs6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi13ZQs6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi14ZQs6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi15ZQs6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi16ZQs6__initZ@Base 15 + _D41TypeInfo_S3std5regex8internal2ir8BitTable6__initZ@Base 15 + _D41TypeInfo_S3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D41TypeInfo_S3std6random18RandomCoverChoices6__initZ@Base 15 + _D41TypeInfo_S3std8typecons__T5TupleTiTAyaZQn6__initZ@Base 15 + _D41TypeInfo_S3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5input9ff_effect6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5input9ff_replay6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigevent6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigset_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigstack6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix9semaphore5sem_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6select6fd_set6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6socket6linger6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6socket6msghdr6__initZ@Base 15 + _D41TypeInfo_xPS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D41TypeInfo_xS3std3net4curl4HTTP10StatusLine6__initZ@Base 15 + _D41TypeInfo_xS3std5range__T10OnlyResultTaZQp6__initZ@Base 15 + _D42TypeInfo_AS3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D42TypeInfo_AS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D42TypeInfo_E3std5regex8internal2ir9RegexInfo6__initZ@Base 15 + _D42TypeInfo_E3std8datetime8interval9Direction6__initZ@Base 15 + _D42TypeInfo_E4core4stdc6config13__c_ulonglong6__initZ@Base 15 + _D42TypeInfo_HC4core6thread8osthread6ThreadQBd6__initZ@Base 15 + _D42TypeInfo_PFZC3std8encoding14EncodingScheme6__initZ@Base 15 + _D42TypeInfo_PxPS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D42TypeInfo_S3etc1c7sqlite316Fts5ExtensionApi6__initZ@Base 15.2 + _D42TypeInfo_S3etc1c7sqlite316sqlite3_snapshot6__initZ@Base 15.2 + _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi5ZQt6__initZ@Base 15 + _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi6ZQt6__initZ@Base 15 + _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi7ZQt6__initZ@Base 15 + _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi8ZQt6__initZ@Base 15 + _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi9ZQt6__initZ@Base 15 + _D42TypeInfo_S3std4json9JSONValue5Store6Object6__initZ@Base 15 + _D42TypeInfo_S3std6logger4core6Logger8LogEntry6__initZ@Base 15 + _D42TypeInfo_S3std7variant__T8VariantNVmi32ZQp6__initZ@Base 15 + _D42TypeInfo_S4core3sys5linux2fs12fstrim_range6__initZ@Base 15 + _D42TypeInfo_S4core3sys5linux4tipc10tipc_event6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posix4time10itimerspec6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posix6signal9siginfo_t6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk4time9itimerval6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk5ioctl8termios26__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 + _D42TypeInfo_S4core8demangle16ManglingFlagInfo6__initZ@Base 15 + _D42TypeInfo_S4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D42TypeInfo_xE4core8internal5newaa4Impl5Flags6__initZ@Base 15 + _D42TypeInfo_xPPS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D42TypeInfo_xS3std11parallelism12AbstractTask6__initZ@Base 15 + _D42TypeInfo_xS3std3uni21DecompressedIntervals6__initZ@Base 15 + _D42TypeInfo_xS3std5regex8internal2ir8BitTable6__initZ@Base 15 + _D42TypeInfo_xS3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D42TypeInfo_xS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D43TypeInfo_AxS3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D43TypeInfo_AxS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D43TypeInfo_E3etc1c4odbc8sqltypes11SQLINTERVAL6__initZ@Base 15.2 + _D43TypeInfo_E3std3net7isemail15EmailStatusCode6__initZ@Base 15 + _D43TypeInfo_E3std9algorithm10comparison6EditOp6__initZ@Base 15 + _D43TypeInfo_E4core6thread10threadbase8ScanType6__initZ@Base 15 + _D43TypeInfo_E4core8internal2gc2os11ChildStatus6__initZ@Base 15 + _D43TypeInfo_FS3std3net4curl4HTTP10StatusLineZv6__initZ@Base 15 + _D43TypeInfo_OS4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D43TypeInfo_PxS3std11parallelism12AbstractTask6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D43TypeInfo_S2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D43TypeInfo_S3etc1c4odbc8sqltypes11DATE_STRUCT6__initZ@Base 15.2 + _D43TypeInfo_S3etc1c4odbc8sqltypes11TIME_STRUCT6__initZ@Base 15.2 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi5Vmi13ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi6Vmi10ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi6Vmi13ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi7Vmi13ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi8Vmi13ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi8Vmi21ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi9Vmi21ZQu6__initZ@Base 15 + _D43TypeInfo_S3std4file__T12_DirIteratorVbi1ZQt6__initZ@Base 15 + _D43TypeInfo_S3std8datetime9stopwatch9StopWatch6__initZ@Base 15 + _D43TypeInfo_S3std8internal14unicode_tables3FCE6__initZ@Base 15 + _D43TypeInfo_S3std8internal14unicode_tables3SCE6__initZ@Base 15 + _D43TypeInfo_S3std8typecons__T5TupleTeTeTeTeZQp6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input10ff_trigger6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input10input_mask6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input9ff_effect1U6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk8resource6rlimit6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk8resource6rusage6__initZ@Base 15 + _D43TypeInfo_S4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 + _D43TypeInfo_S4core6thread5types13ll_ThreadData6__initZ@Base 15 + _D43TypeInfo_xAS3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D43TypeInfo_xAS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D43TypeInfo_xPFZC3std8encoding14EncodingScheme6__initZ@Base 15.2 + _D43TypeInfo_xPS3std11parallelism12AbstractTask6__initZ@Base 15 + _D43TypeInfo_xS3std7variant__T8VariantNVmi32ZQp6__initZ@Base 15 + _D44TypeInfo_DFS3std3net4curl4HTTP10StatusLineZv6__initZ@Base 15 + _D44TypeInfo_E2rt4util7utility16__c_complex_real6__initZ@Base 15 + _D44TypeInfo_E3std6traits21ParameterStorageClass6__initZ@Base 15 + _D44TypeInfo_E4core4stdc9stdatomic12memory_order6__initZ@Base 15 + _D44TypeInfo_E4core6thread7context8Callable4Call6__initZ@Base 15 + _D44TypeInfo_OS2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D44TypeInfo_S3etc1c4odbc6odbc3214tagDATE_STRUCT6__initZ@Base 15.2 + _D44TypeInfo_S3etc1c4odbc6odbc3214tagTIME_STRUCT6__initZ@Base 15.2 + _D44TypeInfo_S3etc1c4odbc6odbc6414tagDATE_STRUCT6__initZ@Base 15.2 + _D44TypeInfo_S3etc1c4odbc6odbc6414tagTIME_STRUCT6__initZ@Base 15.2 + _D44TypeInfo_S3etc1c7sqlite318sqlite3_index_info6__initZ@Base 15.2 + _D44TypeInfo_S3etc1c7sqlite318sqlite3_io_methods6__initZ@Base 15.2 + _D44TypeInfo_S3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 + _D44TypeInfo_S3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 + _D44TypeInfo_S3std3uni__T9sliceBitsVmi10Vmi14ZQv6__initZ@Base 15 + _D44TypeInfo_S3std3uni__T9sliceBitsVmi13Vmi21ZQv6__initZ@Base 15 + _D44TypeInfo_S3std3uni__T9sliceBitsVmi14Vmi21ZQv6__initZ@Base 15 + _D44TypeInfo_S3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D44TypeInfo_S3std5regex8internal6parser7CodeGen6__initZ@Base 15 + _D44TypeInfo_S3std5stdio4File17LockingTextWriter6__initZ@Base 15 + _D44TypeInfo_S3std8typecons__T11Rebindable2TaZQq6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5epoll11epoll_event6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5input11ff_envelope6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5input11input_event6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 + _D44TypeInfo_S4core3sys5posix5sched11sched_param6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 + _D44TypeInfo_S4core6thread7context12StackContext6__initZ@Base 15 + _D44TypeInfo_xE3std3net7isemail15EmailStatusCode6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D45TypeInfo_AS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D45TypeInfo_E2rt4util7utility17__c_complex_float6__initZ@Base 15 + _D45TypeInfo_E3std5regex8internal2ir11RegexOption6__initZ@Base 15 + _D45TypeInfo_E4core4stdc6config16__c_complex_real6__initZ@Base 15 + _D45TypeInfo_E4core8internal2gc8blkcache8IsMarked6__initZ@Base 15 + _D45TypeInfo_E4core8internal7convert11FloatFormat6__initZ@Base 15 + _D45TypeInfo_E6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 + _D45TypeInfo_S3etc1c7sqlite319sqlite3_mem_methods6__initZ@Base 15.2 + _D45TypeInfo_S3etc1c7sqlite319sqlite3_pcache_page6__initZ@Base 15.2 + _D45TypeInfo_S3etc1c7sqlite319sqlite3_vtab_cursor6__initZ@Base 15.2 + _D45TypeInfo_S3gcc12libbacktrace15backtrace_state6__initZ@Base 15 + _D45TypeInfo_S3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 + _D45TypeInfo_S3std3uni__T13PackedPtrImplThVmi8ZQw6__initZ@Base 15 + _D45TypeInfo_S3std5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D45TypeInfo_S3std8typecons__T5TupleTAxaTQeTQhZQr6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 + _D45TypeInfo_S4core3sys5posix6signal11sigaction_t6__initZ@Base 15 + _D45TypeInfo_S4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 + _D45TypeInfo_S4core8internal12parseoptions6MemVal6__initZ@Base 15 + _D45TypeInfo_S4core8internal9container5treap4Rand6__initZ@Base 15 + _D45TypeInfo_xDFS3std3net4curl4HTTP10StatusLineZv6__initZ@Base 15 + _D45TypeInfo_xS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D46TypeInfo_AxS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D46TypeInfo_E2rt4util7utility18__c_complex_double6__initZ@Base 15 + _D46TypeInfo_E3std11parallelism8TaskPool9PoolState6__initZ@Base 15 + _D46TypeInfo_E4core4stdc6config17__c_complex_float6__initZ@Base 15 + _D46TypeInfo_HAyaPFZC3std8encoding14EncodingScheme6__initZ@Base 15 + _D46TypeInfo_S3std3uni7unicode18hangulSyllableType6__initZ@Base 15 + _D46TypeInfo_S3std3uni__T13PackedPtrImplTtVmi16ZQx6__initZ@Base 15 + _D46TypeInfo_S3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D46TypeInfo_S3std5range__T4iotaTmTmZQkFmmZ6Result6__initZ@Base 15 + _D46TypeInfo_S3std6format4spec__T10FormatSpecTaZQp6__initZ@Base 15 + _D46TypeInfo_S3std6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D46TypeInfo_S3std8internal14unicode_tables6blocks6__initZ@Base 15 + _D46TypeInfo_S3std8internal14unicode_tables6hangul6__initZ@Base 15 + _D46TypeInfo_S4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux2fs16file_clone_range6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux5input13input_absinfo6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 + _D46TypeInfo_S4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 + _D46TypeInfo_S4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 + _D46TypeInfo_xAS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D46TypeInfo_xS3std5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D46TypeInfo_xS3std8typecons__T5TupleTAxaTQeTQhZQr6__initZ@Base 15 + _D47TypeInfo_AC4core6thread10threadbase10ThreadBase6__initZ@Base 15 + _D47TypeInfo_AS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D47TypeInfo_AxS3std5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D47TypeInfo_E3std7variant__T8VariantNVmi32ZQp4OpID6__initZ@Base 15 + _D47TypeInfo_E3std8internal4test10dummyrange6Length6__initZ@Base 15 + _D47TypeInfo_E3std9algorithm8mutation12SwapStrategy6__initZ@Base 15 + _D47TypeInfo_E4core4stdc6config18__c_complex_double6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp6string16DefaultConstruct6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp6vector16DefaultConstruct6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 + _D47TypeInfo_E6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 + _D47TypeInfo_S3etc1c4odbc6odbc3217tagSQL_DAY_SECOND6__initZ@Base 15.2 + _D47TypeInfo_S3etc1c4odbc6odbc3217tagSQL_YEAR_MONTH6__initZ@Base 15.2 + _D47TypeInfo_S3etc1c4odbc6odbc6417tagSQL_DAY_SECOND6__initZ@Base 15.2 + _D47TypeInfo_S3etc1c4odbc6odbc6417tagSQL_YEAR_MONTH6__initZ@Base 15.2 + _D47TypeInfo_S3etc1c7sqlite321sqlite3_mutex_methods6__initZ@Base 15.2 + _D47TypeInfo_S3std5array__T15InPlaceAppenderTAxaZQw6__initZ@Base 15 + _D47TypeInfo_S3std5array__T15InPlaceAppenderTAyaZQw6__initZ@Base 15 + _D47TypeInfo_S3std5array__T15InPlaceAppenderTAyuZQw6__initZ@Base 15 + _D47TypeInfo_S3std5array__T15InPlaceAppenderTAywZQw6__initZ@Base 15 + _D47TypeInfo_S3std5array__T15InPlaceAppenderTyAaZQw6__initZ@Base 15 + _D47TypeInfo_S3std6digest3sha__T3SHAVki512Vki160ZQr6__initZ@Base 15 + _D47TypeInfo_S3std6digest3sha__T3SHAVki512Vki224ZQr6__initZ@Base 15 + _D47TypeInfo_S3std6digest3sha__T3SHAVki512Vki256ZQr6__initZ@Base 15 + _D47TypeInfo_S3std8datetime8timezone13TZConversions6__initZ@Base 15 + _D47TypeInfo_S3std8internal14unicode_tables7scripts6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 + _D47TypeInfo_S4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 + _D47TypeInfo_S4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 + _D47TypeInfo_S4core6thread8osthread6Thread8Priority6__initZ@Base 15 + _D47TypeInfo_S6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 + _D47TypeInfo_xAS3std5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D47TypeInfo_xS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D48TypeInfo_AxS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D48TypeInfo_E3std4uuid20UUIDParsingException6Reason6__initZ@Base 15 + _D48TypeInfo_S3etc1c4odbc8sqltypes16TIMESTAMP_STRUCT6__initZ@Base 15.2 + _D48TypeInfo_S3etc1c7sqlite322sqlite3_pcache_methods6__initZ@Base 15.2 + _D48TypeInfo_S3etc1c7sqlite322sqlite3_rtree_geometry6__initZ@Base 15.2 + _D48TypeInfo_S3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D48TypeInfo_S3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__initZ@Base 15 + _D48TypeInfo_S3std5array__T15InPlaceAppenderTAAyaZQx6__initZ@Base 15 + _D48TypeInfo_S3std5range__T4iotaTmTxmZQlFmxmZ6Result6__initZ@Base 15 + _D48TypeInfo_S3std5range__T6RepeatTaZQk11DollarToken6__initZ@Base 15 + _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki224ZQs6__initZ@Base 15 + _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki256ZQs6__initZ@Base 15 + _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki384ZQs6__initZ@Base 15 + _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki512ZQs6__initZ@Base 15 + _D48TypeInfo_S3std8internal14unicode_tables8uniProps6__initZ@Base 15 + _D48TypeInfo_S3std8internal4test10dummyrange7TestFoo6__initZ@Base 15 + _D48TypeInfo_S4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 + _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 + _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 + _D48TypeInfo_S4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 + _D48TypeInfo_S4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 + _D48TypeInfo_xAS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D48TypeInfo_yC3std8datetime8timezone13PosixTimeZone6__initZ@Base 15 + _D49TypeInfo_E3std8internal4test10dummyrange8ReturnBy6__initZ@Base 15 + _D49TypeInfo_E3std8typecons24RefCountedAutoInitialize6__initZ@Base 15 + _D49TypeInfo_E3std8typecons__T4FlagVAyaa4_7472795fZQv6__initZ@Base 15 + _D49TypeInfo_E4core3sys5linux10perf_event10perf_hw_id6__initZ@Base 15 + _D49TypeInfo_E4core6thread5fiber4base9FiberBase5State6__initZ@Base 15 + _D49TypeInfo_S3etc1c4odbc6odbc3219tagTIMESTAMP_STRUCT6__initZ@Base 15.2 + _D49TypeInfo_S3etc1c4odbc6odbc6419tagTIMESTAMP_STRUCT6__initZ@Base 15.2 + _D49TypeInfo_S3etc1c7sqlite323sqlite3_pcache_methods26__initZ@Base 15.2 + _D49TypeInfo_S3std3uni18simpleCaseFoldingsFNfwZ5Range6__initZ@Base 15 + _D49TypeInfo_S3std5range__T6ChunksTAhZQl11DollarToken6__initZ@Base 15 + _D49TypeInfo_S3std5range__T6strideTAywZQmFQhmZ6Result6__initZ@Base 15 + _D49TypeInfo_S3std8internal4math11biguintcore7BigUint6__initZ@Base 15 + _D49TypeInfo_S3std8typecons__T5TupleTC8TypeInfoTPvZQv6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 + _D49TypeInfo_xS3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D49TypeInfo_xS3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__initZ@Base 15 + _D4core10checkedint11__moduleRefZ@Base 15 + _D4core10checkedint12__ModuleInfoZ@Base 15 + _D4core13interpolation11__moduleRefZ@Base 15 + _D4core13interpolation12__ModuleInfoZ@Base 15 + _D4core13interpolation16__getEmptyStringFNaNbNiNfZAya@Base 15 + _D4core13interpolation19InterpolationFooter6__initZ@Base 15 + _D4core13interpolation19InterpolationHeader6__initZ@Base 15 + _D4core2gc11gcinterface11__moduleRefZ@Base 15 + _D4core2gc11gcinterface12__ModuleInfoZ@Base 15 + _D4core2gc11gcinterface2GC11__InterfaceZ@Base 15 + _D4core2gc11gcinterface4Root6__initZ@Base 15 + _D4core2gc11gcinterface5Range11__xopEqualsMxFKxSQBuQBsQBsQBiZb@Base 15 + _D4core2gc11gcinterface5Range6__initZ@Base 15 + _D4core2gc11gcinterface5Range8opEqualsMxFNbMxSQBsQBqQBqQBgZb@Base 15 + _D4core2gc11gcinterface5Range9__xtoHashFNbNeKxSQBtQBrQBrQBhZm@Base 15 + _D4core2gc6config11PrettyBytes6__initZ@Base 15 + _D4core2gc6config11__moduleRefZ@Base 15 + _D4core2gc6config11prettyBytesFNaNbNiKmZa@Base 15 + _D4core2gc6config12__ModuleInfoZ@Base 15 + _D4core2gc6config18bytes2prettyStructFNaNbNimZSQBtQBrQBr11PrettyBytes@Base 15 + _D4core2gc6config6Config10initializeMFNbNiZb@Base 15 + _D4core2gc6config6Config11__xopEqualsMxFKxSQBpQBnQBnQBjZb@Base 15 + _D4core2gc6config6Config4helpMFNbNiZv@Base 15 + _D4core2gc6config6Config6__initZ@Base 15 + _D4core2gc6config6Config9__xtoHashFNbNeKxSQBoQBmQBmQBiZm@Base 15 + _D4core2gc6config6Config9errorNameMFNbNiZAya@Base 15 + _D4core2gc6configQhSQsQpQo6Config@Base 15 + _D4core2gc8registry11__moduleRefZ@Base 15 + _D4core2gc8registry12__ModuleInfoZ@Base 15 + _D4core2gc8registry16createGCInstanceFAyaZCQBpQBn11gcinterface2GC@Base 15 + _D4core2gc8registry17registerGCFactoryFNbNiAyaPFZCQBwQBu11gcinterface2GCZv@Base 15 + _D4core2gc8registry21registeredGCFactoriesFNbNiMiZxASQBzQBxQBx5Entry@Base 15 + _D4core2gc8registry5Entry11__xopEqualsMxFKxSQBqQBoQBoQBiZb@Base 15 + _D4core2gc8registry5Entry6__initZ@Base 15 + _D4core2gc8registry5Entry9__xtoHashFNbNeKxSQBpQBnQBnQBhZm@Base 15 + _D4core2gc8registry7entriesASQBbQzQy5Entry@Base 15 + _D4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 + _D4core3sys3elf10Elf32_Move6__initZ@Base 15 + _D4core3sys3elf10Elf32_Phdr6__initZ@Base 15 + _D4core3sys3elf10Elf32_Rela6__initZ@Base 15 + _D4core3sys3elf10Elf32_Shdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Move6__initZ@Base 15 + _D4core3sys3elf10Elf64_Phdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Rela6__initZ@Base 15 + _D4core3sys3elf10Elf64_Shdr6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 + _D4core3sys3elf11Elf_Options6__initZ@Base 15 + _D4core3sys3elf11__moduleRefZ@Base 15 + _D4core3sys3elf12Elf32_Verdef6__initZ@Base 15 + _D4core3sys3elf12Elf64_Verdef6__initZ@Base 15 + _D4core3sys3elf12__ModuleInfoZ@Base 15 + _D4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 + _D4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 + _D4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 + _D4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 + _D4core3sys3elf13Elf32_Verneed6__initZ@Base 15 + _D4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 + _D4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 + _D4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 + _D4core3sys3elf13Elf64_Verneed6__initZ@Base 15 + _D4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 + _D4core3sys3elf9Elf32_Lib6__initZ@Base 15 + _D4core3sys3elf9Elf32_Rel6__initZ@Base 15 + _D4core3sys3elf9Elf32_Sym6__initZ@Base 15 + _D4core3sys3elf9Elf64_Lib6__initZ@Base 15 + _D4core3sys3elf9Elf64_Rel6__initZ@Base 15 + _D4core3sys3elf9Elf64_Sym6__initZ@Base 15 + _D4core3sys5linux10perf_event11__moduleRefZ@Base 15 + _D4core3sys5linux10perf_event12__ModuleInfoZ@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10namespacesMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10namespacesMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14context_switchMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14context_switchMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4commMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4commMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4freqMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4freqMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4mmapMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4mmapMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4taskMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4taskMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr5mmap2MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr5mmap2MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6pinnedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6pinnedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr7inheritMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr7inheritMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr8disabledMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr8disabledMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9comm_execMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9comm_execMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9watermarkMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9watermarkMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry4typeMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry4typeMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5abortMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5abortMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5in_txMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5in_txMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry7mispredMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry7mispredMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry8reservedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry8reservedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry9predictedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry9predictedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 + _D4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 + _D4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 + _D4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 + _D4core3sys5linux17input_event_codes11__moduleRefZ@Base 15 + _D4core3sys5linux17input_event_codes12__ModuleInfoZ@Base 15 + _D4core3sys5linux2fs11__moduleRefZ@Base 15 + _D4core3sys5linux2fs12__ModuleInfoZ@Base 15 + _D4core3sys5linux2fs12fstrim_range6__initZ@Base 15 + _D4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 + _D4core3sys5linux2fs16file_clone_range6__initZ@Base 15 + _D4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 + _D4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 + _D4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 + _D4core3sys5linux2fs7fsxattr6__initZ@Base 15 + _D4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 + _D4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 + _D4core3sys5linux3elf11__moduleRefZ@Base 15 + _D4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 + _D4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 + _D4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 + _D4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 + _D4core3sys5linux3elf12__ModuleInfoZ@Base 15 + _D4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 + _D4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 + _D4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 + _D4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 + _D4core3sys5linux3err11__moduleRefZ@Base 15 + _D4core3sys5linux3err12__ModuleInfoZ@Base 15 + _D4core3sys5linux4link11__moduleRefZ@Base 15 + _D4core3sys5linux4link12__ModuleInfoZ@Base 15 + _D4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 + _D4core3sys5linux4link7r_debug6__initZ@Base 15 + _D4core3sys5linux4link8link_map6__initZ@Base 15 + _D4core3sys5linux4time11__moduleRefZ@Base 15 + _D4core3sys5linux4time12__ModuleInfoZ@Base 15 + _D4core3sys5linux4tipc10tipc_event6__initZ@Base 15 + _D4core3sys5linux4tipc11__moduleRefZ@Base 15 + _D4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 + _D4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 + _D4core3sys5linux4tipc12__ModuleInfoZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 + _D4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 + _D4core3sys5linux4tipc9tipc_name6__initZ@Base 15 + _D4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 + _D4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 + _D4core3sys5linux5dlfcn11__moduleRefZ@Base 15 + _D4core3sys5linux5dlfcn12__ModuleInfoZ@Base 15 + _D4core3sys5linux5epoll11__moduleRefZ@Base 15 + _D4core3sys5linux5epoll11epoll_event6__initZ@Base 15 + _D4core3sys5linux5epoll12__ModuleInfoZ@Base 15 + _D4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 + _D4core3sys5linux5errno11__moduleRefZ@Base 15 + _D4core3sys5linux5errno12__ModuleInfoZ@Base 15 + _D4core3sys5linux5fcntl11__moduleRefZ@Base 15 + _D4core3sys5linux5fcntl12__ModuleInfoZ@Base 15 + _D4core3sys5linux5input10ff_trigger6__initZ@Base 15 + _D4core3sys5linux5input10input_mask6__initZ@Base 15 + _D4core3sys5linux5input11__moduleRefZ@Base 15 + _D4core3sys5linux5input11ff_envelope6__initZ@Base 15 + _D4core3sys5linux5input11input_event6__initZ@Base 15 + _D4core3sys5linux5input12__ModuleInfoZ@Base 15 + _D4core3sys5linux5input13input_absinfo6__initZ@Base 15 + _D4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 + _D4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 + _D4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 + _D4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 + _D4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 + _D4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 + _D4core3sys5linux5input8input_id6__initZ@Base 15 + _D4core3sys5linux5input9ff_effect1U6__initZ@Base 15 + _D4core3sys5linux5input9ff_effect6__initZ@Base 15 + _D4core3sys5linux5input9ff_replay6__initZ@Base 15 + _D4core3sys5linux5sched11__moduleRefZ@Base 15 + _D4core3sys5linux5sched12__ModuleInfoZ@Base 15 + _D4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 + _D4core3sys5linux5stdio11__moduleRefZ@Base 15 + _D4core3sys5linux5stdio12__ModuleInfoZ@Base 15 + _D4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 + _D4core3sys5linux6config11__moduleRefZ@Base 15 + _D4core3sys5linux6config12__ModuleInfoZ@Base 15 + _D4core3sys5linux6string11__moduleRefZ@Base 15 + _D4core3sys5linux6string12__ModuleInfoZ@Base 15 + _D4core3sys5linux6uinput11__moduleRefZ@Base 15 + _D4core3sys5linux6uinput12__ModuleInfoZ@Base 15 + _D4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 + _D4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 + _D4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 + _D4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 + _D4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 + _D4core3sys5linux6unistd11__moduleRefZ@Base 15 + _D4core3sys5linux6unistd12__ModuleInfoZ@Base 15 + _D4core3sys5linux7ifaddrs11__moduleRefZ@Base 15 + _D4core3sys5linux7ifaddrs12__ModuleInfoZ@Base 15 + _D4core3sys5linux7ifaddrsQi6__initZ@Base 15 + _D4core3sys5linux7netinet3in_11IN_BADCLASSFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_11__moduleRefZ@Base 15 + _D4core3sys5linux7netinet3in_12IN_MULTICASTFNbNikZb@Base 15 + _D4core3sys5linux7netinet3in_12__ModuleInfoZ@Base 15 + _D4core3sys5linux7netinet3in_15IN_EXPERIMENTALFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_18IN6_ARE_ADDR_EQUALFNaNbNiNfPSQCgQCe5posixQCdQBy8in6_addrQBdZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSAFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSBFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSCFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSDFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3tcp11__moduleRefZ@Base 15 + _D4core3sys5linux7netinet3tcp12__ModuleInfoZ@Base 15 + _D4core3sys5linux7termios11__moduleRefZ@Base 15 + _D4core3sys5linux7termios12__ModuleInfoZ@Base 15 + _D4core3sys5linux7timerfd11__moduleRefZ@Base 15 + _D4core3sys5linux7timerfd12__ModuleInfoZ@Base 15 + _D4core3sys5linux8execinfo11__moduleRefZ@Base 15 + _D4core3sys5linux8execinfo12__ModuleInfoZ@Base 15 + _D4core3sys5linux8io_uring11__moduleRefZ@Base 15 + _D4core3sys5linux8io_uring12__ModuleInfoZ@Base 15 + _D4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 + _D4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 + _D4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 + _D4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 + _D4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 + _D4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 + _D4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 + _D4core3sys5linuxQg6if_arp11__moduleRefZ@Base 15 + _D4core3sys5linuxQg6if_arp12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 + _D4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11__moduleRefZ@Base 15 + _D4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 + _D4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 + _D4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 + _D4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 + _D4core3sys5linuxQk4auxv11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4auxv12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4file11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4file12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4mman11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4mman12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4time10timerclearFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZv@Base 15 + _D4core3sys5linuxQk4time10timerissetFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZi@Base 15 + _D4core3sys5linuxQk4time11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4time12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4time8timeraddFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 + _D4core3sys5linuxQk4time8timersubFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 + _D4core3sys5linuxQk5mount11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5mount12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk5prctl11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5prctl12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 + _D4core3sys5linuxQk5xattr11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5xattr12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk6procfs11__moduleRefZ@Base 15 + _D4core3sys5linuxQk6procfs12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk6socket11__moduleRefZ@Base 15 + _D4core3sys5linuxQk6socket12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7eventfd11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7eventfd12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7inotify11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7inotify12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event8opAssignMFNaNbNcNiNjNeSQCmQCkQCjQCqQChQCcZQu@Base 15 + _D4core3sys5linuxQk7sysinfo11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7sysinfo12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 + _D4core3sys5linuxQk8signalfd11__moduleRefZ@Base 15 + _D4core3sys5linuxQk8signalfd12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 + _D4core3sys5posix3aio11__moduleRefZ@Base 15 + _D4core3sys5posix3aio12__ModuleInfoZ@Base 15 + _D4core3sys5posix3aio5aiocb6__initZ@Base 15 + _D4core3sys5posix3aio7aiocb646__initZ@Base 15 + _D4core3sys5posix3grp11__moduleRefZ@Base 15 + _D4core3sys5posix3grp12__ModuleInfoZ@Base 15 + _D4core3sys5posix3grp5group6__initZ@Base 15 + _D4core3sys5posix3net3if_11__moduleRefZ@Base 15 + _D4core3sys5posix3net3if_12__ModuleInfoZ@Base 15 + _D4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 + _D4core3sys5posix3pwd11__moduleRefZ@Base 15 + _D4core3sys5posix3pwd12__ModuleInfoZ@Base 15 + _D4core3sys5posix3pwd6passwd6__initZ@Base 15 + _D4core3sys5posix4arpa4inet11__moduleRefZ@Base 15 + _D4core3sys5posix4arpa4inet12__ModuleInfoZ@Base 15 + _D4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 + _D4core3sys5posix4poll11__moduleRefZ@Base 15 + _D4core3sys5posix4poll12__ModuleInfoZ@Base 15 + _D4core3sys5posix4poll6pollfd6__initZ@Base 15 + _D4core3sys5posix4stdc4time11__moduleRefZ@Base 15 + _D4core3sys5posix4stdc4time12__ModuleInfoZ@Base 15 + _D4core3sys5posix4stdc4time2tm6__initZ@Base 15 + _D4core3sys5posix4time10itimerspec6__initZ@Base 15 + _D4core3sys5posix4time11__moduleRefZ@Base 15 + _D4core3sys5posix4time12__ModuleInfoZ@Base 15 + _D4core3sys5posix4time8timespec6__initZ@Base 15 + _D4core3sys5posix5dlfcn11__moduleRefZ@Base 15 + _D4core3sys5posix5dlfcn12__ModuleInfoZ@Base 15 + _D4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 + _D4core3sys5posix5fcntl11__moduleRefZ@Base 15 + _D4core3sys5posix5fcntl12__ModuleInfoZ@Base 15 + _D4core3sys5posix5fcntl5flock6__initZ@Base 15 + _D4core3sys5posix5iconv11__moduleRefZ@Base 15 + _D4core3sys5posix5iconv12__ModuleInfoZ@Base 15 + _D4core3sys5posix5netdb11__moduleRefZ@Base 15 + _D4core3sys5posix5netdb12__ModuleInfoZ@Base 15 + _D4core3sys5posix5netdb6netent6__initZ@Base 15 + _D4core3sys5posix5netdb7hostent6__initZ@Base 15 + _D4core3sys5posix5netdb7hostent6h_addrMUNdZPa@Base 15 + _D4core3sys5posix5netdb7servent6__initZ@Base 15 + _D4core3sys5posix5netdb8addrinfo6__initZ@Base 15 + _D4core3sys5posix5netdb8protoent6__initZ@Base 15 + _D4core3sys5posix5sched11__moduleRefZ@Base 15 + _D4core3sys5posix5sched11sched_param6__initZ@Base 15 + _D4core3sys5posix5sched12__ModuleInfoZ@Base 15 + _D4core3sys5posix5spawn11__moduleRefZ@Base 15 + _D4core3sys5posix5spawn12__ModuleInfoZ@Base 15 + _D4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 + _D4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 + _D4core3sys5posix5stdio11__moduleRefZ@Base 15 + _D4core3sys5posix5stdio12__ModuleInfoZ@Base 15 + _D4core3sys5posix5utime11__moduleRefZ@Base 15 + _D4core3sys5posix5utime12__ModuleInfoZ@Base 15 + _D4core3sys5posix5utime7utimbuf6__initZ@Base 15 + _D4core3sys5posix6config11__moduleRefZ@Base 15 + _D4core3sys5posix6config12__ModuleInfoZ@Base 15 + _D4core3sys5posix6dirent11__moduleRefZ@Base 15 + _D4core3sys5posix6dirent12__ModuleInfoZ@Base 15 + _D4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D4core3sys5posix6direntQh6__initZ@Base 15 + _D4core3sys5posix6libgen11__moduleRefZ@Base 15 + _D4core3sys5posix6libgen12__ModuleInfoZ@Base 15 + _D4core3sys5posix6locale11__moduleRefZ@Base 15 + _D4core3sys5posix6locale12__ModuleInfoZ@Base 15 + _D4core3sys5posix6locale5lconv6__initZ@Base 15 + _D4core3sys5posix6mqueue11__moduleRefZ@Base 15 + _D4core3sys5posix6mqueue12__ModuleInfoZ@Base 15 + _D4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 + _D4core3sys5posix6setjmp11__moduleRefZ@Base 15 + _D4core3sys5posix6setjmp12__ModuleInfoZ@Base 15 + _D4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 + _D4core3sys5posix6signal11__moduleRefZ@Base 15 + _D4core3sys5posix6signal11sigaction_t6__initZ@Base 15 + _D4core3sys5posix6signal12__ModuleInfoZ@Base 15 + _D4core3sys5posix6signal6sigval6__initZ@Base 15 + _D4core3sys5posix6signal7stack_t6__initZ@Base 15 + _D4core3sys5posix6signal8SIGRTMAXUNbNdNiZ3sigi@Base 15 + _D4core3sys5posix6signal8SIGRTMINUNbNdNiZ3sigi@Base 15 + _D4core3sys5posix6signal8sigevent6__initZ@Base 15 + _D4core3sys5posix6signal8sigset_t6__initZ@Base 15 + _D4core3sys5posix6signal8sigstack6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t6si_pidMUNbNcNdNiNjZi@Base 15 + _D4core3sys5posix6signal9siginfo_t6si_uidMUNbNcNdNiNjZk@Base 15 + _D4core3sys5posix6signal9siginfo_t7si_addrMUNbNcNdNiNjZPv@Base 15 + _D4core3sys5posix6signal9siginfo_t7si_bandMUNbNcNdNiNjZl@Base 15 + _D4core3sys5posix6signal9siginfo_t8si_valueMUNbNcNdNiNjZSQCdQCbQCaQBx6sigval@Base 15 + _D4core3sys5posix6signal9siginfo_t9si_statusMUNbNcNdNiNjZi@Base 15 + _D4core3sys5posix6stdlib11__moduleRefZ@Base 15 + _D4core3sys5posix6stdlib12__ModuleInfoZ@Base 15 + _D4core3sys5posix6string11__moduleRefZ@Base 15 + _D4core3sys5posix6string12__ModuleInfoZ@Base 15 + _D4core3sys5posix6syslog11__moduleRefZ@Base 15 + _D4core3sys5posix6syslog12__ModuleInfoZ@Base 15 + _D4core3sys5posix6unistd11__moduleRefZ@Base 15 + _D4core3sys5posix6unistd12__ModuleInfoZ@Base 15 + _D4core3sys5posix7netinet3in_11__moduleRefZ@Base 15 + _D4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 + _D4core3sys5posix7netinet3in_12__ModuleInfoZ@Base 15 + _D4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_LOOPBACKFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4COMPATFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4MAPPEDFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_LINKLOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MC_GLOBALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MULTICASTFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_SITELOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_MC_ORGLOCALFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_UNSPECIFIEDFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_LINKLOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_NODELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_SITELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 + _D4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 + _D4core3sys5posix7netinet3tcp11__moduleRefZ@Base 15 + _D4core3sys5posix7netinet3tcp12__ModuleInfoZ@Base 15 + _D4core3sys5posix7pthread11__moduleRefZ@Base 15 + _D4core3sys5posix7pthread12__ModuleInfoZ@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup__T3popZQfMFNbiZv@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup__T4pushHTPUNaNbNiPvZvZQuMFNbNiQvQpZv@Base 15 + _D4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 + _D4core3sys5posix7strings11__moduleRefZ@Base 15 + _D4core3sys5posix7strings12__ModuleInfoZ@Base 15 + _D4core3sys5posix7termios11__moduleRefZ@Base 15 + _D4core3sys5posix7termios12__ModuleInfoZ@Base 15 + _D4core3sys5posix7termiosQi6__initZ@Base 15 + _D4core3sys5posix8inttypes11__moduleRefZ@Base 15 + _D4core3sys5posix8inttypes12__ModuleInfoZ@Base 15 + _D4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 + _D4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 + _D4core3sys5posix8ucontext11__moduleRefZ@Base 15 + _D4core3sys5posix8ucontext12__ModuleInfoZ@Base 15 + _D4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 + _D4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 + _D4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 + _D4core3sys5posix9semaphore11__moduleRefZ@Base 15 + _D4core3sys5posix9semaphore12__ModuleInfoZ@Base 15 + _D4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 + _D4core3sys5posix9semaphore5sem_t6__initZ@Base 15 + _D4core3sys5posixQk2un11__moduleRefZ@Base 15 + _D4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 + _D4core3sys5posixQk2un12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3ipc11__moduleRefZ@Base 15 + _D4core3sys5posixQk3ipc12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 + _D4core3sys5posixQk3msg11__moduleRefZ@Base 15 + _D4core3sys5posixQk3msg12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 + _D4core3sys5posixQk3msg7msginfo6__initZ@Base 15 + _D4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 + _D4core3sys5posixQk3shm11__moduleRefZ@Base 15 + _D4core3sys5posixQk3shm12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 + _D4core3sys5posixQk3uio11__moduleRefZ@Base 15 + _D4core3sys5posixQk3uio12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3uio5iovec6__initZ@Base 15 + _D4core3sys5posixQk4mman11__moduleRefZ@Base 15 + _D4core3sys5posixQk4mman12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4stat11__moduleRefZ@Base 15 + _D4core3sys5posixQk4stat12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4stat6stat_t6__initZ@Base 15 + _D4core3sys5posixQk4stat7S_ISBLKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISCHRFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISDIRFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISLNKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISREGFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISFIFOFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISSOCKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISTYPEFNbNikkZb@Base 15 + _D4core3sys5posixQk4time11__moduleRefZ@Base 15 + _D4core3sys5posixQk4time12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4time7timeval6__initZ@Base 15 + _D4core3sys5posixQk4time9itimerval6__initZ@Base 15 + _D4core3sys5posixQk4wait10WIFSTOPPEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk4wait10__WTERMSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait11WEXITSTATUSFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait11WIFSIGNALEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk4wait11__moduleRefZ@Base 15 + _D4core3sys5posixQk4wait12WIFCONTINUEDFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4wait8WSTOPSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait8WTERMSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait9WIFEXITEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk5filio11__moduleRefZ@Base 15 + _D4core3sys5posixQk5filio12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5ioctl11__moduleRefZ@Base 15 + _D4core3sys5posixQk5ioctl12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5ioctl3_IOFNbNiiiZi@Base 15 + _D4core3sys5posixQk5ioctl6termio6__initZ@Base 15 + _D4core3sys5posixQk5ioctl7_IOC_NRFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 + _D4core3sys5posixQk5ioctl8_IOC_DIRFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl8termios26__initZ@Base 15 + _D4core3sys5posixQk5ioctl9_IOC_SIZEFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl9_IOC_TYPEFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTG2kZQkFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTPaZQjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTPmZQjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTiZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTkZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTmZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTnZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTG2kZQkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTPmZQjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTiZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTkZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTmZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTG2kZQkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTPaZQjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTiZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTkZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTmZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput15uinput_ff_eraseZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput16uinput_ff_uploadZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5types11__moduleRefZ@Base 15 + _D4core3sys5posixQk5types12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 + _D4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 + _D4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 + _D4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 + _D4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 + _D4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 + _D4core3sys5posixQk6ioccom11__moduleRefZ@Base 15 + _D4core3sys5posixQk6ioccom12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6select11__moduleRefZ@Base 15 + _D4core3sys5posixQk6select12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6select6FD_CLRFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select6FD_SETFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select6fd_set6__initZ@Base 15 + _D4core3sys5posixQk6select7FD_ZEROFNaNbNiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select7__FDELTFNaNbNiNfiZk@Base 15 + _D4core3sys5posixQk6select8FD_ISSETFNaNbNiiPxSQBsQBqQBpQBwQBn6fd_setZb@Base 15 + _D4core3sys5posixQk6select8__FDMASKFNaNbNiNfiZl@Base 15 + _D4core3sys5posixQk6socket10CMSG_ALIGNFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket10CMSG_SPACEFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket11CMSG_NXTHDRFNaNbNiPNgSQBwQBuQBtQCaQBr6msghdrPNgSQCwQCuQCtQDaQCr7cmsghdrZQBc@Base 15 + _D4core3sys5posixQk6socket11__moduleRefZ@Base 15 + _D4core3sys5posixQk6socket12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6socket13CMSG_FIRSTHDRFNaNbNiPNgSQByQBwQBvQCcQBt6msghdrZPNgSQCzQCxQCwQDdQCu7cmsghdr@Base 15 + _D4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 + _D4core3sys5posixQk6socket6linger6__initZ@Base 15 + _D4core3sys5posixQk6socket6msghdr6__initZ@Base 15 + _D4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 + _D4core3sys5posixQk6socket8CMSG_LENFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 + _D4core3sys5posixQk6socket9CMSG_DATAFNaNbNiNkMPNgSQBwQBuQBtQCaQBr7cmsghdrZPNgh@Base 15 + _D4core3sys5posixQk6ttycom11__moduleRefZ@Base 15 + _D4core3sys5posixQk6ttycom12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7statvfs11__moduleRefZ@Base 15 + _D4core3sys5posixQk7statvfs12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 + _D4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 + _D4core3sys5posixQk7utsname11__moduleRefZ@Base 15 + _D4core3sys5posixQk7utsname12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7utsnameQi6__initZ@Base 15 + _D4core3sys5posixQk8resource11__moduleRefZ@Base 15 + _D4core3sys5posixQk8resource12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk8resource6rlimit6__initZ@Base 15 + _D4core3sys5posixQk8resource6rusage6__initZ@Base 15 + _D4core4math11__moduleRefZ@Base 15 + _D4core4math12__ModuleInfoZ@Base 15 + _D4core4simd11__moduleRefZ@Base 15 + _D4core4simd12__ModuleInfoZ@Base 15 + _D4core4stdc4fenv11__moduleRefZ@Base 15 + _D4core4stdc4fenv12__ModuleInfoZ@Base 15 + _D4core4stdc4fenv6fenv_t6__initZ@Base 15 + _D4core4stdc4math11__moduleRefZ@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeddZi@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeffZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeddZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeffZi@Base 15 + _D4core4stdc4math12__ModuleInfoZ@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeddZi@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeffZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeddZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeffZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeddZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeffZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNedZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNeeZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNefZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeddZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeffZi@Base 15 + _D4core4stdc4time11__moduleRefZ@Base 15 + _D4core4stdc4time12__ModuleInfoZ@Base 15 + _D4core4stdc5ctype11__moduleRefZ@Base 15 + _D4core4stdc5ctype12__ModuleInfoZ@Base 15 + _D4core4stdc5errno11__moduleRefZ@Base 15 + _D4core4stdc5errno12__ModuleInfoZ@Base 15 + _D4core4stdc5stdio11__moduleRefZ@Base 15 + _D4core4stdc5stdio12__ModuleInfoZ@Base 15 + _D4core4stdc5stdio6fpos_t6__initZ@Base 15 + _D4core4stdc5stdio8_IO_FILE6__initZ@Base 15 + _D4core4stdc6config11__moduleRefZ@Base 15 + _D4core4stdc6config12__ModuleInfoZ@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfdZSQCgQCeQCc__TQByTdZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfdZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTdZQByZm@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfeZSQCgQCeQCc__TQByTeZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfeZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTeZQByZm@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNffZSQCgQCeQCc__TQByTfZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNffZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTfZQByZm@Base 15 + _D4core4stdc6float_11__moduleRefZ@Base 15 + _D4core4stdc6float_12__ModuleInfoZ@Base 15 + _D4core4stdc6limits11__moduleRefZ@Base 15 + _D4core4stdc6limits12__ModuleInfoZ@Base 15 + _D4core4stdc6locale11__moduleRefZ@Base 15 + _D4core4stdc6locale12__ModuleInfoZ@Base 15 + _D4core4stdc6locale5lconv6__initZ@Base 15 + _D4core4stdc6signal11__moduleRefZ@Base 15 + _D4core4stdc6signal12__ModuleInfoZ@Base 15 + _D4core4stdc6stdarg11__moduleRefZ@Base 15 + _D4core4stdc6stdarg12__ModuleInfoZ@Base 15 + _D4core4stdc6stddef11__moduleRefZ@Base 15 + _D4core4stdc6stddef12__ModuleInfoZ@Base 15 + _D4core4stdc6stdint11__moduleRefZ@Base 15 + _D4core4stdc6stdint12__ModuleInfoZ@Base 15 + _D4core4stdc6stdint__T7_typifyTgZQlFNaNbNiNfgZg@Base 15 + _D4core4stdc6stdint__T7_typifyThZQlFNaNbNiNfhZh@Base 15 + _D4core4stdc6stdint__T7_typifyTiZQlFNaNbNiNfiZi@Base 15 + _D4core4stdc6stdint__T7_typifyTkZQlFNaNbNiNfkZk@Base 15 + _D4core4stdc6stdint__T7_typifyTlZQlFNaNbNiNflZl@Base 15 + _D4core4stdc6stdint__T7_typifyTmZQlFNaNbNiNfmZm@Base 15 + _D4core4stdc6stdint__T7_typifyTsZQlFNaNbNiNfsZs@Base 15 + _D4core4stdc6stdint__T7_typifyTtZQlFNaNbNiNftZt@Base 15 + _D4core4stdc6stdlib11__moduleRefZ@Base 15 + _D4core4stdc6stdlib12__ModuleInfoZ@Base 15 + _D4core4stdc6stdlib5div_t6__initZ@Base 15 + _D4core4stdc6stdlib6ldiv_t6__initZ@Base 15 + _D4core4stdc6stdlib7lldiv_t6__initZ@Base 15 + _D4core4stdc6string11__moduleRefZ@Base 15 + _D4core4stdc6string12__ModuleInfoZ@Base 15 + _D4core4stdc6tgmath11__moduleRefZ@Base 15 + _D4core4stdc6tgmath12__ModuleInfoZ@Base 15 + _D4core4stdc6wchar_11__moduleRefZ@Base 15 + _D4core4stdc6wchar_12__ModuleInfoZ@Base 15 + _D4core4stdc6wchar_8getwcharFNbNiNeZw@Base 15 + _D4core4stdc6wchar_8putwcharFNbNiNewZw@Base 15 + _D4core4stdc6wchar_9mbstate_t6__initZ@Base 15 + _D4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 + _D4core4stdc6wctype11__moduleRefZ@Base 15 + _D4core4stdc6wctype12__ModuleInfoZ@Base 15 + _D4core4stdc7assert_11__moduleRefZ@Base 15 + _D4core4stdc7assert_12__ModuleInfoZ@Base 15 + _D4core4stdc7complex11__moduleRefZ@Base 15 + _D4core4stdc7complex12__ModuleInfoZ@Base 15 + _D4core4stdc8inttypes11__moduleRefZ@Base 15 + _D4core4stdc8inttypes12__ModuleInfoZ@Base 15 + _D4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 + _D4core4stdc9stdatomic11__moduleRefZ@Base 15 + _D4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 + _D4core4stdc9stdatomic12__ModuleInfoZ@Base 15 + _D4core4sync11__moduleRefZ@Base 15 + _D4core4sync12__ModuleInfoZ@Base 15 + _D4core4sync5event11__moduleRefZ@Base 15 + _D4core4sync5event12__ModuleInfoZ@Base 15 + _D4core4sync5event5Event10initializeMFNbNibbZv@Base 15 + _D4core4sync5event5Event14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core4sync5event5Event16setIfInitializedMFNbNiZv@Base 15 + _D4core4sync5event5Event3setMFNbNiZv@Base 15 + _D4core4sync5event5Event4waitMFNbNiSQBi4time8DurationZb@Base 15 + _D4core4sync5event5Event4waitMFNbNiZb@Base 15 + _D4core4sync5event5Event5resetMFNbNiZv@Base 15 + _D4core4sync5event5Event6__ctorMFNbNcNibbZSQBpQBnQBlQBi@Base 15 + _D4core4sync5event5Event6__dtorMFNbNiZv@Base 15 + _D4core4sync5event5Event6__initZ@Base 15 + _D4core4sync5event5Event9terminateMFNbNiZv@Base 15 + _D4core4sync5mutex11__moduleRefZ@Base 15 + _D4core4sync5mutex12__ModuleInfoZ@Base 15 + _D4core4sync5mutex5Mutex10handleAddrMFNiZPSQBp3sys5posixQk5types15pthread_mutex_t@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy11__xopEqualsMxFKxSQCdQCbQBzQBwQBtZb@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy9__xtoHashFNbNeKxSQCcQCaQByQBvQBsZm@Base 15 + _D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 + _D4core4sync5mutex5Mutex4lockMOFNeZv@Base 15 + _D4core4sync5mutex5Mutex6__ctorMFNbNiNeC6ObjectZCQBvQBtQBrQBo@Base 15 + _D4core4sync5mutex5Mutex6__ctorMFNbNiNeZCQBnQBlQBjQBg@Base 15 + _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeC6ObjectZOCQBxQBvQBtQBq@Base 15 + _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeZOCQBpQBnQBlQBi@Base 15 + _D4core4sync5mutex5Mutex6__dtorMFNbNiNlNeZv@Base 15 + _D4core4sync5mutex5Mutex6__initZ@Base 15 + _D4core4sync5mutex5Mutex6__vtblZ@Base 15 + _D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 + _D4core4sync5mutex5Mutex6unlockMOFNeZv@Base 15 + _D4core4sync5mutex5Mutex7__ClassZ@Base 15 + _D4core4sync5mutex5Mutex7tryLockMFNeZb@Base 15 + _D4core4sync5mutex5Mutex7tryLockMOFNeZb@Base 15 + _D4core4sync5mutex5Mutex__T12lock_nothrowTCQBpQBnQBlQBiZQBdMFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T12lock_nothrowTOCQBqQBoQBmQBjZQBeMOFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T14unlock_nothrowTCQBrQBpQBnQBkZQBfMFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T14unlock_nothrowTOCQBsQBqQBoQBlZQBgMOFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T15tryLock_nothrowTCQBsQBqQBoQBlZQBgMFNbNiNeZb@Base 15 + _D4core4sync5mutex5Mutex__T15tryLock_nothrowTOCQBtQBrQBpQBmZQBhMOFNbNiNeZb@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNeC6ObjectbZQBi@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNebZQBa@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNeC6ObjectbZOQBk@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNebZOQBc@Base 15 + _D4core4sync6config11__moduleRefZ@Base 15 + _D4core4sync6config12__ModuleInfoZ@Base 15 + _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 + _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecZv@Base 15 + _D4core4sync6config7mvtspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 + _D4core4sync7barrier11__moduleRefZ@Base 15 + _D4core4sync7barrier12__ModuleInfoZ@Base 15 + _D4core4sync7barrier7Barrier4waitMFZv@Base 15 + _D4core4sync7barrier7Barrier6__ctorMFkZCQBmQBkQBiQBd@Base 15 + _D4core4sync7barrier7Barrier6__initZ@Base 15 + _D4core4sync7barrier7Barrier6__vtblZ@Base 15 + _D4core4sync7barrier7Barrier7__ClassZ@Base 15 + _D4core4sync7rwmutex11__moduleRefZ@Base 15 + _D4core4sync7rwmutex12__ModuleInfoZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7__ClassZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeSQCc4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeSQCd4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7__ClassZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeSQCc4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeSQCd4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__ctorMFNbNfEQBwQBuQBsQBn6PolicyZCQCrQCpQCnQCi@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__ctorMOFNbNfEQBxQBvQBtQBo6PolicyZOCQCtQCrQCpQCk@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6policyMFNbNdNfZEQBzQBxQBvQBq6Policy@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6policyMOFNbNdNfZEQCaQByQBwQBr6Policy@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6readerMFNbNdNfZCQBzQBxQBvQBq6Reader@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6readerMOFNbNdNfZOCQCbQBzQBxQBs6Reader@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6writerMFNbNdNfZCQBzQBxQBvQBq6Writer@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6writerMOFNbNdNfZOCQCbQBzQBxQBs6Writer@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex7__ClassZ@Base 15 + _D4core4sync9condition11__moduleRefZ@Base 15 + _D4core4sync9condition12__ModuleInfoZ@Base 15 + _D4core4sync9condition9Condition13mutex_nothrowMFNaNbNdNiNfZCQChQCf5mutex5Mutex@Base 15 + _D4core4sync9condition9Condition13mutex_nothrowMOFNaNbNdNiNfZOCQCjQCh5mutex5Mutex@Base 15 + _D4core4sync9condition9Condition4waitMFSQBm4time8DurationZb@Base 15 + _D4core4sync9condition9Condition4waitMFZv@Base 15 + _D4core4sync9condition9Condition4waitMOFSQBn4time8DurationZb@Base 15 + _D4core4sync9condition9Condition4waitMOFZv@Base 15 + _D4core4sync9condition9Condition5mutexMFNdZCQBqQBoQs5Mutex@Base 15 + _D4core4sync9condition9Condition5mutexMOFNdZOCQBsQBqQu5Mutex@Base 15 + _D4core4sync9condition9Condition6__ctorMFNbNiNfCQBuQBs5mutex5MutexZCQCoQCmQCkQCd@Base 15 + _D4core4sync9condition9Condition6__ctorMOFNbNiNfOCQBwQBu5mutex5MutexZOCQCrQCpQCnQCg@Base 15 + _D4core4sync9condition9Condition6__dtorMFNiNlZv@Base 15 + _D4core4sync9condition9Condition6__initZ@Base 15 + _D4core4sync9condition9Condition6__vtblZ@Base 15 + _D4core4sync9condition9Condition6notifyMFZv@Base 15 + _D4core4sync9condition9Condition6notifyMOFZv@Base 15 + _D4core4sync9condition9Condition7__ClassZ@Base 15 + _D4core4sync9condition9Condition9notifyAllMFZv@Base 15 + _D4core4sync9condition9Condition9notifyAllMOFZv@Base 15 + _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNiSQCi4time8DurationbZb@Base 15 + _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNibZv@Base 15 + _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNiSQCk4time8DurationbZb@Base 15 + _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNibZv@Base 15 + _D4core4sync9condition9Condition__T6__ctorTCQBqQBoQBmQBfTCQCeQCc5mutex5MutexZQBqMFNbNiNeQBfbZQBy@Base 15 + _D4core4sync9condition9Condition__T6__ctorTOCQBrQBpQBnQBgTOCQCgQCe5mutex5MutexZQBsMOFNbNiNeOQBhbZOQCc@Base 15 + _D4core4sync9condition9Condition__T6notifyTCQBqQBoQBmQBfZQwMFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T6notifyTOCQBrQBpQBnQBgZQxMOFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T9notifyAllTCQBtQBrQBpQBiZQzMFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T9notifyAllTOCQBuQBsQBqQBjZQBaMOFNbNibZv@Base 15 + _D4core4sync9exception11__moduleRefZ@Base 15 + _D4core4sync9exception12__ModuleInfoZ@Base 15 + _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCtQCrQCpQCi@Base 15 + _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCtQCrQCpQCi@Base 15 + _D4core4sync9exception9SyncError6__initZ@Base 15 + _D4core4sync9exception9SyncError6__vtblZ@Base 15 + _D4core4sync9exception9SyncError7__ClassZ@Base 15 + _D4core4sync9semaphore11__moduleRefZ@Base 15 + _D4core4sync9semaphore12__ModuleInfoZ@Base 15 + _D4core4sync9semaphore9Semaphore4waitMFSQBm4time8DurationZb@Base 15 + _D4core4sync9semaphore9Semaphore4waitMFZv@Base 15 + _D4core4sync9semaphore9Semaphore6__ctorMFkZCQBqQBoQBmQBf@Base 15 + _D4core4sync9semaphore9Semaphore6__dtorMFNlZv@Base 15 + _D4core4sync9semaphore9Semaphore6__initZ@Base 15 + _D4core4sync9semaphore9Semaphore6__vtblZ@Base 15 + _D4core4sync9semaphore9Semaphore6notifyMFZv@Base 15 + _D4core4sync9semaphore9Semaphore7__ClassZ@Base 15 + _D4core4sync9semaphore9Semaphore7tryWaitMFZb@Base 15 + _D4core4time11__moduleRefZ@Base 15 + _D4core4time11_posixClockFNaNbNiNfEQBhQBf9ClockTypeZi@Base 15 + _D4core4time12TickDuration10TDRvalueOfFSQBmQBkQBiZQl@Base 15 + _D4core4time12TickDuration11ticksPerSecyl@Base 15 + _D4core4time12TickDuration14currSystemTickFNbNdNiNeZSQBzQBxQBv@Base 15 + _D4core4time12TickDuration16time_initializerFZv@Base 15 + _D4core4time12TickDuration3maxFNaNbNdNiNfZSQBpQBnQBl@Base 15 + _D4core4time12TickDuration3minFNaNbNdNiNfZSQBpQBnQBl@Base 15 + _D4core4time12TickDuration4zeroFNaNbNdNiNfZSQBqQBoQBm@Base 15 + _D4core4time12TickDuration5msecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration5nsecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration5opCmpMxFNaNbNiNfSQBqQBoQBmZi@Base 15 + _D4core4time12TickDuration5usecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration6__ctorMFNaNbNcNiNflZSQBuQBsQBq@Base 15 + _D4core4time12TickDuration6__initZ@Base 15 + _D4core4time12TickDuration6hnsecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration7secondsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration8__xopCmpMxFKxSQBnQBlQBjZi@Base 15 + _D4core4time12TickDuration9appOriginySQBkQBiQBg@Base 15 + _D4core4time12__ModuleInfoZ@Base 15 + _D4core4time12nsecsToTicksFNaNbNiNflZl@Base 15 + _D4core4time12ticksToNSecsFNaNbNiNflZl@Base 15 + _D4core4time13TimeException6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCoQCmQCk@Base 15 + _D4core4time13TimeException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCoQCmQCk@Base 15 + _D4core4time13TimeException6__initZ@Base 15 + _D4core4time13TimeException6__vtblZ@Base 15 + _D4core4time13TimeException7__ClassZ@Base 15 + _D4core4time13_clockTypeIdxFEQBbQz9ClockTypeZm@Base 15 + _D4core4time13convClockFreqFNaNbNiNflllZl@Base 15 + _D4core4time14_clockTypeNameFEQBcQBa9ClockTypeZAya@Base 15 + _D4core4time15_ticksPerSecondyG8l@Base 15 + _D4core4time25unitsAreInDescendingOrderFMAAyaZb@Base 15 + _D4core4time3absFNaNbNiNfSQyQv12TickDurationZQu@Base 15 + _D4core4time3absFNaNbNiNfSQyQv8DurationZQp@Base 15 + _D4core4time4_absFNaNbNiNfdZd@Base 15 + _D4core4time4_absFNaNbNiNflZl@Base 15 + _D4core4time8Duration10isNegativeMxFNaNbNdNiNfZb@Base 15 + _D4core4time8Duration3maxFNaNbNdNiNfZSQBkQBiQBg@Base 15 + _D4core4time8Duration3minFNaNbNdNiNfZSQBkQBiQBg@Base 15 + _D4core4time8Duration4zeroFNaNbNdNiNfZSQBlQBjQBh@Base 15 + _D4core4time8Duration5opCmpMxFNaNbNiNfSQBlQBjQBhZi@Base 15 + _D4core4time8Duration6__ctorMFNaNbNcNiNflZSQBpQBnQBl@Base 15 + _D4core4time8Duration6__initZ@Base 15 + _D4core4time8Duration8__xopCmpMxFKxSQBiQBgQBeZi@Base 15 + _D4core4time8Duration8toStringMxFNaNbNfZAya@Base 15 + _D4core4time8Duration__T10opOpAssignVAyaa1_2bZQwMFNaNbNcNiNfxSQCiQCgQCeZSQCtQCrQCp@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra5_686f757273VQDia7_6d696e75746573ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573Z__TQBvTiTiZQCdMxFNaNbNiNfJiJiZv@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra7_7365636f6e6473VQDma5_6e73656373ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra7_7365636f6e6473VQDma5_7573656373ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 + _D4core4time8Duration__T5totalVAyaa5_6d73656373ZQyMxFNaNbNdNiNfZl@Base 15 + _D4core4time8Duration__T5totalVAyaa6_686e73656373ZQBaMxFNaNbNdNiNfZl@Base 15 + _D4core4time8Duration__T5totalVAyaa7_7365636f6e6473ZQBcMxFNaNbNdNiNfZl@Base 15 + _D4core4time8Duration__T8opBinaryVAyaa1_2bZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 + _D4core4time8Duration__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ10appListSepFNaNbNfQBqkbZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ5unitsyAAa@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa4_64617973ZQBcFNaNbNfQCmlZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_686f757273ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_6d73656373ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7573656373ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7765656b73ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa6_686e73656373ZQBgFNaNbNfQCqlZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_6d696e75746573ZQBiFNaNbNfQCslZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_7365636f6e6473ZQBiFNaNbNfQCslZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFNaNbNfMQBaZv@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj14ticksPerSecondFNaNbNdNiNfZl@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3maxFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3minFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj4zeroFNaNbNdNiNfZSQCrQCp__TQCnVQCci0ZQCx@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5opCmpMxFNaNbNiNfSQCrQCp__TQCnVQCci0ZQCxZi@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5ticksMxFNaNbNdNiNfZl@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8__xopCmpMxFKxSQCoQCm__TQCkVQBzi0ZQCuZi@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8currTimeFNbNdNiNeZSQCtQCr__TQCpVQCei0ZQCz@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8toStringMxFNaNbNfZAya@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj__T8opBinaryVAyaa1_2bZQtMxFNaNbNiNfSQDjQDh8DurationZSQEaQDy__TQDwVQDli0ZQEg@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQDjQDh__TQDfVQCui0ZQDpZSQEhQEf8Duration@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa4_64617973ZQBmFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_686f757273ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_6d73656373ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7573656373ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7765656b73ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa7_6d696e75746573ZQBsFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBsFNaNbNiNfKlZl@Base 15 + _D4core4time__T2toVAyaa5_6d73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa5_6e73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa5_7573656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa6_686e73656373TlTxSQBoQBm12TickDurationZQBwFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa7_7365636f6e6473TlTxSQBqQBo12TickDurationZQByFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T3durVAyaa4_64617973ZQuFNaNbNiNflZSQBvQBt8Duration@Base 15 + _D4core4time__T3durVAyaa5_686f757273ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_6d73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_6e73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_7573656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_7765656b73ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa6_686e73656373ZQyFNaNbNiNflZSQBzQBx8Duration@Base 15 + _D4core4time__T3durVAyaa7_6d696e75746573ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 + _D4core4time__T3durVAyaa7_7365636f6e6473ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 + _D4core4time__T7convertVAyaa4_64617973VQpa6_686e73656373ZQBqFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa4_64617973VQpa7_7365636f6e6473ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_686f757273VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_686f757273VQra7_7365636f6e6473ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_6d73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_6e73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_7573656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_7765656b73VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta4_64617973ZQBqFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_686f757273ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_6d73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_6e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_7573656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_7765656b73ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta6_686e73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta7_6d696e75746573ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta7_7365636f6e6473ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_6d696e75746573VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6d73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6e73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_7573656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva7_7365636f6e6473ZQByFNaNbNiNflZl@Base 15 + _D4core5bitop11__moduleRefZ@Base 15 + _D4core5bitop12__ModuleInfoZ@Base 15 + _D4core5bitop2btFNaNbNiMxPmmZi@Base 15 + _D4core5bitop3bsfFNaNbNiNfkZi@Base 15 + _D4core5bitop3bsfFNaNbNiNfmZi@Base 15 + _D4core5bitop3bsrFNaNbNiNfkZi@Base 15 + _D4core5bitop3bsrFNaNbNiNfmZi@Base 15 + _D4core5bitop6popcntFNaNbNiNfkZi@Base 15 + _D4core5bitop6popcntFNaNbNiNfmZi@Base 15 + _D4core5bitop7Split646__ctorMFNaNbNcNiNfmZSQBpQBnQBk@Base 15 + _D4core5bitop7Split646__initZ@Base 15 + _D4core5bitop7bitswapFNaNbNiNfkZk@Base 15 + _D4core5bitop7bitswapFNaNbNiNfmZm@Base 15 + _D4core5bitop8BitRange5emptyMxFNaNbNiNfZb@Base 15 + _D4core5bitop8BitRange5frontMFNaNbNiNfZm@Base 15 + _D4core5bitop8BitRange6__ctorMFNaNbNcNiPxmmZSQBrQBpQBm@Base 15 + _D4core5bitop8BitRange6__initZ@Base 15 + _D4core5bitop8BitRange8popFrontMFNaNbNiZv@Base 15 + _D4core5bitop8byteswapFNaNbNiNftZt@Base 15 + _D4core5bitop__T10softPopcntTkZQpFNaNbNiNfkZi@Base 15 + _D4core5bitop__T10softPopcntTmZQpFNaNbNiNfmZi@Base 15 + _D4core5bitop__T11softBitswapTkZQqFNaNbNiNfkZk@Base 15 + _D4core5bitop__T11softBitswapTmZQqFNaNbNiNfmZm@Base 15 + _D4core5bitop__T3rolTkZQhFNaNbNiNfxkxkZk@Base 15 + _D4core5bitop__T3rorTkZQhFNaNbNiNfxkxkZk@Base 15 + _D4core5bitop__T3rorTmZQhFNaNbNiNfxmxkZm@Base 15 + _D4core5bitop__T8softScanTkVbi0ZQqFNaNbNiNfkZi@Base 15 + _D4core5bitop__T8softScanTkVbi1ZQqFNaNbNiNfkZi@Base 15 + _D4core5bitop__T8softScanTmVbi0ZQqFNaNbNiNfmZi@Base 15 + _D4core5bitop__T8softScanTmVbi1ZQqFNaNbNiNfmZi@Base 15 + _D4core5cpuid10_hasPopcntyb@Base 15 + _D4core5cpuid10_hasRdrandyb@Base 15 + _D4core5cpuid10_hasRdseedyb@Base 15 + _D4core5cpuid10_isItaniumyb@Base 15 + _D4core5cpuid10_processoryAa@Base 15 + _D4core5cpuid10_x87onChipyb@Base 15 + _D4core5cpuid10dataCachesFNaNbNdNiNeZxG5SQBnQBl9CacheInfo@Base 15 + _D4core5cpuid11CpuFeatures11__xopEqualsMxFKxSQBrQBpQBmZb@Base 15 + _D4core5cpuid11CpuFeatures6__initZ@Base 15 + _D4core5cpuid11CpuFeatures9__xtoHashFNbNeKxSQBqQBoQBlZm@Base 15 + _D4core5cpuid11__moduleRefZ@Base 15 + _D4core5cpuid11_dataCachesyG5SQBcQBa9CacheInfo@Base 15 + _D4core5cpuid11amd3dnowExtFNaNbNdNiNeZb@Base 15 + _D4core5cpuid11cacheLevelsFNbNdNiNeZk@Base 15 + _D4core5cpuid11coresPerCPUFNaNbNdNiNeZk@Base 15 + _D4core5cpuid11cpuFeaturesSQzQw11CpuFeatures@Base 15 + _D4core5cpuid11hasLahfSahfFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12__ModuleInfoZ@Base 15 + _D4core5cpuid12_amd3dnowExtyb@Base 15 + _D4core5cpuid12_coresPerCPUyk@Base 15 + _D4core5cpuid12_hasLahfSahfyb@Base 15 + _D4core5cpuid12getCpuInfo0BFNbNiNeZv@Base 15 + _D4core5cpuid12hasCmpxchg8bFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12hasPclmulqdqFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12preferAthlonFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13_hasCmpxchg8byb@Base 15 + _D4core5cpuid13_hasPclmulqdqyb@Base 15 + _D4core5cpuid13_preferAthlonyb@Base 15 + _D4core5cpuid13hasCmpxchg16bFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13hasVpclmulqdqFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13threadsPerCPUFNaNbNdNiNeZk@Base 15 + _D4core5cpuid14_hasCmpxchg16byb@Base 15 + _D4core5cpuid14_hasVpclmulqdqyb@Base 15 + _D4core5cpuid14_threadsPerCPUyk@Base 15 + _D4core5cpuid14getCpuFeaturesFNbNiNeZPSQBlQBj11CpuFeatures@Base 15 + _D4core5cpuid14hyperThreadingFNaNbNdNiNeZb@Base 15 + _D4core5cpuid14numCacheLevelsk@Base 15 + _D4core5cpuid14preferPentium1FNaNbNdNiNeZb@Base 15 + _D4core5cpuid14preferPentium4FNaNbNdNiNeZb@Base 15 + _D4core5cpuid15_hyperThreadingyb@Base 15 + _D4core5cpuid15_preferPentium1yb@Base 15 + _D4core5cpuid15_preferPentium4yb@Base 15 + _D4core5cpuid15getAMDcacheinfoFNbNiNeZ8assocmapyAh@Base 15 + _D4core5cpuid15getAMDcacheinfoFNbNiNeZv@Base 15 + _D4core5cpuid16has3dnowPrefetchFNaNbNdNiNeZb@Base 15 + _D4core5cpuid17_has3dnowPrefetchyb@Base 15 + _D4core5cpuid17hyperThreadingBitFNbNdNiNeZb@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ3idsyG63h@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ4waysyG63h@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ5sizesyG63k@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZv@Base 15 + _D4core5cpuid18getcacheinfoCPUID4FNbNiNeZv@Base 15 + _D4core5cpuid18hasSysEnterSysExitFNaNbNdNiNeZb@Base 15 + _D4core5cpuid18max_extended_cpuidk@Base 15 + _D4core5cpuid19_hasSysEnterSysExityb@Base 15 + _D4core5cpuid20cpuid_initializationFNbNiNeZv@Base 15 + _D4core5cpuid3aesFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3avxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3fmaFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3hleFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3mmxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3rtmFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3sseFNaNbNdNiNeZb@Base 15 + _D4core5cpuid4_aesyb@Base 15 + _D4core5cpuid4_avxyb@Base 15 + _D4core5cpuid4_fmayb@Base 15 + _D4core5cpuid4_hleyb@Base 15 + _D4core5cpuid4_mmxyb@Base 15 + _D4core5cpuid4_rtmyb@Base 15 + _D4core5cpuid4_sseyb@Base 15 + _D4core5cpuid4avx2FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4sse2FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4sse3FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4vaesFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5_avx2yb@Base 15 + _D4core5cpuid5_sse2yb@Base 15 + _D4core5cpuid5_sse3yb@Base 15 + _D4core5cpuid5_vaesyb@Base 15 + _D4core5cpuid5fp16cFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5modelk@Base 15 + _D4core5cpuid5sse41FNaNbNdNiNeZb@Base 15 + _D4core5cpuid5sse42FNaNbNdNiNeZb@Base 15 + _D4core5cpuid5sse4aFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5ssse3FNaNbNdNiNeZb@Base 15 + _D4core5cpuid6_fp16cyb@Base 15 + _D4core5cpuid6_sse41yb@Base 15 + _D4core5cpuid6_sse42yb@Base 15 + _D4core5cpuid6_sse4ayb@Base 15 + _D4core5cpuid6_ssse3yb@Base 15 + _D4core5cpuid6amdMmxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid6familyk@Base 15 + _D4core5cpuid6hasShaFNaNbNdNiNeZb@Base 15 + _D4core5cpuid6vendorFNaNbNdNiNeZAya@Base 15 + _D4core5cpuid7_amdMmxyb@Base 15 + _D4core5cpuid7_hasShayb@Base 15 + _D4core5cpuid7_vendoryAa@Base 15 + _D4core5cpuid7avx512fFNaNbNdNiNeZb@Base 15 + _D4core5cpuid7hasCmovFNaNbNdNiNeZb@Base 15 + _D4core5cpuid7hasFxsrFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8_avx512fyb@Base 15 + _D4core5cpuid8_hasCmovyb@Base 15 + _D4core5cpuid8_hasFxsryb@Base 15 + _D4core5cpuid8amd3dnowFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8cpuidX86FNbNiNeZv@Base 15 + _D4core5cpuid8hasCPUIDFNbNiNeZb@Base 15 + _D4core5cpuid8hasLzcntFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8hasRdtscFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8isX86_64FNaNbNdNiNeZb@Base 15 + _D4core5cpuid8steppingk@Base 15 + _D4core5cpuid9CacheInfo6__initZ@Base 15 + _D4core5cpuid9_amd3dnowyb@Base 15 + _D4core5cpuid9_hasLzcntyb@Base 15 + _D4core5cpuid9_hasRdtscyb@Base 15 + _D4core5cpuid9_isX86_64yb@Base 15 + _D4core5cpuid9datacacheG5SQyQv9CacheInfo@Base 15 + _D4core5cpuid9hasPopcntFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9hasRdrandFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9hasRdseedFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9isItaniumFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9max_cpuidk@Base 15 + _D4core5cpuid9processorFNaNbNdNiNeZAya@Base 15 + _D4core5cpuid9x87onChipFNaNbNdNiNeZb@Base 15 + _D4core6atomic11__moduleRefZ@Base 15 + _D4core6atomic12__ModuleInfoZ@Base 15 + _D4core6atomic5pauseFNaNbNiNfZv@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TbZQBmFNaNbNiNeNkMKxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TCQCa4sync5mutex5MutexZQCgFNaNbNiNeKOxCQDlQBlQBjQBgZOCQEaQCaQByQBv@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TE3std6loggerQCl8LogLevelZQCjFNaNbNiNeNkMKOxEQBrQBqQDxQBmZQCf@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TE3std6loggerQCl8LogLevelZQCjFNaNbNiNeNkMKxEQBqQBpQDwQBlZQCe@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKOxPSQBpQBpQBjZQCc@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKxPOxSQBqQBqQBkZQCd@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TbZQBmFNaNbNiNeNkMKxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TkZQBmFNaNbNiNeNkMKOxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TkZQBmFNaNbNiNeNkMKxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC3std11concurrency9SchedulerZQCnFNaNbNiNeNkMKxCQBuQBtQBjZQCf@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC3std6loggerQCl6LoggerZQChFNaNbNiNeKOxCQBmQBlQDsQBhZOCQCbQCaQEhQBw@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC6ObjectZQBtFNaNbNiNeKOxCQyZOCQBd@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TCQCa4sync5mutex5MutexZQCgFNaNbNiNeKOxCQDlQBlQBjQBgZOCQEaQCaQByQBv@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCwFNaNbNiNeNkMKOxEQCeQCdQBtQBnZQCs@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCwFNaNbNiNeNkMKxEQCdQCcQBsQBmZQCr@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKOxPSQDuQBsQBqQBnZQCi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKxPOxSQDvQBtQBrQBoZQCj@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKOxPQBnZQBs@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKxPQBmZQBr@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKOxhZh@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKxhZh@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKOxiZi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKxiZi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKOxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKOxtZt@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKxtZt@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKObbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKbbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKOmiZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKmiZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TE3std6loggerQCm8LogLevelTQzZQCnFNaNbNiNeKOEQBqQBpQDxQBlQCdZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TE3std6loggerQCm8LogLevelTQzZQCnFNaNbNiNeKQBpQBsZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKOPQBoQBtZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKQBoQBrZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKOPQCcQChZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKQCcQCfZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TbTbZQBpFNaNbNiNeKObbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TbTbZQBpFNaNbNiNeKbbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKOmmZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKmmZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TC3std6loggerQCm6LoggerTQxZQClFNaNbNiNeKOCQBoQBnQDvQBjOQoZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateTQBmZQDbFNaNbNiNeKOEQCeQCdQBtQBnQCrZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateTQBmZQDbFNaNbNiNeKQCdQCgZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std6loggerQCm8LogLevelTxEQBaQzQDgQuZQCxFNaNbNiNeKOEQCaQBzQEhQBvxQBoZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std6loggerQCm8LogLevelTxEQBaQzQDgQuZQCxFNaNbNiNeKQBzxQBdZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKOPQChQBqZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKQCgQBoZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKOPQBmQBqZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKQBlQBoZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5ThThZQBpFNaNbNiNeKOhhZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5ThThZQBpFNaNbNiNeKhhZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TkTkZQBpFNaNbNiNeKOkkZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TkTkZQBpFNaNbNiNeKkkZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TmTmZQBpFNaNbNiNeKOmmZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TmTmZQBpFNaNbNiNeKmmZv@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTE3std11parallelism8TaskPool9PoolStateZQCpFNaNbNiNfPQBzZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOCQBu4sync5mutex5MutexZQCaFNaNbNiNfPOQBkZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOE3std11parallelism8TaskPool9PoolStateZQCqFNaNbNiNfPOQCaZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTObZQBgFNaNbNiNfPObZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOhZQBgFNaNbNiNfPOhZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOkZQBgFNaNbNiNfPOkZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOmZQBgFNaNbNiNfPOmZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOtZQBgFNaNbNiNfPOtZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTbZQBfFNaNbNiNfPbZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedThZQBfFNaNbNiNfPhZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTkZQBfFNaNbNiNfPkZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTmZQBfFNaNbNiNfPmZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTtZQBfFNaNbNiNfPtZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTOkZQBiFNaNbNiNeKOkZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTOmZQBiFNaNbNiNeKOmZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTkZQBhFNaNbNiNeKkZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTmZQBhFNaNbNiNeKmZb@Base 15 + _D4core6atomic__T3casZ__TQiTCQBb4sync5mutex5MutexTnTQyZQBmFNaNbNiNePOCQCqQBpQBnQBkOnOQqZb@Base 15 + _D4core6atomic__T3casZ__TQiTE3std11parallelism8TaskPool9PoolStateTQBmTQBqZQCfFNaNbNiNePOEQCiQChQBxQBrQCvQCyZb@Base 15 + _D4core6atomic__T3casZ__TQiTE3std11parallelism8TaskPool9PoolStateTQBmTQBqZQCfFNaNbNiNePQChQCkQCnZb@Base 15 + _D4core6atomic__T3casZ__TQiTbTbTbZQrFNaNbNiNePObbbZb@Base 15 + _D4core6atomic__T3casZ__TQiTbTbTbZQrFNaNbNiNePbbbZb@Base 15 + _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePOhhhZb@Base 15 + _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePhhhZb@Base 15 + _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePOmmmZb@Base 15 + _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePmmmZb@Base 15 + _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePOtttZb@Base 15 + _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePtttZb@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTkTkZQzFNaNbNiNfKOkkZk@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 + _D4core6int12811__moduleRefZ@Base 15 + _D4core6int12812__ModuleInfoZ@Base 15 + _D4core6int1282geFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282gtFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282leFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282ltFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282orFNaNbNiNfSQzQw4CentQkZQn@Base 15 + _D4core6int1283addFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283andFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283comFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283decFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283divFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283incFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283mulFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283negFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283rolFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283rorFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283sarFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283shlFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283shrFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283subFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283tstFNaNbNiNfSQBaQy4CentZb@Base 15 + _D4core6int1283ugeFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283ugtFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283uleFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283ultFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283xorFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1284Cent6__initZ@Base 15 + _D4core6int1284rol1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284ror1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284sar1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284shl1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284shr1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284udivFNaNbNiNfSQBbQz4CentQlZQo@Base 15 + _D4core6int1286divmodFNaNbNiNfSQBdQBb4CentQmJQpZQs@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FNaNbNiNfQBqmJmZm@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FQBimJmZ9udiv96_64FNaNbNiNfmkmZk@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZQs@Base 15 + _D4core6memory10initializeFZv@Base 15 + _D4core6memory11__moduleRefZ@Base 15 + _D4core6memory12__ModuleInfoZ@Base 15 + _D4core6memory2GC12ProfileStats6__initZ@Base 15 + _D4core6memory2GC12profileStatsFNbNiNfZSQBmQBkQBg12ProfileStats@Base 15 + _D4core6memory2GC5Stats6__initZ@Base 15 + _D4core6memory2GC5queryFNaNbNkMPvZSQBhQBf8BlkInfo_@Base 15 + _D4core6memory2GC5queryFNbNkMxPvZSQBgQBe8BlkInfo_@Base 15 + _D4core6memory2GC5statsFNbNiNfZSQBeQBcQy5Stats@Base 15 + _D4core6memory2GC6__initZ@Base 15 + _D4core6memory2GC6addrOfFNaNbNiNePNgvZQf@Base 15 + _D4core6memory2GC6addrOfFNaNbNiNePvZQd@Base 15 + _D4core6memory2GC6sizeOfFNaNbNiPvZm@Base 15 + _D4core6memory2GC6sizeOfFNbNiMxPvZm@Base 15 + _D4core6memory2GC7clrAttrFNaNbPvkZk@Base 15 + _D4core6memory2GC7clrAttrFNbMxPvkZk@Base 15 + _D4core6memory2GC7getAttrFNaNbPvZk@Base 15 + _D4core6memory2GC7getAttrFNbMxPvZk@Base 15 + _D4core6memory2GC7setAttrFNaNbPvkZk@Base 15 + _D4core6memory2GC7setAttrFNbMxPvkZk@Base 15 + _D4core6memory8BlkInfo_6__initZ@Base 15 + _D4core6memory8pageSizeym@Base 15 + _D4core6memory__T10pureMallocZQnFNaNbNiNemZPv@Base 15 + _D4core6memory__T11pureReallocZQoFNaNbNiPvmZQe@Base 15 + _D4core6memory__T8pureFreeZQkFNaNbNiPvZv@Base 15 + _D4core6stdcpp11string_view11__moduleRefZ@Base 15 + _D4core6stdcpp11string_view12__ModuleInfoZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11type_traits11__moduleRefZ@Base 15 + _D4core6stdcpp11type_traits12__ModuleInfoZ@Base 15 + _D4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 + _D4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 + _D4core6stdcpp4new_11__moduleRefZ@Base 15 + _D4core6stdcpp4new_11align_val_t6__initZ@Base 15 + _D4core6stdcpp4new_11std_nothrowySQBgQBeQBa9nothrow_t@Base 15 + _D4core6stdcpp4new_12__ModuleInfoZ@Base 15 + _D4core6stdcpp4new_9bad_alloc6__ctorMFNiZCQBoQBmQBiQBg@Base 15 + _D4core6stdcpp4new_9bad_alloc6__initZ@Base 15 + _D4core6stdcpp4new_9bad_alloc6__vtblZ@Base 15 + _D4core6stdcpp4new_9bad_alloc7__ClassZ@Base 15 + _D4core6stdcpp4new_9nothrow_t6__initZ@Base 15 + _D4core6stdcpp5array11__moduleRefZ@Base 15 + _D4core6stdcpp5array12__ModuleInfoZ@Base 15 + _D4core6stdcpp6memory11__moduleRefZ@Base 15 + _D4core6stdcpp6memory12__ModuleInfoZ@Base 15 + _D4core6stdcpp6string11__moduleRefZ@Base 15 + _D4core6stdcpp6string12__ModuleInfoZ@Base 15 + _D4core6stdcpp6vector11__moduleRefZ@Base 15 + _D4core6stdcpp6vector12__ModuleInfoZ@Base 15 + _D4core6stdcpp7utility11__moduleRefZ@Base 15 + _D4core6stdcpp7utility12__ModuleInfoZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__ctorMFNbNiZCQBwQBuQBqQBk@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__initZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid7__ClassZ@Base 15 + _D4core6stdcpp8typeinfo11__moduleRefZ@Base 15 + _D4core6stdcpp8typeinfo12__ModuleInfoZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__ctorMFNbNiZCQBtQBrQBnQBh@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__initZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast7__ClassZ@Base 15 + _D4core6stdcpp8typeinfo9type_info6__ctorMFNiPxaZCQBvQBtQBpQBj@Base 15 + _D4core6stdcpp8typeinfo9type_info6__initZ@Base 15 + _D4core6stdcpp8typeinfo9type_info6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo9type_info7__ClassZ@Base 15 + _D4core6stdcpp8xutility11__moduleRefZ@Base 15 + _D4core6stdcpp8xutility12__ModuleInfoZ@Base 15 + _D4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 + _D4core6stdcpp9allocator11__moduleRefZ@Base 15 + _D4core6stdcpp9allocator12__ModuleInfoZ@Base 15 + _D4core6stdcpp9exception11__moduleRefZ@Base 15 + _D4core6stdcpp9exception12__ModuleInfoZ@Base 15 + _D4core6stdcpp9exception13bad_exception6__ctorMFNbNiPxaZCQCdQCbQBxQBq@Base 15 + _D4core6stdcpp9exception13bad_exception6__initZ@Base 15 + _D4core6stdcpp9exception13bad_exception6__vtblZ@Base 15 + _D4core6stdcpp9exception13bad_exception7__ClassZ@Base 15 + _D4core6stdcpp9exceptionQk6__ctorMFNbNiPxaiZCQBrQBpQBlQBo@Base 15 + _D4core6stdcpp9exceptionQk6__ctorMFNbNiZCQBnQBlQBhQBk@Base 15 + _D4core6stdcpp9exceptionQk6__initZ@Base 15 + _D4core6stdcpp9exceptionQk6__vtblZ@Base 15 + _D4core6stdcpp9exceptionQk7__ClassZ@Base 15 + _D4core6thread10threadbase10ThreadBase10popContextMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase10topContextMFNbNiZPSQCfQCd7context12StackContext@Base 15 + _D4core6thread10threadbase10ThreadBase11pushContextMFNbNiPSQCfQCd7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase12isMainThreadMFNbNdNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase12registerThisFNbNiCQCeQCcQByQBpbZv@Base 15.2 + _D4core6thread10threadbase10ThreadBase13nAboutToStartm@Base 15 + _D4core6thread10threadbase10ThreadBase13pAboutToStartPCQCbQBzQBvQBm@Base 15 + _D4core6thread10threadbase10ThreadBase13tlsRTdataInitMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase15initDataStorageMFNbZv@Base 15 + _D4core6thread10threadbase10ThreadBase18destroyDataStorageMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase18destructBeforeDtorMFNbNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase21incrementAboutToStartFNbNiCQCnQClQChQByZv@Base 15 + _D4core6thread10threadbase10ThreadBase25destroyDataStorageIfAvailMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase2idMFNdNiNfZm@Base 15 + _D4core6thread10threadbase10ThreadBase3addFNbNiCQBuQBsQBoQBfbZv@Base 15 + _D4core6thread10threadbase10ThreadBase3addFNbNiPSQBvQBt7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase3runMFZv@Base 15 + _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfAyaZv@Base 15 + _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfZAya@Base 15 + _D4core6thread10threadbase10ThreadBase5slockFNbNdNiZCQBz4sync5mutex5Mutex@Base 15 + _D4core6thread10threadbase10ThreadBase5yieldFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNeDFZvmZCQCiQCgQCcQBt@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfPFZvmZCQCiQCgQCcQBt@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfmZCQCeQCcQByQBp@Base 15 + _D4core6thread10threadbase10ThreadBase6__initZ@Base 15 + _D4core6thread10threadbase10ThreadBase6__vtblZ@Base 15 + _D4core6thread10threadbase10ThreadBase6_slockG72v@Base 15 + _D4core6thread10threadbase10ThreadBase6getAllFZ6resizeFNaNbNfKACQCkQCiQCeQBvmZv@Base 15 + _D4core6thread10threadbase10ThreadBase6getAllFZACQBvQBtQBpQBg@Base 15 + _D4core6thread10threadbase10ThreadBase6removeFNbNiCQBxQBvQBrQBiZv@Base 15 + _D4core6thread10threadbase10ThreadBase6removeFNbNiPSQByQBw7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase7__ClassZ@Base 15 + _D4core6thread10threadbase10ThreadBase7getThisFNbNiNfZCQCbQBzQBvQBm@Base 15 + _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZ6resizeFNbNiKAQBemZv@Base 15 + _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZi@Base 15 + _D4core6thread10threadbase10ThreadBase7setThisFNbNiCQByQBwQBsQBjZv@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_cbegPSQBuQBs7context12StackContext@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_mainCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_tbegCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_thisCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_tlenm@Base 15 + _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfZb@Base 15 + _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfbZv@Base 15 + _D4core6thread10threadbase10ThreadBase9initLocksFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase9isRunningMFNbNdNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase9termLocksFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase9tlsGCDataMFNbNcNiZPv@Base 15 + _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn6getAllFZ6resizeFNaNbNfKACQDoQDmQDiQCzmZvZQCrFZQx@Base 15 + _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn7opApplyFMDFKCQDcQDaQCwQCnZiZ6resizeFNbNiKAQBemZvZQCzFNiZQp@Base 15 + _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDaQCwQCn@Base 15 + _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDaQCwQCn@Base 15 + _D4core6thread10threadbase11ThreadError6__initZ@Base 15 + _D4core6thread10threadbase11ThreadError6__vtblZ@Base 15 + _D4core6thread10threadbase11ThreadError7__ClassZ@Base 15 + _D4core6thread10threadbase11__moduleRefZ@Base 15 + _D4core6thread10threadbase11ll_nThreadsm@Base 15 + _D4core6thread10threadbase11ll_pThreadsPSQBnQBl5types13ll_ThreadData@Base 15 + _D4core6thread10threadbase12__ModuleInfoZ@Base 15 + _D4core6thread10threadbase12lowlevelLockFNbNdNiZCQBv4sync5mutex5Mutex@Base 15 + _D4core6thread10threadbase12suspendDepthk@Base 15 + _D4core6thread10threadbase13onThreadErrorFNbNiAyaZ5errorCQCdQCbQBx11ThreadError@Base 15 + _D4core6thread10threadbase13onThreadErrorFNbNiAyaZv@Base 15 + _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDgQDeQDaQCr@Base 15 + _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDgQDeQDaQCr@Base 15 + _D4core6thread10threadbase15ThreadException6__initZ@Base 15 + _D4core6thread10threadbase15ThreadException6__vtblZ@Base 15 + _D4core6thread10threadbase15ThreadException7__ClassZ@Base 15 + _D4core6thread10threadbase15ll_removeThreadFNbNimZv@Base 15 + _D4core6thread10threadbase15scanAllTypeImplFNbMDFNbEQByQBwQBs8ScanTypePvQcZvQgZv@Base 15 + _D4core6thread10threadbase17multiThreadedFlagb@Base 15 + _D4core6thread10threadbase17thread_findByAddrFmZCQBvQBtQBp10ThreadBase@Base 15 + _D4core6thread10threadbase18findLowLevelThreadFNbNimZb@Base 15 + _D4core6thread10threadbase19initLowlevelThreadsFNbNiZv@Base 15 + _D4core6thread10threadbase19termLowlevelThreadsFNbNiZv@Base 15 + _D4core6thread10threadbase23thread_processTLSGCDataFNbDFNbPvZQdZv@Base 15 + _D4core6thread10threadbase25_sharedStaticDtor_L971_C1FZv@Base 15.2 + _D4core6thread10threadbase7ll_lockG72v@Base 15 + _D4core6thread10threadbase__T15thread_term_tplTCQBuQBs8osthread6ThreadTG185vZQBwFNbNiKQpZv@Base 15 + _D4core6thread10threadbase__T21thread_attachThis_tplTCQCaQBy8osthread6ThreadZQBwFNbZQBf@Base 15 + _D4core6thread11__moduleRefZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup3addMFCQBtQBr8osthread6ThreadZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup6__initZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup6__vtblZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup6createMFDFZvZCQCbQBz8osthread6Thread@Base 15 + _D4core6thread11threadgroup11ThreadGroup6createMFPFZvZCQCbQBz8osthread6Thread@Base 15 + _D4core6thread11threadgroup11ThreadGroup6removeMFCQBwQBu8osthread6ThreadZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup7__ClassZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup7joinAllMFbZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup7opApplyMFMDFKCQCbQBz8osthread6ThreadZiZi@Base 15 + _D4core6thread11threadgroup11__moduleRefZ@Base 15 + _D4core6thread11threadgroup12__ModuleInfoZ@Base 15 + _D4core6thread12__ModuleInfoZ@Base 15 + _D4core6thread5fiber11__moduleRefZ@Base 15 + _D4core6thread5fiber12__ModuleInfoZ@Base 15 + _D4core6thread5fiber4base11__moduleRefZ@Base 15 + _D4core6thread5fiber4base12__ModuleInfoZ@Base 15 + _D4core6thread5fiber4base9FiberBase13yieldAndThrowFNbNiC6object9ThrowableZv@Base 15 + _D4core6thread5fiber4base9FiberBase3runMFZv@Base 15 + _D4core6thread5fiber4base9FiberBase4callMFEQBpQBnQBjQBgQBe7RethrowZC6object9Throwable@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiDFZvZv@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiPFZvZv@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase5stateMxFNaNbNdNiNfZEQCcQCaQBwQBtQBr5State@Base 15 + _D4core6thread5fiber4base9FiberBase5yieldFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase6__ctorMFNbDFZvmmZCQCaQByQBuQBrQBp@Base 15 + _D4core6thread5fiber4base9FiberBase6__ctorMFNbPFZvmmZCQCaQByQBuQBrQBp@Base 15 + _D4core6thread5fiber4base9FiberBase6__dtorMFNbNiNlZv@Base 15 + _D4core6thread5fiber4base9FiberBase6__initZ@Base 15 + _D4core6thread5fiber4base9FiberBase6__vtblZ@Base 15 + _D4core6thread5fiber4base9FiberBase7__ClassZ@Base 15 + _D4core6thread5fiber4base9FiberBase7getThisFNbNiNfZCQByQBwQBsQBpQBn@Base 15 + _D4core6thread5fiber4base9FiberBase7setThisFNbNiCQBvQBtQBpQBmQBkZv@Base 15 + _D4core6thread5fiber4base9FiberBase7sm_thisCQBqQBoQBkQBhQBf@Base 15 + _D4core6thread5fiber4base9FiberBase7sm_utxtSQBq3sys5posix8ucontext10ucontext_t@Base 15 + _D4core6thread5fiber4base9FiberBase8callImplMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase8switchInMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase9switchOutMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi0ZQBhMFNbNiZC6object9Throwable@Base 15 + _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi1ZQBhMFNiZC6object9Throwable@Base 15 + _D4core6thread5fiber5Fiber10allocStackMFNbmmZv@Base 15 + _D4core6thread5fiber5Fiber19_staticCtor_L674_C9FZv@Base 15 + _D4core6thread5fiber5Fiber6__ctorMFNbDFZvmmZCQBrQBpQBlQBi@Base 15 + _D4core6thread5fiber5Fiber6__ctorMFNbPFZvmmZCQBrQBpQBlQBi@Base 15 + _D4core6thread5fiber5Fiber6__initZ@Base 15 + _D4core6thread5fiber5Fiber6__vtblZ@Base 15 + _D4core6thread5fiber5Fiber7__ClassZ@Base 15 + _D4core6thread5fiber5Fiber7getThisFNbNiNfZCQBpQBnQBjQBg@Base 15 + _D4core6thread5fiber5Fiber9freeStackMFNbNiZv@Base 15 + _D4core6thread5fiber5Fiber9initStackMFNbNiZv@Base 15 + _D4core6thread5types11__moduleRefZ@Base 15 + _D4core6thread5types12__ModuleInfoZ@Base 15 + _D4core6thread5types13ll_ThreadData6__initZ@Base 15 + _D4core6thread5types17PTHREAD_STACK_MINym@Base 15 + _D4core6thread5types24_sharedStaticCtor_L54_C1FZv@Base 15 + _D4core6thread7context11__moduleRefZ@Base 15 + _D4core6thread7context12StackContext6__initZ@Base 15 + _D4core6thread7context12__ModuleInfoZ@Base 15 + _D4core6thread7context8Callable6__initZ@Base 15 + _D4core6thread7context8Callable6opCallMFZv@Base 15 + _D4core6thread7context8Callable8opAssignMFNaNbNiNfDFZvZv@Base 15 + _D4core6thread7context8Callable8opAssignMFNaNbNiNfPFZvZv@Base 15 + _D4core6thread8osthread11__moduleRefZ@Base 15 + _D4core6thread8osthread11getStackTopFNbNiZPv@Base 15 + _D4core6thread8osthread11swapContextFNbNiPvZQd@Base 15 + _D4core6thread8osthread12__ModuleInfoZ@Base 15 + _D4core6thread8osthread12attachThreadFNbNiCQBpQBn10threadbase10ThreadBaseZQBg@Base 15 + _D4core6thread8osthread12suspendCountSQBk3sys5posix9semaphore5sem_t@Base 15 + _D4core6thread8osthread12thread_yieldFNbNiZv@Base 15 + _D4core6thread8osthread14getStackBottomFNbNiZPv@Base 15 + _D4core6thread8osthread15adjustStackSizeFNbNimZm@Base 15 + _D4core6thread8osthread16_mainThreadStoreG185v@Base 15 + _D4core6thread8osthread17thread_entryPointUNbPvZ21thread_cleanupHandlerUNaNbNiQBhZv@Base 15 + _D4core6thread8osthread18callWithStackShellFNbMDFNbPvZvZv@Base 15 + _D4core6thread8osthread18joinLowLevelThreadFNbNimZv@Base 15 + _D4core6thread8osthread18resumeSignalNumberi@Base 15 + _D4core6thread8osthread19suspendSignalNumberi@Base 15 + _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZ20thread_lowlevelEntryUNbPvZQd@Base 15 + _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZm@Base 15 + _D4core6thread8osthread6Thread12PRIORITY_MAXFNaNbNdNiNeZxi@Base 15 + _D4core6thread8osthread6Thread12PRIORITY_MINFNaNbNdNiNeZi@Base 15 + _D4core6thread8osthread6Thread14loadPrioritiesFNbNiNeZSQCbQBzQBvQBp8Priority@Base 15 + _D4core6thread8osthread6Thread16PRIORITY_DEFAULTFNaNbNdNiNeZi@Base 15 + _D4core6thread8osthread6Thread3runMFZv@Base 15 + _D4core6thread8osthread6Thread4joinMFbZC6object9Throwable@Base 15 + _D4core6thread8osthread6Thread5cacheOSQBkQBiQBeQy8Priority@Base 15 + _D4core6thread8osthread6Thread5sleepFNbNiNeSQBq4time8DurationZv@Base 15 + _D4core6thread8osthread6Thread5startMFNbZCQBoQBmQBiQBc@Base 15 + _D4core6thread8osthread6Thread5yieldFNbNiZv@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfDFZvmZCQCaQByQBuQBo@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfPFZvmZCQCaQByQBuQBo@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfmZCQBwQBuQBqQBk@Base 15 + _D4core6thread8osthread6Thread6__dtorMFNbNiNlZv@Base 15 + _D4core6thread8osthread6Thread6__initZ@Base 15 + _D4core6thread8osthread6Thread6__vtblZ@Base 15 + _D4core6thread8osthread6Thread7__ClassZ@Base 15 + _D4core6thread8osthread6Thread7getThisFNbNiNfZCQBtQBrQBnQBh@Base 15 + _D4core6thread8osthread6Thread8Priority6__initZ@Base 15 + _D4core6thread8osthread6Thread8priorityMFNdZi@Base 15 + _D4core6thread8osthread6Thread8priorityMFNdiZv@Base 15 + _D4core6thread8osthread6Thread9isRunningMFNbNdNiZb@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d4158ZQBtFNbNiNfZi@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d494eZQBtFNbNiNfZi@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa16_5052494f524954595f44454641554c54ZQCbFNbNiNfZi@Base 15 + _D4core6thread8osthread6resumeFNbNiCQBiQBg10threadbase10ThreadBaseZv@Base 15 + _D4core6thread8osthread7suspendFNbNiCQBjQBhQBd6ThreadZb@Base 15 + _D4core6thread8osthread8toThreadFNaNbNiNeNkMCQBrQBp10threadbase10ThreadBaseZCQCxQCvQCr6Thread@Base 15 + _D4core6vararg11__moduleRefZ@Base 15 + _D4core6vararg12__ModuleInfoZ@Base 15 + _D4core7factory11__moduleRefZ@Base 15 + _D4core7factory12__ModuleInfoZ@Base 15 + _D4core7runtime11__moduleRefZ@Base 15 + _D4core7runtime12__ModuleInfoZ@Base 15 + _D4core7runtime14UnitTestResult6__initZ@Base 15 + _D4core7runtime18runModuleUnitTestsUZ19unittestSegvHandlerUiPSQCi3sys5posix6signal9siginfo_tPvZv@Base 15 + _D4core7runtime19defaultTraceHandlerFPvZC6object9Throwable9TraceInfo@Base 15 + _D4core7runtime19defaultTraceHandlerFPvZ__T8allocateTC3gcc9backtrace12LibBacktraceTiZQBqFNiiZQBo@Base 15 + _D4core7runtime23defaultTraceDeallocatorFNbC6object9Throwable9TraceInfoZv@Base 15 + _D4core7runtime25_sharedStaticCtor_L121_C1FZv@Base 15.2 + _D4core7runtime5CArgs6__initZ@Base 15 + _D4core7runtime7Runtime10initializeFZb@Base 15 + _D4core7runtime7Runtime16moduleUnitTesterFNdPFZbZv@Base 15 + _D4core7runtime7Runtime16moduleUnitTesterFNdZPFZb@Base 15 + _D4core7runtime7Runtime19sm_moduleUnitTesterPFZb@Base 15 + _D4core7runtime7Runtime22sm_extModuleUnitTesterPFZSQBxQBv14UnitTestResult@Base 15 + _D4core7runtime7Runtime24extendedModuleUnitTesterFNdPFZSQCcQCa14UnitTestResultZv@Base 15 + _D4core7runtime7Runtime24extendedModuleUnitTesterFNdZPFZSQCdQCb14UnitTestResult@Base 15 + _D4core7runtime7Runtime6__initZ@Base 15 + _D4core7runtime7Runtime9terminateFZb@Base 15 + _D4core8builtins11__ctfeWriteFNaNbNiNfMAxaZv@Base 15 + _D4core8builtins11__moduleRefZ@Base 15 + _D4core8builtins12__ModuleInfoZ@Base 15 + _D4core8demangle11__moduleRefZ@Base 15 + _D4core8demangle11demangleCXXFNaNbNeNkMAxaPUNaNbNexPaPaPmPiZQhNkMAaZQd@Base 15 + _D4core8demangle12__ModuleInfoZ@Base 15 + _D4core8demangle12demangleTypeFNaNbNfAxaAaZQd@Base 15 + _D4core8demangle14__cxa_demangleOPUNaNbNexPaPaPmPiZQh@Base 15 + _D4core8demangle15getCXXDemanglerFNbNeZ1_UNaNbNiNexPaPaPmPiZQh@Base 15 + _D4core8demangle15getCXXDemanglerFNbNeZPUNaNbNexPaPaPmPiZQh@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks10parseLNameMFNaNbNlNeJAyaMKSQDkQDi__T8DemangleTSQEeQEcQDwFNaNbNfNkMQDiZQDiZQBmZb@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11__xopEqualsMxFKxSQDaQCyQCsFNaNbNfNkMQCeZQCeZb@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13encodeBackrefMFNaNbNlNfmZv@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13flushPositionMFNaNbNlNfKSQDiQDg__T8DemangleTSQEcQEaQDuFNaNbNfNkMQDgZQDgZQBmZv@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks16positionInResultMFNaNbNiNlNfmZm@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9__xtoHashFNbNeKxSQCzQCxQCrFNaNbNfNkMQCdZQCdZm@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9parseTypeMFNaNbNjNlNfJbKSQDhQDf__T8DemangleTSQEbQDzQDtFNaNbNfNkMQDfZQDfZQBmAaZQd@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZAa@Base 15 + _D4core8demangle15toStringConsumeFNaNbNiNfyASQBrQBp16ManglingFlagInfoKtZAya@Base 15 + _D4core8demangle16ManglingFlagInfo11__xopEqualsMxFKxSQBzQBxQBrZb@Base 15 + _D4core8demangle16ManglingFlagInfo6__initZ@Base 15 + _D4core8demangle16ManglingFlagInfo9__xtoHashFNbNeKxSQByQBwQBqZm@Base 15 + _D4core8demangle6Buffer11__xopEqualsMxFKxSQBoQBmQBgZb@Base 15 + _D4core8demangle6Buffer12bslice_emptyFNaNbNiNlNfZSQBwQBu8BufSlice@Base 15 + _D4core8demangle6Buffer18checkAndStretchBufMFNaNbNlNfmZv@Base 15 + _D4core8demangle6Buffer5shiftMFNaNbNjNlNfMxSQBqQBo8BufSliceZSQChQCfQr@Base 15 + _D4core8demangle6Buffer6__initZ@Base 15 + _D4core8demangle6Buffer6appendMFNaNbNlNfMAxaZv@Base 15 + _D4core8demangle6Buffer6bsliceMFNaNbNiNlNfmmZSQBsQBq8BufSlice@Base 15 + _D4core8demangle6Buffer6lengthMxFNaNbNiNlNfZm@Base 15 + _D4core8demangle6Buffer6removeMFNaNbNlNfMSQBoQBm8BufSliceZv@Base 15 + _D4core8demangle6Buffer7opSliceMFNaNbNiNjNlNfmmZSQBvQBt8BufSlice@Base 15 + _D4core8demangle6Buffer8containsFNaNbNfMAxaMxSQBsQBq8BufSliceZb@Base 15 + _D4core8demangle6Buffer9__xtoHashFNbNeKxSQBnQBlQBfZm@Base 15 + _D4core8demangle6Buffer9copyInputMFNaNbNjNlNfMAxaZAa@Base 15 + _D4core8demangle7NoHooks6__initZ@Base 15 + _D4core8demangle8BufSlice11__invariantMxFNaNbNfZv@Base 15 + _D4core8demangle8BufSlice11__xopEqualsMxFKxSQBqQBoQBiZb@Base 15 + _D4core8demangle8BufSlice12__invariant0MxFNaNbNfZv@Base 15 + _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAaZSQBzQBxQBr@Base 15 + _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAammbZSQCcQCaQBu@Base 15 + _D4core8demangle8BufSlice6__initZ@Base 15 + _D4core8demangle8BufSlice6lengthMxFNaNbNlNfZm@Base 15 + _D4core8demangle8BufSlice8getSliceMNgFNaNbNiNlNfZANga@Base 15 + _D4core8demangle8BufSlice9__xtoHashFNbNeKxSQBpQBnQBhZm@Base 15 + _D4core8demangle9funcAttrsyASQBbQz16ManglingFlagInfo@Base 15 + _D4core8demangle9typeCtorsyASQBbQz16ManglingFlagInfo@Base 15 + _D4core8demangleQjFNaNbNfNkMAxaNkMAaPUNaNbNexPaPaPmPiZQhZQx@Base 15 + _D4core8demangle__T10mangleFuncHTPFMDFyPS6object10ModuleInfoZiZiTQBfZQByFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbMDFNbPvZvZvTQpZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiAyaMDFNbNiQkZQnbZQrTQzZQBrFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiAyakQeQgmZvTQrZQBjFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZQBkTQBtZQCmFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZvTQBrZQCkFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiPvZQdTQlZQBdFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiPvZvTQkZQBcFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZPvTQjZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZmTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZvTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbPvMDFNbQhQjZvZvTQtZQBlFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEgQEe__TQDyTQDuZQEgFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEfQEd__TQDxTQDtZQEfFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDpQDn__TQDhTQDdZQDpFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDoQDm__TQDgTQDcZQDoFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEaQDy__TQDsTQDoZQEaFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDzQDx__TQDrTQDnZQDzFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDrQDp__TQDjTQDfZQDrFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDqQDo__TQDiTQDeZQDqFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEuQEs__TQEmTQEiZQEuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEtQEr__TQElTQEhZQEtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEsQEq__TQEkTQEgZQEsFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQErQEp__TQEjTQEfZQErFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDlQDj__TQDdTQCzZQDlFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDuQDs__TQDmTQDiZQDuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDtQDr__TQDlTQDhZQDtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10isHexDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseLNameMFNaNbNlNfJAyaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbMSQEfQEd8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11__xopEqualsMxFKxSQDyQDw__TQDqTQDkZQDyZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11peekBackrefMFNaNbNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11sliceNumberMFNaNbNiNjNlNfZQBy@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbMQBzZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleNameMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleTypeMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseFuncAttrMFNaNbNiNfJbZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseModifierMFNaNbNiNfZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl15parseSymbolNameMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16isCallConventionFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseIntegerValueMFNaNbNlNfJbMSQEmQEk8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTypeFunctionMFNaNbNjNlNfJbEQEnQEl__TQEfTQDzZQEn10IsDelegateZSQFvQFt8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseCallConventionMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseMangledNameArgMFNaNbNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQEvQEt8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3eatMFNaNbNiNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3padMFNaNbNfQBiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMQBnZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMSQDxQDv8BufSliceZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4peekMFNaNbNiNfmZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4testMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5emptyMFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5frontMFNaNbNdNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfQBmZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5shiftMFNaNbNjNlNfMxSQEaQDy8BufSliceZSQErQEpQr@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsEQEfQEd__TQDxTQDrZQEf7AddTypeNkMAaZSQFoQFm__TQFgTQFaZQFo@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsNkMAaZSQElQEj__TQEdTQDxZQEl@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isAlphaFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putAsHexMFNaNbNfmiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putCommaMFNaNbNfmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9__xtoHashFNbNeKxSQDxQDv__TQDpTQDjZQDxZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9ascii2hexFNaNbNiNfJbaZh@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseRealMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZSQEfQEd8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleSQDvQDt__TQDnTQDhZQDv16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleS_DQDxQDv__TQDpTQDjZQDx9parseTypeMFNaNbNjNlNfJbZSQFrQFp8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10isHexDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseLNameMFNaNbNlNfJAyaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbMSQCuQCs8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11__xopEqualsMxFKxSQCnQCl__TQCfTQBzZQCnZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11peekBackrefMFNaNbNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11sliceNumberMFNaNbNiNjNlNfZAxa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbMAxaZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleNameMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleTypeMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseFuncAttrMFNaNbNiNfJbZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseModifierMFNaNbNiNfZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa15parseSymbolNameMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16isCallConventionFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseIntegerValueMFNaNbNlNfJbMSQDbQCz8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTypeFunctionMFNaNbNjNlNfJbEQDcQDa__TQCuTQCoZQDc10IsDelegateZSQEkQEi8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseCallConventionMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseMangledNameArgMFNaNbNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQDkQDi8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3eatMFNaNbNiNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3padMFNaNbNfAxaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMAxaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMSQCmQCk8BufSliceZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4peekMFNaNbNiNfmZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4testMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5emptyMFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5frontMFNaNbNdNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfAxaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5shiftMFNaNbNjNlNfMxSQCpQCn8BufSliceZSQDgQDeQr@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaEQCuQCs__TQCmTQCgZQCu7AddTypeNkMAaZSQEdQEb__TQDvTQDpZQEd@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaNkMAaZSQDaQCy__TQCsTQCmZQDa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isAlphaFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putAsHexMFNaNbNfmiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putCommaMFNaNbNfmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9__xtoHashFNbNeKxSQCmQCk__TQCeTQByZQCmZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9ascii2hexFNaNbNiNfJbaZh@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseRealMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZSQCuQCs8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleSQCkQCi__TQCcTQBwZQCk16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleS_DQCmQCk__TQCeTQByZQCm9parseTypeMFNaNbNjNlNfJbZSQEgQEe8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 + _D4core8internal10attributes11__moduleRefZ@Base 15 + _D4core8internal10attributes12__ModuleInfoZ@Base 15 + _D4core8internal10entrypoint11__moduleRefZ@Base 15 + _D4core8internal10entrypoint12__ModuleInfoZ@Base 15 + _D4core8internal11destruction11__moduleRefZ@Base 15 + _D4core8internal11destruction12__ModuleInfoZ@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3gcc8sections3elf9ThreadDSOZQBvFNaNbNiNfKQBqZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std11concurrency7MessageZQBtFNfKQBiZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQKaFNaNbNiKQJtZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3net4curl3FTP4ImplZQBqFKQBdZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3net4curl4HTTP4ImplZQBrFKQBeZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3net4curl4SMTP4ImplZQBrFKQBeZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCrFNaNbNiNfKQCmZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCsFNaNbNiNfKQCnZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCsFNaNbNiNfKQCnZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDsFNaNbNiNfKQDnZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std4file15DirIteratorImplZQBuFNfKQBjZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std5range__T10OnlyResultTaZQpZQByFNaNbNiNfKQBtZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBbZQClFNaNbNiNfKQCgZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std5stdio4FileZQBjFNfKQyZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface4RootZQBsFNaNbNiNfKQBnZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface5RangeZQBtFNaNbNiNfKQBoZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDnFNaNbNiNfKQDiZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 + _D4core8internal12parseoptions10parseErrorFNbNiMxAaMxQeMxQiAxaZb@Base 15 + _D4core8internal12parseoptions11__moduleRefZ@Base 15 + _D4core8internal12parseoptions12__ModuleInfoZ@Base 15 + _D4core8internal12parseoptions15overflowedErrorFNbNiMxAaMxQeZb@Base 15 + _D4core8internal12parseoptions3minFNbNimmZm@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKQfQlZb@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKbQkZb@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKfQkZb@Base 15 + _D4core8internal12parseoptions6MemVal6__initZ@Base 15 + _D4core8internal12parseoptions8optErrorFNbNiMxAaMxQeAxaZb@Base 15 + _D4core8internal12parseoptions__T12parseOptionsTSQBv2gc6config6ConfigZQBlFNbNiKQBfAyaZb@Base 15 + _D4core8internal12parseoptions__T14rt_parseOptionTbZQtFNbNiAxaKANgaKbQkZb@Base 15 + _D4core8internal12parseoptions__T17initConfigOptionsTSQCa2gc6config6ConfigZQBqFNbNiKQBfAyaZb@Base 15 + _D4core8internal12parseoptions__T4skipX7isspaceZQpFNaNbNiNfANgaZQf@Base 15 + _D4core8internal12parseoptions__T5parseHThZQkFNbNiAxaKANgaKhQkbZb@Base 15 + _D4core8internal12parseoptions__T5parseHTkZQkFNbNiAxaKANgaKkQkbZb@Base 15 + _D4core8internal12parseoptions__T5parseHTmZQkFNbNiAxaKANgaKmQkbZb@Base 15 + _D4core8internal2gc2os10isLowOnMemFNbNimZb@Base 15 + _D4core8internal2gc2os10os_mem_mapFNbNimbZPv@Base 15 + _D4core8internal2gc2os11__moduleRefZ@Base 15 + _D4core8internal2gc2os12__ModuleInfoZ@Base 15 + _D4core8internal2gc2os12os_mem_unmapFNbNiPvmZi@Base 15 + _D4core8internal2gc2os15os_physical_memFNbNibZm@Base 15 + _D4core8internal2gc2os8wait_pidFNbNiibZEQBmQBkQBeQBe11ChildStatus@Base 15 + _D4core8internal2gc4bits11__moduleRefZ@Base 15 + _D4core8internal2gc4bits12__ModuleInfoZ@Base 15 + _D4core8internal2gc4bits6GCBits10clearWordsMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits10copyRangeZMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits16copyWordsShiftedMFNbNimmmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits18copyRangeRepeatingMFNbNimmPxmmZv@Base 15 + _D4core8internal2gc4bits6GCBits3setMFNaNbNiNlNemZi@Base 15 + _D4core8internal2gc4bits6GCBits4DtorMFNbNibZv@Base 15 + _D4core8internal2gc4bits6GCBits4copyMFNbNiPSQBqQBoQBiQBiQBgZv@Base 15 + _D4core8internal2gc4bits6GCBits4testMxFNaNbNiNlNemZm@Base 15 + _D4core8internal2gc4bits6GCBits4zeroMFNbNiZv@Base 15 + _D4core8internal2gc4bits6GCBits5allocMFNbNimbZv@Base 15 + _D4core8internal2gc4bits6GCBits5clearMFNaNbNiNlNemZi@Base 15 + _D4core8internal2gc4bits6GCBits6__initZ@Base 15 + _D4core8internal2gc4bits6GCBits6nwordsMxFNaNbNdNiZm@Base 15 + _D4core8internal2gc4bits6GCBits6setAllMFNbNiZv@Base 15 + _D4core8internal2gc4bits6GCBits8clrRangeMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits8setRangeMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits8setWordsMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits9clrRangeZMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits9copyRangeMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits9copyWordsMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits9setLockedMFNaNbNiNlNemZm@Base 15 + _D4core8internal2gc4bits6GCBits9setRangeZMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw10baseOffsetFNbNimEQCfQCdQBxQBxQBvQCg4BinsZm@Base 15 + _D4core8internal2gc4impl12conservativeQw10extendTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw10initializeFZCQCbQBq11gcinterface2GC@Base 15 + _D4core8internal2gc4impl12conservativeQw10invalidateFNbNiAvhbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw10mallocTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw10numExtendsl@Base 15 + _D4core8internal2gc4impl12conservativeQw10numMallocsl@Base 15 + _D4core8internal2gc4impl12conservativeQw11__moduleRefZ@Base 15 + _D4core8internal2gc4impl12conservativeQw11adjustAttrsFNbKkxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw11calcBinBaseFZG15G256s@Base 15 + _D4core8internal2gc4impl12conservativeQw11numReallocsl@Base 15 + _D4core8internal2gc4impl12conservativeQw11reallocTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10initializeFNbPSQCrQCpQCjQCjQChQCs3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_mallocFNbPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_parentFNbPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector11log_collectFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector8log_freeFNbNiPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl12conservativeQw12maxPauseTimeSQCb4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw12sentinel_addFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw12sentinel_subFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw13maxPoolMemorym@Base 15 + _D4core8internal2gc4impl12conservativeQw13sentinel_initFNbNiPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw13sentinel_sizeFNbNixPvmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw13setupMetadataFNbAvkmmxC8TypeInfoZQr@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC10freeNoSyncMFNbNiPvZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11checkNoSyncMFNbPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZ2goFNbPSQDcQDaQCuQCuQCsQDd3GcxZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11queryNoSyncMFNbPvZSQCx6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12_inFinalizerb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12addrOfNoSyncMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12extendNoSyncMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12mallocNoSyncMFNbmkKmxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12sizeOfNoSyncMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQt@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reserveNoSyncMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZ2goFNbPSQDiQDgQDaQDaQCyQDj3GcxMxQBjZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC14getStatsNoSyncMFNbNiNeJSQDc6memory2GC5StatsZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4filePa@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4linem@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5checkMFNbPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__ctorMFZCQCnQClQCfQCfQCdQCoQBt@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__dtorMFNlZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__vtblZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZ2goFNaNbNiNfPSQDaQCyQCsQCsQCqQDb3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6gcLockOSQClQCj8spinlock15AlignedSpinLock@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6lockNRFNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7__ClassZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZ2goFNaNbNiNfPSQDbQCzQCtQCtQCrQDc3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZ2goFNbPSQCzQCxQCrQCrQCpQDa3GcxQBhZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZ2goFNbPSQCyQCwQCqQCqQCoQCz3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC9isPreciseb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy10freeNoSyncMFNbNiPvZbS_DQEmQEkQEeQEeQEcQEn8freeTimelS_DQFrQFpQFjQFjQFhQFs8numFreeslTQCpZQEtMFNbNiKQDdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11checkNoSyncMFNbPvZvS_DQElQEjQEdQEdQEbQEm9otherTimelS_DQFrQFpQFjQFjQFhQFs9numOtherslTQCrZQEuMFNbKQDdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11fullCollectMFNbZ2goFNbPSQEnQElQEfQEfQEdQEo3GcxZmTQBbZQDlMFNbKQBnZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11queryNoSyncMFNbPvZSQEi6memory8BlkInfo_S_DQFeQFcQEwQEwQEuQFf9otherTimelS_DQGkQGiQGcQGcQGaQGl9numOtherslTQDkZQFnMFNbKQDwZQDx@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12addrOfNoSyncMFNbNiPvZQdS_DQEpQEnQEhQEhQEfQEq9otherTimelS_DQFvQFtQFnQFnQFlQFw9numOtherslTQCsZQEyMFNbNiKQDgZQDk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12extendNoSyncMFNbPvmmxC8TypeInfoZmS_DQEzQExQErQErQEpQFa10extendTimelS_DQGhQGfQFzQFzQFxQGi10numExtendslTQDiTmTmTxQDmZQFvMFNbKQEdKmKmKxQEhZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTmTkTmTxQDlZQFuMFNbKmKkKmKxQEeZQDx@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTymTkTmTxQDmZQFvMFNbKymKkKmKxQEgZQDz@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12sizeOfNoSyncMFNbNiPvZmS_DQEoQEmQEgQEgQEeQEp9otherTimelS_DQFuQFsQFmQFmQFkQFv9numOtherslTQCrZQExMFNbNiKQDfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQtS_DQFeQFcQEwQEwQEuQFf10mallocTimelS_DQGmQGkQGeQGeQGcQGn10numMallocslTQDmTmTkTmTxQDpZQGcMFNbKQEjKmKkKmKxQEmZQEy@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reserveNoSyncMFNbmZmS_DQEmQEkQEeQEeQEcQEn9otherTimelS_DQFsQFqQFkQFkQFiQFt9numOtherslTmZQEtMFNbKmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13runFinalizersMFNbMxAvZ2goFNbPSQEtQErQElQElQEjQEu3GcxMxQBjZvS_DQFzQFxQFrQFrQFpQGa9otherTimelS_DQHfQHdQGxQGxQGvQHg9numOtherslTQDsTxQEgZQGnMFNbKQEjKxQExZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy14getStatsNoSyncMFNbNiNeJSQEn6memory2GC5StatsZvS_DQFlQFjQFdQFdQFbQFm9otherTimelS_DQGrQGpQGjQGjQGhQGs9numOtherslTQDjZQFuMFNbNiNfKQDzZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy6enableMFZ2goFNaNbNiNfPSQElQEjQEdQEdQEbQEm3GcxZvS_DQFmQFkQFeQFeQFcQFn9otherTimelS_DQGsQGqQGkQGkQGiQGt9numOtherslTQDnZQFvMFNbNiNfKQEdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7clrAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7disableMFZ2goFNaNbNiNfPSQEmQEkQEeQEeQEcQEn3GcxZvS_DQFnQFlQFfQFfQFdQFo9otherTimelS_DQGtQGrQGlQGlQGjQGu9numOtherslTQDnZQFwMFNbNiNfKQEdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7getAttrMFNbPvZ2goFNbPSQEkQEiQEcQEcQEaQEl3GcxQBhZkS_DQFoQFmQFgQFgQFeQFp9otherTimelS_DQGuQGsQGmQGmQGkQGv9numOtherslTQDqTQEdZQGbMFNbKQEgKQEtZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7setAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy8minimizeMFNbZ2goFNbPSQEjQEhQEbQEbQDzQEk3GcxZvS_DQFkQFiQFcQFcQFaQFl9otherTimelS_DQGqQGoQGiQGiQGgQGr9numOtherslTQDnZQFtMFNbKQDzZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14SENTINEL_EXTRAxk@Base 15 + _D4core8internal2gc4impl12conservativeQw14baseOffsetBitsyG14G4m@Base 15 + _D4core8internal2gc4impl12conservativeQw14bytesAllocatedm@Base 15 + _D4core8internal2gc4impl12conservativeQw14numCollectionsm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool10allocPagesMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool18setFreePageOffsetsMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getSizeMxFNbNimZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool8getPagesMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool9freePagesMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi0Vbi1ZQBfMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi1Vbi1ZQBfMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getSizeMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool9allocPageMFNbEQCsQCqQCkQCkQCiQCt4BinsZPSQDsQDqQDkQDkQDiQDt4List@Base 15 + _D4core8internal2gc4impl12conservativeQw15gc_precise_ctorFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw17maxCollectionTimeSQCg4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw18initialize_preciseFZCQCjQBy11gcinterface2GC@Base 15 + _D4core8internal2gc4impl12conservativeQw18sentinel_InvariantFNbNixPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw20gc_conservative_ctorFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZ23atforkHandlersInstalledb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10rootsApplyMFNbMDFNbKSQCnQCc11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10smallAllocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11__xopEqualsMxFKxSQCjQChQCbQCbQBzQCkQBpZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11collectForkMFNbbZEQCkQCiQCc2os11ChildStatus@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11disableForkMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11fullcollectMFNbbbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11rangesApplyMFNbMDFNbKSQCoQCd11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11recoverPageMFNbPSQCjQChQCbQCbQBzQCk15SmallObjectPoolmEQDuQDsQDmQDmQDkQDv4BinsZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx12collectRootsMFNbNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx12markParallelMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx14scanBackgroundMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15collectAllRootsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15fork_needs_lockb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15recoverNextPageMFNbEQCmQCkQCeQCeQCcQCn4BinsZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15stopScanThreadsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx16startScanThreadsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17clearBlkCacheDataMFNbNlPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17collectInProgressMxFNbNdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17pullFromScanStackMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx18maxParallelThreadsMFNbZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx18setNextRecoverPoolMFNbEQCpQCnQChQChQCfQCq4BinsmZPSQDqQDoQDiQDiQDgQDr15SmallObjectPool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx19_d_gcx_atfork_childUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx20_d_gcx_atfork_parentUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx21_d_gcx_atfork_prepareUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ11smoothDecayFNaNbNiNfffZf@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ3maxFNaNbNiNfffZf@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx4DtorMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx5allocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx5sweepMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx6lowMemMxFNbNdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7getInfoMFNbPvZSQCg6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7newPoolMFNbmbZPSQChQCfQBzQBzQBxQCi4Pool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7prepareMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8addRangeMFNbNiPvQcxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8bigAllocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8binTableyG2049EQCgQCeQByQByQBwQCh4Bins@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8ctfeBinsFNbZG2049EQCjQChQCbQCbQBzQCk4Bins@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findBaseMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findPoolMFNaNbNiPvZPSQCmQCkQCeQCeQCcQCn4Pool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findSizeMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8instancePSQCbQBzQBtQBtQBrQCcQBh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8isMarkedMFNbNlPvZEQCjQChQCb8blkcache8IsMarked@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZ13wrap_delegateUPvZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZEQChQCfQBz2os11ChildStatus@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9InvariantMxFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9__xtoHashFNbNeKxSQCiQCgQCaQCaQByQCjQBoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9allocPageMFNbEQCfQCdQBxQBxQBvQCg4BinsZPSQDfQDdQCxQCxQCvQDg4List@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr3popMFNaNbNiZQs@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4pushMFNbNiQqZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr7opIndexMNgFNaNbNcNimZNgPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr8opAssignMFNaNbNcNiNjNeSQDkQDiQDcQDcQDaQDlQCq__TQCpTQCfZQCxZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr9popLockedMFNbNiKQwZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf3popMFNaNbNiZQCh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4pushMFNbNiQCfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi0ZQDa@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf3popMFNaNbNiZQCh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4pushMFNbNiQCfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi1ZQDa@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi0ZQsMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi1ZQsMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi0ZQxMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi1ZQxMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi0ZQBcMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi1ZQBcMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi0ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi1ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi0ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi1ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3setFNaNbNiKG4mmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool10initializeMFNbmbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool12freePageBitsMFNbmMKxG4mZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool15freeAllPageBitsMFNbmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool16setPointerBitmapMFNbPvmmxC8TypeInfokZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool21setPointerBitmapSmallMFNbPvmmkxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool4DtorMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool6isFreeMxFNaNbNdNiNlNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7clrBitsMFNbNimkZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7getBitsMFNbmZk@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7setBitsMFNbmkZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool8findBaseMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool8numPagesFNbNimZm@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9InvariantMxFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9pagenumOfMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9slGetInfoMFNbPvZSQCj6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9slGetSizeMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw7binbaseyG15G256s@Base 15 + _D4core8internal2gc4impl12conservativeQw7binsizeyG15s@Base 15 + _D4core8internal2gc4impl12conservativeQw8freeTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw8lockTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw8markTimeSQBw4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw8numFreesl@Base 15 + _D4core8internal2gc4impl12conservativeQw8prepTimeSQBw4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw9numOthersl@Base 15 + _D4core8internal2gc4impl12conservativeQw9otherTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw9pauseTimeSQBx4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw9sweepTimeSQBx4time8Duration@Base 15 + _D4core8internal2gc4impl5protoQo11__moduleRefZ@Base 15 + _D4core8internal2gc4impl5protoQo12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC10rootsApplyMFMDFNbKSQChQBw11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11__fieldDtorMFNbNiNlZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11rangesApplyMFMDFNbKSQCiQBx11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC22transferRangesAndRootsMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC4DtorMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__ctorMFZCQBxQBvQBpQBpQBnQByQBl@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__initZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__vtblZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7__ClassZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl6manualQp10initializeFZCQBuQBj11gcinterface2GC@Base 15 + _D4core8internal2gc4impl6manualQp11__moduleRefZ@Base 15 + _D4core8internal2gc4impl6manualQp12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl6manualQp14gc_manual_ctorFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10__aggrDtorMFNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10rootsApplyMFMDFNbKSQCjQBy11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11__fieldDtorMFNbNiNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11rangesApplyMFMDFNbKSQCkQBz11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__ctorMFZCQBzQBxQBrQBrQBpQCaQBm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__dtorMFNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__initZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__vtblZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7__ClassZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc5proxy11__moduleRefZ@Base 15 + _D4core8internal2gc5proxy12__ModuleInfoZ@Base 15 + _D4core8internal2gc5proxy12instanceLockOSQBnQBl8spinlock8SpinLock@Base 15 + _D4core8internal2gc5proxy14isInstanceInitb@Base 15 + _D4core8internal2gc5proxy8instanceFNbNiNeZCQBpQBe11gcinterface2GC@Base 15 + _D4core8internal2gc5proxy9_instanceCQBiQx11gcinterface2GC@Base 15 + _D4core8internal2gc5proxy9proxiedGCCQBiQx11gcinterface2GC@Base 15 + _D4core8internal2gc8blkcache10__blkcacheFNbNdNiZPSQBw6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache11__moduleRefZ@Base 15 + _D4core8internal2gc8blkcache12__ModuleInfoZ@Base 15 + _D4core8internal2gc8blkcache12__getBlkInfoFNbNiPvZPSQBy6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache12__nextBlkIdxi@Base 15 + _D4core8internal2gc8blkcache14processGCMarksFNbPvMDFNbQhZEQCeQCcQBwQBw8IsMarkedZv@Base 15 + _D4core8internal2gc8blkcache18__blkcache_storagePSQBw6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache19_staticDtor_L66_C13FZv@Base 15.2 + _D4core8internal2gc8blkcache20__insertBlkInfoCacheFNbNiSQCc6memory8BlkInfo_PQvZv@Base 15 + _D4core8internal2gc9blockmeta10__allocPadFNaNbNemkZm@Base 15 + _D4core8internal2gc9blockmeta10__arrayPadFNaNbNemxC8TypeInfoZm@Base 15 + _D4core8internal2gc9blockmeta11__moduleRefZ@Base 15 + _D4core8internal2gc9blockmeta12__ModuleInfoZ@Base 15 + _D4core8internal2gc9blockmeta13__trimExtentsFNaNbNiMKPvKmkZv@Base 15.2 + _D4core8internal2gc9blockmeta18__arrayAllocLengthFNaNbKSQCc6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta18structTypeInfoSizeFNaNbNixC8TypeInfoZm@Base 15 + _D4core8internal2gc9blockmeta20__arrayAllocCapacityFNaNbKSQCe6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta21__setArrayAllocLengthFNaNbKSQCf6memory8BlkInfo_mbxC8TypeInfomZb@Base 15 + _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_ZxC8TypeInfo@Base 15 + _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbPvmkZxC8TypeInfo@Base 15.2 + _D4core8internal2gc9blockmeta23__setBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_xC8TypeInfoZv@Base 15 + _D4core8internal2gc9blockmeta24__arrayAllocLengthAtomicFNaNbKSQCi6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta25__setArrayAllocLengthImplFNaNbKSQCj6memory8BlkInfo_mbmmZb@Base 15 + _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMPvmZQe@Base 15.2 + _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMSQCg6memory8BlkInfo_ZPv@Base 15 + _D4core8internal2gc9pooltable11__moduleRefZ@Base 15 + _D4core8internal2gc9pooltable12__ModuleInfoZ@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx4DtorMFNbNiZv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6insertMFNbNiPQCdZb@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6lengthMxFNaNbNdNiNlNfZm@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7maxAddrMxFNaNbNdNiNfZPxv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7minAddrMxFNaNbNdNiNfZPxv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opIndexMNgFNaNbNcNiNjNemZNgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNeZANgPSQEgQEeQDyQCqQCoQEhQCd@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNemmZANgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8findPoolMFNaNbNiPvZPQCk@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZ4swapFNaNbNiNfKPQCxKQfZv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZAPQCj@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx9InvariantMxFNaNbNiZv@Base 15 + _D4core8internal3utf10UTF8strideyAi@Base 15 + _D4core8internal3utf10toUCSindexFNaNbNiNfMxAwmZm@Base 15 + _D4core8internal3utf10toUCSindexFNaNfMxAamZm@Base 15 + _D4core8internal3utf10toUCSindexFNaNfMxAumZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNbNiNfMxAumZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNbNiNfMxAwmZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNfMxAamZm@Base 15 + _D4core8internal3utf11__moduleRefZ@Base 15 + _D4core8internal3utf12__ModuleInfoZ@Base 15 + _D4core8internal3utf12isValidDcharFNaNbNiNfwZb@Base 15 + _D4core8internal3utf6decodeFNaNfMxAaKmZw@Base 15 + _D4core8internal3utf6decodeFNaNfMxAuKmZw@Base 15 + _D4core8internal3utf6decodeFNaNfMxAwKmZw@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAawZv@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAuwZv@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAwwZv@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAamZk@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAumZk@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAwmZk@Base 15 + _D4core8internal3utf6toUTF8FNaNbNfNkMAyaZQe@Base 15 + _D4core8internal3utf6toUTF8FNaNbNiNfNkMAawZQe@Base 15 + _D4core8internal3utf6toUTF8FNaNeMxAuZAya@Base 15 + _D4core8internal3utf6toUTF8FNaNeMxAwZAya@Base 15 + _D4core8internal3utf7toUTF16FNaNbNeMxAwZAyu@Base 15 + _D4core8internal3utf7toUTF16FNaNbNfNkMAyuZQe@Base 15 + _D4core8internal3utf7toUTF16FNaNbNiNfNkMAuwZQe@Base 15 + _D4core8internal3utf7toUTF16FNaNeMxAaZAyu@Base 15 + _D4core8internal3utf7toUTF32FNaNbNfNkMAywZQe@Base 15 + _D4core8internal3utf7toUTF32FNaNeMxAaZAyw@Base 15 + _D4core8internal3utf7toUTF32FNaNeMxAuZAyw@Base 15 + _D4core8internal3utf8toUTF16zFNaNfMxAaZPxu@Base 15 + _D4core8internal3utf__T13isValidStringTAyaZQuFNaNbNfMxAyaZb@Base 15 + _D4core8internal3utf__T13isValidStringTAyuZQuFNaNbNfMxAyuZb@Base 15 + _D4core8internal3utf__T13isValidStringTAywZQuFNaNbNfMxAywZb@Base 15 + _D4core8internal4hash11__moduleRefZ@Base 15 + _D4core8internal4hash12__ModuleInfoZ@Base 15 + _D4core8internal4hash__T13coalesceFloatTdZQsFNaNbNiNfxdZd@Base 15 + _D4core8internal4hash__T13coalesceFloatTeZQsFNaNbNiNfxeZe@Base 15 + _D4core8internal4hash__T13coalesceFloatTfZQsFNaNbNiNfxfZf@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility16__c_complex_realZQBuFNaNbNiNfQBymZm@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility17__c_complex_floatZQBvFNaNbNiNfQBzmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility18__c_complex_doubleZQBwFNaNbNiNfQCamZm@Base 15 + _D4core8internal4hash__T6hashOfTAxPvZQnFNaNbNiNfMxAQrmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxPyS6object10ModuleInfoZQBhFNaNbNiNfMxAQBmmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxaZQmFNaNbNiNfMxAamZm@Base 15 + _D4core8internal4hash__T6hashOfTAxdZQmFNaNbNiNfMxAdmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxeZQmFNaNbNiNfMxAemZm@Base 15 + _D4core8internal4hash__T6hashOfTAxfZQmFNaNbNiNfMxAfmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxhZQmFNaNbNiNfMxAhmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxkZQmFNaNbNiNfMxAkmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxmZQmFNaNbNiNfMxAmmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxtZQmFNaNbNiNfMxAtmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxvZQmFNaNbNiNfMxAvmZm@Base 15 + _D4core8internal4hash__T6hashOfTAyaZQmFNaNbNiNfMxAyamZm@Base 15 + _D4core8internal4hash__T6hashOfTAykZQmFNaNbNiNfMxAykmZm@Base 15 + _D4core8internal4hash__T6hashOfTDFZvZQnFNaNbNiNeMxDQsmZm@Base 15 + _D4core8internal4hash__T6hashOfTE3std8encoding3BOMZQBbFNaNbNiNeMxEQBhQBgQBaZm@Base 15 + _D4core8internal4hash__T6hashOfTG2kZQmFNaNbNiNfMKxG2kmZm@Base 15 + _D4core8internal4hash__T6hashOfTG31hZQnFNaNbNiNfMKxG31hmZm@Base 15 + _D4core8internal4hash__T6hashOfTPvZQlFNaNbNiNeMxPvmZm@Base 15 + _D4core8internal4hash__T6hashOfTPxG32hZQpFNaNbNiNeMxPQtZm@Base 15 + _D4core8internal4hash__T6hashOfTPxS3std11concurrency3TidZQBhFNaNbNiNeMxPQBmZm@Base 15 + _D4core8internal4hash__T6hashOfTPxvZQmFNaNbNiNeMxPvZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTdZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTeZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTfZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS3std4json9JSONValueZQBdFNaNbNiNfMKxSQBkQBjQBhmZm@Base 15 + _D4core8internal4hash__T6hashOfTaZQkFNaNbNiNeMxaZm@Base 15 + _D4core8internal4hash__T6hashOfTbZQkFNaNbNiNeMxbZm@Base 15 + _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdZm@Base 15 + _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdmZm@Base 15 + _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxeZm@Base 15 + _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxemZm@Base 15 + _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfZm@Base 15 + _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfmZm@Base 15 + _D4core8internal4hash__T6hashOfThZQkFNaNbNiNeMxhZm@Base 15 + _D4core8internal4hash__T6hashOfThZQkFNaNbNiNeMxhmZm@Base 15 + _D4core8internal4hash__T6hashOfTiZQkFNaNbNiNeMxiZm@Base 15 + _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkZm@Base 15 + _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkmZm@Base 15 + _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmZm@Base 15 + _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmmZm@Base 15 + _D4core8internal4hash__T6hashOfTtZQkFNaNbNiNeMxtZm@Base 15 + _D4core8internal4hash__T6hashOfTuZQkFNaNbNiNeMxuZm@Base 15 + _D4core8internal4hash__T6hashOfTxC15TypeInfo_StructZQBcFNbNfxQBcZm@Base 15 + _D4core8internal4hash__T6hashOfTxC8TypeInfoZQuFNbNfxQtZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility16__c_complex_realZQBtFNaNbNiNfKxQBymZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility17__c_complex_floatZQBuFNaNbNiNfKxQBzmZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility18__c_complex_doubleZQBvFNaNbNiNfKxQCamZm@Base 15 + _D4core8internal4hash__T6hashOfTxS3std3uni21DecompressedIntervalsZQBqFNaNbNiNfKxQBvZm@Base 15 + _D4core8internal4hash__T6hashOfTxS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDuZQFjFNaNbNiNfKxQFoZm@Base 15 + _D4core8internal4hash__T6hashOfTxS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDuZQFjFNaNbNiNfKxQFoZm@Base 15 + _D4core8internal4hash__T9bytesHashVbi0ZQpFNaNbNiNeMAxhmZm@Base 15 + _D4core8internal4hash__T9bytesHashVbi1ZQpFNaNbNiNeMAxhmZm@Base 15 + _D4core8internal4hash__T9get32bitsZQlFNaNbNiMPxhZk@Base 15 + _D4core8internal4util4math11__moduleRefZ@Base 15 + _D4core8internal4util4math12__ModuleInfoZ@Base 15 + _D4core8internal4util4math__T3minTkZQhFNaNbNiNfkkZk@Base 15 + _D4core8internal4util5array10arrayToPtrFNbNexAvZm@Base 15 + _D4core8internal4util5array11__moduleRefZ@Base 15 + _D4core8internal4util5array12__ModuleInfoZ@Base 15 + _D4core8internal4util5array17_enforceNoOverlapFNbNfxAammxmZv@Base 15 + _D4core8internal4util5array18_enforceSameLengthFNbNfxAaxmxmZv@Base 15 + _D4core8internal4util5array21_enforceNoOverlapNogcFNbNfKxAammxmZv@Base 15 + _D4core8internal4util5array22_enforceSameLengthNogcFNbNfKxAaxmxmZv@Base 15 + _D4core8internal4util5array27enforceRawArraysConformableFNbNfxAaxmxAvxQdxbZv@Base 15 + _D4core8internal4util5array31enforceRawArraysConformableNogcFNbNfxAaxmxAvxQdxbZv@Base 15 + _D4core8internal4util5array6_storeG256a@Base 15 + _D4core8internal4util5array__T12errorMessageTxmTxmZQvFNbNiNeMxPaxAaxmxmZAa@Base 15 + _D4core8internal5abort11__moduleRefZ@Base 15 + _D4core8internal5abort12__ModuleInfoZ@Base 15 + _D4core8internal5abortQgFNbNiNfMAyaMQemZ8writeStrFNbNiNeAAxaXv@Base 15 + _D4core8internal5abortQgFNbNiNfMAyaMQemZv@Base 15 + _D4core8internal5array10comparison11__moduleRefZ@Base 15 + _D4core8internal5array10comparison12__ModuleInfoZ@Base 15 + _D4core8internal5array10comparison__T5__cmpTaZQjFNaNbNiNeMxAaMxQeZi@Base 15 + _D4core8internal5array10comparison__T5__cmpThZQjFNaNbNiNeMxAhMxQeZi@Base 15 + _D4core8internal5array10operations10isBinaryOpFNaNbNiNfMAyaZb@Base 15 + _D4core8internal5array10operations11__moduleRefZ@Base 15 + _D4core8internal5array10operations12__ModuleInfoZ@Base 15 + _D4core8internal5array10operations16isBinaryAssignOpFAyaZb@Base 15 + _D4core8internal5array10operations8toStringFmZAya@Base 15 + _D4core8internal5array10operations9isUnaryOpFNaNbNiNfMAyaZb@Base 15 + _D4core8internal5array11arrayassign11__moduleRefZ@Base 15 + _D4core8internal5array11arrayassign12__ModuleInfoZ@Base 15 + _D4core8internal5array11arrayassign27enforceRawArraysConformableFNaNbNiNexAaxmxAvxQdxbZv@Base 15 + _D4core8internal5array11duplication11__moduleRefZ@Base 15 + _D4core8internal5array11duplication12__ModuleInfoZ@Base 15 + _D4core8internal5array11duplication__T4_dupTS3std8datetime8timezone13PosixTimeZone10LeapSecondTySQCaQBzQBtQBnQBbZQCxFNaNbNeMAQDdZAyQBj@Base 15 + _D4core8internal5array11duplication__T4_dupTS3std8datetime8timezone13PosixTimeZone10TransitionTySQCaQBzQBtQBnQBbZQCxFNaNbNeMAQDdZAyQBj@Base 15 + _D4core8internal5array11duplication__T4_dupTaTyaZQlFNaNbNeMAaZAya@Base 15 + _D4core8internal5array11duplication__T4_dupTxAyaTAyaZQpFNaNbNeMAxQuZAQu@Base 15 + _D4core8internal5array11duplication__T4_dupTxaTaZQlFNaNbNeMAxaZAa@Base 15 + _D4core8internal5array11duplication__T4_dupTxaTyaZQmFNaNbNeMAxaZAya@Base 15 + _D4core8internal5array11duplication__T4_dupTxhThZQlFNaNbNeMAxhZAh@Base 15 + _D4core8internal5array11duplication__T4_dupTxhTyhZQmFNaNbNeMAxhZAyh@Base 15 + _D4core8internal5array11duplication__T4_dupTxkTkZQlFNaNbNeMAxkZAk@Base 15 + _D4core8internal5array11duplication__T4_dupTxmTmZQlFNaNbNeMAxmZAm@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTS3std8datetime8timezone13PosixTimeZone10LeapSecondTySQCaQBzQBtQBnQBbZQDbFNaNbNfMAQDdZAyQBj@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTS3std8datetime8timezone13PosixTimeZone10TransitionTySQCaQBzQBtQBnQBbZQDbFNaNbNfMAQDdZAyQBj@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTaTyaZQpFNaNbNfMAaZAya@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxAyaTAyaZQtFNaNbNfMAxQuZAQu@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxaTaZQpFNaNbNfMAxaZAa@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxaTyaZQqFNaNbNfMAxaZAya@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxhThZQpFNaNbNfMAxhZAh@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxhTyhZQqFNaNbNfMAxhZAyh@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxkTkZQpFNaNbNfMAxkZAk@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxmTmZQpFNaNbNfMAxmZAm@Base 15 + _D4core8internal5array12construction11__moduleRefZ@Base 15 + _D4core8internal5array12construction12__ModuleInfoZ@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTAaZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTAfZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTC3std11parallelism17ParallelismThreadZQCbFNaNbNembZAQCa@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTPS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCtFNaNbNembZAQCs@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTPS3std8datetime8timezone13PosixTimeZone6TTInfoZQCkFNaNbNembZAQCj@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTPaZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTS3std5regexQCg2ir8BytecodeZQBqFNaNbNembZAQBp@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone10TempTTInfoZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone10TransitionZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCsFNaNbNembZAQCr@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTaZQrFNaNbNembZAa@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTbZQrFNaNbNembZAb@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTThZQrFNaNbNembZAh@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTkZQrFNaNbNembZAk@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTlZQrFNaNbNembZAl@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTmZQrFNaNbNembZAm@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTuZQrFNaNbNembZAu@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTwZQrFNaNbNembZAw@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTAaZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTAfZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTAyaZQtFNaNbNembZAQr@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTC3std11parallelism17ParallelismThreadZQCbFNaNbNembZAQCa@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTPS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCtFNaNbNembZAQCs@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTPS3std8datetime8timezone13PosixTimeZone6TTInfoZQCkFNaNbNembZAQCj@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTPaZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTS3std5regexQCg2ir8BytecodeZQBqFNaNbNembZAQBp@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone10TempTTInfoZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone10TransitionZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCsFNaNbNembZAQCr@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTaZQrFNaNbNembZAa@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTbZQrFNaNbNembZAb@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUThZQrFNaNbNembZAh@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTkZQrFNaNbNembZAk@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTlZQrFNaNbNembZAl@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTmZQrFNaNbNembZAm@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTuZQrFNaNbNembZAu@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTwZQrFNaNbNembZAw@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTyS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCpFNaNbNembZAyQCo@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTyS3std8datetime8timezone13PosixTimeZone10TransitionZQCpFNaNbNembZAyQCo@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTyaZQsFNaNbNembZAya@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTyhZQsFNaNbNembZAyh@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTAyaZQBeFNaNbNembZAQs@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTaZQBcFNaNbNembZAa@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowThZQBcFNaNbNembZAh@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTkZQBcFNaNbNembZAk@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTmZQBcFNaNbNembZAm@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyS3std8datetime8timezone13PosixTimeZone10LeapSecondZQDaFNaNbNembZAyQCo@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyS3std8datetime8timezone13PosixTimeZone10TransitionZQDaFNaNbNembZAyQCo@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyaZQBdFNaNbNembZAya@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyhZQBdFNaNbNembZAyh@Base 15 + _D4core8internal5array13concatenation11__moduleRefZ@Base 15 + _D4core8internal5array13concatenation12__ModuleInfoZ@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAS3std3zip10ZipArchive7SegmentTQBfTQBjZQCeFNaNbNeQBxQCaZQCe@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeTQkZQBeFNaNbNeQuQwQBbZQBf@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrKQuZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrQtZQz@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAhTAxhTQeZQBbFNaNbNeQrQtZQz@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoTQBsTQBwTQCaZQCvFNaNbNeQCoKQCsQCvKQCzQDcKQDgQDjKQDnQDqKQDuQDxKQEbQEeKQEiQElZQEp@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoTQBsTQBwZQCrFNaNbNeQCkKQCoQCrKQCvQCyKQDcQDfKQDjQDmKQDqQDtKQDxQEaKQEeZQEi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoTQBsZQCnFNaNbNeQCgKQCkQCnKQCrQCuKQCyQDbKQDfQDiKQDmQDpKQDtQDwZQEa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoZQCjFNaNbNeQCcKQCgQCjKQCnQCqKQCuQCxKQDbQDeKQDiQDlKQDpZQDt@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkZQCfFNaNbNeQByKQCcQCfKQCjQCmKQCqQCtKQCxQDaKQDeQDhZQDl@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgZQCbFNaNbNeQBuKQByQCbKQCfQCiKQCmQCpKQCtQCwKQDaZQDe@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcZQBxFNaNbNeQBqKQBuQBxKQCbQCeKQCiQClKQCpQCsZQCw@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzZQBtFNaNbNeQBmKQBqQBtKQBxQCaKQCeQChKQClZQCp@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwZQBqFNaNbNeQBjKQBnQBqKQBuQBxKQCbQCeZQCi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtZQBnFNaNbNeQBgKQBkQBnKQBrQBuKQByZQCc@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqZQBkFNaNbNeQBdKQBhQBkKQBoQBrZQBv@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqZQBkFNaNbNeQBdQBgQBjQBmQBpZQBt@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeKQBbQBeKQBiQBlZQBp@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeKQBbQBeQBhQBkZQBo@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeQBaKQBeQBhKQBlZQBp@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeQBaQBdQBgQBjZQBn@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTyaZQBhFNaNbNeKQBbQBeKQBiyaZQBo@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeKQyKQBbQBeZQBi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeKQyQBaKQBeZQBi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeKQyQBaQBdZQBh@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxKQBaQBdZQBh@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxQzQBbZQBf@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeKQvKQyZQBb@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeKQvQxZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuKQxZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuQwZQz@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTxAyaTQmZQBgFNaNbNeQzKxQvQBfZQBj@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTxAyaTyaZQBgFNaNbNeQzKxQvyaZQBi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTxAyaZQBdFNaNbNeQwKxQsZQBd@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyAaTQlZQBfFNaNbNeQyKyQuQBeZQBi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyAaZQBcFNaNbNeQvKyQrZQBc@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyaZQBbFNaNbNeKQvyaZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyaZQBbFNaNbNeQuKyaZQBa@Base 15 + _D4core8internal5array5utils11__moduleRefZ@Base 15 + _D4core8internal5array5utils11gcStatsPureFNaNbZSQBu6memory2GC5Stats@Base 15 + _D4core8internal5array5utils12__ModuleInfoZ@Base 15 + _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZ12impureBypassFNbNiQBdiQBhQBkmZm@Base 15 + _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZm@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTAaZQsFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTAfZQsFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTAyaZQtFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTC3std11parallelism17ParallelismThreadZQCbFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTPS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCtFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTPS3std8datetime8timezone13PosixTimeZone6TTInfoZQCkFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTPaZQsFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTS3std5regexQBy2ir8BytecodeZQBqFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCoFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone10TempTTInfoZQCoFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone10TransitionZQCoFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCsFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTaZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTbZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocThZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTkZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTlZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTmZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTuZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTwZQrFNaNbNemZAv@Base 15 + _D4core8internal5array7casting11__moduleRefZ@Base 15 + _D4core8internal5array7casting12__ModuleInfoZ@Base 15 + _D4core8internal5array7casting__T11__ArrayCastThTuZQsFNaNbNiNeNkMAhZAu@Base 15 + _D4core8internal5array7casting__T11__ArrayCastThTuZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 + _D4core8internal5array7casting__T11__ArrayCastThTwZQsFNaNbNiNeNkMAhZAw@Base 15 + _D4core8internal5array7casting__T11__ArrayCastThTwZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTvTS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeZQHqFNaNbNiNeNkMAvZAQHt@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTvTS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeZQHqFNaNiNeNkMAvZ5Array6__initZ@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTxhTxuZQuFNaNbNiNeNkMAxhZAxu@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTxhTxuZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTxhTxwZQuFNaNbNiNeNkMAxhZAxw@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTxhTxwZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 + _D4core8internal5array7casting__T16onArrayCastErrorZQtFNaNbNiNeAyammQfmZv@Base 15 + _D4core8internal5array8capacity11__moduleRefZ@Base 15 + _D4core8internal5array8capacity12__ModuleInfoZ@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAAyaTQeZ18_d_arraysetlengthTFNaNbNeNkMKQBnmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAC3std3zip13ArchiveMemberTQzZ18_d_arraysetlengthTFNaNbNeNkMKQCimZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAC3std6socket7AddressTQvZ18_d_arraysetlengthTFNaNbNeNkMKQCemZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTACQCi6thread10threadbase10ThreadBaseTQBkZ18_d_arraysetlengthTFNaNbNeNkMKQCumZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std3zip10ZipArchive7SegmentTQBeZ18_d_arraysetlengthTFNaNbNeNkMKQComZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std5regexQCn2ir10NamedGroupTQBeZ18_d_arraysetlengthTFNaNbNeNkMKQComZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std5regexQCn2ir8BytecodeTQBbZ18_d_arraysetlengthTFNaNbNeNkMKQClmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std6socket11AddressInfoTQBaZ18_d_arraysetlengthTFNaNbNeNkMKQCkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAaTaZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAhThZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAkTkZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAlTlZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAmTmZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAuTuZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAvTvZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAwTwZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAyaTyaZ18_d_arraysetlengthTFNaNbNeNkMKQBmmZm@Base 15 + _D4core8internal5array8equality11__moduleRefZ@Base 15 + _D4core8internal5array8equality12__ModuleInfoZ@Base 15 + _D4core8internal5array8equality__T7isEqualTPxvTQeZQqFNaNbNiMxPPvMxQfmZb@Base 15 + _D4core8internal5array8equality__T7isEqualTPyS6object10ModuleInfoTQxZQBjFNaNbNiMxPPyQBnMxQimZb@Base 15 + _D4core8internal5array8equality__T7isEqualTaTaZQnFNaNbNiMxPaMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTdTdZQnFNaNbNiMxPdMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTeTeZQnFNaNbNiMxPeMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTfTfZQnFNaNbNiMxPfMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualThThZQnFNaNbNiMxPhMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTkTkZQnFNaNbNiMxPkMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTmTmZQnFNaNbNiMxPmMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTtTtZQnFNaNbNiMxPtMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTuTuZQnFNaNbNiMxPuMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTwTwZQnFNaNbNiMxPwMxQemZb@Base 15 + _D4core8internal5array8equality__T8__equalsTPxvTQeZQrFNaNbNiNeMxAPvMxQfZb@Base 15 + _D4core8internal5array8equality__T8__equalsTPyS6object10ModuleInfoTQxZQBkFNaNbNiNeMxAPyQBpMxQiZb@Base 15 + _D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTdTdZQoFNaNbNiNeMxAdMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTeTeZQoFNaNbNiNeMxAeMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTfTfZQoFNaNbNiNeMxAfMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsThThZQoFNaNbNiNeMxAhMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTkTkZQoFNaNbNiNeMxAkMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTmTmZQoFNaNbNiNeMxAmMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTtTtZQoFNaNbNiNeMxAtMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTuTuZQoFNaNbNiNeMxAuMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTwTwZQoFNaNbNiNeMxAwMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxAS3std3uni17CodepointIntervalTxQBfZQBuFNaNbNiNfMAxQByMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxAyaTxQfZQtFNaNbNiNfMAxQwMQfZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxC3std3zip13ArchiveMemberTxQBaZQBpFMAxQBlMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxDFNbC6ObjectZvTxQqZQBeFNaNbNiNfMAxQBiMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility16__c_complex_realTxQBlZQCaFNaNbNiNfMAxQCeMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility17__c_complex_floatTxQBmZQCbFNaNbNiNfMAxQCfMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility18__c_complex_doubleTxQBnZQCcFNaNbNiNfMAxQCgMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS2rt3aaA6BucketTxQrZQBfFNaNbNiNfMAxQBjMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeTxQHbZQHqFNaNbNiNfMAxQHuMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std3uni17CodepointIntervalTxQBeZQBtFNaNbNiNfMAxQBxMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTxQByZQCnFNaNbNiNfMAxQCrMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std4file15DirIteratorImpl9DirHandleTxQBnZQCcFNaNbNiNfMAxQCgMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std4file8DirEntryTxQvZQBjFNaNbNiNfMAxQBnMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std4json9JSONValueTxQwZQBkFNaNbNiNfMAxQBoMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std5regexQBx2ir10NamedGroupTxQBfZQBuFNaNbNiNfMAxQByMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std5regexQBx2ir11CharMatcherTxQBgZQBvFNaNbNiNfMAxQBzMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std5regexQBx2ir8BytecodeTxQBcZQBrFNaNbNiNfMAxQBvMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std6getopt6OptionTxQvZQBjFNaNbNiNfMAxQBnMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std6socket11AddressInfoTxQBbZQBqFMAxQBmMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std8datetime8timezone13PosixTimeZone10LeapSecondTxQCaZQCpFNaNbNiNfMAxQCtMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std8datetime8timezone13PosixTimeZone10TransitionTxQCaZQCpFNaNbNiNfMAxQCtMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std8datetime8timezone13PosixTimeZone14TempTransitionTxQCeZQCtFNaNbNiNfMAxQCxMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std8typecons__T5TupleTkTkTkZQnTxQBiZQBxFNaNbNiNfMAxQCbMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxSQBs8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTxQCvZQDkFNaNbNiNfMAxQDoMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxSQBsQBq5newaa6BucketTxQwZQBkFNaNbNiNfMAxQBoMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxvTxvZQqFNaNbNiNfMAxvMQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTyS3stdQBr14unicode_tables15UnicodePropertyTyQBrZQCgFNaNbNiNfMAyQCkMQgZb@Base 15 + _D4core8internal5array9appending11__moduleRefZ@Base 15 + _D4core8internal5array9appending12__ModuleInfoZ@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAAyaTQeZQBbFNaNbNcNeMNkKQyMQBbZQBf@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAOaTOaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAOuTOuZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAS3std5regexQCh2ir8BytecodeTQBbZQBzFNaNbNcNeMNkKQBwMQCaZQCe@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAaTaZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAhThZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAuTuZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAyaTyaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAAyaTQeZQBdFNaNbNcNeMNkKQymZQBc@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAC3std6socket7AddressTQvZQBuFNaNbNcNeMNkKQBpmZQBu@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTACQCe6thread5fiber5FiberTQyZQBxFNaNbNcNeMNkKQBsmZQBx@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding10Latin1CharTQBbZQCbFNaNbNcNeMNkKQBwmZQCb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding10Latin2CharTQBbZQCbFNaNbNcNeMNkKQBwmZQCb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding15Windows1250CharTQBgZQCgFNaNbNcNeMNkKQCbmZQCg@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding15Windows1251CharTQBgZQCgFNaNbNcNeMNkKQCbmZQCg@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding15Windows1252CharTQBgZQCgFNaNbNcNeMNkKQCbmZQCg@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding9AsciiCharTQzZQByFNaNbNcNeMNkKQBtmZQBy@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOaTOaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOuTOuZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTQBxZQCxFNaNbNcNeMNkKQCsmZQCx@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std3zip10ZipArchive7SegmentTQBeZQCeFNaNbNcNeMNkKQBzmZQCe@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std4file15DirIteratorImpl9DirHandleTQBmZQCmFNaNbNcNeMNkKQChmZQCm@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std4file8DirEntryTQuZQBtFNaNbNcNeMNkKQBomZQBt@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std5regexQCj12backtracking9CtContext7CtStateTQBvZQCvFNaNbNcNeMNkKQCqmZQCv@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std5regexQCj2ir8BytecodeTQBbZQCbFNaNbNcNeMNkKQBwmZQCb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std6logger11multilogger16MultiLoggerEntryTQBsZQCsFNaNbNcNeMNkKQCnmZQCs@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std8datetime8timezone13PosixTimeZone14TempTransitionTQCdZQDdFNaNbNcNeMNkKQCymZQDd@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCiTQDdZQEdFNaNbNcNeMNkKQDymZQEd@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std8typecons__T5TupleTkTkTkZQnTQBhZQChFNaNbNcNeMNkKQCcmZQCh@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTASQCe8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTQCuZQDuFNaNbNcNeMNkKQDpmZQDu@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAaTaZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAhThZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAkTkZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAmTmZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAuTuZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAwTwZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAxS3std5regexQCk2ir11CharMatcherTxQBgZQChFNaNbNcNeMNkKQCcmZQCh@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyS3std8datetime8timezone13PosixTimeZone10LeapSecondTyQCaZQDbFNaNbNcNeMNkKQCwmZQDb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyS3std8datetime8timezone13PosixTimeZone10TransitionTyQCaZQDbFNaNbNcNeMNkKQCwmZQDb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyaTyaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyhTyhZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5newaa11__moduleRefZ@Base 15 + _D4core8internal5newaa12__ModuleInfoZ@Base 15 + _D4core8internal5newaa3mixFNaNbNiNfmZm@Base 15 + _D4core8internal5newaa4Impl11__xopEqualsMxFKxSQBsQBqQBkQBhZb@Base 15 + _D4core8internal5newaa4Impl6__initZ@Base 15 + _D4core8internal5newaa4Impl9__xtoHashFNbNeKxSQBrQBpQBjQBgZm@Base 15 + _D4core8internal5newaa6Bucket6__initZ@Base 15 + _D4core8internal5newaa7AAShell6__initZ@Base 15 + _D4core8internal5qsort11__moduleRefZ@Base 15 + _D4core8internal5qsort12__ModuleInfoZ@Base 15 + _D4core8internal5qsort7_adSortUNkMAvC8TypeInfoZ3cmpUMxPvMxQeMPvZi@Base 15 + _D4core8internal6atomic11__moduleRefZ@Base 15 + _D4core8internal6atomic12__ModuleInfoZ@Base 15 + _D4core8internal6atomic12simpleFormatFAyaMAQfZQi@Base 15 + _D4core8internal6atomic5pauseFNaNbNiNeZv@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TbZQBmFNaNbNiNePNgbZNgb@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TmZQBmFNaNbNiNePNgmZNgm@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TE3std6loggerQCu8LogLevelZQCjFNaNbNiNePNgEQBoQBnQEdQBjZNgQq@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TOCQCk4sync5mutex5MutexZQChFNaNbNiNePONgCQDwQBmQBkQBhZONgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNePNgPONgSQBpQBpQBjZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TbZQBmFNaNbNiNePNgbZNgb@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TkZQBmFNaNbNiNePNgkZNgk@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TC3std11concurrency9SchedulerZQCnFNaNbNiNePNgCQBsQBrQBhZNgQn@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCwFNaNbNiNePNgEQCbQCaQBqQBkZNgQq@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOC3std6loggerQCv6LoggerZQCiFNaNbNiNePONgCQBnQBmQEdQBiZONgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOC6ObjectZQBuFNaNbNiNePONgCQzZONgQh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOCQCk4sync5mutex5MutexZQChFNaNbNiNePONgCQDwQBmQBkQBhZONgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPOSQCl4stdc5stdio8_IO_FILEZQClFNaNbNiNePNgPONgSQEdQBsQBqQBnZNgQu@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNePNgPQBkZNgQh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TbZQBmFNaNbNiNePNgbZNgb@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5ThZQBmFNaNbNiNePNghZNgh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TiZQBmFNaNbNiNePNgiZNgi@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TkZQBmFNaNbNiNePNgkZNgk@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TmZQBmFNaNbNiNePNgmZNgm@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TtZQBmFNaNbNiNePNgtZNgt@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TbZQBnFNaNbNiNePbbZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TmZQBnFNaNbNiNePmmZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TE3std6loggerQCv8LogLevelZQCkFNaNbNiNePQBmQBpZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorZQCjFNaNbNiNePQBlQBoZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONZQCwFNaNbNiNePQByQCbZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TbZQBnFNaNbNiNePbbZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TmZQBnFNaNbNiNePmmZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TC3std6loggerQCv6LoggerZQCiFNaNbNiNePQBkQBnZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCxFNaNbNiNePQBzQCcZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TE3std6loggerQCv8LogLevelZQCkFNaNbNiNePQBmQBpZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCgFNaNbNiNePQBiQBlZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5ThZQBnFNaNbNiNePhhZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TkZQBnFNaNbNiNePkkZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TmZQBnFNaNbNiNePmmZv@Base 15 + _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 + _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 + _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 + _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TCQDh4sync5mutex5MutexZQDeFNaNbNiNePQBjQeQBoZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TE3std11parallelism8TaskPool9PoolStateZQDuFNaNbNiNePQBzQeQCeZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TbZQCkFNaNbNiNePbQcbZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0ThZQCkFNaNbNiNePhQchZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TmZQCkFNaNbNiNePmQcmZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TtZQCkFNaNbNiNePtQctZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TCQDn4sync5mutex5MutexZQDkFNaNbNiNePQBjxCQFaQBnQBlQBiQCaZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TE3std11parallelism8TaskPool9PoolStateZQEaFNaNbNiNePQBzxEQCdQCcQBsQBmQCqZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TbZQCqFNaNbNiNePbxbbZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5ThZQCqFNaNbNiNePhxhhZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TmZQCqFNaNbNiNePmxmmZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TtZQCqFNaNbNiNePtxttZb@Base 15 + _D4core8internal6moving11__moduleRefZ@Base 15 + _D4core8internal6moving12__ModuleInfoZ@Base 15 + _D4core8internal6string11__moduleRefZ@Base 15 + _D4core8internal6string12__ModuleInfoZ@Base 15 + _D4core8internal6string__T17TempStringNoAllocVhi20ZQz3getMNgFNaNbNiNjNfZANga@Base 15 + _D4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 + _D4core8internal6string__T18signedToTempStringVii10Vbi0TaZQBgFNaNbNiNflNkMAaZQd@Base 15 + _D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflZSQCnQClQCf__T17TempStringNoAllocVhi20ZQz@Base 15 + _D4core8internal6string__T20unsignedToTempStringVii10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVii16Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVki10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmZSQCpQCnQCh__T17TempStringNoAllocVhi20ZQz@Base 15 + _D4core8internal6string__T7dstrcmpZQjFNaNbNiNeMxAaMxQeZi@Base 15 + _D4core8internal6string__T9numDigitsVki10ZQqFNaNbNiNfmZi@Base 15 + _D4core8internal6traits11__moduleRefZ@Base 15 + _D4core8internal6traits12__ModuleInfoZ@Base 15 + _D4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D4core8internal6traits7hasDtorFAAyaZb@Base 15 + _D4core8internal7convert10ctfe_allocFNaNbNiNemZAh@Base 15 + _D4core8internal7convert11__moduleRefZ@Base 15 + _D4core8internal7convert11shiftrRoundFNaNbNiNfmZm@Base 15 + _D4core8internal7convert12__ModuleInfoZ@Base 15 + _D4core8internal7convert5Float6__initZ@Base 15 + _D4core8internal7convert7binPow2FNaNbNiNfiZ10binPosPow2FNaNbNiNfiZe@Base 15 + _D4core8internal7convert7binPow2FNaNbNiNfiZe@Base 15 + _D4core8internal7convert__T20denormalizedMantissaTeZQzFNaNbNiNfekZSQCnQClQCf5Float@Base 15 + _D4core8internal7convert__T5parseVbi0HTeZQoFNaNbNiNfeZSQCbQBzQBt5Float@Base 15 + _D4core8internal7convert__T5parseVbi0HTxeZQpFNaNbNiNfxeZSQCdQCbQBv5Float@Base 15 + _D4core8internal7convert__T7binLog2TeZQlFNaNbNiNfxeZk@Base 15 + _D4core8internal7convert__T7toUbyteTE3std4json8JSONTypeZQBdFNaNbNiNeMKxEQBjQBiQBgZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTPxvZQnFNaNbNiNeNkMxAPvZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTPyS6object10ModuleInfoZQBgFNaNbNiNeNkMxAPyQBoZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTS3std4json9JSONValue5Store6ObjectZQBrFNaNbNiNeMNkKxSQBzQByQBwQBpQBmZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTS3std4json9JSONValue5StoreZQBkFNaNbNiNeMNkKxSQBsQBrQBpQBiZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTS3std4json9JSONValueZQBeFNaNbNiNeMNkKxSQBmQBlQBjZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTaZQlFNaNbNiNeNkMxAaZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTbZQlFNaNbNiNeMKxbZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTdZQlFNaNbNiNeMKxdZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTeZQlFNaNbNiNeMKxeZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTgZQlFNaNbNiNeMKxgZAxh@Base 15 + _D4core8internal7convert__T7toUbyteThZQlFNaNbNiNeNkMxAhZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeMKxkZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeNkMxAkZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTlZQlFNaNbNiNeMKxlZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeMKxmZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeNkMxAmZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeMKxtZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeNkMxAtZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTvZQlFNaNbNiNeNkMxAvZAxh@Base 15 + _D4core8internal7dassert11__moduleRefZ@Base 15 + _D4core8internal7dassert12__ModuleInfoZ@Base 15 + _D4core8internal7dassert15invertCompTokenFNaNbNiNfMAyaZQe@Base 15 + _D4core8internal7dassert16calcFieldOverlapFMxAmZAb@Base 15 + _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZ11formatTupleFNaNbNiNfMAaKmIQBpIbZv@Base 15 + _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZAya@Base 15 + _D4core8internal7dassert9pureAllocFNaNbNiNfmZAh@Base 15 + _D4core8internal7dassert9pureAllocFmZ5allocFNaNbNfmZAh@Base 15 + _D4core8internal7dassert__T20assumeFakeAttributesTPFNaNbNfmZAhZQBkFNaNbNiNeQzZPFNaNbNiNfmZQBe@Base 15 + _D4core8internal7switch_11__moduleRefZ@Base 15 + _D4core8internal7switch_12__ModuleInfoZ@Base 15 + _D4core8internal7switch___T14__switchSearchTyaZQuFNaNbNiNfMxAAyaMxQfZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274VxQza5_7072696e74VxQBqa6_69676e6f7265VxQCka9_646570726563617465ZQDxFNaNbNiNfMxQDxZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274ZQBmFNaNbNiNfMxQBmZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia7_70726563697365VxQBda12_636f6e736572766174697665ZQCxFNaNbNiNfMxQCxZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eVxQBfa9_746573742d6f6e6c79VxQCfa12_746573742d6f722d6d61696eZQDzFNaNbNiNfMxQDzZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eZQBsFNaNbNiNfMxQBsZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_ZQvFNaNbNiNfMxQuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa12_636f6e736572766174697665ZQBuFNaNbNiNfMxQBuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa12_746573742d6f722d6d61696eZQBuFNaNbNiNfMxQBuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa18_5275737369612054696d65205a6f6e652033VxQBta19_5275737369612054696d65205a6f6e65203130VxQDoa19_5275737369612054696d65205a6f6e65203131VxQFja21_42656c61727573205374616e646172642054696d65ZQHvFNaNbNiNfMxQHvZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa18_5275737369612054696d65205a6f6e652033VxQBta19_5275737369612054696d65205a6f6e65203130ZQEbFNaNbNiNfMxQEbZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa18_5275737369612054696d65205a6f6e652033ZQCgFNaNbNiNfMxQCgZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZ5casesyG10Aa@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa21_42656c61727573205374616e646172642054696d65ZQCmFNaNbNiNfMxQCmZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZ5casesyG11Aa@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa3_726566VxQoa4_70757265VxQBda5_406c697665VxQBva5_406e6f6763VxQCna5_4073616665VxQDfa5_636f6e7374VxQDxa5_696e6f7574VxQEpa5_73636f7065VxQFha6_72657475726eVxQGba6_736861726564VxQGva7_4073797374656dVxQHra7_6e6f7468726f77VxQIna8_4074727573746564VxQJla9_4070726f7065727479VxQKla9_696d6d757461626c65ZQLyFNaNbNiNfMxQLyZ5casesyG15Aa@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa3_726566VxQoa4_70757265VxQBda5_406c697665VxQBva5_406e6f6763VxQCna5_4073616665VxQDfa5_636f6e7374VxQDxa5_696e6f7574VxQEpa5_73636f7065VxQFha6_72657475726eVxQGba6_736861726564VxQGva7_4073797374656dVxQHra7_6e6f7468726f77VxQIna8_4074727573746564VxQJla9_4070726f7065727479VxQKla9_696d6d757461626c65ZQLyFNaNbNiNfMxQLyZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65VxQqa7_636f6c6c656374VxQBla8_66696e616c697a65ZQCwFNaNbNiNfMxQCwZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65ZQBdFNaNbNiNfMxQBdZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265VxQua9_646570726563617465ZQCgFNaNbNiNfMxQCgZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265ZQBhFNaNbNiNfMxQBhZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa8_66696e616c697a65ZQBlFNaNbNiNfMxQBlZi@Base 15 + _D4core8internal7switch___T8__switchTyaZQnFNaNbNiNfMxAyaZi@Base 15 + _D4core8internal8lifetime11__moduleRefZ@Base 15 + _D4core8internal8lifetime12__ModuleInfoZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S11__xopEqualsMxFKxSQDcQDaQCu__TQCoTQCfTQCjTQCnZQDeFKQCwKQDaZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S9__xtoHashFNbNeKxSQDbQCzQCt__TQCnTQCeTQCiTQCmZQDdFKQCvKQCzZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S__T6__ctorZQiMFNaNbNcNiNfKQBwZSQDoQDmQDg__TQDaTQCrTQCvTQCzZQDqFKQDiKQDmZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFNaNbNiNfKQwKQzZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S11__xopEqualsMxFKxSQEbQDzQDt__TQDnTQDeTQDiTQDmZQEdFKQDvKQDzZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S9__xtoHashFNbNeKxSQEaQDyQDs__TQDmTQDdTQDhTQDlZQEcFKQDuKQDyZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S__T6__ctorZQiMFNaNbNcNiNfKQCvZSQEnQElQEf__TQDzTQDqTQDuTQDyZQEpFKQEhKQElZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFNaNbNiNfKQBtKQBxZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S11__xopEqualsMxFKxSQDzQDxQDr__TQDlTQDcTQDgTQDkZQEbFKQDtKQDxZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S9__xtoHashFNbNeKxSQDyQDwQDq__TQDkTQDbTQDfTQDjZQEaFKQDsKQDwZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S__T6__ctorZQiMFNaNbNcNiNfKQCtZSQElQEjQEd__TQDxTQDoTQDsTQDwZQEnFKQEfKQEjZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFNaNbNiNfKQBrKQBvZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxZQBnFNaNbNiNfKQBnKQBrZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S11__fieldDtorMFNeZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S11__xopEqualsMxFKxSQFcQFaQEu__TQEoTQEfTQEjTQDmZQFeFKQEwKQDzZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S15__fieldPostblitMFNlZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S8opAssignMFNcNjNfSQFbQEzQEt__TQEnTQEeTQEiTQDlZQFdFKQEvKQDyZQCjZQBu@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S9__xtoHashFNbNeKxSQFbQEzQEt__TQEnTQEeTQEiTQDlZQFdFKQEvKQDyZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S__T6__ctorZQiMFNcKQCnZSQFgQFeQEy__TQEsTQEjTQEnTQDqZQFiFKQFaKQEdZQCo@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqTQJiZQJzFNaNbNiNfKQJzZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3net4curl3FTP4ImplTQyZQBoFNaNbNiNfKQBoZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3net4curl4HTTP4ImplTQzZQBpFNaNbNiNfKQBpZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3net4curl4SMTP4ImplTQzZQBpFNaNbNiNfKQBpZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S11__xopEqualsMxFKxSQEgQEeQDy__TQDsTQDjTQDnTQDrZQEiFKQEaKQEeZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S__T6__ctorZQiMFNaNbNcNiNfKQDaZSQEsQEqQEk__TQEeTQDvTQDzTQEdZQEuFKQEmKQEqZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFNaNbNiNfKQByKQCcZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S11__fieldDtorMFNeZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S11__xopEqualsMxFKxSQFeQFcQEw__TQEqTQEhTQElTQDjTQDjTbZQFmFKQFeKQEcKQEcKbZQCwZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S8opAssignMFNcNjNeSQFdQFbQEv__TQEpTQEgTQEkTQDiTQDiTbZQFlFKQFdKQEbKQEbKbZQCvZQCg@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S9__xtoHashFNbNeKxSQFdQFbQEv__TQEpTQEgTQEkTQDiTQDiTbZQFlFKQFdKQEbKQEbKbZQCvZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S__T6__ctorZQiMFNcNfKQCmKQCmKbZSQFqQFoQFi__TQFcTQEtTQExTQDvTQDvTbZQFyFKQFqKQEoKQEoKbZQDi@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFNfKQCkKQBiKQBiKbZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S11__xopEqualsMxFKxSQEhQEfQDz__TQDtTQDkTQDoTQDsZQEjFKQEbKQEfZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S9__xtoHashFNbNeKxSQEgQEeQDy__TQDsTQDjTQDnTQDrZQEiFKQEaKQEeZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S__T6__ctorZQiMFNaNbNcNiNfKQDbZSQEtQErQEl__TQEfTQDwTQEaTQEeZQEvFKQEnKQErZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFNaNbNiNfKQBzKQCdZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1S__T6__ctorZQiMFNaNbNcNiNfKQCyZSQEqQEoQEi__TQEcTQDtTQDxTQEbZQEsFKQEkKQEoZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFNaNbNiNfKQBwKQCaZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S11__xopEqualsMxFKxSQEdQEbQDv__TQDpTQDgTQDkTQDoZQEfFKQDxKQEbZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S9__xtoHashFNbNeKxSQEcQEaQDu__TQDoTQDfTQDjTQDnZQEeFKQDwKQEaZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S__T6__ctorZQiMFNaNbNcNiNfKQCxZSQEpQEnQEh__TQEbTQDsTQDwTQEaZQErFKQEjKQEnZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFNaNbNiNfKQBvKQBzZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTaTaTaZQtFKaKaZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTaTaTaZQtFKaKaZ1S__T6__ctorZQiMFNaNbNcNiNfKaZSQDgQDeQCy__TQCsTaTaTaZQDcFKaKaZQCk@Base 15 + _D4core8internal8lifetime__T10emplaceRefTaTaTaZQtFNaNbNiNfKaKaZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTkTkTkZQtFKkKkZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTkTkTkZQtFKkKkZ1S__T6__ctorZQiMFNaNbNcNiNfKkZSQDgQDeQCy__TQCsTkTkTkZQDcFKkKkZQCk@Base 15 + _D4core8internal8lifetime__T10emplaceRefTkTkTkZQtFNaNbNiNfKkKkZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTmTmTmZQtFKmKmZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTmTmTmZQtFKmKmZ1S__T6__ctorZQiMFNaNbNcNiNfKmZSQDgQDeQCy__TQCsTmTmTmZQDcFKmKmZQCk@Base 15 + _D4core8internal8lifetime__T10emplaceRefTmTmTmZQtFNaNbNiNfKmKmZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTwTwTwZQtFKwKwZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTwTwTwZQtFKwKwZ1S__T6__ctorZQiMFNaNbNcNiNfKwZSQDgQDeQCy__TQCsTwTwTwZQDcFKwKwZQCk@Base 15 + _D4core8internal8lifetime__T10emplaceRefTwTwTwZQtFNaNbNiNfKwKwZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFKaKxaZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFKaKxaZ1S__T6__ctorZQiMFNaNbNcNiNfKxaZSQDkQDiQDc__TQCwTxaTaTxaZQDiFKaKxaZQCo@Base 15 + _D4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFNaNbNiNfKaKxaZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTyaTaThZQuFKaKhZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTyaTaThZQuFKaKhZ1S__T6__ctorZQiMFNaNbNcNiNfKhZSQDhQDfQCz__TQCtTyaTaThZQDeFKaKhZQCl@Base 15 + _D4core8internal8lifetime__T10emplaceRefTyaTaThZQuFNaNbNiNfKaKhZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS2rt3aaA4ImplZQBjFNaNbNiNeMKQBcZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS2rt9critical_18D_CRITICAL_SECTIONZQCeFNaNbNiNeMKQBxZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3gcc8sections3elf9ThreadDSOZQByFNaNbNiNeMKQBrZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std11concurrency7MessageZQBwFNaNbNiNeMKQBpZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeZQCuFNaNbNiNeMKQCnZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQKdFNaNbNiNeMKQJwZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std3net4curl3FTP4ImplZQBtFNaNbNiNeMKQBmZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std3net4curl4HTTP4ImplZQBuFNaNbNiNeMKQBnZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std3net4curl4SMTP4ImplZQBuFNaNbNiNeMKQBnZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std3uni17CodepointIntervalZQByFNaNbNiNeMKQBrZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std4file15DirIteratorImplZQBxFNaNbNiNeMKQBqZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAAyaZQxZQCjFNaNbNiNeMKQCcZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBrZQDeFNaNbNiNeMKQCxZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBsZQDfFNaNbNiNeMKQCyZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAxaZQwZQCiFNaNbNiNeMKQCbZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAyaZQwZQCiFNaNbNiNeMKQCbZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAyuZQwZQCiFNaNbNiNeMKQCbZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAywZQwZQCiFNaNbNiNeMKQCbZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTyAaZQwZQCiFNaNbNiNeMKQCbZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5stdio4FileZQBmFNaNbNiNeMKQBfZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCyFNaNbNiNeMKQCrZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std8datetime8timezone13PosixTimeZone6TTInfoZQCpFNaNbNiNeMKQCiZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface4RootZQBvFNaNbNiNeMKQBoZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface5RangeZQBwFNaNbNiNeMKQBpZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw6thread7context12StackContextZQCdFNaNbNiNeMKQBwZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNeMKQDjZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1SZQCsFNaNbNiNeMKQClZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1SZQDrFNaNbNiNeMKQDkZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1SZQDpFNaNbNiNeMKQDiZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1SZQEsFNaNbNiNeMKQElZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1SZQDwFNaNbNiNeMKQDpZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1SZQEuFNaNbNiNeMKQEnZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std5regexQDb2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1SZQDxFNaNbNiNeMKQDqZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std5regexQDb2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1SZQDuFNaNbNiNeMKQDnZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1SZQDtFNaNbNiNeMKQDmZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTaTaTaZQtFKaKaZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTkTkTkZQtFKkKkZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTmTmTmZQtFKmKmZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTwTwTwZQtFKwKwZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTxaTaTxaZQvFKaKxaZ1SZQCpFNaNbNiNeMKQCiZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTyaTaThZQuFKaKhZ1SZQCnFNaNbNiNeMKQCgZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTaZQxFNaNbNiNeMKaZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTkZQxFNaNbNiNeMKkZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTmZQxFNaNbNiNeMKmZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTuZQxFNaNbNiNeMKuZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTwZQxFNaNbNiNeMKwZv@Base 15 + _D4core8internal8postblit11__moduleRefZ@Base 15 + _D4core8internal8postblit12__ModuleInfoZ@Base 15 + _D4core8internal8spinlock11__moduleRefZ@Base 15 + _D4core8internal8spinlock12__ModuleInfoZ@Base 15 + _D4core8internal8spinlock15AlignedSpinLock6__ctorMOFNbNcNiNeEQChQCfQBz8SpinLock10ContentionZOSQDoQDmQDgQDa@Base 15 + _D4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D4core8internal8spinlock8SpinLock4lockMOFNbNiNeZv@Base 15 + _D4core8internal8spinlock8SpinLock5yieldMOFNbNiNemZv@Base 15 + _D4core8internal8spinlock8SpinLock6__ctorMOFNbNcNiNeEQBzQBxQBrQBl10ContentionZOSQDaQCyQCsQCm@Base 15 + _D4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D4core8internal8spinlock8SpinLock6unlockMOFNbNiNeZv@Base 15 + _D4core8internal9container5array11__moduleRefZ@Base 15 + _D4core8internal9container5array12__ModuleInfoZ@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk4backMNgFNaNbNcNdNiZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk4swapMFNaNbNiNfKSQCkQCiQCcQBv__TQBsTQBpZQCaZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5frontMNgFNaNbNcNdNiNfZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opIndexMNgFNaNbNcNimZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNiZANgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNimmZANgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk8opAssignMFNbNcNiNjSQCnQClQCfQBy__TQBvTQBsZQCdZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk__T10insertBackZQnMFNbNiQBdZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4backMNgFNaNbNcNdNiZNgPSQBxQBwQBqQBp@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4swapMFNaNbNiNfKSQDgQDeQCyQCr__TQCoTQClZQCwZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5frontMNgFNaNbNcNdNiNfZNgPSQCaQBzQBtQBs@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opIndexMNgFNaNbNcNimZNgPSQBzQByQBsQBr@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNiZANgPSQBxQBwQBqQBp@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNimmZANgPSQBzQByQBsQBr@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf8opAssignMFNbNcNiNjSQDjQDhQDbQCu__TQCrTQCoZQCzZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf__T10insertBackZQnMFNbNiKQCaZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTQDfZQDwQCo@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4backMNgFNaNbNcNdNiZNgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4swapMFNaNbNiNfKSQExQEvQEpQEi__TQEfTQEcZQEnZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5frontMNgFNaNbNcNdNiNfZNgPSQFhQFfQEzQDr__TQDmTQDhTQDiZQDyQCo@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opIndexMNgFNaNbNcNimZNgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNiZANgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNimmZANgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw8opAssignMFNbNcNiNjSQFaQEyQEsQEl__TQEiTQEfZQEqZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTiZQDuQCm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4backMNgFNaNbNcNdNiZNgSQCcQCbQBvQBu@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4swapMFNaNbNiNfKSQDlQDjQDdQCw__TQCtTQCqZQDbZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5frontMNgFNaNbNcNdNiNfZNgSQCfQCeQByQBx@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opIndexMNgFNaNbNcNimZNgSQCeQCdQBxQBw@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNiZANgSQCcQCbQBvQBu@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNimmZANgSQCeQCdQBxQBw@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCwTQCtZQDeZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk__T10insertBackZQnMFNbNiQCeZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4backMNgFNaNbNcNdNiZNgSQDoQBzQBzQBp@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4swapMFNaNbNiNfKSQDiQDgQDaQCt__TQCqTQCnZQCyZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5frontMNgFNaNbNcNdNiNfZNgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opIndexMNgFNaNbNcNimZNgSQDqQCbQCbQBr@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNiZANgSQDoQBzQBzQBp@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNimmZANgSQDqQCbQCbQBr@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh__T10insertBackZQnMFNbNiQCbZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4backMNgFNaNbNcNdNiZNgSQDpQCaQCaQBq@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4swapMFNaNbNiNfKSQDjQDhQDbQCu__TQCrTQCoZQCzZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5frontMNgFNaNbNcNdNiNfZNgSQDsQCdQCdQBt@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opIndexMNgFNaNbNcNimZNgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNiZANgSQDpQCaQCaQBq@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNimmZANgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi__T10insertBackZQnMFNbNiQCcZv@Base 15 + _D4core8internal9container5treap11__moduleRefZ@Base 15 + _D4core8internal9container5treap12__ModuleInfoZ@Base 15 + _D4core8internal9container5treap4Rand5frontMFNaNbNdNiNfZk@Base 15 + _D4core8internal9container5treap4Rand6__initZ@Base 15 + _D4core8internal9container5treap4Rand6opCallMFNaNbNiNfZk@Base 15 + _D4core8internal9container5treap4Rand8popFrontMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh10initializeMFNaNbNiNfmZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh13opApplyHelperFNbxPSQDmQDkQDeQCx__TQCuTQCrZQDc4NodeMDFNbKxSQEzQDkQDkQDaZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZQBl@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiQBqZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeFNbNiPPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeMFNbNiQBqZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMFNbMDFNbKQBvZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMxFNbMDFNbKxSQDmQBxQBxQBnZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateLFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateRFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8freeNodeFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9allocNodeMFNbNiQBtZPSQDnQDlQDfQCy__TQCvTQCsZQDd4Node@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi10initializeMFNaNbNiNfmZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi13opApplyHelperFNbxPSQDnQDlQDfQCy__TQCvTQCsZQDd4NodeMDFNbKxSQFaQDlQDlQDbZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node11__xopEqualsMxFKxSQDqQDoQDiQDb__TQCyTQCvZQDgQByZb@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node9__xtoHashFNbNeKxSQDpQDnQDhQDa__TQCxTQCuZQDfQBxZm@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZQBl@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiQBrZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeFNbNiPPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNiQBrZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMFNbMDFNbKQBwZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMxFNbMDFNbKxSQDnQByQByQBoZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateLFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateRFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8freeNodeFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9allocNodeMFNbNiQBuZPSQDoQDmQDgQCz__TQCwTQCtZQDe4Node@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllFNbNiPSQDjQDhQDbQCu__TQCrTQCoZQCz4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllMFNbNiZv@Base 15 + _D4core8internal9container6common11__moduleRefZ@Base 15 + _D4core8internal9container6common12__ModuleInfoZ@Base 15 + _D4core8internal9container6common7xmallocFNbNimZPv@Base 15 + _D4core8internal9container6common8xreallocFNbNiPvmZQe@Base 15 + _D4core8internal9container6common__T10initializeTAvZQqFNaNbNiNfKQpZv@Base 15 + _D4core8internal9container6common__T10initializeTPS3gcc8sections3elf3DSOZQBlFNaNbNiNfKQBlZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDcFNaNbNiNfKQDcZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T10initializeTS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface4RootZQBnFNaNbNiNfKQBnZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface5RangeZQBoFNaNbNiNfKQBoZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDbFNaNbNiNfKQDbZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T7destroyTAvZQmFNaNbNiNfKQpZv@Base 15 + _D4core8internal9container6common__T7destroyTPS3gcc8sections3elf3DSOZQBhFNaNbNiNfKQBlZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCyFNaNbNiNfKQDcZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T7destroyTS3gcc8sections3elf9ThreadDSOZQBmFNaNbNiNfKQBqZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface4RootZQBjFNaNbNiNfKQBnZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface5RangeZQBkFNaNbNiNfKQBoZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCxFNaNbNiNfKQDbZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container7hashtab11__moduleRefZ@Base 15 + _D4core8internal9container7hashtab12__ModuleInfoZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi13opIndexAssignMFNbNiQBtQCaZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi3getMFNbNiQBmZPQBn@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node11__xopEqualsMxFKxSQDsQDqQDkQDd__TQCyTQCtTQCtZQDkQCcZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node9__xtoHashFNbNeKxSQDrQDpQDjQDc__TQCxTQCsTQCsZQDjQCbZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6hashOfFNaNbNiNeMKxAaZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6removeMFNbNiIAaZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opApplyMFMDFKQBqKQBqZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opIndexMNgFNaNbNcNiQBwZNgSQByQByQBr@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTQCpZQDgZQBg@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxAaZPNgSQCxQCxQCq@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk13opIndexAssignMFNbNiQBwQCcZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk3getMFNbNiQBoZPQBq@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6hashOfFNaNbNiNeMKxPvZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6removeMFNbNiIPvZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opApplyMFMDFKQBsKQBtZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opIndexMNgFNaNbNcNiQByZNgPSQCbQCaQBuQBt@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk8opAssignMFNbNcNiNjSQDqQDoQDiQDb__TQCwTQCrTQCsZQDiZQBg@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPvZPNgPSQDaQCzQCtQCs@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi13opIndexAssignMFNbNiiQByZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi3getMFNbNiQBmZPi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6hashOfFNaNbNiNeMKxPyQBvZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6removeMFNbNiIPyQBqZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opApplyMFMDFKQBqKiZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opIndexMNgFNaNbNcNiQBwZNgi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTiZQDeZQBe@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPyQCvZPNgi@Base 15 + _D4core8lifetime11__moduleRefZ@Base 15 + _D4core8lifetime12__ModuleInfoZ@Base 15 + _D4core8lifetime__T11_d_newitemTTS2rt3aaA4ImplZQBcFNaNbNeZPQBa@Base 15 + _D4core8lifetime__T11_d_newitemTTS2rt9critical_18D_CRITICAL_SECTIONZQBxFNaNbNeZPQBv@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeZQCnFNaNbNeZPQCl@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAAyaZQxZQCcFNaNbNeZPQCa@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBrZQCxFNaNbNeZPQCv@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBsZQCyFNaNbNeZPQCw@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAxaZQwZQCbFNaNbNeZPQBz@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAyaZQwZQCbFNaNbNeZPQBz@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAyuZQwZQCbFNaNbNeZPQBz@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAywZQwZQCbFNaNbNeZPQBz@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTyAaZQwZQCbFNaNbNeZPQBz@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCrFNaNbNeZPQCp@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std8datetime8timezone13PosixTimeZone6TTInfoZQCiFNaNbNeZPQCg@Base 15 + _D4core8lifetime__T11_d_newitemTTSQBg6thread7context12StackContextZQBwFNaNbNeZPQBu@Base 15 + _D4core8lifetime__T11copyEmplaceTS3std11concurrency3TidTQxZQBoFNaNbNiKQBlKQBpZv@Base 15 + _D4core8lifetime__T11moveEmplaceTAyaZQsFNaNbNiKQoKQrZv@Base 15 + _D4core8lifetime__T11moveEmplaceTC3std3zip13ArchiveMemberZQBnFNaNbNiKQBkKQBoZv@Base 15 + _D4core8lifetime__T11moveEmplaceTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCnFNaNbNiKQCkKQCoZv@Base 15 + _D4core8lifetime__T11moveEmplaceTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCrFNaNbNiKQCoKQCsZv@Base 15 + _D4core8lifetime__T12_d_newclassTTC3gcc9backtrace12LibBacktraceZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11concurrency10MessageBoxZQBuFNaNbNeZQBq@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11concurrency11MailboxFullZQBvFNaNbNeZQBr@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11concurrency14FiberScheduler14FiberConditionZQCoFNaNbNeZQCk@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11concurrency14FiberScheduler9InfoFiberZQCiFNaNbNeZQCe@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11concurrency19TidMissingExceptionZQCdFNaNbNeZQBz@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11parallelism17ParallelismThreadZQCbFNaNbNeZQBx@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11parallelism20ParallelForeachErrorZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11parallelism8TaskPoolZQBrFNaNbNeZQBn@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3net4curl13CurlExceptionZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3net4curl20CurlTimeoutExceptionZQCaFNaNbNeZQBw@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3uri12URIExceptionZQBnFNaNbNeZQBj@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3utf12UTFExceptionZQBnFNaNbNeZQBj@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3zip12ZipExceptionZQBnFNaNbNeZQBj@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3zip13ArchiveMemberZQBoFNaNbNeZQBk@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4conv13ConvExceptionZQBpFNaNbNeZQBl@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4conv21ConvOverflowExceptionZQBxFNaNbNeZQBt@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4file13FileExceptionZQBpFNaNbNeZQBl@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4json13JSONExceptionZQBpFNaNbNeZQBl@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4uuid20UUIDParsingExceptionZQBwFNaNbNeZQBs@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4zlib13ZlibExceptionZQBpFNaNbNeZQBl@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std5regex8internal2ir14RegexExceptionZQCdFNaNbNeZQBz@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std5stdio14StdioExceptionZQBrFNaNbNeZQBn@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6format15FormatExceptionZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket11UnixAddressZQBpFNaNbNeZQBl@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket12InternetHostZQBqFNaNbNeZQBm@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket13HostExceptionZQBrFNaNbNeZQBn@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket14UnknownAddressZQBsFNaNbNeZQBo@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket15InternetAddressZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket16AddressExceptionZQBuFNaNbNeZQBq@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket16Internet6AddressZQBuFNaNbNeZQBq@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket17SocketOSExceptionZQBvFNaNbNeZQBr@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket21SocketAcceptExceptionZQBzFNaNbNeZQBv@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket22SocketFeatureExceptionZQCaFNaNbNeZQBw@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket23UnknownAddressReferenceZQCbFNaNbNeZQBx@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket24SocketParameterExceptionZQCcFNaNbNeZQBy@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket6SocketZQBjFNaNbNeZQBf@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket7ServiceZQBkFNaNbNeZQBg@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std7process16ProcessExceptionZQBvFNaNbNeZQBr@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std7process3PidZQBhFNaNbNeZQBd@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std7variant16VariantExceptionZQBvFNaNbNeZQBr@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding17EncodingExceptionZQBxFNaNbNeZQBt@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding18EncodingSchemeUtf8ZQByFNaNbNeZQBu@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding19EncodingSchemeASCIIZQBzFNaNbNeZQBv@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding20EncodingSchemeLatin1ZQCaFNaNbNeZQBw@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding20EncodingSchemeLatin2ZQCaFNaNbNeZQBw@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeUtf16NativeZQCfFNaNbNeZQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeUtf32NativeZQCfFNaNbNeZQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeWindows1250ZQCfFNaNbNeZQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeWindows1251ZQCfFNaNbNeZQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeWindows1252ZQCfFNaNbNeZQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std9exception14ErrnoExceptionZQBvFNaNbNeZQBr@Base 15 + _D4core8lifetime__T12_d_newclassTTC6object5ErrorZQBeFNaNbNeZQBa@Base 15 + _D4core8lifetime__T12_d_newclassTTC9ExceptionZQBbFNaNbNeZQx@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync5mutex5MutexZQBlFNaNbNeZQBh@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6ReaderZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6WriterZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync9condition9ConditionZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync9exception9SyncErrorZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4time13TimeExceptionZQBoFNaNbNeZQBk@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh6thread10threadbase15ThreadExceptionZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh6thread8osthread6ThreadZQBrFNaNbNeZQBn@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh9exception10RangeErrorZQBqFNaNbNeZQBm@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh9exception16OutOfMemoryErrorZQBwFNaNbNeZQBs@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh9exception16UnicodeExceptionZQBwFNaNbNeZQBs@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync5mutex5MutexZQBmFNaNbNeZOQBi@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6ReaderZQCfFNaNbNeZOQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6WriterZQCfFNaNbNeZOQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync9condition9ConditionZQBuFNaNbNeZOQBq@Base 15 + _D4core8lifetime__T12_d_newclassTTyC3std8datetime8timezone13PosixTimeZoneZQCdFNaNbNeZyQBz@Base 15 + _D4core8lifetime__T15moveEmplaceImplTAyaZQwFNaNbNiNfMKQrNkMKQxZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTC3std3zip13ArchiveMemberZQBrFNaNbNiNfMKQBnNkMKQBuZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTE3std6loggerQBv8LogLevelZQBrFNaNbNiNfMKQBnNkMKQBuZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTS3std8bitmanip__T7BitsSetTmZQlZQBxFNaNbNiNfMKQBtNkMKQCaZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNfMKQCnNkMKQCuZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTS3std8datetime8timezone13PosixTimeZone10TransitionZQCrFNaNbNiNfMKQCnNkMKQCuZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNfMKQCrNkMKQCyZv@Base 15 + _D4core8lifetime__T15trustedMoveImplTAyaZQwFNaNbNiNeNkMKQtZQw@Base 15 + _D4core8lifetime__T15trustedMoveImplTC3std3zip13ArchiveMemberZQBrFNaNbNiNeNkMKQBpZQBt@Base 15 + _D4core8lifetime__T15trustedMoveImplTE3std6loggerQBv8LogLevelZQBrFNaNbNiNeNkMKQBpZQBt@Base 15 + _D4core8lifetime__T15trustedMoveImplTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNeNkMKQCpZQCt@Base 15 + _D4core8lifetime__T15trustedMoveImplTS3std8datetime8timezone13PosixTimeZone10TransitionZQCrFNaNbNiNeNkMKQCpZQCt@Base 15 + _D4core8lifetime__T15trustedMoveImplTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNeNkMKQCtZQCx@Base 15 + _D4core8lifetime__T4moveTAyaZQkFNaNbNiNfNkMKQtZQw@Base 15 + _D4core8lifetime__T4moveTC3std3zip13ArchiveMemberZQBfFNaNbNiNfNkMKQBpZQBt@Base 15 + _D4core8lifetime__T4moveTE3std6loggerQBj8LogLevelZQBfFNaNbNiNfNkMKQBpZQBt@Base 15 + _D4core8lifetime__T4moveTS3std8bitmanip__T7BitsSetTmZQlZQBlFNaNbNiNfKQBsKQBwZv@Base 15 + _D4core8lifetime__T4moveTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNiNfNkMKQCpZQCt@Base 15 + _D4core8lifetime__T4moveTS3std8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNiNfNkMKQCpZQCt@Base 15 + _D4core8lifetime__T4moveTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNiNfNkMKQCtZQCx@Base 15 + _D4core8lifetime__T7emplaceTAyaTQeZQqFNaNbNiNfPQtKQwZQh@Base 15 + _D4core8lifetime__T7emplaceTC3gcc9backtrace12LibBacktraceTiZQBpFNiQBmKiZQBs@Base 15 + _D4core8lifetime__T7emplaceTC3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocatorTOSQDcQDbQCq18RCISharedAllocatorZQEqFNaNbNiAvKOQBtZQEz@Base 15 + _D4core8lifetime__T7emplaceTC3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocatorTOSQDcQDbQCq18RCISharedAllocatorZQEqFNaNbNiNfQEtKOQBwZQFc@Base 15 + _D4core8lifetime__T7emplaceTC3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEkZQGdFNaNbNiAvZQGh@Base 15 + _D4core8lifetime__T7emplaceTC3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEkZQGdFNaNbNiNfQGgZQGk@Base 15 + _D4core8lifetime__T7emplaceTC3std3zip13ArchiveMemberTQzZQBlFNaNbNiNfPQBpKQBtZQj@Base 15 + _D4core8lifetime__T7emplaceTC3std6logger10filelogger10FileLoggerTSQBl5stdio4FileTEQCbQCaQDi8LogLevelZQDeFAvKQBrQBeZQDj@Base 15 + _D4core8lifetime__T7emplaceTC3std6logger10filelogger10FileLoggerTSQBl5stdio4FileTEQCbQCaQDi8LogLevelZQDeFNfQDbKQBuQBhZQDm@Base 15 + _D4core8lifetime__T7emplaceTC3std6loggerQBm16StdForwardLoggerTEQBiQBhQCp8LogLevelZQClFAvQBaZQCm@Base 15 + _D4core8lifetime__T7emplaceTC3std6loggerQBm16StdForwardLoggerTEQBiQBhQCp8LogLevelZQClFNfQCiQBdZQCp@Base 15 + _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiAvZQBh@Base 15 + _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiNfQBgZQBk@Base 15 + _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl12conservativeQw14ConservativeGCZQClFQCgZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl6manualQp8ManualGCZQBxFQBsZQBw@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception10RangeErrorTAyaTmTnZQBsFNaNbNiNfQBvKQyKmKQxZQCh@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTiZQBuFNaNbNiNfQBxKQzKQBcKiZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTmZQBuFNaNbNiNfQBxKQzKQBcKmZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTmZQBrFNaNbNiNfQBuKQwKmZQCd@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11SwitchErrorTAyaTQeTmTnZQBwFNaNbNiNfQBzKQBbKQBfKmKQBcZQCr@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCxFNaNbNiNfQDaKQCaKQBtKQBeKmZQDs@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception15ArrayIndexErrorTmTmTAyaTmTnZQCbFNaNbNiNfQCeKmKmKQBcKmKQBcZQCw@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception15ArraySliceErrorTmTmTmTAyaTmTnZQCdFNaNbNiNfQCgKmKmKmKQBeKmKQBeZQDa@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTAyaTmZQBwFNaNbNiNfQBzKQwKmZQCi@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTbTAyaTmZQByFNaNbNiNfQCbKbKQyKmZQCm@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception27InvalidMemoryOperationErrorTAyaTmZQChFNaNbNiNfQCkKQwKmZQCt@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception9ForkErrorTAyaTmTnZQBqFNaNbNiNfQBtKQyKmKQxZQCf@Base 15 + _D4core8lifetime__T7emplaceTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQyZQClFPQChKQBkZQj@Base 15 + _D4core8lifetime__T7emplaceTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQJrFNaNbNiNfPQJvZQf@Base 15 + _D4core8lifetime__T7emplaceTS3std3net4curl3FTP4ImplZQBhFNaNbNiNfPQBlZQf@Base 15 + _D4core8lifetime__T7emplaceTS3std3net4curl4HTTP4ImplZQBiFNaNbNiNfPQBmZQf@Base 15 + _D4core8lifetime__T7emplaceTS3std3net4curl4SMTP4ImplZQBiFNaNbNiNfPQBmZQf@Base 15 + _D4core8lifetime__T7emplaceTS3std4file15DirIteratorImplTAyaTEQBgQBf8SpanModeTbZQCiFNfPQCgKQBiKQBiKbZQp@Base 15 + _D4core8lifetime__T7emplaceTS3std6socket11AddressInfoTQBaZQBnFNaNbNiNfPQBrKQBvZQj@Base 15 + _D4core8lifetime__T7emplaceTaTaZQnFNaNbNiNfPaKaZQf@Base 15 + _D4core8lifetime__T7emplaceTwTwZQnFNaNbNiNfPwKwZQf@Base 15 + _D4core8lifetime__T8moveImplTAyaZQoFNaNbNiNfNkMKQtZQw@Base 15 + _D4core8lifetime__T8moveImplTC3std3zip13ArchiveMemberZQBjFNaNbNiNfNkMKQBpZQBt@Base 15 + _D4core8lifetime__T8moveImplTE3std6loggerQBn8LogLevelZQBjFNaNbNiNfNkMKQBpZQBt@Base 15 + _D4core8lifetime__T8moveImplTS3std8bitmanip__T7BitsSetTmZQlZQBpFNaNbNiNfMKQBtNkMKQCaZv@Base 15 + _D4core8lifetime__T8moveImplTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCjFNaNbNiNfNkMKQCpZQCt@Base 15 + _D4core8lifetime__T8moveImplTS3std8datetime8timezone13PosixTimeZone10TransitionZQCjFNaNbNiNfNkMKQCpZQCt@Base 15 + _D4core8lifetime__T8moveImplTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCnFNaNbNiNfNkMKQCtZQCx@Base 15 + _D4core8volatile11__moduleRefZ@Base 15 + _D4core8volatile12__ModuleInfoZ@Base 15 + _D4core9attribute11__moduleRefZ@Base 15 + _D4core9attribute12__ModuleInfoZ@Base 15 + _D4core9attribute9gnuAbiTag11__xopEqualsMxFKxSQBsQBqQBjZb@Base 15 + _D4core9attribute9gnuAbiTag6__ctorMFNaNbNcNfAAyaXSQBwQBuQBn@Base 15 + _D4core9attribute9gnuAbiTag6__initZ@Base 15 + _D4core9attribute9gnuAbiTag9__xtoHashFNbNeKxSQBrQBpQBiZm@Base 15 + _D4core9exception10RangeError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCsQCqQCj@Base 15 + _D4core9exception10RangeError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCqQCoQCh@Base 15 + _D4core9exception10RangeError6__initZ@Base 15 + _D4core9exception10RangeError6__vtblZ@Base 15 + _D4core9exception10RangeError7__ClassZ@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfAyamZCQBzQBxQBq@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfC6object9ThrowableAyamZCQCrQCpQCi@Base 15 + _D4core9exception11AssertError6__initZ@Base 15 + _D4core9exception11AssertError6__vtblZ@Base 15 + _D4core9exception11AssertError7__ClassZ@Base 15 + _D4core9exception11SwitchError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 + _D4core9exception11SwitchError6__initZ@Base 15 + _D4core9exception11SwitchError6__vtblZ@Base 15 + _D4core9exception11SwitchError7__ClassZ@Base 15 + _D4core9exception11__moduleRefZ@Base 15 + _D4core9exception11rangeMsgPutFNaNbNiNfKAaMAxaZv@Base 15 + _D4core9exception12__ModuleInfoZ@Base 15 + _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoAyamC6object9ThrowableZCQDdQDbQCu@Base 15 + _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoC6object9ThrowableAyamZCQDdQDbQCu@Base 15 + _D4core9exception13FinalizeError6__initZ@Base 15 + _D4core9exception13FinalizeError6__vtblZ@Base 15 + _D4core9exception13FinalizeError7__ClassZ@Base 15 + _D4core9exception13FinalizeError8toStringMxFNfZAya@Base 15 + _D4core9exception13assertHandlerFNbNdNiNePFNbAyamQeZvZv@Base 15 + _D4core9exception13assertHandlerFNbNdNiNeZPFNbAyamQeZv@Base 15 + _D4core9exception14_assertHandlerPFNbAyamQeZv@Base 15 + _D4core9exception15ArrayIndexError6__ctorMFNaNbNiNfmmAyamC6object9ThrowableZCQCxQCvQCo@Base 15 + _D4core9exception15ArrayIndexError6__initZ@Base 15 + _D4core9exception15ArrayIndexError6__vtblZ@Base 15 + _D4core9exception15ArrayIndexError7__ClassZ@Base 15 + _D4core9exception15ArraySliceError6__ctorMFNaNbNiNfmmmAyamC6object9ThrowableZCQCyQCwQCp@Base 15 + _D4core9exception15ArraySliceError6__initZ@Base 15 + _D4core9exception15ArraySliceError6__vtblZ@Base 15 + _D4core9exception15ArraySliceError7__ClassZ@Base 15 + _D4core9exception16OutOfMemoryError13superToStringMFNeZAya@Base 15 + _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCwQCuQCn@Base 15 + _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfbAyamC6object9ThrowableZCQCxQCvQCo@Base 15 + _D4core9exception16OutOfMemoryError6__initZ@Base 15 + _D4core9exception16OutOfMemoryError6__vtblZ@Base 15 + _D4core9exception16OutOfMemoryError7__ClassZ@Base 15 + _D4core9exception16OutOfMemoryError8toStringMxFNeZAya@Base 15 + _D4core9exception16UnicodeException6__ctorMFNaNbNiNfAyamQemC6object9ThrowableZCQCzQCxQCq@Base 15 + _D4core9exception16UnicodeException6__initZ@Base 15 + _D4core9exception16UnicodeException6__vtblZ@Base 15 + _D4core9exception16UnicodeException7__ClassZ@Base 15 + _D4core9exception17SuppressTraceInfo6__initZ@Base 15 + _D4core9exception17SuppressTraceInfo6__vtblZ@Base 15 + _D4core9exception17SuppressTraceInfo7__ClassZ@Base 15 + _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 + _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 + _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZ2ityCQCgQCeQBx@Base 15 + _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZCQCcQCaQBt@Base 15 + _D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 + _D4core9exception27InvalidMemoryOperationError13superToStringMFNeZAya@Base 15 + _D4core9exception27InvalidMemoryOperationError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQDhQDfQCy@Base 15 + _D4core9exception27InvalidMemoryOperationError6__initZ@Base 15 + _D4core9exception27InvalidMemoryOperationError6__vtblZ@Base 15 + _D4core9exception27InvalidMemoryOperationError7__ClassZ@Base 15 + _D4core9exception27InvalidMemoryOperationError8toStringMxFNeZAya@Base 15 + _D4core9exception6_storeG256v@Base 15 + _D4core9exception9ForkError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCoQCmQCf@Base 15 + _D4core9exception9ForkError6__initZ@Base 15 + _D4core9exception9ForkError6__vtblZ@Base 15 + _D4core9exception9ForkError7__ClassZ@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFKQnKmQlZ3getFNbNiZQBy@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFNaNbNiKQtKmQrZQBu@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFNaNbNiQtQviZQBu@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFQnQpiZ3getFNbNiZQBy@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFKQoKQrKmZ3getFNbNiZQCb@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFNaNbNiKQuKQxKmZQBx@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFKQlKmZ3getFNbNiZQBv@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFNaNbNiKQrKmZQBr@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFNaNbNiQvKQyKmQtZQCa@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFQpKQsKmQnZ3getFNbNiZQCe@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFKQBpKQBiKQtKmZ3getFNbNiZQDj@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFNaNbNiKQBvKQBoKQzKmZQDf@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFKmKmKQrKmQpZ3getFNbNiZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFNaNbNiKmKmKQxKmQvZQCh@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFKmKmKmKQtKmQrZ3getFNbNiZQCp@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFNaNbNiKmKmKmKQzKmQxZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFKQlKmZ3getFNbNiZQCa@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFNaNbNiKQrKmZQBw@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFNaNbNibKQsKmZQBz@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFbKQmKmZ3getFNbNiZQCd@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFKQlKmZ3getFNbNiZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFNaNbNiKQrKmZQCh@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFKQnKmQlZ3getFNbNiZQBw@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFNaNbNiKQtKmQrZQBs@Base 15 + _D4core9exception__T15__switch_errorTZQsFNaNbNiNeAyamZv@Base 15 + _D50TypeInfo_C3std12experimental9allocator10IAllocator6__initZ@Base 15 + _D50TypeInfo_E3std6format8internal5write12RoundingMode6__initZ@Base 15 + _D50TypeInfo_E3std8internal4test10dummyrange9RangeType6__initZ@Base 15 + _D50TypeInfo_E3std9algorithm9iteration14GroupingOpType6__initZ@Base 15 + _D50TypeInfo_E4core3sys5linux10perf_event11perf_sw_ids6__initZ@Base 15 + _D50TypeInfo_S3etc1c4odbc8sqltypes18SQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D50TypeInfo_S3etc1c7sqlite324sqlite3_rtree_query_info6__initZ@Base 15.2 + _D50TypeInfo_S3std4math8hardware20FloatingPointControl6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D50TypeInfo_S4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D50TypeInfo_xS3std5range__T6strideTAywZQmFQhmZ6Result6__initZ@Base 15 + _D51TypeInfo_E3std6format8internal5write13PrecisionType6__initZ@Base 15 + _D51TypeInfo_E3std6format8internal5write13RoundingClass6__initZ@Base 15 + _D51TypeInfo_E4core3sys5linux10perf_event12perf_type_id6__initZ@Base 15 + _D51TypeInfo_E4core4sync7rwmutex14ReadWriteMutex6Policy6__initZ@Base 15 + _D51TypeInfo_E4core6thread5fiber4base9FiberBase7Rethrow6__initZ@Base 15 + _D51TypeInfo_OS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D51TypeInfo_S3etc1c4odbc6odbc3221tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D51TypeInfo_S3etc1c4odbc6odbc6421tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D51TypeInfo_S3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D51TypeInfo_S3std8internal4test3uda17HasPrivateMembers6__initZ@Base 15 + _D51TypeInfo_S4core13interpolation19InterpolationFooter6__initZ@Base 15 + _D51TypeInfo_S4core13interpolation19InterpolationHeader6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 + _D51TypeInfo_S4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 + _D51TypeInfo_S4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 + _D51TypeInfo_xC3std12experimental9allocator10IAllocator6__initZ@Base 15 + _D51TypeInfo_xS4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D51TypeInfo_xS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 + _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 + _D52TypeInfo_OxS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D52TypeInfo_S3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D52TypeInfo_S3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D52TypeInfo_S3std12experimental9allocator12RCIAllocator6__initZ@Base 15 + _D52TypeInfo_S3std3uni__T19PackedArrayViewImplThVmi8ZQBc6__initZ@Base 15 + _D52TypeInfo_S3std6logger11multilogger16MultiLoggerEntry6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 + _D52TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 + _D53TypeInfo_AS3std6logger11multilogger16MultiLoggerEntry6__initZ@Base 15 + _D53TypeInfo_E3std8typecons__T4FlagVAyaa6_756e73616665ZQz6__initZ@Base 15 + _D53TypeInfo_E4core8internal2gc4impl12conservativeQw4Bins6__initZ@Base 15 + _D53TypeInfo_S3etc1c4odbc8sqltypes21SQL_DAY_SECOND_STRUCT6__initZ@Base 15.2 + _D53TypeInfo_S3etc1c4odbc8sqltypes21SQL_YEAR_MONTH_STRUCT6__initZ@Base 15.2 + _D53TypeInfo_S3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__initZ@Base 15 + _D53TypeInfo_S3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6__initZ@Base 15 + _D53TypeInfo_S3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6__initZ@Base 15 + _D53TypeInfo_S3std5regex8internal12backtracking9CtContext6__initZ@Base 15 + _D53TypeInfo_S3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__initZ@Base 15 + _D53TypeInfo_S3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 + _D53TypeInfo_S4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 + _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 + _D54TypeInfo_E3std12experimental9allocator5typed9AllocFlag6__initZ@Base 15 + _D54TypeInfo_E4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 + _D54TypeInfo_E4core8internal8spinlock8SpinLock10Contention6__initZ@Base 15 + _D54TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw6__initZ@Base 15 + _D54TypeInfo_S3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 + _D54TypeInfo_S4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 + _D54TypeInfo_S4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 + _D54TypeInfo_xS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D55TypeInfo_E3std6format8internal5write17HasToStringResult6__initZ@Base 15 + _D55TypeInfo_E4core3sys5linux10perf_event16perf_hw_cache_id6__initZ@Base 15 + _D55TypeInfo_E4core3sys5linuxQg9if_packet16tpacket_versions6__initZ@Base 15 + _D55TypeInfo_PS3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 + _D55TypeInfo_PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D55TypeInfo_S3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6__initZ@Base 15 + _D55TypeInfo_S3std7variant__T8VariantNVmi32ZQp11SizeChecker6__initZ@Base 15 + _D55TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 + _D55TypeInfo_S4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 + _D55TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 + _D55TypeInfo_S4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 + _D55TypeInfo_S4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D55TypeInfo_xPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D55TypeInfo_yS3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 + _D56TypeInfo_AxPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D56TypeInfo_C3std12experimental9allocator16ISharedAllocator6__initZ@Base 15 + _D56TypeInfo_E3std8typecons__T4FlagVAyaa7_646f436f756e74ZQBb6__initZ@Base 15 + _D56TypeInfo_S3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz6__initZ@Base 15 + _D56TypeInfo_S3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 + _D56TypeInfo_S3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 + _D56TypeInfo_S4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 + _D56TypeInfo_S4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 + _D56TypeInfo_S4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D56TypeInfo_xS4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D57TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D57TypeInfo_S4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 + _D57TypeInfo_S4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 + _D57TypeInfo_xC3std12experimental9allocator16ISharedAllocator6__initZ@Base 15 + _D57TypeInfo_yS3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 + _D58TypeInfo_AS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D58TypeInfo_AyS3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 + _D58TypeInfo_E2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ7OnCycle6__initZ@Base 15 + _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_6164617074697665ZQBd6__initZ@Base 15 + _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_636865636b446e73ZQBd6__initZ@Base 15 + _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_696e646972656374ZQBd6__initZ@Base 15 + _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_706f704669727374ZQBd6__initZ@Base 15 + _D58TypeInfo_E4core3sys5linux10perf_event19perf_hw_cache_op_id6__initZ@Base 15 + _D58TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D58TypeInfo_OxC3std12experimental9allocator16ISharedAllocator6__initZ@Base 15 + _D58TypeInfo_S3etc1c4odbc6odbc3228tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D58TypeInfo_S3etc1c4odbc6odbc6428tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D58TypeInfo_S3std12experimental9allocator18RCISharedAllocator6__initZ@Base 15 + _D58TypeInfo_S3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink6__initZ@Base 15 + _D58TypeInfo_S3std8internal7cstring__T17TempCStringBufferTaZQw6__initZ@Base 15 + _D58TypeInfo_S4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 + _D58TypeInfo_S4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 + _D58TypeInfo_S4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 + _D58TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D58TypeInfo_xS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D59TypeInfo_AxS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D59TypeInfo_E4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 + _D59TypeInfo_E4core3sys5linux10perf_event20perf_sample_regs_abi6__initZ@Base 15 + _D59TypeInfo_OS3std12experimental9allocator18RCISharedAllocator6__initZ@Base 15 + _D59TypeInfo_S2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 + _D59TypeInfo_S3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 + _D59TypeInfo_S3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 + _D59TypeInfo_S3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT7_intval6__initZ@Base 15.2 + _D59TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 + _D59TypeInfo_S3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6__initZ@Base 15 + _D59TypeInfo_S3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D59TypeInfo_S3std8datetime8timezone13PosixTimeZone10TempTTInfo6__initZ@Base 15 + _D59TypeInfo_S3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D59TypeInfo_S4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 + _D59TypeInfo_S4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 + _D59TypeInfo_S4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 + _D59TypeInfo_xAS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D59TypeInfo_xAyS3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 + _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_6175746f5374617274ZQBf6__initZ@Base 15 + _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_6c65616e5269676874ZQBf6__initZ@Base 15 + _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_6f70656e5269676874ZQBf6__initZ@Base 15 + _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_706970654f6e506f70ZQBf6__initZ@Base 15 + _D60TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range6__initZ@Base 15 + _D60TypeInfo_S3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk6__initZ@Base 15 + _D60TypeInfo_S3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D60TypeInfo_S3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D60TypeInfo_S3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D60TypeInfo_S3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D60TypeInfo_S3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6__initZ@Base 15 + _D60TypeInfo_S3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6__initZ@Base 15 + _D60TypeInfo_xS3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 + _D60TypeInfo_xS3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6__initZ@Base 15 + _D60TypeInfo_xS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D60TypeInfo_xS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D60TypeInfo_yS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D60TypeInfo_yS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D61TypeInfo_AxS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D61TypeInfo_AxS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D61TypeInfo_AyS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D61TypeInfo_AyS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D61TypeInfo_E4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 + _D61TypeInfo_E4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 + _D61TypeInfo_E4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 + _D61TypeInfo_PxS3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 + _D61TypeInfo_S3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6__initZ@Base 15 + _D61TypeInfo_S3std5regex8internal12backtracking9CtContext7CtState6__initZ@Base 15 + _D61TypeInfo_S3std8bitmanip__T27FloatingPointRepresentationTdZQBg6__initZ@Base 15 + _D61TypeInfo_S3std8bitmanip__T27FloatingPointRepresentationTfZQBg6__initZ@Base 15 + _D61TypeInfo_S3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6__initZ@Base 15 + _D61TypeInfo_S4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 + _D61TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 + _D61TypeInfo_S4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 + _D61TypeInfo_S4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 + _D61TypeInfo_xAS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D61TypeInfo_xAS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D61TypeInfo_xPS3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 + _D61TypeInfo_xS3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D61TypeInfo_xS3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D61TypeInfo_xS3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D61TypeInfo_xS3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D62TypeInfo_AS3std5regex8internal12backtracking9CtContext7CtState6__initZ@Base 15 + _D62TypeInfo_E4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 + _D62TypeInfo_S3std12experimental9allocator10mallocator10Mallocator6__initZ@Base 15 + _D62TypeInfo_S3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm6__initZ@Base 15 + _D62TypeInfo_S4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 + _D62TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 + _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_616c6c6f636174654743ZQBi6__initZ@Base 15 + _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_65786861757374697665ZQBi6__initZ@Base 15 + _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBi6__initZ@Base 15 + _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_6d756c7469626c6f636bZQBi6__initZ@Base 15 + _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_736f72744f7574707574ZQBi6__initZ@Base 15 + _D63TypeInfo_E4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 + _D63TypeInfo_S3etc1c4odbc6odbc3233tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D63TypeInfo_S3etc1c4odbc6odbc6433tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D63TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6__initZ@Base 15 + _D63TypeInfo_S3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6__initZ@Base 15 + _D63TypeInfo_S3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6__initZ@Base 15 + _D63TypeInfo_S3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D63TypeInfo_S3std8datetime8timezone13PosixTimeZone14TransitionType6__initZ@Base 15 + _D63TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 + _D63TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo6__initZ@Base 15.2 + _D64TypeInfo_AS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D64TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 + _D64TypeInfo_OS3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6__initZ@Base 15 + _D64TypeInfo_PS3std8datetime8timezone13PosixTimeZone14TransitionType6__initZ@Base 15 + _D64TypeInfo_S3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl6__initZ@Base 15 + _D64TypeInfo_S3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl6__initZ@Base 15 + _D64TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 + _D64TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp6__initZ@Base 15.2 + _D64TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 + _D64TypeInfo_xS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D65TypeInfo_AxS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D65TypeInfo_E3std8typecons__T4FlagVAyaa11_776974685061727469616cZQBk6__initZ@Base 15 + _D65TypeInfo_E4core3sys5linux10perf_event26perf_hw_cache_op_result_id6__initZ@Base 15 + _D65TypeInfo_S3std12experimental9allocator12gc_allocator11GCAllocator6__initZ@Base 15 + _D65TypeInfo_S3std4math10operations__T23FloatingPointBitpatternTdZQBc6__initZ@Base 15 + _D65TypeInfo_S3std4math10operations__T23FloatingPointBitpatternTeZQBc6__initZ@Base 15 + _D65TypeInfo_S3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm6__initZ@Base 15 + _D65TypeInfo_S3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6__initZ@Base 15 + _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 + _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 + _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 + _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTaTaTaZQtFKaKaZ1S6__initZ@Base 15 + _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTkTkTkZQtFKkKkZ1S6__initZ@Base 15 + _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTmTmTmZQtFKmKmZ1S6__initZ@Base 15 + _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTwTwTwZQtFKwKwZ1S6__initZ@Base 15 + _D65TypeInfo_xAS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D65TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 + _D66TypeInfo_S3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn6__initZ@Base 15 + _D66TypeInfo_S3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn6__initZ@Base 15 + _D66TypeInfo_S3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn6__initZ@Base 15 + _D66TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw6__initZ@Base 15 + _D66TypeInfo_S4core8internal8lifetime__T10emplaceRefTyaTaThZQuFKaKhZ1S6__initZ@Base 15 + _D66TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr6__initZ@Base 15.2 + _D66TypeInfo_xS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D67TypeInfo_E3std8typecons__T4FlagVAyaa12_437265617465466f6c646572ZQBm6__initZ@Base 15 + _D67TypeInfo_E3std8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBm6__initZ@Base 15 + _D67TypeInfo_PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D67TypeInfo_S3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 + _D67TypeInfo_S3std3uni__T10assumeSizeS_DQBaQz5low_8FNaNbNiNfkZkVmi8ZQBr6__initZ@Base 15 + _D67TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 + _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 + _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 + _D67TypeInfo_xPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D68TypeInfo_AxPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D68TypeInfo_E4core3sys5linux10perf_event29perf_branch_sample_type_shift6__initZ@Base 15 + _D68TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10IsDelegate6__initZ@Base 15 + _D68TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__initZ@Base 15 + _D68TypeInfo_S3std4math11exponential__T5ilogbTdZQjFNaNbNiNexdZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S3std4math11exponential__T5ilogbTeZQjFNaNbNiNexeZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S3std4math11exponential__T5ilogbTfZQjFNaNbNiNexfZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S3std4math8rounding__T9floorImplTdZQnFNaNbNiNexdZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S3std4math8rounding__T9floorImplTeZQnFNaNbNiNexeZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S3std4math8rounding__T9floorImplTfZQnFNaNbNiNexfZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 + _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 + _D68TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D68TypeInfo_S4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFKaKxaZ1S6__initZ@Base 15 + _D68TypeInfo_xS3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 + _D69TypeInfo_E3std8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBo6__initZ@Base 15 + _D69TypeInfo_E3std8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBo6__initZ@Base 15 + _D69TypeInfo_PxS3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 + _D69TypeInfo_S3std12experimental9allocator10mallocator17AlignedMallocator6__initZ@Base 15 + _D69TypeInfo_S3std12experimental9allocator14mmap_allocator13MmapAllocator6__initZ@Base 15 + _D69TypeInfo_S3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6__initZ@Base 15 + _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz6__initZ@Base 15 + _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz6__initZ@Base 15 + _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz6__initZ@Base 15 + _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz6__initZ@Base 15 + _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz6__initZ@Base 15 + _D69TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D69TypeInfo_xPS3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 + _D69TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__initZ@Base 15 + _D69TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D6Object6__initZ@Base 15 + _D6Object6__vtblZ@Base 15 + _D6Object7__ClassZ@Base 15 + _D6object10ModuleInfo11xgetMembersMxFNaNbNdNiZPv@Base 15 + _D6object10ModuleInfo12localClassesMxFNaNbNdNiNjZAC14TypeInfo_Class@Base 15 + _D6object10ModuleInfo15importedModulesMxFNaNbNdNiNjZAyPSQCcQBy@Base 15 + _D6object10ModuleInfo4ctorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo4dtorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo4nameMxFNaNbNdNiNjZAya@Base 15 + _D6object10ModuleInfo5flagsMxFNaNbNdNiZk@Base 15 + _D6object10ModuleInfo5ictorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo5indexMxFNaNbNdNiZk@Base 15 + _D6object10ModuleInfo6__initZ@Base 15 + _D6object10ModuleInfo6addrOfMxFNaNbNiNjiZPv@Base 15 + _D6object10ModuleInfo7opApplyFMDFPSQBhQBdZiZi@Base 15 + _D6object10ModuleInfo7tlsctorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo7tlsdtorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo8opAssignMFMxSQBhQBdZv@Base 15 + _D6object10ModuleInfo8unitTestMxFNaNbNdNiZPFZv@Base 15 + _D6object10_xopEqualsFIPvIQdZb@Base 15 + _D6object10getElementFNaNbNeNkMNgC8TypeInfoZNgQn@Base 15 + _D6object11__moduleRefZ@Base 15 + _D6object12__ModuleInfoZ@Base 15 + _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZ15hasCustomToHashFNaNbNeMxQBrZb@Base 15 + _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZm@Base 15 + _D6object12setSameMutexFOC6ObjectOQjZv@Base 15 + _D6object13TypeInfo_Enum11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object13TypeInfo_Enum4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object13TypeInfo_Enum4swapMxFPvQcZv@Base 15 + _D6object13TypeInfo_Enum5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object13TypeInfo_Enum5offTiMxFZAxSQBj14OffsetTypeInfo@Base 15 + _D6object13TypeInfo_Enum5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object13TypeInfo_Enum6equalsMxFIPvIQdZb@Base 15 + _D6object13TypeInfo_Enum6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object13TypeInfo_Enum6talignMxFNaNbNdNiNfZm@Base 15 + _D6object13TypeInfo_Enum7compareMxFIPvIQdZi@Base 15 + _D6object13TypeInfo_Enum7destroyMxFPvZv@Base 15 + _D6object13TypeInfo_Enum7getHashMxFNbNfMxPvZm@Base 15 + _D6object13TypeInfo_Enum8opEqualsMFC6ObjectZb@Base 15 + _D6object13TypeInfo_Enum8postblitMxFPvZv@Base 15 + _D6object13TypeInfo_Enum8toStringMxFNaNbNfZAya@Base 15 + _D6object14OffsetTypeInfo11__xopEqualsMxFKxSQBqQBmZb@Base 15 + _D6object14OffsetTypeInfo6__initZ@Base 15 + _D6object14OffsetTypeInfo9__xtoHashFNbNeKxSQBpQBlZm@Base 15 + _D6object14TypeInfo_Array11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object14TypeInfo_Array4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object14TypeInfo_Array4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Array5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Array5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Array6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Array6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object14TypeInfo_Array6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Array7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Array7getHashMxFNbNeMxPvZm@Base 15 + _D6object14TypeInfo_Array8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Array8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 + _D6object14TypeInfo_Class11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object14TypeInfo_Class4findFMxAaZxCQBd@Base 15 + _D6object14TypeInfo_Class4infoMxFNaNbNdNiNlNjNfZxCQBp@Base 15 + _D6object14TypeInfo_Class5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Class5offTiMxFNaNbNdZAxSQBq14OffsetTypeInfo@Base 15 + _D6object14TypeInfo_Class5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Class6createMxFZC6Object@Base 15 + _D6object14TypeInfo_Class6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Class6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object14TypeInfo_Class7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Class7getHashMxFNbNeMxPvZm@Base 15 + _D6object14TypeInfo_Class8isBaseOfMxFNaNbNiNeMxCQBnZb@Base 15 + _D6object14TypeInfo_Class8opEqualsMxFNbNfxC8TypeInfoZb@Base 15 + _D6object14TypeInfo_Class8toStringMxFNaNbNfZAya@Base 15 + _D6object14TypeInfo_Class8typeinfoMxFNaNbNdNiNlNjNfZxCQBt@Base 15 + _D6object14TypeInfo_Const11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object14TypeInfo_Const4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object14TypeInfo_Const4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Const5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Const5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Const6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Const6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Const7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Const7getHashMxFNbNfMxPvZm@Base 15 + _D6object14TypeInfo_Const8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Const8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Inout8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Tuple11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object14TypeInfo_Tuple4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Tuple5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Tuple6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Tuple6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Tuple7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Tuple7destroyMxFPvZv@Base 15 + _D6object14TypeInfo_Tuple7getHashMxFNbNfMxPvZm@Base 15 + _D6object14TypeInfo_Tuple8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Tuple8postblitMxFPvZv@Base 15 + _D6object14TypeInfo_Tuple8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Shared8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 + _D6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 + _D6object15TypeInfo_Struct11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object15TypeInfo_Struct4nameMxFNbNdNeZ19demangledNamesCacheHPxvAya@Base 15 + _D6object15TypeInfo_Struct4nameMxFNbNdNeZAya@Base 15 + _D6object15TypeInfo_Struct5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object15TypeInfo_Struct5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Struct6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D6object15TypeInfo_Struct6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object15TypeInfo_Struct6talignMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Struct6toHashMxFNbNfZm@Base 15 + _D6object15TypeInfo_Struct7compareMxFNaNbNeIPvIQdZi@Base 15 + _D6object15TypeInfo_Struct7destroyMxFPvZv@Base 15 + _D6object15TypeInfo_Struct7getHashMxFNaNbNeMxPvZm@Base 15 + _D6object15TypeInfo_Struct8opEqualsMFC6ObjectZb@Base 15 + _D6object15TypeInfo_Struct8postblitMxFPvZv@Base 15 + _D6object15TypeInfo_Struct8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Vector11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object15TypeInfo_Vector4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object15TypeInfo_Vector4swapMxFPvQcZv@Base 15 + _D6object15TypeInfo_Vector5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object15TypeInfo_Vector5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Vector6equalsMxFIPvIQdZb@Base 15 + _D6object15TypeInfo_Vector6talignMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Vector7compareMxFIPvIQdZi@Base 15 + _D6object15TypeInfo_Vector7getHashMxFNbNfMxPvZm@Base 15 + _D6object15TypeInfo_Vector8opEqualsMFC6ObjectZb@Base 15 + _D6object15TypeInfo_Vector8toStringMxFNbNfZAya@Base 15 + _D6object16TypeInfo_Pointer11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object16TypeInfo_Pointer4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object16TypeInfo_Pointer4swapMxFPvQcZv@Base 15 + _D6object16TypeInfo_Pointer5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object16TypeInfo_Pointer5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object16TypeInfo_Pointer6equalsMxFIPvIQdZb@Base 15 + _D6object16TypeInfo_Pointer7compareMxFIPvIQdZi@Base 15 + _D6object16TypeInfo_Pointer7getHashMxFNbNeMxPvZm@Base 15 + _D6object16TypeInfo_Pointer8opEqualsMFC6ObjectZb@Base 15 + _D6object16TypeInfo_Pointer8toStringMxFNbNfZAya@Base 15 + _D6object17TypeInfo_Delegate11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object17TypeInfo_Delegate5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object17TypeInfo_Delegate5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Delegate6equalsMxFIPvIQdZb@Base 15 + _D6object17TypeInfo_Delegate6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object17TypeInfo_Delegate6talignMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Delegate7compareMxFIPvIQdZi@Base 15 + _D6object17TypeInfo_Delegate7getHashMxFNbNeMxPvZm@Base 15 + _D6object17TypeInfo_Delegate8opEqualsMFC6ObjectZb@Base 15 + _D6object17TypeInfo_Delegate8toStringMxFNaNbNeZAya@Base 15 + _D6object17TypeInfo_Function11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object17TypeInfo_Function5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Function6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object17TypeInfo_Function8opEqualsMFC6ObjectZb@Base 15 + _D6object17TypeInfo_Function8toStringMxFNaNbNeZAya@Base 15 + _D6object18TypeInfo_Interface11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object18TypeInfo_Interface5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object18TypeInfo_Interface5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object18TypeInfo_Interface6equalsMxFIPvIQdZb@Base 15 + _D6object18TypeInfo_Interface7compareMxFIPvIQdZi@Base 15 + _D6object18TypeInfo_Interface7getHashMxFNbNeMxPvZm@Base 15 + _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxC14TypeInfo_ClassZb@Base 15 + _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxCQBrZb@Base 15 + _D6object18TypeInfo_Interface8opEqualsMFC6ObjectZb@Base 15 + _D6object18TypeInfo_Interface8toStringMxFNaNbNfZAya@Base 15 + _D6object18TypeInfo_Invariant8toStringMxFNbNfZAya@Base 15 + _D6object19__cpp_type_info_ptr6__initZ@Base 15 + _D6object19__cpp_type_info_ptr6__vtblZ@Base 15 + _D6object19__cpp_type_info_ptr7__ClassZ@Base 15 + _D6object20TypeInfo_StaticArray11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object20TypeInfo_StaticArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object20TypeInfo_StaticArray4swapMxFPvQcZv@Base 15 + _D6object20TypeInfo_StaticArray5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object20TypeInfo_StaticArray5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object20TypeInfo_StaticArray6equalsMxFIPvIQdZb@Base 15 + _D6object20TypeInfo_StaticArray6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object20TypeInfo_StaticArray6talignMxFNaNbNdNiNfZm@Base 15 + _D6object20TypeInfo_StaticArray7compareMxFIPvIQdZi@Base 15 + _D6object20TypeInfo_StaticArray7destroyMxFPvZv@Base 15 + _D6object20TypeInfo_StaticArray7getHashMxFNbNeMxPvZm@Base 15 + _D6object20TypeInfo_StaticArray8opEqualsMFC6ObjectZb@Base 15 + _D6object20TypeInfo_StaticArray8postblitMxFPvZv@Base 15 + _D6object20TypeInfo_StaticArray8toStringMxFNbNfZAya@Base 15 + _D6object25TypeInfo_AssociativeArray11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object25TypeInfo_AssociativeArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object25TypeInfo_AssociativeArray5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object25TypeInfo_AssociativeArray5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object25TypeInfo_AssociativeArray6equalsMxFNeIPvIQdZb@Base 15 + _D6object25TypeInfo_AssociativeArray6talignMxFNaNbNdNiNfZm@Base 15 + _D6object25TypeInfo_AssociativeArray7getHashMxFNbNeMxPvZm@Base 15 + _D6object25TypeInfo_AssociativeArray8opEqualsMFC6ObjectZb@Base 15 + _D6object25TypeInfo_AssociativeArray8toStringMxFNbNfZAya@Base 15 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn11__xopEqualsMxFKxSQCtQCp__TQBrTQBoTmZQCbZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn9__xtoHashFNbNeKxSQCsQCo__TQBqTQBnTmZQCaZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp11__xopEqualsMxFKxSQCvQCr__TQBtTQBqTQBqZQCfZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp9__xtoHashFNbNeKxSQCuQCq__TQBsTQBpTQBpZQCeZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr11__xopEqualsMxFKxSQCxQCt__TQBvTQBsTQBsZQChZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr9__xtoHashFNbNeKxSQCwQCs__TQBuTQBrTQBrZQCgZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk11__xopEqualsMxFKxSQDrQDn__TQCpTQCmTQCmZQDbZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk9__xtoHashFNbNeKxSQDqQDm__TQCoTQClTQClZQDaZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt11__xopEqualsMxFKxSQEaQDw__TQCyTQCvTQCvZQDkZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt9__xtoHashFNbNeKxSQDzQDv__TQCxTQCuTQCuZQDjZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo11__xopEqualsMxFKxSQCuQCq__TQBsTQBpTQBtZQCeZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo9__xtoHashFNbNeKxSQCtQCp__TQBrTQBoTQBsZQCdZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi11__xopEqualsMxFKxSQDpQDl__TQCnTQCkTQCkZQCzZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi9__xtoHashFNbNeKxSQDoQDk__TQCmTQCjTQCjZQCyZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg11__xopEqualsMxFKxSQDnQDj__TQClTQCiTQCiZQCxZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg9__xtoHashFNbNeKxSQDmQDi__TQCkTQChTQChZQCwZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp11__xopEqualsMxFKxSQDwQDs__TQCuTQCrTQCvZQDgZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp9__xtoHashFNbNeKxSQDvQDr__TQCtTQCqTQCuZQDfZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp11__xopEqualsMxFKxSQCvQCr__TQBtTQBqTQBqZQCfZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp9__xtoHashFNbNeKxSQCuQCq__TQBsTQBpTQBpZQCeZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj11__xopEqualsMxFKxSQDqQDm__TQCoTQClTQBsZQDaZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj9__xtoHashFNbNeKxSQDpQDl__TQCnTQCkTQBrZQCzZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg11__xopEqualsMxFKxSQDnQDj__TQClTQCiTbZQCvZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg9__xtoHashFNbNeKxSQDmQDi__TQCkTQChTbZQCuZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo11__fieldDtorMFNaNbNiNeZv@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo11__xopEqualsMxFKxSQFvQFr__TQEtTQEqTQCxZQFfZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo15__fieldPostblitMFNaNbNiNlNeZv@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo8opAssignMFNaNbNcNiNjNeSQGaQFw__TQEyTQEvTQDcZQFkZQBa@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo9__xtoHashFNbNeKxSQFuQFq__TQEsTQEpTQCwZQFeZm@Base 15.2 + _D6object2AA6__initZ@Base 15 + _D6object5Error6__ctorMFNaNbNiNfAyaCQBi9ThrowableZCQBxQBt@Base 15 + _D6object5Error6__ctorMFNaNbNiNfAyaQdmCQBl9ThrowableZCQCaQBw@Base 15 + _D6object5Error6__initZ@Base 15 + _D6object5Error6__vtblZ@Base 15 + _D6object5Error7__ClassZ@Base 15 + _D6object6Object5opCmpMFCQqZi@Base 15 + _D6object6Object6toHashMFNbNeZm@Base 15 + _D6object6Object7Monitor11__InterfaceZ@Base 15 + _D6object6Object7factoryFAyaZCQv@Base 15 + _D6object6Object8opEqualsMFCQtZb@Base 15 + _D6object6Object8toStringMFZAya@Base 15 + _D6object7AARange6__initZ@Base 15 + _D6object7_xopCmpFIPvIQdZb@Base 15 + _D6object8TypeInfo4nextMNgFNaNbNdNiZNgCQBe@Base 15 + _D6object8TypeInfo4swapMxFPvQcZv@Base 15 + _D6object8TypeInfo5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object8TypeInfo5offTiMxFZAxSQBd14OffsetTypeInfo@Base 15 + _D6object8TypeInfo5opCmpMFC6ObjectZi@Base 15 + _D6object8TypeInfo5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object8TypeInfo6equalsMxFIPvIQdZb@Base 15 + _D6object8TypeInfo6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D6object8TypeInfo6talignMxFNaNbNdNiNfZm@Base 15 + _D6object8TypeInfo6toHashMxFNbNeZm@Base 15 + _D6object8TypeInfo7compareMxFIPvIQdZi@Base 15 + _D6object8TypeInfo7destroyMxFPvZv@Base 15 + _D6object8TypeInfo7getHashMxFNbNeMxPvZm@Base 15 + _D6object8TypeInfo8opEqualsMFC6ObjectZb@Base 15 + _D6object8TypeInfo8opEqualsMxFNbNfxCQBbZb@Base 15 + _D6object8TypeInfo8postblitMxFPvZv@Base 15 + _D6object8TypeInfo8toStringMxFNbNfZAya@Base 15 + _D6object9Exception6__ctorMFNaNbNiNfAyaCQBm9ThrowableQrmZCQBx@Base 15 + _D6object9Exception6__ctorMFNaNbNiNfAyaQdmCQBp9ThrowableZCQBx@Base 15 + _D6object9Interface11__xopEqualsMxFKxSQBkQBgZb@Base 15 + _D6object9Interface6__initZ@Base 15 + _D6object9Interface9__xtoHashFNbNeKxSQBjQBfZm@Base 15 + _D6object9Throwable13chainTogetherFNaNbNiNkMCQBrQBnNkMQkZQn@Base 15 + _D6object9Throwable4nextMFNaNbNdNiNlNfCQBlQBhZv@Base 15 + _D6object9Throwable4nextMNgFNaNbNdNiNjNlNfZNgCQBsQBo@Base 15 + _D6object9Throwable6__ctorMFNaNbNiNfAyaCQBmQBiZQi@Base 15 + _D6object9Throwable6__ctorMFNaNbNiNfAyaQdmCQBpQBlZQi@Base 15 + _D6object9Throwable6__dtorMFNbNlNeZv@Base 15 + _D6object9Throwable6__initZ@Base 15 + _D6object9Throwable6__vtblZ@Base 15 + _D6object9Throwable7__ClassZ@Base 15 + _D6object9Throwable7messageMxFNbNfZAxa@Base 15 + _D6object9Throwable7opApplyMFMDFCQBfQBbZiZi@Base 15 + _D6object9Throwable8refcountMFNaNbNcNiNlNjZk@Base 15 + _D6object9Throwable8toStringMFZAya@Base 15 + _D6object9Throwable8toStringMxFMDFIAaZvZv@Base 15 + _D6object9Throwable9TraceInfo11__InterfaceZ@Base 15 + _D6object__T10RTInfoImplVAmA2i104i18ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i2048ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i2ZQyyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i104i4160ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i4776ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i680ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i6824ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i7083ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i11178ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i11274ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i1225ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i3ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i4776ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i5462ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i721ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i8192ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i8301ZQBbyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i120i16424ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i17064ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i21610ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i4ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i5462ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i680ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i7920ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i11304ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i12161ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i12ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i512ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i54610ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i12i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i136i2728ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i136i43178ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i136i76461ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i137i4900ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i144i62120ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i144i76461ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i152i262144ZQBdyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i156i4900ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i2076ZQBbyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i168i2ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i347816ZQBdyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i4244ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i4644ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i169i112492ZQBdyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i3ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i184i6990180ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i184i8125584ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i185i8125584ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i192i3331414ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i192i8388608ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i200i23767396ZQBfyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i200i24902800ZQBfyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i200i3331414ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i208i41943044ZQBfyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i212i2728ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i216i41943044ZQBfyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i216i8011774ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i224i183150948ZQBgyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i240i2728ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i3ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i6ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i7ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i256i8388608ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i257i2859116900ZQBhyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i272i1ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i272i2158144171ZQBhyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i28i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i10ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i11ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i12ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i13ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i14ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i15ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i3ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i6ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i7ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i8ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i9ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i36i8ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i10ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i11ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i13ZQyyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i40i15ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i16ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i18ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i20ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i21ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i22ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i23ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i24ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i28ZQyyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i40i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i30ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i31ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i8ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i44i12ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i15ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i16ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i20ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i24ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i26ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i31ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i32ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i42ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i44ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i45ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i56ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i59ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i63ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i123ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i18ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i21ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i24ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i28ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i40ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i42ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i64ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i80ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i84ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i10ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i128ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i134ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i168ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i34ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i60ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i9ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i138ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i168ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i171ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i256ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i296ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i168ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i241ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i248ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i512ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i514ZQzyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i80i516ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i546ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i672ZQzyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i80i808ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i84i680ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i88i1028ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i88i1462ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i88i1ZQxyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i88i680ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i8i1ZQwyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i1023ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i1048ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i1154ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i2728ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i680ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i90ZQyyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i97i2728ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA3i968i268435462i0ZQBiyG3m@Base 15 + _D6object__T10RTInfoImplVAmA4i1064i549755827528i0i16ZQBpyG4m@Base 15 + _D6object__T10RTInfoImplVAmA4i1088i549755827528i0i240ZQBqyG4m@Base 15 + _D6object__T10RTInfoImplVAmA4i1152i144107491482206208i565149010231808i0ZQCiyG4m@Base 15 + _D6object__T10_aaToRangeHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBzFNaNbNiNfKQByZSQDb7AARange@Base 15 + _D6object__T16assumeSafeAppendTS3std8typecons__T5TupleTkTkTkZQnZQCaFNbNcKNgASQBtQBs__TQBmTkTkTkZQBwZNgQBb@Base 15 + _D6object__T16assumeSafeAppendTaZQvFNbNgAaZNgQf@Base 15 + _D6object__T16assumeSafeAppendTkZQvFNbNcKNgAkZNgQf@Base 15 + _D6object__T3dupTAyaZQjFNaNbNdNfAxAyaZAQw@Base 15 + _D6object__T3dupTaZQhFNaNbNdNfAxaZAa@Base 15 + _D6object__T3dupThZQhFNaNbNdNfAxhZAh@Base 15 + _D6object__T3dupTkZQhFNaNbNdNfAxkZAk@Base 15 + _D6object__T3dupTmZQhFNaNbNdNfAxmZAm@Base 15 + _D6object__T4idupTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNdNfAQCmZAySQCsQCrQClQCfQBt@Base 15 + _D6object__T4idupTS3std8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNdNfAQCmZAySQCsQCrQClQCfQBt@Base 15 + _D6object__T4idupTaZQiFNaNbNdNfAaZAya@Base 15 + _D6object__T4idupTxaZQjFNaNbNdNfAxaZAya@Base 15 + _D6object__T4idupTxhZQjFNaNbNdNfAxhZAyh@Base 15 + _D6object__T4keysHTHC4core6thread8osthread6ThreadQBdTQBhTQBlZQBxFNaNbNdNfQCcZAQCg@Base 15 + _D6object__T4keysHTHS3std11concurrency3TidbTbTQBaZQBmFNaNbNdNfQBrZAQBv@Base 15 + _D6object__T5clearTAyaTQeZQoFNaNbNeHQrQtZv@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result4saveMFNaNbNdNiNfZSQDv__TQDrHTQDmTQDpTQDqZQEiFNaNbNiNfQEkZQCn@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result5frontMFNaNbNcNdNiNeZQCz@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result6__initZ@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZSQCw__TQCsHTQCnTQCqTQCrZQDjFNaNbNiNfQDlZ6Result@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQEmFNaNbNiNfKQClZv@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQEnFNaNbNiNfKQCmZv@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf3utf__T10byCodeUnitTQCgZQrFQCnZ14ByCodeUnitImplZQEoFNaNbNiNfKQCnZv@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf4conv__T7toCharsVhi10TaVEQDh5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQFnFNaNbNiNfKQDmZv@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf5range__T10OnlyResultTaZQpZQDtFNaNbNiNfKQBsZv@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf5range__T4TakeTSQCyQt__T6RepeatTaZQkZQBcZQEhFNaNbNiNfKQCgZv@Base 15 + _D6object__T7destroyVbi1TC4core2gc11gcinterface2GCZQBnFNbQBgZv@Base 15 + _D6object__T7destroyVbi1TC6ObjectZQwFNbQoZv@Base 15 + _D6object__T7destroyVbi1TS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 + _D6object__T7destroyVbi1TS3std11concurrency7MessageZQBoFNfKQBiZv@Base 15 + _D6object__T7destroyVbi1TS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQJvFNaNbNiKQJtZv@Base 15 + _D6object__T7destroyVbi1TS3std3net4curl3FTP4ImplZQBlFKQBdZv@Base 15 + _D6object__T7destroyVbi1TS3std3net4curl4HTTP4ImplZQBmFKQBeZv@Base 15 + _D6object__T7destroyVbi1TS3std3net4curl4SMTP4ImplZQBmFKQBeZv@Base 15 + _D6object__T7destroyVbi1TS3std4file15DirIteratorImplZQBpFNfKQBjZv@Base 15 + _D6object__T7destroyVbi1TS3std5stdio4FileZQBeFNfKQyZv@Base 15 + _D6object__T7destroyVbi1TS4core2gc11gcinterface4RootZQBpFNaNbNiNfKQBpZv@Base 15 + _D6object__T7destroyVbi1TS4core2gc11gcinterface5RangeZQBqFNaNbNiNfKQBqZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNfKQDoZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNfKQDqZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPySQCt10ModuleInfoTiZQBe4NodeZQDkFNaNbNiNfKQDkZv@Base 15 + _D6object__T7reserveTS3std5regex8internal2ir8BytecodeZQBqFNaNbNeKAQBtmZm@Base 15 + _D6object__T7reserveTaZQlFNaNbNeKAamZm@Base 15 + _D6object__T7reserveTuZQlFNaNbNeKAumZm@Base 15 + _D6object__T8capacityTAyaZQoFNaNbNdNeAQqZm@Base 15 + _D6object__T8capacityTC3std3zip13ArchiveMemberZQBjFNaNbNdNeAQBmZm@Base 15 + _D6object__T8capacityTS3std6socket11AddressInfoZQBkFNaNbNdNeAQBnZm@Base 15 + _D6object__T8capacityTaZQmFNaNbNdNeAaZm@Base 15 + _D6object__T8capacityThZQmFNaNbNdNeAhZm@Base 15 + _D6object__T8capacityTlZQmFNaNbNdNeAlZm@Base 15 + _D6object__T8opEqualsTC14TypeInfo_ClassTQsZQBfFNbNfQBdQBgZb@Base 15 + _D6object__T8opEqualsTC3std11concurrency10MessageBoxTQBfZQBtFQBnQBqZb@Base 15 + _D6object__T8opEqualsTC6ObjectTQjZQwFQpQrZb@Base 15 + _D6object__T8opEqualsTC8TypeInfoTC14TypeInfo_ConstZQBnFQBhQzZb@Base 15 + _D6object__T8opEqualsTC8TypeInfoTC15TypeInfo_StructZQBoFQBiQBaZb@Base 15 + _D6object__T8opEqualsTC8TypeInfoTQlZQyFNbNfQvQxZb@Base 15 + _D6object__T8opEqualsTC8TypeInfoTxCQmZQBaFNbNfQyxQpZb@Base 15 + _D6object__T8opEqualsTxC14TypeInfo_ClassTxQtZQBhFNbNfxQBfxQBjZb@Base 15 + _D6object__T8opEqualsTxC15TypeInfo_StructTxQuZQBiFxQBcxQBgZb@Base 15 + _D6object__T8opEqualsTxC3std11concurrency10MessageBoxTxQBgZQBvFxQBpxQBtZb@Base 15 + _D6object__T8opEqualsTxC3std11parallelism8TaskPoolTxQBdZQBsFxQBmxQBqZb@Base 15 + _D6object__T8opEqualsTxC3std3zip13ArchiveMemberTxQBaZQBpFxQBjxQBnZb@Base 15 + _D6object__T8opEqualsTxC3std6logger4core6LoggerTxQBaZQBpFxQBjxQBnZb@Base 15 + _D6object__T8opEqualsTxC3std6socket7AddressTxQwZQBkFxQBexQBiZb@Base 15 + _D6object__T8opEqualsTxC3std7process3PidTxQtZQBhFxQBbxQBfZb@Base 15 + _D6object__T8opEqualsTxC3std8datetime8timezone8TimeZoneTxQBiZQBxFxQBrxQBvZb@Base 15 + _D6object__T8opEqualsTxC4core6thread8osthread6ThreadTxQBfZQBuFxQBoxQBsZb@Base 15.2 + _D6object__T8opEqualsTxC6ObjectTxQkZQyFxQrxQuZb@Base 15 + _D6object__T8opEqualsTxC8TypeInfoTxQmZQBaFNbNfxQyxQBbZb@Base 15 + _D6object__T8opEqualsTxCQw9ThrowableTxQpZQBdFxQxxQBaZb@Base 15 + _D70TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D70TypeInfo_PxS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D70TypeInfo_S3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 + _D70TypeInfo_S3std3uni__T10assumeSizeS_DQBaQz8midlow_8FNaNbNiNfkZkVmi8ZQBu6__initZ@Base 15 + _D70TypeInfo_S3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6__initZ@Base 15 + _D70TypeInfo_S3std6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRange6__initZ@Base 15 + _D70TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D70TypeInfo_xPS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D70TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D71TypeInfo_E3std8typecons__T4FlagVAyaa14_6b656570536570617261746f7273ZQBq6__initZ@Base 15 + _D71TypeInfo_E3std8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBq6__initZ@Base 15 + _D71TypeInfo_S3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6__initZ@Base 15 + _D71TypeInfo_S4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S6__initZ@Base 15 + _D71TypeInfo_xS3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 + _D72TypeInfo_PxS3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 + _D72TypeInfo_S3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink6__initZ@Base 15 + _D72TypeInfo_S3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg6__initZ@Base 15 + _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 + _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 + _D72TypeInfo_xPS3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 + _D73TypeInfo_S3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__initZ@Base 15 + _D73TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__initZ@Base 15 + _D74TypeInfo_S3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__initZ@Base 15 + _D74TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__initZ@Base 15 + _D74TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy6__initZ@Base 15 + _D74TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy6__initZ@Base 15 + _D74TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd6__initZ@Base 15 + _D74TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D74TypeInfo_xS3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__initZ@Base 15 + _D74TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__initZ@Base 15 + _D75TypeInfo_E3std8typecons__T4FlagVAyaa16_616c6c6f774461794f766572666c6f77ZQBu6__initZ@Base 15 + _D75TypeInfo_S3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu6__initZ@Base 15 + _D75TypeInfo_xS3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__initZ@Base 15 + _D75TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D76TypeInfo_S3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 + _D76TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa6__initZ@Base 15 + _D77TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__initZ@Base 15 + _D77TypeInfo_S3std8datetime4date4Date14isoWeekAndYearMxFNaNbNdNfZ14ISOWeekAndYear6__initZ@Base 15 + _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D77TypeInfo_S4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D77TypeInfo_xS3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 + _D77TypeInfo_xS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__initZ@Base 15 + _D78TypeInfo_PxS3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 + _D78TypeInfo_S3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6__initZ@Base 15 + _D78TypeInfo_S3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6__initZ@Base 15 + _D78TypeInfo_S4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D78TypeInfo_xPS3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 + _D78TypeInfo_xS4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D79TypeInfo_E3std8typecons__T4FlagVAyaa18_616c6c4b6e6f776e53616d654c656e677468ZQBy6__initZ@Base 15 + _D79TypeInfo_E3std8typecons__T4FlagVAyaa18_707265736572766541747472696275746573ZQBy6__initZ@Base 15 + _D79TypeInfo_S2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 + _D79TypeInfo_S4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D79TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D79TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D80TypeInfo_E3std12experimental9allocator15building_blocks15stats_collector7Options6__initZ@Base 15 + _D80TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6__initZ@Base 15 + _D80TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6__initZ@Base 15 + _D80TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6__initZ@Base 15 + _D80TypeInfo_S4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D80TypeInfo_S4core8internal5array7casting__T11__ArrayCastThTuZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 + _D80TypeInfo_S4core8internal5array7casting__T11__ArrayCastThTwZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 + _D80TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D80TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D80TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D81TypeInfo_E3std8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCa6__initZ@Base 15 + _D81TypeInfo_S3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc6__initZ@Base 15 + _D81TypeInfo_S3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc6__initZ@Base 15 + _D81TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D82TypeInfo_S3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 + _D82TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg6__initZ@Base 15.2 + _D82TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg6__initZ@Base 15.2 + _D83TypeInfo_AS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D83TypeInfo_S3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i2Z4Impl6__initZ@Base 15 + _D83TypeInfo_S3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i3Z4Impl6__initZ@Base 15 + _D83TypeInfo_S4core8internal5array7casting__T11__ArrayCastTxhTxuZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 + _D83TypeInfo_S4core8internal5array7casting__T11__ArrayCastTxhTxwZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 + _D83TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D84TypeInfo_AxS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D84TypeInfo_S4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D84TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 + _D84TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 + _D84TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi6__initZ@Base 15.2 + _D84TypeInfo_xAS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D85TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D85TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj6__initZ@Base 15.2 + _D86TypeInfo_S3std12experimental9allocator15building_blocks14null_allocator13NullAllocator6__initZ@Base 15 + _D86TypeInfo_S3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result6__initZ@Base 15 + _D86TypeInfo_S4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D86TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk6__initZ@Base 15.2 + _D86TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D87TypeInfo_PxS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D87TypeInfo_S3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg6__initZ@Base 15 + _D87TypeInfo_S3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6__initZ@Base 15 + _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 + _D87TypeInfo_xPS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D88TypeInfo_xS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D89TypeInfo_PxS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D89TypeInfo_S3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__initZ@Base 15 + _D89TypeInfo_S4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D89TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 + _D89TypeInfo_xPS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D8TypeInfo6__initZ@Base 15 + _D8TypeInfo6__vtblZ@Base 15 + _D8TypeInfo7__ClassZ@Base 15 + _D90TypeInfo_AS3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__initZ@Base 15 + _D90TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__initZ@Base 15 + _D90TypeInfo_S3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm6__initZ@Base 15 + _D90TypeInfo_S6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result6__initZ@Base 15 + _D91TypeInfo_S3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__initZ@Base 15 + _D91TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 + _D91TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__initZ@Base 15 + _D92TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__initZ@Base 15 + _D92TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__initZ@Base 15 + _D92TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__initZ@Base 15 + _D92TypeInfo_S3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo6__initZ@Base 15 + _D92TypeInfo_S3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__initZ@Base 15 + _D92TypeInfo_S4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D92TypeInfo_xS3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__initZ@Base 15 + _D93TypeInfo_HS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhSQBw5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D93TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange6__initZ@Base 15 + _D93TypeInfo_S3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D93TypeInfo_S3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D93TypeInfo_S4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 + _D93TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__initZ@Base 15 + _D93TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__initZ@Base 15 + _D93TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__initZ@Base 15 + _D93TypeInfo_xS3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__initZ@Base 15 + _D93TypeInfo_xS4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D94TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S6__initZ@Base 15 + _D94TypeInfo_xS3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D94TypeInfo_xS3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D95TypeInfo_S3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D95TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt6__initZ@Base 15.2 + _D96TypeInfo_S4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S6__initZ@Base 15 + _D97TypeInfo_S3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__initZ@Base 15 + _D98TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S6__initZ@Base 15 + _D98TypeInfo_yS3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__initZ@Base 15 + _D99TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1S6__initZ@Base 15 + _D9Exception6__initZ@Base 15 + _D9Exception6__vtblZ@Base 15 + _D9Exception7__ClassZ@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 + _DTi16_D3std11concurrency14FiberScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 + _DTi16_D3std11concurrency14FiberScheduler5spawnMFNbDFZvZv@Base 15 + _DTi16_D3std11concurrency14FiberScheduler5startMFDFZvZv@Base 15 + _DTi16_D3std11concurrency14FiberScheduler5yieldMFNbZv@Base 15 + _DTi16_D3std11concurrency14FiberScheduler8thisInfoMFNbNcNdZSQCaQBz10ThreadInfo@Base 15 + _DTi16_D3std11concurrency15ThreadScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 + _DTi16_D3std11concurrency15ThreadScheduler5spawnMFDFZvZv@Base 15 + _DTi16_D3std11concurrency15ThreadScheduler5startMFDFZvZv@Base 15 + _DTi16_D3std11concurrency15ThreadScheduler5yieldMFNbZv@Base 15 + _DTi16_D3std11concurrency15ThreadScheduler8thisInfoMFNbNcNdZSQCbQCa10ThreadInfo@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10deallocateMFNbAvZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10reallocateMFNbKAvmZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator11allocateAllMFNbZAv@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13deallocateAllMFNbZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13goodAllocSizeMFNbmZm@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator15alignedAllocateMFNbmkZAv@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator17alignedReallocateMFNbKAvmkZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator22resolveInternalPointerMFNbxPvKAvZSQEj8typecons7Ternary@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator4ownsMFNbAvZSQDm8typecons7Ternary@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator5emptyMFNbZSQDl8typecons7Ternary@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6decRefMFNaNbNiNfZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6expandMFNbKAvmZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6incRefMFNaNbNiNfZv@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator8allocateMFNbmC8TypeInfoZAv@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator9alignmentMFNbNdZk@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10deallocateMOFNbAvZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10reallocateMOFNbKAvmZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk11allocateAllMOFNbZAv@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13deallocateAllMOFNbZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13goodAllocSizeMOFNbmZm@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk15alignedAllocateMOFNbmkZAv@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk17alignedReallocateMOFNbKAvmkZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk22resolveInternalPointerMOFNbxPvKAvZSQHdQDm7Ternary@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk4ownsMOFNbAvZSQGgQCp7Ternary@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk5emptyMOFNbZSQGfQCo7Ternary@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6decRefMOFNaNbNiNeZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6expandMOFNbKAvmZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6incRefMOFNaNbNiNfZv@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk8allocateMOFNbmC8TypeInfoZAv@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk9alignmentMOFNbNdZk@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 + _DTi16_D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 + _ZNKSt10bad_typeid4whatEv@Base 15 + _ZNKSt13bad_exception4whatEv@Base 15 + _ZNKSt8bad_cast4whatEv@Base 15 + _ZNKSt9exception4whatEv@Base 15 + _ZNKSt9type_info4nameEv@Base 15 + _ZNKSt9type_info6beforeEPKS_@Base 15 + _ZNSt9exceptionD1Ev@Base 15 + _ZNSt9type_infoD1Ev@Base 15 + __CPUELT@Base 15 + __CPUMASK@Base 15 + __CPU_ALLOC@Base 15 + __CPU_ALLOC_SIZE@Base 15 + __CPU_COUNT_S@Base 15 + __CPU_FREE@Base 15 + __CPU_ISSET_S@Base 15 + __CPU_SET_S@Base 15 + __atomic_add_fetch_16@Base 15 + __atomic_add_fetch_1@Base 15 + __atomic_add_fetch_2@Base 15 + __atomic_add_fetch_4@Base 15 + __atomic_add_fetch_8@Base 15 + __atomic_and_fetch_16@Base 15 + __atomic_and_fetch_1@Base 15 + __atomic_and_fetch_2@Base 15 + __atomic_and_fetch_4@Base 15 + __atomic_and_fetch_8@Base 15 + __atomic_compare_exchange@Base 15 + __atomic_compare_exchange_16@Base 15 + __atomic_compare_exchange_1@Base 15 + __atomic_compare_exchange_2@Base 15 + __atomic_compare_exchange_4@Base 15 + __atomic_compare_exchange_8@Base 15 + __atomic_exchange@Base 15 + __atomic_exchange_16@Base 15 + __atomic_exchange_1@Base 15 + __atomic_exchange_2@Base 15 + __atomic_exchange_4@Base 15 + __atomic_exchange_8@Base 15 + __atomic_feraiseexcept@Base 15 + __atomic_fetch_add_16@Base 15 + __atomic_fetch_add_1@Base 15 + __atomic_fetch_add_2@Base 15 + __atomic_fetch_add_4@Base 15 + __atomic_fetch_add_8@Base 15 + __atomic_fetch_and_16@Base 15 + __atomic_fetch_and_1@Base 15 + __atomic_fetch_and_2@Base 15 + __atomic_fetch_and_4@Base 15 + __atomic_fetch_and_8@Base 15 + __atomic_fetch_nand_16@Base 15 + __atomic_fetch_nand_1@Base 15 + __atomic_fetch_nand_2@Base 15 + __atomic_fetch_nand_4@Base 15 + __atomic_fetch_nand_8@Base 15 + __atomic_fetch_or_16@Base 15 + __atomic_fetch_or_1@Base 15 + __atomic_fetch_or_2@Base 15 + __atomic_fetch_or_4@Base 15 + __atomic_fetch_or_8@Base 15 + __atomic_fetch_sub_16@Base 15 + __atomic_fetch_sub_1@Base 15 + __atomic_fetch_sub_2@Base 15 + __atomic_fetch_sub_4@Base 15 + __atomic_fetch_sub_8@Base 15 + __atomic_fetch_xor_16@Base 15 + __atomic_fetch_xor_1@Base 15 + __atomic_fetch_xor_2@Base 15 + __atomic_fetch_xor_4@Base 15 + __atomic_fetch_xor_8@Base 15 + __atomic_is_lock_free@Base 15 + __atomic_load@Base 15 + __atomic_load_16@Base 15 + __atomic_load_1@Base 15 + __atomic_load_2@Base 15 + __atomic_load_4@Base 15 + __atomic_load_8@Base 15 + __atomic_nand_fetch_16@Base 15 + __atomic_nand_fetch_1@Base 15 + __atomic_nand_fetch_2@Base 15 + __atomic_nand_fetch_4@Base 15 + __atomic_nand_fetch_8@Base 15 + __atomic_or_fetch_16@Base 15 + __atomic_or_fetch_1@Base 15 + __atomic_or_fetch_2@Base 15 + __atomic_or_fetch_4@Base 15 + __atomic_or_fetch_8@Base 15 + __atomic_store@Base 15 + __atomic_store_16@Base 15 + __atomic_store_1@Base 15 + __atomic_store_2@Base 15 + __atomic_store_4@Base 15 + __atomic_store_8@Base 15 + __atomic_sub_fetch_16@Base 15 + __atomic_sub_fetch_1@Base 15 + __atomic_sub_fetch_2@Base 15 + __atomic_sub_fetch_4@Base 15 + __atomic_sub_fetch_8@Base 15 + __atomic_test_and_set_16@Base 15 + __atomic_test_and_set_1@Base 15 + __atomic_test_and_set_2@Base 15 + __atomic_test_and_set_4@Base 15 + __atomic_test_and_set_8@Base 15 + __atomic_xor_fetch_16@Base 15 + __atomic_xor_fetch_1@Base 15 + __atomic_xor_fetch_2@Base 15 + __atomic_xor_fetch_4@Base 15 + __atomic_xor_fetch_8@Base 15 + __gdc_begin_catch@Base 15 + __gdc_personality_v0@Base 15 + _aApplyRcd1@Base 15 + _aApplyRcd2@Base 15 + _aApplyRcw1@Base 15 + _aApplyRcw2@Base 15 + _aApplyRdc1@Base 15 + _aApplyRdc2@Base 15 + _aApplyRdw1@Base 15 + _aApplyRdw2@Base 15 + _aApplyRwc1@Base 15 + _aApplyRwc2@Base 15 + _aApplyRwd1@Base 15 + _aApplyRwd2@Base 15 + _aApplycd1@Base 15 + _aApplycd2@Base 15 + _aApplycw1@Base 15 + _aApplycw2@Base 15 + _aApplydc1@Base 15 + _aApplydc2@Base 15 + _aApplydw1@Base 15 + _aApplydw2@Base 15 + _aApplywc1@Base 15 + _aApplywc2@Base 15 + _aApplywd1@Base 15 + _aApplywd2@Base 15 + _aaApply2@Base 15 + _aaApply@Base 15 + _aaClear@Base 15 + _aaDelX@Base 15 + _aaEqual@Base 15 + _aaGetHash@Base 15 + _aaGetRvalueX@Base 15 + _aaGetX@Base 15 + _aaGetY@Base 15 + _aaInX@Base 15 + _aaKeys@Base 15 + _aaLen@Base 15 + _aaNew@Base 15 + _aaRange@Base 15 + _aaRangeEmpty@Base 15 + _aaRangeFrontKey@Base 15 + _aaRangeFrontValue@Base 15 + _aaRangePopFront@Base 15 + _aaRehash@Base 15 + _aaValues@Base 15 + _aaVersion@Base 15 + _adEq2@Base 15 + _adSort@Base 15 + _d_allocmemory@Base 15 + _d_arrayappendcTX@Base 15 + _d_arrayappendcd@Base 15 + _d_arrayappendwd@Base 15 + _d_arraybounds@Base 15 + _d_arraybounds_index@Base 15 + _d_arraybounds_indexp@Base 15 + _d_arraybounds_slice@Base 15 + _d_arraybounds_slicep@Base 15 + _d_arrayboundsp@Base 15 + _d_arraycopy@Base 15 + _d_arrayliteralTX@Base 15 + _d_arraysetcapacity@Base 15 + _d_arraysetlengthT@Base 15 + _d_arraysetlengthiT@Base 15 + _d_arrayshrinkfit@Base 15 + _d_assert@Base 15 + _d_assert_msg@Base 15 + _d_assertp@Base 15 + _d_assocarrayliteralTX@Base 15 + _d_callfinalizer@Base 15 + _d_callinterfacefinalizer@Base 15 + _d_class_cast@Base 15 + _d_createTrace@Base 15 + _d_critical_init@Base 15 + _d_critical_term@Base 15 + _d_criticalenter2@Base 15 + _d_criticalenter@Base 15 + _d_criticalexit@Base 15 + _d_delThrowable@Base 15 + _d_delclass@Base 15 + _d_delinterface@Base 15 + _d_delmemory@Base 15 + _d_dso_registry@Base 15 + _d_dynamic_cast@Base 15 + _d_eh_swapContext@Base 15 + _d_initMonoTime@Base 15 + _d_interface_cast@Base 15 + _d_isbaseof2@Base 15 + _d_isbaseof@Base 15 + _d_monitor_staticctor@Base 15 + _d_monitor_staticdtor@Base 15 + _d_monitordelete@Base 15 + _d_monitordelete_nogc@Base 15 + _d_monitorenter@Base 15 + _d_monitorexit@Base 15 + _d_newarrayT@Base 15 + _d_newarrayU@Base 15 + _d_newarrayiT@Base 15 + _d_newclass@Base 15 + _d_newitemU@Base 15 + _d_paint_cast@Base 15 + _d_print_throwable@Base 15 + _d_register_conservative_gc@Base 15 + _d_register_manual_gc@Base 15 + _d_register_precise_gc@Base 15 + _d_run_main2@Base 15 + _d_run_main@Base 15 + _d_setSameMutex@Base 15 + _d_throw@Base 15 + _d_toObject@Base 15 + _d_traceContext@Base 15 + _d_unittest@Base 15 + _d_unittest_msg@Base 15 + _d_unittestp@Base 15 + atomic_flag_clear@Base 15 + atomic_flag_clear_explicit@Base 15 + atomic_flag_test_and_set@Base 15 + atomic_flag_test_and_set_explicit@Base 15 + atomic_signal_fence@Base 15 + atomic_thread_fence@Base 15 + backtrace_alloc@Base 15 + backtrace_close@Base 15 + backtrace_create_state@Base 15 + backtrace_dwarf_add@Base 15 + backtrace_free@Base 15 + backtrace_full@Base 15 + backtrace_get_view@Base 15 + backtrace_initialize@Base 15 + backtrace_open@Base 15 + backtrace_pcinfo@Base 15 + backtrace_print@Base 15 + backtrace_qsort@Base 15 + backtrace_release_view@Base 15 + backtrace_simple@Base 15 + backtrace_syminfo@Base 15 + backtrace_syminfo_to_full_callback@Base 15 + backtrace_syminfo_to_full_error_callback@Base 15 + backtrace_uncompress_lzma@Base 15 + backtrace_uncompress_zdebug@Base 15 + backtrace_uncompress_zstd@Base 15 + backtrace_vector_finish@Base 15 + backtrace_vector_grow@Base 15 + backtrace_vector_release@Base 15 + cimag@Base 15 + cimagf@Base 15 + cimagl@Base 15 + creald@Base 15 + crealf@Base 15 + creall@Base 15 + deflateInit2@Base 15 + deflateInit@Base 15 + fakePureErrnoImpl@Base 15 + fakePureReprintReal@Base 15 + fiber_entryPoint@Base 15 + fiber_switchContext@Base 15 + gc_addRange@Base 15 + gc_addRoot@Base 15 + gc_addrOf@Base 15 + gc_allocatedInCurrentThread@Base 15 + gc_calloc@Base 15 + gc_clrAttr@Base 15 + gc_clrProxy@Base 15 + gc_collect@Base 15 + gc_disable@Base 15 + gc_enable@Base 15 + gc_expandArrayUsed@Base 15 + gc_extend@Base 15 + gc_free@Base 15 + gc_getArrayUsed@Base 15 + gc_getAttr@Base 15 + gc_getProxy@Base 15 + gc_inFinalizer@Base 15 + gc_init@Base 15 + gc_init_nothrow@Base 15 + gc_malloc@Base 15 + gc_minimize@Base 15 + gc_profileStats@Base 15 + gc_qalloc@Base 15 + gc_query@Base 15 + gc_realloc@Base 15 + gc_removeRange@Base 15 + gc_removeRoot@Base 15 + gc_reserve@Base 15 + gc_reserveArrayCapacity@Base 15 + gc_runFinalizers@Base 15 + gc_setAttr@Base 15 + gc_setProxy@Base 15 + gc_shrinkArrayUsed@Base 15 + gc_sizeOf@Base 15 + gc_stats@Base 15 + gc_term@Base 15 + getErrno@Base 15 + inflateBackInit@Base 15 + inflateInit2@Base 15 + inflateInit@Base 15 + libat_lock_n@Base 15 + libat_unlock_n@Base 15 + lifetime_init@Base 15 + onArrayIndexError@Base 15 + onArraySliceError@Base 15 + onAssertError@Base 15 + onAssertErrorMsg@Base 15 + onFinalizeError@Base 15 + onForkError@Base 15 + onInvalidMemoryOperationError@Base 15 + onOutOfMemoryError@Base 15 + onOutOfMemoryErrorNoGC@Base 15 + onRangeError@Base 15 + onUnicodeError@Base 15 + onUnittestErrorMsg@Base 15 + pcinfoCallback@Base 15 + pcinfoErrorCallback@Base 15 + perf_event_open@Base 15 + profilegc_setlogfilename@Base 15 + register_default_gcs@Base 15 + rt_args@Base 15 + rt_attachDisposeEvent@Base 15 + rt_cArgs@Base 15 + rt_cmdline_enabled@Base 15 + rt_detachDisposeEvent@Base 15 + rt_envvars_enabled@Base 15 + rt_finalize2@Base 15 + rt_finalize@Base 15 + rt_finalizeFromGC@Base 15 + rt_getCollectHandler@Base 15 + rt_getTraceDeallocator@Base 15 + rt_getTraceHandler@Base 15 + rt_hasFinalizerInSegment@Base 15 + rt_init@Base 15 + rt_loadLibrary@Base 15 + rt_moduleCtor@Base 15 + rt_moduleDtor@Base 15 + rt_moduleTlsCtor@Base 15 + rt_moduleTlsDtor@Base 15 + rt_options@Base 15 + rt_setCollectHandler@Base 15 + rt_setTraceHandler@Base 15 + rt_term@Base 15 + rt_trapExceptions@Base 15 + rt_unloadLibrary@Base 15 + runModuleUnitTests@Base 15 + setErrno@Base 15 + simpleCallback@Base 15 + simpleErrorCallback@Base 15 + syminfoCallback2@Base 15 + syminfoCallback@Base 15 + thread_attachThis@Base 15 + thread_detachByAddr@Base 15 + thread_detachInstance@Base 15 + thread_detachThis@Base 15 + thread_entryPoint@Base 15 + thread_init@Base 15 + thread_isMainThread@Base 15 + thread_joinAll@Base 15 + thread_postRestartTheWorld@Base 15 + thread_postSuspend@Base 15 + thread_preStopTheWorld@Base 15 + thread_preSuspend@Base 15 + thread_resumeAll@Base 15 + thread_resumeHandler@Base 15 + thread_scanAll@Base 15 + thread_scanAllType@Base 15 + thread_setGCSignals@Base 15 + thread_setThis@Base 15 + thread_stackBottom@Base 15 + thread_stackTop@Base 15 + thread_suspendAll@Base 15 + thread_suspendHandler@Base 15 + thread_term@Base 15 + tipc_addr@Base 15 + tipc_cluster@Base 15 + tipc_node@Base 15 + tipc_zone@Base 15 diff --git a/libhwasan0.symbols b/libhwasan0.symbols new file mode 100644 index 0000000..c66ab6c --- /dev/null +++ b/libhwasan0.symbols @@ -0,0 +1,1016 @@ +libhwasan.so.0 #PACKAGE# #MINVER# + _ZdaPv@Base 13 + _ZdaPvRKSt9nothrow_t@Base 13 + _ZdaPvSt11align_val_t@Base 13 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 13 + _ZdaPvm@Base 14 + _ZdaPvmSt11align_val_t@Base 14 + _ZdaPvmSt11align_val_tRKSt9nothrow_t@Base 14 + _ZdlPv@Base 13 + _ZdlPvRKSt9nothrow_t@Base 13 + _ZdlPvSt11align_val_t@Base 13 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 13 + _ZdlPvm@Base 14 + _ZdlPvmSt11align_val_t@Base 14 + _ZdlPvmSt11align_val_tRKSt9nothrow_t@Base 14 + _Znam@Base 13 + _ZnamRKSt9nothrow_t@Base 13 + _ZnamSt11align_val_t@Base 13 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 13 + _Znwm@Base 13 + _ZnwmRKSt9nothrow_t@Base 13 + _ZnwmSt11align_val_t@Base 13 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 13 + ___interceptor___libc_longjmp@Base 14 + ___interceptor___libc_memalign@Base 14 + ___interceptor_aligned_alloc@Base 14 + ___interceptor_bcmp@Base 14 + ___interceptor_calloc@Base 14 + ___interceptor_cfree@Base 14 + ___interceptor_free@Base 14 + ___interceptor_longjmp@Base 14 + ___interceptor_mallinfo@Base 14 + ___interceptor_malloc@Base 14 + ___interceptor_malloc_stats@Base 14 + ___interceptor_malloc_usable_size@Base 14 + ___interceptor_mallopt@Base 14 + ___interceptor_memalign@Base 14 + ___interceptor_memcmp@Base 14 + ___interceptor_memcpy@Base 14 + ___interceptor_memmove@Base 14 + ___interceptor_memset@Base 14 + ___interceptor_mmap@Base 14 + ___interceptor_mprotect@Base 14 + ___interceptor_munmap@Base 14 + ___interceptor_posix_memalign@Base 14 + ___interceptor_preadv2@Base 15 + ___interceptor_pthread_create@Base 14 + ___interceptor_pthread_detach@Base 14 + ___interceptor_pthread_exit@Base 14 + ___interceptor_pthread_join@Base 14 + ___interceptor_pthread_timedjoin_np@Base 14 + ___interceptor_pthread_tryjoin_np@Base 14 + ___interceptor_pvalloc@Base 14 + ___interceptor_pwritev2@Base 15 + ___interceptor_realloc@Base 14 + ___interceptor_reallocarray@Base 14 + ___interceptor_setjmp@Base 14 + ___interceptor_siglongjmp@Base 14 + ___interceptor_sigsetjmp@Base 14 + ___interceptor_valloc@Base 14 + ___interceptor_vfork@Base 14 + __asan_backtrace_alloc@Base 13 + __asan_backtrace_close@Base 13 + __asan_backtrace_create_state@Base 13 + __asan_backtrace_dwarf_add@Base 13 + __asan_backtrace_free@Base 13 + __asan_backtrace_get_view@Base 13 + __asan_backtrace_initialize@Base 13 + __asan_backtrace_open@Base 13 + __asan_backtrace_pcinfo@Base 13 + __asan_backtrace_qsort@Base 13 + __asan_backtrace_release_view@Base 13 + __asan_backtrace_syminfo@Base 13 + __asan_backtrace_syminfo_to_full_callback@Base 13 + __asan_backtrace_syminfo_to_full_error_callback@Base 13 + __asan_backtrace_uncompress_lzma@Base 13 + __asan_backtrace_uncompress_zdebug@Base 13 + __asan_backtrace_uncompress_zstd@Base 13 + __asan_backtrace_vector_finish@Base 13 + __asan_backtrace_vector_grow@Base 13 + __asan_backtrace_vector_release@Base 13 + __asan_cplus_demangle_builtin_types@Base 13 + __asan_cplus_demangle_fill_ctor@Base 13 + __asan_cplus_demangle_fill_dtor@Base 13 + __asan_cplus_demangle_fill_extended_operator@Base 13 + __asan_cplus_demangle_fill_name@Base 13 + __asan_cplus_demangle_init_info@Base 13 + __asan_cplus_demangle_mangled_name@Base 13 + __asan_cplus_demangle_operators@Base 13 + __asan_cplus_demangle_print@Base 13 + __asan_cplus_demangle_print_callback@Base 13 + __asan_cplus_demangle_type@Base 13 + __asan_cplus_demangle_v3@Base 13 + __asan_cplus_demangle_v3_callback@Base 13 + __asan_internal_memcmp@Base 13 + __asan_internal_memcpy@Base 13 + __asan_internal_memset@Base 13 + __asan_internal_strcmp@Base 13 + __asan_internal_strlen@Base 13 + __asan_internal_strncmp@Base 13 + __asan_internal_strnlen@Base 13 + __asan_is_gnu_v3_mangled_ctor@Base 13 + __asan_is_gnu_v3_mangled_dtor@Base 13 + __asan_java_demangle_v3@Base 13 + __asan_java_demangle_v3_callback@Base 13 + __hwasan_add_frame_record@Base 13 + __hwasan_disable_allocator_tagging@Base 13 + __hwasan_enable_allocator_tagging@Base 13 + __hwasan_generate_tag@Base 13 + __hwasan_get_tag_from_pointer@Base 15 + __hwasan_handle_longjmp@Base 13 + __hwasan_handle_vfork@Base 13 + __hwasan_init@Base 13 + __hwasan_init_frames@Base 13 + __hwasan_init_static@Base 13 + __hwasan_library_loaded@Base 13 + __hwasan_library_unloaded@Base 13 + __hwasan_load16@Base 13 + __hwasan_load16_match_all@Base 14 + __hwasan_load16_match_all_noabort@Base 14 + __hwasan_load16_noabort@Base 13 + __hwasan_load1@Base 13 + __hwasan_load1_match_all@Base 14 + __hwasan_load1_match_all_noabort@Base 14 + __hwasan_load1_noabort@Base 13 + __hwasan_load2@Base 13 + __hwasan_load2_match_all@Base 14 + __hwasan_load2_match_all_noabort@Base 14 + __hwasan_load2_noabort@Base 13 + __hwasan_load4@Base 13 + __hwasan_load4_match_all@Base 14 + __hwasan_load4_match_all_noabort@Base 14 + __hwasan_load4_noabort@Base 13 + __hwasan_load8@Base 13 + __hwasan_load8_match_all@Base 14 + __hwasan_load8_match_all_noabort@Base 14 + __hwasan_load8_noabort@Base 13 + __hwasan_loadN@Base 13 + __hwasan_loadN_match_all@Base 14 + __hwasan_loadN_match_all_noabort@Base 14 + __hwasan_loadN_noabort@Base 13 + __hwasan_memcpy@Base 13 + __hwasan_memcpy_match_all@Base 14 + __hwasan_memmove@Base 13 + __hwasan_memmove_match_all@Base 14 + __hwasan_memset@Base 13 + __hwasan_memset_match_all@Base 14 + __hwasan_personality_wrapper@Base 13 + __hwasan_print_memory_usage@Base 13 + __hwasan_print_shadow@Base 13 + __hwasan_set_error_report_callback@Base 13 + __hwasan_shadow_memory_dynamic_address@Base 13 + __hwasan_store16@Base 13 + __hwasan_store16_match_all@Base 14 + __hwasan_store16_match_all_noabort@Base 14 + __hwasan_store16_noabort@Base 13 + __hwasan_store1@Base 13 + __hwasan_store1_match_all@Base 14 + __hwasan_store1_match_all_noabort@Base 14 + __hwasan_store1_noabort@Base 13 + __hwasan_store2@Base 13 + __hwasan_store2_match_all@Base 14 + __hwasan_store2_match_all_noabort@Base 14 + __hwasan_store2_noabort@Base 13 + __hwasan_store4@Base 13 + __hwasan_store4_match_all@Base 14 + __hwasan_store4_match_all_noabort@Base 14 + __hwasan_store4_noabort@Base 13 + __hwasan_store8@Base 13 + __hwasan_store8_match_all@Base 14 + __hwasan_store8_match_all_noabort@Base 14 + __hwasan_store8_noabort@Base 13 + __hwasan_storeN@Base 13 + __hwasan_storeN_match_all@Base 14 + __hwasan_storeN_match_all_noabort@Base 14 + __hwasan_storeN_noabort@Base 13 + __hwasan_tag_memory@Base 13 + __hwasan_tag_mismatch4@Base 13 + (arch=arm64)__hwasan_tag_mismatch@Base 13 + (arch=arm64)__hwasan_tag_mismatch_v2@Base 13 + __hwasan_tag_pointer@Base 13 + __hwasan_test_shadow@Base 13 + __hwasan_thread_enter@Base 15 + __hwasan_thread_exit@Base 15 + __hwasan_tls@Base 13 + __interceptor___libc_longjmp@Base 13 + __interceptor_bcmp@Base 14 + __interceptor_longjmp@Base 13 + __interceptor_memcmp@Base 14 + __interceptor_memcpy@Base 14 + __interceptor_memmove@Base 14 + __interceptor_memset@Base 14 + __interceptor_mmap@Base 14 + __interceptor_mprotect@Base 14 + __interceptor_munmap@Base 14 + __interceptor_preadv2@Base 15 + __interceptor_pthread_create@Base 13 + __interceptor_pthread_detach@Base 14 + __interceptor_pthread_exit@Base 14 + __interceptor_pthread_join@Base 13 + __interceptor_pthread_timedjoin_np@Base 14 + __interceptor_pthread_tryjoin_np@Base 14 + __interceptor_pwritev2@Base 15 + __interceptor_setjmp@Base 13 + __interceptor_siglongjmp@Base 13 + __interceptor_sigsetjmp@Base 13 + __interceptor_trampoline___libc_longjmp@Base 14 + __interceptor_trampoline_bcmp@Base 14 + __interceptor_trampoline_longjmp@Base 14 + __interceptor_trampoline_memcmp@Base 14 + __interceptor_trampoline_memcpy@Base 14 + __interceptor_trampoline_memmove@Base 14 + __interceptor_trampoline_memset@Base 14 + __interceptor_trampoline_mmap@Base 14 + __interceptor_trampoline_mprotect@Base 14 + __interceptor_trampoline_munmap@Base 14 + __interceptor_trampoline_preadv2@Base 15 + __interceptor_trampoline_pthread_create@Base 14 + __interceptor_trampoline_pthread_detach@Base 14 + __interceptor_trampoline_pthread_exit@Base 14 + __interceptor_trampoline_pthread_join@Base 14 + __interceptor_trampoline_pthread_timedjoin_np@Base 14 + __interceptor_trampoline_pthread_tryjoin_np@Base 14 + __interceptor_trampoline_pwritev2@Base 15 + __interceptor_trampoline_setjmp@Base 14 + __interceptor_trampoline_siglongjmp@Base 14 + __interceptor_trampoline_sigsetjmp@Base 14 + __interceptor_trampoline_vfork@Base 14 + __interceptor_vfork@Base 13 + __libc_longjmp@Base 13 + __libc_memalign@Base 13 + __lsan_default_options@Base 14 + __lsan_disable@Base 14 + __lsan_do_leak_check@Base 14 + __lsan_do_recoverable_leak_check@Base 14 + __lsan_enable@Base 14 + __lsan_ignore_object@Base 14 + __lsan_register_root_region@Base 14 + __lsan_unregister_root_region@Base 14 + __sancov_default_options@Base 13 + __sancov_lowest_stack@Base 13 + __sanitizer___libc_memalign@Base 13 + __sanitizer_acquire_crash_state@Base 13 + __sanitizer_aligned_alloc@Base 13 + __sanitizer_calloc@Base 13 + __sanitizer_cfree@Base 13 + __sanitizer_cov_8bit_counters_init@Base 13 + __sanitizer_cov_bool_flag_init@Base 13 + __sanitizer_cov_dump@Base 13 + __sanitizer_cov_load16@Base 13 + __sanitizer_cov_load1@Base 13 + __sanitizer_cov_load2@Base 13 + __sanitizer_cov_load4@Base 13 + __sanitizer_cov_load8@Base 13 + __sanitizer_cov_pcs_init@Base 13 + __sanitizer_cov_reset@Base 13 + __sanitizer_cov_store16@Base 13 + __sanitizer_cov_store1@Base 13 + __sanitizer_cov_store2@Base 13 + __sanitizer_cov_store4@Base 13 + __sanitizer_cov_store8@Base 13 + __sanitizer_cov_trace_cmp1@Base 13 + __sanitizer_cov_trace_cmp2@Base 13 + __sanitizer_cov_trace_cmp4@Base 13 + __sanitizer_cov_trace_cmp8@Base 13 + __sanitizer_cov_trace_cmp@Base 13 + __sanitizer_cov_trace_const_cmp1@Base 13 + __sanitizer_cov_trace_const_cmp2@Base 13 + __sanitizer_cov_trace_const_cmp4@Base 13 + __sanitizer_cov_trace_const_cmp8@Base 13 + __sanitizer_cov_trace_div4@Base 13 + __sanitizer_cov_trace_div8@Base 13 + __sanitizer_cov_trace_gep@Base 13 + __sanitizer_cov_trace_pc_guard@Base 13 + __sanitizer_cov_trace_pc_guard_init@Base 13 + __sanitizer_cov_trace_pc_indir@Base 13 + __sanitizer_cov_trace_switch@Base 13 + __sanitizer_dump_coverage@Base 13 + __sanitizer_dump_trace_pc_guard_coverage@Base 13 + __sanitizer_free@Base 13 + __sanitizer_free_hook@Base 13 + __sanitizer_get_allocated_begin@Base 14 + __sanitizer_get_allocated_size@Base 13 + __sanitizer_get_allocated_size_fast@Base 14 + __sanitizer_get_current_allocated_bytes@Base 13 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 13 + __sanitizer_get_free_bytes@Base 13 + __sanitizer_get_heap_size@Base 13 + __sanitizer_get_module_and_offset_for_pc@Base 13 + __sanitizer_get_ownership@Base 13 + __sanitizer_get_report_path@Base 13 + __sanitizer_get_unmapped_bytes@Base 13 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 13 + __sanitizer_internal_memcpy@Base 14 + __sanitizer_internal_memmove@Base 14 + __sanitizer_internal_memset@Base 14 + __sanitizer_mallinfo@Base 13 + __sanitizer_malloc@Base 13 + __sanitizer_malloc_hook@Base 13 + __sanitizer_malloc_stats@Base 13 + __sanitizer_malloc_usable_size@Base 13 + __sanitizer_mallopt@Base 13 + __sanitizer_memalign@Base 13 + __sanitizer_on_print@Base 13 + __sanitizer_posix_memalign@Base 13 + __sanitizer_print_stack_trace@Base 13 + __sanitizer_purge_allocator@Base 14 + __sanitizer_pvalloc@Base 13 + __sanitizer_realloc@Base 13 + __sanitizer_reallocarray@Base 13 + __sanitizer_report_error_summary@Base 13 + __sanitizer_sandbox_on_notify@Base 13 + __sanitizer_set_death_callback@Base 13 + __sanitizer_set_report_fd@Base 13 + __sanitizer_set_report_path@Base 13 + __sanitizer_symbolize_global@Base 13 + __sanitizer_symbolize_pc@Base 13 + __sanitizer_syscall_post_impl_accept4@Base 14 + __sanitizer_syscall_post_impl_accept@Base 14 + __sanitizer_syscall_post_impl_access@Base 14 + __sanitizer_syscall_post_impl_acct@Base 14 + __sanitizer_syscall_post_impl_add_key@Base 14 + __sanitizer_syscall_post_impl_adjtimex@Base 14 + __sanitizer_syscall_post_impl_alarm@Base 14 + __sanitizer_syscall_post_impl_bdflush@Base 14 + __sanitizer_syscall_post_impl_bind@Base 14 + __sanitizer_syscall_post_impl_brk@Base 14 + __sanitizer_syscall_post_impl_capget@Base 14 + __sanitizer_syscall_post_impl_capset@Base 14 + __sanitizer_syscall_post_impl_chdir@Base 14 + __sanitizer_syscall_post_impl_chmod@Base 14 + __sanitizer_syscall_post_impl_chown@Base 14 + __sanitizer_syscall_post_impl_chroot@Base 14 + __sanitizer_syscall_post_impl_clock_adjtime@Base 14 + __sanitizer_syscall_post_impl_clock_getres@Base 14 + __sanitizer_syscall_post_impl_clock_gettime@Base 14 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 14 + __sanitizer_syscall_post_impl_clock_settime@Base 14 + __sanitizer_syscall_post_impl_close@Base 14 + __sanitizer_syscall_post_impl_connect@Base 14 + __sanitizer_syscall_post_impl_creat@Base 14 + __sanitizer_syscall_post_impl_delete_module@Base 14 + __sanitizer_syscall_post_impl_dup2@Base 14 + __sanitizer_syscall_post_impl_dup3@Base 14 + __sanitizer_syscall_post_impl_dup@Base 14 + __sanitizer_syscall_post_impl_epoll_create1@Base 14 + __sanitizer_syscall_post_impl_epoll_create@Base 14 + __sanitizer_syscall_post_impl_epoll_ctl@Base 14 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 14 + __sanitizer_syscall_post_impl_epoll_pwait@Base 14 + __sanitizer_syscall_post_impl_epoll_wait@Base 14 + __sanitizer_syscall_post_impl_eventfd2@Base 14 + __sanitizer_syscall_post_impl_eventfd@Base 14 + __sanitizer_syscall_post_impl_exit@Base 14 + __sanitizer_syscall_post_impl_exit_group@Base 14 + __sanitizer_syscall_post_impl_faccessat@Base 14 + __sanitizer_syscall_post_impl_fchdir@Base 14 + __sanitizer_syscall_post_impl_fchmod@Base 14 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 14 + __sanitizer_syscall_post_impl_fchown@Base 14 + __sanitizer_syscall_post_impl_fchownat@Base 14 + __sanitizer_syscall_post_impl_fcntl64@Base 14 + __sanitizer_syscall_post_impl_fcntl@Base 14 + __sanitizer_syscall_post_impl_fdatasync@Base 14 + __sanitizer_syscall_post_impl_fgetxattr@Base 14 + __sanitizer_syscall_post_impl_flistxattr@Base 14 + __sanitizer_syscall_post_impl_flock@Base 14 + __sanitizer_syscall_post_impl_fork@Base 14 + __sanitizer_syscall_post_impl_fremovexattr@Base 14 + __sanitizer_syscall_post_impl_fsetxattr@Base 14 + __sanitizer_syscall_post_impl_fstat64@Base 14 + __sanitizer_syscall_post_impl_fstat@Base 14 + __sanitizer_syscall_post_impl_fstatat64@Base 14 + __sanitizer_syscall_post_impl_fstatfs64@Base 14 + __sanitizer_syscall_post_impl_fstatfs@Base 14 + __sanitizer_syscall_post_impl_fsync@Base 14 + __sanitizer_syscall_post_impl_ftruncate@Base 14 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 14 + __sanitizer_syscall_post_impl_get_mempolicy@Base 14 + __sanitizer_syscall_post_impl_get_robust_list@Base 14 + __sanitizer_syscall_post_impl_getcpu@Base 14 + __sanitizer_syscall_post_impl_getcwd@Base 14 + __sanitizer_syscall_post_impl_getdents64@Base 14 + __sanitizer_syscall_post_impl_getdents@Base 14 + __sanitizer_syscall_post_impl_getegid@Base 14 + __sanitizer_syscall_post_impl_geteuid@Base 14 + __sanitizer_syscall_post_impl_getgid@Base 14 + __sanitizer_syscall_post_impl_getgroups@Base 14 + __sanitizer_syscall_post_impl_gethostname@Base 14 + __sanitizer_syscall_post_impl_getitimer@Base 14 + __sanitizer_syscall_post_impl_getpeername@Base 14 + __sanitizer_syscall_post_impl_getpgid@Base 14 + __sanitizer_syscall_post_impl_getpgrp@Base 14 + __sanitizer_syscall_post_impl_getpid@Base 14 + __sanitizer_syscall_post_impl_getppid@Base 14 + __sanitizer_syscall_post_impl_getpriority@Base 14 + __sanitizer_syscall_post_impl_getrandom@Base 14 + __sanitizer_syscall_post_impl_getresgid@Base 14 + __sanitizer_syscall_post_impl_getresuid@Base 14 + __sanitizer_syscall_post_impl_getrlimit@Base 14 + __sanitizer_syscall_post_impl_getrusage@Base 14 + __sanitizer_syscall_post_impl_getsid@Base 14 + __sanitizer_syscall_post_impl_getsockname@Base 14 + __sanitizer_syscall_post_impl_getsockopt@Base 14 + __sanitizer_syscall_post_impl_gettid@Base 14 + __sanitizer_syscall_post_impl_gettimeofday@Base 14 + __sanitizer_syscall_post_impl_getuid@Base 14 + __sanitizer_syscall_post_impl_getxattr@Base 14 + __sanitizer_syscall_post_impl_init_module@Base 14 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 14 + __sanitizer_syscall_post_impl_inotify_init1@Base 14 + __sanitizer_syscall_post_impl_inotify_init@Base 14 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 14 + __sanitizer_syscall_post_impl_io_cancel@Base 14 + __sanitizer_syscall_post_impl_io_destroy@Base 14 + __sanitizer_syscall_post_impl_io_getevents@Base 14 + __sanitizer_syscall_post_impl_io_setup@Base 14 + __sanitizer_syscall_post_impl_io_submit@Base 14 + __sanitizer_syscall_post_impl_ioctl@Base 14 + __sanitizer_syscall_post_impl_ioperm@Base 14 + __sanitizer_syscall_post_impl_ioprio_get@Base 14 + __sanitizer_syscall_post_impl_ioprio_set@Base 14 + __sanitizer_syscall_post_impl_ipc@Base 14 + __sanitizer_syscall_post_impl_kexec_load@Base 14 + __sanitizer_syscall_post_impl_keyctl@Base 14 + __sanitizer_syscall_post_impl_kill@Base 14 + __sanitizer_syscall_post_impl_lchown@Base 14 + __sanitizer_syscall_post_impl_lgetxattr@Base 14 + __sanitizer_syscall_post_impl_link@Base 14 + __sanitizer_syscall_post_impl_linkat@Base 14 + __sanitizer_syscall_post_impl_listen@Base 14 + __sanitizer_syscall_post_impl_listxattr@Base 14 + __sanitizer_syscall_post_impl_llistxattr@Base 14 + __sanitizer_syscall_post_impl_llseek@Base 14 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 14 + __sanitizer_syscall_post_impl_lremovexattr@Base 14 + __sanitizer_syscall_post_impl_lseek@Base 14 + __sanitizer_syscall_post_impl_lsetxattr@Base 14 + __sanitizer_syscall_post_impl_lstat64@Base 14 + __sanitizer_syscall_post_impl_lstat@Base 14 + __sanitizer_syscall_post_impl_madvise@Base 14 + __sanitizer_syscall_post_impl_mbind@Base 14 + __sanitizer_syscall_post_impl_migrate_pages@Base 14 + __sanitizer_syscall_post_impl_mincore@Base 14 + __sanitizer_syscall_post_impl_mkdir@Base 14 + __sanitizer_syscall_post_impl_mkdirat@Base 14 + __sanitizer_syscall_post_impl_mknod@Base 14 + __sanitizer_syscall_post_impl_mknodat@Base 14 + __sanitizer_syscall_post_impl_mlock@Base 14 + __sanitizer_syscall_post_impl_mlockall@Base 14 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 14 + __sanitizer_syscall_post_impl_mount@Base 14 + __sanitizer_syscall_post_impl_move_pages@Base 14 + __sanitizer_syscall_post_impl_mprotect@Base 14 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 14 + __sanitizer_syscall_post_impl_mq_notify@Base 14 + __sanitizer_syscall_post_impl_mq_open@Base 14 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 14 + __sanitizer_syscall_post_impl_mq_timedsend@Base 14 + __sanitizer_syscall_post_impl_mq_unlink@Base 14 + __sanitizer_syscall_post_impl_mremap@Base 14 + __sanitizer_syscall_post_impl_msgctl@Base 14 + __sanitizer_syscall_post_impl_msgget@Base 14 + __sanitizer_syscall_post_impl_msgrcv@Base 14 + __sanitizer_syscall_post_impl_msgsnd@Base 14 + __sanitizer_syscall_post_impl_msync@Base 14 + __sanitizer_syscall_post_impl_munlock@Base 14 + __sanitizer_syscall_post_impl_munlockall@Base 14 + __sanitizer_syscall_post_impl_munmap@Base 14 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 14 + __sanitizer_syscall_post_impl_nanosleep@Base 14 + __sanitizer_syscall_post_impl_newfstat@Base 14 + __sanitizer_syscall_post_impl_newfstatat@Base 14 + __sanitizer_syscall_post_impl_newlstat@Base 14 + __sanitizer_syscall_post_impl_newstat@Base 14 + __sanitizer_syscall_post_impl_newuname@Base 14 + __sanitizer_syscall_post_impl_ni_syscall@Base 14 + __sanitizer_syscall_post_impl_nice@Base 14 + __sanitizer_syscall_post_impl_old_getrlimit@Base 14 + __sanitizer_syscall_post_impl_old_mmap@Base 14 + __sanitizer_syscall_post_impl_old_readdir@Base 14 + __sanitizer_syscall_post_impl_old_select@Base 14 + __sanitizer_syscall_post_impl_oldumount@Base 14 + __sanitizer_syscall_post_impl_olduname@Base 14 + __sanitizer_syscall_post_impl_open@Base 14 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 14 + __sanitizer_syscall_post_impl_openat@Base 14 + __sanitizer_syscall_post_impl_pause@Base 14 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 14 + __sanitizer_syscall_post_impl_pciconfig_read@Base 14 + __sanitizer_syscall_post_impl_pciconfig_write@Base 14 + __sanitizer_syscall_post_impl_perf_event_open@Base 14 + __sanitizer_syscall_post_impl_personality@Base 14 + __sanitizer_syscall_post_impl_pipe2@Base 14 + __sanitizer_syscall_post_impl_pipe@Base 14 + __sanitizer_syscall_post_impl_pivot_root@Base 14 + __sanitizer_syscall_post_impl_poll@Base 14 + __sanitizer_syscall_post_impl_ppoll@Base 14 + __sanitizer_syscall_post_impl_pread64@Base 14 + __sanitizer_syscall_post_impl_preadv@Base 14 + __sanitizer_syscall_post_impl_prlimit64@Base 14 + __sanitizer_syscall_post_impl_process_vm_readv@Base 14 + __sanitizer_syscall_post_impl_process_vm_writev@Base 14 + __sanitizer_syscall_post_impl_pselect6@Base 14 + __sanitizer_syscall_post_impl_ptrace@Base 14 + __sanitizer_syscall_post_impl_pwrite64@Base 14 + __sanitizer_syscall_post_impl_pwritev@Base 14 + __sanitizer_syscall_post_impl_quotactl@Base 14 + __sanitizer_syscall_post_impl_read@Base 14 + __sanitizer_syscall_post_impl_readlink@Base 14 + __sanitizer_syscall_post_impl_readlinkat@Base 14 + __sanitizer_syscall_post_impl_readv@Base 14 + __sanitizer_syscall_post_impl_reboot@Base 14 + __sanitizer_syscall_post_impl_recv@Base 14 + __sanitizer_syscall_post_impl_recvfrom@Base 14 + __sanitizer_syscall_post_impl_recvmmsg@Base 14 + __sanitizer_syscall_post_impl_recvmsg@Base 14 + __sanitizer_syscall_post_impl_remap_file_pages@Base 14 + __sanitizer_syscall_post_impl_removexattr@Base 14 + __sanitizer_syscall_post_impl_rename@Base 14 + __sanitizer_syscall_post_impl_renameat@Base 14 + __sanitizer_syscall_post_impl_request_key@Base 14 + __sanitizer_syscall_post_impl_restart_syscall@Base 14 + __sanitizer_syscall_post_impl_rmdir@Base 14 + __sanitizer_syscall_post_impl_rt_sigaction@Base 14 + __sanitizer_syscall_post_impl_rt_sigpending@Base 14 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 14 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 14 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 14 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 14 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 14 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 14 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 14 + __sanitizer_syscall_post_impl_sched_getparam@Base 14 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 14 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 14 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 14 + __sanitizer_syscall_post_impl_sched_setparam@Base 14 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 14 + __sanitizer_syscall_post_impl_sched_yield@Base 14 + __sanitizer_syscall_post_impl_select@Base 14 + __sanitizer_syscall_post_impl_semctl@Base 14 + __sanitizer_syscall_post_impl_semget@Base 14 + __sanitizer_syscall_post_impl_semop@Base 14 + __sanitizer_syscall_post_impl_semtimedop@Base 14 + __sanitizer_syscall_post_impl_send@Base 14 + __sanitizer_syscall_post_impl_sendfile64@Base 14 + __sanitizer_syscall_post_impl_sendfile@Base 14 + __sanitizer_syscall_post_impl_sendmmsg@Base 14 + __sanitizer_syscall_post_impl_sendmsg@Base 14 + __sanitizer_syscall_post_impl_sendto@Base 14 + __sanitizer_syscall_post_impl_set_mempolicy@Base 14 + __sanitizer_syscall_post_impl_set_robust_list@Base 14 + __sanitizer_syscall_post_impl_set_tid_address@Base 14 + __sanitizer_syscall_post_impl_setdomainname@Base 14 + __sanitizer_syscall_post_impl_setfsgid@Base 14 + __sanitizer_syscall_post_impl_setfsuid@Base 14 + __sanitizer_syscall_post_impl_setgid@Base 14 + __sanitizer_syscall_post_impl_setgroups@Base 14 + __sanitizer_syscall_post_impl_sethostname@Base 14 + __sanitizer_syscall_post_impl_setitimer@Base 14 + __sanitizer_syscall_post_impl_setns@Base 14 + __sanitizer_syscall_post_impl_setpgid@Base 14 + __sanitizer_syscall_post_impl_setpriority@Base 14 + __sanitizer_syscall_post_impl_setregid@Base 14 + __sanitizer_syscall_post_impl_setresgid@Base 14 + __sanitizer_syscall_post_impl_setresuid@Base 14 + __sanitizer_syscall_post_impl_setreuid@Base 14 + __sanitizer_syscall_post_impl_setrlimit@Base 14 + __sanitizer_syscall_post_impl_setsid@Base 14 + __sanitizer_syscall_post_impl_setsockopt@Base 14 + __sanitizer_syscall_post_impl_settimeofday@Base 14 + __sanitizer_syscall_post_impl_setuid@Base 14 + __sanitizer_syscall_post_impl_setxattr@Base 14 + __sanitizer_syscall_post_impl_sgetmask@Base 14 + __sanitizer_syscall_post_impl_shmat@Base 14 + __sanitizer_syscall_post_impl_shmctl@Base 14 + __sanitizer_syscall_post_impl_shmdt@Base 14 + __sanitizer_syscall_post_impl_shmget@Base 14 + __sanitizer_syscall_post_impl_shutdown@Base 14 + __sanitizer_syscall_post_impl_sigaction@Base 14 + __sanitizer_syscall_post_impl_sigaltstack@Base 14 + __sanitizer_syscall_post_impl_signal@Base 14 + __sanitizer_syscall_post_impl_signalfd4@Base 14 + __sanitizer_syscall_post_impl_signalfd@Base 14 + __sanitizer_syscall_post_impl_sigpending@Base 14 + __sanitizer_syscall_post_impl_sigprocmask@Base 14 + __sanitizer_syscall_post_impl_socket@Base 14 + __sanitizer_syscall_post_impl_socketcall@Base 14 + __sanitizer_syscall_post_impl_socketpair@Base 14 + __sanitizer_syscall_post_impl_splice@Base 14 + __sanitizer_syscall_post_impl_spu_create@Base 14 + __sanitizer_syscall_post_impl_spu_run@Base 14 + __sanitizer_syscall_post_impl_ssetmask@Base 14 + __sanitizer_syscall_post_impl_stat64@Base 14 + __sanitizer_syscall_post_impl_stat@Base 14 + __sanitizer_syscall_post_impl_statfs64@Base 14 + __sanitizer_syscall_post_impl_statfs@Base 14 + __sanitizer_syscall_post_impl_stime@Base 14 + __sanitizer_syscall_post_impl_swapoff@Base 14 + __sanitizer_syscall_post_impl_swapon@Base 14 + __sanitizer_syscall_post_impl_symlink@Base 14 + __sanitizer_syscall_post_impl_symlinkat@Base 14 + __sanitizer_syscall_post_impl_sync@Base 14 + __sanitizer_syscall_post_impl_syncfs@Base 14 + __sanitizer_syscall_post_impl_sysctl@Base 14 + __sanitizer_syscall_post_impl_sysfs@Base 14 + __sanitizer_syscall_post_impl_sysinfo@Base 14 + __sanitizer_syscall_post_impl_syslog@Base 14 + __sanitizer_syscall_post_impl_tee@Base 14 + __sanitizer_syscall_post_impl_tgkill@Base 14 + __sanitizer_syscall_post_impl_time@Base 14 + __sanitizer_syscall_post_impl_timer_create@Base 14 + __sanitizer_syscall_post_impl_timer_delete@Base 14 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 14 + __sanitizer_syscall_post_impl_timer_gettime@Base 14 + __sanitizer_syscall_post_impl_timer_settime@Base 14 + __sanitizer_syscall_post_impl_timerfd_create@Base 14 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 14 + __sanitizer_syscall_post_impl_timerfd_settime@Base 14 + __sanitizer_syscall_post_impl_times@Base 14 + __sanitizer_syscall_post_impl_tkill@Base 14 + __sanitizer_syscall_post_impl_truncate@Base 14 + __sanitizer_syscall_post_impl_umask@Base 14 + __sanitizer_syscall_post_impl_umount@Base 14 + __sanitizer_syscall_post_impl_uname@Base 14 + __sanitizer_syscall_post_impl_unlink@Base 14 + __sanitizer_syscall_post_impl_unlinkat@Base 14 + __sanitizer_syscall_post_impl_unshare@Base 14 + __sanitizer_syscall_post_impl_uselib@Base 14 + __sanitizer_syscall_post_impl_ustat@Base 14 + __sanitizer_syscall_post_impl_utime@Base 14 + __sanitizer_syscall_post_impl_utimensat@Base 14 + __sanitizer_syscall_post_impl_utimes@Base 14 + __sanitizer_syscall_post_impl_vfork@Base 14 + __sanitizer_syscall_post_impl_vhangup@Base 14 + __sanitizer_syscall_post_impl_vmsplice@Base 14 + __sanitizer_syscall_post_impl_wait4@Base 14 + __sanitizer_syscall_post_impl_waitid@Base 14 + __sanitizer_syscall_post_impl_waitpid@Base 14 + __sanitizer_syscall_post_impl_write@Base 14 + __sanitizer_syscall_post_impl_writev@Base 14 + __sanitizer_syscall_pre_impl_accept4@Base 14 + __sanitizer_syscall_pre_impl_accept@Base 14 + __sanitizer_syscall_pre_impl_access@Base 14 + __sanitizer_syscall_pre_impl_acct@Base 14 + __sanitizer_syscall_pre_impl_add_key@Base 14 + __sanitizer_syscall_pre_impl_adjtimex@Base 14 + __sanitizer_syscall_pre_impl_alarm@Base 14 + __sanitizer_syscall_pre_impl_bdflush@Base 14 + __sanitizer_syscall_pre_impl_bind@Base 14 + __sanitizer_syscall_pre_impl_brk@Base 14 + __sanitizer_syscall_pre_impl_capget@Base 14 + __sanitizer_syscall_pre_impl_capset@Base 14 + __sanitizer_syscall_pre_impl_chdir@Base 14 + __sanitizer_syscall_pre_impl_chmod@Base 14 + __sanitizer_syscall_pre_impl_chown@Base 14 + __sanitizer_syscall_pre_impl_chroot@Base 14 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 14 + __sanitizer_syscall_pre_impl_clock_getres@Base 14 + __sanitizer_syscall_pre_impl_clock_gettime@Base 14 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 14 + __sanitizer_syscall_pre_impl_clock_settime@Base 14 + __sanitizer_syscall_pre_impl_close@Base 14 + __sanitizer_syscall_pre_impl_connect@Base 14 + __sanitizer_syscall_pre_impl_creat@Base 14 + __sanitizer_syscall_pre_impl_delete_module@Base 14 + __sanitizer_syscall_pre_impl_dup2@Base 14 + __sanitizer_syscall_pre_impl_dup3@Base 14 + __sanitizer_syscall_pre_impl_dup@Base 14 + __sanitizer_syscall_pre_impl_epoll_create1@Base 14 + __sanitizer_syscall_pre_impl_epoll_create@Base 14 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 14 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 14 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 14 + __sanitizer_syscall_pre_impl_epoll_wait@Base 14 + __sanitizer_syscall_pre_impl_eventfd2@Base 14 + __sanitizer_syscall_pre_impl_eventfd@Base 14 + __sanitizer_syscall_pre_impl_exit@Base 14 + __sanitizer_syscall_pre_impl_exit_group@Base 14 + __sanitizer_syscall_pre_impl_faccessat@Base 14 + __sanitizer_syscall_pre_impl_fchdir@Base 14 + __sanitizer_syscall_pre_impl_fchmod@Base 14 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 14 + __sanitizer_syscall_pre_impl_fchown@Base 14 + __sanitizer_syscall_pre_impl_fchownat@Base 14 + __sanitizer_syscall_pre_impl_fcntl64@Base 14 + __sanitizer_syscall_pre_impl_fcntl@Base 14 + __sanitizer_syscall_pre_impl_fdatasync@Base 14 + __sanitizer_syscall_pre_impl_fgetxattr@Base 14 + __sanitizer_syscall_pre_impl_flistxattr@Base 14 + __sanitizer_syscall_pre_impl_flock@Base 14 + __sanitizer_syscall_pre_impl_fork@Base 14 + __sanitizer_syscall_pre_impl_fremovexattr@Base 14 + __sanitizer_syscall_pre_impl_fsetxattr@Base 14 + __sanitizer_syscall_pre_impl_fstat64@Base 14 + __sanitizer_syscall_pre_impl_fstat@Base 14 + __sanitizer_syscall_pre_impl_fstatat64@Base 14 + __sanitizer_syscall_pre_impl_fstatfs64@Base 14 + __sanitizer_syscall_pre_impl_fstatfs@Base 14 + __sanitizer_syscall_pre_impl_fsync@Base 14 + __sanitizer_syscall_pre_impl_ftruncate@Base 14 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 14 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 14 + __sanitizer_syscall_pre_impl_get_robust_list@Base 14 + __sanitizer_syscall_pre_impl_getcpu@Base 14 + __sanitizer_syscall_pre_impl_getcwd@Base 14 + __sanitizer_syscall_pre_impl_getdents64@Base 14 + __sanitizer_syscall_pre_impl_getdents@Base 14 + __sanitizer_syscall_pre_impl_getegid@Base 14 + __sanitizer_syscall_pre_impl_geteuid@Base 14 + __sanitizer_syscall_pre_impl_getgid@Base 14 + __sanitizer_syscall_pre_impl_getgroups@Base 14 + __sanitizer_syscall_pre_impl_gethostname@Base 14 + __sanitizer_syscall_pre_impl_getitimer@Base 14 + __sanitizer_syscall_pre_impl_getpeername@Base 14 + __sanitizer_syscall_pre_impl_getpgid@Base 14 + __sanitizer_syscall_pre_impl_getpgrp@Base 14 + __sanitizer_syscall_pre_impl_getpid@Base 14 + __sanitizer_syscall_pre_impl_getppid@Base 14 + __sanitizer_syscall_pre_impl_getpriority@Base 14 + __sanitizer_syscall_pre_impl_getrandom@Base 14 + __sanitizer_syscall_pre_impl_getresgid@Base 14 + __sanitizer_syscall_pre_impl_getresuid@Base 14 + __sanitizer_syscall_pre_impl_getrlimit@Base 14 + __sanitizer_syscall_pre_impl_getrusage@Base 14 + __sanitizer_syscall_pre_impl_getsid@Base 14 + __sanitizer_syscall_pre_impl_getsockname@Base 14 + __sanitizer_syscall_pre_impl_getsockopt@Base 14 + __sanitizer_syscall_pre_impl_gettid@Base 14 + __sanitizer_syscall_pre_impl_gettimeofday@Base 14 + __sanitizer_syscall_pre_impl_getuid@Base 14 + __sanitizer_syscall_pre_impl_getxattr@Base 14 + __sanitizer_syscall_pre_impl_init_module@Base 14 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 14 + __sanitizer_syscall_pre_impl_inotify_init1@Base 14 + __sanitizer_syscall_pre_impl_inotify_init@Base 14 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 14 + __sanitizer_syscall_pre_impl_io_cancel@Base 14 + __sanitizer_syscall_pre_impl_io_destroy@Base 14 + __sanitizer_syscall_pre_impl_io_getevents@Base 14 + __sanitizer_syscall_pre_impl_io_setup@Base 14 + __sanitizer_syscall_pre_impl_io_submit@Base 14 + __sanitizer_syscall_pre_impl_ioctl@Base 14 + __sanitizer_syscall_pre_impl_ioperm@Base 14 + __sanitizer_syscall_pre_impl_ioprio_get@Base 14 + __sanitizer_syscall_pre_impl_ioprio_set@Base 14 + __sanitizer_syscall_pre_impl_ipc@Base 14 + __sanitizer_syscall_pre_impl_kexec_load@Base 14 + __sanitizer_syscall_pre_impl_keyctl@Base 14 + __sanitizer_syscall_pre_impl_kill@Base 14 + __sanitizer_syscall_pre_impl_lchown@Base 14 + __sanitizer_syscall_pre_impl_lgetxattr@Base 14 + __sanitizer_syscall_pre_impl_link@Base 14 + __sanitizer_syscall_pre_impl_linkat@Base 14 + __sanitizer_syscall_pre_impl_listen@Base 14 + __sanitizer_syscall_pre_impl_listxattr@Base 14 + __sanitizer_syscall_pre_impl_llistxattr@Base 14 + __sanitizer_syscall_pre_impl_llseek@Base 14 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 14 + __sanitizer_syscall_pre_impl_lremovexattr@Base 14 + __sanitizer_syscall_pre_impl_lseek@Base 14 + __sanitizer_syscall_pre_impl_lsetxattr@Base 14 + __sanitizer_syscall_pre_impl_lstat64@Base 14 + __sanitizer_syscall_pre_impl_lstat@Base 14 + __sanitizer_syscall_pre_impl_madvise@Base 14 + __sanitizer_syscall_pre_impl_mbind@Base 14 + __sanitizer_syscall_pre_impl_migrate_pages@Base 14 + __sanitizer_syscall_pre_impl_mincore@Base 14 + __sanitizer_syscall_pre_impl_mkdir@Base 14 + __sanitizer_syscall_pre_impl_mkdirat@Base 14 + __sanitizer_syscall_pre_impl_mknod@Base 14 + __sanitizer_syscall_pre_impl_mknodat@Base 14 + __sanitizer_syscall_pre_impl_mlock@Base 14 + __sanitizer_syscall_pre_impl_mlockall@Base 14 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 14 + __sanitizer_syscall_pre_impl_mount@Base 14 + __sanitizer_syscall_pre_impl_move_pages@Base 14 + __sanitizer_syscall_pre_impl_mprotect@Base 14 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 14 + __sanitizer_syscall_pre_impl_mq_notify@Base 14 + __sanitizer_syscall_pre_impl_mq_open@Base 14 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 14 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 14 + __sanitizer_syscall_pre_impl_mq_unlink@Base 14 + __sanitizer_syscall_pre_impl_mremap@Base 14 + __sanitizer_syscall_pre_impl_msgctl@Base 14 + __sanitizer_syscall_pre_impl_msgget@Base 14 + __sanitizer_syscall_pre_impl_msgrcv@Base 14 + __sanitizer_syscall_pre_impl_msgsnd@Base 14 + __sanitizer_syscall_pre_impl_msync@Base 14 + __sanitizer_syscall_pre_impl_munlock@Base 14 + __sanitizer_syscall_pre_impl_munlockall@Base 14 + __sanitizer_syscall_pre_impl_munmap@Base 14 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 14 + __sanitizer_syscall_pre_impl_nanosleep@Base 14 + __sanitizer_syscall_pre_impl_newfstat@Base 14 + __sanitizer_syscall_pre_impl_newfstatat@Base 14 + __sanitizer_syscall_pre_impl_newlstat@Base 14 + __sanitizer_syscall_pre_impl_newstat@Base 14 + __sanitizer_syscall_pre_impl_newuname@Base 14 + __sanitizer_syscall_pre_impl_ni_syscall@Base 14 + __sanitizer_syscall_pre_impl_nice@Base 14 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 14 + __sanitizer_syscall_pre_impl_old_mmap@Base 14 + __sanitizer_syscall_pre_impl_old_readdir@Base 14 + __sanitizer_syscall_pre_impl_old_select@Base 14 + __sanitizer_syscall_pre_impl_oldumount@Base 14 + __sanitizer_syscall_pre_impl_olduname@Base 14 + __sanitizer_syscall_pre_impl_open@Base 14 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 14 + __sanitizer_syscall_pre_impl_openat@Base 14 + __sanitizer_syscall_pre_impl_pause@Base 14 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 14 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 14 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 14 + __sanitizer_syscall_pre_impl_perf_event_open@Base 14 + __sanitizer_syscall_pre_impl_personality@Base 14 + __sanitizer_syscall_pre_impl_pipe2@Base 14 + __sanitizer_syscall_pre_impl_pipe@Base 14 + __sanitizer_syscall_pre_impl_pivot_root@Base 14 + __sanitizer_syscall_pre_impl_poll@Base 14 + __sanitizer_syscall_pre_impl_ppoll@Base 14 + __sanitizer_syscall_pre_impl_pread64@Base 14 + __sanitizer_syscall_pre_impl_preadv@Base 14 + __sanitizer_syscall_pre_impl_prlimit64@Base 14 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 14 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 14 + __sanitizer_syscall_pre_impl_pselect6@Base 14 + __sanitizer_syscall_pre_impl_ptrace@Base 14 + __sanitizer_syscall_pre_impl_pwrite64@Base 14 + __sanitizer_syscall_pre_impl_pwritev@Base 14 + __sanitizer_syscall_pre_impl_quotactl@Base 14 + __sanitizer_syscall_pre_impl_read@Base 14 + __sanitizer_syscall_pre_impl_readlink@Base 14 + __sanitizer_syscall_pre_impl_readlinkat@Base 14 + __sanitizer_syscall_pre_impl_readv@Base 14 + __sanitizer_syscall_pre_impl_reboot@Base 14 + __sanitizer_syscall_pre_impl_recv@Base 14 + __sanitizer_syscall_pre_impl_recvfrom@Base 14 + __sanitizer_syscall_pre_impl_recvmmsg@Base 14 + __sanitizer_syscall_pre_impl_recvmsg@Base 14 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 14 + __sanitizer_syscall_pre_impl_removexattr@Base 14 + __sanitizer_syscall_pre_impl_rename@Base 14 + __sanitizer_syscall_pre_impl_renameat@Base 14 + __sanitizer_syscall_pre_impl_request_key@Base 14 + __sanitizer_syscall_pre_impl_restart_syscall@Base 14 + __sanitizer_syscall_pre_impl_rmdir@Base 14 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 14 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 14 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 14 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 14 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 14 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 14 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 14 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 14 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 14 + __sanitizer_syscall_pre_impl_sched_getparam@Base 14 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 14 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 14 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 14 + __sanitizer_syscall_pre_impl_sched_setparam@Base 14 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 14 + __sanitizer_syscall_pre_impl_sched_yield@Base 14 + __sanitizer_syscall_pre_impl_select@Base 14 + __sanitizer_syscall_pre_impl_semctl@Base 14 + __sanitizer_syscall_pre_impl_semget@Base 14 + __sanitizer_syscall_pre_impl_semop@Base 14 + __sanitizer_syscall_pre_impl_semtimedop@Base 14 + __sanitizer_syscall_pre_impl_send@Base 14 + __sanitizer_syscall_pre_impl_sendfile64@Base 14 + __sanitizer_syscall_pre_impl_sendfile@Base 14 + __sanitizer_syscall_pre_impl_sendmmsg@Base 14 + __sanitizer_syscall_pre_impl_sendmsg@Base 14 + __sanitizer_syscall_pre_impl_sendto@Base 14 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 14 + __sanitizer_syscall_pre_impl_set_robust_list@Base 14 + __sanitizer_syscall_pre_impl_set_tid_address@Base 14 + __sanitizer_syscall_pre_impl_setdomainname@Base 14 + __sanitizer_syscall_pre_impl_setfsgid@Base 14 + __sanitizer_syscall_pre_impl_setfsuid@Base 14 + __sanitizer_syscall_pre_impl_setgid@Base 14 + __sanitizer_syscall_pre_impl_setgroups@Base 14 + __sanitizer_syscall_pre_impl_sethostname@Base 14 + __sanitizer_syscall_pre_impl_setitimer@Base 14 + __sanitizer_syscall_pre_impl_setns@Base 14 + __sanitizer_syscall_pre_impl_setpgid@Base 14 + __sanitizer_syscall_pre_impl_setpriority@Base 14 + __sanitizer_syscall_pre_impl_setregid@Base 14 + __sanitizer_syscall_pre_impl_setresgid@Base 14 + __sanitizer_syscall_pre_impl_setresuid@Base 14 + __sanitizer_syscall_pre_impl_setreuid@Base 14 + __sanitizer_syscall_pre_impl_setrlimit@Base 14 + __sanitizer_syscall_pre_impl_setsid@Base 14 + __sanitizer_syscall_pre_impl_setsockopt@Base 14 + __sanitizer_syscall_pre_impl_settimeofday@Base 14 + __sanitizer_syscall_pre_impl_setuid@Base 14 + __sanitizer_syscall_pre_impl_setxattr@Base 14 + __sanitizer_syscall_pre_impl_sgetmask@Base 14 + __sanitizer_syscall_pre_impl_shmat@Base 14 + __sanitizer_syscall_pre_impl_shmctl@Base 14 + __sanitizer_syscall_pre_impl_shmdt@Base 14 + __sanitizer_syscall_pre_impl_shmget@Base 14 + __sanitizer_syscall_pre_impl_shutdown@Base 14 + __sanitizer_syscall_pre_impl_sigaction@Base 14 + __sanitizer_syscall_pre_impl_sigaltstack@Base 14 + __sanitizer_syscall_pre_impl_signal@Base 14 + __sanitizer_syscall_pre_impl_signalfd4@Base 14 + __sanitizer_syscall_pre_impl_signalfd@Base 14 + __sanitizer_syscall_pre_impl_sigpending@Base 14 + __sanitizer_syscall_pre_impl_sigprocmask@Base 14 + __sanitizer_syscall_pre_impl_socket@Base 14 + __sanitizer_syscall_pre_impl_socketcall@Base 14 + __sanitizer_syscall_pre_impl_socketpair@Base 14 + __sanitizer_syscall_pre_impl_splice@Base 14 + __sanitizer_syscall_pre_impl_spu_create@Base 14 + __sanitizer_syscall_pre_impl_spu_run@Base 14 + __sanitizer_syscall_pre_impl_ssetmask@Base 14 + __sanitizer_syscall_pre_impl_stat64@Base 14 + __sanitizer_syscall_pre_impl_stat@Base 14 + __sanitizer_syscall_pre_impl_statfs64@Base 14 + __sanitizer_syscall_pre_impl_statfs@Base 14 + __sanitizer_syscall_pre_impl_stime@Base 14 + __sanitizer_syscall_pre_impl_swapoff@Base 14 + __sanitizer_syscall_pre_impl_swapon@Base 14 + __sanitizer_syscall_pre_impl_symlink@Base 14 + __sanitizer_syscall_pre_impl_symlinkat@Base 14 + __sanitizer_syscall_pre_impl_sync@Base 14 + __sanitizer_syscall_pre_impl_syncfs@Base 14 + __sanitizer_syscall_pre_impl_sysctl@Base 14 + __sanitizer_syscall_pre_impl_sysfs@Base 14 + __sanitizer_syscall_pre_impl_sysinfo@Base 14 + __sanitizer_syscall_pre_impl_syslog@Base 14 + __sanitizer_syscall_pre_impl_tee@Base 14 + __sanitizer_syscall_pre_impl_tgkill@Base 14 + __sanitizer_syscall_pre_impl_time@Base 14 + __sanitizer_syscall_pre_impl_timer_create@Base 14 + __sanitizer_syscall_pre_impl_timer_delete@Base 14 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 14 + __sanitizer_syscall_pre_impl_timer_gettime@Base 14 + __sanitizer_syscall_pre_impl_timer_settime@Base 14 + __sanitizer_syscall_pre_impl_timerfd_create@Base 14 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 14 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 14 + __sanitizer_syscall_pre_impl_times@Base 14 + __sanitizer_syscall_pre_impl_tkill@Base 14 + __sanitizer_syscall_pre_impl_truncate@Base 14 + __sanitizer_syscall_pre_impl_umask@Base 14 + __sanitizer_syscall_pre_impl_umount@Base 14 + __sanitizer_syscall_pre_impl_uname@Base 14 + __sanitizer_syscall_pre_impl_unlink@Base 14 + __sanitizer_syscall_pre_impl_unlinkat@Base 14 + __sanitizer_syscall_pre_impl_unshare@Base 14 + __sanitizer_syscall_pre_impl_uselib@Base 14 + __sanitizer_syscall_pre_impl_ustat@Base 14 + __sanitizer_syscall_pre_impl_utime@Base 14 + __sanitizer_syscall_pre_impl_utimensat@Base 14 + __sanitizer_syscall_pre_impl_utimes@Base 14 + __sanitizer_syscall_pre_impl_vfork@Base 14 + __sanitizer_syscall_pre_impl_vhangup@Base 14 + __sanitizer_syscall_pre_impl_vmsplice@Base 14 + __sanitizer_syscall_pre_impl_wait4@Base 14 + __sanitizer_syscall_pre_impl_waitid@Base 14 + __sanitizer_syscall_pre_impl_waitpid@Base 14 + __sanitizer_syscall_pre_impl_write@Base 14 + __sanitizer_syscall_pre_impl_writev@Base 14 + __sanitizer_unaligned_load16@Base 13 + __sanitizer_unaligned_load32@Base 13 + __sanitizer_unaligned_load64@Base 13 + __sanitizer_unaligned_store16@Base 13 + __sanitizer_unaligned_store32@Base 13 + __sanitizer_unaligned_store64@Base 13 + __sanitizer_valloc@Base 13 + __sigsetjmp@Base 13 + _setjmp@Base 13 + aligned_alloc@Base 13 + bcmp@Base 14 + calloc@Base 13 + cfree@Base 13 + free@Base 13 + longjmp@Base 13 + mallinfo@Base 13 + malloc@Base 13 + malloc_stats@Base 13 + malloc_usable_size@Base 13 + mallopt@Base 13 + memalign@Base 13 + memcmp@Base 14 + memcpy@Base 14 + memmove@Base 14 + memset@Base 14 + mmap@Base 14 + mprotect@Base 14 + munmap@Base 14 + posix_memalign@Base 13 + preadv2@Base 15 + pthread_create@Base 13 + pthread_detach@Base 14 + pthread_exit@Base 14 + pthread_join@Base 13 + pthread_timedjoin_np@Base 14 + pthread_tryjoin_np@Base 14 + pvalloc@Base 13 + pwritev2@Base 15 + realloc@Base 13 + reallocarray@Base 13 + siglongjmp@Base 13 + valloc@Base 13 + vfork@Base 13 diff --git a/libitm.symbols b/libitm.symbols new file mode 100644 index 0000000..c97c8bc --- /dev/null +++ b/libitm.symbols @@ -0,0 +1,3 @@ +libitm.so.1 #PACKAGE# #MINVER# + (symver)LIBITM_1.0 4.7 + (symver)LIBITM_1.1 6 diff --git a/liblsan0.symbols b/liblsan0.symbols new file mode 100644 index 0000000..992a451 --- /dev/null +++ b/liblsan0.symbols @@ -0,0 +1,252 @@ +# SymbolsHelper-Confirmed: 15 amd64 arm64 loong64 ppc64 ppc64el riscv64 +liblsan.so.0 liblsan0 #MINVER# + _ZdaPv@Base 4.9 + _ZdaPvRKSt9nothrow_t@Base 4.9 + _ZdaPvSt11align_val_t@Base 8 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 8 + _ZdaPvm@Base 8 + _ZdaPvmSt11align_val_t@Base 8 + _ZdlPv@Base 4.9 + _ZdlPvRKSt9nothrow_t@Base 4.9 + _ZdlPvSt11align_val_t@Base 8 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 8 + _ZdlPvm@Base 8 + _ZdlPvmSt11align_val_t@Base 8 + _Znam@Base 4.9 + _ZnamRKSt9nothrow_t@Base 4.9 + _ZnamSt11align_val_t@Base 8 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 8 + _Znwm@Base 4.9 + _ZnwmRKSt9nothrow_t@Base 4.9 + _ZnwmSt11align_val_t@Base 8 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 8 + (arch=!ppc64 !ppc64el)___interceptor___libc_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor__exit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_aligned_alloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_calloc@Base 15 + (arch=!ppc64 !ppc64el !riscv64)___interceptor_cfree@Base 14 + (arch=!ppc64 !ppc64el)___interceptor_free@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mallinfo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_malloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_malloc_usable_size@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mallopt@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mcheck@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mcheck_pedantic@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mprobe@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_posix_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_create@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_detach@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_exit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_join@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_timedjoin_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_tryjoin_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pvalloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_realloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_reallocarray@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigaction@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_signal@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strerror@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_valloc@Base 15 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_syminfo_to_full_callback@Base 11 + __asan_backtrace_syminfo_to_full_error_callback@Base 11 + __asan_backtrace_uncompress_lzma@Base 11 + __asan_backtrace_uncompress_zdebug@Base 8 + __asan_backtrace_uncompress_zstd@Base 13 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __interceptor___libc_memalign@Base 4.9 + __interceptor__exit@Base 8 + __interceptor_aligned_alloc@Base 5 + __interceptor_calloc@Base 4.9 + (arch=!riscv64)__interceptor_cfree@Base 4.9 + __interceptor_free@Base 4.9 + __interceptor_mallinfo@Base 4.9 + __interceptor_malloc@Base 4.9 + __interceptor_malloc_usable_size@Base 4.9 + __interceptor_mallopt@Base 4.9 + __interceptor_mcheck@Base 8 + __interceptor_mcheck_pedantic@Base 8 + __interceptor_memalign@Base 4.9 + __interceptor_mprobe@Base 8 + __interceptor_posix_memalign@Base 4.9 + __interceptor_pthread_create@Base 4.9 + __interceptor_pthread_detach@Base 14 + __interceptor_pthread_exit@Base 14 + __interceptor_pthread_join@Base 4.9 + __interceptor_pthread_timedjoin_np@Base 14 + __interceptor_pthread_tryjoin_np@Base 14 + __interceptor_pvalloc@Base 4.9 + __interceptor_realloc@Base 4.9 + __interceptor_reallocarray@Base 10 + __interceptor_sigaction@Base 8 + __interceptor_signal@Base 8 + __interceptor_strerror@Base 10 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___libc_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline__exit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_aligned_alloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_calloc@Base 15 + (arch=!ppc64 !ppc64el !riscv64)__interceptor_trampoline_cfree@Base 14 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_free@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mallinfo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc_usable_size@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mallopt@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck_pedantic@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mprobe@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_create@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_detach@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_exit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_join@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_timedjoin_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_tryjoin_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pvalloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_realloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_reallocarray@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigaction@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_signal@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strerror@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_valloc@Base 15 + __interceptor_valloc@Base 4.9 + __libc_memalign@Base 4.9 + __lsan_default_options@Base 11 + __lsan_disable@Base 4.9 + __lsan_do_leak_check@Base 4.9 + __lsan_do_recoverable_leak_check@Base 6 + __lsan_enable@Base 4.9 + __lsan_ignore_object@Base 4.9 + __lsan_init@Base 8 + __lsan_register_root_region@Base 5 + __lsan_unregister_root_region@Base 5 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 + __sanitizer_acquire_crash_state@Base 9 + __sanitizer_cov_8bit_counters_init@Base 8 + __sanitizer_cov_bool_flag_init@Base 11 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_load16@Base 13 + __sanitizer_cov_load1@Base 13 + __sanitizer_cov_load2@Base 13 + __sanitizer_cov_load4@Base 13 + __sanitizer_cov_load8@Base 13 + __sanitizer_cov_pcs_init@Base 8 + __sanitizer_cov_reset@Base 8 + __sanitizer_cov_store16@Base 13 + __sanitizer_cov_store1@Base 13 + __sanitizer_cov_store2@Base 13 + __sanitizer_cov_store4@Base 13 + __sanitizer_cov_store8@Base 13 + __sanitizer_cov_trace_cmp1@Base 7 + __sanitizer_cov_trace_cmp2@Base 7 + __sanitizer_cov_trace_cmp4@Base 7 + __sanitizer_cov_trace_cmp8@Base 7 + __sanitizer_cov_trace_cmp@Base 6 + __sanitizer_cov_trace_const_cmp1@Base 8 + __sanitizer_cov_trace_const_cmp2@Base 8 + __sanitizer_cov_trace_const_cmp4@Base 8 + __sanitizer_cov_trace_const_cmp8@Base 8 + __sanitizer_cov_trace_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __sanitizer_cov_trace_gep@Base 7 + __sanitizer_cov_trace_pc_guard@Base 7 + __sanitizer_cov_trace_pc_guard_init@Base 7 + __sanitizer_cov_trace_pc_indir@Base 7 + __sanitizer_cov_trace_switch@Base 6 + __sanitizer_dump_coverage@Base 8 + __sanitizer_dump_trace_pc_guard_coverage@Base 8 + __sanitizer_free_hook@Base 13 + __sanitizer_get_allocated_begin@Base 14 + __sanitizer_get_allocated_size@Base 5 + __sanitizer_get_allocated_size_fast@Base 14 + __sanitizer_get_current_allocated_bytes@Base 5 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 5 + __sanitizer_get_free_bytes@Base 5 + __sanitizer_get_heap_size@Base 5 + __sanitizer_get_module_and_offset_for_pc@Base 8 + __sanitizer_get_ownership@Base 5 + __sanitizer_get_report_path@Base 12 + __sanitizer_get_unmapped_bytes@Base 5 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_internal_memcpy@Base 14 + __sanitizer_internal_memmove@Base 14 + __sanitizer_internal_memset@Base 14 + __sanitizer_malloc_hook@Base 13 + __sanitizer_on_print@Base 10 + __sanitizer_print_stack_trace@Base 5 + __sanitizer_purge_allocator@Base 14 + __sanitizer_report_error_summary@Base 4.9 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_death_callback@Base 6 + __sanitizer_set_report_fd@Base 7 + __sanitizer_set_report_path@Base 4.9 + __sanitizer_symbolize_global@Base 7 + __sanitizer_symbolize_pc@Base 7 + _exit@Base 8 + aligned_alloc@Base 5 + calloc@Base 4.9 + (arch=!riscv64)cfree@Base 4.9 + free@Base 4.9 + mallinfo@Base 4.9 + malloc@Base 4.9 + malloc_usable_size@Base 4.9 + mallopt@Base 4.9 + mcheck@Base 8 + mcheck_pedantic@Base 8 + memalign@Base 4.9 + mprobe@Base 8 + posix_memalign@Base 4.9 + pthread_create@Base 4.9 + pthread_detach@Base 14 + pthread_exit@Base 14 + pthread_join@Base 4.9 + pthread_timedjoin_np@Base 14 + pthread_tryjoin_np@Base 14 + pvalloc@Base 4.9 + realloc@Base 4.9 + reallocarray@Base 10 + sigaction@Base 8 + signal@Base 8 + strerror@Base 10 + valloc@Base 4.9 diff --git a/libobjc.symbols b/libobjc.symbols new file mode 100644 index 0000000..f107f68 --- /dev/null +++ b/libobjc.symbols @@ -0,0 +1,11 @@ +libobjc.so.4 #PACKAGE# #MINVER# +#include "libobjc.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 + (arch=armel armhf)__objc_exception_class@Base 4.3.0 +libobjc_gc.so.4 #PACKAGE# #MINVER# +#include "libobjc.symbols.common" +(optional)#include "libobjc.symbols.gc" + __gnu_objc_personality_v0@Base 4.2.1 + (arch=armel armhf)__objc_exception_class@Base 4.3.0 + (arch=sparc64)_etext@Base 15 + (arch=riscv64)end@Base 15 diff --git a/libobjc.symbols.common b/libobjc.symbols.common new file mode 100644 index 0000000..2ec5ecc --- /dev/null +++ b/libobjc.symbols.common @@ -0,0 +1,205 @@ + __objc_accessors_init@Base 4.6 + __objc_add_class_to_hash@Base 4.2.1 + __objc_class_links_resolved@Base 4.2.1 + __objc_class_name_NXConstantString@Base 4.2.1 + __objc_class_name_Object@Base 4.2.1 + __objc_class_name_Protocol@Base 4.2.1 + __objc_dangling_categories@Base 4.2.1 + __objc_exec_class@Base 4.2.1 + __objc_force_linking@Base 4.2.1 + __objc_generate_gc_type_description@Base 4.2.1 + __objc_get_forward_imp@Base 4.2.1 + __objc_init_class@Base 4.6 + __objc_init_class_tables@Base 4.2.1 + __objc_init_dispatch_tables@Base 4.2.1 + __objc_init_selector_tables@Base 4.2.1 + __objc_init_thread_system@Base 4.2.1 + __objc_install_premature_dtable@Base 4.2.1 + __objc_is_multi_threaded@Base 4.2.1 + __objc_linking@Base 4.2.1 + __objc_msg_forward@Base 4.2.1 + __objc_msg_forward2@Base 4.3 + __objc_print_dtable_stats@Base 4.2.1 + __objc_protocols_add_protocol@Base 4.6 + __objc_protocols_init@Base 4.6 + __objc_register_instance_methods_to_class@Base 4.2.1 + __objc_register_selectors_from_class@Base 4.2.1 + __objc_register_selectors_from_description_list@Base 4.6 + __objc_register_selectors_from_list@Base 4.2.1 + __objc_register_selectors_from_module@Base 4.6 + __objc_resolve_class_links@Base 4.2.1 + __objc_responds_to@Base 4.2.1 + __objc_runtime_mutex@Base 4.2.1 + __objc_runtime_threads_alive@Base 4.2.1 + __objc_selector_max_index@Base 4.2.1 + __objc_sparse2_id@Base 4.2.1 + __objc_sync_init@Base 4.6 + __objc_thread_exit_status@Base 4.2.1 + __objc_uninstalled_dtable@Base 4.2.1 + __objc_update_classes_with_methods@Base 4.6 + __objc_update_dispatch_table_for_class@Base 4.2.1 + _objc_abort@Base 4.6 + _objc_became_multi_threaded@Base 4.2.1 + _objc_load_callback@Base 4.2.1 + _objc_lookup_class@Base 4.6 + class_addIvar@Base 4.6 + class_addMethod@Base 4.6 + class_addProtocol@Base 4.6 + class_add_method_list@Base 4.2.1 + class_conformsToProtocol@Base 4.6 + class_copyIvarList@Base 4.6 + class_copyMethodList@Base 4.6 + class_copyPropertyList@Base 4.6 + class_copyProtocolList@Base 4.6 + class_createInstance@Base 4.6 + class_getClassMethod@Base 4.6 + class_getClassVariable@Base 4.6 + class_getInstanceMethod@Base 4.6 + class_getInstanceSize@Base 4.6 + class_getInstanceVariable@Base 4.6 + class_getIvarLayout@Base 4.6 + class_getMethodImplementation@Base 4.6 + class_getName@Base 4.6 + class_getProperty@Base 4.6 + class_getSuperclass@Base 4.6 + class_getVersion@Base 4.6 + class_getWeakIvarLayout@Base 4.6 + class_isMetaClass@Base 4.6 + class_ivar_set_gcinvisible@Base 4.2.1 + class_replaceMethod@Base 4.6 + class_respondsToSelector@Base 4.6 + class_setIvarLayout@Base 4.6 + class_setVersion@Base 4.6 + class_setWeakIvarLayout@Base 4.6 + get_imp@Base 4.2.1 + idxsize@Base 4.2.1 + ivar_getName@Base 4.6 + ivar_getOffset@Base 4.6 + ivar_getTypeEncoding@Base 4.6 + method_copyArgumentType@Base 4.6 + method_copyReturnType@Base 4.6 + method_exchangeImplementations@Base 4.6 + method_getArgumentType@Base 4.6 + method_getDescription@Base 4.6 + method_getImplementation@Base 4.6 + method_getName@Base 4.6 + method_getNumberOfArguments@Base 4.6 + method_getReturnType@Base 4.6 + method_getTypeEncoding@Base 4.6 + method_get_imp@Base 4.6 + method_setImplementation@Base 4.6 + narrays@Base 4.2.1 + nbuckets@Base 4.2.1 + nil_method@Base 4.2.1 + nindices@Base 4.2.1 + objc_aligned_size@Base 4.2.1 + objc_alignof_type@Base 4.2.1 + objc_allocateClassPair@Base 4.6 + objc_atomic_malloc@Base 4.2.1 + objc_calloc@Base 4.2.1 + objc_condition_allocate@Base 4.2.1 + objc_condition_broadcast@Base 4.2.1 + objc_condition_deallocate@Base 4.2.1 + objc_condition_signal@Base 4.2.1 + objc_condition_wait@Base 4.2.1 + objc_copyProtocolList@Base 4.6 + objc_copyStruct@Base 4.6 + objc_disposeClassPair@Base 4.6 + objc_enumerationMutation@Base 4.6 + objc_exception_throw@Base 4.2.1 + objc_free@Base 4.2.1 + objc_getClass@Base 4.6 + objc_getClassList@Base 4.6 + objc_getMetaClass@Base 4.6 + objc_getProperty@Base 4.6 + objc_getPropertyStruct@Base 4.6 + objc_getProtocol@Base 4.6 + objc_getRequiredClass@Base 4.6 + objc_get_class@Base 4.2.1 + objc_get_meta_class@Base 4.2.1 + objc_get_type_qualifiers@Base 4.2.1 + objc_hash_add@Base 4.2.1 + objc_hash_delete@Base 4.2.1 + objc_hash_is_key_in_hash@Base 4.2.1 + objc_hash_new@Base 4.2.1 + objc_hash_next@Base 4.2.1 + objc_hash_remove@Base 4.2.1 + objc_hash_value_for_key@Base 4.2.1 + objc_layout_finish_structure@Base 4.2.1 + objc_layout_structure@Base 4.2.1 + objc_layout_structure_get_info@Base 4.2.1 + objc_layout_structure_next_member@Base 4.2.1 + objc_lookUpClass@Base 4.6 + objc_lookup_class@Base 4.2.1 + objc_malloc@Base 4.2.1 + objc_msg_lookup@Base 4.2.1 + objc_msg_lookup_super@Base 4.2.1 + objc_mutex_allocate@Base 4.2.1 + objc_mutex_deallocate@Base 4.2.1 + objc_mutex_lock@Base 4.2.1 + objc_mutex_trylock@Base 4.2.1 + objc_mutex_unlock@Base 4.2.1 + objc_promoted_size@Base 4.2.1 + objc_realloc@Base 4.2.1 + objc_registerClassPair@Base 4.6 + objc_setEnumerationMutationHandler@Base 4.6 + objc_setExceptionMatcher@Base 4.6 + objc_setGetUnknownClassHandler@Base 4.6 + objc_setProperty@Base 4.6 + objc_setPropertyStruct@Base 4.6 + objc_setUncaughtExceptionHandler@Base 4.6 + objc_set_thread_callback@Base 4.2.1 + objc_sizeof_type@Base 4.2.1 + objc_skip_argspec@Base 4.2.1 + objc_skip_offset@Base 4.2.1 + objc_skip_type_qualifiers@Base 4.2.1 + objc_skip_typespec@Base 4.2.1 + objc_sync_enter@Base 4.6 + objc_sync_exit@Base 4.6 + objc_thread_add@Base 4.2.1 + objc_thread_detach@Base 4.2.1 + objc_thread_exit@Base 4.2.1 + objc_thread_get_data@Base 4.2.1 + objc_thread_get_priority@Base 4.2.1 + objc_thread_id@Base 4.2.1 + objc_thread_remove@Base 4.2.1 + objc_thread_set_data@Base 4.2.1 + objc_thread_set_priority@Base 4.2.1 + objc_thread_yield@Base 4.2.1 + object_copy@Base 4.2.1 + object_dispose@Base 4.2.1 + object_getClassName@Base 4.6 + object_getIndexedIvars@Base 4.6 + object_getInstanceVariable@Base 4.6 + object_getIvar@Base 4.6 + object_setClass@Base 4.6 + object_setInstanceVariable@Base 4.6 + object_setIvar@Base 4.6 + property_getAttributes@Base 4.6 + property_getName@Base 4.6 + protocol_conformsToProtocol@Base 4.6 + protocol_copyMethodDescriptionList@Base 4.6 + protocol_copyPropertyList@Base 4.6 + protocol_copyProtocolList@Base 4.6 + protocol_getMethodDescription@Base 4.6 + protocol_getName@Base 4.6 + protocol_getProperty@Base 4.6 + protocol_isEqual@Base 4.6 + sarray_at_put@Base 4.2.1 + sarray_at_put_safe@Base 4.2.1 + sarray_free@Base 4.2.1 + sarray_lazy_copy@Base 4.2.1 + sarray_new@Base 4.2.1 + sarray_realloc@Base 4.2.1 + sarray_remove_garbage@Base 4.2.1 + search_for_method_in_list@Base 4.2.1 + sel_copyTypedSelectorList@Base 4.6 + sel_getName@Base 4.6 + sel_getTypeEncoding@Base 4.6 + sel_getTypedSelector@Base 4.6 + sel_getUid@Base 4.6 + sel_get_any_uid@Base 4.2.1 + sel_isEqual@Base 4.6 + sel_is_mapped@Base 4.2.1 + sel_registerName@Base 4.6 + sel_registerTypedName@Base 4.6 diff --git a/libobjc.symbols.gc b/libobjc.symbols.gc new file mode 100644 index 0000000..87681af --- /dev/null +++ b/libobjc.symbols.gc @@ -0,0 +1,522 @@ + async_set_pht_entry_from_index@Base 4.2.1 + free_list_index_of@Base 4.2.1 + suspend_self@Base 4.2.1 + GC_abort@Base 6 + GC_acquire_mark_lock@Base 6 + GC_add_ext_descriptor@Base 6 + GC_add_leaked@Base 6 + GC_add_map_entry@Base 6 + GC_add_roots@Base 6 + GC_add_roots_inner@Base 6 + GC_add_smashed@Base 6 + GC_add_to_black_list_normal@Base 6 + GC_add_to_black_list_stack@Base 6 + GC_add_to_fl@Base 6 + GC_add_to_heap@Base 6 + GC_adj_words_allocd@Base 6 + GC_all_bottom_indices@Base 6 + GC_all_bottom_indices_end@Base 6 + GC_all_interior_pointers@Base 6 + GC_alloc_large@Base 6 + GC_alloc_large_and_clear@Base 6 + GC_alloc_reclaim_list@Base 6 + GC_allocate_ml@Base 6 + GC_allochblk@Base 6 + GC_allochblk_nth@Base 6 + GC_allocobj@Base 6 + GC_aobjfreelist_ptr@Base 6 + GC_apply_to_all_blocks@Base 6 + GC_apply_to_maps@Base 6 + GC_approx_sp@Base 6 + GC_arobjfreelist@Base 6 + GC_array_kind@Base 6 + GC_array_mark_proc@Base 6 + GC_array_mark_proc_index@Base 6 + GC_arrays@Base 6 + GC_auobjfreelist_ptr@Base 6 + GC_avail_descr@Base 6 + GC_base@Base 6 + GC_begin_syscall@Base 6 + GC_bl_init@Base 6 + GC_black_list_spacing@Base 6 + GC_block_count@Base 6 + GC_block_empty@Base 6 + GC_block_nearly_full1@Base 6 + GC_block_nearly_full3@Base 6 + GC_block_nearly_full@Base 6 + GC_block_was_dirty@Base 6 + GC_bm_table@Base 6 + GC_brief_async_signal_safe_sleep@Base 6 + GC_build_fl1@Base 6 + GC_build_fl2@Base 6 + GC_build_fl4@Base 6 + GC_build_fl@Base 6 + GC_build_fl_clear2@Base 6 + GC_build_fl_clear3@Base 6 + GC_build_fl_clear4@Base 6 + GC_call_with_alloc_lock@Base 6 + GC_calloc_explicitly_typed@Base 6 + GC_change_stubborn@Base 6 + GC_check_annotated_obj@Base 6 + GC_check_heap@Base 6 + GC_check_heap_block@Base 6 + GC_check_heap_proc@Base 6 + GC_clear_a_few_frames@Base 6 + GC_clear_bl@Base 6 + GC_clear_fl_links@Base 6 + GC_clear_fl_marks@Base 6 + GC_clear_hdr_marks@Base 6 + GC_clear_mark_bit@Base 6 + GC_clear_marks@Base 6 + GC_clear_roots@Base 6 + GC_clear_stack@Base 6 + GC_clear_stack_inner@Base 6 + GC_collect_a_little@Base 6 + GC_collect_a_little_inner@Base 6 + GC_collect_or_expand@Base 6 + GC_collecting@Base 6 + GC_collection_in_progress@Base 6 + GC_cond_register_dynamic_libraries@Base 6 + GC_continue_reclaim@Base 6 + GC_copy_bl@Base 6 + GC_copyright@Base 6 + GC_current_warn_proc@Base 6 + GC_data_start@Base 6 + GC_debug_change_stubborn@Base 6 + GC_debug_end_stubborn_change@Base 6 + GC_debug_free@Base 6 + GC_debug_free_inner@Base 6 + GC_debug_gcj_fast_malloc@Base 6 + GC_debug_gcj_malloc@Base 6 + GC_debug_header_size@Base 6 + GC_debug_invoke_finalizer@Base 6 + GC_debug_malloc@Base 6 + GC_debug_malloc_atomic@Base 6 + GC_debug_malloc_atomic_ignore_off_page@Base 6 + GC_debug_malloc_atomic_uncollectable@Base 6 + GC_debug_malloc_ignore_off_page@Base 6 + GC_debug_malloc_replacement@Base 6 + GC_debug_malloc_stubborn@Base 6 + GC_debug_malloc_uncollectable@Base 6 + GC_debug_print_heap_obj_proc@Base 6 + GC_debug_realloc@Base 6 + GC_debug_realloc_replacement@Base 6 + GC_debug_register_displacement@Base 6 + GC_debug_register_finalizer@Base 6 + GC_debug_register_finalizer_ignore_self@Base 6 + GC_debug_register_finalizer_no_order@Base 6 + GC_debug_register_finalizer_unreachable@Base 6 + GC_debugging_started@Base 6 + GC_default_is_valid_displacement_print_proc@Base 6 + GC_default_is_visible_print_proc@Base 6 + GC_default_oom_fn@Base 6 + GC_default_print_heap_obj_proc@Base 6 + GC_default_push_other_roots@Base 6 + GC_default_same_obj_print_proc@Base 6 + GC_default_warn_proc@Base 6 + GC_deficit@Base 6 + GC_delete_gc_thread@Base 6 + GC_delete_thread@Base 6 + GC_descr_obj_size@Base 6 + GC_destroy_thread_local@Base 6 + GC_dirty_init@Base 6 + GC_dirty_maintained@Base 6 + GC_disable@Base 6 + GC_disable_signals@Base 6 + GC_dl_entries@Base 6 + GC_dlopen@Base 6 + GC_do_nothing@Base 6 + GC_dont_expand@Base 6 + GC_dont_gc@Base 6 + GC_dont_precollect@Base 6 + GC_double_descr@Base 6 + GC_dump@Base 6 + GC_dump_finalization@Base 6 + GC_dump_regions@Base 6 + GC_dump_regularly@Base 6 + GC_ed_size@Base 6 + GC_enable@Base 6 + GC_enable_incremental@Base 6 + GC_enable_signals@Base 6 + GC_end_blocking@Base 6 + GC_end_stubborn_change@Base 6 + GC_end_syscall@Base 6 + GC_enqueue_all_finalizers@Base 6 + GC_eobjfreelist@Base 6 + GC_err_printf@Base 6 + GC_err_puts@Base 6 + GC_err_write@Base 6 + GC_excl_table_entries@Base 6 + GC_exclude_static_roots@Base 6 + GC_exit_check@Base 6 + GC_expand_hp@Base 6 + GC_expand_hp_inner@Base 6 + GC_explicit_kind@Base 6 + GC_explicit_typing_initialized@Base 6 + GC_ext_descriptors@Base 6 + GC_extend_size_map@Base 6 + GC_fail_count@Base 6 + GC_fault_handler@Base 6 + GC_finalization_failures@Base 6 + GC_finalize@Base 6 + GC_finalize_all@Base 6 + GC_finalize_now@Base 6 + GC_finalize_on_demand@Base 6 + GC_finalizer_notifier@Base 6 + GC_find_header@Base 6 + GC_find_leak@Base 6 + GC_find_limit@Base 6 + GC_find_start@Base 6 + GC_finish_collection@Base 6 + GC_fl_builder_count@Base 6 + GC_fo_entries@Base 6 + GC_free@Base 6 + GC_free_block_ending_at@Base 6 + GC_free_bytes@Base 6 + GC_free_inner@Base 6 + GC_free_space_divisor@Base 6 + GC_freehblk@Base 6 + GC_freehblk_ptr@Base 6 + GC_full_freq@Base 6 + GC_gc_no@Base 6 + GC_gcj_debug_kind@Base 6 + GC_gcj_fast_malloc@Base 6 + GC_gcj_kind@Base 6 + GC_gcj_malloc@Base 6 + GC_gcj_malloc_ignore_off_page@Base 6 + GC_gcj_malloc_initialized@Base 6 + GC_gcjdebugobjfreelist@Base 6 + GC_gcjobjfreelist@Base 6 + GC_gcollect@Base 6 + GC_general_register_disappearing_link@Base 6 + GC_generic_lock@Base 6 + GC_generic_malloc@Base 6 + GC_generic_malloc_ignore_off_page@Base 6 + GC_generic_malloc_inner@Base 6 + GC_generic_malloc_inner_ignore_off_page@Base 6 + GC_generic_malloc_many@Base 6 + GC_generic_malloc_words_small@Base 6 + GC_generic_malloc_words_small_inner@Base 6 + GC_generic_or_special_malloc@Base 6 + GC_generic_push_regs@Base 6 + GC_get_bytes_since_gc@Base 6 + GC_get_first_part@Base 6 + GC_get_free_bytes@Base 6 + GC_get_heap_size@Base 6 + GC_get_nprocs@Base 6 + GC_get_stack_base@Base 6 + GC_get_thread_stack_base@Base 6 + GC_get_total_bytes@Base 6 + GC_greatest_plausible_heap_addr@Base 6 + GC_grow_table@Base 6 + GC_has_other_debug_info@Base 6 + GC_have_errors@Base 6 + GC_hblk_fl_from_blocks@Base 6 + GC_hblkfreelist@Base 6 + GC_hdr_cache_hits@Base 6 + GC_hdr_cache_misses@Base 6 + GC_high_water@Base 6 + GC_ignore_self_finalize_mark_proc@Base 6 + GC_in_thread_creation@Base 6 + GC_incomplete_normal_bl@Base 6 + GC_incomplete_stack_bl@Base 6 + GC_incr_mem_freed@Base 6 + GC_incr_words_allocd@Base 6 + GC_incremental@Base 6 + GC_incremental_protection_needs@Base 6 + GC_init@Base 6 + GC_init_explicit_typing@Base 6 + GC_init_gcj_malloc@Base 6 + GC_init_headers@Base 6 + GC_init_inner@Base 6 + GC_init_linux_data_start@Base 6 + GC_init_parallel@Base 6 + GC_init_size_map@Base 6 + GC_init_thread_local@Base 6 + GC_initiate_gc@Base 6 + GC_install_counts@Base 6 + GC_install_header@Base 6 + GC_invalid_header@Base 6 + GC_invalid_map@Base 6 + GC_invalidate_map@Base 6 + GC_invalidate_mark_state@Base 6 + GC_invoke_finalizers@Base 6 + GC_is_black_listed@Base 6 + GC_is_fresh@Base 6 + GC_is_full_gc@Base 6 + GC_is_initialized@Base 6 + GC_is_marked@Base 6 + GC_is_static_root@Base 6 + GC_is_thread_suspended@Base 6 + GC_is_valid_displacement@Base 6 + GC_is_valid_displacement_print_proc@Base 6 + GC_is_visible@Base 6 + GC_is_visible_print_proc@Base 6 + GC_java_finalization@Base 6 + GC_jmp_buf@Base 6 + GC_key_create@Base 6 + GC_large_alloc_warn_interval@Base 6 + GC_large_alloc_warn_suppressed@Base 6 + GC_leaked@Base 6 + GC_least_plausible_heap_addr@Base 6 + GC_linux_stack_base@Base 6 + GC_local_gcj_malloc@Base 6 + GC_local_malloc@Base 6 + GC_local_malloc_atomic@Base 6 + GC_lock@Base 6 + GC_lock_holder@Base 6 + GC_lookup_thread@Base 6 + GC_make_array_descriptor@Base 6 + GC_make_closure@Base 6 + GC_make_descriptor@Base 6 + GC_make_sequence_descriptor@Base 6 + GC_malloc@Base 6 + GC_malloc_atomic@Base 6 + GC_malloc_atomic_ignore_off_page@Base 6 + GC_malloc_atomic_uncollectable@Base 6 + GC_malloc_explicitly_typed@Base 6 + GC_malloc_explicitly_typed_ignore_off_page@Base 6 + GC_malloc_ignore_off_page@Base 6 + GC_malloc_many@Base 6 + GC_malloc_stubborn@Base 6 + GC_malloc_uncollectable@Base 6 + GC_mark_and_push@Base 6 + GC_mark_and_push_stack@Base 6 + GC_mark_from@Base 6 + GC_mark_init@Base 6 + GC_mark_some@Base 6 + GC_mark_stack@Base 6 + GC_mark_stack_empty@Base 6 + GC_mark_stack_limit@Base 6 + GC_mark_stack_size@Base 6 + GC_mark_stack_too_small@Base 6 + GC_mark_stack_top@Base 6 + GC_mark_state@Base 6 + GC_mark_thread_local_free_lists@Base 6 + GC_max@Base 6 + GC_max_retries@Base 6 + GC_maybe_gc@Base 6 + GC_mem_found@Base 6 + GC_memalign@Base 6 + GC_min@Base 6 + GC_min_sp@Base 6 + GC_n_attempts@Base 6 + GC_n_heap_sects@Base 6 + GC_n_kinds@Base 6 + GC_n_leaked@Base 6 + GC_n_mark_procs@Base 6 + GC_n_rescuing_pages@Base 6 + GC_n_set_marks@Base 6 + GC_n_smashed@Base 6 + GC_need_full_gc@Base 6 + GC_never_stop_func@Base 6 + GC_new_free_list@Base 6 + GC_new_free_list_inner@Base 6 + GC_new_hblk@Base 6 + GC_new_kind@Base 6 + GC_new_kind_inner@Base 6 + GC_new_proc@Base 6 + GC_new_proc_inner@Base 6 + GC_new_thread@Base 6 + GC_next_exclusion@Base 6 + GC_next_used_block@Base 6 + GC_no_dls@Base 6 + GC_non_gc_bytes@Base 6 + GC_noop1@Base 6 + GC_noop@Base 6 + GC_normal_finalize_mark_proc@Base 6 + GC_notify_all_builder@Base 6 + GC_notify_full_gc@Base 6 + GC_notify_or_invoke_finalizers@Base 6 + GC_nprocs@Base 6 + GC_null_finalize_mark_proc@Base 6 + GC_number_stack_black_listed@Base 6 + GC_obj_kinds@Base 6 + GC_objects_are_marked@Base 6 + GC_objfreelist_ptr@Base 6 + GC_old_bus_handler@Base 6 + GC_old_normal_bl@Base 6 + GC_old_segv_handler@Base 6 + GC_old_stack_bl@Base 6 + GC_on_stack@Base 6 + GC_oom_fn@Base 6 + GC_page_size@Base 6 + GC_page_was_dirty@Base 6 + GC_page_was_ever_dirty@Base 6 + GC_parallel@Base 6 + GC_pause@Base 6 + GC_post_incr@Base 6 + GC_pre_incr@Base 6 + GC_prev_block@Base 6 + GC_print_address_map@Base 6 + GC_print_all_errors@Base 6 + GC_print_all_smashed@Base 6 + GC_print_all_smashed_proc@Base 6 + GC_print_back_height@Base 6 + GC_print_block_descr@Base 6 + GC_print_block_list@Base 6 + GC_print_finalization_stats@Base 6 + GC_print_hblkfreelist@Base 6 + GC_print_heap_obj@Base 6 + GC_print_heap_sects@Base 6 + GC_print_obj@Base 6 + GC_print_smashed_obj@Base 6 + GC_print_source_ptr@Base 6 + GC_print_static_roots@Base 6 + GC_print_stats@Base 6 + GC_print_type@Base 6 + GC_printf@Base 6 + GC_project2@Base 6 + GC_promote_black_lists@Base 6 + GC_protect_heap@Base 6 + GC_pthread_create@Base 6 + GC_pthread_detach@Base 6 + GC_pthread_join@Base 6 + GC_pthread_sigmask@Base 6 + GC_push_all@Base 6 + GC_push_all_eager@Base 6 + GC_push_all_stack@Base 6 + GC_push_all_stacks@Base 6 + GC_push_complex_descriptor@Base 6 + GC_push_conditional@Base 6 + GC_push_conditional_with_exclusions@Base 6 + GC_push_current_stack@Base 6 + GC_push_finalizer_structures@Base 6 + GC_push_gc_structures@Base 6 + GC_push_marked1@Base 6 + GC_push_marked2@Base 6 + GC_push_marked4@Base 6 + GC_push_marked@Base 6 + GC_push_next_marked@Base 6 + GC_push_next_marked_dirty@Base 6 + GC_push_next_marked_uncollectable@Base 6 + GC_push_one@Base 6 + GC_push_other_roots@Base 6 + GC_push_roots@Base 6 + GC_push_selected@Base 6 + GC_push_stubborn_structures@Base 6 + GC_push_thread_structures@Base 6 + GC_quiet@Base 6 + GC_read_dirty@Base 6 + GC_realloc@Base 6 + GC_reclaim1@Base 6 + GC_reclaim_all@Base 6 + GC_reclaim_block@Base 6 + GC_reclaim_check@Base 6 + GC_reclaim_clear2@Base 6 + GC_reclaim_clear4@Base 6 + GC_reclaim_clear@Base 6 + GC_reclaim_generic@Base 6 + GC_reclaim_small_nonempty_block@Base 6 + GC_reclaim_uninit2@Base 6 + GC_reclaim_uninit4@Base 6 + GC_reclaim_uninit@Base 6 + GC_register_data_segments@Base 6 + GC_register_describe_type_fn@Base 6 + GC_register_disappearing_link@Base 6 + GC_register_displacement@Base 6 + GC_register_displacement_inner@Base 6 + GC_register_dynamic_libraries@Base 6 + GC_register_dynamic_libraries_dl_iterate_phdr@Base 6 + GC_register_finalizer@Base 6 + GC_register_finalizer_ignore_self@Base 6 + GC_register_finalizer_inner@Base 6 + GC_register_finalizer_no_order@Base 6 + GC_register_finalizer_unreachable@Base 6 + GC_register_has_static_roots_callback@Base 6 + GC_register_main_static_data@Base 6 + GC_register_my_thread@Base 6 + GC_release_mark_lock@Base 6 + GC_remove_allowed_signals@Base 6 + GC_remove_counts@Base 6 + GC_remove_from_fl@Base 6 + GC_remove_header@Base 6 + GC_remove_protection@Base 6 + GC_remove_roots@Base 6 + GC_remove_roots_inner@Base 6 + GC_remove_specific@Base 6 + GC_remove_tmp_roots@Base 6 + GC_repeat_read@Base 6 + GC_reset_fault_handler@Base 6 + GC_restart_handler@Base 6 + GC_resume_thread@Base 6 + GC_retry_signals@Base 6 + GC_root_size@Base 6 + GC_roots_present@Base 6 + GC_same_obj@Base 6 + GC_same_obj_print_proc@Base 6 + GC_scratch_alloc@Base 6 + GC_set_and_save_fault_handler@Base 6 + GC_set_fl_marks@Base 6 + GC_set_free_space_divisor@Base 6 + GC_set_hdr_marks@Base 6 + GC_set_mark_bit@Base 6 + GC_set_max_heap_size@Base 6 + GC_set_warn_proc@Base 6 + GC_setpagesize@Base 6 + GC_setspecific@Base 6 + GC_setup_temporary_fault_handler@Base 6 + GC_should_collect@Base 6 + GC_should_invoke_finalizers@Base 6 + GC_signal_mark_stack_overflow@Base 6 + GC_size@Base 6 + GC_sleep@Base 6 + GC_slow_getspecific@Base 6 + GC_smashed@Base 6 + GC_spin_count@Base 6 + GC_split_block@Base 6 + GC_stack_last_cleared@Base 6 + GC_stackbottom@Base 6 + GC_start_blocking@Base 6 + GC_start_call_back@Base 6 + GC_start_debugging@Base 6 + GC_start_reclaim@Base 6 + GC_start_routine@Base 6 + GC_start_time@Base 6 + GC_start_world@Base 6 + GC_stderr@Base 6 + GC_stdout@Base 6 + GC_stop_count@Base 6 + GC_stop_init@Base 6 + GC_stop_world@Base 6 + GC_stopped_mark@Base 6 + GC_stopping_pid@Base 6 + GC_stopping_thread@Base 6 + GC_store_debug_info@Base 6 + GC_suspend_ack_sem@Base 6 + GC_suspend_all@Base 6 + GC_suspend_handler@Base 6 + GC_suspend_handler_inner@Base 6 + GC_suspend_thread@Base 6 + GC_thr_init@Base 6 + GC_thr_initialized@Base 6 + GC_thread_exit_proc@Base 6 + GC_thread_key@Base 6 + GC_threads@Base 6 + GC_time_limit@Base 6 + GC_timeout_stop_func@Base 6 + GC_total_stack_black_listed@Base 6 + GC_try_to_collect@Base 6 + GC_try_to_collect_inner@Base 6 + GC_typed_mark_proc@Base 6 + GC_typed_mark_proc_index@Base 6 + GC_unix_get_mem@Base 6 + GC_unlocked_count@Base 6 + GC_unpromote_black_lists@Base 6 + GC_unprotect_range@Base 6 + GC_unreachable_finalize_mark_proc@Base 6 + GC_unregister_disappearing_link@Base 6 + GC_unregister_my_thread@Base 6 + GC_uobjfreelist_ptr@Base 6 + GC_use_entire_heap@Base 6 + GC_used_heap_size_after_full@Base 6 + GC_version@Base 6 + GC_wait_builder@Base 6 + GC_wait_for_gc_completion@Base 6 + GC_wait_for_reclaim@Base 6 + GC_with_callee_saves_pushed@Base 6 + GC_words_allocd_at_reset@Base 6 + GC_world_is_stopped@Base 6 + GC_world_stopped@Base 6 + GC_write@Base 6 + GC_write_fault_handler@Base 6 diff --git a/libquadmath.symbols b/libquadmath.symbols new file mode 100644 index 0000000..cd8ce65 --- /dev/null +++ b/libquadmath.symbols @@ -0,0 +1,4 @@ +libquadmath.so.0 #PACKAGE# #MINVER# + (symver)QUADMATH_1.0 4.6 + (symver)QUADMATH_1.1 6 + (symver)QUADMATH_1.2 9 diff --git a/libstdc++-BV-doc.doc-base b/libstdc++-BV-doc.doc-base new file mode 100644 index 0000000..c5fd048 --- /dev/null +++ b/libstdc++-BV-doc.doc-base @@ -0,0 +1,13 @@ +Document: libstdc++-@BV@-doc +Title: The GNU Standard C++ Library v3 (gcc-@BV@) +Author: Various +Abstract: This package contains documentation files for the GNU stdc++ library. + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. +Section: Programming/C++ + +Format: html +Index: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/index.html +Files: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/* diff --git a/libstdc++-BV-doc.overrides b/libstdc++-BV-doc.overrides new file mode 100644 index 0000000..9685ae8 --- /dev/null +++ b/libstdc++-BV-doc.overrides @@ -0,0 +1,8 @@ +libstdc++-@BV@-doc binary: manpage-has-bad-whatis-entry + +# 3xx used by intent to avoid conficts +libstdc++-@BV@-doc binary: manpage-section-mismatch + +# some very long identifiers +# doxygen accepts formulas in man pages ... +libstdc++-@BV@-doc binary: groff-message diff --git a/libstdc++.symbols b/libstdc++.symbols new file mode 100644 index 0000000..e74a9d9 --- /dev/null +++ b/libstdc++.symbols @@ -0,0 +1,67 @@ +libstdc++.so.6 #PACKAGE# #MINVER# + (symver)CXXABI_1.3 4.1.1 + (symver)CXXABI_1.3.1 4.1.1 + (symver)CXXABI_1.3.2 4.3 + (symver)CXXABI_1.3.3 4.3 + (symver)CXXABI_1.3.4 4.3 + (symver)CXXABI_1.3.5 4.3 + (symver)CXXABI_1.3.6 4.3 + (symver)CXXABI_1.3.7 4.3 + (symver)CXXABI_1.3.8 4.3 + (symver)CXXABI_1.3.9 5 + (symver)CXXABI_1.3.10 6 + (symver)CXXABI_1.3.11 10.2 + (symver)CXXABI_1.3.12 9 + (symver)CXXABI_1.3.13 11 + (symver)CXXABI_1.3.14 13 + (symver)CXXABI_1.3.15 14 + (symver|arch=riscv64)CXXABI_1.3.16 15 + (symver|arch=armel armhf)CXXABI_ARM_1.3.3 4.4 + (symver|arch=amd64 i386 loong64 x32 hurd-amd64 hurd-i386)CXXABI_FLOAT128 5 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)CXXABI_LDBL_1.3 4.2.1 + (symver|arch=ppc64el)CXXABI_IEEE128_1.3.13 11 + (symver)CXXABI_TM_1 4.7 + (symver)GLIBCXX_3.4 4.1.1 + (symver)GLIBCXX_3.4.1 4.1.1 + (symver)GLIBCXX_3.4.2 4.1.1 + (symver)GLIBCXX_3.4.3 4.1.1 + (symver)GLIBCXX_3.4.4 4.1.1 + (symver)GLIBCXX_3.4.5 4.1.1 + (symver)GLIBCXX_3.4.6 4.1.1 + (symver)GLIBCXX_3.4.7 4.1.1 + (symver)GLIBCXX_3.4.8 4.1.1 + (symver)GLIBCXX_3.4.9 4.2.1 + (symver)GLIBCXX_3.4.10 4.3 + (symver)GLIBCXX_3.4.11 4.4 + (symver)GLIBCXX_3.4.12 4.4 + (symver)GLIBCXX_3.4.13 4.4.2 + (symver)GLIBCXX_3.4.14 4.5 + (symver)GLIBCXX_3.4.15 4.6 + (symver)GLIBCXX_3.4.16 4.6 + (symver)GLIBCXX_3.4.17 4.7 + (symver)GLIBCXX_3.4.18 4.8 + (symver)GLIBCXX_3.4.19 4.8 + (symver)GLIBCXX_3.4.20 4.9 + (symver)GLIBCXX_3.4.21 5.2 + (symver)GLIBCXX_3.4.22 6 + (symver)GLIBCXX_3.4.23 10.2 + (symver)GLIBCXX_3.4.24 7 + (symver)GLIBCXX_3.4.25 8 + (symver)GLIBCXX_3.4.26 9 + (symver)GLIBCXX_3.4.27 9.1 + (symver)GLIBCXX_3.4.28 10.2 + (symver)GLIBCXX_3.4.29 11 + (symver)GLIBCXX_3.4.30 12 + (symver)GLIBCXX_3.4.31 13 + (symver)GLIBCXX_3.4.32 13.1 + (symver)GLIBCXX_3.4.33 14 + (symver)GLIBCXX_3.4.34 15 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4 4.2.1 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.7 4.2.1 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.10 4.3 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.21 5 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.29 11 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.31 13 + (symver|arch=ppc64el)GLIBCXX_IEEE128_3.4.29 11 + (symver|arch=ppc64el)GLIBCXX_IEEE128_3.4.30 12 + (symver|arch=ppc64el)GLIBCXX_IEEE128_3.4.31 13 diff --git a/libstdc++CXX.prerm b/libstdc++CXX.prerm new file mode 100644 index 0000000..d4a6b38 --- /dev/null +++ b/libstdc++CXX.prerm @@ -0,0 +1,13 @@ +#! /bin/sh + +set -e + +case "$1" in + remove|upgrade) + files=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {$NF=sprintf("__pycache__/%s.*.py[co]", substr($NF,1,length($NF)-3)); print}') + rm -f $files + dirs=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {NF--; print}' | sort -u) + find $dirs -mindepth 1 -maxdepth 1 -name __pycache__ -type d -empty | xargs -r rmdir +esac + +#DEBHELPER# diff --git a/libtsan2.symbols b/libtsan2.symbols new file mode 100644 index 0000000..a5bf6ac --- /dev/null +++ b/libtsan2.symbols @@ -0,0 +1,3298 @@ +# SymbolsHelper-Confirmed: 15 amd64 arm64 loong64 ppc64 ppc64el riscv64 +libtsan.so.2 libtsan2 #MINVER# + AnnotateBenignRace@Base 4.9 + AnnotateBenignRaceSized@Base 4.9 + AnnotateCondVarSignal@Base 4.9 + AnnotateCondVarSignalAll@Base 4.9 + AnnotateCondVarWait@Base 4.9 + AnnotateEnableRaceDetection@Base 4.9 + AnnotateExpectRace@Base 4.9 + AnnotateFlushExpectedRaces@Base 4.9 + AnnotateFlushState@Base 4.9 + AnnotateHappensAfter@Base 4.9 + AnnotateHappensBefore@Base 4.9 + AnnotateIgnoreReadsBegin@Base 4.9 + AnnotateIgnoreReadsEnd@Base 4.9 + AnnotateIgnoreSyncBegin@Base 4.9 + AnnotateIgnoreSyncEnd@Base 4.9 + AnnotateIgnoreWritesBegin@Base 4.9 + AnnotateIgnoreWritesEnd@Base 4.9 + AnnotateMemoryIsInitialized@Base 4.9 + AnnotateMemoryIsUninitialized@Base 5 + AnnotateMutexIsNotPHB@Base 4.9 + AnnotateMutexIsUsedAsCondVar@Base 4.9 + AnnotateNewMemory@Base 4.9 + AnnotateNoOp@Base 4.9 + AnnotatePCQCreate@Base 4.9 + AnnotatePCQDestroy@Base 4.9 + AnnotatePCQGet@Base 4.9 + AnnotatePCQPut@Base 4.9 + AnnotatePublishMemoryRange@Base 4.9 + AnnotateRWLockAcquired@Base 4.9 + AnnotateRWLockCreate@Base 4.9 + AnnotateRWLockCreateStatic@Base 4.9 + AnnotateRWLockDestroy@Base 4.9 + AnnotateRWLockReleased@Base 4.9 + AnnotateThreadName@Base 4.9 + AnnotateTraceMemory@Base 4.9 + AnnotateUnpublishMemoryRange@Base 4.9 + RunningOnValgrind@Base 4.9 + ThreadSanitizerQuery@Base 4.9 + ValgrindSlowdown@Base 4.9 + WTFAnnotateBenignRaceSized@Base 4.9 + WTFAnnotateHappensAfter@Base 4.9 + WTFAnnotateHappensBefore@Base 4.9 + _ZN6__tsan10OnFinalizeEb@Base 4.9 + _ZN6__tsan12OnInitializeEv@Base 5 + _ZN6__tsan30OnPotentiallyBlockingRegionEndEv@Base 10 + _ZN6__tsan32OnPotentiallyBlockingRegionBeginEv@Base 10 + _ZN6__tsan8OnReportEPKNS_10ReportDescEb@Base 4.9 + _ZdaPv@Base 4.9 + _ZdaPvRKSt9nothrow_t@Base 4.9 + _ZdaPvSt11align_val_t@Base 9 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 9 + _ZdaPvm@Base 9 + _ZdaPvmSt11align_val_t@Base 9 + _ZdlPv@Base 4.9 + _ZdlPvRKSt9nothrow_t@Base 4.9 + _ZdlPvSt11align_val_t@Base 9 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 9 + _ZdlPvm@Base 9 + _ZdlPvmSt11align_val_t@Base 9 + _Znam@Base 4.9 + _ZnamRKSt9nothrow_t@Base 4.9 + _ZnamSt11align_val_t@Base 9 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 9 + _Znwm@Base 4.9 + _ZnwmRKSt9nothrow_t@Base 4.9 + _ZnwmSt11align_val_t@Base 9 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 9 + (arch=!ppc64 !ppc64el)___interceptor___b64_ntop@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___b64_pton@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___bzero@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___close@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___cxa_atexit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___fprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___fxstat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___fxstat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___getdelim@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_fscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_scanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_sscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_strtoimax@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_strtoumax@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_vscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_fprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_fscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_printf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_scanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_snprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_sprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_sscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vfprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vsnprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vsprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___libc_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___lxstat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___lxstat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___overflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___res_iclose@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___snprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___sprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___strndup@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___strxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___tls_get_addr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___uflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___underflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___vsnprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___vsprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___wcsxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___woverflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___wuflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___wunderflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___xpg_strerror_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___xstat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___xstat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor__exit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor__obstack_begin@Base 15 + (arch=!ppc64 !ppc64el)___interceptor__obstack_begin_1@Base 15 + (arch=!ppc64 !ppc64el)___interceptor__obstack_newchunk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_abort@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_accept4@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_accept@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_aligned_alloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_argp_parse@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_asctime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_asctime_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_asprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_atexit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_backtrace@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_backtrace_symbols@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_bcmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_bind@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_bsearch@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_bzero@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_calloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_canonicalize_file_name@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_capget@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_capset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_cfree@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_clock_getcpuclockid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_clock_getres@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_clock_gettime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_clock_settime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_clone@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_close@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_closedir@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_confstr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_connect@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_creat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_creat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ctermid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ctime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ctime_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dl_iterate_phdr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dlclose@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dlopen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dn_comp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dn_expand@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_drand48_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dup2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dup3@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dup@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_endgrent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_endpwent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_create1@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_create@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_ctl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_pwait2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_pwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_wait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_aton@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_aton_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_hostton@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_line@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_ntoa@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_ntoa_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_ntohost@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_eventfd@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_eventfd_read@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_eventfd_write@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fclose@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fdopen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fflush@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgetgrent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgetgrent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgetpwent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgetpwent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgets@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgetxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_flistxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fmemopen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fopen64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fopen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fopencookie@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fork@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fputs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fread@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_free@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_freopen64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_freopen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_frexp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_frexpf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_frexpl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstatfs64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstatfs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstatvfs64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstatvfs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ftime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fwrite@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_get_current_dir_name@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getaddrinfo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getcwd@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getdelim@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getentropy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrgid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrgid_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrnam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrnam_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrouplist@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgroups@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyaddr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyaddr_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyname2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyname2_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyname_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getifaddrs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getitimer@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getline@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getloadavg@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getmntent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getmntent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getnameinfo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getnetbyaddr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getnetbyname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getnetent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpass@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpeername@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotobyname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotobyname_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotobynumber@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotobynumber_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotoent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotoent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwnam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwnam_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwuid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwuid_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getrandom@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getresgid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getresuid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getsockname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getsockopt@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gettimeofday@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getusershell@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutline@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutxent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutxid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutxline@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_glob64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_glob@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gmtime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gmtime_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_iconv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_if_indextoname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_if_nametoindex@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_inet_aton@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_inet_ntop@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_inet_pton@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_initgroups@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_inotify_init1@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_inotify_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ioctl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_kill@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgamma@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgamma_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgammaf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgammaf_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgammal@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgammal_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgetxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_listen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_listxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_llistxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_localtime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_localtime_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_longjmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lrand48_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lstat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lstat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_malloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_malloc_usable_size@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mbsnrtowcs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mbsrtowcs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mbstowcs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mcheck@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mcheck_pedantic@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memchr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memcmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memcpy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memmem@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memmove@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memrchr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mincore@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mktime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mlockall@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mmap64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mmap@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_modf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_modff@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_modfl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mprobe@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mprotect@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_msgrcv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_msgsnd@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_munlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_munlockall@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_munmap@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_name_to_handle_at@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_nanosleep@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_on_exit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_open64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_open@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_open_by_handle_at@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_open_memstream@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_open_wmemstream@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_opendir@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pause@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pclose@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pipe2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pipe@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_poll@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_popen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_posix_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_posix_spawn@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_posix_spawnp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ppoll@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_prctl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pread64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pread@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_preadv2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_preadv64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_preadv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_printf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_process_vm_readv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_process_vm_writev@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getaffinity_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getdetachstate@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getguardsize@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getinheritsched@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getschedparam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getschedpolicy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getscope@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getstack@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getstacksize@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_barrier_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_barrier_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_barrier_wait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_barrierattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_broadcast@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_clockwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_signal@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_timedwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_wait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_condattr_getclock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_condattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_create@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_detach@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_exit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_getaffinity_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_getcpuclockid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_getname_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_getschedparam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_join@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_kill@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_clocklock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_lock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_timedlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_trylock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_unlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getprioceiling@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getprotocol@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getrobust@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getrobust_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_gettype@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_once@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_rdlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_timedrdlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_timedwrlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_tryrdlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_trywrlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_unlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_wrlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlockattr_getkind_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlockattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_setcancelstate@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_setcanceltype@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_setname_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_sigmask@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_lock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_trylock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_unlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_timedjoin_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_tryjoin_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ptrace@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ptsname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ptsname_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_puts@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pututxline@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pvalloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pwrite64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pwrite@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pwritev2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pwritev64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pwritev@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_qsort@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_qsort_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_raise@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_rand_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_random_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_read@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readdir64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readdir64_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readdir@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readdir_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readlink@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readlinkat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_realloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_reallocarray@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_realpath@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_recv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_recvfrom@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_recvmmsg@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_recvmsg@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_regcomp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_regerror@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_regexec@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_regfree@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_remquo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_remquof@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_remquol@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_rmdir@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_scandir64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_scandir@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_scanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sched_getaffinity@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sched_getparam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_getvalue@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_open@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_post@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_timedwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_trywait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_unlink@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_wait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_send@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sendmmsg@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sendmsg@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sendto@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setbuf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setbuffer@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setgrent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setitimer@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setlinebuf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setlocale@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setpwent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setvbuf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_shmctl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigaction@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigaltstack@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigandset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigblock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigemptyset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigfillset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_siglongjmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_signal@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_signalfd@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigorset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigpending@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigprocmask@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigsetmask@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigsuspend@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigtimedwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigwaitinfo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sincos@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sincosf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sincosl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sleep@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_snprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_socket@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_socketpair@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_stat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_stat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_statfs64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_statfs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_statvfs64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_statvfs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strcasecmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strcasestr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strchr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strchrnul@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strcmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strcpy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strcspn@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strdup@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strerror@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strerror_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strlen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strncasecmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strncmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strncpy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strndup@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strnlen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strpbrk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strptime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strrchr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strspn@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strstr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strtoimax@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strtok@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strtoumax@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strxfrm@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sysinfo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tcgetattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tempnam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_textdomain@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_time@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_timerfd_gettime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_timerfd_settime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_times@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tmpfile64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tmpfile@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tmpnam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tmpnam_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tsearch@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ttyname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ttyname_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_uname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_unlink@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_usleep@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_valloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vasprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vfork@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vfprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vsnprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vsprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wait3@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wait4@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_waitid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_waitpid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcrtomb@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcscat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsdup@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcslen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsncat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsnlen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsnrtombs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsrtombs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcstombs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsxfrm@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wctomb@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wordexp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_write@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_writev@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_bool@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_bytes@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_char@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_double@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_enum@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_float@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_hyper@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_int16_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_int32_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_int64_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_int8_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_int@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_long@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_longlong_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_quad_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_short@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_string@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_char@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_hyper@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_int@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_long@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_longlong_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_quad_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_short@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_uint16_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_uint32_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_uint64_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_uint8_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdrmem_create@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdrrec_create@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdrstdio_create@Base 15 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_syminfo_to_full_callback@Base 11 + __asan_backtrace_syminfo_to_full_error_callback@Base 11 + __asan_backtrace_uncompress_lzma@Base 11 + __asan_backtrace_uncompress_zdebug@Base 8 + __asan_backtrace_uncompress_zstd@Base 13 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __b64_ntop@Base 13 + __b64_pton@Base 13 + __bzero@Base 10 + __close@Base 4.9 + __cxa_atexit@Base 4.9 + __cxa_guard_abort@Base 4.9 + __cxa_guard_acquire@Base 4.9 + __cxa_guard_release@Base 4.9 + __fprintf_chk@Base 9 + __fxstat64@Base 4.9 + __fxstat@Base 4.9 + __getdelim@Base 5 + __interceptor___b64_ntop@Base 13 + __interceptor___b64_pton@Base 13 + __interceptor___bzero@Base 10 + __interceptor___close@Base 4.9 + __interceptor___cxa_atexit@Base 4.9 + __interceptor___fprintf_chk@Base 9 + __interceptor___fxstat64@Base 4.9 + __interceptor___fxstat@Base 4.9 + __interceptor___getdelim@Base 5 + __interceptor___isoc23_fscanf@Base 14 + __interceptor___isoc23_scanf@Base 14 + __interceptor___isoc23_sscanf@Base 14 + __interceptor___isoc23_strtoimax@Base 14 + __interceptor___isoc23_strtoumax@Base 14 + __interceptor___isoc23_vfscanf@Base 14 + __interceptor___isoc23_vscanf@Base 14 + __interceptor___isoc23_vsscanf@Base 14 + __interceptor___isoc99_fprintf@Base 5 + __interceptor___isoc99_fscanf@Base 4.9 + __interceptor___isoc99_printf@Base 5 + __interceptor___isoc99_scanf@Base 4.9 + __interceptor___isoc99_snprintf@Base 5 + __interceptor___isoc99_sprintf@Base 5 + __interceptor___isoc99_sscanf@Base 4.9 + __interceptor___isoc99_vfprintf@Base 5 + __interceptor___isoc99_vfscanf@Base 4.9 + __interceptor___isoc99_vprintf@Base 5 + __interceptor___isoc99_vscanf@Base 4.9 + __interceptor___isoc99_vsnprintf@Base 5 + __interceptor___isoc99_vsprintf@Base 5 + __interceptor___isoc99_vsscanf@Base 4.9 + __interceptor___libc_memalign@Base 4.9 + __interceptor___lxstat64@Base 4.9 + __interceptor___lxstat@Base 4.9 + __interceptor___overflow@Base 5 + __interceptor___res_iclose@Base 4.9 + __interceptor___snprintf_chk@Base 9 + __interceptor___sprintf_chk@Base 9 + __interceptor___strndup@Base 8 + __interceptor___strxfrm_l@Base 9 + __interceptor___tls_get_addr@Base 6 + __interceptor___uflow@Base 5 + __interceptor___underflow@Base 5 + __interceptor___vsnprintf_chk@Base 9 + __interceptor___vsprintf_chk@Base 9 + __interceptor___wcsxfrm_l@Base 9 + __interceptor___woverflow@Base 5 + __interceptor___wuflow@Base 5 + __interceptor___wunderflow@Base 5 + __interceptor___xpg_strerror_r@Base 4.9 + __interceptor___xstat64@Base 4.9 + __interceptor___xstat@Base 4.9 + __interceptor__exit@Base 4.9 + __interceptor__obstack_begin@Base 5 + __interceptor__obstack_begin_1@Base 5 + __interceptor__obstack_newchunk@Base 5 + __interceptor_abort@Base 4.9 + __interceptor_accept4@Base 4.9 + __interceptor_accept@Base 4.9 + __interceptor_aligned_alloc@Base 5 + __interceptor_argp_parse@Base 14 + __interceptor_asctime@Base 4.9 + __interceptor_asctime_r@Base 4.9 + __interceptor_asprintf@Base 5 + __interceptor_atexit@Base 4.9 + __interceptor_backtrace@Base 4.9 + __interceptor_backtrace_symbols@Base 4.9 + __interceptor_bcmp@Base 10 + __interceptor_bind@Base 4.9 + __interceptor_bsearch@Base 13 + __interceptor_bzero@Base 10 + __interceptor_calloc@Base 4.9 + __interceptor_canonicalize_file_name@Base 4.9 + __interceptor_capget@Base 5 + __interceptor_capset@Base 5 + __interceptor_cfree@Base 4.9 + __interceptor_clock_getcpuclockid@Base 11 + __interceptor_clock_getres@Base 4.9 + __interceptor_clock_gettime@Base 4.9 + __interceptor_clock_settime@Base 4.9 + __interceptor_clone@Base 13 + __interceptor_close@Base 4.9 + __interceptor_closedir@Base 6 + __interceptor_confstr@Base 4.9 + __interceptor_connect@Base 4.9 + __interceptor_creat64@Base 4.9 + __interceptor_creat@Base 4.9 + __interceptor_ctermid@Base 7 + __interceptor_ctime@Base 4.9 + __interceptor_ctime_r@Base 4.9 + __interceptor_dl_iterate_phdr@Base 6 + __interceptor_dlclose@Base 4.9 + __interceptor_dlopen@Base 4.9 + __interceptor_dn_comp@Base 13 + __interceptor_dn_expand@Base 13 + __interceptor_drand48_r@Base 4.9 + __interceptor_dup2@Base 4.9 + __interceptor_dup3@Base 4.9 + __interceptor_dup@Base 4.9 + __interceptor_endgrent@Base 5 + __interceptor_endpwent@Base 5 + __interceptor_epoll_create1@Base 4.9 + __interceptor_epoll_create@Base 4.9 + __interceptor_epoll_ctl@Base 4.9 + __interceptor_epoll_pwait2@Base 14 + __interceptor_epoll_pwait@Base 7 + __interceptor_epoll_wait@Base 4.9 + __interceptor_ether_aton@Base 4.9 + __interceptor_ether_aton_r@Base 4.9 + __interceptor_ether_hostton@Base 4.9 + __interceptor_ether_line@Base 4.9 + __interceptor_ether_ntoa@Base 4.9 + __interceptor_ether_ntoa_r@Base 4.9 + __interceptor_ether_ntohost@Base 4.9 + __interceptor_eventfd@Base 4.9 + __interceptor_eventfd_read@Base 7 + __interceptor_eventfd_write@Base 7 + __interceptor_fclose@Base 4.9 + __interceptor_fdopen@Base 5 + __interceptor_fflush@Base 4.9 + __interceptor_fgetgrent@Base 10 + __interceptor_fgetgrent_r@Base 10 + __interceptor_fgetpwent@Base 10 + __interceptor_fgetpwent_r@Base 10 + __interceptor_fgets@Base 9 + __interceptor_fgetxattr@Base 5 + __interceptor_flistxattr@Base 5 + __interceptor_fmemopen@Base 5 + __interceptor_fopen64@Base 5 + __interceptor_fopen@Base 4.9 + __interceptor_fopencookie@Base 6 + __interceptor_fork@Base 4.9 + __interceptor_fprintf@Base 5 + __interceptor_fputs@Base 9 + __interceptor_fread@Base 4.9 + __interceptor_free@Base 4.9 + __interceptor_freopen64@Base 5 + __interceptor_freopen@Base 4.9 + __interceptor_frexp@Base 4.9 + __interceptor_frexpf@Base 4.9 + __interceptor_frexpl@Base 4.9 + __interceptor_fscanf@Base 4.9 + __interceptor_fstat64@Base 4.9 + __interceptor_fstat@Base 4.9 + __interceptor_fstatfs64@Base 4.9 + __interceptor_fstatfs@Base 4.9 + __interceptor_fstatvfs64@Base 4.9 + __interceptor_fstatvfs@Base 4.9 + __interceptor_ftime@Base 5 + __interceptor_fwrite@Base 4.9 + __interceptor_get_current_dir_name@Base 4.9 + __interceptor_getaddrinfo@Base 4.9 + __interceptor_getcwd@Base 4.9 + __interceptor_getdelim@Base 4.9 + __interceptor_getentropy@Base 14 + __interceptor_getgrent@Base 10 + __interceptor_getgrent_r@Base 10 + __interceptor_getgrgid@Base 10 + __interceptor_getgrgid_r@Base 10 + __interceptor_getgrnam@Base 10 + __interceptor_getgrnam_r@Base 10 + __interceptor_getgrouplist@Base 13 + __interceptor_getgroups@Base 4.9 + __interceptor_gethostbyaddr@Base 4.9 + __interceptor_gethostbyaddr_r@Base 4.9 + __interceptor_gethostbyname2@Base 4.9 + __interceptor_gethostbyname2_r@Base 4.9 + __interceptor_gethostbyname@Base 4.9 + __interceptor_gethostbyname_r@Base 4.9 + __interceptor_gethostent@Base 4.9 + __interceptor_gethostent_r@Base 4.9 + __interceptor_getifaddrs@Base 5 + __interceptor_getitimer@Base 4.9 + __interceptor_getline@Base 4.9 + __interceptor_getloadavg@Base 8 + __interceptor_getmntent@Base 4.9 + __interceptor_getmntent_r@Base 4.9 + __interceptor_getnameinfo@Base 5 + __interceptor_getnetbyaddr@Base 13 + __interceptor_getnetbyname@Base 13 + __interceptor_getnetent@Base 13 + __interceptor_getpass@Base 5 + __interceptor_getpeername@Base 4.9 + __interceptor_getprotobyname@Base 11 + __interceptor_getprotobyname_r@Base 11 + __interceptor_getprotobynumber@Base 11 + __interceptor_getprotobynumber_r@Base 11 + __interceptor_getprotoent@Base 11 + __interceptor_getprotoent_r@Base 11 + __interceptor_getpwent@Base 10 + __interceptor_getpwent_r@Base 10 + __interceptor_getpwnam@Base 10 + __interceptor_getpwnam_r@Base 10 + __interceptor_getpwuid@Base 10 + __interceptor_getpwuid_r@Base 10 + __interceptor_getrandom@Base 10 + __interceptor_getresgid@Base 5 + __interceptor_getresuid@Base 5 + __interceptor_getsockname@Base 4.9 + __interceptor_getsockopt@Base 4.9 + __interceptor_gettimeofday@Base 4.9 + __interceptor_getusershell@Base 10 + __interceptor_getutent@Base 8 + __interceptor_getutid@Base 8 + __interceptor_getutline@Base 8 + __interceptor_getutxent@Base 8 + __interceptor_getutxid@Base 8 + __interceptor_getutxline@Base 8 + __interceptor_getxattr@Base 5 + __interceptor_glob64@Base 5 + __interceptor_glob@Base 5 + __interceptor_gmtime@Base 4.9 + __interceptor_gmtime_r@Base 4.9 + __interceptor_iconv@Base 4.9 + __interceptor_if_indextoname@Base 5 + __interceptor_if_nametoindex@Base 5 + __interceptor_inet_aton@Base 4.9 + __interceptor_inet_ntop@Base 4.9 + __interceptor_inet_pton@Base 4.9 + __interceptor_initgroups@Base 4.9 + __interceptor_inotify_init1@Base 4.9 + __interceptor_inotify_init@Base 4.9 + __interceptor_ioctl@Base 4.9 + __interceptor_kill@Base 4.9 + __interceptor_lgamma@Base 4.9 + __interceptor_lgamma_r@Base 4.9 + __interceptor_lgammaf@Base 4.9 + __interceptor_lgammaf_r@Base 4.9 + __interceptor_lgammal@Base 4.9 + __interceptor_lgammal_r@Base 4.9 + __interceptor_lgetxattr@Base 5 + __interceptor_listen@Base 4.9 + __interceptor_listxattr@Base 5 + __interceptor_llistxattr@Base 5 + __interceptor_localtime@Base 4.9 + __interceptor_localtime_r@Base 4.9 + __interceptor_longjmp@Base 4.9 + __interceptor_lrand48_r@Base 4.9 + __interceptor_lstat64@Base 13 + __interceptor_lstat@Base 13 + __interceptor_malloc@Base 4.9 + __interceptor_malloc_usable_size@Base 4.9 + __interceptor_mbsnrtowcs@Base 4.9 + __interceptor_mbsrtowcs@Base 4.9 + __interceptor_mbstowcs@Base 4.9 + __interceptor_mcheck@Base 8 + __interceptor_mcheck_pedantic@Base 8 + __interceptor_memalign@Base 4.9 + __interceptor_memchr@Base 4.9 + __interceptor_memcmp@Base 4.9 + __interceptor_memcpy@Base 4.9 + __interceptor_memmem@Base 7 + __interceptor_memmove@Base 4.9 + __interceptor_memrchr@Base 4.9 + __interceptor_memset@Base 4.9 + __interceptor_mincore@Base 6 + __interceptor_mktime@Base 5 + __interceptor_mlock@Base 4.9 + __interceptor_mlockall@Base 4.9 + __interceptor_mmap64@Base 4.9 + __interceptor_mmap@Base 4.9 + __interceptor_modf@Base 4.9 + __interceptor_modff@Base 4.9 + __interceptor_modfl@Base 4.9 + __interceptor_mprobe@Base 8 + __interceptor_mprotect@Base 9 + __interceptor_msgrcv@Base 11 + __interceptor_msgsnd@Base 11 + __interceptor_munlock@Base 4.9 + __interceptor_munlockall@Base 4.9 + __interceptor_munmap@Base 4.9 + __interceptor_name_to_handle_at@Base 9 + __interceptor_nanosleep@Base 4.9 + __interceptor_on_exit@Base 4.9 + __interceptor_open64@Base 4.9 + __interceptor_open@Base 4.9 + __interceptor_open_by_handle_at@Base 9 + __interceptor_open_memstream@Base 5 + __interceptor_open_wmemstream@Base 5 + __interceptor_opendir@Base 4.9 + __interceptor_pause@Base 8 + __interceptor_pclose@Base 10 + __interceptor_pipe2@Base 4.9 + __interceptor_pipe@Base 4.9 + __interceptor_poll@Base 4.9 + __interceptor_popen@Base 10 + __interceptor_posix_memalign@Base 4.9 + __interceptor_posix_spawn@Base 13 + __interceptor_posix_spawnp@Base 13 + __interceptor_ppoll@Base 4.9 + __interceptor_prctl@Base 4.9 + __interceptor_pread64@Base 4.9 + __interceptor_pread@Base 4.9 + __interceptor_preadv2@Base 15 + __interceptor_preadv64@Base 4.9 + __interceptor_preadv@Base 4.9 + __interceptor_printf@Base 5 + __interceptor_process_vm_readv@Base 6 + __interceptor_process_vm_writev@Base 6 + __interceptor_pthread_attr_getaffinity_np@Base 4.9 + __interceptor_pthread_attr_getdetachstate@Base 4.9 + __interceptor_pthread_attr_getguardsize@Base 4.9 + __interceptor_pthread_attr_getinheritsched@Base 4.9 + __interceptor_pthread_attr_getschedparam@Base 4.9 + __interceptor_pthread_attr_getschedpolicy@Base 4.9 + __interceptor_pthread_attr_getscope@Base 4.9 + __interceptor_pthread_attr_getstack@Base 4.9 + __interceptor_pthread_attr_getstacksize@Base 4.9 + __interceptor_pthread_barrier_destroy@Base 4.9 + __interceptor_pthread_barrier_init@Base 4.9 + __interceptor_pthread_barrier_wait@Base 4.9 + __interceptor_pthread_barrierattr_getpshared@Base 5 + __interceptor_pthread_cond_broadcast@Base 4.9 + __interceptor_pthread_cond_clockwait@Base 13 + __interceptor_pthread_cond_destroy@Base 4.9 + __interceptor_pthread_cond_init@Base 4.9 + __interceptor_pthread_cond_signal@Base 4.9 + __interceptor_pthread_cond_timedwait@Base 4.9 + __interceptor_pthread_cond_wait@Base 4.9 + __interceptor_pthread_condattr_getclock@Base 5 + __interceptor_pthread_condattr_getpshared@Base 5 + __interceptor_pthread_create@Base 4.9 + __interceptor_pthread_detach@Base 4.9 + __interceptor_pthread_exit@Base 10 + __interceptor_pthread_getaffinity_np@Base 13 + __interceptor_pthread_getcpuclockid@Base 13 + __interceptor_pthread_getname_np@Base 9 + __interceptor_pthread_getschedparam@Base 4.9 + __interceptor_pthread_join@Base 4.9 + __interceptor_pthread_kill@Base 4.9 + __interceptor_pthread_mutex_clocklock@Base 15 + __interceptor_pthread_mutex_destroy@Base 4.9 + __interceptor_pthread_mutex_init@Base 4.9 + __interceptor_pthread_mutex_lock@Base 4.9 + __interceptor_pthread_mutex_timedlock@Base 4.9 + __interceptor_pthread_mutex_trylock@Base 4.9 + __interceptor_pthread_mutex_unlock@Base 4.9 + __interceptor_pthread_mutexattr_getprioceiling@Base 5 + __interceptor_pthread_mutexattr_getprotocol@Base 5 + __interceptor_pthread_mutexattr_getpshared@Base 5 + __interceptor_pthread_mutexattr_getrobust@Base 5 + __interceptor_pthread_mutexattr_getrobust_np@Base 5 + __interceptor_pthread_mutexattr_gettype@Base 5 + __interceptor_pthread_once@Base 4.9 + __interceptor_pthread_rwlock_destroy@Base 4.9 + __interceptor_pthread_rwlock_init@Base 4.9 + __interceptor_pthread_rwlock_rdlock@Base 4.9 + __interceptor_pthread_rwlock_timedrdlock@Base 4.9 + __interceptor_pthread_rwlock_timedwrlock@Base 4.9 + __interceptor_pthread_rwlock_tryrdlock@Base 4.9 + __interceptor_pthread_rwlock_trywrlock@Base 4.9 + __interceptor_pthread_rwlock_unlock@Base 4.9 + __interceptor_pthread_rwlock_wrlock@Base 4.9 + __interceptor_pthread_rwlockattr_getkind_np@Base 5 + __interceptor_pthread_rwlockattr_getpshared@Base 5 + __interceptor_pthread_setcancelstate@Base 6 + __interceptor_pthread_setcanceltype@Base 6 + __interceptor_pthread_setname_np@Base 4.9 + __interceptor_pthread_sigmask@Base 7 + __interceptor_pthread_spin_destroy@Base 4.9 + __interceptor_pthread_spin_init@Base 4.9 + __interceptor_pthread_spin_lock@Base 4.9 + __interceptor_pthread_spin_trylock@Base 4.9 + __interceptor_pthread_spin_unlock@Base 4.9 + __interceptor_pthread_timedjoin_np@Base 10 + __interceptor_pthread_tryjoin_np@Base 10 + __interceptor_ptrace@Base 4.9 + __interceptor_ptsname@Base 11 + __interceptor_ptsname_r@Base 11 + __interceptor_puts@Base 4.9 + __interceptor_pututxline@Base 10 + __interceptor_pvalloc@Base 4.9 + __interceptor_pwrite64@Base 4.9 + __interceptor_pwrite@Base 4.9 + __interceptor_pwritev2@Base 15 + __interceptor_pwritev64@Base 4.9 + __interceptor_pwritev@Base 4.9 + __interceptor_qsort@Base 11 + __interceptor_qsort_r@Base 11 + __interceptor_raise@Base 4.9 + __interceptor_rand_r@Base 5 + __interceptor_random_r@Base 4.9 + __interceptor_read@Base 4.9 + __interceptor_readdir64@Base 4.9 + __interceptor_readdir64_r@Base 4.9 + __interceptor_readdir@Base 4.9 + __interceptor_readdir_r@Base 4.9 + __interceptor_readlink@Base 9 + __interceptor_readlinkat@Base 9 + __interceptor_readv@Base 4.9 + __interceptor_realloc@Base 4.9 + __interceptor_reallocarray@Base 10 + __interceptor_realpath@Base 4.9 + __interceptor_recv@Base 4.9 + __interceptor_recvfrom@Base 7 + __interceptor_recvmmsg@Base 9 + __interceptor_recvmsg@Base 4.9 + __interceptor_regcomp@Base 10 + __interceptor_regerror@Base 10 + __interceptor_regexec@Base 10 + __interceptor_regfree@Base 10 + __interceptor_remquo@Base 4.9 + __interceptor_remquof@Base 4.9 + __interceptor_remquol@Base 4.9 + __interceptor_rmdir@Base 4.9 + __interceptor_scandir64@Base 4.9 + __interceptor_scandir@Base 4.9 + __interceptor_scanf@Base 4.9 + __interceptor_sched_getaffinity@Base 4.9 + __interceptor_sched_getparam@Base 6 + __interceptor_sem_destroy@Base 4.9 + __interceptor_sem_getvalue@Base 4.9 + __interceptor_sem_init@Base 4.9 + __interceptor_sem_open@Base 13 + __interceptor_sem_post@Base 4.9 + __interceptor_sem_timedwait@Base 4.9 + __interceptor_sem_trywait@Base 4.9 + __interceptor_sem_unlink@Base 13 + __interceptor_sem_wait@Base 4.9 + __interceptor_send@Base 4.9 + __interceptor_sendmmsg@Base 9 + __interceptor_sendmsg@Base 4.9 + __interceptor_sendto@Base 7 + __interceptor_setbuf@Base 10 + __interceptor_setbuffer@Base 10 + __interceptor_setgrent@Base 5 + __interceptor_setitimer@Base 4.9 + __interceptor_setlinebuf@Base 10 + __interceptor_setlocale@Base 4.9 + __interceptor_setpwent@Base 5 + __interceptor_setvbuf@Base 10 + __interceptor_shmctl@Base 4.9 + __interceptor_sigaction@Base 4.9 + __interceptor_sigaltstack@Base 11 + __interceptor_sigandset@Base 11 + __interceptor_sigblock@Base 7 + __interceptor_sigemptyset@Base 4.9 + __interceptor_sigfillset@Base 4.9 + __interceptor_siglongjmp@Base 4.9 + __interceptor_signal@Base 4.9 + __interceptor_signalfd@Base 4.9 + __interceptor_sigorset@Base 11 + __interceptor_sigpending@Base 4.9 + __interceptor_sigprocmask@Base 4.9 + __interceptor_sigsetmask@Base 7 + __interceptor_sigsuspend@Base 4.9 + __interceptor_sigtimedwait@Base 4.9 + __interceptor_sigwait@Base 4.9 + __interceptor_sigwaitinfo@Base 4.9 + __interceptor_sincos@Base 4.9 + __interceptor_sincosf@Base 4.9 + __interceptor_sincosl@Base 4.9 + __interceptor_sleep@Base 4.9 + __interceptor_snprintf@Base 5 + __interceptor_socket@Base 4.9 + __interceptor_socketpair@Base 4.9 + __interceptor_sprintf@Base 5 + __interceptor_sscanf@Base 4.9 + __interceptor_stat64@Base 13 + __interceptor_stat@Base 13 + __interceptor_statfs64@Base 4.9 + __interceptor_statfs@Base 4.9 + __interceptor_statvfs64@Base 4.9 + __interceptor_statvfs@Base 4.9 + __interceptor_strcasecmp@Base 4.9 + __interceptor_strcasestr@Base 6 + __interceptor_strchr@Base 4.9 + __interceptor_strchrnul@Base 4.9 + __interceptor_strcmp@Base 4.9 + __interceptor_strcpy@Base 4.9 + __interceptor_strcspn@Base 6 + __interceptor_strdup@Base 4.9 + __interceptor_strerror@Base 4.9 + __interceptor_strerror_r@Base 4.9 + __interceptor_strlen@Base 4.9 + __interceptor_strncasecmp@Base 4.9 + __interceptor_strncmp@Base 4.9 + __interceptor_strncpy@Base 4.9 + __interceptor_strndup@Base 8 + __interceptor_strnlen@Base 7 + __interceptor_strpbrk@Base 6 + __interceptor_strptime@Base 4.9 + __interceptor_strrchr@Base 4.9 + __interceptor_strspn@Base 6 + __interceptor_strstr@Base 4.9 + __interceptor_strtoimax@Base 4.9 + __interceptor_strtok@Base 8 + __interceptor_strtoumax@Base 4.9 + __interceptor_strxfrm@Base 9 + __interceptor_strxfrm_l@Base 9 + __interceptor_sysinfo@Base 4.9 + __interceptor_tcgetattr@Base 4.9 + __interceptor_tempnam@Base 4.9 + __interceptor_textdomain@Base 4.9 + __interceptor_time@Base 4.9 + __interceptor_timerfd_gettime@Base 5 + __interceptor_timerfd_settime@Base 5 + __interceptor_times@Base 4.9 + __interceptor_tmpfile64@Base 5 + __interceptor_tmpfile@Base 5 + __interceptor_tmpnam@Base 4.9 + __interceptor_tmpnam_r@Base 4.9 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___b64_ntop@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___b64_pton@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___bzero@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___close@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___cxa_atexit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___fprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___fxstat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___fxstat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___getdelim@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_fscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_scanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_sscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_strtoimax@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_strtoumax@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_vscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_fprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_fscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_printf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_scanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_snprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_sprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_sscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vfprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vsnprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vsprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___libc_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___lxstat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___lxstat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___overflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___res_iclose@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___snprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___sprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___strndup@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___strxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___tls_get_addr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___uflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___underflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___vsnprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___vsprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___wcsxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___woverflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___wuflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___wunderflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___xpg_strerror_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___xstat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___xstat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline__exit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline__obstack_begin@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline__obstack_begin_1@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline__obstack_newchunk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_abort@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_accept4@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_accept@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_aligned_alloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_argp_parse@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_asctime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_asctime_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_asprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_atexit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_backtrace@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_backtrace_symbols@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_bcmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_bind@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_bsearch@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_bzero@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_calloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_canonicalize_file_name@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_capget@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_capset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_cfree@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_getcpuclockid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_getres@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_gettime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_settime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_clone@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_close@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_closedir@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_confstr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_connect@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_creat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_creat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ctermid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ctime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ctime_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dl_iterate_phdr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dlclose@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dlopen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dn_comp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dn_expand@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_drand48_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dup2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dup3@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dup@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_endgrent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_endpwent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_create1@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_create@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_ctl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_pwait2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_pwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_wait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_aton@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_aton_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_hostton@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_line@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_ntoa@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_ntoa_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_ntohost@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_eventfd@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_eventfd_read@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_eventfd_write@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fclose@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fdopen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fflush@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetgrent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetgrent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetpwent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetpwent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgets@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_flistxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fmemopen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fopen64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fopen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fopencookie@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fork@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fputs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fread@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_free@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_freopen64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_freopen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_frexp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_frexpf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_frexpl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatfs64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatfs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatvfs64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatvfs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ftime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fwrite@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_get_current_dir_name@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getaddrinfo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getcwd@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getdelim@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getentropy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrgid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrgid_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrnam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrnam_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrouplist@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgroups@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyaddr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyaddr_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname2_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getifaddrs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getitimer@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getline@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getloadavg@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getmntent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getmntent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnameinfo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnetbyaddr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnetbyname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnetent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpass@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpeername@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobyname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobyname_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobynumber@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobynumber_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotoent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotoent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwnam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwnam_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwuid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwuid_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getrandom@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getresgid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getresuid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getsockname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getsockopt@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gettimeofday@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getusershell@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutline@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutxent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutxid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutxline@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_glob64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_glob@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gmtime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gmtime_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_iconv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_if_indextoname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_if_nametoindex@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_inet_aton@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_inet_ntop@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_inet_pton@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_initgroups@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_inotify_init1@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_inotify_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ioctl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_kill@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgamma@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgamma_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammaf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammaf_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammal@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammal_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgetxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_listen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_listxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_llistxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_localtime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_localtime_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_longjmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lrand48_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lstat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lstat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc_usable_size@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mbsnrtowcs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mbsrtowcs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mbstowcs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck_pedantic@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memchr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memcmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memcpy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memmem@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memmove@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memrchr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mincore@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mktime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mlockall@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mmap64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mmap@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_modf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_modff@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_modfl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mprobe@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mprotect@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_msgrcv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_msgsnd@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_munlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_munlockall@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_munmap@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_name_to_handle_at@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_nanosleep@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_on_exit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_open64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_open@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_open_by_handle_at@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_open_memstream@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_open_wmemstream@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_opendir@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pause@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pclose@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pipe2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pipe@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_poll@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_popen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_spawn@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_spawnp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ppoll@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_prctl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pread64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pread@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_preadv2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_preadv64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_preadv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_printf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_process_vm_readv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_process_vm_writev@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getdetachstate@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getguardsize@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getinheritsched@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getschedparam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getscope@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getstack@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getstacksize@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrier_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrier_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrier_wait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_broadcast@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_clockwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_signal@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_timedwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_wait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_condattr_getclock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_condattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_create@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_detach@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_exit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getaffinity_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getcpuclockid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getname_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getschedparam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_join@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_kill@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_clocklock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_lock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_timedlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_trylock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_unlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_gettype@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_once@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_rdlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_timedrdlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_timedwrlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_tryrdlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_trywrlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_unlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_wrlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_setcancelstate@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_setcanceltype@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_setname_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_sigmask@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_lock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_trylock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_unlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_timedjoin_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_tryjoin_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ptrace@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ptsname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ptsname_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_puts@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pututxline@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pvalloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwrite64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwrite@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwritev2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwritev64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwritev@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_qsort@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_qsort_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_raise@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_rand_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_random_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_read@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir64_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readlink@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readlinkat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_realloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_reallocarray@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_realpath@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_recv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_recvfrom@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_recvmmsg@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_recvmsg@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_regcomp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_regerror@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_regexec@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_regfree@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_remquo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_remquof@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_remquol@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_rmdir@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_scandir64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_scandir@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_scanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sched_getaffinity@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sched_getparam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_getvalue@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_open@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_post@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_timedwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_trywait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_unlink@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_wait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_send@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sendmmsg@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sendmsg@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sendto@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setbuf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setbuffer@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setgrent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setitimer@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setlinebuf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setlocale@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setpwent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setvbuf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_shmctl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigaction@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigaltstack@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigandset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigblock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigemptyset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigfillset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_siglongjmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_signal@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_signalfd@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigorset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigpending@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigprocmask@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigsetmask@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigsuspend@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigtimedwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigwaitinfo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sincos@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sincosf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sincosl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sleep@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_snprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_socket@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_socketpair@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_stat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_stat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_statfs64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_statfs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_statvfs64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_statvfs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcasecmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcasestr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strchr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strchrnul@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcpy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcspn@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strdup@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strerror@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strerror_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strlen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strncasecmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strncmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strncpy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strndup@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strnlen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strpbrk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strptime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strrchr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strspn@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strstr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strtoimax@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strtok@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strtoumax@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strxfrm@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sysinfo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tcgetattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tempnam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_textdomain@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_time@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_timerfd_gettime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_timerfd_settime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_times@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpfile64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpfile@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpnam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpnam_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tsearch@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ttyname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ttyname_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_uname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_unlink@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_usleep@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_valloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vasprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vfork@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vfprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vsnprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vsprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wait3@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wait4@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_waitid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_waitpid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcrtomb@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcscat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsdup@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcslen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsncat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsnlen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsnrtombs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsrtombs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcstombs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsxfrm@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wctomb@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wordexp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_write@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_writev@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_bool@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_bytes@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_char@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_double@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_enum@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_float@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_hyper@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int16_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int32_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int64_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int8_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_long@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_longlong_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_quad_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_short@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_string@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_char@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_hyper@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_int@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_long@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_longlong_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_quad_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_short@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint16_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint32_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint64_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint8_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdrmem_create@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdrrec_create@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdrstdio_create@Base 15 + __interceptor_tsearch@Base 5 + __interceptor_ttyname@Base 10 + __interceptor_ttyname_r@Base 7 + __interceptor_uname@Base 11 + __interceptor_unlink@Base 4.9 + __interceptor_usleep@Base 4.9 + __interceptor_valloc@Base 4.9 + __interceptor_vasprintf@Base 5 + __interceptor_vfork@Base 5 + __interceptor_vfprintf@Base 5 + __interceptor_vfscanf@Base 4.9 + __interceptor_vprintf@Base 5 + __interceptor_vscanf@Base 4.9 + __interceptor_vsnprintf@Base 5 + __interceptor_vsprintf@Base 5 + __interceptor_vsscanf@Base 4.9 + __interceptor_wait3@Base 4.9 + __interceptor_wait4@Base 4.9 + __interceptor_wait@Base 4.9 + __interceptor_waitid@Base 4.9 + __interceptor_waitpid@Base 4.9 + __interceptor_wcrtomb@Base 6 + __interceptor_wcscat@Base 8 + __interceptor_wcsdup@Base 10 + __interceptor_wcslen@Base 8 + __interceptor_wcsncat@Base 8 + __interceptor_wcsnlen@Base 8 + __interceptor_wcsnrtombs@Base 4.9 + __interceptor_wcsrtombs@Base 4.9 + __interceptor_wcstombs@Base 4.9 + __interceptor_wcsxfrm@Base 9 + __interceptor_wcsxfrm_l@Base 9 + __interceptor_wctomb@Base 10 + __interceptor_wordexp@Base 4.9 + __interceptor_write@Base 4.9 + __interceptor_writev@Base 4.9 + __interceptor_xdr_bool@Base 5 + __interceptor_xdr_bytes@Base 5 + __interceptor_xdr_char@Base 5 + __interceptor_xdr_destroy@Base 11 + __interceptor_xdr_double@Base 5 + __interceptor_xdr_enum@Base 5 + __interceptor_xdr_float@Base 5 + __interceptor_xdr_hyper@Base 5 + __interceptor_xdr_int16_t@Base 5 + __interceptor_xdr_int32_t@Base 5 + __interceptor_xdr_int64_t@Base 5 + __interceptor_xdr_int8_t@Base 5 + __interceptor_xdr_int@Base 5 + __interceptor_xdr_long@Base 5 + __interceptor_xdr_longlong_t@Base 5 + __interceptor_xdr_quad_t@Base 5 + __interceptor_xdr_short@Base 5 + __interceptor_xdr_string@Base 5 + __interceptor_xdr_u_char@Base 5 + __interceptor_xdr_u_hyper@Base 5 + __interceptor_xdr_u_int@Base 5 + __interceptor_xdr_u_long@Base 5 + __interceptor_xdr_u_longlong_t@Base 5 + __interceptor_xdr_u_quad_t@Base 5 + __interceptor_xdr_u_short@Base 5 + __interceptor_xdr_uint16_t@Base 5 + __interceptor_xdr_uint32_t@Base 5 + __interceptor_xdr_uint64_t@Base 5 + __interceptor_xdr_uint8_t@Base 5 + __interceptor_xdrmem_create@Base 5 + __interceptor_xdrrec_create@Base 11 + __interceptor_xdrstdio_create@Base 5 + __isoc23_fscanf@Base 14 + __isoc23_scanf@Base 14 + __isoc23_sscanf@Base 14 + __isoc23_strtoimax@Base 14 + __isoc23_strtoumax@Base 14 + __isoc23_vfscanf@Base 14 + __isoc23_vscanf@Base 14 + __isoc23_vsscanf@Base 14 + __isoc99_fprintf@Base 5 + __isoc99_fscanf@Base 4.9 + __isoc99_printf@Base 5 + __isoc99_scanf@Base 4.9 + __isoc99_snprintf@Base 5 + __isoc99_sprintf@Base 5 + __isoc99_sscanf@Base 4.9 + __isoc99_vfprintf@Base 5 + __isoc99_vfscanf@Base 4.9 + __isoc99_vprintf@Base 5 + __isoc99_vscanf@Base 4.9 + __isoc99_vsnprintf@Base 5 + __isoc99_vsprintf@Base 5 + __isoc99_vsscanf@Base 4.9 + __libc_memalign@Base 4.9 + __lxstat64@Base 4.9 + __lxstat@Base 4.9 + __overflow@Base 5 + __res_iclose@Base 4.9 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 + __sanitizer_acquire_crash_state@Base 9 + __sanitizer_cov_8bit_counters_init@Base 8 + __sanitizer_cov_bool_flag_init@Base 11 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_load16@Base 13 + __sanitizer_cov_load1@Base 13 + __sanitizer_cov_load2@Base 13 + __sanitizer_cov_load4@Base 13 + __sanitizer_cov_load8@Base 13 + __sanitizer_cov_pcs_init@Base 8 + __sanitizer_cov_reset@Base 8 + __sanitizer_cov_store16@Base 13 + __sanitizer_cov_store1@Base 13 + __sanitizer_cov_store2@Base 13 + __sanitizer_cov_store4@Base 13 + __sanitizer_cov_store8@Base 13 + __sanitizer_cov_trace_cmp1@Base 7 + __sanitizer_cov_trace_cmp2@Base 7 + __sanitizer_cov_trace_cmp4@Base 7 + __sanitizer_cov_trace_cmp8@Base 7 + __sanitizer_cov_trace_cmp@Base 6 + __sanitizer_cov_trace_const_cmp1@Base 8 + __sanitizer_cov_trace_const_cmp2@Base 8 + __sanitizer_cov_trace_const_cmp4@Base 8 + __sanitizer_cov_trace_const_cmp8@Base 8 + __sanitizer_cov_trace_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __sanitizer_cov_trace_gep@Base 7 + __sanitizer_cov_trace_pc_guard@Base 7 + __sanitizer_cov_trace_pc_guard_init@Base 7 + __sanitizer_cov_trace_pc_indir@Base 7 + __sanitizer_cov_trace_switch@Base 6 + __sanitizer_dump_coverage@Base 8 + __sanitizer_dump_trace_pc_guard_coverage@Base 8 + __sanitizer_free_hook@Base 5 + __sanitizer_get_allocated_begin@Base 14 + __sanitizer_get_allocated_size@Base 5 + __sanitizer_get_allocated_size_fast@Base 14 + __sanitizer_get_current_allocated_bytes@Base 5 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 5 + __sanitizer_get_free_bytes@Base 5 + __sanitizer_get_heap_size@Base 5 + __sanitizer_get_module_and_offset_for_pc@Base 8 + __sanitizer_get_ownership@Base 5 + __sanitizer_get_report_path@Base 13 + __sanitizer_get_unmapped_bytes@Base 5 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_internal_memcpy@Base 14 + __sanitizer_internal_memmove@Base 14 + __sanitizer_internal_memset@Base 14 + __sanitizer_malloc_hook@Base 5 + __sanitizer_on_print@Base 10 + __sanitizer_print_stack_trace@Base 5 + __sanitizer_purge_allocator@Base 14 + __sanitizer_report_error_summary@Base 4.9 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_death_callback@Base 6 + __sanitizer_set_report_fd@Base 7 + __sanitizer_set_report_path@Base 4.9 + __sanitizer_symbolize_global@Base 7 + __sanitizer_symbolize_pc@Base 7 + __sanitizer_syscall_post_impl_accept4@Base 4.9 + __sanitizer_syscall_post_impl_accept@Base 4.9 + __sanitizer_syscall_post_impl_access@Base 4.9 + __sanitizer_syscall_post_impl_acct@Base 4.9 + __sanitizer_syscall_post_impl_add_key@Base 4.9 + __sanitizer_syscall_post_impl_adjtimex@Base 4.9 + __sanitizer_syscall_post_impl_alarm@Base 4.9 + __sanitizer_syscall_post_impl_bdflush@Base 4.9 + __sanitizer_syscall_post_impl_bind@Base 4.9 + __sanitizer_syscall_post_impl_brk@Base 4.9 + __sanitizer_syscall_post_impl_capget@Base 4.9 + __sanitizer_syscall_post_impl_capset@Base 4.9 + __sanitizer_syscall_post_impl_chdir@Base 4.9 + __sanitizer_syscall_post_impl_chmod@Base 4.9 + __sanitizer_syscall_post_impl_chown@Base 4.9 + __sanitizer_syscall_post_impl_chroot@Base 4.9 + __sanitizer_syscall_post_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_post_impl_clock_getres@Base 4.9 + __sanitizer_syscall_post_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_clock_settime@Base 4.9 + __sanitizer_syscall_post_impl_close@Base 4.9 + __sanitizer_syscall_post_impl_connect@Base 4.9 + __sanitizer_syscall_post_impl_creat@Base 4.9 + __sanitizer_syscall_post_impl_delete_module@Base 4.9 + __sanitizer_syscall_post_impl_dup2@Base 4.9 + __sanitizer_syscall_post_impl_dup3@Base 4.9 + __sanitizer_syscall_post_impl_dup@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create@Base 4.9 + __sanitizer_syscall_post_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 13 + __sanitizer_syscall_post_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_post_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_post_impl_eventfd2@Base 4.9 + __sanitizer_syscall_post_impl_eventfd@Base 4.9 + __sanitizer_syscall_post_impl_exit@Base 4.9 + __sanitizer_syscall_post_impl_exit_group@Base 4.9 + __sanitizer_syscall_post_impl_faccessat@Base 4.9 + __sanitizer_syscall_post_impl_fchdir@Base 4.9 + __sanitizer_syscall_post_impl_fchmod@Base 4.9 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 4.9 + __sanitizer_syscall_post_impl_fchown@Base 4.9 + __sanitizer_syscall_post_impl_fchownat@Base 4.9 + __sanitizer_syscall_post_impl_fcntl64@Base 4.9 + __sanitizer_syscall_post_impl_fcntl@Base 4.9 + __sanitizer_syscall_post_impl_fdatasync@Base 4.9 + __sanitizer_syscall_post_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_flistxattr@Base 4.9 + __sanitizer_syscall_post_impl_flock@Base 4.9 + __sanitizer_syscall_post_impl_fork@Base 4.9 + __sanitizer_syscall_post_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_fstat64@Base 4.9 + __sanitizer_syscall_post_impl_fstat@Base 4.9 + __sanitizer_syscall_post_impl_fstatat64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs@Base 4.9 + __sanitizer_syscall_post_impl_fsync@Base 4.9 + __sanitizer_syscall_post_impl_ftruncate@Base 4.9 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 4.9 + __sanitizer_syscall_post_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_getcpu@Base 4.9 + __sanitizer_syscall_post_impl_getcwd@Base 4.9 + __sanitizer_syscall_post_impl_getdents64@Base 4.9 + __sanitizer_syscall_post_impl_getdents@Base 4.9 + __sanitizer_syscall_post_impl_getegid@Base 4.9 + __sanitizer_syscall_post_impl_geteuid@Base 4.9 + __sanitizer_syscall_post_impl_getgid@Base 4.9 + __sanitizer_syscall_post_impl_getgroups@Base 4.9 + __sanitizer_syscall_post_impl_gethostname@Base 4.9 + __sanitizer_syscall_post_impl_getitimer@Base 4.9 + __sanitizer_syscall_post_impl_getpeername@Base 4.9 + __sanitizer_syscall_post_impl_getpgid@Base 4.9 + __sanitizer_syscall_post_impl_getpgrp@Base 4.9 + __sanitizer_syscall_post_impl_getpid@Base 4.9 + __sanitizer_syscall_post_impl_getppid@Base 4.9 + __sanitizer_syscall_post_impl_getpriority@Base 4.9 + __sanitizer_syscall_post_impl_getrandom@Base 10 + __sanitizer_syscall_post_impl_getresgid@Base 4.9 + __sanitizer_syscall_post_impl_getresuid@Base 4.9 + __sanitizer_syscall_post_impl_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_getrusage@Base 4.9 + __sanitizer_syscall_post_impl_getsid@Base 4.9 + __sanitizer_syscall_post_impl_getsockname@Base 4.9 + __sanitizer_syscall_post_impl_getsockopt@Base 4.9 + __sanitizer_syscall_post_impl_gettid@Base 4.9 + __sanitizer_syscall_post_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_post_impl_getuid@Base 4.9 + __sanitizer_syscall_post_impl_getxattr@Base 4.9 + __sanitizer_syscall_post_impl_init_module@Base 4.9 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init@Base 4.9 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_post_impl_io_cancel@Base 4.9 + __sanitizer_syscall_post_impl_io_destroy@Base 4.9 + __sanitizer_syscall_post_impl_io_getevents@Base 4.9 + __sanitizer_syscall_post_impl_io_setup@Base 4.9 + __sanitizer_syscall_post_impl_io_submit@Base 4.9 + __sanitizer_syscall_post_impl_ioctl@Base 4.9 + __sanitizer_syscall_post_impl_ioperm@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_post_impl_ipc@Base 4.9 + __sanitizer_syscall_post_impl_kexec_load@Base 4.9 + __sanitizer_syscall_post_impl_keyctl@Base 4.9 + __sanitizer_syscall_post_impl_kill@Base 4.9 + __sanitizer_syscall_post_impl_lchown@Base 4.9 + __sanitizer_syscall_post_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_link@Base 4.9 + __sanitizer_syscall_post_impl_linkat@Base 4.9 + __sanitizer_syscall_post_impl_listen@Base 4.9 + __sanitizer_syscall_post_impl_listxattr@Base 4.9 + __sanitizer_syscall_post_impl_llistxattr@Base 4.9 + __sanitizer_syscall_post_impl_llseek@Base 4.9 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_post_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_lseek@Base 4.9 + __sanitizer_syscall_post_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_lstat64@Base 4.9 + __sanitizer_syscall_post_impl_lstat@Base 4.9 + __sanitizer_syscall_post_impl_madvise@Base 4.9 + __sanitizer_syscall_post_impl_mbind@Base 4.9 + __sanitizer_syscall_post_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_post_impl_mincore@Base 4.9 + __sanitizer_syscall_post_impl_mkdir@Base 4.9 + __sanitizer_syscall_post_impl_mkdirat@Base 4.9 + __sanitizer_syscall_post_impl_mknod@Base 4.9 + __sanitizer_syscall_post_impl_mknodat@Base 4.9 + __sanitizer_syscall_post_impl_mlock@Base 4.9 + __sanitizer_syscall_post_impl_mlockall@Base 4.9 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_post_impl_mount@Base 4.9 + __sanitizer_syscall_post_impl_move_pages@Base 4.9 + __sanitizer_syscall_post_impl_mprotect@Base 4.9 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_post_impl_mq_notify@Base 4.9 + __sanitizer_syscall_post_impl_mq_open@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_post_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_post_impl_mremap@Base 4.9 + __sanitizer_syscall_post_impl_msgctl@Base 4.9 + __sanitizer_syscall_post_impl_msgget@Base 4.9 + __sanitizer_syscall_post_impl_msgrcv@Base 4.9 + __sanitizer_syscall_post_impl_msgsnd@Base 4.9 + __sanitizer_syscall_post_impl_msync@Base 4.9 + __sanitizer_syscall_post_impl_munlock@Base 4.9 + __sanitizer_syscall_post_impl_munlockall@Base 4.9 + __sanitizer_syscall_post_impl_munmap@Base 4.9 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_newfstat@Base 4.9 + __sanitizer_syscall_post_impl_newfstatat@Base 4.9 + __sanitizer_syscall_post_impl_newlstat@Base 4.9 + __sanitizer_syscall_post_impl_newstat@Base 4.9 + __sanitizer_syscall_post_impl_newuname@Base 4.9 + __sanitizer_syscall_post_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_post_impl_nice@Base 4.9 + __sanitizer_syscall_post_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_old_mmap@Base 4.9 + __sanitizer_syscall_post_impl_old_readdir@Base 4.9 + __sanitizer_syscall_post_impl_old_select@Base 4.9 + __sanitizer_syscall_post_impl_oldumount@Base 4.9 + __sanitizer_syscall_post_impl_olduname@Base 4.9 + __sanitizer_syscall_post_impl_open@Base 4.9 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_openat@Base 4.9 + __sanitizer_syscall_post_impl_pause@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_post_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_post_impl_personality@Base 4.9 + __sanitizer_syscall_post_impl_pipe2@Base 4.9 + __sanitizer_syscall_post_impl_pipe@Base 4.9 + __sanitizer_syscall_post_impl_pivot_root@Base 4.9 + __sanitizer_syscall_post_impl_poll@Base 4.9 + __sanitizer_syscall_post_impl_ppoll@Base 4.9 + __sanitizer_syscall_post_impl_pread64@Base 4.9 + __sanitizer_syscall_post_impl_preadv@Base 4.9 + __sanitizer_syscall_post_impl_prlimit64@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_post_impl_pselect6@Base 4.9 + __sanitizer_syscall_post_impl_ptrace@Base 4.9 + __sanitizer_syscall_post_impl_pwrite64@Base 4.9 + __sanitizer_syscall_post_impl_pwritev@Base 4.9 + __sanitizer_syscall_post_impl_quotactl@Base 4.9 + __sanitizer_syscall_post_impl_read@Base 4.9 + __sanitizer_syscall_post_impl_readlink@Base 4.9 + __sanitizer_syscall_post_impl_readlinkat@Base 4.9 + __sanitizer_syscall_post_impl_readv@Base 4.9 + __sanitizer_syscall_post_impl_reboot@Base 4.9 + __sanitizer_syscall_post_impl_recv@Base 4.9 + __sanitizer_syscall_post_impl_recvfrom@Base 4.9 + __sanitizer_syscall_post_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_post_impl_recvmsg@Base 4.9 + __sanitizer_syscall_post_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_post_impl_removexattr@Base 4.9 + __sanitizer_syscall_post_impl_rename@Base 4.9 + __sanitizer_syscall_post_impl_renameat@Base 4.9 + __sanitizer_syscall_post_impl_request_key@Base 4.9 + __sanitizer_syscall_post_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_post_impl_rmdir@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigaction@Base 7 + __sanitizer_syscall_post_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_yield@Base 4.9 + __sanitizer_syscall_post_impl_select@Base 4.9 + __sanitizer_syscall_post_impl_semctl@Base 4.9 + __sanitizer_syscall_post_impl_semget@Base 4.9 + __sanitizer_syscall_post_impl_semop@Base 4.9 + __sanitizer_syscall_post_impl_semtimedop@Base 4.9 + __sanitizer_syscall_post_impl_send@Base 4.9 + __sanitizer_syscall_post_impl_sendfile64@Base 4.9 + __sanitizer_syscall_post_impl_sendfile@Base 4.9 + __sanitizer_syscall_post_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendto@Base 4.9 + __sanitizer_syscall_post_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_post_impl_setdomainname@Base 4.9 + __sanitizer_syscall_post_impl_setfsgid@Base 4.9 + __sanitizer_syscall_post_impl_setfsuid@Base 4.9 + __sanitizer_syscall_post_impl_setgid@Base 4.9 + __sanitizer_syscall_post_impl_setgroups@Base 4.9 + __sanitizer_syscall_post_impl_sethostname@Base 4.9 + __sanitizer_syscall_post_impl_setitimer@Base 4.9 + __sanitizer_syscall_post_impl_setns@Base 4.9 + __sanitizer_syscall_post_impl_setpgid@Base 4.9 + __sanitizer_syscall_post_impl_setpriority@Base 4.9 + __sanitizer_syscall_post_impl_setregid@Base 4.9 + __sanitizer_syscall_post_impl_setresgid@Base 4.9 + __sanitizer_syscall_post_impl_setresuid@Base 4.9 + __sanitizer_syscall_post_impl_setreuid@Base 4.9 + __sanitizer_syscall_post_impl_setrlimit@Base 4.9 + __sanitizer_syscall_post_impl_setsid@Base 4.9 + __sanitizer_syscall_post_impl_setsockopt@Base 4.9 + __sanitizer_syscall_post_impl_settimeofday@Base 4.9 + __sanitizer_syscall_post_impl_setuid@Base 4.9 + __sanitizer_syscall_post_impl_setxattr@Base 4.9 + __sanitizer_syscall_post_impl_sgetmask@Base 4.9 + __sanitizer_syscall_post_impl_shmat@Base 4.9 + __sanitizer_syscall_post_impl_shmctl@Base 4.9 + __sanitizer_syscall_post_impl_shmdt@Base 4.9 + __sanitizer_syscall_post_impl_shmget@Base 4.9 + __sanitizer_syscall_post_impl_shutdown@Base 4.9 + __sanitizer_syscall_post_impl_sigaction@Base 7 + __sanitizer_syscall_post_impl_sigaltstack@Base 11 + __sanitizer_syscall_post_impl_signal@Base 4.9 + __sanitizer_syscall_post_impl_signalfd4@Base 4.9 + __sanitizer_syscall_post_impl_signalfd@Base 4.9 + __sanitizer_syscall_post_impl_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_socket@Base 4.9 + __sanitizer_syscall_post_impl_socketcall@Base 4.9 + __sanitizer_syscall_post_impl_socketpair@Base 4.9 + __sanitizer_syscall_post_impl_splice@Base 4.9 + __sanitizer_syscall_post_impl_spu_create@Base 4.9 + __sanitizer_syscall_post_impl_spu_run@Base 4.9 + __sanitizer_syscall_post_impl_ssetmask@Base 4.9 + __sanitizer_syscall_post_impl_stat64@Base 4.9 + __sanitizer_syscall_post_impl_stat@Base 4.9 + __sanitizer_syscall_post_impl_statfs64@Base 4.9 + __sanitizer_syscall_post_impl_statfs@Base 4.9 + __sanitizer_syscall_post_impl_stime@Base 4.9 + __sanitizer_syscall_post_impl_swapoff@Base 4.9 + __sanitizer_syscall_post_impl_swapon@Base 4.9 + __sanitizer_syscall_post_impl_symlink@Base 4.9 + __sanitizer_syscall_post_impl_symlinkat@Base 4.9 + __sanitizer_syscall_post_impl_sync@Base 4.9 + __sanitizer_syscall_post_impl_syncfs@Base 4.9 + __sanitizer_syscall_post_impl_sysctl@Base 4.9 + __sanitizer_syscall_post_impl_sysfs@Base 4.9 + __sanitizer_syscall_post_impl_sysinfo@Base 4.9 + __sanitizer_syscall_post_impl_syslog@Base 4.9 + __sanitizer_syscall_post_impl_tee@Base 4.9 + __sanitizer_syscall_post_impl_tgkill@Base 4.9 + __sanitizer_syscall_post_impl_time@Base 4.9 + __sanitizer_syscall_post_impl_timer_create@Base 4.9 + __sanitizer_syscall_post_impl_timer_delete@Base 4.9 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_post_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timer_settime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_post_impl_times@Base 4.9 + __sanitizer_syscall_post_impl_tkill@Base 4.9 + __sanitizer_syscall_post_impl_truncate@Base 4.9 + __sanitizer_syscall_post_impl_umask@Base 4.9 + __sanitizer_syscall_post_impl_umount@Base 4.9 + __sanitizer_syscall_post_impl_uname@Base 4.9 + __sanitizer_syscall_post_impl_unlink@Base 4.9 + __sanitizer_syscall_post_impl_unlinkat@Base 4.9 + __sanitizer_syscall_post_impl_unshare@Base 4.9 + __sanitizer_syscall_post_impl_uselib@Base 4.9 + __sanitizer_syscall_post_impl_ustat@Base 4.9 + __sanitizer_syscall_post_impl_utime@Base 4.9 + __sanitizer_syscall_post_impl_utimensat@Base 4.9 + __sanitizer_syscall_post_impl_utimes@Base 4.9 + __sanitizer_syscall_post_impl_vfork@Base 4.9 + __sanitizer_syscall_post_impl_vhangup@Base 4.9 + __sanitizer_syscall_post_impl_vmsplice@Base 4.9 + __sanitizer_syscall_post_impl_wait4@Base 4.9 + __sanitizer_syscall_post_impl_waitid@Base 4.9 + __sanitizer_syscall_post_impl_waitpid@Base 4.9 + __sanitizer_syscall_post_impl_write@Base 4.9 + __sanitizer_syscall_post_impl_writev@Base 4.9 + __sanitizer_syscall_pre_impl_accept4@Base 4.9 + __sanitizer_syscall_pre_impl_accept@Base 4.9 + __sanitizer_syscall_pre_impl_access@Base 4.9 + __sanitizer_syscall_pre_impl_acct@Base 4.9 + __sanitizer_syscall_pre_impl_add_key@Base 4.9 + __sanitizer_syscall_pre_impl_adjtimex@Base 4.9 + __sanitizer_syscall_pre_impl_alarm@Base 4.9 + __sanitizer_syscall_pre_impl_bdflush@Base 4.9 + __sanitizer_syscall_pre_impl_bind@Base 4.9 + __sanitizer_syscall_pre_impl_brk@Base 4.9 + __sanitizer_syscall_pre_impl_capget@Base 4.9 + __sanitizer_syscall_pre_impl_capset@Base 4.9 + __sanitizer_syscall_pre_impl_chdir@Base 4.9 + __sanitizer_syscall_pre_impl_chmod@Base 4.9 + __sanitizer_syscall_pre_impl_chown@Base 4.9 + __sanitizer_syscall_pre_impl_chroot@Base 4.9 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_getres@Base 4.9 + __sanitizer_syscall_pre_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_clock_settime@Base 4.9 + __sanitizer_syscall_pre_impl_close@Base 4.9 + __sanitizer_syscall_pre_impl_connect@Base 4.9 + __sanitizer_syscall_pre_impl_creat@Base 4.9 + __sanitizer_syscall_pre_impl_delete_module@Base 4.9 + __sanitizer_syscall_pre_impl_dup2@Base 4.9 + __sanitizer_syscall_pre_impl_dup3@Base 4.9 + __sanitizer_syscall_pre_impl_dup@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 13 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd2@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd@Base 4.9 + __sanitizer_syscall_pre_impl_exit@Base 4.9 + __sanitizer_syscall_pre_impl_exit_group@Base 4.9 + __sanitizer_syscall_pre_impl_faccessat@Base 4.9 + __sanitizer_syscall_pre_impl_fchdir@Base 4.9 + __sanitizer_syscall_pre_impl_fchmod@Base 4.9 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 4.9 + __sanitizer_syscall_pre_impl_fchown@Base 4.9 + __sanitizer_syscall_pre_impl_fchownat@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl64@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl@Base 4.9 + __sanitizer_syscall_pre_impl_fdatasync@Base 4.9 + __sanitizer_syscall_pre_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flock@Base 4.9 + __sanitizer_syscall_pre_impl_fork@Base 4.9 + __sanitizer_syscall_pre_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_fstat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstat@Base 4.9 + __sanitizer_syscall_pre_impl_fstatat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs@Base 4.9 + __sanitizer_syscall_pre_impl_fsync@Base 4.9 + __sanitizer_syscall_pre_impl_ftruncate@Base 4.9 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 4.9 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_getcpu@Base 4.9 + __sanitizer_syscall_pre_impl_getcwd@Base 4.9 + __sanitizer_syscall_pre_impl_getdents64@Base 4.9 + __sanitizer_syscall_pre_impl_getdents@Base 4.9 + __sanitizer_syscall_pre_impl_getegid@Base 4.9 + __sanitizer_syscall_pre_impl_geteuid@Base 4.9 + __sanitizer_syscall_pre_impl_getgid@Base 4.9 + __sanitizer_syscall_pre_impl_getgroups@Base 4.9 + __sanitizer_syscall_pre_impl_gethostname@Base 4.9 + __sanitizer_syscall_pre_impl_getitimer@Base 4.9 + __sanitizer_syscall_pre_impl_getpeername@Base 4.9 + __sanitizer_syscall_pre_impl_getpgid@Base 4.9 + __sanitizer_syscall_pre_impl_getpgrp@Base 4.9 + __sanitizer_syscall_pre_impl_getpid@Base 4.9 + __sanitizer_syscall_pre_impl_getppid@Base 4.9 + __sanitizer_syscall_pre_impl_getpriority@Base 4.9 + __sanitizer_syscall_pre_impl_getrandom@Base 10 + __sanitizer_syscall_pre_impl_getresgid@Base 4.9 + __sanitizer_syscall_pre_impl_getresuid@Base 4.9 + __sanitizer_syscall_pre_impl_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_getrusage@Base 4.9 + __sanitizer_syscall_pre_impl_getsid@Base 4.9 + __sanitizer_syscall_pre_impl_getsockname@Base 4.9 + __sanitizer_syscall_pre_impl_getsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_gettid@Base 4.9 + __sanitizer_syscall_pre_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_getuid@Base 4.9 + __sanitizer_syscall_pre_impl_getxattr@Base 4.9 + __sanitizer_syscall_pre_impl_init_module@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_pre_impl_io_cancel@Base 4.9 + __sanitizer_syscall_pre_impl_io_destroy@Base 4.9 + __sanitizer_syscall_pre_impl_io_getevents@Base 4.9 + __sanitizer_syscall_pre_impl_io_setup@Base 4.9 + __sanitizer_syscall_pre_impl_io_submit@Base 4.9 + __sanitizer_syscall_pre_impl_ioctl@Base 4.9 + __sanitizer_syscall_pre_impl_ioperm@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_pre_impl_ipc@Base 4.9 + __sanitizer_syscall_pre_impl_kexec_load@Base 4.9 + __sanitizer_syscall_pre_impl_keyctl@Base 4.9 + __sanitizer_syscall_pre_impl_kill@Base 4.9 + __sanitizer_syscall_pre_impl_lchown@Base 4.9 + __sanitizer_syscall_pre_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_link@Base 4.9 + __sanitizer_syscall_pre_impl_linkat@Base 4.9 + __sanitizer_syscall_pre_impl_listen@Base 4.9 + __sanitizer_syscall_pre_impl_listxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llseek@Base 4.9 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_pre_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_lseek@Base 4.9 + __sanitizer_syscall_pre_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_lstat64@Base 4.9 + __sanitizer_syscall_pre_impl_lstat@Base 4.9 + __sanitizer_syscall_pre_impl_madvise@Base 4.9 + __sanitizer_syscall_pre_impl_mbind@Base 4.9 + __sanitizer_syscall_pre_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mincore@Base 4.9 + __sanitizer_syscall_pre_impl_mkdir@Base 4.9 + __sanitizer_syscall_pre_impl_mkdirat@Base 4.9 + __sanitizer_syscall_pre_impl_mknod@Base 4.9 + __sanitizer_syscall_pre_impl_mknodat@Base 4.9 + __sanitizer_syscall_pre_impl_mlock@Base 4.9 + __sanitizer_syscall_pre_impl_mlockall@Base 4.9 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_pre_impl_mount@Base 4.9 + __sanitizer_syscall_pre_impl_move_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mprotect@Base 4.9 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_pre_impl_mq_notify@Base 4.9 + __sanitizer_syscall_pre_impl_mq_open@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_pre_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_mremap@Base 4.9 + __sanitizer_syscall_pre_impl_msgctl@Base 4.9 + __sanitizer_syscall_pre_impl_msgget@Base 4.9 + __sanitizer_syscall_pre_impl_msgrcv@Base 4.9 + __sanitizer_syscall_pre_impl_msgsnd@Base 4.9 + __sanitizer_syscall_pre_impl_msync@Base 4.9 + __sanitizer_syscall_pre_impl_munlock@Base 4.9 + __sanitizer_syscall_pre_impl_munlockall@Base 4.9 + __sanitizer_syscall_pre_impl_munmap@Base 4.9 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_newfstat@Base 4.9 + __sanitizer_syscall_pre_impl_newfstatat@Base 4.9 + __sanitizer_syscall_pre_impl_newlstat@Base 4.9 + __sanitizer_syscall_pre_impl_newstat@Base 4.9 + __sanitizer_syscall_pre_impl_newuname@Base 4.9 + __sanitizer_syscall_pre_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_nice@Base 4.9 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_old_mmap@Base 4.9 + __sanitizer_syscall_pre_impl_old_readdir@Base 4.9 + __sanitizer_syscall_pre_impl_old_select@Base 4.9 + __sanitizer_syscall_pre_impl_oldumount@Base 4.9 + __sanitizer_syscall_pre_impl_olduname@Base 4.9 + __sanitizer_syscall_pre_impl_open@Base 4.9 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_openat@Base 4.9 + __sanitizer_syscall_pre_impl_pause@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_pre_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_pre_impl_personality@Base 4.9 + __sanitizer_syscall_pre_impl_pipe2@Base 4.9 + __sanitizer_syscall_pre_impl_pipe@Base 4.9 + __sanitizer_syscall_pre_impl_pivot_root@Base 4.9 + __sanitizer_syscall_pre_impl_poll@Base 4.9 + __sanitizer_syscall_pre_impl_ppoll@Base 4.9 + __sanitizer_syscall_pre_impl_pread64@Base 4.9 + __sanitizer_syscall_pre_impl_preadv@Base 4.9 + __sanitizer_syscall_pre_impl_prlimit64@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_pre_impl_pselect6@Base 4.9 + __sanitizer_syscall_pre_impl_ptrace@Base 4.9 + __sanitizer_syscall_pre_impl_pwrite64@Base 4.9 + __sanitizer_syscall_pre_impl_pwritev@Base 4.9 + __sanitizer_syscall_pre_impl_quotactl@Base 4.9 + __sanitizer_syscall_pre_impl_read@Base 4.9 + __sanitizer_syscall_pre_impl_readlink@Base 4.9 + __sanitizer_syscall_pre_impl_readlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_readv@Base 4.9 + __sanitizer_syscall_pre_impl_reboot@Base 4.9 + __sanitizer_syscall_pre_impl_recv@Base 4.9 + __sanitizer_syscall_pre_impl_recvfrom@Base 4.9 + __sanitizer_syscall_pre_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_recvmsg@Base 4.9 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_pre_impl_removexattr@Base 4.9 + __sanitizer_syscall_pre_impl_rename@Base 4.9 + __sanitizer_syscall_pre_impl_renameat@Base 4.9 + __sanitizer_syscall_pre_impl_request_key@Base 4.9 + __sanitizer_syscall_pre_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_rmdir@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 7 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_yield@Base 4.9 + __sanitizer_syscall_pre_impl_select@Base 4.9 + __sanitizer_syscall_pre_impl_semctl@Base 4.9 + __sanitizer_syscall_pre_impl_semget@Base 4.9 + __sanitizer_syscall_pre_impl_semop@Base 4.9 + __sanitizer_syscall_pre_impl_semtimedop@Base 4.9 + __sanitizer_syscall_pre_impl_send@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile64@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile@Base 4.9 + __sanitizer_syscall_pre_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendto@Base 4.9 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_pre_impl_setdomainname@Base 4.9 + __sanitizer_syscall_pre_impl_setfsgid@Base 4.9 + __sanitizer_syscall_pre_impl_setfsuid@Base 4.9 + __sanitizer_syscall_pre_impl_setgid@Base 4.9 + __sanitizer_syscall_pre_impl_setgroups@Base 4.9 + __sanitizer_syscall_pre_impl_sethostname@Base 4.9 + __sanitizer_syscall_pre_impl_setitimer@Base 4.9 + __sanitizer_syscall_pre_impl_setns@Base 4.9 + __sanitizer_syscall_pre_impl_setpgid@Base 4.9 + __sanitizer_syscall_pre_impl_setpriority@Base 4.9 + __sanitizer_syscall_pre_impl_setregid@Base 4.9 + __sanitizer_syscall_pre_impl_setresgid@Base 4.9 + __sanitizer_syscall_pre_impl_setresuid@Base 4.9 + __sanitizer_syscall_pre_impl_setreuid@Base 4.9 + __sanitizer_syscall_pre_impl_setrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_setsid@Base 4.9 + __sanitizer_syscall_pre_impl_setsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_settimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_setuid@Base 4.9 + __sanitizer_syscall_pre_impl_setxattr@Base 4.9 + __sanitizer_syscall_pre_impl_sgetmask@Base 4.9 + __sanitizer_syscall_pre_impl_shmat@Base 4.9 + __sanitizer_syscall_pre_impl_shmctl@Base 4.9 + __sanitizer_syscall_pre_impl_shmdt@Base 4.9 + __sanitizer_syscall_pre_impl_shmget@Base 4.9 + __sanitizer_syscall_pre_impl_shutdown@Base 4.9 + __sanitizer_syscall_pre_impl_sigaction@Base 7 + __sanitizer_syscall_pre_impl_sigaltstack@Base 11 + __sanitizer_syscall_pre_impl_signal@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd4@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd@Base 4.9 + __sanitizer_syscall_pre_impl_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_socket@Base 4.9 + __sanitizer_syscall_pre_impl_socketcall@Base 4.9 + __sanitizer_syscall_pre_impl_socketpair@Base 4.9 + __sanitizer_syscall_pre_impl_splice@Base 4.9 + __sanitizer_syscall_pre_impl_spu_create@Base 4.9 + __sanitizer_syscall_pre_impl_spu_run@Base 4.9 + __sanitizer_syscall_pre_impl_ssetmask@Base 4.9 + __sanitizer_syscall_pre_impl_stat64@Base 4.9 + __sanitizer_syscall_pre_impl_stat@Base 4.9 + __sanitizer_syscall_pre_impl_statfs64@Base 4.9 + __sanitizer_syscall_pre_impl_statfs@Base 4.9 + __sanitizer_syscall_pre_impl_stime@Base 4.9 + __sanitizer_syscall_pre_impl_swapoff@Base 4.9 + __sanitizer_syscall_pre_impl_swapon@Base 4.9 + __sanitizer_syscall_pre_impl_symlink@Base 4.9 + __sanitizer_syscall_pre_impl_symlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_sync@Base 4.9 + __sanitizer_syscall_pre_impl_syncfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysctl@Base 4.9 + __sanitizer_syscall_pre_impl_sysfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysinfo@Base 4.9 + __sanitizer_syscall_pre_impl_syslog@Base 4.9 + __sanitizer_syscall_pre_impl_tee@Base 4.9 + __sanitizer_syscall_pre_impl_tgkill@Base 4.9 + __sanitizer_syscall_pre_impl_time@Base 4.9 + __sanitizer_syscall_pre_impl_timer_create@Base 4.9 + __sanitizer_syscall_pre_impl_timer_delete@Base 4.9 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_pre_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timer_settime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_pre_impl_times@Base 4.9 + __sanitizer_syscall_pre_impl_tkill@Base 4.9 + __sanitizer_syscall_pre_impl_truncate@Base 4.9 + __sanitizer_syscall_pre_impl_umask@Base 4.9 + __sanitizer_syscall_pre_impl_umount@Base 4.9 + __sanitizer_syscall_pre_impl_uname@Base 4.9 + __sanitizer_syscall_pre_impl_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_unlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_unshare@Base 4.9 + __sanitizer_syscall_pre_impl_uselib@Base 4.9 + __sanitizer_syscall_pre_impl_ustat@Base 4.9 + __sanitizer_syscall_pre_impl_utime@Base 4.9 + __sanitizer_syscall_pre_impl_utimensat@Base 4.9 + __sanitizer_syscall_pre_impl_utimes@Base 4.9 + __sanitizer_syscall_pre_impl_vfork@Base 4.9 + __sanitizer_syscall_pre_impl_vhangup@Base 4.9 + __sanitizer_syscall_pre_impl_vmsplice@Base 4.9 + __sanitizer_syscall_pre_impl_wait4@Base 4.9 + __sanitizer_syscall_pre_impl_waitid@Base 4.9 + __sanitizer_syscall_pre_impl_waitpid@Base 4.9 + __sanitizer_syscall_pre_impl_write@Base 4.9 + __sanitizer_syscall_pre_impl_writev@Base 4.9 + __sanitizer_unaligned_load16@Base 4.9 + __sanitizer_unaligned_load32@Base 4.9 + __sanitizer_unaligned_load64@Base 4.9 + __sanitizer_unaligned_store16@Base 4.9 + __sanitizer_unaligned_store32@Base 4.9 + __sanitizer_unaligned_store64@Base 4.9 + __sanitizer_weak_hook_memcmp@Base 8 + __sanitizer_weak_hook_memmem@Base 8 + __sanitizer_weak_hook_strcasecmp@Base 8 + __sanitizer_weak_hook_strcasestr@Base 8 + __sanitizer_weak_hook_strcmp@Base 8 + __sanitizer_weak_hook_strncasecmp@Base 8 + __sanitizer_weak_hook_strncmp@Base 8 + __sanitizer_weak_hook_strstr@Base 8 + __sigsetjmp@Base 4.9 + __snprintf_chk@Base 9 + __sprintf_chk@Base 9 + __strndup@Base 8 + __strxfrm_l@Base 9 + __tls_get_addr@Base 6 + __tsan_acquire@Base 4.9 + __tsan_atomic128_compare_exchange_strong@Base 4.9 + __tsan_atomic128_compare_exchange_val@Base 4.9 + __tsan_atomic128_compare_exchange_weak@Base 4.9 + __tsan_atomic128_exchange@Base 4.9 + __tsan_atomic128_fetch_add@Base 4.9 + __tsan_atomic128_fetch_and@Base 4.9 + __tsan_atomic128_fetch_nand@Base 4.9 + __tsan_atomic128_fetch_or@Base 4.9 + __tsan_atomic128_fetch_sub@Base 4.9 + __tsan_atomic128_fetch_xor@Base 4.9 + __tsan_atomic128_load@Base 4.9 + __tsan_atomic128_store@Base 4.9 + __tsan_atomic16_compare_exchange_strong@Base 4.9 + __tsan_atomic16_compare_exchange_val@Base 4.9 + __tsan_atomic16_compare_exchange_weak@Base 4.9 + __tsan_atomic16_exchange@Base 4.9 + __tsan_atomic16_fetch_add@Base 4.9 + __tsan_atomic16_fetch_and@Base 4.9 + __tsan_atomic16_fetch_nand@Base 4.9 + __tsan_atomic16_fetch_or@Base 4.9 + __tsan_atomic16_fetch_sub@Base 4.9 + __tsan_atomic16_fetch_xor@Base 4.9 + __tsan_atomic16_load@Base 4.9 + __tsan_atomic16_store@Base 4.9 + __tsan_atomic32_compare_exchange_strong@Base 4.9 + __tsan_atomic32_compare_exchange_val@Base 4.9 + __tsan_atomic32_compare_exchange_weak@Base 4.9 + __tsan_atomic32_exchange@Base 4.9 + __tsan_atomic32_fetch_add@Base 4.9 + __tsan_atomic32_fetch_and@Base 4.9 + __tsan_atomic32_fetch_nand@Base 4.9 + __tsan_atomic32_fetch_or@Base 4.9 + __tsan_atomic32_fetch_sub@Base 4.9 + __tsan_atomic32_fetch_xor@Base 4.9 + __tsan_atomic32_load@Base 4.9 + __tsan_atomic32_store@Base 4.9 + __tsan_atomic64_compare_exchange_strong@Base 4.9 + __tsan_atomic64_compare_exchange_val@Base 4.9 + __tsan_atomic64_compare_exchange_weak@Base 4.9 + __tsan_atomic64_exchange@Base 4.9 + __tsan_atomic64_fetch_add@Base 4.9 + __tsan_atomic64_fetch_and@Base 4.9 + __tsan_atomic64_fetch_nand@Base 4.9 + __tsan_atomic64_fetch_or@Base 4.9 + __tsan_atomic64_fetch_sub@Base 4.9 + __tsan_atomic64_fetch_xor@Base 4.9 + __tsan_atomic64_load@Base 4.9 + __tsan_atomic64_store@Base 4.9 + __tsan_atomic8_compare_exchange_strong@Base 4.9 + __tsan_atomic8_compare_exchange_val@Base 4.9 + __tsan_atomic8_compare_exchange_weak@Base 4.9 + __tsan_atomic8_exchange@Base 4.9 + __tsan_atomic8_fetch_add@Base 4.9 + __tsan_atomic8_fetch_and@Base 4.9 + __tsan_atomic8_fetch_nand@Base 4.9 + __tsan_atomic8_fetch_or@Base 4.9 + __tsan_atomic8_fetch_sub@Base 4.9 + __tsan_atomic8_fetch_xor@Base 4.9 + __tsan_atomic8_load@Base 4.9 + __tsan_atomic8_store@Base 4.9 + __tsan_atomic_signal_fence@Base 4.9 + __tsan_atomic_thread_fence@Base 4.9 + __tsan_check_no_mutexes_held@Base 14 + __tsan_create_fiber@Base 10 + __tsan_default_options@Base 4.9 + __tsan_default_suppressions@Base 7 + __tsan_destroy_fiber@Base 10 + __tsan_external_assign_tag@Base 8 + __tsan_external_read@Base 8 + __tsan_external_register_header@Base 8 + __tsan_external_register_tag@Base 8 + __tsan_external_write@Base 8 + __tsan_flush_memory@Base 8 + __tsan_func_entry@Base 4.9 + __tsan_func_exit@Base 4.9 + __tsan_get_alloc_stack@Base 8 + __tsan_get_current_fiber@Base 10 + __tsan_get_current_report@Base 7 + __tsan_get_report_data@Base 7 + __tsan_get_report_loc@Base 7 + __tsan_get_report_loc_object_type@Base 8 + __tsan_get_report_mop@Base 7 + __tsan_get_report_mutex@Base 7 + __tsan_get_report_stack@Base 7 + __tsan_get_report_tag@Base 9 + __tsan_get_report_thread@Base 7 + __tsan_get_report_unique_tid@Base 7 + __tsan_ignore_thread_begin@Base 8 + __tsan_ignore_thread_end@Base 8 + __tsan_init@Base 4.9 + __tsan_java_acquire@Base 6 + __tsan_java_alloc@Base 4.9 + __tsan_java_finalize@Base 5 + __tsan_java_find@Base 8 + __tsan_java_fini@Base 4.9 + __tsan_java_free@Base 4.9 + __tsan_java_init@Base 4.9 + __tsan_java_move@Base 4.9 + __tsan_java_mutex_lock@Base 4.9 + __tsan_java_mutex_lock_rec@Base 4.9 + __tsan_java_mutex_read_lock@Base 4.9 + __tsan_java_mutex_read_unlock@Base 4.9 + __tsan_java_mutex_unlock@Base 4.9 + __tsan_java_mutex_unlock_rec@Base 4.9 + __tsan_java_release@Base 6 + __tsan_java_release_store@Base 6 + __tsan_locate_address@Base 8 + __tsan_memcpy@Base 13 + __tsan_memmove@Base 13 + __tsan_memset@Base 13 + __tsan_mutex_create@Base 8 + __tsan_mutex_destroy@Base 8 + __tsan_mutex_post_divert@Base 8 + __tsan_mutex_post_lock@Base 8 + __tsan_mutex_post_signal@Base 8 + __tsan_mutex_post_unlock@Base 8 + __tsan_mutex_pre_divert@Base 8 + __tsan_mutex_pre_lock@Base 8 + __tsan_mutex_pre_signal@Base 8 + __tsan_mutex_pre_unlock@Base 8 + __tsan_on_report@Base 7 + __tsan_on_thread_idle@Base 14 + __tsan_read16@Base 4.9 + __tsan_read16_pc@Base 6 + __tsan_read1@Base 4.9 + __tsan_read1_pc@Base 6 + __tsan_read2@Base 4.9 + __tsan_read2_pc@Base 6 + __tsan_read4@Base 4.9 + __tsan_read4_pc@Base 6 + __tsan_read8@Base 4.9 + __tsan_read8_pc@Base 6 + __tsan_read_range@Base 4.9 + __tsan_read_range_pc@Base 10 + __tsan_release@Base 4.9 + __tsan_set_fiber_name@Base 10 + __tsan_switch_to_fiber@Base 10 + __tsan_symbolize_external@Base 7 + __tsan_symbolize_external_ex@Base 9 + __tsan_testonly_barrier_init@Base 7 + __tsan_testonly_barrier_wait@Base 7 + __tsan_testonly_shadow_stack_current_size@Base 8 + __tsan_unaligned_read16@Base 6 + __tsan_unaligned_read2@Base 4.9 + __tsan_unaligned_read4@Base 4.9 + __tsan_unaligned_read8@Base 4.9 + __tsan_unaligned_write16@Base 6 + __tsan_unaligned_write2@Base 4.9 + __tsan_unaligned_write4@Base 4.9 + __tsan_unaligned_write8@Base 4.9 + __tsan_vptr_read@Base 4.9 + __tsan_vptr_update@Base 4.9 + __tsan_write16@Base 4.9 + __tsan_write16_pc@Base 6 + __tsan_write1@Base 4.9 + __tsan_write1_pc@Base 6 + __tsan_write2@Base 4.9 + __tsan_write2_pc@Base 6 + __tsan_write4@Base 4.9 + __tsan_write4_pc@Base 6 + __tsan_write8@Base 4.9 + __tsan_write8_pc@Base 6 + __tsan_write_range@Base 4.9 + __tsan_write_range_pc@Base 10 + __uflow@Base 5 + __underflow@Base 5 + __vsnprintf_chk@Base 9 + __vsprintf_chk@Base 9 + __wcsxfrm_l@Base 9 + __woverflow@Base 5 + __wuflow@Base 5 + __wunderflow@Base 5 + __xpg_strerror_r@Base 4.9 + __xstat64@Base 4.9 + __xstat@Base 4.9 + _exit@Base 4.9 + _obstack_begin@Base 5 + _obstack_begin_1@Base 5 + _obstack_newchunk@Base 5 + _setjmp@Base 4.9 + abort@Base 4.9 + accept4@Base 4.9 + accept@Base 4.9 + aligned_alloc@Base 5 + argp_parse@Base 14 + asctime@Base 4.9 + asctime_r@Base 4.9 + asprintf@Base 5 + atexit@Base 4.9 + backtrace@Base 4.9 + backtrace_symbols@Base 4.9 + bcmp@Base 10 + bind@Base 4.9 + bsearch@Base 13 + bzero@Base 10 + calloc@Base 4.9 + canonicalize_file_name@Base 4.9 + capget@Base 5 + capset@Base 5 + cfree@Base 4.9 + clock_getcpuclockid@Base 11 + clock_getres@Base 4.9 + clock_gettime@Base 4.9 + clock_settime@Base 4.9 + clone@Base 13 + close@Base 4.9 + closedir@Base 6 + confstr@Base 4.9 + connect@Base 4.9 + creat64@Base 4.9 + creat@Base 4.9 + ctermid@Base 7 + ctime@Base 4.9 + ctime_r@Base 4.9 + dl_iterate_phdr@Base 6 + dlclose@Base 4.9 + dlopen@Base 4.9 + dn_comp@Base 13 + dn_expand@Base 13 + drand48_r@Base 4.9 + dup2@Base 4.9 + dup3@Base 4.9 + dup@Base 4.9 + endgrent@Base 5 + endpwent@Base 5 + epoll_create1@Base 4.9 + epoll_create@Base 4.9 + epoll_ctl@Base 4.9 + epoll_pwait2@Base 14 + epoll_pwait@Base 7 + epoll_wait@Base 4.9 + ether_aton@Base 4.9 + ether_aton_r@Base 4.9 + ether_hostton@Base 4.9 + ether_line@Base 4.9 + ether_ntoa@Base 4.9 + ether_ntoa_r@Base 4.9 + ether_ntohost@Base 4.9 + eventfd@Base 4.9 + eventfd_read@Base 7 + eventfd_write@Base 7 + fclose@Base 4.9 + fdopen@Base 5 + fflush@Base 4.9 + fgetgrent@Base 10 + fgetgrent_r@Base 10 + fgetpwent@Base 10 + fgetpwent_r@Base 10 + fgets@Base 9 + fgetxattr@Base 5 + flistxattr@Base 5 + fmemopen@Base 5 + fopen64@Base 5 + fopen@Base 4.9 + fopencookie@Base 6 + fork@Base 4.9 + fprintf@Base 5 + fputs@Base 9 + fread@Base 4.9 + free@Base 4.9 + freopen64@Base 5 + freopen@Base 4.9 + frexp@Base 4.9 + frexpf@Base 4.9 + frexpl@Base 4.9 + fscanf@Base 4.9 + fstat64@Base 4.9 + fstat@Base 4.9 + fstatfs64@Base 4.9 + fstatfs@Base 4.9 + fstatvfs64@Base 4.9 + fstatvfs@Base 4.9 + ftime@Base 5 + fwrite@Base 4.9 + get_current_dir_name@Base 4.9 + getaddrinfo@Base 4.9 + getcwd@Base 4.9 + getdelim@Base 4.9 + getentropy@Base 14 + getgrent@Base 10 + getgrent_r@Base 10 + getgrgid@Base 10 + getgrgid_r@Base 10 + getgrnam@Base 10 + getgrnam_r@Base 10 + getgrouplist@Base 13 + getgroups@Base 4.9 + gethostbyaddr@Base 4.9 + gethostbyaddr_r@Base 4.9 + gethostbyname2@Base 4.9 + gethostbyname2_r@Base 4.9 + gethostbyname@Base 4.9 + gethostbyname_r@Base 4.9 + gethostent@Base 4.9 + gethostent_r@Base 4.9 + getifaddrs@Base 5 + getitimer@Base 4.9 + getline@Base 4.9 + getloadavg@Base 8 + getmntent@Base 4.9 + getmntent_r@Base 4.9 + getnameinfo@Base 5 + getnetbyaddr@Base 13 + getnetbyname@Base 13 + getnetent@Base 13 + getpass@Base 5 + getpeername@Base 4.9 + getprotobyname@Base 11 + getprotobyname_r@Base 11 + getprotobynumber@Base 11 + getprotobynumber_r@Base 11 + getprotoent@Base 11 + getprotoent_r@Base 11 + getpwent@Base 10 + getpwent_r@Base 10 + getpwnam@Base 10 + getpwnam_r@Base 10 + getpwuid@Base 10 + getpwuid_r@Base 10 + getrandom@Base 10 + getresgid@Base 5 + getresuid@Base 5 + getsockname@Base 4.9 + getsockopt@Base 4.9 + gettimeofday@Base 4.9 + getusershell@Base 10 + getutent@Base 8 + getutid@Base 8 + getutline@Base 8 + getutxent@Base 8 + getutxid@Base 8 + getutxline@Base 8 + getxattr@Base 5 + glob64@Base 5 + glob@Base 5 + gmtime@Base 4.9 + gmtime_r@Base 4.9 + iconv@Base 4.9 + if_indextoname@Base 5 + if_nametoindex@Base 5 + inet_aton@Base 4.9 + inet_ntop@Base 4.9 + inet_pton@Base 4.9 + initgroups@Base 4.9 + inotify_init1@Base 4.9 + inotify_init@Base 4.9 + ioctl@Base 4.9 + kill@Base 4.9 + lgamma@Base 4.9 + lgamma_r@Base 4.9 + lgammaf@Base 4.9 + lgammaf_r@Base 4.9 + lgammal@Base 4.9 + lgammal_r@Base 4.9 + lgetxattr@Base 5 + listen@Base 4.9 + listxattr@Base 5 + llistxattr@Base 5 + localtime@Base 4.9 + localtime_r@Base 4.9 + longjmp@Base 4.9 + lrand48_r@Base 4.9 + lstat64@Base 13 + lstat@Base 13 + malloc@Base 4.9 + malloc_usable_size@Base 4.9 + mbsnrtowcs@Base 4.9 + mbsrtowcs@Base 4.9 + mbstowcs@Base 4.9 + mcheck@Base 8 + mcheck_pedantic@Base 8 + memalign@Base 4.9 + memchr@Base 4.9 + memcmp@Base 4.9 + memcpy@Base 4.9 + memmem@Base 7 + memmove@Base 4.9 + memrchr@Base 4.9 + memset@Base 4.9 + mincore@Base 6 + mktime@Base 5 + mlock@Base 4.9 + mlockall@Base 4.9 + mmap64@Base 4.9 + mmap@Base 4.9 + modf@Base 4.9 + modff@Base 4.9 + modfl@Base 4.9 + mprobe@Base 8 + mprotect@Base 9 + msgrcv@Base 11 + msgsnd@Base 11 + munlock@Base 4.9 + munlockall@Base 4.9 + munmap@Base 4.9 + name_to_handle_at@Base 9 + nanosleep@Base 4.9 + on_exit@Base 4.9 + open64@Base 4.9 + open@Base 4.9 + open_by_handle_at@Base 9 + open_memstream@Base 5 + open_wmemstream@Base 5 + opendir@Base 4.9 + pause@Base 8 + pclose@Base 10 + pipe2@Base 4.9 + pipe@Base 4.9 + poll@Base 4.9 + popen@Base 10 + posix_memalign@Base 4.9 + posix_spawn@Base 13 + posix_spawnp@Base 13 + ppoll@Base 4.9 + prctl@Base 4.9 + pread64@Base 4.9 + pread@Base 4.9 + preadv2@Base 15 + preadv64@Base 4.9 + preadv@Base 4.9 + printf@Base 5 + process_vm_readv@Base 6 + process_vm_writev@Base 6 + pthread_attr_getaffinity_np@Base 4.9 + pthread_attr_getdetachstate@Base 4.9 + pthread_attr_getguardsize@Base 4.9 + pthread_attr_getinheritsched@Base 4.9 + pthread_attr_getschedparam@Base 4.9 + pthread_attr_getschedpolicy@Base 4.9 + pthread_attr_getscope@Base 4.9 + pthread_attr_getstack@Base 4.9 + pthread_attr_getstacksize@Base 4.9 + pthread_barrier_destroy@Base 4.9 + pthread_barrier_init@Base 4.9 + pthread_barrier_wait@Base 4.9 + pthread_barrierattr_getpshared@Base 5 + pthread_cond_broadcast@Base 4.9 + pthread_cond_clockwait@Base 13 + pthread_cond_destroy@Base 4.9 + pthread_cond_init@Base 4.9 + pthread_cond_signal@Base 4.9 + pthread_cond_timedwait@Base 4.9 + pthread_cond_wait@Base 4.9 + pthread_condattr_getclock@Base 5 + pthread_condattr_getpshared@Base 5 + pthread_create@Base 4.9 + pthread_detach@Base 4.9 + pthread_exit@Base 10 + pthread_getaffinity_np@Base 13 + pthread_getcpuclockid@Base 13 + pthread_getname_np@Base 9 + pthread_getschedparam@Base 4.9 + pthread_join@Base 4.9 + pthread_kill@Base 4.9 + pthread_mutex_clocklock@Base 15 + pthread_mutex_destroy@Base 4.9 + pthread_mutex_init@Base 4.9 + pthread_mutex_lock@Base 4.9 + pthread_mutex_timedlock@Base 4.9 + pthread_mutex_trylock@Base 4.9 + pthread_mutex_unlock@Base 4.9 + pthread_mutexattr_getprioceiling@Base 5 + pthread_mutexattr_getprotocol@Base 5 + pthread_mutexattr_getpshared@Base 5 + pthread_mutexattr_getrobust@Base 5 + pthread_mutexattr_getrobust_np@Base 5 + pthread_mutexattr_gettype@Base 5 + pthread_once@Base 4.9 + pthread_rwlock_destroy@Base 4.9 + pthread_rwlock_init@Base 4.9 + pthread_rwlock_rdlock@Base 4.9 + pthread_rwlock_timedrdlock@Base 4.9 + pthread_rwlock_timedwrlock@Base 4.9 + pthread_rwlock_tryrdlock@Base 4.9 + pthread_rwlock_trywrlock@Base 4.9 + pthread_rwlock_unlock@Base 4.9 + pthread_rwlock_wrlock@Base 4.9 + pthread_rwlockattr_getkind_np@Base 5 + pthread_rwlockattr_getpshared@Base 5 + pthread_setcancelstate@Base 6 + pthread_setcanceltype@Base 6 + pthread_setname_np@Base 4.9 + pthread_sigmask@Base 7 + pthread_spin_destroy@Base 4.9 + pthread_spin_init@Base 4.9 + pthread_spin_lock@Base 4.9 + pthread_spin_trylock@Base 4.9 + pthread_spin_unlock@Base 4.9 + pthread_timedjoin_np@Base 10 + pthread_tryjoin_np@Base 10 + ptrace@Base 4.9 + ptsname@Base 11 + ptsname_r@Base 11 + puts@Base 4.9 + pututxline@Base 10 + pvalloc@Base 4.9 + pwrite64@Base 4.9 + pwrite@Base 4.9 + pwritev2@Base 15 + pwritev64@Base 4.9 + pwritev@Base 4.9 + qsort@Base 11 + qsort_r@Base 11 + raise@Base 4.9 + rand_r@Base 5 + random_r@Base 4.9 + read@Base 4.9 + readdir64@Base 4.9 + readdir64_r@Base 4.9 + readdir@Base 4.9 + readdir_r@Base 4.9 + readlink@Base 9 + readlinkat@Base 9 + readv@Base 4.9 + realloc@Base 4.9 + reallocarray@Base 10 + realpath@Base 4.9 + recv@Base 4.9 + recvfrom@Base 7 + recvmmsg@Base 9 + recvmsg@Base 4.9 + regcomp@Base 10 + regerror@Base 10 + regexec@Base 10 + regfree@Base 10 + remquo@Base 4.9 + remquof@Base 4.9 + remquol@Base 4.9 + rmdir@Base 4.9 + scandir64@Base 4.9 + scandir@Base 4.9 + scanf@Base 4.9 + sched_getaffinity@Base 4.9 + sched_getparam@Base 6 + sem_destroy@Base 4.9 + sem_getvalue@Base 4.9 + sem_init@Base 4.9 + sem_open@Base 13 + sem_post@Base 4.9 + sem_timedwait@Base 4.9 + sem_trywait@Base 4.9 + sem_unlink@Base 13 + sem_wait@Base 4.9 + send@Base 4.9 + sendmmsg@Base 9 + sendmsg@Base 4.9 + sendto@Base 7 + setbuf@Base 10 + setbuffer@Base 10 + setgrent@Base 5 + setitimer@Base 4.9 + setjmp@Base 8 + setlinebuf@Base 10 + setlocale@Base 4.9 + setpwent@Base 5 + setvbuf@Base 10 + shmctl@Base 4.9 + sigaction@Base 4.9 + sigaltstack@Base 11 + sigandset@Base 11 + sigblock@Base 7 + sigemptyset@Base 4.9 + sigfillset@Base 4.9 + siglongjmp@Base 4.9 + signal@Base 4.9 + signalfd@Base 4.9 + sigorset@Base 11 + sigpending@Base 4.9 + sigprocmask@Base 4.9 + sigsetjmp@Base 4.9 + sigsetmask@Base 7 + sigsuspend@Base 4.9 + sigtimedwait@Base 4.9 + sigwait@Base 4.9 + sigwaitinfo@Base 4.9 + sincos@Base 4.9 + sincosf@Base 4.9 + sincosl@Base 4.9 + sleep@Base 4.9 + snprintf@Base 5 + socket@Base 4.9 + socketpair@Base 4.9 + sprintf@Base 5 + sscanf@Base 4.9 + stat64@Base 13 + stat@Base 13 + statfs64@Base 4.9 + statfs@Base 4.9 + statvfs64@Base 4.9 + statvfs@Base 4.9 + strcasecmp@Base 4.9 + strcasestr@Base 6 + strchr@Base 4.9 + strchrnul@Base 4.9 + strcmp@Base 4.9 + strcpy@Base 4.9 + strcspn@Base 6 + strdup@Base 4.9 + strerror@Base 4.9 + strerror_r@Base 4.9 + strlen@Base 4.9 + strncasecmp@Base 4.9 + strncmp@Base 4.9 + strncpy@Base 4.9 + strndup@Base 8 + strnlen@Base 7 + strpbrk@Base 6 + strptime@Base 4.9 + strrchr@Base 4.9 + strspn@Base 6 + strstr@Base 4.9 + strtoimax@Base 4.9 + strtok@Base 8 + strtoumax@Base 4.9 + strxfrm@Base 9 + strxfrm_l@Base 9 + sysinfo@Base 4.9 + tcgetattr@Base 4.9 + tempnam@Base 4.9 + textdomain@Base 4.9 + time@Base 4.9 + timerfd_gettime@Base 5 + timerfd_settime@Base 5 + times@Base 4.9 + tmpfile64@Base 5 + tmpfile@Base 5 + tmpnam@Base 4.9 + tmpnam_r@Base 4.9 + tsearch@Base 5 + ttyname@Base 10 + ttyname_r@Base 7 + uname@Base 11 + unlink@Base 4.9 + usleep@Base 4.9 + valloc@Base 4.9 + vasprintf@Base 5 + vfork@Base 5 + vfprintf@Base 5 + vfscanf@Base 4.9 + vprintf@Base 5 + vscanf@Base 4.9 + vsnprintf@Base 5 + vsprintf@Base 5 + vsscanf@Base 4.9 + wait3@Base 4.9 + wait4@Base 4.9 + wait@Base 4.9 + waitid@Base 4.9 + waitpid@Base 4.9 + wcrtomb@Base 6 + wcscat@Base 8 + wcsdup@Base 10 + wcslen@Base 8 + wcsncat@Base 8 + wcsnlen@Base 8 + wcsnrtombs@Base 4.9 + wcsrtombs@Base 4.9 + wcstombs@Base 4.9 + wcsxfrm@Base 9 + wcsxfrm_l@Base 9 + wctomb@Base 10 + wordexp@Base 4.9 + write@Base 4.9 + writev@Base 4.9 + xdr_bool@Base 5 + xdr_bytes@Base 5 + xdr_char@Base 5 + xdr_destroy@Base 11 + xdr_double@Base 5 + xdr_enum@Base 5 + xdr_float@Base 5 + xdr_hyper@Base 5 + xdr_int16_t@Base 5 + xdr_int32_t@Base 5 + xdr_int64_t@Base 5 + xdr_int8_t@Base 5 + xdr_int@Base 5 + xdr_long@Base 5 + xdr_longlong_t@Base 5 + xdr_quad_t@Base 5 + xdr_short@Base 5 + xdr_string@Base 5 + xdr_u_char@Base 5 + xdr_u_hyper@Base 5 + xdr_u_int@Base 5 + xdr_u_long@Base 5 + xdr_u_longlong_t@Base 5 + xdr_u_quad_t@Base 5 + xdr_u_short@Base 5 + xdr_uint16_t@Base 5 + xdr_uint32_t@Base 5 + xdr_uint64_t@Base 5 + xdr_uint8_t@Base 5 + xdrmem_create@Base 5 + xdrrec_create@Base 11 + xdrstdio_create@Base 5 diff --git a/libubsan1.symbols b/libubsan1.symbols new file mode 100644 index 0000000..a14ceb3 --- /dev/null +++ b/libubsan1.symbols @@ -0,0 +1,157 @@ +libubsan.so.1 libubsan1 #MINVER# + _ZN7__ubsan31RegisterUndefinedBehaviorReportEPNS_23UndefinedBehaviorReportE@Base 9 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_syminfo_to_full_callback@Base 11 + __asan_backtrace_syminfo_to_full_error_callback@Base 11 + __asan_backtrace_uncompress_lzma@Base 11 + __asan_backtrace_uncompress_zdebug@Base 8 + __asan_backtrace_uncompress_zstd@Base 13 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 + __sanitizer_acquire_crash_state@Base 9 + __sanitizer_cov_8bit_counters_init@Base 8 + __sanitizer_cov_bool_flag_init@Base 11 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_load16@Base 13 + __sanitizer_cov_load1@Base 13 + __sanitizer_cov_load2@Base 13 + __sanitizer_cov_load4@Base 13 + __sanitizer_cov_load8@Base 13 + __sanitizer_cov_pcs_init@Base 8 + __sanitizer_cov_reset@Base 8 + __sanitizer_cov_store16@Base 13 + __sanitizer_cov_store1@Base 13 + __sanitizer_cov_store2@Base 13 + __sanitizer_cov_store4@Base 13 + __sanitizer_cov_store8@Base 13 + __sanitizer_cov_trace_cmp1@Base 7 + __sanitizer_cov_trace_cmp2@Base 7 + __sanitizer_cov_trace_cmp4@Base 7 + __sanitizer_cov_trace_cmp8@Base 7 + __sanitizer_cov_trace_cmp@Base 6 + __sanitizer_cov_trace_const_cmp1@Base 8 + __sanitizer_cov_trace_const_cmp2@Base 8 + __sanitizer_cov_trace_const_cmp4@Base 8 + __sanitizer_cov_trace_const_cmp8@Base 8 + __sanitizer_cov_trace_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __sanitizer_cov_trace_gep@Base 7 + __sanitizer_cov_trace_pc_guard@Base 7 + __sanitizer_cov_trace_pc_guard_init@Base 7 + __sanitizer_cov_trace_pc_indir@Base 7 + __sanitizer_cov_trace_switch@Base 6 + __sanitizer_dump_coverage@Base 8 + __sanitizer_dump_trace_pc_guard_coverage@Base 8 + __sanitizer_free_hook@Base 13 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_module_and_offset_for_pc@Base 8 + __sanitizer_get_report_path@Base 12 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_internal_memcpy@Base 14 + __sanitizer_internal_memmove@Base 14 + __sanitizer_internal_memset@Base 14 + __sanitizer_malloc_hook@Base 13 + __sanitizer_on_print@Base 10 + __sanitizer_report_error_summary@Base 4.9 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_death_callback@Base 6 + __sanitizer_set_report_fd@Base 7 + __sanitizer_set_report_path@Base 4.9 + __sanitizer_symbolize_global@Base 7 + __sanitizer_symbolize_pc@Base 7 + __ubsan_default_options@Base 8 + __ubsan_get_current_report_data@Base 9 + __ubsan_handle_add_overflow@Base 4.9 + __ubsan_handle_add_overflow_abort@Base 4.9 + __ubsan_handle_alignment_assumption@Base 10 + __ubsan_handle_alignment_assumption_abort@Base 10 + __ubsan_handle_builtin_unreachable@Base 4.9 + __ubsan_handle_cfi_bad_icall@Base 9 + __ubsan_handle_cfi_bad_icall_abort@Base 9 + __ubsan_handle_cfi_bad_type@Base 7 + __ubsan_handle_cfi_check_fail@Base 7 + __ubsan_handle_cfi_check_fail_abort@Base 7 + __ubsan_handle_divrem_overflow@Base 4.9 + __ubsan_handle_divrem_overflow_abort@Base 4.9 + __ubsan_handle_dynamic_type_cache_miss@Base 4.9 + __ubsan_handle_dynamic_type_cache_miss_abort@Base 4.9 + __ubsan_handle_float_cast_overflow@Base 4.9 + __ubsan_handle_float_cast_overflow_abort@Base 4.9 + __ubsan_handle_function_type_mismatch@Base 14 + __ubsan_handle_function_type_mismatch_abort@Base 14 + __ubsan_handle_function_type_mismatch_v1@Base 4.9 + __ubsan_handle_function_type_mismatch_v1_abort@Base 4.9 + __ubsan_handle_implicit_conversion@Base 9 + __ubsan_handle_implicit_conversion_abort@Base 9 + __ubsan_handle_invalid_builtin@Base 8 + __ubsan_handle_invalid_builtin_abort@Base 8 + __ubsan_handle_invalid_objc_cast@Base 11 + __ubsan_handle_invalid_objc_cast_abort@Base 11 + __ubsan_handle_load_invalid_value@Base 4.9 + __ubsan_handle_load_invalid_value_abort@Base 4.9 + __ubsan_handle_missing_return@Base 4.9 + __ubsan_handle_mul_overflow@Base 4.9 + __ubsan_handle_mul_overflow_abort@Base 4.9 + __ubsan_handle_negate_overflow@Base 4.9 + __ubsan_handle_negate_overflow_abort@Base 4.9 + __ubsan_handle_nonnull_arg@Base 5 + __ubsan_handle_nonnull_arg_abort@Base 5 + __ubsan_handle_nonnull_return_v1@Base 8 + __ubsan_handle_nonnull_return_v1_abort@Base 8 + __ubsan_handle_nullability_arg@Base 8 + __ubsan_handle_nullability_arg_abort@Base 8 + __ubsan_handle_nullability_return_v1@Base 8 + __ubsan_handle_nullability_return_v1_abort@Base 8 + __ubsan_handle_out_of_bounds@Base 4.9 + __ubsan_handle_out_of_bounds_abort@Base 4.9 + __ubsan_handle_pointer_overflow@Base 8 + __ubsan_handle_pointer_overflow_abort@Base 8 + __ubsan_handle_shift_out_of_bounds@Base 4.9 + __ubsan_handle_shift_out_of_bounds_abort@Base 4.9 + __ubsan_handle_sub_overflow@Base 4.9 + __ubsan_handle_sub_overflow_abort@Base 4.9 + __ubsan_handle_type_mismatch_v1@Base 8 + __ubsan_handle_type_mismatch_v1_abort@Base 8 + __ubsan_handle_vla_bound_not_positive@Base 4.9 + __ubsan_handle_vla_bound_not_positive_abort@Base 4.9 + __ubsan_on_report@Base 9 + __ubsan_vptr_type_cache@Base 4.9 diff --git a/libvtv0.symbols b/libvtv0.symbols new file mode 100644 index 0000000..908a64e --- /dev/null +++ b/libvtv0.symbols @@ -0,0 +1,68 @@ +libvtv.so.0 libvtv0 #MINVER# + _Z10__vtv_freePv@Base 4.9.0 + (arch=amd64)_Z12__vtv_mallocm@Base 4.9.0 + (arch=i386)_Z12__vtv_mallocj@Base 4.9.0 + _Z14__VLTDumpStatsv@Base 4.9.0 + _Z14__vtv_open_logPKc@Base 4.9.0 + (arch=amd64)_Z16__VLTRegisterSetPPvPKvmmS0_@Base 4.9.0 + (arch=i386)_Z16__VLTRegisterSetPPvPKvjjS0_@Base 4.9.0 + _Z16__vtv_add_to_logiPKcz@Base 4.9.0 + (arch=amd64)_Z17__VLTRegisterPairPPvPKvmS2_@Base 4.9.0 + (arch=i386)_Z17__VLTRegisterPairPPvPKvjS2_@Base 4.9.0 + _Z17__vtv_malloc_initv@Base 4.9.0 + _Z17__vtv_really_failPKc@Base 4.9.0 + _Z17__vtv_verify_failPPvPKv@Base 4.9.0 + _Z18__vtv_malloc_statsv@Base 4.9.0 + _Z20__vtv_malloc_protectv@Base 4.9.0 + (arch=amd64)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@Base 4.9.0 + (arch=i386)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@Base 4.9.0 + (arch=amd64)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@Base 4.9.0 + (arch=i386)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@Base 4.9.0 + _Z22__vtv_malloc_unprotectv@Base 4.9.0 + _Z23__vtv_malloc_dump_statsv@Base 4.9.0 + _Z23__vtv_verify_fail_debugPPvPKvPKc@Base 4.9.0 + (arch=amd64)_Z23search_cached_file_datam@Base 4.9.0 + (arch=i386)_Z23search_cached_file_dataj@Base 4.9.0 + _Z24__VLTVerifyVtablePointerPPvPKv@Base 4.9.0 + _Z25__vtv_count_mmapped_pagesv@Base 4.9.0 + _Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@Base 4.9.0 + _Z30__vtv_log_verification_failurePKcb@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEm@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEm@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEj@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEj@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 + __VLTChangePermission@Base 4.9.0 + __VLTprotect@Base 4.9.0 + __VLTunprotect@Base 4.9.0 + _vtable_map_vars_end@Base 4.9.0 + _vtable_map_vars_start@Base 4.9.0 + mprotect_cycles@Base 4.9.0 + num_cache_entries@Base 4.9.0 + num_calls_to_mprotect@Base 4.9.0 + num_calls_to_regpair@Base 4.9.0 + num_calls_to_regset@Base 4.9.0 + num_calls_to_verify_vtable@Base 4.9.0 + num_pages_protected@Base 4.9.0 + regpair_cycles@Base 4.9.0 + regset_cycles@Base 4.9.0 + verify_vtable_cycles@Base 4.9.0 diff --git a/libx32asan8.symbols b/libx32asan8.symbols new file mode 100644 index 0000000..ed11d05 --- /dev/null +++ b/libx32asan8.symbols @@ -0,0 +1,3045 @@ +# SymbolsHelper-Confirmed: 15 amd64 i386 +libasan.so.8 libx32asan8 #MINVER# + _Unwind_RaiseException@Base 15 + _ZdaPv@Base 15 + _ZdaPvRKSt9nothrow_t@Base 15 + _ZdaPvSt11align_val_t@Base 15 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdaPvj@Base 15 + _ZdaPvjSt11align_val_t@Base 15 + _ZdlPv@Base 15 + _ZdlPvRKSt9nothrow_t@Base 15 + _ZdlPvSt11align_val_t@Base 15 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdlPvj@Base 15 + _ZdlPvjSt11align_val_t@Base 15 + _Znaj@Base 15 + _ZnajRKSt9nothrow_t@Base 15 + _ZnajSt11align_val_t@Base 15 + _ZnajSt11align_val_tRKSt9nothrow_t@Base 15 + _Znwj@Base 15 + _ZnwjRKSt9nothrow_t@Base 15 + _ZnwjSt11align_val_t@Base 15 + _ZnwjSt11align_val_tRKSt9nothrow_t@Base 15 + ___interceptor__Unwind_RaiseException@Base 15 + ___interceptor___b64_ntop@Base 15 + ___interceptor___b64_pton@Base 15 + ___interceptor___bzero@Base 15 + ___interceptor___cxa_atexit@Base 15 + ___interceptor___cxa_throw@Base 15 + ___interceptor___fprintf_chk@Base 15 + ___interceptor___getdelim@Base 15 + ___interceptor___isoc23_fscanf@Base 15 + ___interceptor___isoc23_scanf@Base 15 + ___interceptor___isoc23_sscanf@Base 15 + ___interceptor___isoc23_strtoimax@Base 15 + ___interceptor___isoc23_strtol@Base 15 + ___interceptor___isoc23_strtoll@Base 15 + ___interceptor___isoc23_strtoumax@Base 15 + ___interceptor___isoc23_vfscanf@Base 15 + ___interceptor___isoc23_vscanf@Base 15 + ___interceptor___isoc23_vsscanf@Base 15 + ___interceptor___isoc99_fprintf@Base 15 + ___interceptor___isoc99_fscanf@Base 15 + ___interceptor___isoc99_printf@Base 15 + ___interceptor___isoc99_scanf@Base 15 + ___interceptor___isoc99_snprintf@Base 15 + ___interceptor___isoc99_sprintf@Base 15 + ___interceptor___isoc99_sscanf@Base 15 + ___interceptor___isoc99_vfprintf@Base 15 + ___interceptor___isoc99_vfscanf@Base 15 + ___interceptor___isoc99_vprintf@Base 15 + ___interceptor___isoc99_vscanf@Base 15 + ___interceptor___isoc99_vsnprintf@Base 15 + ___interceptor___isoc99_vsprintf@Base 15 + ___interceptor___isoc99_vsscanf@Base 15 + ___interceptor___libc_memalign@Base 15 + ___interceptor___longjmp_chk@Base 15 + ___interceptor___lxstat64@Base 15 + ___interceptor___lxstat@Base 15 + ___interceptor___overflow@Base 15 + ___interceptor___snprintf_chk@Base 15 + ___interceptor___sprintf_chk@Base 15 + ___interceptor___strdup@Base 15 + ___interceptor___strndup@Base 15 + ___interceptor___strxfrm_l@Base 15 + ___interceptor___tls_get_addr@Base 15 + ___interceptor___uflow@Base 15 + ___interceptor___underflow@Base 15 + ___interceptor___vsnprintf_chk@Base 15 + ___interceptor___vsprintf_chk@Base 15 + ___interceptor___wcsxfrm_l@Base 15 + ___interceptor___woverflow@Base 15 + ___interceptor___wuflow@Base 15 + ___interceptor___wunderflow@Base 15 + ___interceptor___xpg_strerror_r@Base 15 + ___interceptor___xstat64@Base 15 + ___interceptor___xstat@Base 15 + ___interceptor__exit@Base 15 + ___interceptor__longjmp@Base 15 + ___interceptor__obstack_begin@Base 15 + ___interceptor__obstack_begin_1@Base 15 + ___interceptor__obstack_newchunk@Base 15 + ___interceptor_accept4@Base 15 + ___interceptor_accept@Base 15 + ___interceptor_aligned_alloc@Base 15 + ___interceptor_argp_parse@Base 15 + ___interceptor_asctime@Base 15 + ___interceptor_asctime_r@Base 15 + ___interceptor_asprintf@Base 15 + ___interceptor_atoi@Base 15 + ___interceptor_atol@Base 15 + ___interceptor_atoll@Base 15 + ___interceptor_backtrace@Base 15 + ___interceptor_backtrace_symbols@Base 15 + ___interceptor_bcmp@Base 15 + ___interceptor_bsearch@Base 15 + ___interceptor_bzero@Base 15 + ___interceptor_calloc@Base 15 + ___interceptor_canonicalize_file_name@Base 15 + ___interceptor_capget@Base 15 + ___interceptor_capset@Base 15 + ___interceptor_cfree@Base 15 + ___interceptor_clock_getcpuclockid@Base 15 + ___interceptor_clock_getres@Base 15 + ___interceptor_clock_gettime@Base 15 + ___interceptor_clock_settime@Base 15 + ___interceptor_confstr@Base 15 + ___interceptor_ctermid@Base 15 + ___interceptor_ctime@Base 15 + ___interceptor_ctime_r@Base 15 + ___interceptor_dlclose@Base 15 + ___interceptor_dlopen@Base 15 + ___interceptor_dn_comp@Base 15 + ___interceptor_dn_expand@Base 15 + ___interceptor_drand48_r@Base 15 + ___interceptor_endgrent@Base 15 + ___interceptor_endpwent@Base 15 + ___interceptor_ether_aton@Base 15 + ___interceptor_ether_aton_r@Base 15 + ___interceptor_ether_hostton@Base 15 + ___interceptor_ether_line@Base 15 + ___interceptor_ether_ntoa@Base 15 + ___interceptor_ether_ntoa_r@Base 15 + ___interceptor_ether_ntohost@Base 15 + ___interceptor_eventfd_read@Base 15 + ___interceptor_eventfd_write@Base 15 + ___interceptor_fclose@Base 15 + ___interceptor_fdopen@Base 15 + ___interceptor_fflush@Base 15 + ___interceptor_fgetgrent@Base 15 + ___interceptor_fgetgrent_r@Base 15 + ___interceptor_fgetpwent@Base 15 + ___interceptor_fgetpwent_r@Base 15 + ___interceptor_fgets@Base 15 + ___interceptor_fgetxattr@Base 15 + ___interceptor_flistxattr@Base 15 + ___interceptor_fmemopen@Base 15 + ___interceptor_fopen64@Base 15 + ___interceptor_fopen@Base 15 + ___interceptor_fopencookie@Base 15 + ___interceptor_fprintf@Base 15 + ___interceptor_fputs@Base 15 + ___interceptor_fread@Base 15 + ___interceptor_free@Base 15 + ___interceptor_freopen64@Base 15 + ___interceptor_freopen@Base 15 + ___interceptor_frexp@Base 15 + ___interceptor_frexpf@Base 15 + ___interceptor_frexpl@Base 15 + ___interceptor_fscanf@Base 15 + ___interceptor_fstatfs64@Base 15 + ___interceptor_fstatfs@Base 15 + ___interceptor_fstatvfs64@Base 15 + ___interceptor_fstatvfs@Base 15 + ___interceptor_ftime@Base 15 + ___interceptor_fwrite@Base 15 + ___interceptor_get_current_dir_name@Base 15 + ___interceptor_getaddrinfo@Base 15 + ___interceptor_getcwd@Base 15 + ___interceptor_getdelim@Base 15 + ___interceptor_getentropy@Base 15 + ___interceptor_getgrent@Base 15 + ___interceptor_getgrent_r@Base 15 + ___interceptor_getgrgid@Base 15 + ___interceptor_getgrgid_r@Base 15 + ___interceptor_getgrnam@Base 15 + ___interceptor_getgrnam_r@Base 15 + ___interceptor_getgrouplist@Base 15 + ___interceptor_getgroups@Base 15 + ___interceptor_gethostbyaddr@Base 15 + ___interceptor_gethostbyaddr_r@Base 15 + ___interceptor_gethostbyname2@Base 15 + ___interceptor_gethostbyname2_r@Base 15 + ___interceptor_gethostbyname@Base 15 + ___interceptor_gethostbyname_r@Base 15 + ___interceptor_gethostent@Base 15 + ___interceptor_gethostent_r@Base 15 + ___interceptor_getifaddrs@Base 15 + ___interceptor_getitimer@Base 15 + ___interceptor_getline@Base 15 + ___interceptor_getloadavg@Base 15 + ___interceptor_getmntent@Base 15 + ___interceptor_getmntent_r@Base 15 + ___interceptor_getnameinfo@Base 15 + ___interceptor_getnetbyaddr@Base 15 + ___interceptor_getnetbyname@Base 15 + ___interceptor_getnetent@Base 15 + ___interceptor_getpass@Base 15 + ___interceptor_getpeername@Base 15 + ___interceptor_getprotobyname@Base 15 + ___interceptor_getprotobyname_r@Base 15 + ___interceptor_getprotobynumber@Base 15 + ___interceptor_getprotobynumber_r@Base 15 + ___interceptor_getprotoent@Base 15 + ___interceptor_getprotoent_r@Base 15 + ___interceptor_getpwent@Base 15 + ___interceptor_getpwent_r@Base 15 + ___interceptor_getpwnam@Base 15 + ___interceptor_getpwnam_r@Base 15 + ___interceptor_getpwuid@Base 15 + ___interceptor_getpwuid_r@Base 15 + ___interceptor_getrandom@Base 15 + ___interceptor_getresgid@Base 15 + ___interceptor_getresuid@Base 15 + ___interceptor_getsockname@Base 15 + ___interceptor_getsockopt@Base 15 + ___interceptor_getusershell@Base 15 + ___interceptor_getutent@Base 15 + ___interceptor_getutid@Base 15 + ___interceptor_getutline@Base 15 + ___interceptor_getutxent@Base 15 + ___interceptor_getutxid@Base 15 + ___interceptor_getutxline@Base 15 + ___interceptor_getxattr@Base 15 + ___interceptor_glob64@Base 15 + ___interceptor_glob@Base 15 + ___interceptor_gmtime@Base 15 + ___interceptor_gmtime_r@Base 15 + ___interceptor_iconv@Base 15 + ___interceptor_if_indextoname@Base 15 + ___interceptor_if_nametoindex@Base 15 + ___interceptor_index@Base 15 + ___interceptor_inet_aton@Base 15 + ___interceptor_inet_ntop@Base 15 + ___interceptor_inet_pton@Base 15 + ___interceptor_initgroups@Base 15 + ___interceptor_ioctl@Base 15 + ___interceptor_lgamma@Base 15 + ___interceptor_lgamma_r@Base 15 + ___interceptor_lgammaf@Base 15 + ___interceptor_lgammaf_r@Base 15 + ___interceptor_lgammal@Base 15 + ___interceptor_lgammal_r@Base 15 + ___interceptor_lgetxattr@Base 15 + ___interceptor_listxattr@Base 15 + ___interceptor_llistxattr@Base 15 + ___interceptor_localtime@Base 15 + ___interceptor_localtime_r@Base 15 + ___interceptor_longjmp@Base 15 + ___interceptor_lrand48_r@Base 15 + ___interceptor_lstat64@Base 15 + ___interceptor_lstat@Base 15 + ___interceptor_makecontext@Base 15 + ___interceptor_mallinfo@Base 15 + ___interceptor_malloc@Base 15 + ___interceptor_malloc_stats@Base 15 + ___interceptor_malloc_usable_size@Base 15 + ___interceptor_mallopt@Base 15 + ___interceptor_mbsnrtowcs@Base 15 + ___interceptor_mbsrtowcs@Base 15 + ___interceptor_mbstowcs@Base 15 + ___interceptor_mcheck@Base 15 + ___interceptor_mcheck_pedantic@Base 15 + ___interceptor_memalign@Base 15 + ___interceptor_memchr@Base 15 + ___interceptor_memcmp@Base 15 + ___interceptor_memcpy@Base 15 + ___interceptor_memmem@Base 15 + ___interceptor_memmove@Base 15 + ___interceptor_memrchr@Base 15 + ___interceptor_memset@Base 15 + ___interceptor_mincore@Base 15 + ___interceptor_mktime@Base 15 + ___interceptor_mlock@Base 15 + ___interceptor_mlockall@Base 15 + ___interceptor_mmap64@Base 15 + ___interceptor_mmap@Base 15 + ___interceptor_modf@Base 15 + ___interceptor_modff@Base 15 + ___interceptor_modfl@Base 15 + ___interceptor_mprobe@Base 15 + ___interceptor_mprotect@Base 15 + ___interceptor_msgrcv@Base 15 + ___interceptor_msgsnd@Base 15 + ___interceptor_munlock@Base 15 + ___interceptor_munlockall@Base 15 + ___interceptor_munmap@Base 15 + ___interceptor_name_to_handle_at@Base 15 + ___interceptor_open_by_handle_at@Base 15 + ___interceptor_open_memstream@Base 15 + ___interceptor_open_wmemstream@Base 15 + ___interceptor_opendir@Base 15 + ___interceptor_pclose@Base 15 + ___interceptor_poll@Base 15 + ___interceptor_popen@Base 15 + ___interceptor_posix_memalign@Base 15 + ___interceptor_posix_spawn@Base 15 + ___interceptor_posix_spawnp@Base 15 + ___interceptor_ppoll@Base 15 + ___interceptor_prctl@Base 15 + ___interceptor_pread64@Base 15 + ___interceptor_pread@Base 15 + ___interceptor_preadv2@Base 15 + ___interceptor_preadv64@Base 15 + ___interceptor_preadv@Base 15 + ___interceptor_printf@Base 15 + ___interceptor_process_vm_readv@Base 15 + ___interceptor_process_vm_writev@Base 15 + ___interceptor_pthread_attr_getaffinity_np@Base 15 + ___interceptor_pthread_attr_getdetachstate@Base 15 + ___interceptor_pthread_attr_getguardsize@Base 15 + ___interceptor_pthread_attr_getinheritsched@Base 15 + ___interceptor_pthread_attr_getschedparam@Base 15 + ___interceptor_pthread_attr_getschedpolicy@Base 15 + ___interceptor_pthread_attr_getscope@Base 15 + ___interceptor_pthread_attr_getstack@Base 15 + ___interceptor_pthread_attr_getstacksize@Base 15 + ___interceptor_pthread_barrierattr_getpshared@Base 15 + ___interceptor_pthread_condattr_getclock@Base 15 + ___interceptor_pthread_condattr_getpshared@Base 15 + ___interceptor_pthread_create@Base 15 + ___interceptor_pthread_detach@Base 15 + ___interceptor_pthread_exit@Base 15 + ___interceptor_pthread_getaffinity_np@Base 15 + ___interceptor_pthread_getcpuclockid@Base 15 + ___interceptor_pthread_getname_np@Base 15 + ___interceptor_pthread_getschedparam@Base 15 + ___interceptor_pthread_join@Base 15 + ___interceptor_pthread_mutexattr_getprioceiling@Base 15 + ___interceptor_pthread_mutexattr_getprotocol@Base 15 + ___interceptor_pthread_mutexattr_getpshared@Base 15 + ___interceptor_pthread_mutexattr_getrobust@Base 15 + ___interceptor_pthread_mutexattr_getrobust_np@Base 15 + ___interceptor_pthread_mutexattr_gettype@Base 15 + ___interceptor_pthread_rwlockattr_getkind_np@Base 15 + ___interceptor_pthread_rwlockattr_getpshared@Base 15 + ___interceptor_pthread_setcancelstate@Base 15 + ___interceptor_pthread_setcanceltype@Base 15 + ___interceptor_pthread_setname_np@Base 15 + ___interceptor_pthread_sigmask@Base 15 + ___interceptor_pthread_timedjoin_np@Base 15 + ___interceptor_pthread_tryjoin_np@Base 15 + ___interceptor_ptrace@Base 15 + ___interceptor_ptsname@Base 15 + ___interceptor_ptsname_r@Base 15 + ___interceptor_puts@Base 15 + ___interceptor_pututxline@Base 15 + ___interceptor_pvalloc@Base 15 + ___interceptor_pwrite64@Base 15 + ___interceptor_pwrite@Base 15 + ___interceptor_pwritev2@Base 15 + ___interceptor_pwritev64@Base 15 + ___interceptor_pwritev@Base 15 + ___interceptor_qsort@Base 15 + ___interceptor_qsort_r@Base 15 + ___interceptor_rand_r@Base 15 + ___interceptor_random_r@Base 15 + ___interceptor_read@Base 15 + ___interceptor_readdir64@Base 15 + ___interceptor_readdir64_r@Base 15 + ___interceptor_readdir@Base 15 + ___interceptor_readdir_r@Base 15 + ___interceptor_readlink@Base 15 + ___interceptor_readlinkat@Base 15 + ___interceptor_readv@Base 15 + ___interceptor_realloc@Base 15 + ___interceptor_reallocarray@Base 15 + ___interceptor_realpath@Base 15 + ___interceptor_recv@Base 15 + ___interceptor_recvfrom@Base 15 + ___interceptor_recvmmsg@Base 15 + ___interceptor_recvmsg@Base 15 + ___interceptor_regcomp@Base 15 + ___interceptor_regerror@Base 15 + ___interceptor_regexec@Base 15 + ___interceptor_regfree@Base 15 + ___interceptor_remquo@Base 15 + ___interceptor_remquof@Base 15 + ___interceptor_remquol@Base 15 + ___interceptor_scandir64@Base 15 + ___interceptor_scandir@Base 15 + ___interceptor_scanf@Base 15 + ___interceptor_sched_getaffinity@Base 15 + ___interceptor_sched_getparam@Base 15 + ___interceptor_sem_destroy@Base 15 + ___interceptor_sem_getvalue@Base 15 + ___interceptor_sem_init@Base 15 + ___interceptor_sem_open@Base 15 + ___interceptor_sem_post@Base 15 + ___interceptor_sem_timedwait@Base 15 + ___interceptor_sem_trywait@Base 15 + ___interceptor_sem_unlink@Base 15 + ___interceptor_sem_wait@Base 15 + ___interceptor_send@Base 15 + ___interceptor_sendmmsg@Base 15 + ___interceptor_sendmsg@Base 15 + ___interceptor_sendto@Base 15 + ___interceptor_setbuf@Base 15 + ___interceptor_setbuffer@Base 15 + ___interceptor_setgrent@Base 15 + ___interceptor_setitimer@Base 15 + ___interceptor_setlinebuf@Base 15 + ___interceptor_setlocale@Base 15 + ___interceptor_setpwent@Base 15 + ___interceptor_setvbuf@Base 15 + ___interceptor_sigaction@Base 15 + ___interceptor_sigaltstack@Base 15 + ___interceptor_sigandset@Base 15 + ___interceptor_sigemptyset@Base 15 + ___interceptor_sigfillset@Base 15 + ___interceptor_siglongjmp@Base 15 + ___interceptor_signal@Base 15 + ___interceptor_sigorset@Base 15 + ___interceptor_sigpending@Base 15 + ___interceptor_sigprocmask@Base 15 + ___interceptor_sigtimedwait@Base 15 + ___interceptor_sigwait@Base 15 + ___interceptor_sigwaitinfo@Base 15 + ___interceptor_sincos@Base 15 + ___interceptor_sincosf@Base 15 + ___interceptor_sincosl@Base 15 + ___interceptor_snprintf@Base 15 + ___interceptor_sprintf@Base 15 + ___interceptor_sscanf@Base 15 + ___interceptor_stat64@Base 15 + ___interceptor_stat@Base 15 + ___interceptor_statfs64@Base 15 + ___interceptor_statfs@Base 15 + ___interceptor_statvfs64@Base 15 + ___interceptor_statvfs@Base 15 + ___interceptor_strcasecmp@Base 15 + ___interceptor_strcasestr@Base 15 + ___interceptor_strcat@Base 15 + ___interceptor_strchr@Base 15 + ___interceptor_strchrnul@Base 15 + ___interceptor_strcmp@Base 15 + ___interceptor_strcpy@Base 15 + ___interceptor_strcspn@Base 15 + ___interceptor_strdup@Base 15 + ___interceptor_strerror@Base 15 + ___interceptor_strerror_r@Base 15 + ___interceptor_strlen@Base 15 + ___interceptor_strncasecmp@Base 15 + ___interceptor_strncat@Base 15 + ___interceptor_strncmp@Base 15 + ___interceptor_strncpy@Base 15 + ___interceptor_strndup@Base 15 + ___interceptor_strnlen@Base 15 + ___interceptor_strpbrk@Base 15 + ___interceptor_strptime@Base 15 + ___interceptor_strrchr@Base 15 + ___interceptor_strspn@Base 15 + ___interceptor_strstr@Base 15 + ___interceptor_strtoimax@Base 15 + ___interceptor_strtok@Base 15 + ___interceptor_strtol@Base 15 + ___interceptor_strtoll@Base 15 + ___interceptor_strtoumax@Base 15 + ___interceptor_strxfrm@Base 15 + ___interceptor_strxfrm_l@Base 15 + ___interceptor_swapcontext@Base 15 + ___interceptor_sysinfo@Base 15 + ___interceptor_tcgetattr@Base 15 + ___interceptor_tempnam@Base 15 + ___interceptor_textdomain@Base 15 + ___interceptor_time@Base 15 + ___interceptor_timerfd_gettime@Base 15 + ___interceptor_timerfd_settime@Base 15 + ___interceptor_times@Base 15 + ___interceptor_tmpnam@Base 15 + ___interceptor_tmpnam_r@Base 15 + ___interceptor_tsearch@Base 15 + ___interceptor_ttyname@Base 15 + ___interceptor_ttyname_r@Base 15 + ___interceptor_uname@Base 15 + ___interceptor_valloc@Base 15 + ___interceptor_vasprintf@Base 15 + ___interceptor_vfork@Base 15 + ___interceptor_vfprintf@Base 15 + ___interceptor_vfscanf@Base 15 + ___interceptor_vprintf@Base 15 + ___interceptor_vscanf@Base 15 + ___interceptor_vsnprintf@Base 15 + ___interceptor_vsprintf@Base 15 + ___interceptor_vsscanf@Base 15 + ___interceptor_wait3@Base 15 + ___interceptor_wait4@Base 15 + ___interceptor_wait@Base 15 + ___interceptor_waitid@Base 15 + ___interceptor_waitpid@Base 15 + ___interceptor_wcrtomb@Base 15 + ___interceptor_wcscat@Base 15 + ___interceptor_wcsdup@Base 15 + ___interceptor_wcslen@Base 15 + ___interceptor_wcsncat@Base 15 + ___interceptor_wcsnlen@Base 15 + ___interceptor_wcsnrtombs@Base 15 + ___interceptor_wcsrtombs@Base 15 + ___interceptor_wcstombs@Base 15 + ___interceptor_wcsxfrm@Base 15 + ___interceptor_wcsxfrm_l@Base 15 + ___interceptor_wctomb@Base 15 + ___interceptor_wordexp@Base 15 + ___interceptor_write@Base 15 + ___interceptor_writev@Base 15 + ___interceptor_xdr_bool@Base 15 + ___interceptor_xdr_bytes@Base 15 + ___interceptor_xdr_char@Base 15 + ___interceptor_xdr_destroy@Base 15 + ___interceptor_xdr_double@Base 15 + ___interceptor_xdr_enum@Base 15 + ___interceptor_xdr_float@Base 15 + ___interceptor_xdr_hyper@Base 15 + ___interceptor_xdr_int16_t@Base 15 + ___interceptor_xdr_int32_t@Base 15 + ___interceptor_xdr_int64_t@Base 15 + ___interceptor_xdr_int8_t@Base 15 + ___interceptor_xdr_int@Base 15 + ___interceptor_xdr_long@Base 15 + ___interceptor_xdr_longlong_t@Base 15 + ___interceptor_xdr_quad_t@Base 15 + ___interceptor_xdr_short@Base 15 + ___interceptor_xdr_string@Base 15 + ___interceptor_xdr_u_char@Base 15 + ___interceptor_xdr_u_hyper@Base 15 + ___interceptor_xdr_u_int@Base 15 + ___interceptor_xdr_u_long@Base 15 + ___interceptor_xdr_u_longlong_t@Base 15 + ___interceptor_xdr_u_quad_t@Base 15 + ___interceptor_xdr_u_short@Base 15 + ___interceptor_xdr_uint16_t@Base 15 + ___interceptor_xdr_uint32_t@Base 15 + ___interceptor_xdr_uint64_t@Base 15 + ___interceptor_xdr_uint8_t@Base 15 + ___interceptor_xdrmem_create@Base 15 + ___interceptor_xdrrec_create@Base 15 + ___interceptor_xdrstdio_create@Base 15 + __asan_addr_is_in_fake_stack@Base 15 + __asan_address_is_poisoned@Base 15 + __asan_after_dynamic_init@Base 15 + __asan_alloca_poison@Base 15 + __asan_allocas_unpoison@Base 15 + __asan_backtrace_alloc@Base 15 + __asan_backtrace_close@Base 15 + __asan_backtrace_create_state@Base 15 + __asan_backtrace_dwarf_add@Base 15 + __asan_backtrace_free@Base 15 + __asan_backtrace_get_view@Base 15 + __asan_backtrace_initialize@Base 15 + __asan_backtrace_open@Base 15 + __asan_backtrace_pcinfo@Base 15 + __asan_backtrace_qsort@Base 15 + __asan_backtrace_release_view@Base 15 + __asan_backtrace_syminfo@Base 15 + __asan_backtrace_syminfo_to_full_callback@Base 15 + __asan_backtrace_syminfo_to_full_error_callback@Base 15 + __asan_backtrace_uncompress_lzma@Base 15 + __asan_backtrace_uncompress_zdebug@Base 15 + __asan_backtrace_uncompress_zstd@Base 15 + __asan_backtrace_vector_finish@Base 15 + __asan_backtrace_vector_grow@Base 15 + __asan_backtrace_vector_release@Base 15 + __asan_before_dynamic_init@Base 15 + __asan_cplus_demangle_builtin_types@Base 15 + __asan_cplus_demangle_fill_ctor@Base 15 + __asan_cplus_demangle_fill_dtor@Base 15 + __asan_cplus_demangle_fill_extended_operator@Base 15 + __asan_cplus_demangle_fill_name@Base 15 + __asan_cplus_demangle_init_info@Base 15 + __asan_cplus_demangle_mangled_name@Base 15 + __asan_cplus_demangle_operators@Base 15 + __asan_cplus_demangle_print@Base 15 + __asan_cplus_demangle_print_callback@Base 15 + __asan_cplus_demangle_type@Base 15 + __asan_cplus_demangle_v3@Base 15 + __asan_cplus_demangle_v3_callback@Base 15 + __asan_default_options@Base 15 + __asan_default_suppressions@Base 15 + __asan_describe_address@Base 15 + __asan_exp_load16@Base 15 + __asan_exp_load1@Base 15 + __asan_exp_load2@Base 15 + __asan_exp_load4@Base 15 + __asan_exp_load8@Base 15 + __asan_exp_loadN@Base 15 + __asan_exp_store16@Base 15 + __asan_exp_store1@Base 15 + __asan_exp_store2@Base 15 + __asan_exp_store4@Base 15 + __asan_exp_store8@Base 15 + __asan_exp_storeN@Base 15 + __asan_get_alloc_stack@Base 15 + __asan_get_current_fake_stack@Base 15 + __asan_get_free_stack@Base 15 + __asan_get_report_access_size@Base 15 + __asan_get_report_access_type@Base 15 + __asan_get_report_address@Base 15 + __asan_get_report_bp@Base 15 + __asan_get_report_description@Base 15 + __asan_get_report_pc@Base 15 + __asan_get_report_sp@Base 15 + __asan_get_shadow_mapping@Base 15 + __asan_handle_no_return@Base 15 + __asan_handle_vfork@Base 15 + __asan_init@Base 15 + __asan_internal_memcmp@Base 15 + __asan_internal_memcpy@Base 15 + __asan_internal_memset@Base 15 + __asan_internal_strcmp@Base 15 + __asan_internal_strlen@Base 15 + __asan_internal_strncmp@Base 15 + __asan_internal_strnlen@Base 15 + __asan_is_gnu_v3_mangled_ctor@Base 15 + __asan_is_gnu_v3_mangled_dtor@Base 15 + __asan_java_demangle_v3@Base 15 + __asan_java_demangle_v3_callback@Base 15 + __asan_load16@Base 15 + __asan_load16_noabort@Base 15 + __asan_load1@Base 15 + __asan_load1_noabort@Base 15 + __asan_load2@Base 15 + __asan_load2_noabort@Base 15 + __asan_load4@Base 15 + __asan_load4_noabort@Base 15 + __asan_load8@Base 15 + __asan_load8_noabort@Base 15 + __asan_loadN@Base 15 + __asan_loadN_noabort@Base 15 + __asan_load_cxx_array_cookie@Base 15 + __asan_locate_address@Base 15 + __asan_memcpy@Base 15 + __asan_memmove@Base 15 + __asan_memset@Base 15 + __asan_on_error@Base 15 + __asan_option_detect_stack_use_after_return@Base 15 + __asan_poison_cxx_array_cookie@Base 15 + __asan_poison_intra_object_redzone@Base 15 + __asan_poison_memory_region@Base 15 + __asan_poison_stack_memory@Base 15 + __asan_print_accumulated_stats@Base 15 + __asan_region_is_poisoned@Base 15 + __asan_register_elf_globals@Base 15 + __asan_register_globals@Base 15 + __asan_register_image_globals@Base 15 + __asan_report_error@Base 15 + __asan_report_exp_load16@Base 15 + __asan_report_exp_load1@Base 15 + __asan_report_exp_load2@Base 15 + __asan_report_exp_load4@Base 15 + __asan_report_exp_load8@Base 15 + __asan_report_exp_load_n@Base 15 + __asan_report_exp_store16@Base 15 + __asan_report_exp_store1@Base 15 + __asan_report_exp_store2@Base 15 + __asan_report_exp_store4@Base 15 + __asan_report_exp_store8@Base 15 + __asan_report_exp_store_n@Base 15 + __asan_report_load16@Base 15 + __asan_report_load16_noabort@Base 15 + __asan_report_load1@Base 15 + __asan_report_load1_noabort@Base 15 + __asan_report_load2@Base 15 + __asan_report_load2_noabort@Base 15 + __asan_report_load4@Base 15 + __asan_report_load4_noabort@Base 15 + __asan_report_load8@Base 15 + __asan_report_load8_noabort@Base 15 + __asan_report_load_n@Base 15 + __asan_report_load_n_noabort@Base 15 + __asan_report_present@Base 15 + __asan_report_store16@Base 15 + __asan_report_store16_noabort@Base 15 + __asan_report_store1@Base 15 + __asan_report_store1_noabort@Base 15 + __asan_report_store2@Base 15 + __asan_report_store2_noabort@Base 15 + __asan_report_store4@Base 15 + __asan_report_store4_noabort@Base 15 + __asan_report_store8@Base 15 + __asan_report_store8_noabort@Base 15 + __asan_report_store_n@Base 15 + __asan_report_store_n_noabort@Base 15 + __asan_rt_version@Base 15 + __asan_set_death_callback@Base 15 + __asan_set_error_report_callback@Base 15 + __asan_set_shadow_00@Base 15 + __asan_set_shadow_01@Base 15 + __asan_set_shadow_02@Base 15 + __asan_set_shadow_03@Base 15 + __asan_set_shadow_04@Base 15 + __asan_set_shadow_05@Base 15 + __asan_set_shadow_06@Base 15 + __asan_set_shadow_07@Base 15 + __asan_set_shadow_f1@Base 15 + __asan_set_shadow_f2@Base 15 + __asan_set_shadow_f3@Base 15 + __asan_set_shadow_f5@Base 15 + __asan_set_shadow_f8@Base 15 + __asan_shadow_memory_dynamic_address@Base 15 + __asan_stack_free_0@Base 15 + __asan_stack_free_10@Base 15 + __asan_stack_free_1@Base 15 + __asan_stack_free_2@Base 15 + __asan_stack_free_3@Base 15 + __asan_stack_free_4@Base 15 + __asan_stack_free_5@Base 15 + __asan_stack_free_6@Base 15 + __asan_stack_free_7@Base 15 + __asan_stack_free_8@Base 15 + __asan_stack_free_9@Base 15 + __asan_stack_malloc_0@Base 15 + __asan_stack_malloc_10@Base 15 + __asan_stack_malloc_1@Base 15 + __asan_stack_malloc_2@Base 15 + __asan_stack_malloc_3@Base 15 + __asan_stack_malloc_4@Base 15 + __asan_stack_malloc_5@Base 15 + __asan_stack_malloc_6@Base 15 + __asan_stack_malloc_7@Base 15 + __asan_stack_malloc_8@Base 15 + __asan_stack_malloc_9@Base 15 + __asan_stack_malloc_always_0@Base 15 + __asan_stack_malloc_always_10@Base 15 + __asan_stack_malloc_always_1@Base 15 + __asan_stack_malloc_always_2@Base 15 + __asan_stack_malloc_always_3@Base 15 + __asan_stack_malloc_always_4@Base 15 + __asan_stack_malloc_always_5@Base 15 + __asan_stack_malloc_always_6@Base 15 + __asan_stack_malloc_always_7@Base 15 + __asan_stack_malloc_always_8@Base 15 + __asan_stack_malloc_always_9@Base 15 + __asan_store16@Base 15 + __asan_store16_noabort@Base 15 + __asan_store1@Base 15 + __asan_store1_noabort@Base 15 + __asan_store2@Base 15 + __asan_store2_noabort@Base 15 + __asan_store4@Base 15 + __asan_store4_noabort@Base 15 + __asan_store8@Base 15 + __asan_store8_noabort@Base 15 + __asan_storeN@Base 15 + __asan_storeN_noabort@Base 15 + __asan_test_only_reported_buggy_pointer@Base 15 + __asan_unpoison_intra_object_redzone@Base 15 + __asan_unpoison_memory_region@Base 15 + __asan_unpoison_stack_memory@Base 15 + __asan_unregister_elf_globals@Base 15 + __asan_unregister_globals@Base 15 + __asan_unregister_image_globals@Base 15 + __asan_update_allocation_context@Base 15 + __asan_version_mismatch_check_v8@Base 15 + __b64_ntop@Base 15 + __b64_pton@Base 15 + __bzero@Base 15 + __cxa_atexit@Base 15 + __cxa_throw@Base 15 + __fprintf_chk@Base 15 + __getdelim@Base 15 + __interceptor__Unwind_RaiseException@Base 15 + __interceptor___b64_ntop@Base 15 + __interceptor___b64_pton@Base 15 + __interceptor___bzero@Base 15 + __interceptor___cxa_atexit@Base 15 + __interceptor___cxa_throw@Base 15 + __interceptor___fprintf_chk@Base 15 + __interceptor___getdelim@Base 15 + __interceptor___isoc23_fscanf@Base 15 + __interceptor___isoc23_scanf@Base 15 + __interceptor___isoc23_sscanf@Base 15 + __interceptor___isoc23_strtoimax@Base 15 + __interceptor___isoc23_strtol@Base 15 + __interceptor___isoc23_strtoll@Base 15 + __interceptor___isoc23_strtoumax@Base 15 + __interceptor___isoc23_vfscanf@Base 15 + __interceptor___isoc23_vscanf@Base 15 + __interceptor___isoc23_vsscanf@Base 15 + __interceptor___isoc99_fprintf@Base 15 + __interceptor___isoc99_fscanf@Base 15 + __interceptor___isoc99_printf@Base 15 + __interceptor___isoc99_scanf@Base 15 + __interceptor___isoc99_snprintf@Base 15 + __interceptor___isoc99_sprintf@Base 15 + __interceptor___isoc99_sscanf@Base 15 + __interceptor___isoc99_vfprintf@Base 15 + __interceptor___isoc99_vfscanf@Base 15 + __interceptor___isoc99_vprintf@Base 15 + __interceptor___isoc99_vscanf@Base 15 + __interceptor___isoc99_vsnprintf@Base 15 + __interceptor___isoc99_vsprintf@Base 15 + __interceptor___isoc99_vsscanf@Base 15 + __interceptor___libc_memalign@Base 15 + __interceptor___longjmp_chk@Base 15 + __interceptor___lxstat64@Base 15 + __interceptor___lxstat@Base 15 + __interceptor___overflow@Base 15 + __interceptor___snprintf_chk@Base 15 + __interceptor___sprintf_chk@Base 15 + __interceptor___strdup@Base 15 + __interceptor___strndup@Base 15 + __interceptor___strxfrm_l@Base 15 + __interceptor___tls_get_addr@Base 15 + __interceptor___uflow@Base 15 + __interceptor___underflow@Base 15 + __interceptor___vsnprintf_chk@Base 15 + __interceptor___vsprintf_chk@Base 15 + __interceptor___wcsxfrm_l@Base 15 + __interceptor___woverflow@Base 15 + __interceptor___wuflow@Base 15 + __interceptor___wunderflow@Base 15 + __interceptor___xpg_strerror_r@Base 15 + __interceptor___xstat64@Base 15 + __interceptor___xstat@Base 15 + __interceptor__exit@Base 15 + __interceptor__longjmp@Base 15 + __interceptor__obstack_begin@Base 15 + __interceptor__obstack_begin_1@Base 15 + __interceptor__obstack_newchunk@Base 15 + __interceptor_accept4@Base 15 + __interceptor_accept@Base 15 + __interceptor_aligned_alloc@Base 15 + __interceptor_argp_parse@Base 15 + __interceptor_asctime@Base 15 + __interceptor_asctime_r@Base 15 + __interceptor_asprintf@Base 15 + __interceptor_atoi@Base 15 + __interceptor_atol@Base 15 + __interceptor_atoll@Base 15 + __interceptor_backtrace@Base 15 + __interceptor_backtrace_symbols@Base 15 + __interceptor_bcmp@Base 15 + __interceptor_bsearch@Base 15 + __interceptor_bzero@Base 15 + __interceptor_calloc@Base 15 + __interceptor_canonicalize_file_name@Base 15 + __interceptor_capget@Base 15 + __interceptor_capset@Base 15 + __interceptor_cfree@Base 15 + __interceptor_clock_getcpuclockid@Base 15 + __interceptor_clock_getres@Base 15 + __interceptor_clock_gettime@Base 15 + __interceptor_clock_settime@Base 15 + __interceptor_confstr@Base 15 + __interceptor_ctermid@Base 15 + __interceptor_ctime@Base 15 + __interceptor_ctime_r@Base 15 + __interceptor_dlclose@Base 15 + __interceptor_dlopen@Base 15 + __interceptor_dn_comp@Base 15 + __interceptor_dn_expand@Base 15 + __interceptor_drand48_r@Base 15 + __interceptor_endgrent@Base 15 + __interceptor_endpwent@Base 15 + __interceptor_ether_aton@Base 15 + __interceptor_ether_aton_r@Base 15 + __interceptor_ether_hostton@Base 15 + __interceptor_ether_line@Base 15 + __interceptor_ether_ntoa@Base 15 + __interceptor_ether_ntoa_r@Base 15 + __interceptor_ether_ntohost@Base 15 + __interceptor_eventfd_read@Base 15 + __interceptor_eventfd_write@Base 15 + __interceptor_fclose@Base 15 + __interceptor_fdopen@Base 15 + __interceptor_fflush@Base 15 + __interceptor_fgetgrent@Base 15 + __interceptor_fgetgrent_r@Base 15 + __interceptor_fgetpwent@Base 15 + __interceptor_fgetpwent_r@Base 15 + __interceptor_fgets@Base 15 + __interceptor_fgetxattr@Base 15 + __interceptor_flistxattr@Base 15 + __interceptor_fmemopen@Base 15 + __interceptor_fopen64@Base 15 + __interceptor_fopen@Base 15 + __interceptor_fopencookie@Base 15 + __interceptor_fprintf@Base 15 + __interceptor_fputs@Base 15 + __interceptor_fread@Base 15 + __interceptor_free@Base 15 + __interceptor_freopen64@Base 15 + __interceptor_freopen@Base 15 + __interceptor_frexp@Base 15 + __interceptor_frexpf@Base 15 + __interceptor_frexpl@Base 15 + __interceptor_fscanf@Base 15 + __interceptor_fstatfs64@Base 15 + __interceptor_fstatfs@Base 15 + __interceptor_fstatvfs64@Base 15 + __interceptor_fstatvfs@Base 15 + __interceptor_ftime@Base 15 + __interceptor_fwrite@Base 15 + __interceptor_get_current_dir_name@Base 15 + __interceptor_getaddrinfo@Base 15 + __interceptor_getcwd@Base 15 + __interceptor_getdelim@Base 15 + __interceptor_getentropy@Base 15 + __interceptor_getgrent@Base 15 + __interceptor_getgrent_r@Base 15 + __interceptor_getgrgid@Base 15 + __interceptor_getgrgid_r@Base 15 + __interceptor_getgrnam@Base 15 + __interceptor_getgrnam_r@Base 15 + __interceptor_getgrouplist@Base 15 + __interceptor_getgroups@Base 15 + __interceptor_gethostbyaddr@Base 15 + __interceptor_gethostbyaddr_r@Base 15 + __interceptor_gethostbyname2@Base 15 + __interceptor_gethostbyname2_r@Base 15 + __interceptor_gethostbyname@Base 15 + __interceptor_gethostbyname_r@Base 15 + __interceptor_gethostent@Base 15 + __interceptor_gethostent_r@Base 15 + __interceptor_getifaddrs@Base 15 + __interceptor_getitimer@Base 15 + __interceptor_getline@Base 15 + __interceptor_getloadavg@Base 15 + __interceptor_getmntent@Base 15 + __interceptor_getmntent_r@Base 15 + __interceptor_getnameinfo@Base 15 + __interceptor_getnetbyaddr@Base 15 + __interceptor_getnetbyname@Base 15 + __interceptor_getnetent@Base 15 + __interceptor_getpass@Base 15 + __interceptor_getpeername@Base 15 + __interceptor_getprotobyname@Base 15 + __interceptor_getprotobyname_r@Base 15 + __interceptor_getprotobynumber@Base 15 + __interceptor_getprotobynumber_r@Base 15 + __interceptor_getprotoent@Base 15 + __interceptor_getprotoent_r@Base 15 + __interceptor_getpwent@Base 15 + __interceptor_getpwent_r@Base 15 + __interceptor_getpwnam@Base 15 + __interceptor_getpwnam_r@Base 15 + __interceptor_getpwuid@Base 15 + __interceptor_getpwuid_r@Base 15 + __interceptor_getrandom@Base 15 + __interceptor_getresgid@Base 15 + __interceptor_getresuid@Base 15 + __interceptor_getsockname@Base 15 + __interceptor_getsockopt@Base 15 + __interceptor_getusershell@Base 15 + __interceptor_getutent@Base 15 + __interceptor_getutid@Base 15 + __interceptor_getutline@Base 15 + __interceptor_getutxent@Base 15 + __interceptor_getutxid@Base 15 + __interceptor_getutxline@Base 15 + __interceptor_getxattr@Base 15 + __interceptor_glob64@Base 15 + __interceptor_glob@Base 15 + __interceptor_gmtime@Base 15 + __interceptor_gmtime_r@Base 15 + __interceptor_iconv@Base 15 + __interceptor_if_indextoname@Base 15 + __interceptor_if_nametoindex@Base 15 + __interceptor_index@Base 15 + __interceptor_inet_aton@Base 15 + __interceptor_inet_ntop@Base 15 + __interceptor_inet_pton@Base 15 + __interceptor_initgroups@Base 15 + __interceptor_ioctl@Base 15 + __interceptor_lgamma@Base 15 + __interceptor_lgamma_r@Base 15 + __interceptor_lgammaf@Base 15 + __interceptor_lgammaf_r@Base 15 + __interceptor_lgammal@Base 15 + __interceptor_lgammal_r@Base 15 + __interceptor_lgetxattr@Base 15 + __interceptor_listxattr@Base 15 + __interceptor_llistxattr@Base 15 + __interceptor_localtime@Base 15 + __interceptor_localtime_r@Base 15 + __interceptor_longjmp@Base 15 + __interceptor_lrand48_r@Base 15 + __interceptor_lstat64@Base 15 + __interceptor_lstat@Base 15 + __interceptor_makecontext@Base 15 + __interceptor_mallinfo@Base 15 + __interceptor_malloc@Base 15 + __interceptor_malloc_stats@Base 15 + __interceptor_malloc_usable_size@Base 15 + __interceptor_mallopt@Base 15 + __interceptor_mbsnrtowcs@Base 15 + __interceptor_mbsrtowcs@Base 15 + __interceptor_mbstowcs@Base 15 + __interceptor_mcheck@Base 15 + __interceptor_mcheck_pedantic@Base 15 + __interceptor_memalign@Base 15 + __interceptor_memchr@Base 15 + __interceptor_memcmp@Base 15 + __interceptor_memcpy@Base 15 + __interceptor_memmem@Base 15 + __interceptor_memmove@Base 15 + __interceptor_memrchr@Base 15 + __interceptor_memset@Base 15 + __interceptor_mincore@Base 15 + __interceptor_mktime@Base 15 + __interceptor_mlock@Base 15 + __interceptor_mlockall@Base 15 + __interceptor_mmap64@Base 15 + __interceptor_mmap@Base 15 + __interceptor_modf@Base 15 + __interceptor_modff@Base 15 + __interceptor_modfl@Base 15 + __interceptor_mprobe@Base 15 + __interceptor_mprotect@Base 15 + __interceptor_msgrcv@Base 15 + __interceptor_msgsnd@Base 15 + __interceptor_munlock@Base 15 + __interceptor_munlockall@Base 15 + __interceptor_munmap@Base 15 + __interceptor_name_to_handle_at@Base 15 + __interceptor_open_by_handle_at@Base 15 + __interceptor_open_memstream@Base 15 + __interceptor_open_wmemstream@Base 15 + __interceptor_opendir@Base 15 + __interceptor_pclose@Base 15 + __interceptor_poll@Base 15 + __interceptor_popen@Base 15 + __interceptor_posix_memalign@Base 15 + __interceptor_posix_spawn@Base 15 + __interceptor_posix_spawnp@Base 15 + __interceptor_ppoll@Base 15 + __interceptor_prctl@Base 15 + __interceptor_pread64@Base 15 + __interceptor_pread@Base 15 + __interceptor_preadv2@Base 15 + __interceptor_preadv64@Base 15 + __interceptor_preadv@Base 15 + __interceptor_printf@Base 15 + __interceptor_process_vm_readv@Base 15 + __interceptor_process_vm_writev@Base 15 + __interceptor_pthread_attr_getaffinity_np@Base 15 + __interceptor_pthread_attr_getdetachstate@Base 15 + __interceptor_pthread_attr_getguardsize@Base 15 + __interceptor_pthread_attr_getinheritsched@Base 15 + __interceptor_pthread_attr_getschedparam@Base 15 + __interceptor_pthread_attr_getschedpolicy@Base 15 + __interceptor_pthread_attr_getscope@Base 15 + __interceptor_pthread_attr_getstack@Base 15 + __interceptor_pthread_attr_getstacksize@Base 15 + __interceptor_pthread_barrierattr_getpshared@Base 15 + __interceptor_pthread_condattr_getclock@Base 15 + __interceptor_pthread_condattr_getpshared@Base 15 + __interceptor_pthread_create@Base 15 + __interceptor_pthread_detach@Base 15 + __interceptor_pthread_exit@Base 15 + __interceptor_pthread_getaffinity_np@Base 15 + __interceptor_pthread_getcpuclockid@Base 15 + __interceptor_pthread_getname_np@Base 15 + __interceptor_pthread_getschedparam@Base 15 + __interceptor_pthread_join@Base 15 + __interceptor_pthread_mutexattr_getprioceiling@Base 15 + __interceptor_pthread_mutexattr_getprotocol@Base 15 + __interceptor_pthread_mutexattr_getpshared@Base 15 + __interceptor_pthread_mutexattr_getrobust@Base 15 + __interceptor_pthread_mutexattr_getrobust_np@Base 15 + __interceptor_pthread_mutexattr_gettype@Base 15 + __interceptor_pthread_rwlockattr_getkind_np@Base 15 + __interceptor_pthread_rwlockattr_getpshared@Base 15 + __interceptor_pthread_setcancelstate@Base 15 + __interceptor_pthread_setcanceltype@Base 15 + __interceptor_pthread_setname_np@Base 15 + __interceptor_pthread_sigmask@Base 15 + __interceptor_pthread_timedjoin_np@Base 15 + __interceptor_pthread_tryjoin_np@Base 15 + __interceptor_ptrace@Base 15 + __interceptor_ptsname@Base 15 + __interceptor_ptsname_r@Base 15 + __interceptor_puts@Base 15 + __interceptor_pututxline@Base 15 + __interceptor_pvalloc@Base 15 + __interceptor_pwrite64@Base 15 + __interceptor_pwrite@Base 15 + __interceptor_pwritev2@Base 15 + __interceptor_pwritev64@Base 15 + __interceptor_pwritev@Base 15 + __interceptor_qsort@Base 15 + __interceptor_qsort_r@Base 15 + __interceptor_rand_r@Base 15 + __interceptor_random_r@Base 15 + __interceptor_read@Base 15 + __interceptor_readdir64@Base 15 + __interceptor_readdir64_r@Base 15 + __interceptor_readdir@Base 15 + __interceptor_readdir_r@Base 15 + __interceptor_readlink@Base 15 + __interceptor_readlinkat@Base 15 + __interceptor_readv@Base 15 + __interceptor_realloc@Base 15 + __interceptor_reallocarray@Base 15 + __interceptor_realpath@Base 15 + __interceptor_recv@Base 15 + __interceptor_recvfrom@Base 15 + __interceptor_recvmmsg@Base 15 + __interceptor_recvmsg@Base 15 + __interceptor_regcomp@Base 15 + __interceptor_regerror@Base 15 + __interceptor_regexec@Base 15 + __interceptor_regfree@Base 15 + __interceptor_remquo@Base 15 + __interceptor_remquof@Base 15 + __interceptor_remquol@Base 15 + __interceptor_scandir64@Base 15 + __interceptor_scandir@Base 15 + __interceptor_scanf@Base 15 + __interceptor_sched_getaffinity@Base 15 + __interceptor_sched_getparam@Base 15 + __interceptor_sem_destroy@Base 15 + __interceptor_sem_getvalue@Base 15 + __interceptor_sem_init@Base 15 + __interceptor_sem_open@Base 15 + __interceptor_sem_post@Base 15 + __interceptor_sem_timedwait@Base 15 + __interceptor_sem_trywait@Base 15 + __interceptor_sem_unlink@Base 15 + __interceptor_sem_wait@Base 15 + __interceptor_send@Base 15 + __interceptor_sendmmsg@Base 15 + __interceptor_sendmsg@Base 15 + __interceptor_sendto@Base 15 + __interceptor_setbuf@Base 15 + __interceptor_setbuffer@Base 15 + __interceptor_setgrent@Base 15 + __interceptor_setitimer@Base 15 + __interceptor_setlinebuf@Base 15 + __interceptor_setlocale@Base 15 + __interceptor_setpwent@Base 15 + __interceptor_setvbuf@Base 15 + __interceptor_sigaction@Base 15 + __interceptor_sigaltstack@Base 15 + __interceptor_sigandset@Base 15 + __interceptor_sigemptyset@Base 15 + __interceptor_sigfillset@Base 15 + __interceptor_siglongjmp@Base 15 + __interceptor_signal@Base 15 + __interceptor_sigorset@Base 15 + __interceptor_sigpending@Base 15 + __interceptor_sigprocmask@Base 15 + __interceptor_sigtimedwait@Base 15 + __interceptor_sigwait@Base 15 + __interceptor_sigwaitinfo@Base 15 + __interceptor_sincos@Base 15 + __interceptor_sincosf@Base 15 + __interceptor_sincosl@Base 15 + __interceptor_snprintf@Base 15 + __interceptor_sprintf@Base 15 + __interceptor_sscanf@Base 15 + __interceptor_stat64@Base 15 + __interceptor_stat@Base 15 + __interceptor_statfs64@Base 15 + __interceptor_statfs@Base 15 + __interceptor_statvfs64@Base 15 + __interceptor_statvfs@Base 15 + __interceptor_strcasecmp@Base 15 + __interceptor_strcasestr@Base 15 + __interceptor_strcat@Base 15 + __interceptor_strchr@Base 15 + __interceptor_strchrnul@Base 15 + __interceptor_strcmp@Base 15 + __interceptor_strcpy@Base 15 + __interceptor_strcspn@Base 15 + __interceptor_strdup@Base 15 + __interceptor_strerror@Base 15 + __interceptor_strerror_r@Base 15 + __interceptor_strlen@Base 15 + __interceptor_strncasecmp@Base 15 + __interceptor_strncat@Base 15 + __interceptor_strncmp@Base 15 + __interceptor_strncpy@Base 15 + __interceptor_strndup@Base 15 + __interceptor_strnlen@Base 15 + __interceptor_strpbrk@Base 15 + __interceptor_strptime@Base 15 + __interceptor_strrchr@Base 15 + __interceptor_strspn@Base 15 + __interceptor_strstr@Base 15 + __interceptor_strtoimax@Base 15 + __interceptor_strtok@Base 15 + __interceptor_strtol@Base 15 + __interceptor_strtoll@Base 15 + __interceptor_strtoumax@Base 15 + __interceptor_strxfrm@Base 15 + __interceptor_strxfrm_l@Base 15 + __interceptor_swapcontext@Base 15 + __interceptor_sysinfo@Base 15 + __interceptor_tcgetattr@Base 15 + __interceptor_tempnam@Base 15 + __interceptor_textdomain@Base 15 + __interceptor_time@Base 15 + __interceptor_timerfd_gettime@Base 15 + __interceptor_timerfd_settime@Base 15 + __interceptor_times@Base 15 + __interceptor_tmpnam@Base 15 + __interceptor_tmpnam_r@Base 15 + __interceptor_trampoline__Unwind_RaiseException@Base 15 + __interceptor_trampoline___b64_ntop@Base 15 + __interceptor_trampoline___b64_pton@Base 15 + __interceptor_trampoline___bzero@Base 15 + __interceptor_trampoline___cxa_atexit@Base 15 + __interceptor_trampoline___cxa_throw@Base 15 + __interceptor_trampoline___fprintf_chk@Base 15 + __interceptor_trampoline___getdelim@Base 15 + __interceptor_trampoline___isoc23_fscanf@Base 15 + __interceptor_trampoline___isoc23_scanf@Base 15 + __interceptor_trampoline___isoc23_sscanf@Base 15 + __interceptor_trampoline___isoc23_strtoimax@Base 15 + __interceptor_trampoline___isoc23_strtol@Base 15 + __interceptor_trampoline___isoc23_strtoll@Base 15 + __interceptor_trampoline___isoc23_strtoumax@Base 15 + __interceptor_trampoline___isoc23_vfscanf@Base 15 + __interceptor_trampoline___isoc23_vscanf@Base 15 + __interceptor_trampoline___isoc23_vsscanf@Base 15 + __interceptor_trampoline___isoc99_fprintf@Base 15 + __interceptor_trampoline___isoc99_fscanf@Base 15 + __interceptor_trampoline___isoc99_printf@Base 15 + __interceptor_trampoline___isoc99_scanf@Base 15 + __interceptor_trampoline___isoc99_snprintf@Base 15 + __interceptor_trampoline___isoc99_sprintf@Base 15 + __interceptor_trampoline___isoc99_sscanf@Base 15 + __interceptor_trampoline___isoc99_vfprintf@Base 15 + __interceptor_trampoline___isoc99_vfscanf@Base 15 + __interceptor_trampoline___isoc99_vprintf@Base 15 + __interceptor_trampoline___isoc99_vscanf@Base 15 + __interceptor_trampoline___isoc99_vsnprintf@Base 15 + __interceptor_trampoline___isoc99_vsprintf@Base 15 + __interceptor_trampoline___isoc99_vsscanf@Base 15 + __interceptor_trampoline___libc_memalign@Base 15 + __interceptor_trampoline___longjmp_chk@Base 15 + __interceptor_trampoline___lxstat64@Base 15 + __interceptor_trampoline___lxstat@Base 15 + __interceptor_trampoline___overflow@Base 15 + __interceptor_trampoline___snprintf_chk@Base 15 + __interceptor_trampoline___sprintf_chk@Base 15 + __interceptor_trampoline___strdup@Base 15 + __interceptor_trampoline___strndup@Base 15 + __interceptor_trampoline___strxfrm_l@Base 15 + __interceptor_trampoline___tls_get_addr@Base 15 + __interceptor_trampoline___uflow@Base 15 + __interceptor_trampoline___underflow@Base 15 + __interceptor_trampoline___vsnprintf_chk@Base 15 + __interceptor_trampoline___vsprintf_chk@Base 15 + __interceptor_trampoline___wcsxfrm_l@Base 15 + __interceptor_trampoline___woverflow@Base 15 + __interceptor_trampoline___wuflow@Base 15 + __interceptor_trampoline___wunderflow@Base 15 + __interceptor_trampoline___xpg_strerror_r@Base 15 + __interceptor_trampoline___xstat64@Base 15 + __interceptor_trampoline___xstat@Base 15 + __interceptor_trampoline__exit@Base 15 + __interceptor_trampoline__longjmp@Base 15 + __interceptor_trampoline__obstack_begin@Base 15 + __interceptor_trampoline__obstack_begin_1@Base 15 + __interceptor_trampoline__obstack_newchunk@Base 15 + __interceptor_trampoline_accept4@Base 15 + __interceptor_trampoline_accept@Base 15 + __interceptor_trampoline_aligned_alloc@Base 15 + __interceptor_trampoline_argp_parse@Base 15 + __interceptor_trampoline_asctime@Base 15 + __interceptor_trampoline_asctime_r@Base 15 + __interceptor_trampoline_asprintf@Base 15 + __interceptor_trampoline_atoi@Base 15 + __interceptor_trampoline_atol@Base 15 + __interceptor_trampoline_atoll@Base 15 + __interceptor_trampoline_backtrace@Base 15 + __interceptor_trampoline_backtrace_symbols@Base 15 + __interceptor_trampoline_bcmp@Base 15 + __interceptor_trampoline_bsearch@Base 15 + __interceptor_trampoline_bzero@Base 15 + __interceptor_trampoline_calloc@Base 15 + __interceptor_trampoline_canonicalize_file_name@Base 15 + __interceptor_trampoline_capget@Base 15 + __interceptor_trampoline_capset@Base 15 + __interceptor_trampoline_cfree@Base 15 + __interceptor_trampoline_clock_getcpuclockid@Base 15 + __interceptor_trampoline_clock_getres@Base 15 + __interceptor_trampoline_clock_gettime@Base 15 + __interceptor_trampoline_clock_settime@Base 15 + __interceptor_trampoline_confstr@Base 15 + __interceptor_trampoline_ctermid@Base 15 + __interceptor_trampoline_ctime@Base 15 + __interceptor_trampoline_ctime_r@Base 15 + __interceptor_trampoline_dlclose@Base 15 + __interceptor_trampoline_dlopen@Base 15 + __interceptor_trampoline_dn_comp@Base 15 + __interceptor_trampoline_dn_expand@Base 15 + __interceptor_trampoline_drand48_r@Base 15 + __interceptor_trampoline_endgrent@Base 15 + __interceptor_trampoline_endpwent@Base 15 + __interceptor_trampoline_ether_aton@Base 15 + __interceptor_trampoline_ether_aton_r@Base 15 + __interceptor_trampoline_ether_hostton@Base 15 + __interceptor_trampoline_ether_line@Base 15 + __interceptor_trampoline_ether_ntoa@Base 15 + __interceptor_trampoline_ether_ntoa_r@Base 15 + __interceptor_trampoline_ether_ntohost@Base 15 + __interceptor_trampoline_eventfd_read@Base 15 + __interceptor_trampoline_eventfd_write@Base 15 + __interceptor_trampoline_fclose@Base 15 + __interceptor_trampoline_fdopen@Base 15 + __interceptor_trampoline_fflush@Base 15 + __interceptor_trampoline_fgetgrent@Base 15 + __interceptor_trampoline_fgetgrent_r@Base 15 + __interceptor_trampoline_fgetpwent@Base 15 + __interceptor_trampoline_fgetpwent_r@Base 15 + __interceptor_trampoline_fgets@Base 15 + __interceptor_trampoline_fgetxattr@Base 15 + __interceptor_trampoline_flistxattr@Base 15 + __interceptor_trampoline_fmemopen@Base 15 + __interceptor_trampoline_fopen64@Base 15 + __interceptor_trampoline_fopen@Base 15 + __interceptor_trampoline_fopencookie@Base 15 + __interceptor_trampoline_fprintf@Base 15 + __interceptor_trampoline_fputs@Base 15 + __interceptor_trampoline_fread@Base 15 + __interceptor_trampoline_free@Base 15 + __interceptor_trampoline_freopen64@Base 15 + __interceptor_trampoline_freopen@Base 15 + __interceptor_trampoline_frexp@Base 15 + __interceptor_trampoline_frexpf@Base 15 + __interceptor_trampoline_frexpl@Base 15 + __interceptor_trampoline_fscanf@Base 15 + __interceptor_trampoline_fstatfs64@Base 15 + __interceptor_trampoline_fstatfs@Base 15 + __interceptor_trampoline_fstatvfs64@Base 15 + __interceptor_trampoline_fstatvfs@Base 15 + __interceptor_trampoline_ftime@Base 15 + __interceptor_trampoline_fwrite@Base 15 + __interceptor_trampoline_get_current_dir_name@Base 15 + __interceptor_trampoline_getaddrinfo@Base 15 + __interceptor_trampoline_getcwd@Base 15 + __interceptor_trampoline_getdelim@Base 15 + __interceptor_trampoline_getentropy@Base 15 + __interceptor_trampoline_getgrent@Base 15 + __interceptor_trampoline_getgrent_r@Base 15 + __interceptor_trampoline_getgrgid@Base 15 + __interceptor_trampoline_getgrgid_r@Base 15 + __interceptor_trampoline_getgrnam@Base 15 + __interceptor_trampoline_getgrnam_r@Base 15 + __interceptor_trampoline_getgrouplist@Base 15 + __interceptor_trampoline_getgroups@Base 15 + __interceptor_trampoline_gethostbyaddr@Base 15 + __interceptor_trampoline_gethostbyaddr_r@Base 15 + __interceptor_trampoline_gethostbyname2@Base 15 + __interceptor_trampoline_gethostbyname2_r@Base 15 + __interceptor_trampoline_gethostbyname@Base 15 + __interceptor_trampoline_gethostbyname_r@Base 15 + __interceptor_trampoline_gethostent@Base 15 + __interceptor_trampoline_gethostent_r@Base 15 + __interceptor_trampoline_getifaddrs@Base 15 + __interceptor_trampoline_getitimer@Base 15 + __interceptor_trampoline_getline@Base 15 + __interceptor_trampoline_getloadavg@Base 15 + __interceptor_trampoline_getmntent@Base 15 + __interceptor_trampoline_getmntent_r@Base 15 + __interceptor_trampoline_getnameinfo@Base 15 + __interceptor_trampoline_getnetbyaddr@Base 15 + __interceptor_trampoline_getnetbyname@Base 15 + __interceptor_trampoline_getnetent@Base 15 + __interceptor_trampoline_getpass@Base 15 + __interceptor_trampoline_getpeername@Base 15 + __interceptor_trampoline_getprotobyname@Base 15 + __interceptor_trampoline_getprotobyname_r@Base 15 + __interceptor_trampoline_getprotobynumber@Base 15 + __interceptor_trampoline_getprotobynumber_r@Base 15 + __interceptor_trampoline_getprotoent@Base 15 + __interceptor_trampoline_getprotoent_r@Base 15 + __interceptor_trampoline_getpwent@Base 15 + __interceptor_trampoline_getpwent_r@Base 15 + __interceptor_trampoline_getpwnam@Base 15 + __interceptor_trampoline_getpwnam_r@Base 15 + __interceptor_trampoline_getpwuid@Base 15 + __interceptor_trampoline_getpwuid_r@Base 15 + __interceptor_trampoline_getrandom@Base 15 + __interceptor_trampoline_getresgid@Base 15 + __interceptor_trampoline_getresuid@Base 15 + __interceptor_trampoline_getsockname@Base 15 + __interceptor_trampoline_getsockopt@Base 15 + __interceptor_trampoline_getusershell@Base 15 + __interceptor_trampoline_getutent@Base 15 + __interceptor_trampoline_getutid@Base 15 + __interceptor_trampoline_getutline@Base 15 + __interceptor_trampoline_getutxent@Base 15 + __interceptor_trampoline_getutxid@Base 15 + __interceptor_trampoline_getutxline@Base 15 + __interceptor_trampoline_getxattr@Base 15 + __interceptor_trampoline_glob64@Base 15 + __interceptor_trampoline_glob@Base 15 + __interceptor_trampoline_gmtime@Base 15 + __interceptor_trampoline_gmtime_r@Base 15 + __interceptor_trampoline_iconv@Base 15 + __interceptor_trampoline_if_indextoname@Base 15 + __interceptor_trampoline_if_nametoindex@Base 15 + __interceptor_trampoline_index@Base 15 + __interceptor_trampoline_inet_aton@Base 15 + __interceptor_trampoline_inet_ntop@Base 15 + __interceptor_trampoline_inet_pton@Base 15 + __interceptor_trampoline_initgroups@Base 15 + __interceptor_trampoline_ioctl@Base 15 + __interceptor_trampoline_lgamma@Base 15 + __interceptor_trampoline_lgamma_r@Base 15 + __interceptor_trampoline_lgammaf@Base 15 + __interceptor_trampoline_lgammaf_r@Base 15 + __interceptor_trampoline_lgammal@Base 15 + __interceptor_trampoline_lgammal_r@Base 15 + __interceptor_trampoline_lgetxattr@Base 15 + __interceptor_trampoline_listxattr@Base 15 + __interceptor_trampoline_llistxattr@Base 15 + __interceptor_trampoline_localtime@Base 15 + __interceptor_trampoline_localtime_r@Base 15 + __interceptor_trampoline_longjmp@Base 15 + __interceptor_trampoline_lrand48_r@Base 15 + __interceptor_trampoline_lstat64@Base 15 + __interceptor_trampoline_lstat@Base 15 + __interceptor_trampoline_makecontext@Base 15 + __interceptor_trampoline_mallinfo@Base 15 + __interceptor_trampoline_malloc@Base 15 + __interceptor_trampoline_malloc_stats@Base 15 + __interceptor_trampoline_malloc_usable_size@Base 15 + __interceptor_trampoline_mallopt@Base 15 + __interceptor_trampoline_mbsnrtowcs@Base 15 + __interceptor_trampoline_mbsrtowcs@Base 15 + __interceptor_trampoline_mbstowcs@Base 15 + __interceptor_trampoline_mcheck@Base 15 + __interceptor_trampoline_mcheck_pedantic@Base 15 + __interceptor_trampoline_memalign@Base 15 + __interceptor_trampoline_memchr@Base 15 + __interceptor_trampoline_memcmp@Base 15 + __interceptor_trampoline_memcpy@Base 15 + __interceptor_trampoline_memmem@Base 15 + __interceptor_trampoline_memmove@Base 15 + __interceptor_trampoline_memrchr@Base 15 + __interceptor_trampoline_memset@Base 15 + __interceptor_trampoline_mincore@Base 15 + __interceptor_trampoline_mktime@Base 15 + __interceptor_trampoline_mlock@Base 15 + __interceptor_trampoline_mlockall@Base 15 + __interceptor_trampoline_mmap64@Base 15 + __interceptor_trampoline_mmap@Base 15 + __interceptor_trampoline_modf@Base 15 + __interceptor_trampoline_modff@Base 15 + __interceptor_trampoline_modfl@Base 15 + __interceptor_trampoline_mprobe@Base 15 + __interceptor_trampoline_mprotect@Base 15 + __interceptor_trampoline_msgrcv@Base 15 + __interceptor_trampoline_msgsnd@Base 15 + __interceptor_trampoline_munlock@Base 15 + __interceptor_trampoline_munlockall@Base 15 + __interceptor_trampoline_munmap@Base 15 + __interceptor_trampoline_name_to_handle_at@Base 15 + __interceptor_trampoline_open_by_handle_at@Base 15 + __interceptor_trampoline_open_memstream@Base 15 + __interceptor_trampoline_open_wmemstream@Base 15 + __interceptor_trampoline_opendir@Base 15 + __interceptor_trampoline_pclose@Base 15 + __interceptor_trampoline_poll@Base 15 + __interceptor_trampoline_popen@Base 15 + __interceptor_trampoline_posix_memalign@Base 15 + __interceptor_trampoline_posix_spawn@Base 15 + __interceptor_trampoline_posix_spawnp@Base 15 + __interceptor_trampoline_ppoll@Base 15 + __interceptor_trampoline_prctl@Base 15 + __interceptor_trampoline_pread64@Base 15 + __interceptor_trampoline_pread@Base 15 + __interceptor_trampoline_preadv2@Base 15 + __interceptor_trampoline_preadv64@Base 15 + __interceptor_trampoline_preadv@Base 15 + __interceptor_trampoline_printf@Base 15 + __interceptor_trampoline_process_vm_readv@Base 15 + __interceptor_trampoline_process_vm_writev@Base 15 + __interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 + __interceptor_trampoline_pthread_attr_getdetachstate@Base 15 + __interceptor_trampoline_pthread_attr_getguardsize@Base 15 + __interceptor_trampoline_pthread_attr_getinheritsched@Base 15 + __interceptor_trampoline_pthread_attr_getschedparam@Base 15 + __interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 + __interceptor_trampoline_pthread_attr_getscope@Base 15 + __interceptor_trampoline_pthread_attr_getstack@Base 15 + __interceptor_trampoline_pthread_attr_getstacksize@Base 15 + __interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 + __interceptor_trampoline_pthread_condattr_getclock@Base 15 + __interceptor_trampoline_pthread_condattr_getpshared@Base 15 + __interceptor_trampoline_pthread_create@Base 15 + __interceptor_trampoline_pthread_detach@Base 15 + __interceptor_trampoline_pthread_exit@Base 15 + __interceptor_trampoline_pthread_getaffinity_np@Base 15 + __interceptor_trampoline_pthread_getcpuclockid@Base 15 + __interceptor_trampoline_pthread_getname_np@Base 15 + __interceptor_trampoline_pthread_getschedparam@Base 15 + __interceptor_trampoline_pthread_join@Base 15 + __interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 + __interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 + __interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 + __interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 + __interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 + __interceptor_trampoline_pthread_mutexattr_gettype@Base 15 + __interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 + __interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 + __interceptor_trampoline_pthread_setcancelstate@Base 15 + __interceptor_trampoline_pthread_setcanceltype@Base 15 + __interceptor_trampoline_pthread_setname_np@Base 15 + __interceptor_trampoline_pthread_sigmask@Base 15 + __interceptor_trampoline_pthread_timedjoin_np@Base 15 + __interceptor_trampoline_pthread_tryjoin_np@Base 15 + __interceptor_trampoline_ptrace@Base 15 + __interceptor_trampoline_ptsname@Base 15 + __interceptor_trampoline_ptsname_r@Base 15 + __interceptor_trampoline_puts@Base 15 + __interceptor_trampoline_pututxline@Base 15 + __interceptor_trampoline_pvalloc@Base 15 + __interceptor_trampoline_pwrite64@Base 15 + __interceptor_trampoline_pwrite@Base 15 + __interceptor_trampoline_pwritev2@Base 15 + __interceptor_trampoline_pwritev64@Base 15 + __interceptor_trampoline_pwritev@Base 15 + __interceptor_trampoline_qsort@Base 15 + __interceptor_trampoline_qsort_r@Base 15 + __interceptor_trampoline_rand_r@Base 15 + __interceptor_trampoline_random_r@Base 15 + __interceptor_trampoline_read@Base 15 + __interceptor_trampoline_readdir64@Base 15 + __interceptor_trampoline_readdir64_r@Base 15 + __interceptor_trampoline_readdir@Base 15 + __interceptor_trampoline_readdir_r@Base 15 + __interceptor_trampoline_readlink@Base 15 + __interceptor_trampoline_readlinkat@Base 15 + __interceptor_trampoline_readv@Base 15 + __interceptor_trampoline_realloc@Base 15 + __interceptor_trampoline_reallocarray@Base 15 + __interceptor_trampoline_realpath@Base 15 + __interceptor_trampoline_recv@Base 15 + __interceptor_trampoline_recvfrom@Base 15 + __interceptor_trampoline_recvmmsg@Base 15 + __interceptor_trampoline_recvmsg@Base 15 + __interceptor_trampoline_regcomp@Base 15 + __interceptor_trampoline_regerror@Base 15 + __interceptor_trampoline_regexec@Base 15 + __interceptor_trampoline_regfree@Base 15 + __interceptor_trampoline_remquo@Base 15 + __interceptor_trampoline_remquof@Base 15 + __interceptor_trampoline_remquol@Base 15 + __interceptor_trampoline_scandir64@Base 15 + __interceptor_trampoline_scandir@Base 15 + __interceptor_trampoline_scanf@Base 15 + __interceptor_trampoline_sched_getaffinity@Base 15 + __interceptor_trampoline_sched_getparam@Base 15 + __interceptor_trampoline_sem_destroy@Base 15 + __interceptor_trampoline_sem_getvalue@Base 15 + __interceptor_trampoline_sem_init@Base 15 + __interceptor_trampoline_sem_open@Base 15 + __interceptor_trampoline_sem_post@Base 15 + __interceptor_trampoline_sem_timedwait@Base 15 + __interceptor_trampoline_sem_trywait@Base 15 + __interceptor_trampoline_sem_unlink@Base 15 + __interceptor_trampoline_sem_wait@Base 15 + __interceptor_trampoline_send@Base 15 + __interceptor_trampoline_sendmmsg@Base 15 + __interceptor_trampoline_sendmsg@Base 15 + __interceptor_trampoline_sendto@Base 15 + __interceptor_trampoline_setbuf@Base 15 + __interceptor_trampoline_setbuffer@Base 15 + __interceptor_trampoline_setgrent@Base 15 + __interceptor_trampoline_setitimer@Base 15 + __interceptor_trampoline_setlinebuf@Base 15 + __interceptor_trampoline_setlocale@Base 15 + __interceptor_trampoline_setpwent@Base 15 + __interceptor_trampoline_setvbuf@Base 15 + __interceptor_trampoline_sigaction@Base 15 + __interceptor_trampoline_sigaltstack@Base 15 + __interceptor_trampoline_sigandset@Base 15 + __interceptor_trampoline_sigemptyset@Base 15 + __interceptor_trampoline_sigfillset@Base 15 + __interceptor_trampoline_siglongjmp@Base 15 + __interceptor_trampoline_signal@Base 15 + __interceptor_trampoline_sigorset@Base 15 + __interceptor_trampoline_sigpending@Base 15 + __interceptor_trampoline_sigprocmask@Base 15 + __interceptor_trampoline_sigtimedwait@Base 15 + __interceptor_trampoline_sigwait@Base 15 + __interceptor_trampoline_sigwaitinfo@Base 15 + __interceptor_trampoline_sincos@Base 15 + __interceptor_trampoline_sincosf@Base 15 + __interceptor_trampoline_sincosl@Base 15 + __interceptor_trampoline_snprintf@Base 15 + __interceptor_trampoline_sprintf@Base 15 + __interceptor_trampoline_sscanf@Base 15 + __interceptor_trampoline_stat64@Base 15 + __interceptor_trampoline_stat@Base 15 + __interceptor_trampoline_statfs64@Base 15 + __interceptor_trampoline_statfs@Base 15 + __interceptor_trampoline_statvfs64@Base 15 + __interceptor_trampoline_statvfs@Base 15 + __interceptor_trampoline_strcasecmp@Base 15 + __interceptor_trampoline_strcasestr@Base 15 + __interceptor_trampoline_strcat@Base 15 + __interceptor_trampoline_strchr@Base 15 + __interceptor_trampoline_strchrnul@Base 15 + __interceptor_trampoline_strcmp@Base 15 + __interceptor_trampoline_strcpy@Base 15 + __interceptor_trampoline_strcspn@Base 15 + __interceptor_trampoline_strdup@Base 15 + __interceptor_trampoline_strerror@Base 15 + __interceptor_trampoline_strerror_r@Base 15 + __interceptor_trampoline_strlen@Base 15 + __interceptor_trampoline_strncasecmp@Base 15 + __interceptor_trampoline_strncat@Base 15 + __interceptor_trampoline_strncmp@Base 15 + __interceptor_trampoline_strncpy@Base 15 + __interceptor_trampoline_strndup@Base 15 + __interceptor_trampoline_strnlen@Base 15 + __interceptor_trampoline_strpbrk@Base 15 + __interceptor_trampoline_strptime@Base 15 + __interceptor_trampoline_strrchr@Base 15 + __interceptor_trampoline_strspn@Base 15 + __interceptor_trampoline_strstr@Base 15 + __interceptor_trampoline_strtoimax@Base 15 + __interceptor_trampoline_strtok@Base 15 + __interceptor_trampoline_strtol@Base 15 + __interceptor_trampoline_strtoll@Base 15 + __interceptor_trampoline_strtoumax@Base 15 + __interceptor_trampoline_strxfrm@Base 15 + __interceptor_trampoline_strxfrm_l@Base 15 + __interceptor_trampoline_swapcontext@Base 15 + __interceptor_trampoline_sysinfo@Base 15 + __interceptor_trampoline_tcgetattr@Base 15 + __interceptor_trampoline_tempnam@Base 15 + __interceptor_trampoline_textdomain@Base 15 + __interceptor_trampoline_time@Base 15 + __interceptor_trampoline_timerfd_gettime@Base 15 + __interceptor_trampoline_timerfd_settime@Base 15 + __interceptor_trampoline_times@Base 15 + __interceptor_trampoline_tmpnam@Base 15 + __interceptor_trampoline_tmpnam_r@Base 15 + __interceptor_trampoline_tsearch@Base 15 + __interceptor_trampoline_ttyname@Base 15 + __interceptor_trampoline_ttyname_r@Base 15 + __interceptor_trampoline_uname@Base 15 + __interceptor_trampoline_valloc@Base 15 + __interceptor_trampoline_vasprintf@Base 15 + __interceptor_trampoline_vfork@Base 15 + __interceptor_trampoline_vfprintf@Base 15 + __interceptor_trampoline_vfscanf@Base 15 + __interceptor_trampoline_vprintf@Base 15 + __interceptor_trampoline_vscanf@Base 15 + __interceptor_trampoline_vsnprintf@Base 15 + __interceptor_trampoline_vsprintf@Base 15 + __interceptor_trampoline_vsscanf@Base 15 + __interceptor_trampoline_wait3@Base 15 + __interceptor_trampoline_wait4@Base 15 + __interceptor_trampoline_wait@Base 15 + __interceptor_trampoline_waitid@Base 15 + __interceptor_trampoline_waitpid@Base 15 + __interceptor_trampoline_wcrtomb@Base 15 + __interceptor_trampoline_wcscat@Base 15 + __interceptor_trampoline_wcsdup@Base 15 + __interceptor_trampoline_wcslen@Base 15 + __interceptor_trampoline_wcsncat@Base 15 + __interceptor_trampoline_wcsnlen@Base 15 + __interceptor_trampoline_wcsnrtombs@Base 15 + __interceptor_trampoline_wcsrtombs@Base 15 + __interceptor_trampoline_wcstombs@Base 15 + __interceptor_trampoline_wcsxfrm@Base 15 + __interceptor_trampoline_wcsxfrm_l@Base 15 + __interceptor_trampoline_wctomb@Base 15 + __interceptor_trampoline_wordexp@Base 15 + __interceptor_trampoline_write@Base 15 + __interceptor_trampoline_writev@Base 15 + __interceptor_trampoline_xdr_bool@Base 15 + __interceptor_trampoline_xdr_bytes@Base 15 + __interceptor_trampoline_xdr_char@Base 15 + __interceptor_trampoline_xdr_destroy@Base 15 + __interceptor_trampoline_xdr_double@Base 15 + __interceptor_trampoline_xdr_enum@Base 15 + __interceptor_trampoline_xdr_float@Base 15 + __interceptor_trampoline_xdr_hyper@Base 15 + __interceptor_trampoline_xdr_int16_t@Base 15 + __interceptor_trampoline_xdr_int32_t@Base 15 + __interceptor_trampoline_xdr_int64_t@Base 15 + __interceptor_trampoline_xdr_int8_t@Base 15 + __interceptor_trampoline_xdr_int@Base 15 + __interceptor_trampoline_xdr_long@Base 15 + __interceptor_trampoline_xdr_longlong_t@Base 15 + __interceptor_trampoline_xdr_quad_t@Base 15 + __interceptor_trampoline_xdr_short@Base 15 + __interceptor_trampoline_xdr_string@Base 15 + __interceptor_trampoline_xdr_u_char@Base 15 + __interceptor_trampoline_xdr_u_hyper@Base 15 + __interceptor_trampoline_xdr_u_int@Base 15 + __interceptor_trampoline_xdr_u_long@Base 15 + __interceptor_trampoline_xdr_u_longlong_t@Base 15 + __interceptor_trampoline_xdr_u_quad_t@Base 15 + __interceptor_trampoline_xdr_u_short@Base 15 + __interceptor_trampoline_xdr_uint16_t@Base 15 + __interceptor_trampoline_xdr_uint32_t@Base 15 + __interceptor_trampoline_xdr_uint64_t@Base 15 + __interceptor_trampoline_xdr_uint8_t@Base 15 + __interceptor_trampoline_xdrmem_create@Base 15 + __interceptor_trampoline_xdrrec_create@Base 15 + __interceptor_trampoline_xdrstdio_create@Base 15 + __interceptor_tsearch@Base 15 + __interceptor_ttyname@Base 15 + __interceptor_ttyname_r@Base 15 + __interceptor_uname@Base 15 + __interceptor_valloc@Base 15 + __interceptor_vasprintf@Base 15 + __interceptor_vfork@Base 15 + __interceptor_vfprintf@Base 15 + __interceptor_vfscanf@Base 15 + __interceptor_vprintf@Base 15 + __interceptor_vscanf@Base 15 + __interceptor_vsnprintf@Base 15 + __interceptor_vsprintf@Base 15 + __interceptor_vsscanf@Base 15 + __interceptor_wait3@Base 15 + __interceptor_wait4@Base 15 + __interceptor_wait@Base 15 + __interceptor_waitid@Base 15 + __interceptor_waitpid@Base 15 + __interceptor_wcrtomb@Base 15 + __interceptor_wcscat@Base 15 + __interceptor_wcsdup@Base 15 + __interceptor_wcslen@Base 15 + __interceptor_wcsncat@Base 15 + __interceptor_wcsnlen@Base 15 + __interceptor_wcsnrtombs@Base 15 + __interceptor_wcsrtombs@Base 15 + __interceptor_wcstombs@Base 15 + __interceptor_wcsxfrm@Base 15 + __interceptor_wcsxfrm_l@Base 15 + __interceptor_wctomb@Base 15 + __interceptor_wordexp@Base 15 + __interceptor_write@Base 15 + __interceptor_writev@Base 15 + __interceptor_xdr_bool@Base 15 + __interceptor_xdr_bytes@Base 15 + __interceptor_xdr_char@Base 15 + __interceptor_xdr_destroy@Base 15 + __interceptor_xdr_double@Base 15 + __interceptor_xdr_enum@Base 15 + __interceptor_xdr_float@Base 15 + __interceptor_xdr_hyper@Base 15 + __interceptor_xdr_int16_t@Base 15 + __interceptor_xdr_int32_t@Base 15 + __interceptor_xdr_int64_t@Base 15 + __interceptor_xdr_int8_t@Base 15 + __interceptor_xdr_int@Base 15 + __interceptor_xdr_long@Base 15 + __interceptor_xdr_longlong_t@Base 15 + __interceptor_xdr_quad_t@Base 15 + __interceptor_xdr_short@Base 15 + __interceptor_xdr_string@Base 15 + __interceptor_xdr_u_char@Base 15 + __interceptor_xdr_u_hyper@Base 15 + __interceptor_xdr_u_int@Base 15 + __interceptor_xdr_u_long@Base 15 + __interceptor_xdr_u_longlong_t@Base 15 + __interceptor_xdr_u_quad_t@Base 15 + __interceptor_xdr_u_short@Base 15 + __interceptor_xdr_uint16_t@Base 15 + __interceptor_xdr_uint32_t@Base 15 + __interceptor_xdr_uint64_t@Base 15 + __interceptor_xdr_uint8_t@Base 15 + __interceptor_xdrmem_create@Base 15 + __interceptor_xdrrec_create@Base 15 + __interceptor_xdrstdio_create@Base 15 + __isoc23_fscanf@Base 15 + __isoc23_scanf@Base 15 + __isoc23_sscanf@Base 15 + __isoc23_strtoimax@Base 15 + __isoc23_strtol@Base 15 + __isoc23_strtoll@Base 15 + __isoc23_strtoumax@Base 15 + __isoc23_vfscanf@Base 15 + __isoc23_vscanf@Base 15 + __isoc23_vsscanf@Base 15 + __isoc99_fprintf@Base 15 + __isoc99_fscanf@Base 15 + __isoc99_printf@Base 15 + __isoc99_scanf@Base 15 + __isoc99_snprintf@Base 15 + __isoc99_sprintf@Base 15 + __isoc99_sscanf@Base 15 + __isoc99_vfprintf@Base 15 + __isoc99_vfscanf@Base 15 + __isoc99_vprintf@Base 15 + __isoc99_vscanf@Base 15 + __isoc99_vsnprintf@Base 15 + __isoc99_vsprintf@Base 15 + __isoc99_vsscanf@Base 15 + __libc_memalign@Base 15 + __longjmp_chk@Base 15 + __lsan_default_options@Base 15 + __lsan_disable@Base 15 + __lsan_do_leak_check@Base 15 + __lsan_do_recoverable_leak_check@Base 15 + __lsan_enable@Base 15 + __lsan_ignore_object@Base 15 + __lsan_register_root_region@Base 15 + __lsan_unregister_root_region@Base 15 + __lxstat64@Base 15 + __lxstat@Base 15 + __overflow@Base 15 + __sancov_default_options@Base 15 + __sancov_lowest_stack@Base 15 + __sanitizer_acquire_crash_state@Base 15 + __sanitizer_annotate_contiguous_container@Base 15 + __sanitizer_annotate_double_ended_contiguous_container@Base 15 + __sanitizer_contiguous_container_find_bad_address@Base 15 + __sanitizer_copy_contiguous_container_annotations@Base 15 + __sanitizer_cov_8bit_counters_init@Base 15 + __sanitizer_cov_bool_flag_init@Base 15 + __sanitizer_cov_dump@Base 15 + __sanitizer_cov_load16@Base 15 + __sanitizer_cov_load1@Base 15 + __sanitizer_cov_load2@Base 15 + __sanitizer_cov_load4@Base 15 + __sanitizer_cov_load8@Base 15 + __sanitizer_cov_pcs_init@Base 15 + __sanitizer_cov_reset@Base 15 + __sanitizer_cov_store16@Base 15 + __sanitizer_cov_store1@Base 15 + __sanitizer_cov_store2@Base 15 + __sanitizer_cov_store4@Base 15 + __sanitizer_cov_store8@Base 15 + __sanitizer_cov_trace_cmp1@Base 15 + __sanitizer_cov_trace_cmp2@Base 15 + __sanitizer_cov_trace_cmp4@Base 15 + __sanitizer_cov_trace_cmp8@Base 15 + __sanitizer_cov_trace_cmp@Base 15 + __sanitizer_cov_trace_const_cmp1@Base 15 + __sanitizer_cov_trace_const_cmp2@Base 15 + __sanitizer_cov_trace_const_cmp4@Base 15 + __sanitizer_cov_trace_const_cmp8@Base 15 + __sanitizer_cov_trace_div4@Base 15 + __sanitizer_cov_trace_div8@Base 15 + __sanitizer_cov_trace_gep@Base 15 + __sanitizer_cov_trace_pc_guard@Base 15 + __sanitizer_cov_trace_pc_guard_init@Base 15 + __sanitizer_cov_trace_pc_indir@Base 15 + __sanitizer_cov_trace_switch@Base 15 + __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 + __sanitizer_dump_coverage@Base 15 + __sanitizer_dump_trace_pc_guard_coverage@Base 15 + __sanitizer_finish_switch_fiber@Base 15 + __sanitizer_free_hook@Base 15 + __sanitizer_get_allocated_begin@Base 15 + __sanitizer_get_allocated_size@Base 15 + __sanitizer_get_allocated_size_fast@Base 15 + __sanitizer_get_current_allocated_bytes@Base 15 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 15 + __sanitizer_get_free_bytes@Base 15 + __sanitizer_get_heap_size@Base 15 + __sanitizer_get_module_and_offset_for_pc@Base 15 + __sanitizer_get_ownership@Base 15 + __sanitizer_get_report_path@Base 15 + __sanitizer_get_unmapped_bytes@Base 15 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 15 + __sanitizer_internal_memcpy@Base 15 + __sanitizer_internal_memmove@Base 15 + __sanitizer_internal_memset@Base 15 + __sanitizer_malloc_hook@Base 15 + __sanitizer_on_print@Base 15 + __sanitizer_print_memory_profile@Base 15 + __sanitizer_print_stack_trace@Base 15 + __sanitizer_ptr_cmp@Base 15 + __sanitizer_ptr_sub@Base 15 + __sanitizer_purge_allocator@Base 15 + __sanitizer_report_error_summary@Base 15 + __sanitizer_sandbox_on_notify@Base 15 + __sanitizer_set_death_callback@Base 15 + __sanitizer_set_report_fd@Base 15 + __sanitizer_set_report_path@Base 15 + __sanitizer_start_switch_fiber@Base 15 + __sanitizer_symbolize_global@Base 15 + __sanitizer_symbolize_pc@Base 15 + __sanitizer_syscall_post_impl_accept4@Base 15 + __sanitizer_syscall_post_impl_accept@Base 15 + __sanitizer_syscall_post_impl_access@Base 15 + __sanitizer_syscall_post_impl_acct@Base 15 + __sanitizer_syscall_post_impl_add_key@Base 15 + __sanitizer_syscall_post_impl_adjtimex@Base 15 + __sanitizer_syscall_post_impl_alarm@Base 15 + __sanitizer_syscall_post_impl_bdflush@Base 15 + __sanitizer_syscall_post_impl_bind@Base 15 + __sanitizer_syscall_post_impl_brk@Base 15 + __sanitizer_syscall_post_impl_capget@Base 15 + __sanitizer_syscall_post_impl_capset@Base 15 + __sanitizer_syscall_post_impl_chdir@Base 15 + __sanitizer_syscall_post_impl_chmod@Base 15 + __sanitizer_syscall_post_impl_chown16@Base 15 + __sanitizer_syscall_post_impl_chown@Base 15 + __sanitizer_syscall_post_impl_chroot@Base 15 + __sanitizer_syscall_post_impl_clock_adjtime@Base 15 + __sanitizer_syscall_post_impl_clock_getres@Base 15 + __sanitizer_syscall_post_impl_clock_gettime@Base 15 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_post_impl_clock_settime@Base 15 + __sanitizer_syscall_post_impl_close@Base 15 + __sanitizer_syscall_post_impl_connect@Base 15 + __sanitizer_syscall_post_impl_creat@Base 15 + __sanitizer_syscall_post_impl_delete_module@Base 15 + __sanitizer_syscall_post_impl_dup2@Base 15 + __sanitizer_syscall_post_impl_dup3@Base 15 + __sanitizer_syscall_post_impl_dup@Base 15 + __sanitizer_syscall_post_impl_epoll_create1@Base 15 + __sanitizer_syscall_post_impl_epoll_create@Base 15 + __sanitizer_syscall_post_impl_epoll_ctl@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait@Base 15 + __sanitizer_syscall_post_impl_epoll_wait@Base 15 + __sanitizer_syscall_post_impl_eventfd2@Base 15 + __sanitizer_syscall_post_impl_eventfd@Base 15 + __sanitizer_syscall_post_impl_exit@Base 15 + __sanitizer_syscall_post_impl_exit_group@Base 15 + __sanitizer_syscall_post_impl_faccessat@Base 15 + __sanitizer_syscall_post_impl_fchdir@Base 15 + __sanitizer_syscall_post_impl_fchmod@Base 15 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 15 + __sanitizer_syscall_post_impl_fchown16@Base 15 + __sanitizer_syscall_post_impl_fchown@Base 15 + __sanitizer_syscall_post_impl_fchownat@Base 15 + __sanitizer_syscall_post_impl_fcntl64@Base 15 + __sanitizer_syscall_post_impl_fcntl@Base 15 + __sanitizer_syscall_post_impl_fdatasync@Base 15 + __sanitizer_syscall_post_impl_fgetxattr@Base 15 + __sanitizer_syscall_post_impl_flistxattr@Base 15 + __sanitizer_syscall_post_impl_flock@Base 15 + __sanitizer_syscall_post_impl_fork@Base 15 + __sanitizer_syscall_post_impl_fremovexattr@Base 15 + __sanitizer_syscall_post_impl_fsetxattr@Base 15 + __sanitizer_syscall_post_impl_fstat64@Base 15 + __sanitizer_syscall_post_impl_fstat@Base 15 + __sanitizer_syscall_post_impl_fstatat64@Base 15 + __sanitizer_syscall_post_impl_fstatfs64@Base 15 + __sanitizer_syscall_post_impl_fstatfs@Base 15 + __sanitizer_syscall_post_impl_fsync@Base 15 + __sanitizer_syscall_post_impl_ftruncate@Base 15 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 15 + __sanitizer_syscall_post_impl_get_mempolicy@Base 15 + __sanitizer_syscall_post_impl_get_robust_list@Base 15 + __sanitizer_syscall_post_impl_getcpu@Base 15 + __sanitizer_syscall_post_impl_getcwd@Base 15 + __sanitizer_syscall_post_impl_getdents64@Base 15 + __sanitizer_syscall_post_impl_getdents@Base 15 + __sanitizer_syscall_post_impl_getegid16@Base 15 + __sanitizer_syscall_post_impl_getegid@Base 15 + __sanitizer_syscall_post_impl_geteuid16@Base 15 + __sanitizer_syscall_post_impl_geteuid@Base 15 + __sanitizer_syscall_post_impl_getgid16@Base 15 + __sanitizer_syscall_post_impl_getgid@Base 15 + __sanitizer_syscall_post_impl_getgroups16@Base 15 + __sanitizer_syscall_post_impl_getgroups@Base 15 + __sanitizer_syscall_post_impl_gethostname@Base 15 + __sanitizer_syscall_post_impl_getitimer@Base 15 + __sanitizer_syscall_post_impl_getpeername@Base 15 + __sanitizer_syscall_post_impl_getpgid@Base 15 + __sanitizer_syscall_post_impl_getpgrp@Base 15 + __sanitizer_syscall_post_impl_getpid@Base 15 + __sanitizer_syscall_post_impl_getppid@Base 15 + __sanitizer_syscall_post_impl_getpriority@Base 15 + __sanitizer_syscall_post_impl_getrandom@Base 15 + __sanitizer_syscall_post_impl_getresgid16@Base 15 + __sanitizer_syscall_post_impl_getresgid@Base 15 + __sanitizer_syscall_post_impl_getresuid16@Base 15 + __sanitizer_syscall_post_impl_getresuid@Base 15 + __sanitizer_syscall_post_impl_getrlimit@Base 15 + __sanitizer_syscall_post_impl_getrusage@Base 15 + __sanitizer_syscall_post_impl_getsid@Base 15 + __sanitizer_syscall_post_impl_getsockname@Base 15 + __sanitizer_syscall_post_impl_getsockopt@Base 15 + __sanitizer_syscall_post_impl_gettid@Base 15 + __sanitizer_syscall_post_impl_gettimeofday@Base 15 + __sanitizer_syscall_post_impl_getuid16@Base 15 + __sanitizer_syscall_post_impl_getuid@Base 15 + __sanitizer_syscall_post_impl_getxattr@Base 15 + __sanitizer_syscall_post_impl_init_module@Base 15 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_post_impl_inotify_init1@Base 15 + __sanitizer_syscall_post_impl_inotify_init@Base 15 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_post_impl_io_cancel@Base 15 + __sanitizer_syscall_post_impl_io_destroy@Base 15 + __sanitizer_syscall_post_impl_io_getevents@Base 15 + __sanitizer_syscall_post_impl_io_setup@Base 15 + __sanitizer_syscall_post_impl_io_submit@Base 15 + __sanitizer_syscall_post_impl_ioctl@Base 15 + __sanitizer_syscall_post_impl_ioperm@Base 15 + __sanitizer_syscall_post_impl_ioprio_get@Base 15 + __sanitizer_syscall_post_impl_ioprio_set@Base 15 + __sanitizer_syscall_post_impl_ipc@Base 15 + __sanitizer_syscall_post_impl_kexec_load@Base 15 + __sanitizer_syscall_post_impl_keyctl@Base 15 + __sanitizer_syscall_post_impl_kill@Base 15 + __sanitizer_syscall_post_impl_lchown16@Base 15 + __sanitizer_syscall_post_impl_lchown@Base 15 + __sanitizer_syscall_post_impl_lgetxattr@Base 15 + __sanitizer_syscall_post_impl_link@Base 15 + __sanitizer_syscall_post_impl_linkat@Base 15 + __sanitizer_syscall_post_impl_listen@Base 15 + __sanitizer_syscall_post_impl_listxattr@Base 15 + __sanitizer_syscall_post_impl_llistxattr@Base 15 + __sanitizer_syscall_post_impl_llseek@Base 15 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_post_impl_lremovexattr@Base 15 + __sanitizer_syscall_post_impl_lseek@Base 15 + __sanitizer_syscall_post_impl_lsetxattr@Base 15 + __sanitizer_syscall_post_impl_lstat64@Base 15 + __sanitizer_syscall_post_impl_lstat@Base 15 + __sanitizer_syscall_post_impl_madvise@Base 15 + __sanitizer_syscall_post_impl_mbind@Base 15 + __sanitizer_syscall_post_impl_migrate_pages@Base 15 + __sanitizer_syscall_post_impl_mincore@Base 15 + __sanitizer_syscall_post_impl_mkdir@Base 15 + __sanitizer_syscall_post_impl_mkdirat@Base 15 + __sanitizer_syscall_post_impl_mknod@Base 15 + __sanitizer_syscall_post_impl_mknodat@Base 15 + __sanitizer_syscall_post_impl_mlock@Base 15 + __sanitizer_syscall_post_impl_mlockall@Base 15 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_post_impl_mount@Base 15 + __sanitizer_syscall_post_impl_move_pages@Base 15 + __sanitizer_syscall_post_impl_mprotect@Base 15 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_post_impl_mq_notify@Base 15 + __sanitizer_syscall_post_impl_mq_open@Base 15 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_post_impl_mq_timedsend@Base 15 + __sanitizer_syscall_post_impl_mq_unlink@Base 15 + __sanitizer_syscall_post_impl_mremap@Base 15 + __sanitizer_syscall_post_impl_msgctl@Base 15 + __sanitizer_syscall_post_impl_msgget@Base 15 + __sanitizer_syscall_post_impl_msgrcv@Base 15 + __sanitizer_syscall_post_impl_msgsnd@Base 15 + __sanitizer_syscall_post_impl_msync@Base 15 + __sanitizer_syscall_post_impl_munlock@Base 15 + __sanitizer_syscall_post_impl_munlockall@Base 15 + __sanitizer_syscall_post_impl_munmap@Base 15 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_post_impl_nanosleep@Base 15 + __sanitizer_syscall_post_impl_newfstat@Base 15 + __sanitizer_syscall_post_impl_newfstatat@Base 15 + __sanitizer_syscall_post_impl_newlstat@Base 15 + __sanitizer_syscall_post_impl_newstat@Base 15 + __sanitizer_syscall_post_impl_newuname@Base 15 + __sanitizer_syscall_post_impl_ni_syscall@Base 15 + __sanitizer_syscall_post_impl_nice@Base 15 + __sanitizer_syscall_post_impl_old_getrlimit@Base 15 + __sanitizer_syscall_post_impl_old_mmap@Base 15 + __sanitizer_syscall_post_impl_old_readdir@Base 15 + __sanitizer_syscall_post_impl_old_select@Base 15 + __sanitizer_syscall_post_impl_oldumount@Base 15 + __sanitizer_syscall_post_impl_olduname@Base 15 + __sanitizer_syscall_post_impl_open@Base 15 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_post_impl_openat@Base 15 + __sanitizer_syscall_post_impl_pause@Base 15 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_post_impl_pciconfig_read@Base 15 + __sanitizer_syscall_post_impl_pciconfig_write@Base 15 + __sanitizer_syscall_post_impl_perf_event_open@Base 15 + __sanitizer_syscall_post_impl_personality@Base 15 + __sanitizer_syscall_post_impl_pipe2@Base 15 + __sanitizer_syscall_post_impl_pipe@Base 15 + __sanitizer_syscall_post_impl_pivot_root@Base 15 + __sanitizer_syscall_post_impl_poll@Base 15 + __sanitizer_syscall_post_impl_ppoll@Base 15 + __sanitizer_syscall_post_impl_pread64@Base 15 + __sanitizer_syscall_post_impl_preadv@Base 15 + __sanitizer_syscall_post_impl_prlimit64@Base 15 + __sanitizer_syscall_post_impl_process_vm_readv@Base 15 + __sanitizer_syscall_post_impl_process_vm_writev@Base 15 + __sanitizer_syscall_post_impl_pselect6@Base 15 + __sanitizer_syscall_post_impl_ptrace@Base 15 + __sanitizer_syscall_post_impl_pwrite64@Base 15 + __sanitizer_syscall_post_impl_pwritev@Base 15 + __sanitizer_syscall_post_impl_quotactl@Base 15 + __sanitizer_syscall_post_impl_read@Base 15 + __sanitizer_syscall_post_impl_readlink@Base 15 + __sanitizer_syscall_post_impl_readlinkat@Base 15 + __sanitizer_syscall_post_impl_readv@Base 15 + __sanitizer_syscall_post_impl_reboot@Base 15 + __sanitizer_syscall_post_impl_recv@Base 15 + __sanitizer_syscall_post_impl_recvfrom@Base 15 + __sanitizer_syscall_post_impl_recvmmsg@Base 15 + __sanitizer_syscall_post_impl_recvmsg@Base 15 + __sanitizer_syscall_post_impl_remap_file_pages@Base 15 + __sanitizer_syscall_post_impl_removexattr@Base 15 + __sanitizer_syscall_post_impl_rename@Base 15 + __sanitizer_syscall_post_impl_renameat@Base 15 + __sanitizer_syscall_post_impl_request_key@Base 15 + __sanitizer_syscall_post_impl_restart_syscall@Base 15 + __sanitizer_syscall_post_impl_rmdir@Base 15 + __sanitizer_syscall_post_impl_rt_sigaction@Base 15 + __sanitizer_syscall_post_impl_rt_sigpending@Base 15 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_getparam@Base 15 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_setparam@Base 15 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_yield@Base 15 + __sanitizer_syscall_post_impl_select@Base 15 + __sanitizer_syscall_post_impl_semctl@Base 15 + __sanitizer_syscall_post_impl_semget@Base 15 + __sanitizer_syscall_post_impl_semop@Base 15 + __sanitizer_syscall_post_impl_semtimedop@Base 15 + __sanitizer_syscall_post_impl_send@Base 15 + __sanitizer_syscall_post_impl_sendfile64@Base 15 + __sanitizer_syscall_post_impl_sendfile@Base 15 + __sanitizer_syscall_post_impl_sendmmsg@Base 15 + __sanitizer_syscall_post_impl_sendmsg@Base 15 + __sanitizer_syscall_post_impl_sendto@Base 15 + __sanitizer_syscall_post_impl_set_mempolicy@Base 15 + __sanitizer_syscall_post_impl_set_robust_list@Base 15 + __sanitizer_syscall_post_impl_set_tid_address@Base 15 + __sanitizer_syscall_post_impl_setdomainname@Base 15 + __sanitizer_syscall_post_impl_setfsgid16@Base 15 + __sanitizer_syscall_post_impl_setfsgid@Base 15 + __sanitizer_syscall_post_impl_setfsuid16@Base 15 + __sanitizer_syscall_post_impl_setfsuid@Base 15 + __sanitizer_syscall_post_impl_setgid16@Base 15 + __sanitizer_syscall_post_impl_setgid@Base 15 + __sanitizer_syscall_post_impl_setgroups16@Base 15 + __sanitizer_syscall_post_impl_setgroups@Base 15 + __sanitizer_syscall_post_impl_sethostname@Base 15 + __sanitizer_syscall_post_impl_setitimer@Base 15 + __sanitizer_syscall_post_impl_setns@Base 15 + __sanitizer_syscall_post_impl_setpgid@Base 15 + __sanitizer_syscall_post_impl_setpriority@Base 15 + __sanitizer_syscall_post_impl_setregid16@Base 15 + __sanitizer_syscall_post_impl_setregid@Base 15 + __sanitizer_syscall_post_impl_setresgid16@Base 15 + __sanitizer_syscall_post_impl_setresgid@Base 15 + __sanitizer_syscall_post_impl_setresuid16@Base 15 + __sanitizer_syscall_post_impl_setresuid@Base 15 + __sanitizer_syscall_post_impl_setreuid16@Base 15 + __sanitizer_syscall_post_impl_setreuid@Base 15 + __sanitizer_syscall_post_impl_setrlimit@Base 15 + __sanitizer_syscall_post_impl_setsid@Base 15 + __sanitizer_syscall_post_impl_setsockopt@Base 15 + __sanitizer_syscall_post_impl_settimeofday@Base 15 + __sanitizer_syscall_post_impl_setuid16@Base 15 + __sanitizer_syscall_post_impl_setuid@Base 15 + __sanitizer_syscall_post_impl_setxattr@Base 15 + __sanitizer_syscall_post_impl_sgetmask@Base 15 + __sanitizer_syscall_post_impl_shmat@Base 15 + __sanitizer_syscall_post_impl_shmctl@Base 15 + __sanitizer_syscall_post_impl_shmdt@Base 15 + __sanitizer_syscall_post_impl_shmget@Base 15 + __sanitizer_syscall_post_impl_shutdown@Base 15 + __sanitizer_syscall_post_impl_sigaction@Base 15 + __sanitizer_syscall_post_impl_sigaltstack@Base 15 + __sanitizer_syscall_post_impl_signal@Base 15 + __sanitizer_syscall_post_impl_signalfd4@Base 15 + __sanitizer_syscall_post_impl_signalfd@Base 15 + __sanitizer_syscall_post_impl_sigpending@Base 15 + __sanitizer_syscall_post_impl_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_socket@Base 15 + __sanitizer_syscall_post_impl_socketcall@Base 15 + __sanitizer_syscall_post_impl_socketpair@Base 15 + __sanitizer_syscall_post_impl_splice@Base 15 + __sanitizer_syscall_post_impl_spu_create@Base 15 + __sanitizer_syscall_post_impl_spu_run@Base 15 + __sanitizer_syscall_post_impl_ssetmask@Base 15 + __sanitizer_syscall_post_impl_stat64@Base 15 + __sanitizer_syscall_post_impl_stat@Base 15 + __sanitizer_syscall_post_impl_statfs64@Base 15 + __sanitizer_syscall_post_impl_statfs@Base 15 + __sanitizer_syscall_post_impl_stime@Base 15 + __sanitizer_syscall_post_impl_swapoff@Base 15 + __sanitizer_syscall_post_impl_swapon@Base 15 + __sanitizer_syscall_post_impl_symlink@Base 15 + __sanitizer_syscall_post_impl_symlinkat@Base 15 + __sanitizer_syscall_post_impl_sync@Base 15 + __sanitizer_syscall_post_impl_syncfs@Base 15 + __sanitizer_syscall_post_impl_sysctl@Base 15 + __sanitizer_syscall_post_impl_sysfs@Base 15 + __sanitizer_syscall_post_impl_sysinfo@Base 15 + __sanitizer_syscall_post_impl_syslog@Base 15 + __sanitizer_syscall_post_impl_tee@Base 15 + __sanitizer_syscall_post_impl_tgkill@Base 15 + __sanitizer_syscall_post_impl_time@Base 15 + __sanitizer_syscall_post_impl_timer_create@Base 15 + __sanitizer_syscall_post_impl_timer_delete@Base 15 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_post_impl_timer_gettime@Base 15 + __sanitizer_syscall_post_impl_timer_settime@Base 15 + __sanitizer_syscall_post_impl_timerfd_create@Base 15 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_post_impl_timerfd_settime@Base 15 + __sanitizer_syscall_post_impl_times@Base 15 + __sanitizer_syscall_post_impl_tkill@Base 15 + __sanitizer_syscall_post_impl_truncate@Base 15 + __sanitizer_syscall_post_impl_umask@Base 15 + __sanitizer_syscall_post_impl_umount@Base 15 + __sanitizer_syscall_post_impl_uname@Base 15 + __sanitizer_syscall_post_impl_unlink@Base 15 + __sanitizer_syscall_post_impl_unlinkat@Base 15 + __sanitizer_syscall_post_impl_unshare@Base 15 + __sanitizer_syscall_post_impl_uselib@Base 15 + __sanitizer_syscall_post_impl_ustat@Base 15 + __sanitizer_syscall_post_impl_utime@Base 15 + __sanitizer_syscall_post_impl_utimensat@Base 15 + __sanitizer_syscall_post_impl_utimes@Base 15 + __sanitizer_syscall_post_impl_vfork@Base 15 + __sanitizer_syscall_post_impl_vhangup@Base 15 + __sanitizer_syscall_post_impl_vmsplice@Base 15 + __sanitizer_syscall_post_impl_wait4@Base 15 + __sanitizer_syscall_post_impl_waitid@Base 15 + __sanitizer_syscall_post_impl_waitpid@Base 15 + __sanitizer_syscall_post_impl_write@Base 15 + __sanitizer_syscall_post_impl_writev@Base 15 + __sanitizer_syscall_pre_impl_accept4@Base 15 + __sanitizer_syscall_pre_impl_accept@Base 15 + __sanitizer_syscall_pre_impl_access@Base 15 + __sanitizer_syscall_pre_impl_acct@Base 15 + __sanitizer_syscall_pre_impl_add_key@Base 15 + __sanitizer_syscall_pre_impl_adjtimex@Base 15 + __sanitizer_syscall_pre_impl_alarm@Base 15 + __sanitizer_syscall_pre_impl_bdflush@Base 15 + __sanitizer_syscall_pre_impl_bind@Base 15 + __sanitizer_syscall_pre_impl_brk@Base 15 + __sanitizer_syscall_pre_impl_capget@Base 15 + __sanitizer_syscall_pre_impl_capset@Base 15 + __sanitizer_syscall_pre_impl_chdir@Base 15 + __sanitizer_syscall_pre_impl_chmod@Base 15 + __sanitizer_syscall_pre_impl_chown16@Base 15 + __sanitizer_syscall_pre_impl_chown@Base 15 + __sanitizer_syscall_pre_impl_chroot@Base 15 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 + __sanitizer_syscall_pre_impl_clock_getres@Base 15 + __sanitizer_syscall_pre_impl_clock_gettime@Base 15 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_clock_settime@Base 15 + __sanitizer_syscall_pre_impl_close@Base 15 + __sanitizer_syscall_pre_impl_connect@Base 15 + __sanitizer_syscall_pre_impl_creat@Base 15 + __sanitizer_syscall_pre_impl_delete_module@Base 15 + __sanitizer_syscall_pre_impl_dup2@Base 15 + __sanitizer_syscall_pre_impl_dup3@Base 15 + __sanitizer_syscall_pre_impl_dup@Base 15 + __sanitizer_syscall_pre_impl_epoll_create1@Base 15 + __sanitizer_syscall_pre_impl_epoll_create@Base 15 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 + __sanitizer_syscall_pre_impl_epoll_wait@Base 15 + __sanitizer_syscall_pre_impl_eventfd2@Base 15 + __sanitizer_syscall_pre_impl_eventfd@Base 15 + __sanitizer_syscall_pre_impl_exit@Base 15 + __sanitizer_syscall_pre_impl_exit_group@Base 15 + __sanitizer_syscall_pre_impl_faccessat@Base 15 + __sanitizer_syscall_pre_impl_fchdir@Base 15 + __sanitizer_syscall_pre_impl_fchmod@Base 15 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 15 + __sanitizer_syscall_pre_impl_fchown16@Base 15 + __sanitizer_syscall_pre_impl_fchown@Base 15 + __sanitizer_syscall_pre_impl_fchownat@Base 15 + __sanitizer_syscall_pre_impl_fcntl64@Base 15 + __sanitizer_syscall_pre_impl_fcntl@Base 15 + __sanitizer_syscall_pre_impl_fdatasync@Base 15 + __sanitizer_syscall_pre_impl_fgetxattr@Base 15 + __sanitizer_syscall_pre_impl_flistxattr@Base 15 + __sanitizer_syscall_pre_impl_flock@Base 15 + __sanitizer_syscall_pre_impl_fork@Base 15 + __sanitizer_syscall_pre_impl_fremovexattr@Base 15 + __sanitizer_syscall_pre_impl_fsetxattr@Base 15 + __sanitizer_syscall_pre_impl_fstat64@Base 15 + __sanitizer_syscall_pre_impl_fstat@Base 15 + __sanitizer_syscall_pre_impl_fstatat64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs@Base 15 + __sanitizer_syscall_pre_impl_fsync@Base 15 + __sanitizer_syscall_pre_impl_ftruncate@Base 15 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 15 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_get_robust_list@Base 15 + __sanitizer_syscall_pre_impl_getcpu@Base 15 + __sanitizer_syscall_pre_impl_getcwd@Base 15 + __sanitizer_syscall_pre_impl_getdents64@Base 15 + __sanitizer_syscall_pre_impl_getdents@Base 15 + __sanitizer_syscall_pre_impl_getegid16@Base 15 + __sanitizer_syscall_pre_impl_getegid@Base 15 + __sanitizer_syscall_pre_impl_geteuid16@Base 15 + __sanitizer_syscall_pre_impl_geteuid@Base 15 + __sanitizer_syscall_pre_impl_getgid16@Base 15 + __sanitizer_syscall_pre_impl_getgid@Base 15 + __sanitizer_syscall_pre_impl_getgroups16@Base 15 + __sanitizer_syscall_pre_impl_getgroups@Base 15 + __sanitizer_syscall_pre_impl_gethostname@Base 15 + __sanitizer_syscall_pre_impl_getitimer@Base 15 + __sanitizer_syscall_pre_impl_getpeername@Base 15 + __sanitizer_syscall_pre_impl_getpgid@Base 15 + __sanitizer_syscall_pre_impl_getpgrp@Base 15 + __sanitizer_syscall_pre_impl_getpid@Base 15 + __sanitizer_syscall_pre_impl_getppid@Base 15 + __sanitizer_syscall_pre_impl_getpriority@Base 15 + __sanitizer_syscall_pre_impl_getrandom@Base 15 + __sanitizer_syscall_pre_impl_getresgid16@Base 15 + __sanitizer_syscall_pre_impl_getresgid@Base 15 + __sanitizer_syscall_pre_impl_getresuid16@Base 15 + __sanitizer_syscall_pre_impl_getresuid@Base 15 + __sanitizer_syscall_pre_impl_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_getrusage@Base 15 + __sanitizer_syscall_pre_impl_getsid@Base 15 + __sanitizer_syscall_pre_impl_getsockname@Base 15 + __sanitizer_syscall_pre_impl_getsockopt@Base 15 + __sanitizer_syscall_pre_impl_gettid@Base 15 + __sanitizer_syscall_pre_impl_gettimeofday@Base 15 + __sanitizer_syscall_pre_impl_getuid16@Base 15 + __sanitizer_syscall_pre_impl_getuid@Base 15 + __sanitizer_syscall_pre_impl_getxattr@Base 15 + __sanitizer_syscall_pre_impl_init_module@Base 15 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_pre_impl_inotify_init1@Base 15 + __sanitizer_syscall_pre_impl_inotify_init@Base 15 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_pre_impl_io_cancel@Base 15 + __sanitizer_syscall_pre_impl_io_destroy@Base 15 + __sanitizer_syscall_pre_impl_io_getevents@Base 15 + __sanitizer_syscall_pre_impl_io_setup@Base 15 + __sanitizer_syscall_pre_impl_io_submit@Base 15 + __sanitizer_syscall_pre_impl_ioctl@Base 15 + __sanitizer_syscall_pre_impl_ioperm@Base 15 + __sanitizer_syscall_pre_impl_ioprio_get@Base 15 + __sanitizer_syscall_pre_impl_ioprio_set@Base 15 + __sanitizer_syscall_pre_impl_ipc@Base 15 + __sanitizer_syscall_pre_impl_kexec_load@Base 15 + __sanitizer_syscall_pre_impl_keyctl@Base 15 + __sanitizer_syscall_pre_impl_kill@Base 15 + __sanitizer_syscall_pre_impl_lchown16@Base 15 + __sanitizer_syscall_pre_impl_lchown@Base 15 + __sanitizer_syscall_pre_impl_lgetxattr@Base 15 + __sanitizer_syscall_pre_impl_link@Base 15 + __sanitizer_syscall_pre_impl_linkat@Base 15 + __sanitizer_syscall_pre_impl_listen@Base 15 + __sanitizer_syscall_pre_impl_listxattr@Base 15 + __sanitizer_syscall_pre_impl_llistxattr@Base 15 + __sanitizer_syscall_pre_impl_llseek@Base 15 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_pre_impl_lremovexattr@Base 15 + __sanitizer_syscall_pre_impl_lseek@Base 15 + __sanitizer_syscall_pre_impl_lsetxattr@Base 15 + __sanitizer_syscall_pre_impl_lstat64@Base 15 + __sanitizer_syscall_pre_impl_lstat@Base 15 + __sanitizer_syscall_pre_impl_madvise@Base 15 + __sanitizer_syscall_pre_impl_mbind@Base 15 + __sanitizer_syscall_pre_impl_migrate_pages@Base 15 + __sanitizer_syscall_pre_impl_mincore@Base 15 + __sanitizer_syscall_pre_impl_mkdir@Base 15 + __sanitizer_syscall_pre_impl_mkdirat@Base 15 + __sanitizer_syscall_pre_impl_mknod@Base 15 + __sanitizer_syscall_pre_impl_mknodat@Base 15 + __sanitizer_syscall_pre_impl_mlock@Base 15 + __sanitizer_syscall_pre_impl_mlockall@Base 15 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_pre_impl_mount@Base 15 + __sanitizer_syscall_pre_impl_move_pages@Base 15 + __sanitizer_syscall_pre_impl_mprotect@Base 15 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_pre_impl_mq_notify@Base 15 + __sanitizer_syscall_pre_impl_mq_open@Base 15 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 + __sanitizer_syscall_pre_impl_mq_unlink@Base 15 + __sanitizer_syscall_pre_impl_mremap@Base 15 + __sanitizer_syscall_pre_impl_msgctl@Base 15 + __sanitizer_syscall_pre_impl_msgget@Base 15 + __sanitizer_syscall_pre_impl_msgrcv@Base 15 + __sanitizer_syscall_pre_impl_msgsnd@Base 15 + __sanitizer_syscall_pre_impl_msync@Base 15 + __sanitizer_syscall_pre_impl_munlock@Base 15 + __sanitizer_syscall_pre_impl_munlockall@Base 15 + __sanitizer_syscall_pre_impl_munmap@Base 15 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_pre_impl_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_newfstat@Base 15 + __sanitizer_syscall_pre_impl_newfstatat@Base 15 + __sanitizer_syscall_pre_impl_newlstat@Base 15 + __sanitizer_syscall_pre_impl_newstat@Base 15 + __sanitizer_syscall_pre_impl_newuname@Base 15 + __sanitizer_syscall_pre_impl_ni_syscall@Base 15 + __sanitizer_syscall_pre_impl_nice@Base 15 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_old_mmap@Base 15 + __sanitizer_syscall_pre_impl_old_readdir@Base 15 + __sanitizer_syscall_pre_impl_old_select@Base 15 + __sanitizer_syscall_pre_impl_oldumount@Base 15 + __sanitizer_syscall_pre_impl_olduname@Base 15 + __sanitizer_syscall_pre_impl_open@Base 15 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_pre_impl_openat@Base 15 + __sanitizer_syscall_pre_impl_pause@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 + __sanitizer_syscall_pre_impl_perf_event_open@Base 15 + __sanitizer_syscall_pre_impl_personality@Base 15 + __sanitizer_syscall_pre_impl_pipe2@Base 15 + __sanitizer_syscall_pre_impl_pipe@Base 15 + __sanitizer_syscall_pre_impl_pivot_root@Base 15 + __sanitizer_syscall_pre_impl_poll@Base 15 + __sanitizer_syscall_pre_impl_ppoll@Base 15 + __sanitizer_syscall_pre_impl_pread64@Base 15 + __sanitizer_syscall_pre_impl_preadv@Base 15 + __sanitizer_syscall_pre_impl_prlimit64@Base 15 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 + __sanitizer_syscall_pre_impl_pselect6@Base 15 + __sanitizer_syscall_pre_impl_ptrace@Base 15 + __sanitizer_syscall_pre_impl_pwrite64@Base 15 + __sanitizer_syscall_pre_impl_pwritev@Base 15 + __sanitizer_syscall_pre_impl_quotactl@Base 15 + __sanitizer_syscall_pre_impl_read@Base 15 + __sanitizer_syscall_pre_impl_readlink@Base 15 + __sanitizer_syscall_pre_impl_readlinkat@Base 15 + __sanitizer_syscall_pre_impl_readv@Base 15 + __sanitizer_syscall_pre_impl_reboot@Base 15 + __sanitizer_syscall_pre_impl_recv@Base 15 + __sanitizer_syscall_pre_impl_recvfrom@Base 15 + __sanitizer_syscall_pre_impl_recvmmsg@Base 15 + __sanitizer_syscall_pre_impl_recvmsg@Base 15 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 + __sanitizer_syscall_pre_impl_removexattr@Base 15 + __sanitizer_syscall_pre_impl_rename@Base 15 + __sanitizer_syscall_pre_impl_renameat@Base 15 + __sanitizer_syscall_pre_impl_request_key@Base 15 + __sanitizer_syscall_pre_impl_restart_syscall@Base 15 + __sanitizer_syscall_pre_impl_rmdir@Base 15 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_getparam@Base 15 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_setparam@Base 15 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_yield@Base 15 + __sanitizer_syscall_pre_impl_select@Base 15 + __sanitizer_syscall_pre_impl_semctl@Base 15 + __sanitizer_syscall_pre_impl_semget@Base 15 + __sanitizer_syscall_pre_impl_semop@Base 15 + __sanitizer_syscall_pre_impl_semtimedop@Base 15 + __sanitizer_syscall_pre_impl_send@Base 15 + __sanitizer_syscall_pre_impl_sendfile64@Base 15 + __sanitizer_syscall_pre_impl_sendfile@Base 15 + __sanitizer_syscall_pre_impl_sendmmsg@Base 15 + __sanitizer_syscall_pre_impl_sendmsg@Base 15 + __sanitizer_syscall_pre_impl_sendto@Base 15 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_set_robust_list@Base 15 + __sanitizer_syscall_pre_impl_set_tid_address@Base 15 + __sanitizer_syscall_pre_impl_setdomainname@Base 15 + __sanitizer_syscall_pre_impl_setfsgid16@Base 15 + __sanitizer_syscall_pre_impl_setfsgid@Base 15 + __sanitizer_syscall_pre_impl_setfsuid16@Base 15 + __sanitizer_syscall_pre_impl_setfsuid@Base 15 + __sanitizer_syscall_pre_impl_setgid16@Base 15 + __sanitizer_syscall_pre_impl_setgid@Base 15 + __sanitizer_syscall_pre_impl_setgroups16@Base 15 + __sanitizer_syscall_pre_impl_setgroups@Base 15 + __sanitizer_syscall_pre_impl_sethostname@Base 15 + __sanitizer_syscall_pre_impl_setitimer@Base 15 + __sanitizer_syscall_pre_impl_setns@Base 15 + __sanitizer_syscall_pre_impl_setpgid@Base 15 + __sanitizer_syscall_pre_impl_setpriority@Base 15 + __sanitizer_syscall_pre_impl_setregid16@Base 15 + __sanitizer_syscall_pre_impl_setregid@Base 15 + __sanitizer_syscall_pre_impl_setresgid16@Base 15 + __sanitizer_syscall_pre_impl_setresgid@Base 15 + __sanitizer_syscall_pre_impl_setresuid16@Base 15 + __sanitizer_syscall_pre_impl_setresuid@Base 15 + __sanitizer_syscall_pre_impl_setreuid16@Base 15 + __sanitizer_syscall_pre_impl_setreuid@Base 15 + __sanitizer_syscall_pre_impl_setrlimit@Base 15 + __sanitizer_syscall_pre_impl_setsid@Base 15 + __sanitizer_syscall_pre_impl_setsockopt@Base 15 + __sanitizer_syscall_pre_impl_settimeofday@Base 15 + __sanitizer_syscall_pre_impl_setuid16@Base 15 + __sanitizer_syscall_pre_impl_setuid@Base 15 + __sanitizer_syscall_pre_impl_setxattr@Base 15 + __sanitizer_syscall_pre_impl_sgetmask@Base 15 + __sanitizer_syscall_pre_impl_shmat@Base 15 + __sanitizer_syscall_pre_impl_shmctl@Base 15 + __sanitizer_syscall_pre_impl_shmdt@Base 15 + __sanitizer_syscall_pre_impl_shmget@Base 15 + __sanitizer_syscall_pre_impl_shutdown@Base 15 + __sanitizer_syscall_pre_impl_sigaction@Base 15 + __sanitizer_syscall_pre_impl_sigaltstack@Base 15 + __sanitizer_syscall_pre_impl_signal@Base 15 + __sanitizer_syscall_pre_impl_signalfd4@Base 15 + __sanitizer_syscall_pre_impl_signalfd@Base 15 + __sanitizer_syscall_pre_impl_sigpending@Base 15 + __sanitizer_syscall_pre_impl_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_socket@Base 15 + __sanitizer_syscall_pre_impl_socketcall@Base 15 + __sanitizer_syscall_pre_impl_socketpair@Base 15 + __sanitizer_syscall_pre_impl_splice@Base 15 + __sanitizer_syscall_pre_impl_spu_create@Base 15 + __sanitizer_syscall_pre_impl_spu_run@Base 15 + __sanitizer_syscall_pre_impl_ssetmask@Base 15 + __sanitizer_syscall_pre_impl_stat64@Base 15 + __sanitizer_syscall_pre_impl_stat@Base 15 + __sanitizer_syscall_pre_impl_statfs64@Base 15 + __sanitizer_syscall_pre_impl_statfs@Base 15 + __sanitizer_syscall_pre_impl_stime@Base 15 + __sanitizer_syscall_pre_impl_swapoff@Base 15 + __sanitizer_syscall_pre_impl_swapon@Base 15 + __sanitizer_syscall_pre_impl_symlink@Base 15 + __sanitizer_syscall_pre_impl_symlinkat@Base 15 + __sanitizer_syscall_pre_impl_sync@Base 15 + __sanitizer_syscall_pre_impl_syncfs@Base 15 + __sanitizer_syscall_pre_impl_sysctl@Base 15 + __sanitizer_syscall_pre_impl_sysfs@Base 15 + __sanitizer_syscall_pre_impl_sysinfo@Base 15 + __sanitizer_syscall_pre_impl_syslog@Base 15 + __sanitizer_syscall_pre_impl_tee@Base 15 + __sanitizer_syscall_pre_impl_tgkill@Base 15 + __sanitizer_syscall_pre_impl_time@Base 15 + __sanitizer_syscall_pre_impl_timer_create@Base 15 + __sanitizer_syscall_pre_impl_timer_delete@Base 15 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_pre_impl_timer_gettime@Base 15 + __sanitizer_syscall_pre_impl_timer_settime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_create@Base 15 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 + __sanitizer_syscall_pre_impl_times@Base 15 + __sanitizer_syscall_pre_impl_tkill@Base 15 + __sanitizer_syscall_pre_impl_truncate@Base 15 + __sanitizer_syscall_pre_impl_umask@Base 15 + __sanitizer_syscall_pre_impl_umount@Base 15 + __sanitizer_syscall_pre_impl_uname@Base 15 + __sanitizer_syscall_pre_impl_unlink@Base 15 + __sanitizer_syscall_pre_impl_unlinkat@Base 15 + __sanitizer_syscall_pre_impl_unshare@Base 15 + __sanitizer_syscall_pre_impl_uselib@Base 15 + __sanitizer_syscall_pre_impl_ustat@Base 15 + __sanitizer_syscall_pre_impl_utime@Base 15 + __sanitizer_syscall_pre_impl_utimensat@Base 15 + __sanitizer_syscall_pre_impl_utimes@Base 15 + __sanitizer_syscall_pre_impl_vfork@Base 15 + __sanitizer_syscall_pre_impl_vhangup@Base 15 + __sanitizer_syscall_pre_impl_vmsplice@Base 15 + __sanitizer_syscall_pre_impl_wait4@Base 15 + __sanitizer_syscall_pre_impl_waitid@Base 15 + __sanitizer_syscall_pre_impl_waitpid@Base 15 + __sanitizer_syscall_pre_impl_write@Base 15 + __sanitizer_syscall_pre_impl_writev@Base 15 + __sanitizer_unaligned_load16@Base 15 + __sanitizer_unaligned_load32@Base 15 + __sanitizer_unaligned_load64@Base 15 + __sanitizer_unaligned_store16@Base 15 + __sanitizer_unaligned_store32@Base 15 + __sanitizer_unaligned_store64@Base 15 + __sanitizer_verify_contiguous_container@Base 15 + __sanitizer_verify_double_ended_contiguous_container@Base 15 + __sanitizer_weak_hook_memcmp@Base 15 + __sanitizer_weak_hook_memmem@Base 15 + __sanitizer_weak_hook_strcasecmp@Base 15 + __sanitizer_weak_hook_strcasestr@Base 15 + __sanitizer_weak_hook_strcmp@Base 15 + __sanitizer_weak_hook_strncasecmp@Base 15 + __sanitizer_weak_hook_strncmp@Base 15 + __sanitizer_weak_hook_strstr@Base 15 + __snprintf_chk@Base 15 + __sprintf_chk@Base 15 + __strdup@Base 15 + __strndup@Base 15 + __strxfrm_l@Base 15 + __tls_get_addr@Base 15 + __uflow@Base 15 + __underflow@Base 15 + __vsnprintf_chk@Base 15 + __vsprintf_chk@Base 15 + __wcsxfrm_l@Base 15 + __woverflow@Base 15 + __wuflow@Base 15 + __wunderflow@Base 15 + __xpg_strerror_r@Base 15 + __xstat64@Base 15 + __xstat@Base 15 + _exit@Base 15 + _longjmp@Base 15 + _obstack_begin@Base 15 + _obstack_begin_1@Base 15 + _obstack_newchunk@Base 15 + accept4@Base 15 + accept@Base 15 + aligned_alloc@Base 15 + argp_parse@Base 15 + asctime@Base 15 + asctime_r@Base 15 + asprintf@Base 15 + atoi@Base 15 + atol@Base 15 + atoll@Base 15 + backtrace@Base 15 + backtrace_symbols@Base 15 + bcmp@Base 15 + bsearch@Base 15 + bzero@Base 15 + calloc@Base 15 + canonicalize_file_name@Base 15 + capget@Base 15 + capset@Base 15 + cfree@Base 15 + clock_getcpuclockid@Base 15 + clock_getres@Base 15 + clock_gettime@Base 15 + clock_settime@Base 15 + confstr@Base 15 + ctermid@Base 15 + ctime@Base 15 + ctime_r@Base 15 + dlclose@Base 15 + dlopen@Base 15 + dn_comp@Base 15 + dn_expand@Base 15 + drand48_r@Base 15 + endgrent@Base 15 + endpwent@Base 15 + ether_aton@Base 15 + ether_aton_r@Base 15 + ether_hostton@Base 15 + ether_line@Base 15 + ether_ntoa@Base 15 + ether_ntoa_r@Base 15 + ether_ntohost@Base 15 + eventfd_read@Base 15 + eventfd_write@Base 15 + fclose@Base 15 + fdopen@Base 15 + fflush@Base 15 + fgetgrent@Base 15 + fgetgrent_r@Base 15 + fgetpwent@Base 15 + fgetpwent_r@Base 15 + fgets@Base 15 + fgetxattr@Base 15 + flistxattr@Base 15 + fmemopen@Base 15 + fopen64@Base 15 + fopen@Base 15 + fopencookie@Base 15 + fprintf@Base 15 + fputs@Base 15 + fread@Base 15 + free@Base 15 + freopen64@Base 15 + freopen@Base 15 + frexp@Base 15 + frexpf@Base 15 + frexpl@Base 15 + fscanf@Base 15 + fstatfs64@Base 15 + fstatfs@Base 15 + fstatvfs64@Base 15 + fstatvfs@Base 15 + ftime@Base 15 + fwrite@Base 15 + get_current_dir_name@Base 15 + getaddrinfo@Base 15 + getcwd@Base 15 + getdelim@Base 15 + getentropy@Base 15 + getgrent@Base 15 + getgrent_r@Base 15 + getgrgid@Base 15 + getgrgid_r@Base 15 + getgrnam@Base 15 + getgrnam_r@Base 15 + getgrouplist@Base 15 + getgroups@Base 15 + gethostbyaddr@Base 15 + gethostbyaddr_r@Base 15 + gethostbyname2@Base 15 + gethostbyname2_r@Base 15 + gethostbyname@Base 15 + gethostbyname_r@Base 15 + gethostent@Base 15 + gethostent_r@Base 15 + getifaddrs@Base 15 + getitimer@Base 15 + getline@Base 15 + getloadavg@Base 15 + getmntent@Base 15 + getmntent_r@Base 15 + getnameinfo@Base 15 + getnetbyaddr@Base 15 + getnetbyname@Base 15 + getnetent@Base 15 + getpass@Base 15 + getpeername@Base 15 + getprotobyname@Base 15 + getprotobyname_r@Base 15 + getprotobynumber@Base 15 + getprotobynumber_r@Base 15 + getprotoent@Base 15 + getprotoent_r@Base 15 + getpwent@Base 15 + getpwent_r@Base 15 + getpwnam@Base 15 + getpwnam_r@Base 15 + getpwuid@Base 15 + getpwuid_r@Base 15 + getrandom@Base 15 + getresgid@Base 15 + getresuid@Base 15 + getsockname@Base 15 + getsockopt@Base 15 + getusershell@Base 15 + getutent@Base 15 + getutid@Base 15 + getutline@Base 15 + getutxent@Base 15 + getutxid@Base 15 + getutxline@Base 15 + getxattr@Base 15 + glob64@Base 15 + glob@Base 15 + gmtime@Base 15 + gmtime_r@Base 15 + iconv@Base 15 + if_indextoname@Base 15 + if_nametoindex@Base 15 + index@Base 15 + inet_aton@Base 15 + inet_ntop@Base 15 + inet_pton@Base 15 + initgroups@Base 15 + ioctl@Base 15 + lgamma@Base 15 + lgamma_r@Base 15 + lgammaf@Base 15 + lgammaf_r@Base 15 + lgammal@Base 15 + lgammal_r@Base 15 + lgetxattr@Base 15 + listxattr@Base 15 + llistxattr@Base 15 + localtime@Base 15 + localtime_r@Base 15 + longjmp@Base 15 + lrand48_r@Base 15 + lstat64@Base 15 + lstat@Base 15 + makecontext@Base 15 + mallinfo@Base 15 + malloc@Base 15 + malloc_stats@Base 15 + malloc_usable_size@Base 15 + mallopt@Base 15 + mbsnrtowcs@Base 15 + mbsrtowcs@Base 15 + mbstowcs@Base 15 + mcheck@Base 15 + mcheck_pedantic@Base 15 + memalign@Base 15 + memchr@Base 15 + memcmp@Base 15 + memcpy@Base 15 + memmem@Base 15 + memmove@Base 15 + memrchr@Base 15 + memset@Base 15 + mincore@Base 15 + mktime@Base 15 + mlock@Base 15 + mlockall@Base 15 + mmap64@Base 15 + mmap@Base 15 + modf@Base 15 + modff@Base 15 + modfl@Base 15 + mprobe@Base 15 + mprotect@Base 15 + msgrcv@Base 15 + msgsnd@Base 15 + munlock@Base 15 + munlockall@Base 15 + munmap@Base 15 + name_to_handle_at@Base 15 + open_by_handle_at@Base 15 + open_memstream@Base 15 + open_wmemstream@Base 15 + opendir@Base 15 + pclose@Base 15 + poll@Base 15 + popen@Base 15 + posix_memalign@Base 15 + posix_spawn@Base 15 + posix_spawnp@Base 15 + ppoll@Base 15 + prctl@Base 15 + pread64@Base 15 + pread@Base 15 + preadv2@Base 15 + preadv64@Base 15 + preadv@Base 15 + printf@Base 15 + process_vm_readv@Base 15 + process_vm_writev@Base 15 + pthread_attr_getaffinity_np@Base 15 + pthread_attr_getdetachstate@Base 15 + pthread_attr_getguardsize@Base 15 + pthread_attr_getinheritsched@Base 15 + pthread_attr_getschedparam@Base 15 + pthread_attr_getschedpolicy@Base 15 + pthread_attr_getscope@Base 15 + pthread_attr_getstack@Base 15 + pthread_attr_getstacksize@Base 15 + pthread_barrierattr_getpshared@Base 15 + pthread_condattr_getclock@Base 15 + pthread_condattr_getpshared@Base 15 + pthread_create@Base 15 + pthread_detach@Base 15 + pthread_exit@Base 15 + pthread_getaffinity_np@Base 15 + pthread_getcpuclockid@Base 15 + pthread_getname_np@Base 15 + pthread_getschedparam@Base 15 + pthread_join@Base 15 + pthread_mutexattr_getprioceiling@Base 15 + pthread_mutexattr_getprotocol@Base 15 + pthread_mutexattr_getpshared@Base 15 + pthread_mutexattr_getrobust@Base 15 + pthread_mutexattr_getrobust_np@Base 15 + pthread_mutexattr_gettype@Base 15 + pthread_rwlockattr_getkind_np@Base 15 + pthread_rwlockattr_getpshared@Base 15 + pthread_setcancelstate@Base 15 + pthread_setcanceltype@Base 15 + pthread_setname_np@Base 15 + pthread_sigmask@Base 15 + pthread_timedjoin_np@Base 15 + pthread_tryjoin_np@Base 15 + ptrace@Base 15 + ptsname@Base 15 + ptsname_r@Base 15 + puts@Base 15 + pututxline@Base 15 + pvalloc@Base 15 + pwrite64@Base 15 + pwrite@Base 15 + pwritev2@Base 15 + pwritev64@Base 15 + pwritev@Base 15 + qsort@Base 15 + qsort_r@Base 15 + rand_r@Base 15 + random_r@Base 15 + read@Base 15 + readdir64@Base 15 + readdir64_r@Base 15 + readdir@Base 15 + readdir_r@Base 15 + readlink@Base 15 + readlinkat@Base 15 + readv@Base 15 + realloc@Base 15 + reallocarray@Base 15 + realpath@Base 15 + recv@Base 15 + recvfrom@Base 15 + recvmmsg@Base 15 + recvmsg@Base 15 + regcomp@Base 15 + regerror@Base 15 + regexec@Base 15 + regfree@Base 15 + remquo@Base 15 + remquof@Base 15 + remquol@Base 15 + scandir64@Base 15 + scandir@Base 15 + scanf@Base 15 + sched_getaffinity@Base 15 + sched_getparam@Base 15 + sem_destroy@Base 15 + sem_getvalue@Base 15 + sem_init@Base 15 + sem_open@Base 15 + sem_post@Base 15 + sem_timedwait@Base 15 + sem_trywait@Base 15 + sem_unlink@Base 15 + sem_wait@Base 15 + send@Base 15 + sendmmsg@Base 15 + sendmsg@Base 15 + sendto@Base 15 + setbuf@Base 15 + setbuffer@Base 15 + setgrent@Base 15 + setitimer@Base 15 + setlinebuf@Base 15 + setlocale@Base 15 + setpwent@Base 15 + setvbuf@Base 15 + sigaction@Base 15 + sigaltstack@Base 15 + sigandset@Base 15 + sigemptyset@Base 15 + sigfillset@Base 15 + siglongjmp@Base 15 + signal@Base 15 + sigorset@Base 15 + sigpending@Base 15 + sigprocmask@Base 15 + sigtimedwait@Base 15 + sigwait@Base 15 + sigwaitinfo@Base 15 + sincos@Base 15 + sincosf@Base 15 + sincosl@Base 15 + snprintf@Base 15 + sprintf@Base 15 + sscanf@Base 15 + stat64@Base 15 + stat@Base 15 + statfs64@Base 15 + statfs@Base 15 + statvfs64@Base 15 + statvfs@Base 15 + strcasecmp@Base 15 + strcasestr@Base 15 + strcat@Base 15 + strchr@Base 15 + strchrnul@Base 15 + strcmp@Base 15 + strcpy@Base 15 + strcspn@Base 15 + strdup@Base 15 + strerror@Base 15 + strerror_r@Base 15 + strlen@Base 15 + strncasecmp@Base 15 + strncat@Base 15 + strncmp@Base 15 + strncpy@Base 15 + strndup@Base 15 + strnlen@Base 15 + strpbrk@Base 15 + strptime@Base 15 + strrchr@Base 15 + strspn@Base 15 + strstr@Base 15 + strtoimax@Base 15 + strtok@Base 15 + strtol@Base 15 + strtoll@Base 15 + strtoumax@Base 15 + strxfrm@Base 15 + strxfrm_l@Base 15 + swapcontext@Base 15 + sysinfo@Base 15 + tcgetattr@Base 15 + tempnam@Base 15 + textdomain@Base 15 + time@Base 15 + timerfd_gettime@Base 15 + timerfd_settime@Base 15 + times@Base 15 + tmpnam@Base 15 + tmpnam_r@Base 15 + tsearch@Base 15 + ttyname@Base 15 + ttyname_r@Base 15 + uname@Base 15 + valloc@Base 15 + vasprintf@Base 15 + vfork@Base 15 + vfprintf@Base 15 + vfscanf@Base 15 + vprintf@Base 15 + vscanf@Base 15 + vsnprintf@Base 15 + vsprintf@Base 15 + vsscanf@Base 15 + wait3@Base 15 + wait4@Base 15 + wait@Base 15 + waitid@Base 15 + waitpid@Base 15 + wcrtomb@Base 15 + wcscat@Base 15 + wcsdup@Base 15 + wcslen@Base 15 + wcsncat@Base 15 + wcsnlen@Base 15 + wcsnrtombs@Base 15 + wcsrtombs@Base 15 + wcstombs@Base 15 + wcsxfrm@Base 15 + wcsxfrm_l@Base 15 + wctomb@Base 15 + wordexp@Base 15 + write@Base 15 + writev@Base 15 + xdr_bool@Base 15 + xdr_bytes@Base 15 + xdr_char@Base 15 + xdr_destroy@Base 15 + xdr_double@Base 15 + xdr_enum@Base 15 + xdr_float@Base 15 + xdr_hyper@Base 15 + xdr_int16_t@Base 15 + xdr_int32_t@Base 15 + xdr_int64_t@Base 15 + xdr_int8_t@Base 15 + xdr_int@Base 15 + xdr_long@Base 15 + xdr_longlong_t@Base 15 + xdr_quad_t@Base 15 + xdr_short@Base 15 + xdr_string@Base 15 + xdr_u_char@Base 15 + xdr_u_hyper@Base 15 + xdr_u_int@Base 15 + xdr_u_long@Base 15 + xdr_u_longlong_t@Base 15 + xdr_u_quad_t@Base 15 + xdr_u_short@Base 15 + xdr_uint16_t@Base 15 + xdr_uint32_t@Base 15 + xdr_uint64_t@Base 15 + xdr_uint8_t@Base 15 + xdrmem_create@Base 15 + xdrrec_create@Base 15 + xdrstdio_create@Base 15 diff --git a/locale-gen b/locale-gen new file mode 100755 index 0000000..f07fa55 --- /dev/null +++ b/locale-gen @@ -0,0 +1,51 @@ +#!/bin/sh + +# generate locales that the libstdc++ testsuite depends on + +LOCPATH=`pwd`/locales +export LOCPATH + +[ -d $LOCPATH ] || mkdir -p $LOCPATH + +[ -n "$USE_CPUS" ] || USE_CPUS=1 + +umask 022 + +echo "Generating locales..." +xargs -L 1 -P $USE_CPUS -I{} \ + sh -c ' + set {}; locale=$1; charset=$2 + case $locale in \#*) exit;; esac + [ -n "$locale" -a -n "$charset" ] || exit + echo " `echo $locale | sed \"s/\([^.\@]*\).*/\1/\"`.$charset`echo $locale | sed \"s/\([^\@]*\)\(\@.*\)*/\2/\"`..." + if [ -f $LOCPATH/$locale ]; then + input=$locale + else + input=`echo $locale | sed "s/\([^.]*\)[^@]*\(.*\)/\1\2/"` + fi + localedef -i $input -c -f $charset $LOCPATH/$locale #-A /etc/locale.alias + ' <&2 "usage: `basename $0` [-p ] [-t ] [-m ]" + echo >&2 " " + exit 1 +} + +while [ $# -gt 0 ]; do + case $1 in + -p) + pidfile=$2 + shift + shift + ;; + -t) + timeout=$2 + shift + shift + ;; + -m) + message="$2" + shift + shift + ;; + -*) + usage + ;; + *) + break + esac +done + +[ $# -gt 0 ] || usage + +logfile="$1" +shift +builddir="$1" +shift +[ $# -eq 0 ] || usage + +cleanup() +{ + rm -f $pidfile + exit 0 +} + +#trap cleanup 0 1 3 15 + +echo $$ > $pidfile + +declare -A stamps + +find_logs() +{ + for f in $(find $builddir -name '*.log' \ + ! -name config.log \ + ! -path '*/ada/acats?/tests/*.log' \ + ! -path '*/libbacktrace/*.log') + do + if [ ! -v stamps[$f] ]; then + stamps[$f]=$(date -u -r $f '+%s') + fi + done +} + +# wait for test startups +sleep 30 +find_logs + +# activity in the main log file +sleep 10 +st_logfile=$(date -u -r $logfile '+%s') + +sleep 10 + +while true; do + find_logs + sleep 10 + stamp=$(date -u -r $logfile '+%s') + if [ $stamp -gt $st_logfile ]; then + # there is still action in the primary logfile. do nothing. + st_logfile=$stamp + else + activity=0 + for log in "${!stamps[@]}"; do + [ -f $log ] || continue + stamp=$(date -u -r $log '+%s') + if [ $stamp -gt ${stamps[$log]} ]; then + if [ $activity -eq 0 ]; then + echo + fi + echo "[$(date -u -r $log '+%T')] $log: $message" + tail -3 $log + activity=$(expr $activity + 1) + stamps[$log]=$stamp + fi + done + if [ $activity -gt 0 ]; then + # already emitted messages above + echo + else + # nothing changed in the other log files. maybe a timeout ... + : + fi + fi + sleep $timeout +done + +exit 0 diff --git a/patches/0001-Ada-merge-all-timeval-and-timespec-definitions-and-c.diff b/patches/0001-Ada-merge-all-timeval-and-timespec-definitions-and-c.diff new file mode 100644 index 0000000..e886a14 --- /dev/null +++ b/patches/0001-Ada-merge-all-timeval-and-timespec-definitions-and-c.diff @@ -0,0 +1,1681 @@ +PR ada/114065, patches v15 + +In the hope to reduce the rebasing work, +when a whole file can be kept unchanged in Debian, + * files specific to other systems can remain broken + * cal.c can remain, it is disabled in Makefile.rtl + * declarations of obsolete but unused time types or constants +the changes affecting it are removed from this patch. + +--- a/src/gcc/ada/Makefile.rtl ++++ b/src/gcc/ada/Makefile.rtl +@@ -760,6 +760,7 @@ GNATRTL_NONTASKING_OBJS= \ + s-string$(objext) \ + s-ststop$(objext) \ + s-tasloc$(objext) \ ++ s-c_time$(objext) \ + s-traceb$(objext) \ + s-traent$(objext) \ + s-trasym$(objext) \ +@@ -1422,7 +1423,6 @@ ifeq ($(strip $(filter-out arm% aarch64 + a-intnam.ads Clock_Id, tp => TS'Unchecked_Access); + pragma Assert (Result = 0); + +- return To_CPU_Time (To_Duration (TS)); ++ return To_CPU_Time (System.C_Time.To_Duration (TS)); + end Clock; + + -------------------------- +--- a/src/gcc/ada/libgnarl/s-osinte__gnu.adb ++++ b/src/gcc/ada/libgnarl/s-osinte__gnu.adb +@@ -93,15 +93,6 @@ package body System.OS_Interface is + return 0; + end pthread_setschedparam; + +- ----------------- +- -- To_Duration -- +- ----------------- +- +- function To_Duration (TS : timespec) return Duration is +- begin +- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; +- end To_Duration; +- + ------------------------ + -- To_Target_Priority -- + ------------------------ +@@ -113,28 +104,4 @@ package body System.OS_Interface is + return Interfaces.C.int (Prio); + end To_Target_Priority; + +- ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return timespec'(tv_sec => S, +- tv_nsec => long (Long_Long_Integer (F * 10#1#E9))); +- end To_Timespec; +- + end System.OS_Interface; +--- a/src/gcc/ada/libgnarl/s-osinte__gnu.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__gnu.ads +@@ -42,8 +42,8 @@ with Ada.Unchecked_Conversion; + + with Interfaces.C; + ++with System.C_Time; + with System.OS_Locks; +-with System.Parameters; + + package System.OS_Interface is + pragma Preelaborate; +@@ -210,9 +210,7 @@ package System.OS_Interface is + Time_Slice_Supported : constant Boolean := True; + -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) + +- type timespec is private; +- +- function nanosleep (rqtp, rmtp : access timespec) return int; ++ function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; + pragma Import (C, nanosleep, "nanosleep"); + + type clockid_t is new int; +@@ -221,21 +219,15 @@ package System.OS_Interface is + -- From: /usr/include/time.h + function clock_gettime + (clock_id : clockid_t; +- tp : access timespec) ++ tp : access C_Time.timespec) + return int; + pragma Import (C, clock_gettime, "clock_gettime"); + + function clock_getres + (clock_id : clockid_t; +- res : access timespec) return int; ++ res : access C_Time.timespec) return int; + pragma Import (C, clock_getres, "clock_getres"); + +- function To_Duration (TS : timespec) return Duration; +- pragma Inline (To_Duration); +- +- function To_Timespec (D : Duration) return timespec; +- pragma Inline (To_Timespec); +- + -- From: /usr/include/unistd.h + function sysconf (name : int) return long; + pragma Import (C, sysconf); +@@ -487,7 +479,7 @@ package System.OS_Interface is + function pthread_cond_timedwait + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; +- abstime : access timespec) return int; ++ abstime : access C_Time.timespec) return int; + pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); + + Relative_Timed_Wait : constant Boolean := False; +@@ -656,15 +648,6 @@ private + + type pid_t is new int; + +- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- +- type timespec is record +- tv_sec : time_t; +- tv_nsec : long; +- end record; +- pragma Convention (C, timespec); +- + -- From: /usr/include/pthread/pthreadtypes.h: + -- typedef struct __pthread_attr pthread_attr_t; + -- /usr/include/i386-gnu/bits/thread-attr.h: struct __pthread_attr... +--- a/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads +@@ -42,8 +42,8 @@ with Ada.Unchecked_Conversion; + + with Interfaces.C; + ++with System.C_Time; + with System.OS_Locks; +-with System.Parameters; + + package System.OS_Interface is + pragma Preelaborate; +@@ -205,9 +205,7 @@ package System.OS_Interface is + Time_Slice_Supported : constant Boolean := True; + -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) + +- type timespec is private; +- +- function nanosleep (rqtp, rmtp : access timespec) return int; ++ function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; + pragma Import (C, nanosleep, "nanosleep"); + + type clockid_t is new int; +@@ -215,21 +213,15 @@ package System.OS_Interface is + + function clock_gettime + (clock_id : clockid_t; +- tp : access timespec) ++ tp : access C_Time.timespec) + return int; + pragma Import (C, clock_gettime, "clock_gettime"); + + function clock_getres + (clock_id : clockid_t; +- res : access timespec) return int; ++ res : access C_Time.timespec) return int; + pragma Import (C, clock_getres, "clock_getres"); + +- function To_Duration (TS : timespec) return Duration; +- pragma Inline (To_Duration); +- +- function To_Timespec (D : Duration) return timespec; +- pragma Inline (To_Timespec); +- + function sysconf (name : int) return long; + pragma Import (C, sysconf); + +@@ -430,7 +422,7 @@ package System.OS_Interface is + function pthread_cond_timedwait + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; +- abstime : access timespec) return int; ++ abstime : access C_Time.timespec) return int; + pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); + + -------------------------- +@@ -602,15 +594,6 @@ private + + type pid_t is new int; + +- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- +- type timespec is record +- tv_sec : time_t; +- tv_nsec : long; +- end record; +- pragma Convention (C, timespec); +- + type pthread_attr_t is record + detachstate : int; + schedpolicy : int; +--- a/src/gcc/ada/libgnarl/s-osinte__linux.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__linux.ads +@@ -42,6 +42,7 @@ with Ada.Unchecked_Conversion; + + with Interfaces.C; + ++with System.C_Time; + with System.Linux; + with System.OS_Constants; + with System.OS_Locks; +@@ -54,8 +55,6 @@ package System.OS_Interface is + + pragma Linker_Options ("-lpthread"); + +- use type System.Linux.time_t; +- + subtype int is Interfaces.C.int; + subtype char is Interfaces.C.char; + subtype short is Interfaces.C.short; +@@ -229,26 +228,17 @@ package System.OS_Interface is + -- Time -- + ---------- + +- subtype time_t is System.Linux.time_t; +- subtype timespec is System.Linux.timespec; +- subtype timeval is System.Linux.timeval; + subtype clockid_t is System.Linux.clockid_t; + + function clock_gettime +- (clock_id : clockid_t; tp : access timespec) return int; ++ (clock_id : clockid_t; tp : access C_Time.timespec) return int; + pragma Import (C, clock_gettime, "clock_gettime"); + + function clock_getres + (clock_id : clockid_t; +- res : access timespec) return int; ++ res : access C_Time.timespec) return int; + pragma Import (C, clock_getres, "clock_getres"); + +- function To_Duration (TS : timespec) return Duration; +- pragma Inline (To_Duration); +- +- function To_Timespec (D : Duration) return timespec; +- pragma Inline (To_Timespec); +- + function sysconf (name : int) return long; + pragma Import (C, sysconf); + +@@ -457,7 +447,7 @@ package System.OS_Interface is + function pthread_cond_timedwait + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; +- abstime : access timespec) return int; ++ abstime : access C_Time.timespec) return int; + pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); + + -------------------------- +--- a/src/gcc/ada/libgnarl/s-osinte__posix.adb ++++ b/src/gcc/ada/libgnarl/s-osinte__posix.adb +@@ -58,15 +58,6 @@ package body System.OS_Interface is + null; + end pthread_init; + +- ----------------- +- -- To_Duration -- +- ----------------- +- +- function To_Duration (TS : timespec) return Duration is +- begin +- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; +- end To_Duration; +- + ------------------------ + -- To_Target_Priority -- + ------------------------ +@@ -78,28 +69,4 @@ package body System.OS_Interface is + return Interfaces.C.int (Prio); + end To_Target_Priority; + +- ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return timespec'(tv_sec => S, +- tv_nsec => long (Long_Long_Integer (F * 10#1#E9))); +- end To_Timespec; +- + end System.OS_Interface; +--- a/src/gcc/ada/libgnarl/s-osinte__x32.adb ++++ b/src/gcc/ada/libgnarl/s-osinte__x32.adb +@@ -59,15 +59,6 @@ package body System.OS_Interface is + null; + end pthread_init; + +- ----------------- +- -- To_Duration -- +- ----------------- +- +- function To_Duration (TS : timespec) return Duration is +- begin +- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; +- end To_Duration; +- + ------------------------ + -- To_Target_Priority -- + ------------------------ +@@ -79,28 +70,4 @@ package body System.OS_Interface is + return Interfaces.C.int (Prio); + end To_Target_Priority; + +- ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return timespec'(tv_sec => S, +- tv_nsec => Long_Long_Integer (F * 10#1#E9)); +- end To_Timespec; +- + end System.OS_Interface; +--- a/src/gcc/ada/libgnarl/s-tpopmo.adb ++++ b/src/gcc/ada/libgnarl/s-tpopmo.adb +@@ -31,6 +31,8 @@ + + -- This is the Monotonic version of this package for Posix and Linux targets. + ++with System.C_Time; ++ + separate (System.Task_Primitives.Operations) + package body Monotonic is + +@@ -54,14 +56,14 @@ package body Monotonic is + --------------------- + + function Monotonic_Clock return Duration is +- TS : aliased timespec; ++ TS : aliased C_Time.timespec; + Result : Interfaces.C.int; + begin + Result := clock_gettime + (clock_id => OSC.CLOCK_RT_Ada, tp => TS'Unchecked_Access); + pragma Assert (Result = 0); + +- return To_Duration (TS); ++ return C_Time.To_Duration (TS); + end Monotonic_Clock; + + ------------------- +@@ -69,14 +71,14 @@ package body Monotonic is + ------------------- + + function RT_Resolution return Duration is +- TS : aliased timespec; ++ TS : aliased C_Time.timespec; + Result : Interfaces.C.int; + + begin + Result := clock_getres (OSC.CLOCK_REALTIME, TS'Unchecked_Access); + pragma Assert (Result = 0); + +- return To_Duration (TS); ++ return C_Time.To_Duration (TS); + end RT_Resolution; + + ---------------------- +@@ -150,7 +152,7 @@ package body Monotonic is + Abs_Time : Duration; + P_Abs_Time : Duration; + +- Request : aliased timespec; ++ Request : aliased C_Time.timespec; + Result : Interfaces.C.int; + Exit_Outer : Boolean := False; + +@@ -184,7 +186,7 @@ package body Monotonic is + end if; + pragma Warnings (On); + +- Request := To_Timespec (P_Abs_Time); ++ Request := C_Time.To_Timespec (P_Abs_Time); + + Inner : loop + exit Outer +@@ -236,7 +238,7 @@ package body Monotonic is + Check_Time : Duration; + Abs_Time : Duration; + P_Abs_Time : Duration; +- Request : aliased timespec; ++ Request : aliased C_Time.timespec; + + Result : Interfaces.C.int; + Exit_Outer : Boolean := False; +@@ -271,7 +273,7 @@ package body Monotonic is + end if; + pragma Warnings (On); + +- Request := To_Timespec (P_Abs_Time); ++ Request := C_Time.To_Timespec (P_Abs_Time); + + Inner : loop + exit Outer +--- a/src/gcc/ada/libgnat/g-calend.adb ++++ b/src/gcc/ada/libgnat/g-calend.adb +@@ -29,11 +29,8 @@ + -- -- + ------------------------------------------------------------------------------ + +-with Interfaces.C.Extensions; +- + package body GNAT.Calendar is + use Ada.Calendar; +- use Interfaces; + + ----------------- + -- Day_In_Year -- +@@ -328,61 +325,6 @@ package body GNAT.Calendar is + Time_Zone => 0); + end Time_Of_At_Locale; + +- ----------------- +- -- To_Duration -- +- ----------------- +- +- function To_Duration (T : not null access timeval) return Duration is +- +- procedure timeval_to_duration +- (T : not null access timeval; +- sec : not null access C.Extensions.long_long; +- usec : not null access C.long); +- pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration"); +- +- Micro : constant := 10**6; +- sec : aliased C.Extensions.long_long; +- usec : aliased C.long; +- +- begin +- timeval_to_duration (T, sec'Access, usec'Access); +- pragma Annotate (CodePeer, Modified, sec); +- pragma Annotate (CodePeer, Modified, usec); +- +- return Duration (sec) + Duration (usec) / Micro; +- end To_Duration; +- +- ---------------- +- -- To_Timeval -- +- ---------------- +- +- function To_Timeval (D : Duration) return timeval is +- +- procedure duration_to_timeval +- (Sec : C.Extensions.long_long; +- Usec : C.long; +- T : not null access timeval); +- pragma Import (C, duration_to_timeval, "__gnat_duration_to_timeval"); +- +- Micro : constant := 10**6; +- Result : aliased timeval; +- sec : C.Extensions.long_long; +- usec : C.long; +- +- begin +- if D = 0.0 then +- sec := 0; +- usec := 0; +- else +- sec := C.Extensions.long_long (D - 0.5); +- usec := C.long ((D - Duration (sec)) * Micro - 0.5); +- end if; +- +- duration_to_timeval (sec, usec, Result'Access); +- +- return Result; +- end To_Timeval; +- + ------------------ + -- Week_In_Year -- + ------------------ +--- a/src/gcc/ada/libgnat/g-calend.ads ++++ b/src/gcc/ada/libgnat/g-calend.ads +@@ -40,7 +40,7 @@ + -- Day_Of_Week, Day_In_Year and Week_In_Year. + + with Ada.Calendar.Formatting; +-with Interfaces.C; ++with System.C_Time; + + package GNAT.Calendar is + +@@ -145,24 +145,19 @@ package GNAT.Calendar is + -- Return the week number as defined in ISO 8601 along with the year in + -- which the week occurs. + +- -- C timeval conversion ++ subtype timeval is System.C_Time.timeval; ++ -- Deprecated. Please use C_Time directly. + +- -- C timeval represent a duration (used in Select for example). This +- -- structure is composed of a number of seconds and a number of micro +- -- seconds. The timeval structure is not exposed here because its +- -- definition is target dependent. Interface to C programs is done via a +- -- pointer to timeval structure. +- +- type timeval is private; +- +- function To_Duration (T : not null access timeval) return Duration; +- function To_Timeval (D : Duration) return timeval; ++ function To_Duration (T : not null access timeval) ++ return System.C_Time.Non_Negative_Duration ++ is (System.C_Time.To_Duration (T.all)); ++ -- Deprecated. Please use C_Time directly. ++ ++ function To_Timeval (D : System.C_Time.Non_Negative_Duration) return timeval ++ renames System.C_Time.To_Timeval; ++ -- Deprecated. Please use C_Time directly. + + private +- -- This is a dummy declaration that should be the largest possible timeval +- -- structure of all supported targets. +- +- type timeval is array (1 .. 3) of Interfaces.C.long; + + function Julian_Day + (Year : Ada.Calendar.Year_Number; +--- a/src/gcc/ada/libgnat/g-socket.adb ++++ b/src/gcc/ada/libgnat/g-socket.adb +@@ -45,6 +45,7 @@ pragma Warnings (Off, GNAT.Sockets.Linke + with GNAT.Sockets.Poll; + + with System; use System; ++with System.C_Time; + with System.Communication; use System.Communication; + with System.CRTL; use System.CRTL; + with System.Task_Lock; +@@ -179,13 +180,6 @@ package body GNAT.Sockets is + function Value (S : System.Address) return String; + -- Same as Interfaces.C.Strings.Value but taking a System.Address + +- function To_Timeval (Val : Timeval_Duration) return Timeval; +- -- Separate Val in seconds and microseconds +- +- function To_Duration (Val : Timeval) return Timeval_Duration; +- -- Reconstruct a Duration value from a Timeval record (seconds and +- -- microseconds). +- + function Dedot (Value : String) return String + is (if Value /= "" and then Value (Value'Last) = '.' + then Value (Value'First .. Value'Last - 1) +@@ -528,7 +522,7 @@ package body GNAT.Sockets is + Res : C.int; + Last : C.int; + RSig : Socket_Type := No_Socket; +- TVal : aliased Timeval; ++ TVal : aliased System.C_Time.timeval; + TPtr : Timeval_Access; + + begin +@@ -543,7 +537,7 @@ package body GNAT.Sockets is + if Timeout = Forever then + TPtr := null; + else +- TVal := To_Timeval (Timeout); ++ TVal := System.C_Time.To_Timeval (Timeout); + TPtr := TVal'Unchecked_Access; + end if; + +@@ -1423,7 +1417,7 @@ package body GNAT.Sockets is + U4 : aliased C.unsigned; + V1 : aliased C.unsigned_char; + VS : aliased C.char_array (1 .. NS); -- for devices name +- VT : aliased Timeval; ++ VT : aliased System.C_Time.timeval; + Len : aliased C.int; + Add : System.Address; + Res : C.int; +@@ -1596,8 +1590,10 @@ package body GNAT.Sockets is + Opt.Timeout := Duration (U4) / 1000; + end if; + ++ elsif System.C_Time.In_Duration (VT) then ++ Opt.Timeout := System.C_Time.To_Duration (VT); + else +- Opt.Timeout := To_Duration (VT); ++ Opt.Timeout := Forever; + end if; + + when Bind_To_Device => +@@ -2633,7 +2629,7 @@ package body GNAT.Sockets is + (1 .. (if Option.Name = Bind_To_Device + then C.size_t (ASU.Length (Option.Device) + 1) + else 0)); +- VT : aliased Timeval; ++ VT : aliased System.C_Time.timeval; + Len : C.int; + Add : System.Address := Null_Address; + Res : C.int; +@@ -2767,7 +2763,7 @@ package body GNAT.Sockets is + end if; + + else +- VT := To_Timeval (Option.Timeout); ++ VT := System.C_Time.To_Timeval (Option.Timeout); + Len := VT'Size / 8; + Add := VT'Address; + end if; +@@ -2865,33 +2861,6 @@ package body GNAT.Sockets is + return Integer (Socket); + end To_C; + +- ----------------- +- -- To_Duration -- +- ----------------- +- +- function To_Duration (Val : Timeval) return Timeval_Duration is +- Max_D : constant Long_Long_Integer := Long_Long_Integer (Forever - 0.5); +- Tv_sec_64 : constant Boolean := SOSC.SIZEOF_tv_sec = 8; +- -- Need to separate this condition into the constant declaration to +- -- avoid GNAT warning about "always true" or "always false". +- begin +- if Tv_sec_64 then +- -- Check for possible Duration overflow when Tv_Sec field is 64 bit +- -- integer. +- +- if Val.Tv_Sec > time_t (Max_D) +- or else +- (Val.Tv_Sec = time_t (Max_D) +- and then +- Val.Tv_Usec > suseconds_t ((Forever - Duration (Max_D)) * 1E6)) +- then +- return Forever; +- end if; +- end if; +- +- return Duration (Val.Tv_Sec) + Duration (Val.Tv_Usec) * 1.0E-6; +- end To_Duration; +- + ------------------- + -- To_Host_Entry -- + ------------------- +@@ -3041,36 +3010,6 @@ package body GNAT.Sockets is + return HN.Name (1 .. HN.Length); + end To_String; + +- ---------------- +- -- To_Timeval -- +- ---------------- +- +- function To_Timeval (Val : Timeval_Duration) return Timeval is +- S : time_t; +- uS : suseconds_t; +- +- begin +- -- If zero, set result as zero (otherwise it gets rounded down to -1) +- +- if Val = 0.0 then +- S := 0; +- uS := 0; +- +- -- Normal case where we do round down +- +- else +- S := time_t (Val - 0.5); +- uS := suseconds_t (1_000_000 * (Val - Selector_Duration (S)) - 0.5); +- +- if uS = -1 then +- -- It happen on integer duration +- uS := 0; +- end if; +- end if; +- +- return (S, uS); +- end To_Timeval; +- + ----------- + -- Value -- + ----------- +--- a/src/gcc/ada/libgnat/g-socthi.adb ++++ b/src/gcc/ada/libgnat/g-socthi.adb +@@ -40,6 +40,8 @@ with GNAT.Task_Lock; + + with Interfaces.C; use Interfaces.C; + ++with System.C_Time; ++ + package body GNAT.Sockets.Thin is + + Non_Blocking_Sockets : aliased Fd_Set; +@@ -215,7 +217,7 @@ package body GNAT.Sockets.Thin is + declare -- unreachable if Thread_Blocking_IO is statically True + pragma Warnings (On, "unreachable code"); + WSet : aliased Fd_Set; +- Now : aliased Timeval; ++ Now : aliased System.C_Time.timeval; + + begin + Reset_Socket_Set (WSet'Access); +--- a/src/gcc/ada/libgnat/g-sothco.ads ++++ b/src/gcc/ada/libgnat/g-sothco.ads +@@ -34,7 +34,7 @@ + + with Ada.Unchecked_Conversion; + with Interfaces.C.Strings; +-with System.Parameters; ++with System.C_Time; + + package GNAT.Sockets.Thin_Common is + +@@ -44,31 +44,13 @@ package GNAT.Sockets.Thin_Common is + Success : constant C.int := 0; + Failure : constant C.int := -1; + +- type time_t is +- range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- for time_t'Size use System.Parameters.time_t_bits; +- pragma Convention (C, time_t); +- +- type suseconds_t is +- range -2 ** (8 * SOSC.SIZEOF_tv_usec - 1) +- .. 2 ** (8 * SOSC.SIZEOF_tv_usec - 1) - 1; +- for suseconds_t'Size use 8 * SOSC.SIZEOF_tv_usec; +- pragma Convention (C, suseconds_t); +- +- type Timeval is record +- Tv_Sec : time_t; +- Tv_Usec : suseconds_t; +- end record; +- pragma Convention (C, Timeval); +- +- type Timeval_Access is access all Timeval; ++ type Timeval_Access is access all System.C_Time.timeval; + pragma Convention (C, Timeval_Access); + + type socklen_t is mod 2 ** (8 * SOSC.SIZEOF_socklen_t); + for socklen_t'Size use (8 * SOSC.SIZEOF_socklen_t); + +- Immediat : constant Timeval := (0, 0); ++ Immediat : System.C_Time.timeval renames System.C_Time.Timeval_Zero; + + ------------------------------------------- + -- Mapping tables to low level constants -- +--- a/src/gcc/ada/libgnat/g-spogwa.adb ++++ b/src/gcc/ada/libgnat/g-spogwa.adb +@@ -29,7 +29,7 @@ + -- -- + ------------------------------------------------------------------------------ + +-with GNAT.Sockets.Thin_Common; ++with System.C_Time; + + procedure GNAT.Sockets.Poll.G_Wait + (Fds : in out Set; Timeout : Interfaces.C.int; Result : out Integer) +@@ -41,11 +41,11 @@ is + readfds : access FD_Set_Type; + writefds : access FD_Set_Type; + exceptfds : access FD_Set_Type; +- timeout : access Thin_Common.Timeval) return Integer ++ timeout : access System.C_Time.timeval) return Integer + with Import => True, Convention => Stdcall, External_Name => "select"; + +- Timeout_V : aliased Thin_Common.Timeval; +- Timeout_A : access Thin_Common.Timeval; ++ Timeout_V : aliased System.C_Time.timeval; ++ Timeout_A : access System.C_Time.timeval; + + Rfds : aliased FD_Set_Type; + Rcount : Natural := 0; +@@ -63,8 +63,7 @@ begin + + if Timeout >= 0 then + Timeout_A := Timeout_V'Access; +- Timeout_V.Tv_Sec := Thin_Common.time_t (Timeout / 1000); +- Timeout_V.Tv_Usec := Thin_Common.suseconds_t (Timeout rem 1000 * 1000); ++ Timeout_V := System.C_Time.Milliseconds_To_Timeval (Timeout); + end if; + + Reset_Socket_Set (Rfds); +--- /dev/null ++++ b/src/gcc/ada/libgnat/s-c_time.adb +@@ -0,0 +1,248 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- ++-- -- ++-- S Y S T E M . C _ T I M E -- ++-- -- ++-- B o d y -- ++-- -- ++-- Copyright (C) 1998-2025, Free Software Foundation, Inc. -- ++-- -- ++-- GNARL is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 3, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. -- ++-- -- ++-- As a special exception under Section 7 of GPL version 3, you are granted -- ++-- additional permissions described in the GCC Runtime Library Exception, -- ++-- version 3.1, as published by the Free Software Foundation. -- ++-- -- ++-- You should have received a copy of the GNU General Public License and -- ++-- a copy of the GCC Runtime Library Exception along with this program; -- ++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- ++-- . -- ++-- -- ++-- GNARL was developed by the GNARL team at Florida State University. -- ++-- Extensive contributions were provided by Ada Core Technologies, Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++package body System.C_Time is ++ ++ -- Two Duration representations are described in targparm.ads. ++ -- Size Delta Last = (2**(Size - 1) - 1) * Delta ++ -- 32 0.02 42_949_672.94 ++ -- 64 0.000_000_001 9_223_372_036.854_775_807 ++ ++ -- The overflows listed in comments must raise Constraint_Error. ++ pragma Unsuppress (Overflow_Check); ++ ++ ----------------- ++ -- In_Duration -- ++ ----------------- ++ ++ function In_Duration (T : timeval) return Boolean is ++ ++ -- Mimic To_Timeval (Duration'Last), except that ++ -- * this computation happens at compile time ++ -- * Sec may be far above MAX_tv_sec ++ -- * on 64 bits, Usec is truncated instead of rounded up ++ Sec : constant := (if Duration'Size = 64 ++ then (2**63 - 1) / 1_000_000_000 ++ else (2**31 - 1) / 50); ++ Usec : constant := (if Duration'Size = 64 ++ then (2**63 - 1) mod 1_000_000_000 / 1_000 ++ else (2**31 - 1) mod 50 * 20_000); ++ ++ pragma Warnings (Off, "condition is always"); ++ Dur_Covers_Tv_Sec : constant Boolean := OS_Constants.MAX_tv_sec < Sec; ++ pragma Warnings (On, "condition is always"); ++ ++ -- When Duration'Size = 64 and time_t'Size = 32, the compiler ++ -- complains that Sec does not fit in time_t, hence cannot be ++ -- compared with T.tv_sec. But then Dur_Covers_Tv_Sec is True ++ -- and the following comparisons are skipped. ++ Maybe_Sec : constant := (if Dur_Covers_Tv_Sec then 1 else Sec); ++ begin ++ return Dur_Covers_Tv_Sec ++ or else T.tv_sec < Maybe_Sec ++ or else (T.tv_sec = Maybe_Sec and then T.tv_usec <= Usec); ++ end In_Duration; ++ ++ ----------------------------- ++ -- Milliseconds_To_Timeval -- ++ ----------------------------- ++ ++ function Milliseconds_To_Timeval (M : Non_Negative_Int) return timeval is ++ use Interfaces.C; ++ Q : constant int range 0 .. int'Last / 1_000 := M / 1_000; ++ R : constant int range 0 .. 999 := M mod 1_000; ++ begin ++ return (tv_sec => time_t (Q), ++ tv_usec => 1_000 * usec_t (R)); ++ end Milliseconds_To_Timeval; ++ ++ ----------------------------- ++ -- Nanoseconds_To_Timespec -- ++ ----------------------------- ++ ++ function Nanoseconds_To_Timespec (N : Non_Negative_Int) return timespec is ++ use Interfaces.C; ++ Q : constant int range 0 .. int'Last / 10**9 := N / 10**9; ++ R : constant int range 0 .. 999_999_999 := N mod 10**9; ++ begin ++ return (tv_sec => time_t (Q), ++ tv_nsec => nsec_t (R)); ++ end Nanoseconds_To_Timespec; ++ ++ ----------------- ++ -- To_Duration -- ++ ----------------- ++ ++ function To_Duration (T : timeval) return Non_Negative_Duration is ++ Usec : usec_t range 0 .. 1_009_999; ++ Frac : Duration range 0.0 .. 1.0; ++ begin ++ if Duration'Size = 64 then ++ Usec := T.tv_usec; ++ else ++ -- Fix the rounding (999_999.0 / 1_000_000 = 0.98) ++ -- with a bias of half Duration'Small = 10 ms. ++ Usec := T.tv_usec + 10_000; ++ end if; ++ Frac := Duration (Usec) / 1_000_000; ++ ++ return Duration (T.tv_sec) + Frac; ++ -- Both the conversion and the addition may overflow. ++ end To_Duration; ++ ++ function To_Duration (T : timespec) return Non_Negative_Duration is ++ Frac : Duration range 0.0 .. 1.0; ++ begin ++ if Duration'Size = 64 then ++ Frac := Duration (T.tv_nsec) / 1_000_000_000; ++ else ++ -- Avoid an overflow (Duration'Last < 999_999_999). ++ -- Fix the rounding (999_999_999.0 / 1_000_000_000 = 0.98) ++ -- with a bias of half Duration'Small = 10 ms. ++ Frac := Duration (T.tv_nsec / 10_000_000 + 1) / 100; ++ end if; ++ ++ return Duration (T.tv_sec) + Frac; ++ -- Both the conversion and the addition may overflow. ++ end To_Duration; ++ ++ function To_Duration (tv_sec : Tv_Sec_Long; ++ tv_nsec : Tv_Nsec_Long) ++ return Non_Negative_Duration is ++ begin ++ return To_Duration (timespec'(tv_sec => time_t (tv_sec), ++ tv_nsec => nsec_t (tv_nsec))); ++ end To_Duration; ++ ++ function To_Duration (tv_sec : Tv_Sec_Long_Long; ++ tv_nsec : Tv_Nsec_Long) ++ return Non_Negative_Duration is ++ begin ++ return To_Duration (timespec'(tv_sec => time_t (tv_sec), ++ tv_nsec => nsec_t (tv_nsec))); ++ end To_Duration; ++ ++ ------------------------ ++ -- To_Struct_Timespec -- ++ ------------------------ ++ ++ procedure To_Struct_Timespec (D : Non_Negative_Duration; ++ tv_sec : out Tv_Sec_Long; ++ tv_nsec : out Tv_Nsec_Long) is ++ T : constant timespec := To_Timespec (D); ++ begin ++ tv_sec := Tv_Sec_Long (T.tv_sec); -- May overflow Interfaces.C.long. ++ tv_nsec := Tv_Nsec_Long (T.tv_nsec); ++ end To_Struct_Timespec; ++ ++ procedure To_Struct_Timespec (D : Non_Negative_Duration; ++ tv_sec : out Tv_Sec_Long_Long; ++ tv_nsec : out Tv_Nsec_Long) is ++ T : constant timespec := To_Timespec (D); ++ begin ++ tv_sec := Tv_Sec_Long_Long (T.tv_sec); ++ tv_nsec := Tv_Nsec_Long (T.tv_nsec); ++ end To_Struct_Timespec; ++ ++ ----------------- ++ -- To_Timespec -- ++ ----------------- ++ ++ function To_Timespec (T : timeval) return timespec is ++ begin ++ return (tv_sec => T.tv_sec, ++ tv_nsec => 1_000 * nsec_t (T.tv_usec)); ++ end To_Timespec; ++ ++ function To_Timespec (D : Non_Negative_Duration) return timespec is ++ -- See To_Timeval. ++ Dm1 : constant Duration range -1.0 .. Duration'Last - 1.0 := D - 1.0; ++ Sec : constant time_t range -1 .. time_t'Last := time_t (Dm1); ++ Frac : constant Duration range -0.5 .. 0.5 := Dm1 - Duration (Sec); ++ Nsec : nsec_t range -500_000_000 .. 500_000_000; ++ begin ++ if Duration'Size = 64 then ++ Nsec := nsec_t (1_000_000_000 * Frac); ++ else ++ -- Duration'Last < 500_000_000 so there is an overflow issue, ++ -- easy to solve because Frac has few significative digits. ++ Nsec := 20_000_000 * nsec_t (50 * Frac); ++ end if; ++ if Nsec < 0 then ++ return (tv_sec => Sec, tv_nsec => Nsec + 1_000_000_000); ++ else ++ return (tv_sec => Sec + 1, tv_nsec => Nsec); ++ end if; ++ end To_Timespec; ++ ++ ----------------- ++ -- To_Timeval -- ++ ----------------- ++ ++ function To_Timeval (D : Non_Negative_Duration) return timeval is ++ ++ -- Most comments also apply to the timespec variant. ++ ++ -- Sec := time_t (D); ++ -- Usec := usec_t (1_000_000 * (D - Duration (Sec))); ++ -- fails when D is ++ -- Duration'Last (Sec is rounded up and Duration (Sec) overflows) ++ -- 0.9 (Sec is rounded up and Usec < 0) ++ ++ -- Sec := time_t (D - 0.5); ++ -- Usec := usec_t (1_000_000 * (D - Duration (Sec))); ++ -- leads to Usec = 1_000_000 when D is ++ -- 0.0 (Sec is rounded down) ++ -- 0.999_999_999 (Usec is rounded up) (not an issue with timespec) ++ ++ Dm1 : constant Duration range -1.0 .. Duration'Last - 1.0 := D - 1.0; ++ -- Converting D - 1 avoids overflows and simplifies roundings. ++ ++ Sec : constant time_t range -1 .. time_t'Last := time_t (Dm1); ++ -- The conversion of Dm1 may overflow if time_t has 32 bits. ++ ++ Frac : constant Duration range -0.5 .. 0.5 := Dm1 - Duration (Sec); ++ -- The conversion back is always possible, Sec <= Duration'Last - 0.5. ++ ++ Usec : constant usec_t range -500_000 .. 500_000 ++ := usec_t (1_000_000 * Frac); ++ begin ++ -- Add the second substracted at the beginning, in a way fixing ++ -- the Usec interval if necessary. ++ -- In both cases, tv_sec may exceed MAX_tv_sec. ++ if Usec < 0 then ++ return (tv_sec => Sec, tv_usec => Usec + 1_000_000); ++ else ++ return (tv_sec => Sec + 1, tv_usec => Usec); ++ end if; ++ end To_Timeval; ++ ++end System.C_Time; +--- /dev/null ++++ b/src/gcc/ada/libgnat/s-c_time.ads +@@ -0,0 +1,135 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- ++-- -- ++-- S Y S T E M . C _ T I M E -- ++-- -- ++-- S p e c -- ++-- -- ++-- Copyright (C) 1998-2025, Free Software Foundation, Inc. -- ++-- -- ++-- GNARL is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 3, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. -- ++-- -- ++-- As a special exception under Section 7 of GPL version 3, you are granted -- ++-- additional permissions described in the GCC Runtime Library Exception, -- ++-- version 3.1, as published by the Free Software Foundation. -- ++-- -- ++-- You should have received a copy of the GNU General Public License and -- ++-- a copy of the GCC Runtime Library Exception along with this program; -- ++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- ++-- . -- ++-- -- ++-- GNARL was developed by the GNARL team at Florida State University. -- ++-- Extensive contributions were provided by Ada Core Technologies, Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++-- This package provides the timeval, timespec C types and conversions. ++-- It hides all details about time_t, suseconds_t. ++ ++with Interfaces.C; ++private with System.OS_Constants; ++ ++package System.C_Time ++ with Pure ++is ++ ++ -- These C structs represent non negative durations with different ++ -- accuracies and maximal values. ++ type timespec is private; -- accurate to 1 nanosecond ++ type timeval is private; -- accurate to 1 microsecond ++ ++ -- Duration is accurate to either 1 nanosecond or 20 milliseconds. ++ subtype Non_Negative_Duration is Duration range 0.0 .. Duration'Last; ++ ++ -- All conversions round if the target type is less accurate than ++ -- the source type, away from zero if the source value is midway ++ -- between two values of the target type. ++ -- They raise Constraint_Error when the value, after rounding, ++ -- exceeds the last value of the target type. ++ ++ function To_Duration (T : timespec) return Non_Negative_Duration; ++ function To_Duration (T : timeval) return Non_Negative_Duration; ++ ++ function To_Timespec (D : Non_Negative_Duration) return timespec; ++ function To_Timeval (D : Non_Negative_Duration) return timeval; ++ ++ Timeval_Zero : constant timeval; ++ -- g-sothco.ads ++ ++ function In_Duration (T : timeval) return Boolean with Inline; ++ -- True if computing To_Duration (T) is safe, ++ -- False if Constraint Error would be raised. ++ -- g-socket.adb: ++ ++ subtype Non_Negative_Int is ++ Interfaces.C.int range 0 .. Interfaces.C.int'Last; ++ ++ function Milliseconds_To_Timeval (M : Non_Negative_Int) return timeval ++ with Inline; ++ -- g-spogwa.adb ++ ++ function Nanoseconds_To_Timespec (N : Non_Negative_Int) return timespec ++ with Inline; ++ function To_Timespec (T : timeval) return timespec with Inline; ++ -- s-osinte__darwin.adb ++ ++ -- These functions are provided for backward compatibility, ++ -- but lead to non portable interfaces with C. ++ -- Tv_sec and tv_nsec do not match the long int type on x32, ++ -- or on 32 bits ARM with a 2038-compatible GNU libc. ++ subtype Tv_Sec_Long_Long is Interfaces.C.long_long ++ range 0 .. Interfaces.C.long_long'Last; ++ subtype Tv_Sec_Long is Interfaces.C.long range 0 .. Interfaces.C.long'Last; ++ subtype Tv_Nsec_Long is Interfaces.C.long range 0 .. 999_999_999; ++ function To_Duration (tv_sec : Tv_Sec_Long; ++ tv_nsec : Tv_Nsec_Long) return Non_Negative_Duration ++ with Inline; ++ function To_Duration (tv_sec : Tv_Sec_Long_Long; ++ tv_nsec : Tv_Nsec_Long) return Non_Negative_Duration ++ with Inline; ++ procedure To_Struct_Timespec (D : Non_Negative_Duration; ++ tv_sec : out Tv_Sec_Long; ++ tv_nsec : out Tv_Nsec_Long) with Inline; ++ procedure To_Struct_Timespec (D : Non_Negative_Duration; ++ tv_sec : out Tv_Sec_Long_Long; ++ tv_nsec : out Tv_Nsec_Long) with Inline; ++ -- a-calcon.ads ++ ++private ++ ++ type time_t is range -2 ** (OS_Constants.SIZEOF_tv_sec * 8 - 1) .. ++ 2 ** (OS_Constants.SIZEOF_tv_sec * 8 - 1) - 1 ++ with Convention => C, Size => OS_Constants.SIZEOF_tv_sec * 8; ++ ++ type usec_t is range -2 ** (OS_Constants.SIZEOF_tv_usec * 8 - 1) .. ++ 2 ** (OS_Constants.SIZEOF_tv_usec * 8 - 1) - 1 ++ with Convention => C, Size => OS_Constants.SIZEOF_tv_usec * 8; ++ -- Larger than the suseconds_t C type on ARM 32 bits with GNU libc ++ -- when __TIME_BITS=64. ++ ++ type nsec_t is range -2 ** (OS_Constants.SIZEOF_tv_nsec * 8 - 1) .. ++ 2 ** (OS_Constants.SIZEOF_tv_nsec * 8 - 1) - 1 ++ with Convention => C, Size => OS_Constants.SIZEOF_tv_nsec * 8; ++ -- Larger than the signed long int C type on x32. ++ ++ type timeval is record ++ tv_sec : time_t range 0 .. OS_Constants.MAX_tv_sec; -- seconds ++ tv_usec : usec_t range 0 .. 999_999; -- microseconds ++ end record ++ with Convention => C; ++ ++ type timespec is record ++ tv_sec : time_t range 0 .. OS_Constants.MAX_tv_sec; -- seconds ++ tv_nsec : nsec_t range 0 .. 999_999_999; -- nanoseconds ++ end record ++ with Convention => C; ++ ++ Timeval_Zero : constant timeval := (tv_sec => 0, tv_usec => 0); ++ ++end System.C_Time; +--- a/src/gcc/ada/libgnat/s-optide.adb ++++ b/src/gcc/ada/libgnat/s-optide.adb +@@ -36,8 +36,8 @@ procedure Timed_Delay + (Time : Duration; + Mode : Integer) + is +- Request : aliased timespec; +- Remaind : aliased timespec; ++ Request : aliased C_Time.timespec; ++ Remaind : aliased C_Time.timespec; + Rel_Time : Duration; + Abs_Time : Duration; + Base_Time : constant Duration := Clock; +@@ -71,7 +71,7 @@ begin + end if; + pragma Warnings (On); + +- Request := To_Timespec (Time_Chunk); ++ Request := C_Time.To_Timespec (Time_Chunk); + Result := nanosleep (Request'Access, Remaind'Access); + + Check_Time := Clock; +--- a/src/gcc/ada/libgnat/s-osprim__posix.adb ++++ b/src/gcc/ada/libgnat/s-osprim__posix.adb +@@ -30,7 +30,7 @@ + ------------------------------------------------------------------------------ + + -- This version is for POSIX-like operating systems +-with System.Parameters; ++with System.C_Time; + + package body System.OS_Primitives is + +@@ -39,16 +39,8 @@ package body System.OS_Primitives is + -- these declarations in System.OS_Interface and move these ones in + -- the spec. + +- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- +- type timespec is record +- tv_sec : time_t; +- tv_nsec : Long_Integer; +- end record; +- pragma Convention (C, timespec); +- +- function nanosleep (rqtp, rmtp : not null access timespec) return Integer; ++ function nanosleep (rqtp, rmtp : not null access C_Time.timespec) ++ return Integer; + pragma Import (C, nanosleep, "nanosleep"); + + ----------- +@@ -57,27 +49,12 @@ package body System.OS_Primitives is + + function Clock return Duration is + +- type timeval is array (1 .. 3) of Long_Integer; +- -- The timeval array is sized to contain Long_Long_Integer sec and +- -- Long_Integer usec. If Long_Long_Integer'Size = Long_Integer'Size then +- -- it will be overly large but that will not effect the implementation +- -- since it is not accessed directly. +- +- procedure timeval_to_duration +- (T : not null access timeval; +- sec : not null access Long_Long_Integer; +- usec : not null access Long_Integer); +- pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration"); +- +- Micro : constant := 10**6; +- sec : aliased Long_Long_Integer; +- usec : aliased Long_Integer; +- TV : aliased timeval; ++ TV : aliased C_Time.timeval; + Result : Integer; + pragma Unreferenced (Result); + + function gettimeofday +- (Tv : access timeval; ++ (Tv : access C_Time.timeval; + Tz : System.Address := System.Null_Address) return Integer; + pragma Import (C, gettimeofday, "gettimeofday"); + +@@ -91,38 +68,10 @@ package body System.OS_Primitives is + -- value is never checked. + + Result := gettimeofday (TV'Access, System.Null_Address); +- timeval_to_duration (TV'Access, sec'Access, usec'Access); +- return Duration (sec) + Duration (usec) / Micro; ++ return C_Time.To_Duration (TV); + end Clock; + + ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec; +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return +- timespec'(tv_sec => S, +- tv_nsec => Long_Integer (Long_Long_Integer (F * 10#1#E9))); +- end To_Timespec; +- +- ----------------- + -- Timed_Delay -- + ----------------- + +--- a/src/gcc/ada/libgnat/s-osprim__posix2008.adb ++++ b/src/gcc/ada/libgnat/s-osprim__posix2008.adb +@@ -31,9 +31,10 @@ + + -- This version is for POSIX.1-2008-like operating systems + ++with System.C_Time; + with System.CRTL; + with System.OS_Constants; +-with System.Parameters; ++ + package body System.OS_Primitives is + + subtype int is System.CRTL.int; +@@ -42,16 +43,8 @@ package body System.OS_Primitives is + -- we don't want to depend on any package. Consider removing these + -- declarations in System.OS_Interface and move these ones to the spec. + +- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- +- type timespec is record +- tv_sec : time_t; +- tv_nsec : Long_Integer; +- end record; +- pragma Convention (C, timespec); +- +- function nanosleep (rqtp, rmtp : not null access timespec) return Integer; ++ function nanosleep (rqtp, rmtp : not null access C_Time.timespec) ++ return Integer; + pragma Import (C, nanosleep, "nanosleep"); + + ----------- +@@ -59,7 +52,7 @@ package body System.OS_Primitives is + ----------- + + function Clock return Duration is +- TS : aliased timespec; ++ TS : aliased C_Time.timespec; + Result : int; + + type clockid_t is new int; +@@ -68,43 +61,16 @@ package body System.OS_Primitives is + + function clock_gettime + (clock_id : clockid_t; +- tp : access timespec) return int; ++ tp : access C_Time.timespec) return int; + pragma Import (C, clock_gettime, "clock_gettime"); + + begin + Result := clock_gettime (CLOCK_REALTIME, TS'Unchecked_Access); + pragma Assert (Result = 0); +- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; ++ return C_Time.To_Duration (TS); + end Clock; + + ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec; +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return +- timespec'(tv_sec => S, +- tv_nsec => Long_Integer (Long_Long_Integer (F * 10#1#E9))); +- end To_Timespec; +- +- ----------------- + -- Timed_Delay -- + ----------------- + +--- a/src/gcc/ada/libgnat/s-osprim__unix.adb ++++ b/src/gcc/ada/libgnat/s-osprim__unix.adb +@@ -32,6 +32,8 @@ + -- This version uses gettimeofday and select + -- This file is suitable for OpenNT, Dec Unix and SCO UnixWare. + ++with System.C_Time; ++ + package body System.OS_Primitives is + + -- ??? These definitions are duplicated from System.OS_Interface +@@ -39,14 +41,8 @@ package body System.OS_Primitives is + -- these declarations in System.OS_Interface and move these ones in + -- the spec. + +- type struct_timeval is record +- tv_sec : Integer; +- tv_usec : Integer; +- end record; +- pragma Convention (C, struct_timeval); +- + procedure gettimeofday +- (tv : not null access struct_timeval; ++ (tv : not null access C_Time.timeval; + tz : Address := Null_Address); + pragma Import (C, gettimeofday, "gettimeofday"); + +@@ -55,7 +51,7 @@ package body System.OS_Primitives is + readfds, + writefds, + exceptfds : Address := Null_Address; +- timeout : not null access struct_timeval); ++ timeout : not null access C_Time.timeval); + pragma Import (C, C_select, "select"); + + ----------- +@@ -63,11 +59,11 @@ package body System.OS_Primitives is + ----------- + + function Clock return Duration is +- TV : aliased struct_timeval; ++ TV : aliased C_Time.timeval; + + begin + gettimeofday (TV'Access); +- return Duration (TV.tv_sec) + Duration (TV.tv_usec) / 10#1#E6; ++ return C_Time.To_Duration (TV); + end Clock; + + ----------------- +@@ -82,7 +78,7 @@ package body System.OS_Primitives is + Abs_Time : Duration; + Base_Time : constant Duration := Clock; + Check_Time : Duration := Base_Time; +- timeval : aliased struct_timeval; ++ timeval : aliased C_Time.timeval; + + begin + if Mode = Relative then +@@ -95,14 +91,7 @@ package body System.OS_Primitives is + + if Rel_Time > 0.0 then + loop +- timeval.tv_sec := Integer (Rel_Time); +- +- if Duration (timeval.tv_sec) > Rel_Time then +- timeval.tv_sec := timeval.tv_sec - 1; +- end if; +- +- timeval.tv_usec := +- Integer ((Rel_Time - Duration (timeval.tv_sec)) * 10#1#E6); ++ timeval := C_Time.To_Timeval (Rel_Time); + + C_select (timeout => timeval'Unchecked_Access); + Check_Time := Clock; +--- a/src/gcc/ada/libgnat/s-osprim__x32.adb ++++ b/src/gcc/ada/libgnat/s-osprim__x32.adb +@@ -31,7 +31,7 @@ + + -- This version is for Linux/x32 + +-with System.Parameters; ++with System.C_Time; + + package body System.OS_Primitives is + +@@ -40,16 +40,8 @@ package body System.OS_Primitives is + -- these declarations in System.OS_Interface and move these ones in + -- the spec. + +- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- +- type timespec is record +- tv_sec : time_t; +- tv_nsec : Long_Long_Integer; +- end record; +- pragma Convention (C, timespec); +- +- function nanosleep (rqtp, rmtp : not null access timespec) return Integer; ++ function nanosleep (rqtp, rmtp : not null access C_Time.timespec) ++ return Integer; + pragma Import (C, nanosleep, "nanosleep"); + + ----------- +@@ -57,23 +49,12 @@ package body System.OS_Primitives is + ----------- + + function Clock return Duration is +- type timeval is array (1 .. 2) of Long_Long_Integer; +- +- procedure timeval_to_duration +- (T : not null access timeval; +- sec : not null access Long_Integer; +- usec : not null access Long_Integer); +- pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration"); +- +- Micro : constant := 10**6; +- sec : aliased Long_Integer; +- usec : aliased Long_Integer; +- TV : aliased timeval; ++ TV : aliased C_Time.timeval; + Result : Integer; + pragma Unreferenced (Result); + + function gettimeofday +- (Tv : access timeval; ++ (Tv : access C_Time.timeval; + Tz : System.Address := System.Null_Address) return Integer; + pragma Import (C, gettimeofday, "gettimeofday"); + +@@ -87,38 +68,10 @@ package body System.OS_Primitives is + -- value is never checked. + + Result := gettimeofday (TV'Access, System.Null_Address); +- timeval_to_duration (TV'Access, sec'Access, usec'Access); +- return Duration (sec) + Duration (usec) / Micro; ++ return C_Time.To_Duration (TV); + end Clock; + + ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec; +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return +- timespec'(tv_sec => S, +- tv_nsec => Long_Long_Integer (F * 10#1#E9)); +- end To_Timespec; +- +- ----------------- + -- Timed_Delay -- + ----------------- + +@@ -126,8 +79,8 @@ package body System.OS_Primitives is + (Time : Duration; + Mode : Integer) + is +- Request : aliased timespec; +- Remaind : aliased timespec; ++ Request : aliased C_Time.timespec; ++ Remaind : aliased C_Time.timespec; + Rel_Time : Duration; + Abs_Time : Duration; + Base_Time : constant Duration := Clock; +@@ -147,7 +100,7 @@ package body System.OS_Primitives is + + if Rel_Time > 0.0 then + loop +- Request := To_Timespec (Rel_Time); ++ Request := C_Time.To_Timespec (Rel_Time); + Result := nanosleep (Request'Access, Remaind'Access); + Check_Time := Clock; + +--- a/src/gcc/ada/s-oscons-tmplt.c ++++ b/src/gcc/ada/s-oscons-tmplt.c +@@ -1764,6 +1764,17 @@ CND(SIZEOF_tv_usec, "tv_usec") + #endif + CNS(MAX_tv_sec, "") + } ++ ++{ ++ struct timespec ts; ++/* ++ -- Sizes (in bytes) of the components of struct timespec. ++ -- The tv_sec field is the same than in struct timeval. ++*/ ++#define SIZEOF_tv_nsec (sizeof (ts.tv_nsec)) ++CND(SIZEOF_tv_nsec, "tv_nsec"); ++} ++ + /* + + -- Sizes of various data types diff --git a/patches/0002-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff b/patches/0002-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff new file mode 100644 index 0000000..7c7bbd3 --- /dev/null +++ b/patches/0002-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff @@ -0,0 +1,249 @@ +PR ada/114065, patches v15 + +--- a/src/gcc/ada/libgnarl/a-exetim__posix.adb ++++ b/src/gcc/ada/libgnarl/a-exetim__posix.adb +@@ -35,6 +35,7 @@ with Ada.Task_Identification; use Ada.T + with Ada.Unchecked_Conversion; + + with System.C_Time; ++with System.OS_Constants; + with System.Tasking; + with System.OS_Interface; use System.OS_Interface; + with System.Task_Primitives.Operations; use System.Task_Primitives.Operations; +@@ -115,7 +116,8 @@ package body Ada.Execution_Time is + (clock_id : Interfaces.C.int; + tp : access System.C_Time.timespec) + return Interfaces.C.int; +- pragma Import (C, clock_gettime, "clock_gettime"); ++ pragma Import (C, clock_gettime, ++ System.OS_Constants.Y2038_clock_gettime); + -- Function from the POSIX.1b Realtime Extensions library + + function pthread_getcpuclockid +--- a/src/gcc/ada/libgnarl/s-osinte__gnu.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__gnu.ads +@@ -43,6 +43,7 @@ with Ada.Unchecked_Conversion; + with Interfaces.C; + + with System.C_Time; ++with System.OS_Constants; + with System.OS_Locks; + + package System.OS_Interface is +@@ -211,7 +212,7 @@ package System.OS_Interface is + -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) + + function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; +- pragma Import (C, nanosleep, "nanosleep"); ++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); + + type clockid_t is new int; + CLOCK_REALTIME : constant clockid_t := 0; +@@ -221,12 +222,12 @@ package System.OS_Interface is + (clock_id : clockid_t; + tp : access C_Time.timespec) + return int; +- pragma Import (C, clock_gettime, "clock_gettime"); ++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); + + function clock_getres + (clock_id : clockid_t; + res : access C_Time.timespec) return int; +- pragma Import (C, clock_getres, "clock_getres"); ++ pragma Import (C, clock_getres, OS_Constants.Y2038_clock_getres); + + -- From: /usr/include/unistd.h + function sysconf (name : int) return long; +@@ -480,7 +481,8 @@ package System.OS_Interface is + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; + abstime : access C_Time.timespec) return int; +- pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ pragma Import (C, pthread_cond_timedwait, ++ OS_Constants.Y2038_pthread_cond_timedwait); + + Relative_Timed_Wait : constant Boolean := False; + -- pthread_cond_timedwait requires an absolute delay time +--- a/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads +@@ -43,6 +43,7 @@ with Ada.Unchecked_Conversion; + with Interfaces.C; + + with System.C_Time; ++with System.OS_Constants; + with System.OS_Locks; + + package System.OS_Interface is +@@ -206,7 +207,7 @@ package System.OS_Interface is + -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) + + function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; +- pragma Import (C, nanosleep, "nanosleep"); ++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); + + type clockid_t is new int; + CLOCK_REALTIME : constant clockid_t := 0; +@@ -215,12 +216,12 @@ package System.OS_Interface is + (clock_id : clockid_t; + tp : access C_Time.timespec) + return int; +- pragma Import (C, clock_gettime, "clock_gettime"); ++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); + + function clock_getres + (clock_id : clockid_t; + res : access C_Time.timespec) return int; +- pragma Import (C, clock_getres, "clock_getres"); ++ pragma Import (C, clock_getres, OS_Constants.Y2038_clock_getres); + + function sysconf (name : int) return long; + pragma Import (C, sysconf); +@@ -423,7 +424,8 @@ package System.OS_Interface is + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; + abstime : access C_Time.timespec) return int; +- pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ pragma Import (C, pthread_cond_timedwait, ++ OS_Constants.Y2038_pthread_cond_timedwait); + + -------------------------- + -- POSIX.1c Section 13 -- +--- a/src/gcc/ada/libgnarl/s-osinte__linux.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__linux.ads +@@ -232,12 +232,12 @@ package System.OS_Interface is + + function clock_gettime + (clock_id : clockid_t; tp : access C_Time.timespec) return int; +- pragma Import (C, clock_gettime, "clock_gettime"); ++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); + + function clock_getres + (clock_id : clockid_t; + res : access C_Time.timespec) return int; +- pragma Import (C, clock_getres, "clock_getres"); ++ pragma Import (C, clock_getres, OS_Constants.Y2038_clock_getres); + + function sysconf (name : int) return long; + pragma Import (C, sysconf); +@@ -448,7 +448,8 @@ package System.OS_Interface is + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; + abstime : access C_Time.timespec) return int; +- pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ pragma Import (C, pthread_cond_timedwait, ++ OS_Constants.Y2038_pthread_cond_timedwait); + + -------------------------- + -- POSIX.1c Section 13 -- +--- a/src/gcc/ada/libgnat/g-spogwa.adb ++++ b/src/gcc/ada/libgnat/g-spogwa.adb +@@ -42,7 +42,8 @@ is + writefds : access FD_Set_Type; + exceptfds : access FD_Set_Type; + timeout : access System.C_Time.timeval) return Integer +- with Import => True, Convention => Stdcall, External_Name => "select"; ++ with Import => True, Convention => Stdcall, ++ External_Name => System.OS_Constants.Y2038_select; + + Timeout_V : aliased System.C_Time.timeval; + Timeout_A : access System.C_Time.timeval; +--- a/src/gcc/ada/libgnat/s-osprim__posix.adb ++++ b/src/gcc/ada/libgnat/s-osprim__posix.adb +@@ -31,6 +31,7 @@ + + -- This version is for POSIX-like operating systems + with System.C_Time; ++with System.OS_Constants; + + package body System.OS_Primitives is + +@@ -41,7 +42,7 @@ package body System.OS_Primitives is + + function nanosleep (rqtp, rmtp : not null access C_Time.timespec) + return Integer; +- pragma Import (C, nanosleep, "nanosleep"); ++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); + + ----------- + -- Clock -- +@@ -56,7 +57,7 @@ package body System.OS_Primitives is + function gettimeofday + (Tv : access C_Time.timeval; + Tz : System.Address := System.Null_Address) return Integer; +- pragma Import (C, gettimeofday, "gettimeofday"); ++ pragma Import (C, gettimeofday, OS_Constants.Y2038_gettimeofday); + + begin + -- The return codes for gettimeofday are as follows (from man pages): +--- a/src/gcc/ada/libgnat/s-osprim__posix2008.adb ++++ b/src/gcc/ada/libgnat/s-osprim__posix2008.adb +@@ -45,7 +45,7 @@ package body System.OS_Primitives is + + function nanosleep (rqtp, rmtp : not null access C_Time.timespec) + return Integer; +- pragma Import (C, nanosleep, "nanosleep"); ++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); + + ----------- + -- Clock -- +@@ -62,7 +62,7 @@ package body System.OS_Primitives is + function clock_gettime + (clock_id : clockid_t; + tp : access C_Time.timespec) return int; +- pragma Import (C, clock_gettime, "clock_gettime"); ++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); + + begin + Result := clock_gettime (CLOCK_REALTIME, TS'Unchecked_Access); +--- a/src/gcc/ada/s-oscons-tmplt.c ++++ b/src/gcc/ada/s-oscons-tmplt.c +@@ -1777,6 +1777,49 @@ CND(SIZEOF_tv_nsec, "tv_nsec"); + + /* + ++ -- On 32 bits architectures, glibc and musl also support representing time ++ -- types on 64 bits. The usual names are reserved symbols for the 32 bits ++ -- function for backwards compatibility, so distinct symbols are necessary ++ -- for the current version. In other contexts, define Y2038_foo as "foo" ++ -- so that other files may safely Import with External_Name => Y2038_foo. ++*/ ++#if defined(__USE_TIME64_REDIRECTS) || (__TIMESIZE == 32 && __USE_TIME_BITS64) ++/* glibc */ ++# define Y2038_clock_getres "__clock_getres64" ++# define Y2038_clock_gettime "__clock_gettime64" ++# define Y2038_gettimeofday "__gettimeofday64" ++# define Y2038_nanosleep "__nanosleep64" ++# define Y2038_pthread_cond_timedwait "__pthread_cond_timedwait64" ++# define Y2038_pthread_cond_wait "__pthread_cond_wait64" ++# define Y2038_select "__select64" ++#elif defined(_REDIR_TIME64) ++/* musl */ ++# define Y2038_clock_getres "__clock_getres_time64" ++# define Y2038_clock_gettime "__clock_gettime64" ++# define Y2038_gettimeofday "__gettimeofday_time64" ++# define Y2038_nanosleep "__nanosleep_time64" ++# define Y2038_pthread_cond_timedwait "__pthread_cond_timedwait_time64" ++# define Y2038_pthread_cond_wait "__pthread_cond_wait_time64" ++# define Y2038_select "__select_time64" ++#else ++# define Y2038_clock_getres "clock_getres" ++# define Y2038_clock_gettime "clock_gettime" ++# define Y2038_gettimeofday "gettimeofday" ++# define Y2038_nanosleep "nanosleep" ++# define Y2038_pthread_cond_timedwait "pthread_cond_timedwait" ++# define Y2038_pthread_cond_wait "pthread_cond_wait" ++# define Y2038_select "select" ++#endif ++CST(Y2038_clock_getres, "") ++CST(Y2038_clock_gettime, "") ++CST(Y2038_gettimeofday, "") ++CST(Y2038_nanosleep, "") ++CST(Y2038_pthread_cond_timedwait, "") ++CST(Y2038_pthread_cond_wait, "") ++CST(Y2038_select, "") ++ ++/* ++ + -- Sizes of various data types + */ + diff --git a/patches/D-22464.diff b/patches/D-22464.diff new file mode 100644 index 0000000..2b02545 --- /dev/null +++ b/patches/D-22464.diff @@ -0,0 +1,35 @@ +--- a/src/gcc/d/dmd/globals.d ++++ b/src/gcc/d/dmd/globals.d +@@ -301,7 +301,7 @@ extern (C++) struct Global + Array!(const(char)*) filePath; /// Array of char*'s which form the file import lookup path + + private enum string _version = import("VERSION"); +- char[26] datetime; /// string returned by ctime() ++ char[26] datetime; /// string returned by asctime() + CompileEnv compileEnv; + + Param params; /// command line parameters +@@ -415,15 +415,19 @@ extern (C++) struct Global + import core.stdc.stdlib : getenv; + + time_t ct; ++ const(char)* p; + // https://issues.dlang.org/show_bug.cgi?id=20444 +- if (auto p = getenv("SOURCE_DATE_EPOCH")) ++ if (auto epoch = getenv("SOURCE_DATE_EPOCH")) + { +- if (!ct.parseDigits(p[0 .. strlen(p)])) +- errorSink.error(Loc.initial, "value of environment variable `SOURCE_DATE_EPOCH` should be a valid UNIX timestamp, not: `%s`", p); ++ if (!ct.parseDigits(epoch[0 .. strlen(epoch)])) ++ errorSink.error(Loc.initial, "value of environment variable `SOURCE_DATE_EPOCH` should be a valid UNIX timestamp, not: `%s`", epoch); ++ p = asctime(gmtime(&ct)); + } + else ++ { + core.stdc.time.time(&ct); +- const p = ctime(&ct); ++ p = ctime(&ct); // asctime(localtime(&ct)) ++ } + assert(p); + datetime[] = p[0 .. 26]; + diff --git a/patches/ada-armel-libatomic.diff b/patches/ada-armel-libatomic.diff new file mode 100644 index 0000000..8094f19 --- /dev/null +++ b/patches/ada-armel-libatomic.diff @@ -0,0 +1,79 @@ +Description: link libgnarl with libatomic on armel + On other architectures, the library is ignored thanks to --as-needed. + . + Seen with 14-20240429-1: + cd rts; [bla]/./gcc/xgcc [bla] -shared [bla] -o libgnarl-14.so [bla] + /usr/bin/arm-linux-gnueabi-ld: libgnat-14.so: undefined reference to `__atomic_compare_exchange_8' + /usr/bin/arm-linux-gnueabi-ld: libgnat-14.so: undefined reference to `__atomic_load_8' + . + Libatomic becomes an artificial dependency for Ada in Makefile.def, + so a better solution is welcome. + . + Autogen should refresh src/Makefile.in from src/Makefile.{def,tpl} + at build time, but we do not want to Build-Depend: guile. + # export QUILT_PATCHES=debian/patches + # quilt pop $this.diff + # quilt add src/Makefile.in + # (cd src && autogen Makefile.def) + # quilt refresh --no-timestamps --no-index -pab + # quilt push -a + . + The issue is hidden without -Wl,--no-allow-shlib-undefined. + (ada-gnattools-cross.diff adds checking options to LDFLAGS, + then adds LDFLAGS to the command line). +Bug-Debian: https://bugs.debian.org/861734 +Author: Matthias Klose +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/Makefile.rtl ++++ b/src/gcc/ada/Makefile.rtl +@@ -2530,7 +2530,7 @@ ifeq ($(strip $(filter-out arm% linux-gn + EXTRA_GNATRTL_TASKING_OBJS=s-linux.o + EH_MECHANISM=-arm + THREADSLIB = -lpthread +- MISCLIB = -ldl ++ MISCLIB = ../../../$(target_alias)/libatomic/.libs/libatomic.so -ldl + GNATLIB_SHARED = gnatlib-shared-dual + GMEM_LIB = gmemlib + LIBRARY_VERSION := $(LIB_VERSION) +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -418,6 +418,8 @@ dependencies = { module=all-target-libad + dependencies = { module=all-gnattools; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; + ++dependencies = { module=all-target-libada; on=all-target-libatomic; }; ++ + // Depending on the specific configuration, the LTO plugin will either use the + // generic libiberty build or the specific build for linker plugins. + dependencies = { module=all-lto-plugin; on=all-libiberty; }; +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -69199,6 +69199,9 @@ configure-m4: stage_last + @endif gcc-bootstrap + + @if gcc-bootstrap ++@unless target-libatomic-bootstrap ++all-target-libada: maybe-all-target-libatomic ++@endunless target-libatomic-bootstrap + @unless target-zlib-bootstrap + configure-target-fastjar: maybe-configure-target-zlib + @endunless target-zlib-bootstrap +@@ -69234,6 +69237,7 @@ configure-target-libgo: maybe-all-target + @unless gcc-bootstrap + all-target-libada: maybe-all-gcc + all-gnattools: maybe-all-target-libstdc++-v3 ++all-target-libada: maybe-all-target-libatomic + configure-libcc1: maybe-configure-gcc + all-libcc1: maybe-all-gcc + all-c++tools: maybe-all-gcc +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -727,6 +727,7 @@ gnatlib-shared-default: + $(GNATRTL_TASKING_OBJS) \ + $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ + libgnat$(hyphen)$(LIBRARY_VERSION).so \ ++ $(MISCLIB) \ + $(THREADSLIB) + cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ + libgnat$(soext) diff --git a/patches/ada-gcc-name.diff b/patches/ada-gcc-name.diff new file mode 100644 index 0000000..6a7731f --- /dev/null +++ b/patches/ada-gcc-name.diff @@ -0,0 +1,240 @@ +Description: always call gcc with an explicit target and version + When gnat tools call each other, they should use the same prefix + and/or suffix in order to ensure the same target and version. + . + Let gnatchop call Osint.Program_Name instead of duplicating it. + This part may be of interest in GCC. + . + On Debian, the TARGET-TOOL-VERSION commands are always available, so + Osint.Program_Name simply prepends Sdefault.Target_Name and appends + Gnatvsn.Library_Version, independently of the current program name. + . + Log for bug 903694 carries regression tests for both bugs. + Also see pr79724. +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87777 +Bug-Debian: https://bugs.debian.org/814977 +Bug-Debian: https://bugs.debian.org/814978 +Bug-Debian: https://bugs.debian.org/856274 +Bug-Debian: https://bugs.debian.org/881938 +Bug-Debian: https://bugs.debian.org/903694 +Author: Ludovic Brenta +Author: Nicolas Boulenguez +Author: Svante Signell +Author: YunQiang Su + +--- a/src/gcc/ada/osint.ads ++++ b/src/gcc/ada/osint.ads +@@ -144,14 +144,9 @@ package Osint is + -- path) in Name_Buffer, with the length in Name_Len. + + function Program_Name (Nam : String; Prog : String) return String_Access; +- -- In the native compilation case, creates a string containing Nam. In the +- -- cross compilation case, looks at the prefix of the current program being +- -- run and prepends it to Nam. For instance if the program being run is +- -- -gnatmake and Nam is "gcc", the returned value will be a pointer +- -- to "-gcc". This function clobbers Name_Buffer and Name_Len. +- -- Also looks at any suffix, e.g. gnatmake-4.1 -> "gcc-4.1". Prog is the +- -- default name of the current program being executed, e.g. "gnatmake", +- -- "gnatlink". ++ -- On Debian, this function ignores Prog and returns ++ -- Sdefault.Target_Name - Nam - Gnatvsn.Library_Version ++ -- with the final slash removed from Target_Name. + + procedure Write_Program_Name; + -- Writes name of program as invoked to the current output (normally +--- a/src/gcc/ada/osint.adb ++++ b/src/gcc/ada/osint.adb +@@ -2258,46 +2258,15 @@ package body Osint is + ------------------ + + function Program_Name (Nam : String; Prog : String) return String_Access is +- End_Of_Prefix : Natural := 0; +- Start_Of_Prefix : Positive := 1; +- Start_Of_Suffix : Positive; ++ pragma Unreferenced (Prog); ++ Prefix : Types.String_Ptr := Sdefault.Target_Name; ++ Result : constant System.OS_Lib.String_Access := new String' ++ (Prefix.all (Prefix'First .. Prefix'Last - 1) & '-' & Nam & '-' ++ & Gnatvsn.Library_Version); + + begin +- -- Get the name of the current program being executed +- +- Find_Program_Name; +- +- -- Find the target prefix if any, for the cross compilation case. +- -- For instance in "powerpc-elf-gcc" the target prefix is +- -- "powerpc-elf-" +- -- Ditto for suffix, e.g. in "gcc-4.1", the suffix is "-4.1" +- +- for J in reverse 1 .. Name_Len loop +- if Is_Directory_Separator (Name_Buffer (J)) +- or else Name_Buffer (J) = ':' +- then +- Start_Of_Prefix := J + 1; +- exit; +- end if; +- end loop; +- +- -- Find End_Of_Prefix +- +- for J in Start_Of_Prefix .. Name_Len - Prog'Length + 1 loop +- if Name_Buffer (J .. J + Prog'Length - 1) = Prog then +- End_Of_Prefix := J - 1; +- exit; +- end if; +- end loop; +- +- Start_Of_Suffix := End_Of_Prefix + Prog'Length + 1; +- +- -- Create the new program name +- +- return new String' +- (Name_Buffer (Start_Of_Prefix .. End_Of_Prefix) +- & Nam +- & Name_Buffer (Start_Of_Suffix .. Name_Len)); ++ Types.Free (Prefix); ++ return Result; + end Program_Name; + + ------------------------------ +--- a/src/gcc/ada/gnatchop.adb ++++ b/src/gcc/ada/gnatchop.adb +@@ -36,6 +36,7 @@ with GNAT.OS_Lib; use GNA + with GNAT.Heap_Sort_G; + with GNAT.Table; + ++with Osint; + with Switch; use Switch; + with Types; + +@@ -44,12 +45,9 @@ procedure Gnatchop is + Config_File_Name : constant String_Access := new String'("gnat.adc"); + -- The name of the file holding the GNAT configuration pragmas + +- Gcc : String_Access := new String'("gcc"); ++ Gcc : String_Access := null; + -- May be modified by switch --GCC= + +- Gcc_Set : Boolean := False; +- -- True if a switch --GCC= is used +- + Gnat_Cmd : String_Access; + -- Command to execute the GNAT compiler + +@@ -222,12 +220,6 @@ procedure Gnatchop is + Integer'Image + (Maximum_File_Name_Length); + +- function Locate_Executable +- (Program_Name : String; +- Look_For_Prefix : Boolean := True) return String_Access; +- -- Locate executable for given program name. This takes into account +- -- the target-prefix of the current command, if Look_For_Prefix is True. +- + subtype EOL_Length is Natural range 0 .. 2; + -- Possible lengths of end of line sequence + +@@ -492,76 +484,6 @@ procedure Gnatchop is + Unit.Table (Sorted_Units.Table (U + 1)).File_Name.all; + end Is_Duplicated; + +- ----------------------- +- -- Locate_Executable -- +- ----------------------- +- +- function Locate_Executable +- (Program_Name : String; +- Look_For_Prefix : Boolean := True) return String_Access +- is +- Gnatchop_Str : constant String := "gnatchop"; +- Current_Command : constant String := Normalize_Pathname (Command_Name); +- End_Of_Prefix : Natural; +- Start_Of_Prefix : Positive; +- Start_Of_Suffix : Positive; +- Result : String_Access; +- +- begin +- Start_Of_Prefix := Current_Command'First; +- Start_Of_Suffix := Current_Command'Last + 1; +- End_Of_Prefix := Start_Of_Prefix - 1; +- +- if Look_For_Prefix then +- +- -- Find Start_Of_Prefix +- +- for J in reverse Current_Command'Range loop +- if Current_Command (J) = '/' or else +- Current_Command (J) = Directory_Separator or else +- Current_Command (J) = ':' +- then +- Start_Of_Prefix := J + 1; +- exit; +- end if; +- end loop; +- +- -- Find End_Of_Prefix +- +- for J in Start_Of_Prefix .. +- Current_Command'Last - Gnatchop_Str'Length + 1 +- loop +- if Current_Command (J .. J + Gnatchop_Str'Length - 1) = +- Gnatchop_Str +- then +- End_Of_Prefix := J - 1; +- exit; +- end if; +- end loop; +- end if; +- +- if End_Of_Prefix > Current_Command'First then +- Start_Of_Suffix := End_Of_Prefix + Gnatchop_Str'Length + 1; +- end if; +- +- declare +- Command : constant String := +- Current_Command (Start_Of_Prefix .. End_Of_Prefix) +- & Program_Name +- & Current_Command (Start_Of_Suffix .. +- Current_Command'Last); +- begin +- Result := Locate_Exec_On_Path (Command); +- +- if Result = null then +- Error_Msg +- (Command & ": installation problem, executable not found"); +- end if; +- end; +- +- return Result; +- end Locate_Executable; +- + --------------- + -- Parse_EOL -- + --------------- +@@ -1088,8 +1010,8 @@ procedure Gnatchop is + exit; + + when '-' => +- Gcc := new String'(Parameter); +- Gcc_Set := True; ++ Free (Gcc); ++ Gcc := new String'(Parameter); + + when 'c' => + Compilation_Mode := True; +@@ -1767,9 +1689,13 @@ begin + + -- Check presence of required executables + +- Gnat_Cmd := Locate_Executable (Gcc.all, not Gcc_Set); ++ if Gcc = null then ++ Gcc := Osint.Program_Name ("gcc", "gnatchop"); ++ end if; ++ Gnat_Cmd := Locate_Exec_On_Path (Gcc.all); + + if Gnat_Cmd = null then ++ Error_Msg (Gcc.all & ": installation problem, executable not found"); + goto No_Files_Written; + end if; + diff --git a/patches/ada-gnat-name.diff b/patches/ada-gnat-name.diff new file mode 100644 index 0000000..3e83705 --- /dev/null +++ b/patches/ada-gnat-name.diff @@ -0,0 +1,178 @@ +# DP: allow override of build and host gnat compilers + +Allow the Debian build system to select the Ada compiler producing + * source generators for the build machine + * gnat tools for the host machine + +In Makefile.tpl (hence .in), chunk 1 modifies HOST_EXPORTS and chunk 3 +modifies EXTRA_TARGET_FLAGS. + +When gcc/ada/{Make-generated,/gcc-interface/Makefile}.in are modified, +ada-verbose.diff must be refreshed. + +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120106 +Bug-Debian: https://bugs.debian.org/1078144 + +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -206,6 +206,7 @@ HOST_EXPORTS = \ + GOC="$(GOC)"; export GOC; \ + GDC="$(GDC)"; export GDC; \ + GM2="$(GM2)"; export GM2; \ ++ GNATMAKE_FOR_BUILD="$(GNATMAKE_FOR_BUILD)"; export GNATMAKE_FOR_BUILD; \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ +@@ -380,6 +381,7 @@ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD + GOC_FOR_BUILD = @GOC_FOR_BUILD@ + GDC_FOR_BUILD = @GDC_FOR_BUILD@ + GM2_FOR_BUILD = @GM2_FOR_BUILD@ ++GNATMAKE_FOR_BUILD = @GNATMAKE_FOR_BUILD@ + LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ + LD_FOR_BUILD = @LD_FOR_BUILD@ + NM_FOR_BUILD = @NM_FOR_BUILD@ +@@ -1043,6 +1045,7 @@ EXTRA_TARGET_FLAGS = \ + 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ + 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GM2FLAGS=$$(GM2FLAGS_FOR_TARGET)' \ ++ 'GNATMAKE_FOR_BUILD=$(GNATMAKE_FOR_BUILD)' \ + 'LD=$(COMPILER_LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -209,6 +209,7 @@ HOST_EXPORTS = \ + GOC="$(GOC)"; export GOC; \ + GDC="$(GDC)"; export GDC; \ + GM2="$(GM2)"; export GM2; \ ++ GNATMAKE_FOR_BUILD="$(GNATMAKE_FOR_BUILD)"; export GNATMAKE_FOR_BUILD; \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ +@@ -383,6 +384,7 @@ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD + GOC_FOR_BUILD = @GOC_FOR_BUILD@ + GDC_FOR_BUILD = @GDC_FOR_BUILD@ + GM2_FOR_BUILD = @GM2_FOR_BUILD@ ++GNATMAKE_FOR_BUILD = @GNATMAKE_FOR_BUILD@ + LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ + LD_FOR_BUILD = @LD_FOR_BUILD@ + NM_FOR_BUILD = @NM_FOR_BUILD@ +@@ -799,6 +801,7 @@ EXTRA_TARGET_FLAGS = \ + 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ + 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GM2FLAGS=$$(GM2FLAGS_FOR_TARGET)' \ ++ 'GNATMAKE_FOR_BUILD=$(GNATMAKE_FOR_BUILD)' \ + 'LD=$(COMPILER_LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -1453,6 +1453,7 @@ if test "${build}" != "${host}" ; then + GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} + GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} + GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} ++ GNATMAKE_FOR_BUILD=${GNATMAKE_FOR_BUILD-gnatmake} + DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} + LD_FOR_BUILD=${LD_FOR_BUILD-ld} + NM_FOR_BUILD=${NM_FOR_BUILD-nm} +@@ -1468,6 +1469,7 @@ else + GFORTRAN_FOR_BUILD="\$(GFORTRAN)" + GOC_FOR_BUILD="\$(GOC)" + GDC_FOR_BUILD="\$(GDC)" ++ GNATMAKE_FOR_BUILD="\$(GNATMAKE)" + DLLTOOL_FOR_BUILD="\$(DLLTOOL)" + LD_FOR_BUILD="\$(LD)" + NM_FOR_BUILD="\$(NM)" +@@ -3910,6 +3912,7 @@ AC_SUBST(DSYMUTIL_FOR_BUILD) + AC_SUBST(GFORTRAN_FOR_BUILD) + AC_SUBST(GOC_FOR_BUILD) + AC_SUBST(GDC_FOR_BUILD) ++AC_SUBST(GNATMAKE_FOR_BUILD) + AC_SUBST(LDFLAGS_FOR_BUILD) + AC_SUBST(LD_FOR_BUILD) + AC_SUBST(NM_FOR_BUILD) +--- a/src/gcc/ada/Make-generated.in ++++ b/src/gcc/ada/Make-generated.in +@@ -18,7 +18,7 @@ GEN_IL_FLAGS = -gnata -gnat2012 -gnatw.g + ada/seinfo_tables.ads ada/seinfo_tables.adb ada/sinfo.h ada/einfo.h ada/nmake.ads ada/nmake.adb ada/seinfo.ads ada/sinfo-nodes.ads ada/sinfo-nodes.adb ada/einfo-entities.ads ada/einfo-entities.adb: ada/stamp-gen_il ; @true + ada/stamp-gen_il: $(fsrcdir)/ada/gen_il* + $(MKDIR) ada/gen_il +- cd ada/gen_il; gnatmake -g $(GEN_IL_FLAGS) gen_il-main ++ cd ada/gen_il; $(GNATMAKE_FOR_BUILD) -g $(GEN_IL_FLAGS) gen_il-main + # Ignore errors to work around finalization issues in older compilers + - cd ada/gen_il; ./gen_il-main + $(fsrcdir)/../move-if-change ada/gen_il/seinfo_tables.ads ada/seinfo_tables.ads +@@ -39,14 +39,14 @@ ada/stamp-gen_il: $(fsrcdir)/ada/gen_il* + # would cause bootstrapping with older compilers to fail. You can call it by + # hand, as a sanity check that these files are legal. + ada/seinfo_tables.o: ada/seinfo_tables.ads ada/seinfo_tables.adb +- cd ada ; gnatmake $(GEN_IL_INCLUDES) seinfo_tables.adb -gnatU -gnatX ++ cd ada ; $(GNATMAKE_FOR_BUILD) $(GEN_IL_INCLUDES) seinfo_tables.adb -gnatU -gnatX + + ada/snames.h ada/snames.ads ada/snames.adb : ada/stamp-snames ; @true + ada/stamp-snames : ada/snames.ads-tmpl ada/snames.adb-tmpl ada/snames.h-tmpl ada/xsnamest.adb ada/xutil.ads ada/xutil.adb + -$(MKDIR) ada/bldtools/snamest + $(RM) $(addprefix ada/bldtools/snamest/,$(notdir $^)) + $(CP) $^ ada/bldtools/snamest +- cd ada/bldtools/snamest && gnatmake xsnamest && ./xsnamest ++ cd ada/bldtools/snamest && $(GNATMAKE_FOR_BUILD) xsnamest && ./xsnamest + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.ns ada/snames.ads + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nb ada/snames.adb + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nh ada/snames.h +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -648,7 +648,7 @@ OSCONS_EXTRACT=$(GCC_FOR_ADA_RTS) $(GNAT + -$(MKDIR) ./bldtools/oscons + $(RM) $(addprefix ./bldtools/oscons/,$(notdir $^)) + $(CP) $^ ./bldtools/oscons +- (cd ./bldtools/oscons ; gnatmake xoscons) ++ (cd ./bldtools/oscons ; $(GNATMAKE_FOR_BUILD) xoscons) + + $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons + $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -33,7 +33,8 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ + # Nonstandard autoconf-set variables. + LN_S=@LN_S@ + target_noncanonical=@target_noncanonical@ +-host_noncanonical=@host_noncanonical@ ++GNATMAKE=@GNATMAKE@ ++GNATBIND=@GNATBIND@ + + # Variables for the user (or the top level) to override. + exeext = @EXEEXT@ +@@ -122,17 +123,11 @@ TOOLS_FLAGS_TO_PASS_RE= \ + "TOOLSCASE=cross" + + # Variables for gnattools, cross +-ifeq ($(build), $(host)) +- GNATMAKE_FOR_HOST=gnatmake +- GNATLINK_FOR_HOST=gnatlink +- GNATBIND_FOR_HOST=gnatbind +- GNATLS_FOR_HOST=gnatls +-else +- GNATMAKE_FOR_HOST=$(host_noncanonical)-gnatmake +- GNATLINK_FOR_HOST=$(host_noncanonical)-gnatlink +- GNATBIND_FOR_HOST=$(host_noncanonical)-gnatbind +- GNATLS_FOR_HOST=$(host_noncanonical)-gnatls +-endif ++# See configure.ac for what "cross" means here. ++GNATMAKE_FOR_HOST=$(GNATMAKE) ++GNATLINK_FOR_HOST=$(subst gnatmake,gnatlink,$(GNATMAKE)) ++GNATBIND_FOR_HOST=$(GNATBIND) ++GNATLS_FOR_HOST=$(subst gnatmake,gnatls,$(GNATMAKE)) + + # Put the host RTS dir first in the PATH to hide the default runtime + # files that are among the sources +--- a/src/gnattools/configure.ac ++++ b/src/gnattools/configure.ac +@@ -45,7 +45,7 @@ AC_CANONICAL_BUILD + AC_CANONICAL_HOST + AC_CANONICAL_TARGET + +-ACX_NONCANONICAL_HOST ++ACX_PROG_GNAT + ACX_NONCANONICAL_TARGET + + # Need to pass this down for now :-P diff --git a/patches/ada-gnattools-cross.diff b/patches/ada-gnattools-cross.diff new file mode 100644 index 0000000..12896ea --- /dev/null +++ b/patches/ada-gnattools-cross.diff @@ -0,0 +1,228 @@ +TODO: Check that the part removing the dependency from stamp-gnatlib1 +to stamp-gnatlib2 is not necessary anymore with gcc-9. + +* Link tools dynamically. +* Prevent direct embedding of libada objects: + Mark ALI files as read-only, remove objects after the build. + A solution keeping the objects would be more intrusive. +* Rebuild gnatbind/make/link with themselves. + This removes unneeded objects inherited from the hardcoded bootstrap list. + The same thing would be useful for gnat1drv, but is less easy. +* TOOLS_ALREADY_COMPILED lists LIBGNAT objects that + gcc/ada/gcc-interface/Makefile should not rebuild. +* Link libgnat/gnarl with LDFLAGS. +* Link libgnarl with an explicit path to a shared object. + This prevents undefined symbols or unwanted usage of host libgnat. +* Compile with -gnatn for efficiency. + Double-check the link since Debian moves some symbols. +* set LD_LIBRARY_PATH so that rebuilt tools can be executed. + +--- a/src/gcc/ada/Makefile.rtl ++++ b/src/gcc/ada/Makefile.rtl +@@ -2041,6 +2041,11 @@ ifeq ($(strip $(filter-out s390% linux%, + endif + endif + ++ifeq ($(strip $(filter-out hppa% unknown linux gnu,$(targ))),) ++ GNATLIB_SHARED = gnatlib-shared-dual ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + # HP/PA HP-UX 11 + ifeq ($(SELECTED_PAIRS),PAIRS_NONE) + ifeq ($(strip $(filter-out hppa% hp hpux11%,$(target_cpu) $(target_vendor) $(target_os))),) +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -516,6 +516,20 @@ gnatlink-re: ../stamp-tools gnatmake-re + --LINK="$(GCC_LINK)" $(TOOLS_LIBS) + $(MV) ../../gnatlinknew$(exeext) ../../gnatlink$(exeext) + ++gnatbind-re: ../stamp-tools gnatmake-re gnatlink-re ++ $(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatbind --GCC="$(CC) $(ALL_ADAFLAGS)" ++ $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatbind ++ $(GNATLINK) -v gnatbind -o ../../gnatbind$(exeext) \ ++ --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS) ++ ++# When driven by gnattools/Makefile for a native build, ++# TOOLS_ALREADY_COMPILED will list objects in the target standard Ada ++# libraries, that Make should avoid rebuilding. ++# We cannot use recursive variables to avoid an infinite loop, ++# so we must put this after definition of EXTRA_GNATMAKE_OBJS. ++GNATLINK_OBJS := $(filter-out $(TOOLS_ALREADY_COMPILED),$(GNATLINK_OBJS)) ++GNATMAKE_OBJS := $(filter-out $(TOOLS_ALREADY_COMPILED),$(GNATMAKE_OBJS)) ++ + # Needs to be built with CC=gcc + # Since the RTL should be built with the latest compiler, remove the + # stamp target in the parent directory whenever gnat1 is rebuilt +@@ -643,7 +657,7 @@ $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib + $(OSCONS_EXTRACT) ; \ + ../bldtools/oscons/xoscons s-oscons) + +-gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads ++gnatlib: ../stamp-gnatlib1-$(RTSDIR) $(RTSDIR)/s-oscons.ads + test -f $(RTSDIR)/s-oscons.ads || exit 1 + # C files + $(MAKE) -C $(RTSDIR) \ +@@ -675,18 +689,30 @@ gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../ + $(RANLIB_FOR_TARGET) $(RTSDIR)/libgmem$(arext) + endif + $(CHMOD) a-wx $(RTSDIR)/*.ali ++# Provide .ads .adb (read-only).ali .so .a, but prevent direct use of .o. ++ $(RM) $(RTSDIR)/*.o + touch ../stamp-gnatlib-$(RTSDIR) + + # Warning: this target assumes that LIBRARY_VERSION has been set correctly. + gnatlib-shared-default: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET) -fno-lto" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET) -fno-lto" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- LN_S="$(LN_S)" \ +- gnatlib ++ $(MAKE) -C $(RTSDIR) \ ++ CC="`echo \"$(GCC_FOR_TARGET)\" \ ++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ ++ INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ ++ CFLAGS="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET) -fno-lto" \ ++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ srcdir=$(fsrcdir) \ ++ -f ../Makefile $(LIBGNAT_OBJS) ++ $(MAKE) -C $(RTSDIR) \ ++ CC="`echo \"$(GCC_FOR_TARGET)\" \ ++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ ++ ADA_INCLUDES="" \ ++ CFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET) -fno-lto" \ ++ ADAFLAGS="$(GNATLIBFLAGS) $(PICFLAG_FOR_TARGET) -fno-lto" \ ++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ srcdir=$(fsrcdir) \ ++ -f ../Makefile \ ++ $(GNATRTL_OBJS) + $(RM) $(RTSDIR)/libgna*$(soext) + cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ +@@ -697,8 +723,10 @@ gnatlib-shared-default: + cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ + -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ $(LDFLAGS) \ + $(GNATRTL_TASKING_OBJS) \ + $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ libgnat$(hyphen)$(LIBRARY_VERSION).so \ + $(THREADSLIB) + cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ + libgnat$(soext) +@@ -714,6 +742,10 @@ gnatlib-shared-default: + $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS)) + $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnarl_pic$(arext) + ++# Provide .ads .adb (read-only).ali .so .a, but prevent direct use of .o. ++ $(CHMOD) a-wx $(RTSDIR)/*.ali ++ $(RM) $(RTSDIR)/*.o ++ + gnatlib-shared-dual: + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +@@ -723,11 +755,8 @@ gnatlib-shared-dual: + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + LN_S="$(LN_S)" \ +- gnatlib-shared-default +- $(MV) $(RTSDIR)/libgna*$(soext) . +- $(MV) $(RTSDIR)/libgnat_pic$(arext) . +- $(MV) $(RTSDIR)/libgnarl_pic$(arext) . +- $(RM) ../stamp-gnatlib2-$(RTSDIR) ++ gnatlib ++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +@@ -735,10 +764,7 @@ gnatlib-shared-dual: + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + LN_S="$(LN_S)" \ +- gnatlib +- $(MV) libgna*$(soext) $(RTSDIR) +- $(MV) libgnat_pic$(arext) $(RTSDIR) +- $(MV) libgnarl_pic$(arext) $(RTSDIR) ++ gnatlib-shared-default + + # Remove all the object files. They cannot be reused because they have + # been generated for the static library and the shared library will be +@@ -757,9 +783,8 @@ gnatlib-shared-dual-win32: + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + LN_S="$(LN_S)" \ +- gnatlib-shared-win32 +- $(MV) $(RTSDIR)/libgna*$(soext) . +- $(RM) ../stamp-gnatlib2-$(RTSDIR) ++ gnatlib ++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +@@ -767,8 +792,7 @@ gnatlib-shared-dual-win32: + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + LN_S="$(LN_S)" \ +- gnatlib +- $(MV) libgna*$(soext) $(RTSDIR) ++ gnatlib-shared-win32 + + # ??? we need to add the option to support auto-import of arrays/records to + # the GNATLIBFLAGS when this will be supported by GNAT. At this point we will +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -78,16 +78,23 @@ CXX_LFLAGS = \ + -L../../../$(target_noncanonical)/libstdc++-v3/src/.libs \ + -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs + ++rtsdir := $(abspath ../gcc/ada/rts) ++ + # Variables for gnattools, native + TOOLS_FLAGS_TO_PASS_NATIVE= \ + "CC=../../xgcc -B../../" \ + "CXX=../../xg++ -B../../ $(CXX_LFLAGS)" \ + "CFLAGS=$(CFLAGS) $(WARN_CFLAGS) $(PICFLAG)" \ +- "LDFLAGS=$(LDFLAGS) $(LD_PICFLAG)" \ +- "ADAFLAGS=$(ADAFLAGS)" \ ++ "LDFLAGS=$(LDFLAGS) $(LD_PICFLAG) -Wl,--no-allow-shlib-undefined \ ++ -Wl,--no-copy-dt-needed-entries -Wl,--no-undefined" \ ++ "ADAFLAGS=$(ADAFLAGS) -gnatn" \ + "ADA_CFLAGS=$(ADA_CFLAGS)" \ + "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ +- "ADA_INCLUDES=-I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\ ++ "ADA_INCLUDES=-I- -nostdinc -I$(rtsdir) $(ADA_INCLUDES_FOR_SUBDIR)" \ ++ "TOOLS_ALREADY_COMPILED=$(foreach d, $(rtsdir), \ ++ $(patsubst $(d)/%.ali,%.o, $(wildcard $(d)/*.ali)))" \ ++ 'LIBGNAT=$(rtsdir)/libgnat-$$(LIB_VERSION).so' \ ++ "GNATBIND_FLAGS=-nostdlib -x" \ + "exeext=$(exeext)" \ + "fsrcdir=$(fsrcdir)" \ + "srcdir=$(fsrcdir)" \ +@@ -197,6 +204,10 @@ $(GCC_DIR)/stamp-tools: + # to be able to build gnatmake without a version of gnatmake around. Once + # everything has been compiled once, gnatmake can be recompiled with itself + # (see target regnattools) ++gnattools-native: export LD_LIBRARY_PATH := \ ++ $(if $(LD_LIBRARY_PATH),$(LD_LIBRARY_PATH):)$(rtsdir) ++# Useful even for 1st pass, as ../../gnatmake may already be ++# dynamically linked in case this target has already been invoked. + gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib-rts + # gnattools1 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +@@ -205,6 +216,13 @@ gnattools-native: $(GCC_DIR)/stamp-tools + # gnattools2 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools ++# The hard-coded object lists for gnatbind/make/link contain unneeded ++# objects. Use the fresh tools to recompute dependencies. ++# A separate Make run avoids race conditions between gnatmakes ++# building the same object for common-tools and gnat*-re. ++# (parallelism is already forbidden between gnat*-re targets) ++ $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ ++ $(TOOLS_FLAGS_TO_PASS_NATIVE) gnatbind-re gnatmake-re gnatlink-re + + # gnatmake/link can be built with recent gnatmake/link if they are available. + # This is especially convenient for building cross tools or for rebuilding diff --git a/patches/ada-lib-info-source-date-epoch.diff b/patches/ada-lib-info-source-date-epoch.diff new file mode 100644 index 0000000..9f27cfb --- /dev/null +++ b/patches/ada-lib-info-source-date-epoch.diff @@ -0,0 +1,121 @@ +Description: set ALI timestamps from SOURCE_DATE_EPOCH if available. + When the SOURCE_DATE_EPOCH environment variable is set, + replace timestamps more recent than its value with its value + when writing Ada Library Information (ALI) files. + This allow reproducible builds from generated or patched Ada sources. + https://reproducible-builds.org/specs/source-date-epoch/ + . + Also see debian/ada/test_ada_source_date_epoch.sh. +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/osint.adb ++++ b/src/gcc/ada/osint.adb +@@ -64,6 +64,10 @@ package body Osint is + -- Used in Locate_File as a fake directory when Name is already an + -- absolute path. + ++ Source_Date_Epoch : OS_Time := Invalid_Time; ++ -- Set at startup by the Initialize procedure. ++ -- See the specification of the File_Time_Stamp functions. ++ + ------------------------------------- + -- Use of Name_Find and Name_Enter -- + ------------------------------------- +@@ -1125,8 +1129,14 @@ package body Osint is + is + function Internal (N : C_File_Name; A : System.Address) return OS_Time; + pragma Import (C, Internal, "__gnat_file_time_name_attr"); ++ T : OS_Time := Internal (Name, Attr.all'Address); + begin +- return Internal (Name, Attr.all'Address); ++ if Source_Date_Epoch /= Invalid_Time and then T /= Invalid_Time ++ and then Source_Date_Epoch < T ++ then ++ T := Source_Date_Epoch; ++ end if; ++ return T; + end File_Time_Stamp; + + function File_Time_Stamp +@@ -1149,6 +1159,7 @@ package body Osint is + ---------------- + + function File_Stamp (Name : File_Name_Type) return Time_Stamp_Type is ++ T : OS_Time; + begin + if Name = No_File then + return Empty_Time_Stamp; +@@ -1160,9 +1171,13 @@ package body Osint is + -- not exist, and OS_Time_To_GNAT_Time will convert this value to + -- Empty_Time_Stamp. Therefore we do not need to first test whether + -- the file actually exists, which saves a system call. +- +- return OS_Time_To_GNAT_Time +- (File_Time_Stamp (Name_Buffer (1 .. Name_Len))); ++ T := File_Time_Stamp (Name_Buffer (1 .. Name_Len)); ++ if Source_Date_Epoch /= Invalid_Time and then T /= Invalid_Time ++ and then Source_Date_Epoch < T ++ then ++ T := Source_Date_Epoch; ++ end if; ++ return OS_Time_To_GNAT_Time (T); + end File_Stamp; + + function File_Stamp (Name : Path_Name_Type) return Time_Stamp_Type is +@@ -3213,4 +3228,34 @@ begin + Osint.Initialize; + end Initialization; + ++ -- When the SOURCE_DATE_EPOCH the environment variable is not empty, ++ -- only contains decimal digits and represents a value lower than 2**63, ++ -- set Source_Date_Epoch to this value. ++ Set_Source_Date_Epoch : declare ++ Env_Var : String_Access := Getenv ("SOURCE_DATE_EPOCH"); ++ Epoch : Long_Long_Integer range 0 .. Long_Long_Integer'Last := 0; ++ Index : Integer range Env_Var.all'First .. Env_Var.all'Last + 1 ++ := Env_Var.all'First; ++ Digit : Long_Long_Integer; ++ begin ++ if Index <= Env_Var.all'Last then ++ -- Calling System.Val_LLI breaks the bootstrap sequence. ++ loop ++ Digit := Character'Pos (Env_Var.all (Index)) - Character'Pos ('0'); ++ exit when Digit not in 0 .. 9; ++ exit when Long_Long_Integer'Last - Digit < Epoch; ++ Epoch := Epoch + Digit; ++ if Index = Env_Var.all'Last then ++ Source_Date_Epoch := To_Ada (Epoch); ++ exit; ++ end if; ++ Index := Index + 1; ++ -- The division is computed once at build time. ++ exit when Long_Long_Integer'Last / 10 < Epoch; ++ Epoch := Epoch * 10; ++ end loop; ++ end if; ++ Free (Env_Var); ++ end Set_Source_Date_Epoch; ++ + end Osint; +--- a/src/gcc/ada/osint.ads ++++ b/src/gcc/ada/osint.ads +@@ -195,6 +195,7 @@ package Osint is + -- information in order to locate it. If the source file cannot be opened, + -- or Name = No_File, and all blank time stamp is returned (this is not an + -- error situation). ++ -- Handles SOURCE_DATE_EPOCH like File_Time_Stamp functions below. + + function File_Stamp (Name : Path_Name_Type) return Time_Stamp_Type; + -- Same as above for a path name +@@ -302,6 +303,11 @@ package Osint is + (Name : Path_Name_Type; + Attr : access File_Attributes) return Time_Stamp_Type; + -- Return the time stamp of the file ++ -- If the SOURCE_DATE_EPOCH environment variable exists and represents ++ -- an OS_Type value, any more recent file time stamp is truncated. ++ -- This ensures that gnat1 writes deterministic .ali files even in ++ -- the presence of patched or generated sources. See ++ -- https://reproducible-builds.org/specs/source-date-epoch. + + function Is_Readable_File + (Name : C_File_Name; diff --git a/patches/ada-link-lib.diff b/patches/ada-link-lib.diff new file mode 100644 index 0000000..62624f1 --- /dev/null +++ b/patches/ada-link-lib.diff @@ -0,0 +1,168 @@ +Description: adapt libgnat build for Debian + Don't include a runtime link path (-rpath), when linking binaries. + . + Build the shared libraries on hppa-linux (see #786692 below). + TODO: ask the reporter (no porterbox) to attempt a rebuild without this + chunk, now that we diverge less from upstream. + . + Instead of building libada as a target library only, build it as + both a host and, if different, target library. + . + Compile with -gnatn for efficiency. + Double-check the link since Debian moves some symbols. + . + Autogen should refresh src/Makefile.in from src/Makefile.{def,tpl} + at build time, but we do not want to Build-Depend: guile. + # export QUILT_PATCHES=debian/patches + # quilt pop $this.diff + # quilt add src/Makefile.in + # (cd src && autogen Makefile.def) + # quilt refresh --no-timestamps --no-index -pab + # quilt push -a +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=786692 +Forwarded: not-needed +Author: Ludovic Brenta +Author: Nicolas Boulenguez +Author: Matthias Klose + +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -44,7 +44,7 @@ if test "x$cross_compiling/$build/$host" + fi + + target_libs="target-libada" +-lang_dirs="gnattools" ++lang_dirs="libada gnattools" + + # Ada is not enabled by default for the time being. + build_by_default=no +--- a/src/gcc/ada/link.c ++++ b/src/gcc/ada/link.c +@@ -107,9 +107,9 @@ const char *__gnat_default_libgcc_subdir + || defined (__NetBSD__) || defined (__OpenBSD__) \ + || defined (__QNX__) + const char *__gnat_object_file_option = "-Wl,@"; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; +-char __gnat_shared_libgcc_default = STATIC; ++const char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; ++char __gnat_shared_libgcc_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + const char *__gnat_object_library_extension = ".a"; +@@ -129,9 +129,9 @@ const char *__gnat_default_libgcc_subdir + + #elif defined (__linux__) || defined (__GLIBC__) + const char *__gnat_object_file_option = "-Wl,@"; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; +-char __gnat_shared_libgcc_default = STATIC; ++const char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; ++char __gnat_shared_libgcc_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + const char *__gnat_object_library_extension = ".a"; +--- a/src/libada/Makefile.in ++++ b/src/libada/Makefile.in +@@ -79,10 +79,11 @@ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /, + # by recursive make invocations in gcc/ada/Makefile.in + LIBADA_FLAGS_TO_PASS = \ + "MAKEOVERRIDES=" \ +- "LDFLAGS=$(LDFLAGS)" \ ++ "LDFLAGS=$(LDFLAGS) -Wl,--no-allow-shlib-undefined \ ++ -Wl,--no-copy-dt-needed-entries -Wl,--no-undefined" \ + "LN_S=$(LN_S)" \ + "SHELL=$(SHELL)" \ +- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) -gnatn" \ + "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ + "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ + "PICFLAG_FOR_TARGET=$(PICFLAG)" \ +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -414,6 +414,7 @@ dependencies = { module=all-libcpp; on=a + + dependencies = { module=all-fixincludes; on=all-libiberty; }; + ++dependencies = { module=all-target-libada; on=all-gcc; }; + dependencies = { module=all-gnattools; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; + +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -69229,6 +69229,7 @@ configure-target-libgo: maybe-all-target + @endif gcc-bootstrap + + @unless gcc-bootstrap ++all-target-libada: maybe-all-gcc + all-gnattools: maybe-all-target-libstdc++-v3 + configure-libcc1: maybe-configure-gcc + all-libcc1: maybe-all-gcc +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -143,6 +143,11 @@ host_libs="gettext libiberty opcodes bfd + # If --enable-gold is used, "gold" may replace "ld". + host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gm2tools gotools c++tools" + ++case "${target}" in ++ hppa64-*linux*) ;; ++ *) target_libiberty="target-libiberty";; ++esac ++ + # these libraries are built for the target environment, and are built after + # the host libraries and the host tools (which may be a cross compiler) + # Note that libiberty is not a target library. +@@ -163,6 +168,7 @@ target_libraries="target-libgcc \ + target-libobjc \ + target-libgcobol \ + target-libada \ ++ ${target_libiberty} \ + target-libgm2 \ + target-libgo \ + target-libgrust \ +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -43,7 +43,7 @@ RMDIR = rm -rf + + + # Extra flags to pass to recursive makes. +-COMMON_ADAFLAGS= -gnatpg ++COMMON_ADAFLAGS= -gnatpgn + ifeq ($(TREECHECKING),) + CHECKING_ADAFLAGS= + else +@@ -267,7 +267,9 @@ GCC_LINKERFLAGS = $(filter-out -Werror - + GCC_LDFLAGS = $(filter-out -static-libgcc, $(LDFLAGS)) + else + # Strip -Werror during linking for the LTO bootstrap +-GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS)) ++GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS)) \ ++ -Wl,--no-allow-shlib-undefined -Wl,--no-copy-dt-needed-entries \ ++ -Wl,--no-undefined + GCC_LDFLAGS = $(LDFLAGS) + endif + +--- a/src/gcc/testsuite/lib/gnat.exp ++++ b/src/gcc/testsuite/lib/gnat.exp +@@ -115,6 +115,7 @@ proc gnat_target_compile { source dest t + global TOOL_OPTIONS + global gnat_target_current + global TEST_ALWAYS_FLAGS ++ global ld_library_path + + # dg-require-effective-target tests must be compiled as C. + if [ string match "*.c" $source ] then { +@@ -144,6 +145,11 @@ proc gnat_target_compile { source dest t + # Always log so compilations can be repeated manually. + verbose -log "ADA_INCLUDE_PATH=$rtsdir/adainclude" + verbose -log "ADA_OBJECTS_PATH=$rtsdir/adainclude" ++ ++ if { ! [ string match "*/libada/adalib*" $ld_library_path ] } { ++ append ld_library_path ":$rtsdir/adalib" ++ set_ld_library_path_env_vars ++ } + } + + lappend options "compiler=$GNAT_UNDER_TEST -q -f" diff --git a/patches/ada-perl-shebang.diff b/patches/ada-perl-shebang.diff new file mode 100644 index 0000000..ea930b1 --- /dev/null +++ b/patches/ada-perl-shebang.diff @@ -0,0 +1,10 @@ +# DP: Fix perl shebang for the gnathtml binary. + +--- a/src/gcc/ada/gnathtml.pl ++++ b/src/gcc/ada/gnathtml.pl +@@ -1,4 +1,4 @@ +-#! /usr/bin/env perl ++#! /usr/bin/perl + + #----------------------------------------------------------------------------- + #- -- diff --git a/patches/ada-sjlj.diff b/patches/ada-sjlj.diff new file mode 100644 index 0000000..a63a6da --- /dev/null +++ b/patches/ada-sjlj.diff @@ -0,0 +1,498 @@ +Autogen should refresh src/Makefile.in from src/Makefile.{def,tpl} +at build time, but we do not want to Build-Depend: guile. +# export QUILT_PATCHES=debian/patches +# quilt pop $this.diff +# quilt add src/Makefile.in +# (cd src && autogen Makefile.def) +# quilt refresh --no-timestamps --no-index -pab +# quilt push -a + +--- /dev/null ++++ b/src/libada-sjlj/Makefile.in +@@ -0,0 +1,204 @@ ++# Makefile for libada. ++# Copyright (C) 2003-2017 Free Software Foundation, Inc. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++ ++# Default target; must be first. ++all: gnatlib ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) ++ ++.PHONY: all ++ ++## Multilib support variables. ++MULTISRCTOP = ++MULTIBUILDTOP = ++MULTIDIRS = ++MULTISUBDIR = ++MULTIDO = true ++MULTICLEAN = true ++ ++# Standard autoconf-set variables. ++SHELL = @SHELL@ ++srcdir = @srcdir@ ++libdir = @libdir@ ++build = @build@ ++target = @target@ ++prefix = @prefix@ ++ ++# Nonstandard autoconf-set variables. ++enable_shared = @enable_shared@ ++ ++LN_S=@LN_S@ ++AWK=@AWK@ ++ ++ifeq (cp -p,$(LN_S)) ++LN_S_RECURSIVE = cp -pR ++else ++LN_S_RECURSIVE = $(LN_S) ++endif ++ ++# Variables for the user (or the top level) to override. ++objext=.o ++THREAD_KIND=native ++TRACE=no ++LDFLAGS= ++ ++# The tedious process of getting CFLAGS right. ++CFLAGS=-g ++PICFLAG = @PICFLAG@ ++GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc ++GNATLIBCFLAGS= -g -O2 ++GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) $(CFLAGS_FOR_TARGET) \ ++ -fexceptions -DIN_RTS @have_getipinfo@ @have_capability@ ++ ++host_subdir = @host_subdir@ ++GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc ++ ++target_noncanonical:=@target_noncanonical@ ++version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) ++libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) ++ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) ++ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR)) ++ ++# exeext should not be used because it's the *host* exeext. We're building ++# a *target* library, aren't we?!? Likewise for CC. Still, provide bogus ++# definitions just in case something slips through the safety net provided ++# by recursive make invocations in gcc/ada/Makefile.in ++LIBADA_FLAGS_TO_PASS = \ ++ "MAKEOVERRIDES=" \ ++ "LDFLAGS=$(LDFLAGS) -Wl,--no-allow-shlib-undefined \ ++ -Wl,--no-copy-dt-needed-entries -Wl,--no-undefined" \ ++ "LN_S=$(LN_S)" \ ++ "SHELL=$(SHELL)" \ ++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) -gnatn" \ ++ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ ++ "PICFLAG_FOR_TARGET=$(PICFLAG)" \ ++ "THREAD_KIND=$(THREAD_KIND)" \ ++ "TRACE=$(TRACE)" \ ++ "MULTISUBDIR=$(MULTISUBDIR)" \ ++ "libsubdir=$(libsubdir)" \ ++ "objext=$(objext)" \ ++ "prefix=$(prefix)" \ ++ "exeext=.exeext.should.not.be.used " \ ++ 'CC=the.host.compiler.should.not.be.needed' \ ++ "GCC_FOR_TARGET=$(CC)" \ ++ "CFLAGS=$(CFLAGS)" \ ++ "RTSDIR=rts-sjlj" ++ ++# Rules to build gnatlib. ++.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool ++gnatlib: gnatlib-sjlj ++ ++gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile ++ test -f stamp-libada || \ ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \ ++ && touch stamp-libada ++ -rm -rf adainclude ++ -rm -rf adalib ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib ++ ++gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile ++ test -f stamp-libada || \ ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \ ++ && touch stamp-libada-sjlj ++ -rm -rf adainclude ++ -rm -rf adalib ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib ++ ++osconstool: ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons ++ ++install-gnatlib: $(GCC_DIR)/ada/Makefile ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib-sjlj ++ ++# Check uninstalled version. ++check: ++ ++# Check installed version. ++installcheck: ++ ++# Build info (none here). ++info: ++ ++# Build DVI (none here). ++dvi: ++ ++# Build PDF (none here). ++pdf: ++ ++# Build html (none here). ++html: ++ ++# Build TAGS (none here). ++TAGS: ++ ++.PHONY: check installcheck info dvi pdf html ++ ++# Installation rules. ++install: install-gnatlib ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) ++ ++install-strip: install ++ ++install-info: ++ ++install-pdf: ++ ++install-html: ++ ++.PHONY: install install-strip install-info install-pdf install-html ++ ++# Cleaning rules. ++mostlyclean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) ++ ++clean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) ++ ++distclean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) ++ $(RM) Makefile config.status config.log ++ ++maintainer-clean: ++ ++.PHONY: mostlyclean clean distclean maintainer-clean ++ ++# Rules for rebuilding this Makefile. ++Makefile: $(srcdir)/Makefile.in config.status ++ CONFIG_FILES=$@ ; \ ++ CONFIG_HEADERS= ; \ ++ $(SHELL) ./config.status ++ ++config.status: $(srcdir)/configure ++ $(SHELL) ./config.status --recheck ++ ++AUTOCONF = autoconf ++configure_deps = \ ++ $(srcdir)/configure.ac \ ++ $(srcdir)/../config/acx.m4 \ ++ $(srcdir)/../config/multi.m4 \ ++ $(srcdir)/../config/override.m4 \ ++ $(srcdir)/../config/picflag.m4 \ ++ $(srcdir)/../config/unwind_ipinfo.m4 ++ ++$(srcdir)/configure: @MAINT@ $(configure_deps) ++ cd $(srcdir) && $(AUTOCONF) ++ ++# Don't export variables to the environment, in order to not confuse ++# configure. ++.NOEXPORT: +--- /dev/null ++++ b/src/libada-sjlj/configure.ac +@@ -0,0 +1,156 @@ ++# Configure script for libada. ++# Copyright (C) 2003-2017 Free Software Foundation, Inc. ++# ++# This file is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++ ++sinclude(../config/acx.m4) ++sinclude(../config/multi.m4) ++sinclude(../config/override.m4) ++sinclude(../config/picflag.m4) ++sinclude(../config/unwind_ipinfo.m4) ++ ++AC_INIT ++AC_PREREQ([2.64]) ++ ++AC_CONFIG_SRCDIR([Makefile.in]) ++ ++# Determine the host, build, and target systems ++AC_CANONICAL_BUILD ++AC_CANONICAL_HOST ++AC_CANONICAL_TARGET ++target_alias=${target_alias-$host_alias} ++ ++# Determine the noncanonical target name, for directory use. ++ACX_NONCANONICAL_TARGET ++ ++# Determine the target- and build-specific subdirectories ++GCC_TOPLEV_SUBDIRS ++ ++# Command-line options. ++# Very limited version of AC_MAINTAINER_MODE. ++AC_ARG_ENABLE([maintainer-mode], ++ [AC_HELP_STRING([--enable-maintainer-mode], ++ [enable make rules and dependencies not useful (and ++ sometimes confusing) to the casual installer])], ++ [case ${enable_maintainer_mode} in ++ yes) MAINT='' ;; ++ no) MAINT='#' ;; ++ *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;; ++ esac ++ maintainer_mode=${enableval}], ++ [MAINT='#']) ++AC_SUBST([MAINT])dnl ++ ++AM_ENABLE_MULTILIB(, ..) ++# Calculate toolexeclibdir ++# Also toolexecdir, though it's only used in toolexeclibdir ++case ${enable_version_specific_runtime_libs} in ++ yes) ++ # Need the gcc compiler version to know where to install libraries ++ # and header files if --enable-version-specific-runtime-libs option ++ # is selected. ++ toolexecdir='$(libdir)/gcc/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' ++ ;; ++ no) ++ if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ # Install a library built with a cross compiler in tooldir, not libdir. ++ toolexecdir='$(exec_prefix)/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/lib' ++ else ++ toolexecdir='$(libdir)/gcc-lib/$(target_alias)' ++ toolexeclibdir='$(libdir)' ++ fi ++ multi_os_directory=`$CC -print-multi-os-directory` ++ case $multi_os_directory in ++ .) ;; # Avoid trailing /. ++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; ++ esac ++ ;; ++esac ++AC_SUBST(toolexecdir) ++AC_SUBST(toolexeclibdir) ++#TODO: toolexeclibdir is currently disregarded ++ ++# Check the compiler. ++# The same as in boehm-gc and libstdc++. Have to borrow it from there. ++# We must force CC to /not/ be precious variables; otherwise ++# the wrong, non-multilib-adjusted value will be used in multilibs. ++# As a side effect, we have to subst CFLAGS ourselves. ++ ++m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) ++m4_define([_AC_ARG_VAR_PRECIOUS],[]) ++AC_PROG_CC ++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) ++ ++AC_SUBST(CFLAGS) ++ ++AC_ARG_ENABLE([shared], ++[AC_HELP_STRING([--disable-shared], ++ [don't provide a shared libgnat])], ++[ ++case $enable_shared in ++ yes | no) ;; ++ *) ++ enable_shared=no ++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," ++ for pkg in $enableval; do ++ case $pkg in ++ ada | libada) ++ enable_shared=yes ;; ++ esac ++ done ++ IFS="$ac_save_ifs" ++ ;; ++esac ++], [enable_shared=yes]) ++AC_SUBST([enable_shared]) ++ ++GCC_PICFLAG ++AC_SUBST([PICFLAG]) ++ ++# These must be passed down, or are needed by gcc/libgcc.mvars ++AC_PROG_AWK ++AC_PROG_LN_S ++ ++# Determine what to build for 'gnatlib' ++if test ${enable_shared} = yes; then ++ default_gnatlib_target="gnatlib-shared" ++else ++ default_gnatlib_target="gnatlib-plain" ++fi ++AC_SUBST([default_gnatlib_target]) ++ ++# Check for _Unwind_GetIPInfo ++GCC_CHECK_UNWIND_GETIPINFO ++if test x$have_unwind_getipinfo = xyes; then ++ have_getipinfo=-DHAVE_GETIPINFO ++else ++ have_getipinfo= ++fi ++AC_SUBST([have_getipinfo]) ++ ++# Check for ++AC_CHECK_HEADER([sys/capability.h], have_capability=-DHAVE_CAPABILITY, have_capability=) ++AC_SUBST([have_capability]) ++ ++# Determine what GCC version number to use in filesystem paths. ++GCC_BASE_VER ++ ++# Output: create a Makefile. ++AC_CONFIG_FILES([Makefile]) ++ ++AC_OUTPUT +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -194,6 +194,7 @@ target_modules = { module= libgnatvsn; n + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++target_modules = { module= libada-sjlj; }; + target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; lib_path=.libs; }; +@@ -394,6 +395,7 @@ dependencies = { module=all-libcpp; on=a + dependencies = { module=all-fixincludes; on=all-libiberty; }; + + dependencies = { module=all-target-libada; on=all-gcc; }; ++dependencies = { module=all-target-libada-sjlj; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; + dependencies = { module=all-gnattools; on=all-target-libgnat_util; }; +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -167,6 +167,7 @@ target_libraries="target-libgcc \ + target-libffi \ + target-libobjc \ + target-libada \ ++ target-libada-sjlj \ + ${target_libiberty} \ + target-libgnat_util \ + target-libgo \ +@@ -454,7 +455,7 @@ AC_ARG_ENABLE(libada, + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs target-libgnat_util gnattools" ++ noconfigdirs="$noconfigdirs target-libgnat_util gnattools target-libada-sjlj" + fi + + AC_ARG_ENABLE(libssp, +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -193,7 +193,7 @@ GNAT_SRC=$(fsrcpfx)ada + + # Multilib handling + MULTISUBDIR = +-RTSDIR = rts$(subst /,_,$(MULTISUBDIR)) ++RTSDIR := rts$(subst /,_,$(MULTISUBDIR)) + + # Link flags used to build gnat tools. By default we prefer to statically + # link with libgcc to avoid a dependency on shared libgcc (which is tricky +@@ -561,6 +561,26 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads + ++install-gnatlib-sjlj: ../stamp-gnatlib-$(RTSDIR) ++# Create the directory before deleting it, in case the directory is ++# a list of directories (as it may be on VMS). This ensures we are ++# deleting the right one. ++ -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ $(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ for file in $(RTSDIR)/*.ali; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ); \ ++ done ++ # This copy must be done preserving the date on the original file. ++ for file in $(RTSDIR)/*.ad?; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); \ ++ done ++ cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.adb ++ cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.ads ++ + ../stamp-gnatlib2-$(RTSDIR): + $(RM) $(RTSDIR)/s-*.ali + $(RM) $(RTSDIR)/s-*$(objext) +@@ -826,6 +846,7 @@ gnatlib-shared: + gnatlib-sjlj: + $(MAKE) $(FLAGS_TO_PASS) \ + EH_MECHANISM="" \ ++ RTSDIR="$(RTSDIR)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + ../stamp-gnatlib1-$(RTSDIR) +@@ -835,6 +856,7 @@ gnatlib-sjlj: + $(RTSDIR)/system.ads > $(RTSDIR)/s.ads + $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads + $(MAKE) $(FLAGS_TO_PASS) \ ++ RTSDIR="$(RTSDIR)" \ + EH_MECHANISM="" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +@@ -889,6 +911,8 @@ b_gnatm.o : b_gnatm.adb + + ADA_INCLUDE_DIR = $(libsubdir)/adainclude + ADA_RTL_OBJ_DIR = $(libsubdir)/adalib ++ADA_INCLUDE_DIR_SJLJ = $(libsubdir)/rts-sjlj/adainclude ++ADA_RTL_OBJ_DIR_SJLJ = $(libsubdir)/rts-sjlj/adalib + + # Special flags + +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -43,8 +43,8 @@ if test "x$cross_compiling/$build/$host" + lang_requires="c c++" + fi + +-target_libs="target-libada target-libgnat_util" +-lang_dirs="libada gnattools" ++target_libs="target-libada target-libgnat_util target-libada-sjlj" ++lang_dirs="libada gnattools libada-sjlj" + + # Ada is not enabled by default for the time being. + build_by_default=no +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -837,6 +837,7 @@ ada.install-common: + + install-gnatlib: + $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib$(LIBGNAT_TARGET) ++ $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) RTSDIR="rts-sjlj" install-gnatlib-sjlj$(LIBGNAT_TARGET) + + install-gnatlib-obj: + $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib-obj diff --git a/patches/ada-tv_nsec-size.diff b/patches/ada-tv_nsec-size.diff new file mode 100644 index 0000000..77dc244 --- /dev/null +++ b/patches/ada-tv_nsec-size.diff @@ -0,0 +1,17 @@ +--- a/src/gcc/ada/s-oscons-tmplt.c ++++ b/src/gcc/ada/s-oscons-tmplt.c +@@ -1769,9 +1769,12 @@ CNS(MAX_tv_sec, "") + struct timespec ts; + /* + -- Sizes (in bytes) of the components of struct timespec. +- -- The tv_sec field is the same than in struct timeval. ++ -- The tv_sec component is the same size as in struct timeval. ++ -- In order to avoid the endian issues in the glibc __timespec64 ++ -- struct, we use the same size for the tv_nsec component as the ++ -- tv_sec component. + */ +-#define SIZEOF_tv_nsec (sizeof (ts.tv_nsec)) ++#define SIZEOF_tv_nsec (sizeof (ts.tv_sec)) + CND(SIZEOF_tv_nsec, "tv_nsec"); + } + diff --git a/patches/ada-verbose.diff b/patches/ada-verbose.diff new file mode 100644 index 0000000..cb3cacf --- /dev/null +++ b/patches/ada-verbose.diff @@ -0,0 +1,37 @@ +Description: Display subprocess command lines when building Ada. + The log can be a page longer if it helps debugging. +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87778 +Applied-Upstream: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=940bc09b446f4876563b0986231724121b33193d +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/Make-generated.in ++++ b/src/gcc/ada/Make-generated.in +@@ -18,7 +18,7 @@ GEN_IL_FLAGS = -gnata -gnat2012 -gnatw.g + ada/seinfo_tables.ads ada/seinfo_tables.adb ada/sinfo.h ada/einfo.h ada/nmake.ads ada/nmake.adb ada/seinfo.ads ada/sinfo-nodes.ads ada/sinfo-nodes.adb ada/einfo-entities.ads ada/einfo-entities.adb: ada/stamp-gen_il ; @true + ada/stamp-gen_il: $(fsrcdir)/ada/gen_il* + $(MKDIR) ada/gen_il +- cd ada/gen_il; gnatmake -q -g $(GEN_IL_FLAGS) gen_il-main ++ cd ada/gen_il; gnatmake -g $(GEN_IL_FLAGS) gen_il-main + # Ignore errors to work around finalization issues in older compilers + - cd ada/gen_il; ./gen_il-main + $(fsrcdir)/../move-if-change ada/gen_il/seinfo_tables.ads ada/seinfo_tables.ads +@@ -46,7 +46,7 @@ ada/stamp-snames : ada/snames.ads-tmpl a + -$(MKDIR) ada/bldtools/snamest + $(RM) $(addprefix ada/bldtools/snamest/,$(notdir $^)) + $(CP) $^ ada/bldtools/snamest +- cd ada/bldtools/snamest && gnatmake -q xsnamest && ./xsnamest ++ cd ada/bldtools/snamest && gnatmake xsnamest && ./xsnamest + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.ns ada/snames.ads + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nb ada/snames.adb + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nh ada/snames.h +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -648,7 +648,7 @@ OSCONS_EXTRACT=$(GCC_FOR_ADA_RTS) $(GNAT + -$(MKDIR) ./bldtools/oscons + $(RM) $(addprefix ./bldtools/oscons/,$(notdir $^)) + $(CP) $^ ./bldtools/oscons +- (cd ./bldtools/oscons ; gnatmake -q xoscons) ++ (cd ./bldtools/oscons ; gnatmake xoscons) + + $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons + $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s diff --git a/patches/algol68-doc.diff b/patches/algol68-doc.diff new file mode 100644 index 0000000..3382f97 --- /dev/null +++ b/patches/algol68-doc.diff @@ -0,0 +1,143 @@ +git diff --src-prefix=a/src/ --dst-prefix=b/src/ master..a68 | grep -E -v '^(diff|index|new)' + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -2965,6 +2994,7 @@ s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in + || test $(srcdir)/doc/tm.texi -nt $(srcdir)/common/common-target.def \ + || test $(srcdir)/doc/tm.texi -nt $(srcdir)/d/d-target.def \ + || test $(srcdir)/doc/tm.texi -nt $(srcdir)/rust/rust-target.def \ ++ || test $(srcdir)/doc/tm.texi -nt $(srcdir)/algol68/algol68-target.def \ + ); then \ + echo >&2 ; \ + echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \ +--- a/src/gcc/doc/tm.texi ++++ b/src/gcc/doc/tm.texi +@@ -54,6 +54,7 @@ through the macros defined in the @file{.h} file. + * C++ ABI:: Controlling C++ ABI changes. + * D Language and ABI:: Controlling D ABI changes. + * Rust Language and ABI:: Controlling Rust ABI changes. ++* ALGOL 68 Language and ABI:: Controlling ALGOL 68 ABI changes. + * Named Address Spaces:: Adding support for named address spaces + * Misc:: Everything else. + @end menu +@@ -11352,6 +11353,23 @@ Similar to @code{TARGET_RUST_CPU_INFO}, but is used for configuration info + relating to the target operating system. + @end deftypefn + ++@node ALGOL 68 Language and ABI ++@section ALGOL 68 ABI parameters ++@cindex parameters, ALGOL 68 abi ++ ++@deftypefn {Algol68 Target Hook} void TARGET_ALGOL68_CPU_INFO (void) ++Declare all environmental CPU info and features relating to the target CPU ++using the function @code{algol68_add_target_info}, which takes a string ++representing the feature key and a string representing the feature value. ++Configuration pairs predefined by this hook apply to all files that are being ++compiled. ++@end deftypefn ++ ++@deftypefn {Algol68 Target Hook} void TARGET_ALGOL68_OS_INFO (void) ++Similar to @code{TARGET_ALGOL68_CPU_INFO}, but is used for configuration info ++relating to the target operating system. ++@end deftypefn ++ + @node Named Address Spaces + @section Adding support for named address spaces + @cindex named address spaces +--- a/src/gcc/doc/tm.texi.in ++++ b/src/gcc/doc/tm.texi.in +@@ -54,6 +54,7 @@ through the macros defined in the @file{.h} file. + * C++ ABI:: Controlling C++ ABI changes. + * D Language and ABI:: Controlling D ABI changes. + * Rust Language and ABI:: Controlling Rust ABI changes. ++* ALGOL 68 Language and ABI:: Controlling ALGOL 68 ABI changes. + * Named Address Spaces:: Adding support for named address spaces + * Misc:: Everything else. + @end menu +@@ -7278,6 +7279,14 @@ floating-point support; they are not included in this mechanism. + + @hook TARGET_RUST_OS_INFO + ++@node ALGOL 68 Language and ABI ++@section ALGOL 68 ABI parameters ++@cindex parameters, ALGOL 68 abi ++ ++@hook TARGET_ALGOL68_CPU_INFO ++ ++@hook TARGET_ALGOL68_OS_INFO ++ + @node Named Address Spaces + @section Adding support for named address spaces + @cindex named address spaces +--- a/src/gcc/doc/install.texi ++++ b/src/gcc/doc/install.texi +@@ -2100,13 +2100,13 @@ their runtime libraries should be built. For a list of valid values for + grep ^language= */config-lang.in + @end smallexample + Currently, you can use any of the following: +-@code{all}, @code{default}, @code{ada}, @code{c}, @code{c++}, ++@code{all}, @code{default}, @code{ada}, @code{algol68}, @code{c}, @code{c++}, + @code{cobol}, @code{d}, @code{fortran}, @code{go}, @code{jit}, + @code{lto}, @code{m2}, @code{objc}, @code{obj-c++}. + Building the Ada compiler has special requirements, see below. + If you do not pass this flag, or specify the option @code{default}, then the + default languages available in the @file{gcc} sub-tree will be configured. +-Ada, COBOL, D, Go, Jit, Objective-C++ and Modula-2 are not default languages. ++Algol 68, Ada, COBOL, D, Go, Jit, Objective-C++ and Modula-2 are not default languages. + LTO is not a + default language, but is built by default because @option{--enable-lto} is + enabled by default. The other languages are default languages. If +@@ -2899,6 +2899,41 @@ In order to avoid shell and @command{make} quoting issues for complex + overrides, you can pass a setting for @env{CONFIG_SITE} and set + variables in the site file. + ++@subheading Algol 68-Specific Options ++ ++The following options apply to the build of the Algol 68 runtime library. ++ ++@table @code ++@item --enable-algol68-gc ++Specify that an additional variant of the GNU Algol 68 runtime library ++is built, using an external build of the Boehm-Demers-Weiser garbage ++collector (@uref{https://www.hboehm.info/gc/}). ++ ++This library needs to be available for each multilib variant, unless ++configured with @option{--enable-objc-gc=@samp{auto}} in which case ++the build of the additional runtime library is skipped when not ++available and the build continues. ++ ++@item --with-target-bdw-gc=@var{list} ++@itemx --with-target-bdw-gc-include=@var{list} ++@itemx --with-target-bdw-gc-lib=@var{list} ++Specify search directories for the garbage collector header files and ++libraries. @var{list} is a comma separated list of key value pairs of the ++form @samp{@var{multilibdir}=@var{path}}, where the default multilib key ++is named as @samp{.} (dot), or is omitted (e.g.@: ++@samp{--with-target-bdw-gc=/opt/bdw-gc,32=/opt-bdw-gc32}). ++ ++The options @option{--with-target-bdw-gc-include} and ++@option{--with-target-bdw-gc-lib} must always be specified together ++for each multilib variant and they take precedence over ++@option{--with-target-bdw-gc}. If @option{--with-target-bdw-gc-include} ++is missing values for a multilib, then the value for the default ++multilib is used (e.g.@: @samp{--with-target-bdw-gc-include=/opt/bdw-gc/include} ++@samp{--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32}). ++If none of these options are specified, the library is assumed in ++default locations. ++@end table ++ + @subheading Objective-C-Specific Options + + The following options apply to the build of the Objective-C runtime library. +--- a/src/gcc/doc/sourcebuild.texi ++++ b/src/gcc/doc/sourcebuild.texi +@@ -91,6 +91,9 @@ The Decimal Float support library. + @item libffi + The @code{libffi} library, used as part of the Go runtime library. + ++@item libga68 ++The Algol 68 runtime library. ++ + @item libgcc + The GCC runtime library. + diff --git a/patches/algol68-link-dynamic.diff b/patches/algol68-link-dynamic.diff new file mode 100644 index 0000000..a65c070 --- /dev/null +++ b/patches/algol68-link-dynamic.diff @@ -0,0 +1,13 @@ +# DP: Link libga68 dynamically. + +--- a/src/gcc/algol68/a68spec.cc ++++ b/src/gcc/algol68/a68spec.cc +@@ -32,7 +32,7 @@ + LIBGA68_DYNAMIC + }; + +-static enum libga68_link_mode libga68_link = LIBGA68_STATIC; ++static enum libga68_link_mode libga68_link = LIBGA68_DYNAMIC; + + /* This bit is set if we saw a `-xfoo' language specification. */ + #define LANGSPEC (1 << 1) diff --git a/patches/algol68-sparc.diff b/patches/algol68-sparc.diff new file mode 100644 index 0000000..3745f45 --- /dev/null +++ b/patches/algol68-sparc.diff @@ -0,0 +1,20 @@ +--- a/src/gcc/algol68/a68-exports.cc ++++ b/src/gcc/algol68/a68-exports.cc +@@ -22,6 +22,7 @@ + #include "config.h" + #include "system.h" + #include "coretypes.h" ++#include "memmodel.h" + #include "tree.h" + #include "target.h" + #include "tm_p.h" +--- a/src/gcc/algol68/a68-imports.cc ++++ b/src/gcc/algol68/a68-imports.cc +@@ -31,6 +31,7 @@ + #include "config.h" + #include "system.h" + #include "coretypes.h" ++#include "memmodel.h" + #include "tree.h" + #include "target.h" + #include "tm_p.h" diff --git a/patches/algol68.diff b/patches/algol68.diff new file mode 100644 index 0000000..8ee0a0f --- /dev/null +++ b/patches/algol68.diff @@ -0,0 +1,83798 @@ +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -205,6 +205,7 @@ target_modules = { module= zlib; bootstrap=true; }; + target_modules = { module= rda; }; + target_modules = { module= libada; }; + target_modules = { module= libgm2; lib_path=.libs; }; ++target_modules = { module= libga68; lib_path=.libs; }; + target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; bootstrap=true; lib_path=.libs; }; +@@ -676,6 +677,7 @@ dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgo + dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; }; + dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; }; + dependencies = { module=configure-target-libgrust; on=all-target-libstdc++-v3; }; ++dependencies = { module=configure-target-libga68; on=all-target-libstdc++-v3; }; + // parallel_list.o and parallel_settings.o depend on omp.h, which is + // generated by the libgomp configure. Unfortunately, due to the use of + // recursive make, we can't be that specific. +@@ -734,6 +736,8 @@ languages = { language=jit; gcc-check-target=check-jit; }; + languages = { language=rust; gcc-check-target=check-rust; }; + languages = { language=cobol; gcc-check-target=check-cobol; + lib-check-target=check-target-libgcobol; }; ++languages = { language=algol68; gcc-check-target=check-algol68; ++ lib-check-target=check-target-libga68; }; + + // Toplevel bootstrap + bootstrap_stage = { id=1 ; }; +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -276,6 +276,11 @@ POSTSTAGE1_HOST_EXPORTS = \ + CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ + $(POSTSTAGE1_CXX_EXPORT) \ + $(LTO_EXPORTS) \ ++ GA68="$$r/$(HOST_SUBDIR)/prev-gcc/ga68$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ ++ -B$(build_tooldir)/bin/ $(GA68FLAGS_FOR_TARGET) \ ++ -B$$r/prev-$(TARGET_SUBDIR)/libga68/.libs"; \ ++ export GA68; \ ++ GA68_FOR_BUILD="$$GA68"; export GA68_FOR_BUILD; \ + GDC="$$r/$(HOST_SUBDIR)/prev-gcc/gdc$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ + -B$(build_tooldir)/bin/ $(GDCFLAGS_FOR_TARGET) \ + -B$$r/prev-$(TARGET_SUBDIR)/libphobos/libdruntime/gcc \ +@@ -308,6 +313,7 @@ BASE_TARGET_EXPORTS = \ + CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ ++ GA68="$(GA68_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GA68; \ + GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \ + GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \ + GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \ +@@ -377,6 +383,7 @@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ + DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ + DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD@ + GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ ++GA68_FOR_BUILD = @GA68_FOR_BUILD@ + GOC_FOR_BUILD = @GOC_FOR_BUILD@ + GDC_FOR_BUILD = @GDC_FOR_BUILD@ + GM2_FOR_BUILD = @GM2_FOR_BUILD@ +@@ -439,6 +446,7 @@ STRIP = @STRIP@ + WINDRES = @WINDRES@ + WINDMC = @WINDMC@ + ++GA68 = @GA68@ + GDC = @GDC@ + GNATBIND = @GNATBIND@ + GNATMAKE = @GNATMAKE@ +@@ -449,6 +457,7 @@ LIBCFLAGS = $(CFLAGS) + CXXFLAGS = @CXXFLAGS@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates + GOCFLAGS = $(CFLAGS) ++GA68FLAGS = @GA68FLAGS@ + GDCFLAGS = @GDCFLAGS@ + GM2FLAGS = $(CFLAGS) + +@@ -676,6 +685,7 @@ CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ + RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ + GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ + GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@ ++GA68_FOR_TARGET=$(STAGE_CC_WRAPPER) @GA68_FOR_TARGET@ + GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@ + GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@ + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ +@@ -705,6 +715,7 @@ LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates + LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@ + GM2FLAGS_FOR_TARGET = -O2 -g + GOCFLAGS_FOR_TARGET = -O2 -g ++GA68FLAGS_FOR_TARGET = -O2 -g + GDCFLAGS_FOR_TARGET = -O2 -g + + FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ +@@ -730,7 +741,7 @@ all: + + # This is the list of directories that may be needed in RPATH_ENVVAR + # so that programs built for the target machine work. +-TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgm2)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) ++TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgm2)$(TARGET_LIB_PATH_libga68)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) + + @if target-libstdc++-v3 + TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: +@@ -756,6 +767,10 @@ TARGET_LIB_PATH_libphobos = $$r/$(TARGET_SUBDIR)/libphobos/src/.libs: + TARGET_LIB_PATH_libgm2 = $$r/$(TARGET_SUBDIR)/libgm2/.libs: + @endif target-libgm2 + ++@if target-libga68 ++TARGET_LIB_PATH_libga68 = $$r/$(TARGET_SUBDIR)/libga68/.libs: ++@endif target-libga68 ++ + @if target-libgomp + TARGET_LIB_PATH_libgomp = $$r/$(TARGET_SUBDIR)/libgomp/.libs: + @endif target-libgomp +@@ -976,6 +991,7 @@ EXTRA_HOST_FLAGS = \ + 'DSYMUTIL=$(DSYMUTIL)' \ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ ++ 'GA68=$(GA68)' \ + 'GDC=$(GDC)' \ + 'GM2=$(GM2)' \ + 'LD=$(LD)' \ +@@ -1004,6 +1020,7 @@ STAGE1_FLAGS_TO_PASS = \ + POSTSTAGE1_FLAGS_TO_PASS = \ + CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ + CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \ ++ GA68="$${GA68}" GA68_FOR_BUILD="$${GA68_FOR_BUILD}" \ + GDC="$${GDC}" GDC_FOR_BUILD="$${GDC_FOR_BUILD}" \ + GM2="$${GM2}" GM2_FOR_BUILD="$${GM2_FOR_BUILD}" \ + GNATBIND="$${GNATBIND}" \ +@@ -1039,6 +1056,7 @@ EXTRA_TARGET_FLAGS = \ + 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ ++ 'GA68=$$(GA68_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ + 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ +@@ -1160,6 +1178,7 @@ configure-target: \ + maybe-configure-target-rda \ + maybe-configure-target-libada \ + maybe-configure-target-libgm2 \ ++ maybe-configure-target-libga68 \ + maybe-configure-target-libgomp \ + maybe-configure-target-libitm \ + maybe-configure-target-libatomic \ +@@ -1360,6 +1379,7 @@ all-target: maybe-all-target-zlib + all-target: maybe-all-target-rda + all-target: maybe-all-target-libada + all-target: maybe-all-target-libgm2 ++all-target: maybe-all-target-libga68 + @if target-libgomp-no-bootstrap + all-target: maybe-all-target-libgomp + @endif target-libgomp-no-bootstrap +@@ -1463,6 +1483,7 @@ info-target: maybe-info-target-zlib + info-target: maybe-info-target-rda + info-target: maybe-info-target-libada + info-target: maybe-info-target-libgm2 ++info-target: maybe-info-target-libga68 + info-target: maybe-info-target-libgomp + info-target: maybe-info-target-libitm + info-target: maybe-info-target-libatomic +@@ -1557,6 +1578,7 @@ dvi-target: maybe-dvi-target-zlib + dvi-target: maybe-dvi-target-rda + dvi-target: maybe-dvi-target-libada + dvi-target: maybe-dvi-target-libgm2 ++dvi-target: maybe-dvi-target-libga68 + dvi-target: maybe-dvi-target-libgomp + dvi-target: maybe-dvi-target-libitm + dvi-target: maybe-dvi-target-libatomic +@@ -1651,6 +1673,7 @@ pdf-target: maybe-pdf-target-zlib + pdf-target: maybe-pdf-target-rda + pdf-target: maybe-pdf-target-libada + pdf-target: maybe-pdf-target-libgm2 ++pdf-target: maybe-pdf-target-libga68 + pdf-target: maybe-pdf-target-libgomp + pdf-target: maybe-pdf-target-libitm + pdf-target: maybe-pdf-target-libatomic +@@ -1745,6 +1768,7 @@ html-target: maybe-html-target-zlib + html-target: maybe-html-target-rda + html-target: maybe-html-target-libada + html-target: maybe-html-target-libgm2 ++html-target: maybe-html-target-libga68 + html-target: maybe-html-target-libgomp + html-target: maybe-html-target-libitm + html-target: maybe-html-target-libatomic +@@ -1839,6 +1863,7 @@ TAGS-target: maybe-TAGS-target-zlib + TAGS-target: maybe-TAGS-target-rda + TAGS-target: maybe-TAGS-target-libada + TAGS-target: maybe-TAGS-target-libgm2 ++TAGS-target: maybe-TAGS-target-libga68 + TAGS-target: maybe-TAGS-target-libgomp + TAGS-target: maybe-TAGS-target-libitm + TAGS-target: maybe-TAGS-target-libatomic +@@ -1933,6 +1958,7 @@ install-info-target: maybe-install-info-target-zlib + install-info-target: maybe-install-info-target-rda + install-info-target: maybe-install-info-target-libada + install-info-target: maybe-install-info-target-libgm2 ++install-info-target: maybe-install-info-target-libga68 + install-info-target: maybe-install-info-target-libgomp + install-info-target: maybe-install-info-target-libitm + install-info-target: maybe-install-info-target-libatomic +@@ -2027,6 +2053,7 @@ install-dvi-target: maybe-install-dvi-target-zlib + install-dvi-target: maybe-install-dvi-target-rda + install-dvi-target: maybe-install-dvi-target-libada + install-dvi-target: maybe-install-dvi-target-libgm2 ++install-dvi-target: maybe-install-dvi-target-libga68 + install-dvi-target: maybe-install-dvi-target-libgomp + install-dvi-target: maybe-install-dvi-target-libitm + install-dvi-target: maybe-install-dvi-target-libatomic +@@ -2121,6 +2148,7 @@ install-pdf-target: maybe-install-pdf-target-zlib + install-pdf-target: maybe-install-pdf-target-rda + install-pdf-target: maybe-install-pdf-target-libada + install-pdf-target: maybe-install-pdf-target-libgm2 ++install-pdf-target: maybe-install-pdf-target-libga68 + install-pdf-target: maybe-install-pdf-target-libgomp + install-pdf-target: maybe-install-pdf-target-libitm + install-pdf-target: maybe-install-pdf-target-libatomic +@@ -2215,6 +2243,7 @@ install-html-target: maybe-install-html-target-zlib + install-html-target: maybe-install-html-target-rda + install-html-target: maybe-install-html-target-libada + install-html-target: maybe-install-html-target-libgm2 ++install-html-target: maybe-install-html-target-libga68 + install-html-target: maybe-install-html-target-libgomp + install-html-target: maybe-install-html-target-libitm + install-html-target: maybe-install-html-target-libatomic +@@ -2309,6 +2338,7 @@ installcheck-target: maybe-installcheck-target-zlib + installcheck-target: maybe-installcheck-target-rda + installcheck-target: maybe-installcheck-target-libada + installcheck-target: maybe-installcheck-target-libgm2 ++installcheck-target: maybe-installcheck-target-libga68 + installcheck-target: maybe-installcheck-target-libgomp + installcheck-target: maybe-installcheck-target-libitm + installcheck-target: maybe-installcheck-target-libatomic +@@ -2403,6 +2433,7 @@ mostlyclean-target: maybe-mostlyclean-target-zlib + mostlyclean-target: maybe-mostlyclean-target-rda + mostlyclean-target: maybe-mostlyclean-target-libada + mostlyclean-target: maybe-mostlyclean-target-libgm2 ++mostlyclean-target: maybe-mostlyclean-target-libga68 + mostlyclean-target: maybe-mostlyclean-target-libgomp + mostlyclean-target: maybe-mostlyclean-target-libitm + mostlyclean-target: maybe-mostlyclean-target-libatomic +@@ -2497,6 +2528,7 @@ clean-target: maybe-clean-target-zlib + clean-target: maybe-clean-target-rda + clean-target: maybe-clean-target-libada + clean-target: maybe-clean-target-libgm2 ++clean-target: maybe-clean-target-libga68 + clean-target: maybe-clean-target-libgomp + clean-target: maybe-clean-target-libitm + clean-target: maybe-clean-target-libatomic +@@ -2591,6 +2623,7 @@ distclean-target: maybe-distclean-target-zlib + distclean-target: maybe-distclean-target-rda + distclean-target: maybe-distclean-target-libada + distclean-target: maybe-distclean-target-libgm2 ++distclean-target: maybe-distclean-target-libga68 + distclean-target: maybe-distclean-target-libgomp + distclean-target: maybe-distclean-target-libitm + distclean-target: maybe-distclean-target-libatomic +@@ -2685,6 +2718,7 @@ maintainer-clean-target: maybe-maintainer-clean-target-zlib + maintainer-clean-target: maybe-maintainer-clean-target-rda + maintainer-clean-target: maybe-maintainer-clean-target-libada + maintainer-clean-target: maybe-maintainer-clean-target-libgm2 ++maintainer-clean-target: maybe-maintainer-clean-target-libga68 + maintainer-clean-target: maybe-maintainer-clean-target-libgomp + maintainer-clean-target: maybe-maintainer-clean-target-libitm + maintainer-clean-target: maybe-maintainer-clean-target-libatomic +@@ -2837,6 +2871,7 @@ check-target: \ + maybe-check-target-rda \ + maybe-check-target-libada \ + maybe-check-target-libgm2 \ ++ maybe-check-target-libga68 \ + maybe-check-target-libgomp \ + maybe-check-target-libitm \ + maybe-check-target-libatomic \ +@@ -3035,6 +3070,7 @@ install-target: \ + maybe-install-target-rda \ + maybe-install-target-libada \ + maybe-install-target-libgm2 \ ++ maybe-install-target-libga68 \ + maybe-install-target-libgomp \ + maybe-install-target-libitm \ + maybe-install-target-libatomic \ +@@ -3149,6 +3185,7 @@ install-strip-target: \ + maybe-install-strip-target-rda \ + maybe-install-strip-target-libada \ + maybe-install-strip-target-libgm2 \ ++ maybe-install-strip-target-libga68 \ + maybe-install-strip-target-libgomp \ + maybe-install-strip-target-libitm \ + maybe-install-strip-target-libatomic \ +@@ -60200,6 +60237,491 @@ maintainer-clean-target-libgm2: + + + ++.PHONY: configure-target-libga68 maybe-configure-target-libga68 ++maybe-configure-target-libga68: ++@if gcc-bootstrap ++configure-target-libga68: stage_current ++@endif gcc-bootstrap ++@if target-libga68 ++maybe-configure-target-libga68: configure-target-libga68 ++configure-target-libga68: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libga68..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libga68; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libga68/multilib.tmp 2> /dev/null; \ ++ if test -r $(TARGET_SUBDIR)/libga68/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libga68/multilib.tmp $(TARGET_SUBDIR)/libga68/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libga68/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libga68/Makefile; \ ++ mv $(TARGET_SUBDIR)/libga68/multilib.tmp $(TARGET_SUBDIR)/libga68/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libga68/multilib.tmp $(TARGET_SUBDIR)/libga68/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libga68/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libga68; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libga68; \ ++ cd "$(TARGET_SUBDIR)/libga68" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libga68/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ module_srcdir=libga68; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) \ ++ $$s/$$module_srcdir/configure \ ++ --srcdir=$${topdir}/$$module_srcdir \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} \ ++ || exit 1 ++@endif target-libga68 ++ ++ ++ ++ ++ ++.PHONY: all-target-libga68 maybe-all-target-libga68 ++maybe-all-target-libga68: ++@if gcc-bootstrap ++all-target-libga68: stage_current ++@endif gcc-bootstrap ++@if target-libga68 ++TARGET-target-libga68=all ++maybe-all-target-libga68: all-target-libga68 ++all-target-libga68: configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(TARGET-target-libga68)) ++@endif target-libga68 ++ ++ ++ ++ ++ ++.PHONY: check-target-libga68 maybe-check-target-libga68 ++maybe-check-target-libga68: ++@if target-libga68 ++maybe-check-target-libga68: check-target-libga68 ++ ++check-target-libga68: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) check) ++ ++@endif target-libga68 ++ ++.PHONY: install-target-libga68 maybe-install-target-libga68 ++maybe-install-target-libga68: ++@if target-libga68 ++maybe-install-target-libga68: install-target-libga68 ++ ++install-target-libga68: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libga68 ++ ++.PHONY: install-strip-target-libga68 maybe-install-strip-target-libga68 ++maybe-install-strip-target-libga68: ++@if target-libga68 ++maybe-install-strip-target-libga68: install-strip-target-libga68 ++ ++install-strip-target-libga68: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) ++ ++@endif target-libga68 ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libga68 info-target-libga68 ++maybe-info-target-libga68: ++@if target-libga68 ++maybe-info-target-libga68: info-target-libga68 ++ ++info-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing info in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ info) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-dvi-target-libga68 dvi-target-libga68 ++maybe-dvi-target-libga68: ++@if target-libga68 ++maybe-dvi-target-libga68: dvi-target-libga68 ++ ++dvi-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing dvi in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ dvi) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-pdf-target-libga68 pdf-target-libga68 ++maybe-pdf-target-libga68: ++@if target-libga68 ++maybe-pdf-target-libga68: pdf-target-libga68 ++ ++pdf-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-html-target-libga68 html-target-libga68 ++maybe-html-target-libga68: ++@if target-libga68 ++maybe-html-target-libga68: html-target-libga68 ++ ++html-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing html in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ html) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-TAGS-target-libga68 TAGS-target-libga68 ++maybe-TAGS-target-libga68: ++@if target-libga68 ++maybe-TAGS-target-libga68: TAGS-target-libga68 ++ ++TAGS-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing TAGS in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ TAGS) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-install-info-target-libga68 install-info-target-libga68 ++maybe-install-info-target-libga68: ++@if target-libga68 ++maybe-install-info-target-libga68: install-info-target-libga68 ++ ++install-info-target-libga68: \ ++ configure-target-libga68 \ ++ info-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-info in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-info) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-install-dvi-target-libga68 install-dvi-target-libga68 ++maybe-install-dvi-target-libga68: ++@if target-libga68 ++maybe-install-dvi-target-libga68: install-dvi-target-libga68 ++ ++install-dvi-target-libga68: \ ++ configure-target-libga68 \ ++ dvi-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-dvi in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-dvi) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-install-pdf-target-libga68 install-pdf-target-libga68 ++maybe-install-pdf-target-libga68: ++@if target-libga68 ++maybe-install-pdf-target-libga68: install-pdf-target-libga68 ++ ++install-pdf-target-libga68: \ ++ configure-target-libga68 \ ++ pdf-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-install-html-target-libga68 install-html-target-libga68 ++maybe-install-html-target-libga68: ++@if target-libga68 ++maybe-install-html-target-libga68: install-html-target-libga68 ++ ++install-html-target-libga68: \ ++ configure-target-libga68 \ ++ html-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-html in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-installcheck-target-libga68 installcheck-target-libga68 ++maybe-installcheck-target-libga68: ++@if target-libga68 ++maybe-installcheck-target-libga68: installcheck-target-libga68 ++ ++installcheck-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing installcheck in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ installcheck) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-mostlyclean-target-libga68 mostlyclean-target-libga68 ++maybe-mostlyclean-target-libga68: ++@if target-libga68 ++maybe-mostlyclean-target-libga68: mostlyclean-target-libga68 ++ ++mostlyclean-target-libga68: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-clean-target-libga68 clean-target-libga68 ++maybe-clean-target-libga68: ++@if target-libga68 ++maybe-clean-target-libga68: clean-target-libga68 ++ ++clean-target-libga68: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-distclean-target-libga68 distclean-target-libga68 ++maybe-distclean-target-libga68: ++@if target-libga68 ++maybe-distclean-target-libga68: distclean-target-libga68 ++ ++distclean-target-libga68: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-maintainer-clean-target-libga68 maintainer-clean-target-libga68 ++maybe-maintainer-clean-target-libga68: ++@if target-libga68 ++maybe-maintainer-clean-target-libga68: maintainer-clean-target-libga68 ++ ++maintainer-clean-target-libga68: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++ ++ ++ ++ + .PHONY: configure-target-libgomp maybe-configure-target-libgomp + maybe-configure-target-libgomp: + @if gcc-bootstrap +@@ -64335,6 +64857,14 @@ check-gcc-cobol: gcc-site.exp + (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-cobol); + check-cobol: check-gcc-cobol check-target-libgcobol + ++.PHONY: check-gcc-algol68 check-algol68 ++check-gcc-algol68: gcc-site.exp ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-algol68); ++check-algol68: check-gcc-algol68 check-target-libga68 ++ + + # The gcc part of install-no-fixedincludes, which relies on an intimate + # knowledge of how a number of gcc internal targets (inter)operate. Delegate. +@@ -67876,6 +68406,7 @@ configure-stageautofeedback-target-zlib: maybe-all-stageautofeedback-gcc + configure-target-rda: stage_last + configure-target-libada: stage_last + configure-target-libgm2: stage_last ++configure-target-libga68: stage_last + configure-stage1-target-libgomp: maybe-all-stage1-gcc + configure-stage2-target-libgomp: maybe-all-stage2-gcc + configure-stage3-target-libgomp: maybe-all-stage3-gcc +@@ -67920,6 +68451,7 @@ configure-target-zlib: maybe-all-gcc + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc + configure-target-libgm2: maybe-all-gcc ++configure-target-libga68: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc + configure-target-libitm: maybe-all-gcc + configure-target-libatomic: maybe-all-gcc +@@ -69220,6 +69752,9 @@ all-target-libgm2: maybe-all-target-libatomic + @unless target-libstdc++-v3-bootstrap + configure-target-libgrust: maybe-all-target-libstdc++-v3 + @endunless target-libstdc++-v3-bootstrap ++@unless target-libstdc++-v3-bootstrap ++configure-target-libga68: maybe-all-target-libstdc++-v3 ++@endunless target-libstdc++-v3-bootstrap + @unless target-libbacktrace-bootstrap + configure-target-libgfortran: maybe-all-target-libbacktrace + @endunless target-libbacktrace-bootstrap +@@ -69281,6 +69816,7 @@ all-target-libgo: maybe-all-target-libatomic + configure-target-libgm2: maybe-all-target-libstdc++-v3 + all-target-libgm2: maybe-all-target-libatomic + configure-target-libgrust: maybe-all-target-libstdc++-v3 ++configure-target-libga68: maybe-all-target-libstdc++-v3 + configure-target-newlib: maybe-all-binutils + configure-target-newlib: maybe-all-ld + configure-target-libgfortran: maybe-all-target-libbacktrace +@@ -69387,6 +69923,7 @@ configure-target-zlib: maybe-all-target-libgcc + configure-target-rda: maybe-all-target-libgcc + configure-target-libada: maybe-all-target-libgcc + configure-target-libgm2: maybe-all-target-libgcc ++configure-target-libga68: maybe-all-target-libgcc + configure-target-libgomp: maybe-all-target-libgcc + configure-target-libitm: maybe-all-target-libgcc + configure-target-libatomic: maybe-all-target-libgcc +@@ -69433,6 +69970,8 @@ configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-libgm2: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libga68: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -279,6 +279,11 @@ POSTSTAGE1_HOST_EXPORTS = \ + CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ + $(POSTSTAGE1_CXX_EXPORT) \ + $(LTO_EXPORTS) \ ++ GA68="$$r/$(HOST_SUBDIR)/prev-gcc/ga68$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ ++ -B$(build_tooldir)/bin/ $(GA68FLAGS_FOR_TARGET) \ ++ -B$$r/prev-$(TARGET_SUBDIR)/libga68/.libs"; \ ++ export GA68; \ ++ GA68_FOR_BUILD="$$GA68"; export GA68_FOR_BUILD; \ + GDC="$$r/$(HOST_SUBDIR)/prev-gcc/gdc$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ + -B$(build_tooldir)/bin/ $(GDCFLAGS_FOR_TARGET) \ + -B$$r/prev-$(TARGET_SUBDIR)/libphobos/libdruntime/gcc \ +@@ -311,6 +316,7 @@ BASE_TARGET_EXPORTS = \ + CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ ++ GA68="$(GA68_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GA68; \ + GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \ + GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \ + GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \ +@@ -380,6 +386,7 @@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ + DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ + DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD@ + GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ ++GA68_FOR_BUILD = @GA68_FOR_BUILD@ + GOC_FOR_BUILD = @GOC_FOR_BUILD@ + GDC_FOR_BUILD = @GDC_FOR_BUILD@ + GM2_FOR_BUILD = @GM2_FOR_BUILD@ +@@ -442,6 +449,7 @@ STRIP = @STRIP@ + WINDRES = @WINDRES@ + WINDMC = @WINDMC@ + ++GA68 = @GA68@ + GDC = @GDC@ + GNATBIND = @GNATBIND@ + GNATMAKE = @GNATMAKE@ +@@ -452,6 +460,7 @@ LIBCFLAGS = $(CFLAGS) + CXXFLAGS = @CXXFLAGS@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates + GOCFLAGS = $(CFLAGS) ++GA68FLAGS = @GA68FLAGS@ + GDCFLAGS = @GDCFLAGS@ + GM2FLAGS = $(CFLAGS) + +@@ -599,6 +608,7 @@ CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ + RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ + GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ + GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@ ++GA68_FOR_TARGET=$(STAGE_CC_WRAPPER) @GA68_FOR_TARGET@ + GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@ + GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@ + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ +@@ -628,6 +638,7 @@ LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates + LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@ + GM2FLAGS_FOR_TARGET = -O2 -g + GOCFLAGS_FOR_TARGET = -O2 -g ++GA68FLAGS_FOR_TARGET = -O2 -g + GDCFLAGS_FOR_TARGET = -O2 -g + + FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ +@@ -732,6 +743,7 @@ EXTRA_HOST_FLAGS = \ + 'DSYMUTIL=$(DSYMUTIL)' \ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ ++ 'GA68=$(GA68)' \ + 'GDC=$(GDC)' \ + 'GM2=$(GM2)' \ + 'LD=$(LD)' \ +@@ -760,6 +772,7 @@ STAGE1_FLAGS_TO_PASS = \ + POSTSTAGE1_FLAGS_TO_PASS = \ + CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ + CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \ ++ GA68="$${GA68}" GA68_FOR_BUILD="$${GA68_FOR_BUILD}" \ + GDC="$${GDC}" GDC_FOR_BUILD="$${GDC_FOR_BUILD}" \ + GM2="$${GM2}" GM2_FOR_BUILD="$${GM2_FOR_BUILD}" \ + GNATBIND="$${GNATBIND}" \ +@@ -795,6 +808,7 @@ EXTRA_TARGET_FLAGS = \ + 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ ++ 'GA68=$$(GA68_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ + 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ +--- a/src/config/acx.m4 ++++ b/src/config/acx.m4 +@@ -434,6 +434,12 @@ else + have_cargo=no + fi]) + ++# Test for Algol 68 ++AC_DEFUN([ACX_PROG_GA68], ++[AC_REQUIRE([AC_CHECK_TOOL_PREFIX]) ++AC_REQUIRE([AC_PROG_CC]) ++AC_CHECK_TOOL(GA68, ga68, no)]) ++ + # Test for D. + AC_DEFUN([ACX_PROG_GDC], + [AC_REQUIRE([AC_CHECK_TOOL_PREFIX]) +--- a/src/configure ++++ b/src/configure +@@ -616,6 +616,7 @@ AR_FOR_TARGET + GM2_FOR_TARGET + GDC_FOR_TARGET + GOC_FOR_TARGET ++GA68_FOR_TARGET + GFORTRAN_FOR_TARGET + GCC_FOR_TARGET + CXX_FOR_TARGET +@@ -624,6 +625,7 @@ RANLIB_PLUGIN_OPTION + AR_PLUGIN_OPTION + PKG_CONFIG_PATH + GDCFLAGS ++GA68FLAGS + READELF + OTOOL + OBJDUMP +@@ -655,6 +657,7 @@ LD_FOR_BUILD + LDFLAGS_FOR_BUILD + GDC_FOR_BUILD + GOC_FOR_BUILD ++GA68_FOR_BUILD + GFORTRAN_FOR_BUILD + DSYMUTIL_FOR_BUILD + DLLTOOL_FOR_BUILD +@@ -718,6 +721,7 @@ HAVE_CXX14 + do_compare + CARGO + GDC ++GA68 + GNATMAKE + GNATBIND + ac_ct_CXX +@@ -818,6 +822,7 @@ enable_libquadmath + enable_libquadmath_support + enable_libada + enable_libgm2 ++enable_libga68 + enable_libssp + enable_libstdcxx + enable_bootstrap +@@ -848,6 +853,7 @@ enable_host_shared + enable_libgdiagnostics + enable_stage1_languages + enable_objc_gc ++enable_algol68_gc + with_target_bdw_gc + with_target_bdw_gc_include + with_target_bdw_gc_lib +@@ -895,6 +901,7 @@ CC_FOR_TARGET + CXX_FOR_TARGET + GCC_FOR_TARGET + GFORTRAN_FOR_TARGET ++GA68_FOR_TARGET + GOC_FOR_TARGET + GDC_FOR_TARGET + GM2_FOR_TARGET +@@ -1564,6 +1571,7 @@ Optional Features: + disable libquadmath support for Fortran + --enable-libada build libada directory + --enable-libgm2 build libgm2 directory ++ --enable-libga68 build libga68 directory + --enable-libssp build libssp directory + --disable-libstdcxx do not build libstdc++-v3 directory + --enable-bootstrap enable bootstrapping [yes if native build] +@@ -1587,6 +1595,8 @@ Optional Features: + Mostly useful for compiler development + --enable-objc-gc enable use of Boehm's garbage collector with the GNU + Objective-C runtime ++ --enable-algol68-gc enable use of Boehm's garbage collector with the GNU ++ Algol runtime + --enable-vtable-verify Enable vtable verification feature + --enable-serial-[{host,target,build}-]configure + force sequential configuration of sub-packages for +@@ -1699,6 +1709,8 @@ Some influential environment variables: + GCC for the target + GFORTRAN_FOR_TARGET + GFORTRAN for the target ++ GA68_FOR_TARGET ++ GA68 for the target + GOC_FOR_TARGET + GOC for the target + GDC_FOR_TARGET +@@ -2866,6 +2878,7 @@ target_libraries="target-libgcc \ + target-libgcobol \ + target-libada \ + target-libgm2 \ ++ target-libga68 \ + target-libgo \ + target-libgrust \ + target-libphobos \ +@@ -3269,6 +3282,14 @@ if test "${ENABLE_LIBGM2}" != "yes" ; then + noconfigdirs="$noconfigdirs gm2tools" + fi + ++# Check whether --enable-libga68 was given. ++if test "${enable_libga68+set}" = set; then : ++ enableval=$enable_libga68; ENABLE_LIBGA68=$enableval ++else ++ ENABLE_LIBGA68=yes ++fi ++ ++ + # Check whether --enable-libssp was given. + if test "${enable_libssp+set}" = set; then : + enableval=$enable_libssp; ENABLE_LIBSSP=$enableval +@@ -4247,6 +4268,7 @@ if test "${build}" != "${host}" ; then + CXX_FOR_BUILD=${CXX_FOR_BUILD-g++} + DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil} + GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} ++ GA68_FOR_BUILD=${GA68_FOR_BUILD-ga68} + GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} + GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} + DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} +@@ -4262,6 +4284,7 @@ else + CXX_FOR_BUILD="\$(CXX)" + DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)" + GFORTRAN_FOR_BUILD="\$(GFORTRAN)" ++ GA68_FOR_BUILD="\$(GA68)" + GOC_FOR_BUILD="\$(GOC)" + GDC_FOR_BUILD="\$(GDC)" + DLLTOOL_FOR_BUILD="\$(DLLTOOL)" +@@ -5782,6 +5805,100 @@ fi + + + ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ga68", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ga68; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_GA68+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$GA68"; then ++ ac_cv_prog_GA68="$GA68" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_GA68="${ac_tool_prefix}ga68" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++GA68=$ac_cv_prog_GA68 ++if test -n "$GA68"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68" >&5 ++$as_echo "$GA68" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_GA68"; then ++ ac_ct_GA68=$GA68 ++ # Extract the first word of "ga68", so it can be a program name with args. ++set dummy ga68; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_GA68+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_GA68"; then ++ ac_cv_prog_ac_ct_GA68="$ac_ct_GA68" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_GA68="ga68" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_GA68=$ac_cv_prog_ac_ct_GA68 ++if test -n "$ac_ct_GA68"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GA68" >&5 ++$as_echo "$ac_ct_GA68" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_GA68" = x; then ++ GA68="no" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ GA68=$ac_ct_GA68 ++ fi ++else ++ GA68="$ac_cv_prog_GA68" ++fi ++ ++ ++ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gdc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gdc; ac_word=$2 +@@ -10328,6 +10445,11 @@ if test "${enable_objc_gc+set}" = set; then : + enableval=$enable_objc_gc; + fi + ++# Check whether --enable-algol68-gc was given. ++if test "${enable_algol68_gc+set}" = set; then : ++ enableval=$enable_algol68_gc; ++fi ++ + + # Check whether --with-target-bdw-gc was given. + if test "${with_target_bdw_gc+set}" = set; then : +@@ -10347,22 +10469,23 @@ if test "${with_target_bdw_gc_lib+set}" = set; then : + fi + + +-case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto) +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bdw garbage collector" >&5 ++case ,${enable_languages},:${enable_objc_gc}:${enable_algol68_gc} in ++ *,objc,*:yes:*|*,objc,*:auto:*|*,algol68,*:*:yes|*,algol68,*:*:auto) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bdw garbage collector" >&5 + $as_echo_n "checking for bdw garbage collector... " >&6; } +- if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: using bdw-gc in default locations" >&5 ++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: using bdw-gc in default locations" >&5 + $as_echo "using bdw-gc in default locations" >&6; } +- else +- if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then +- as_fn_error $? "found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing" "$LINENO" 5 +- elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then +- as_fn_error $? "found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing" "$LINENO" 5 + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: using paths configured with --with-target-bdw-gc options" >&5 ++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then ++ as_fn_error $? "found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing" "$LINENO" 5 ++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then ++ as_fn_error $? "found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing" "$LINENO" 5 ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: using paths configured with --with-target-bdw-gc options" >&5 + $as_echo "using paths configured with --with-target-bdw-gc options" >&6; } ++ fi + fi +- fi + esac + + # Disable libitm, libsanitizer, libvtv if we're not building C++ +@@ -11683,6 +11806,7 @@ done + + + ++ + + # Generate default definitions for YACC, M4, LEX and other programs that run + # on the build machine. These are used if the Makefile can't locate these +@@ -14202,6 +14326,9 @@ fi + + + ++GA68FLAGS=${GA68FLAGS-${CFLAGS}} ++ ++ + GDCFLAGS=${GDCFLAGS-${CFLAGS}} + + +@@ -15003,6 +15130,167 @@ fi + + + ++if test -n "$GA68_FOR_TARGET"; then ++ ac_cv_prog_GA68_FOR_TARGET=$GA68_FOR_TARGET ++elif test -n "$ac_cv_prog_GA68_FOR_TARGET"; then ++ GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET ++fi ++ ++if test -n "$ac_cv_prog_GA68_FOR_TARGET"; then ++ for ncn_progname in ga68; do ++ # Extract the first word of "${ncn_progname}", so it can be a program name with args. ++set dummy ${ncn_progname}; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$GA68_FOR_TARGET"; then ++ ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_GA68_FOR_TARGET="${ncn_progname}" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET ++if test -n "$GA68_FOR_TARGET"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5 ++$as_echo "$GA68_FOR_TARGET" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ done ++fi ++ ++if test -z "$ac_cv_prog_GA68_FOR_TARGET" && test -n "$with_build_time_tools"; then ++ for ncn_progname in ga68; do ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++$as_echo_n "checking for ${ncn_progname} in $with_build_time_tools... " >&6; } ++ if test -x $with_build_time_tools/${ncn_progname}; then ++ ac_cv_prog_GA68_FOR_TARGET=$with_build_time_tools/${ncn_progname} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ break ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ fi ++ done ++fi ++ ++if test -z "$ac_cv_prog_GA68_FOR_TARGET"; then ++ for ncn_progname in ga68; do ++ if test -n "$ncn_target_tool_prefix"; then ++ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. ++set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$GA68_FOR_TARGET"; then ++ ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_GA68_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET ++if test -n "$GA68_FOR_TARGET"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5 ++$as_echo "$GA68_FOR_TARGET" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ fi ++ if test -z "$ac_cv_prog_GA68_FOR_TARGET" && test $build = $target ; then ++ # Extract the first word of "${ncn_progname}", so it can be a program name with args. ++set dummy ${ncn_progname}; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$GA68_FOR_TARGET"; then ++ ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_GA68_FOR_TARGET="${ncn_progname}" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET ++if test -n "$GA68_FOR_TARGET"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5 ++$as_echo "$GA68_FOR_TARGET" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ fi ++ test -n "$ac_cv_prog_GA68_FOR_TARGET" && break ++ done ++fi ++ ++if test -z "$ac_cv_prog_GA68_FOR_TARGET" ; then ++ set dummy ga68 ++ if test $build = $target ; then ++ GA68_FOR_TARGET="$2" ++ else ++ GA68_FOR_TARGET="${ncn_target_tool_prefix}$2" ++ fi ++else ++ GA68_FOR_TARGET="$ac_cv_prog_GA68_FOR_TARGET" ++fi ++ ++ ++ + if test -n "$GOC_FOR_TARGET"; then + ac_cv_prog_GOC_FOR_TARGET=$GOC_FOR_TARGET + elif test -n "$ac_cv_prog_GOC_FOR_TARGET"; then +@@ -19469,6 +19757,51 @@ $as_echo "pre-installed" >&6; } + fi + fi + ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target ga68" >&5 ++$as_echo_n "checking where to find the target ga68... " >&6; } ++if test "x${build}" != "x${host}" ; then ++ if expr "x$GA68_FOR_TARGET" : "x/" > /dev/null; then ++ # We already found the complete path ++ ac_dir=`dirname $GA68_FOR_TARGET` ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5 ++$as_echo "pre-installed in $ac_dir" >&6; } ++ else ++ # Canadian cross, just use what we found ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5 ++$as_echo "pre-installed" >&6; } ++ fi ++else ++ ok=yes ++ case " ${configdirs} " in ++ *" gcc "*) ;; ++ *) ok=no ;; ++ esac ++ case ,${enable_languages}, in ++ *,algol68,*) ;; ++ *) ok=no ;; ++ esac ++ if test $ok = yes; then ++ # An in-tree tool is available and we can use it ++ GA68_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/ga68 -B$$r/$(HOST_SUBDIR)/gcc/' ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: just compiled" >&5 ++$as_echo "just compiled" >&6; } ++ elif expr "x$GA68_FOR_TARGET" : "x/" > /dev/null; then ++ # We already found the complete path ++ ac_dir=`dirname $GA68_FOR_TARGET` ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5 ++$as_echo "pre-installed in $ac_dir" >&6; } ++ elif test "x$target" = "x$host"; then ++ # We can use an host tool ++ GA68_FOR_TARGET='$(GA68)' ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: host tool" >&5 ++$as_echo "host tool" >&6; } ++ else ++ # We need a cross tool ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5 ++$as_echo "pre-installed" >&6; } ++ fi ++fi ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target gdc" >&5 + $as_echo_n "checking where to find the target gdc... " >&6; } + if test "x${build}" != "x${host}" ; then +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -164,6 +164,7 @@ target_libraries="target-libgcc \ + target-libgcobol \ + target-libada \ + target-libgm2 \ ++ target-libga68 \ + target-libgo \ + target-libgrust \ + target-libphobos \ +@@ -512,6 +513,11 @@ if test "${ENABLE_LIBGM2}" != "yes" ; then + noconfigdirs="$noconfigdirs gm2tools" + fi + ++AC_ARG_ENABLE(libga68, ++[AS_HELP_STRING([--enable-libga68], [build libga68 directory])], ++ENABLE_LIBGA68=$enableval, ++ENABLE_LIBGA68=yes) ++ + AC_ARG_ENABLE(libssp, + [AS_HELP_STRING([--enable-libssp], [build libssp directory])], + ENABLE_LIBSSP=$enableval, +@@ -1445,6 +1451,7 @@ if test "${build}" != "${host}" ; then + CXX_FOR_BUILD=${CXX_FOR_BUILD-g++} + DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil} + GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} ++ GA68_FOR_BUILD=${GA68_FOR_BUILD-ga68} + GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} + GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} + DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} +@@ -1460,6 +1467,7 @@ else + CXX_FOR_BUILD="\$(CXX)" + DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)" + GFORTRAN_FOR_BUILD="\$(GFORTRAN)" ++ GA68_FOR_BUILD="\$(GA68)" + GOC_FOR_BUILD="\$(GOC)" + GDC_FOR_BUILD="\$(GDC)" + DLLTOOL_FOR_BUILD="\$(DLLTOOL)" +@@ -1513,6 +1521,7 @@ int main() {}])], + fi + + ACX_PROG_GNAT ++ACX_PROG_GA68 + ACX_PROG_GDC + ACX_PROG_CARGO + ACX_PROG_CMP_IGNORE_INITIAL +@@ -2637,6 +2646,10 @@ AC_ARG_ENABLE(objc-gc, + [AS_HELP_STRING([--enable-objc-gc], + [enable use of Boehm's garbage collector with the + GNU Objective-C runtime])]) ++AC_ARG_ENABLE(algol68-gc, ++[AS_HELP_STRING([--enable-algol68-gc], ++ [enable use of Boehm's garbage collector with the ++ GNU Algol runtime])]) + AC_ARG_WITH([target-bdw-gc], + [AS_HELP_STRING([--with-target-bdw-gc=PATHLIST], + [specify prefix directory for installed bdw-gc package. +@@ -2649,21 +2662,22 @@ AC_ARG_WITH([target-bdw-gc-lib], + [AS_HELP_STRING([--with-target-bdw-gc-lib=PATHLIST], + [specify directories for installed bdw-gc library])]) + +-case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto) +- AC_MSG_CHECKING([for bdw garbage collector]) +- if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then +- dnl no bdw-gw options, assume default locations +- AC_MSG_RESULT([using bdw-gc in default locations]) +- else +- dnl bdw-gw options, first error checking, complete checking in libobjc +- if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then +- AC_MSG_ERROR([found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing]) +- elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then +- AC_MSG_ERROR([found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing]) ++case ,${enable_languages},:${enable_objc_gc}:${enable_algol68_gc} in ++ *,objc,*:yes:*|*,objc,*:auto:*|*,algol68,*:*:yes|*,algol68,*:*:auto) ++ AC_MSG_CHECKING([for bdw garbage collector]) ++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then ++ dnl no bdw-gw options, assume default locations ++ AC_MSG_RESULT([using bdw-gc in default locations]) + else +- AC_MSG_RESULT([using paths configured with --with-target-bdw-gc options]) ++ dnl bdw-gw options, first error checking, complete checking in libobjc and libga68 ++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then ++ AC_MSG_ERROR([found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing]) ++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then ++ AC_MSG_ERROR([found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing]) ++ else ++ AC_MSG_RESULT([using paths configured with --with-target-bdw-gc options]) ++ fi + fi +- fi + esac + + # Disable libitm, libsanitizer, libvtv if we're not building C++ +@@ -3902,6 +3916,7 @@ AC_SUBST(CXX_FOR_BUILD) + AC_SUBST(DLLTOOL_FOR_BUILD) + AC_SUBST(DSYMUTIL_FOR_BUILD) + AC_SUBST(GFORTRAN_FOR_BUILD) ++AC_SUBST(GA68_FOR_BUILD) + AC_SUBST(GOC_FOR_BUILD) + AC_SUBST(GDC_FOR_BUILD) + AC_SUBST(LDFLAGS_FOR_BUILD) +@@ -3996,6 +4011,9 @@ AC_SUBST(CC) + AC_SUBST(CXX) + AC_SUBST(CFLAGS) + AC_SUBST(CXXFLAGS) ++AC_SUBST(GA68) ++AC_SUBST(GA68FLAGS) ++GA68FLAGS=${GA68FLAGS-${CFLAGS}} + AC_SUBST(GDC) + AC_SUBST(GDCFLAGS) + GDCFLAGS=${GDCFLAGS-${CFLAGS}} +@@ -4032,6 +4050,7 @@ NCN_STRICT_CHECK_TARGET_TOOLS(CC_FOR_TARGET, cc gcc) + NCN_STRICT_CHECK_TARGET_TOOLS(CXX_FOR_TARGET, c++ g++ cxx gxx) + NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TARGET, gcc, ${CC_FOR_TARGET}) + NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran) ++NCN_STRICT_CHECK_TARGET_TOOLS(GA68_FOR_TARGET, ga68) + NCN_STRICT_CHECK_TARGET_TOOLS(GOC_FOR_TARGET, gccgo) + NCN_STRICT_CHECK_TARGET_TOOLS(GDC_FOR_TARGET, gdc) + NCN_STRICT_CHECK_TARGET_TOOLS(GM2_FOR_TARGET, gm2) +@@ -4083,6 +4102,8 @@ GCC_TARGET_TOOL(gfortran, GFORTRAN_FOR_TARGET, GFORTRAN, + [gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/], fortran) + GCC_TARGET_TOOL(gccgo, GOC_FOR_TARGET, GOC, + [gcc/gccgo -B$$r/$(HOST_SUBDIR)/gcc/], go) ++GCC_TARGET_TOOL(ga68, GA68_FOR_TARGET, GA68, ++ [gcc/ga68 -B$$r/$(HOST_SUBDIR)/gcc/], algol68) + GCC_TARGET_TOOL(gdc, GDC_FOR_TARGET, GDC, + [gcc/gdc -B$$r/$(HOST_SUBDIR)/gcc/], d) + GCC_TARGET_TOOL(gm2, GM2_FOR_TARGET, GM2, +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -615,6 +615,8 @@ tm_d_file_list=@tm_d_file_list@ + tm_d_include_list=@tm_d_include_list@ + tm_rust_file_list=@tm_rust_file_list@ + tm_rust_include_list=@tm_rust_include_list@ ++tm_algol68_file_list=@tm_algol68_file_list@ ++tm_algol68_include_list=@tm_algol68_include_list@ + build_xm_file_list=@build_xm_file_list@ + build_xm_include_list=@build_xm_include_list@ + build_xm_defines=@build_xm_defines@ +@@ -919,6 +921,7 @@ TCONFIG_H = tconfig.h $(xm_file_list) + TM_P_H = tm_p.h $(tm_p_file_list) $(TREE_H) + TM_D_H = tm_d.h $(tm_d_file_list) + TM_RUST_H = tm_rust.h $(tm_rust_file_list) ++TM_ALGOL68_H = tm_algol68.h $(tm_algol68_file_list) + GTM_H = tm.h $(tm_file_list) insn-constants.h + TM_H = $(GTM_H) insn-flags.h $(OPTIONS_H) + +@@ -978,11 +981,13 @@ C_TARGET_DEF = c-family/c-target.def target-hooks-macros.h + COMMON_TARGET_DEF = common/common-target.def target-hooks-macros.h + D_TARGET_DEF = d/d-target.def target-hooks-macros.h + RUST_TARGET_DEF = rust/rust-target.def target-hooks-macros.h ++ALGOL68_TARGET_DEF = algol68/algol68-target.def target-hooks-macros.h + TARGET_H = $(TM_H) target.h $(TARGET_DEF) insn-modes.h insn-codes.h + C_TARGET_H = c-family/c-target.h $(C_TARGET_DEF) + COMMON_TARGET_H = common/common-target.h $(INPUT_H) $(COMMON_TARGET_DEF) + D_TARGET_H = d/d-target.h $(D_TARGET_DEF) + RUST_TARGET_H = rust/rust-target.h $(RUST_TARGET_DEF) ++ALGOL68_TARGET_H = algol68/algol68-target.h $(ALGOL68_TARGET_DEF) + MACHMODE_H = machmode.h mode-classes.def + HOOKS_H = hooks.h + HOSTHOOKS_DEF_H = hosthooks-def.h $(HOOKS_H) +@@ -1303,6 +1308,9 @@ FORTRAN_TARGET_OBJS=@fortran_target_objs@ + # Target specific, Rust specific object file + RUST_TARGET_OBJS=@rust_target_objs@ + ++# Target specific, Algol68 specific object file ++ALGOL68_TARGET_OBJS=@algol68_target_objs@ ++ + # Object files for gcc many-languages driver. + GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o options-urls.o + +@@ -2082,6 +2090,7 @@ tm.h: cs-tm.h ; @true + tm_p.h: cs-tm_p.h ; @true + tm_d.h: cs-tm_d.h ; @true + tm_rust.h: cs-tm_rust.h ; @true ++tm_algol68.h: cs-tm_algol68.h; @true + + cs-config.h: Makefile + TARGET_CPU_DEFAULT="" \ +@@ -2121,6 +2130,11 @@ cs-tm_rust.h: Makefile + HEADERS="$(tm_rust_include_list)" DEFINES="" \ + $(SHELL) $(srcdir)/mkconfig.sh tm_rust.h + ++cs-tm_algol68.h: Makefile ++ TARGET_CPU_DEFAULT="" \ ++ HEADERS="$(tm_algol68_include_list)" DEFINES="" \ ++ $(SHELL) $(srcdir)/mkconfig.sh tm_algol68.h ++ + # Don't automatically run autoconf, since configure.ac might be accidentally + # newer than configure. Also, this writes into the source directory which + # might be on a read-only file system. If configured for maintainer mode +@@ -2594,6 +2608,12 @@ default-rust.o: config/default-rust.cc + $(COMPILE) $< + $(POSTCOMPILE) + ++# Files used by the Algol68 language front end. ++ ++default-algol68.o: config/default-algol68.cc ++ $(COMPILE) $< ++ $(POSTCOMPILE) ++ + # Language-independent files. + + DRIVER_DEFINES = \ +@@ -2940,6 +2960,15 @@ s-rust-target-hooks-def-h: build/genhooks$(build_exeext) + rust/rust-target-hooks-def.h + $(STAMP) s-rust-target-hooks-def-h + ++algol68/algol68-target-hooks-def.h: s-algol68-target-hooks-def-h; @true ++ ++s-algol68-target-hooks-def-h: build/genhooks$(build_exeext) ++ $(RUN_GEN) build/genhooks$(build_exeext) "Algol68 Target Hook" \ ++ > tmp-algol68-target-hooks-def.h ++ $(SHELL) $(srcdir)/../move-if-change tmp-algol68-target-hooks-def.h \ ++ algol68/algol68-target-hooks-def.h ++ $(STAMP) s-algol68-target-hooks-def-h ++ + # check if someone mistakenly only changed tm.texi. + # We use a different pathname here to avoid a circular dependency. + s-tm-texi: $(srcdir)/doc/../doc/tm.texi +@@ -3148,6 +3178,7 @@ generated_files = config.h tm.h $(TM_P_H) $(TM_D_H) $(TM_H) multilib.h \ + gimple-match-auto.h generic-match-auto.h \ + c-family/c-target-hooks-def.h d/d-target-hooks-def.h \ + $(TM_RUST_H) rust/rust-target-hooks-def.h \ ++ $(TM_ALGOL68_H) algol68/algol68-target-hooks-def.h \ + case-cfn-macros.h \ + cfn-operators.pd omp-device-properties.h + +@@ -3282,8 +3313,8 @@ build/genrecog.o : genrecog.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) \ + $(HASH_TABLE_H) inchash.h + build/genhooks.o : genhooks.cc $(TARGET_DEF) $(C_TARGET_DEF) \ +- $(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(RUST_TARGET_DEF) $(BCONFIG_H) \ +- $(SYSTEM_H) errors.h ++ $(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(RUST_TARGET_DEF) \ ++ $(ALGOL68_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h + build/genmddump.o : genmddump.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) + build/genmatch.o : genmatch.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \ +@@ -3832,7 +3863,8 @@ $(build_htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES) + .PHONY: regenerate-opt-urls + OPT_URLS_HTML_DEPS = $(build_htmldir)/gcc/Option-Index.html \ + $(build_htmldir)/gdc/Option-Index.html \ +- $(build_htmldir)/gfortran/Option-Index.html ++ $(build_htmldir)/gfortran/Option-Index.html \ ++ $(build_htmldir)/ga68/Option-Index.html + $(OPT_URLS_HTML_DEPS): %/Option-Index.html: %/index.html + + regenerate-opt-urls: $(srcdir)/regenerate-opt-urls.py $(OPT_URLS_HTML_DEPS) +--- /dev/null ++++ b/src/gcc/algol68/Make-lang.in +@@ -0,0 +1,287 @@ ++# Make-lang.in -- Top level -*- makefile -*- fragment for GCC Algol 68 ++# frontend. ++ ++# Copyright (C) 2025 Free Software Foundation, Inc. ++ ++# This file is NOT part of GCC. ++ ++# GCC is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3, or (at your option) ++# any later version. ++ ++# GCC is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++ ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# This file provides the language dependent support in the main Makefile. ++ ++.PHONY: algol68 ++ ++# Installation name. ++ ++A68_INSTALL_NAME = $(shell echo ga68|sed '$(program_transform_name)') ++A68_TARGET_INSTALL_NAME = $(target_noncanonical)-$(shell echo ga68|sed '$(program_transform_name)') ++ ++# General hooks ++ ++algol68: a681$(exeext) ++algol68.serial = a681$(exeext) ++ ++.PHONY: algol68 ++ ++# Use maximal warnings for this front end. ++algol68-warn = $(STRICT_WARN) ++ ++# First the driver, ga68. ++ ++GA68_OBJS = \ ++ $(GCC_OBJS) \ ++ algol68/a68spec.o \ ++ $(END) ++ ++a68spec.o: $(srcdir)/algol68/a68spec.cc $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) \ ++ $(CONFIG_H) opts.h ++ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \ ++ $(INCLUDES) $(srcdir)/algol68/a68spec.cc ++ ++ga68$(exeext): $(GA68_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS) ++ +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ ++ $(GA68_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \ ++ $(EXTRA_GCC_LIBS) $(LIBS) ++ ++# Now the compiler proper, a681. ++ ++ALGOL68_OBJS = algol68/a68-lang.o \ ++ algol68/a68-unistr.o \ ++ algol68/a68-moids-diagnostics.o \ ++ algol68/a68-moids-misc.o \ ++ algol68/a68-moids-to-string.o \ ++ algol68/a68-postulates.o \ ++ algol68/a68-diagnostics.o \ ++ algol68/a68-exports.o \ ++ algol68/a68-imports.o \ ++ algol68/a68-parser.o \ ++ algol68/a68-parser-keywords.o \ ++ algol68/a68-parser-bottom-up.o \ ++ algol68/a68-parser-brackets.o \ ++ algol68/a68-parser-debug.o \ ++ algol68/a68-parser-extract.o \ ++ algol68/a68-parser-modes.o \ ++ algol68/a68-parser-moids-check.o \ ++ algol68/a68-parser-moids-coerce.o \ ++ algol68/a68-parser-moids-equivalence.o \ ++ algol68/a68-parser-pragmat.o \ ++ algol68/a68-parser-scanner.o \ ++ algol68/a68-parser-scope.o \ ++ algol68/a68-parser-serial-dsa.o \ ++ algol68/a68-parser-taxes.o \ ++ algol68/a68-parser-top-down.o \ ++ algol68/a68-parser-victal.o \ ++ algol68/a68-parser-prelude.o \ ++ algol68/a68-low.o \ ++ algol68/a68-low-builtins.o \ ++ algol68/a68-low-clauses.o \ ++ algol68/a68-low-coercions.o \ ++ algol68/a68-low-decls.o \ ++ algol68/a68-low-generator.o \ ++ algol68/a68-low-misc.o \ ++ algol68/a68-low-moids.o \ ++ algol68/a68-low-multiples.o \ ++ algol68/a68-low-refs.o \ ++ algol68/a68-low-procs.o \ ++ algol68/a68-low-structs.o \ ++ algol68/a68-low-chars.o \ ++ algol68/a68-low-strings.o \ ++ algol68/a68-low-ints.o \ ++ algol68/a68-low-bools.o \ ++ algol68/a68-low-reals.o \ ++ algol68/a68-low-complex.o \ ++ algol68/a68-low-bits.o \ ++ algol68/a68-low-posix.o \ ++ algol68/a68-low-prelude.o \ ++ algol68/a68-low-ranges.o \ ++ algol68/a68-low-runtime.o \ ++ algol68/a68-low-unions.o \ ++ algol68/a68-low-units.o \ ++ $(END) ++ ++ALGOL68_ALL_OBJS = $(ALGOL68_OBJS) $(ALGOL68_TARGET_OBJS) ++ ++algol68_OBJS = $(ALGOL68_ALL_OBJS) algol68/a68spec.o ++ ++a681$(exeext): $(ALGOL68_ALL_OBJS) attribs.o $(BACKEND) $(LIBDEPS) $(algol68.prev) ++ @$(call LINK_PROGRESS,$(INDEX.algol68),start) ++ +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ ++ $(ALGOL68_OBJS) attribs.o $(BACKEND) $(LIBS) $(A681_LIBS) $(BACKENDLIBS) ++ @$(call LINK_PROGRESS,$(INDEX.algol68),end) ++ ++algol68/tfspec.o: $(srcdir)/algol68/tfspec.c \ ++ $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) $(CONFIG_H) $(TREE_H) ++ ++# Documentation. ++ ++A68_MANUAL_FILES = ++ ++A68_MANUAL_FILES = \ ++ algol68/ga68.texi \ ++ $(gcc_docdir)/include/fdl.texi \ ++ $(gcc_docdir)/include/gpl_v3.texi \ ++ $(gcc_docdir)/include/gcc-common.texi \ ++ gcc-vers.texi ++ ++A68_INT_MANUAL_FILES = \ ++ algol68/ga68-internals.texi \ ++ $(gcc_docdir)/include/fdl.texi \ ++ $(gcc_docdir)/include/gcc-common.texi \ ++ gcc-vers.texi ++ ++A68_TEXI_FILES = $(A68_MANUAL_FILES) $(A68_INT_MANUAL_FILES) ++ ++doc/ga68.info: $(A68_MANUAL_FILES) ++ if test "x$(BUILD_INFO)" = xinfo; then \ ++ rm -f doc/ga68.info*; \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ else true; fi ++ ++doc/ga68-internals.info: $(A68_INT_MANUAL_FILES) ++ if test "x$(BUILD_INFO)" = xinfo; then \ ++ rm -f doc/ga68-internals.info*; \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ else true; fi ++ ++doc/ga68.dvi: $(A68_MANUAL_FILES) ++ $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $< ++ ++doc/ga68-internals.dvi: $(A68_INT_MANUAL_FILES) ++ $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $< ++ ++doc/ga68.pdf: $(A68_MANUAL_FILES) ++ $(TEXI2PDF) -I $(abs_docdir)/include -o $@ $< ++ ++doc/ga68-internals.pdf: $(A68_INT_MANUAL_FILES) ++ $(TEXI2PDF) -I $(abs_docdir)/include -o $@ $< ++ ++$(build_htmldir)/ga68/index.html: $(A68_MANUAL_FILES) ++ $(mkinstalldirs) $(@D) ++ rm -f $(@D)/* ++ $(TEXI2HTML) $(MAKEINFO_TOC_INLINE_FLAG) \ ++ -I $(gcc_docdir)/include -I $(srcdir)/d -o $(@D) $< ++ ++$(build_htmldir)/ga68-internals/index.html: $(A68_INT_MANUAL_FILES) ++ $(mkinstalldirs) $(@D) ++ rm -f $(@D)/* ++ $(TEXI2HTML) $(MAKEINFO_TOC_INLINE_FLAG) \ ++ -I $(gcc_docdir)/include -I $(srcdir)/d -o $(@D) $< ++ ++.INTERMEDIATE: ga68.pod ++ ++ga68.pod: algol68/ga68.texi ++ -$(TEXI2POD) -D ga68 < $< > $@ ++ ++# Build hooks. ++ ++algol68.srcextra: ++ ++algol68.all.cross: ga68$(exeext) ++algol68.start.encap: ga68$(exeect) ++algol68.rest.encap: ++algol68.info: doc/ga68.info doc/ga68-internals.info ++algol68.dvi: doc/ga68.dvi doc/ga68-internals.dvi ++algol68.pdf: doc/ga68.pdf doc/ga68-internals.pdf ++algol68.install-pdf: ++algol68.html: $(build_htmldir)/ga68/index.html $(build_htmldir)/ga68-internals/index.html ++algol68.man: doc/ga68.1 ++algol68.srcinfo: doc/ga68.info doc/ga68-internals.info ++ -cp -p $^ $(srcdir)/doc ++algol68.srcinfo: ++algol68.srcman: ++algol68.srcman: doc/ga68.1 ++ -cp -p $^ $(srcdir)/doc ++algol68.install-plugin: ++ ++algol68.tags: force ++ cd $(srcdir)/algol68; etags -o TAGS.sub *.c *.h; \ ++ etags --include TAGS.sub --include ../TAGS.sub ++ ++lang_checks += check-algol68 ++lang_checks_parallelized += check-algol68 ++check_algol68_parallelize = 10 ++ ++selftest-algol68: ++ ++# ++# Install hooks: ++ ++algol68.install-common: installdirs ++ -rm -f $(DESTDIR)$(bindir)/$(A68_INSTALL_NAME)$(exeext) ++ $(INSTALL_PROGRAM) ga68$(exeext) $(DESTDIR)$(bindir)/$(A68_INSTALL_NAME)$(exeext) ++ ++algol68.install-man: $(DESTDIR)$(man1dir)/$(A68_INSTALL_NAME)$(man1ext) ++ ++$(DESTDIR)$(man1dir)/$(A68_INSTALL_NAME)$(man1ext): doc/ga68.1 installdirs ++ -rm -f $@ ++ -$(INSTALL_DATA) $< $@ ++ -chmod a-x $@ ++ ++$(DESTDIR)$(man7dir)/%.7algol: doc/%.7algol installdirs ++ -rm -f $@ ++ -$(INSTALL_DATA) $< $@ ++ -chmod a-x $@ ++ ++algol68.install-info: $(DESTDIR)$(infodir)/ga68.info $(DESTDIR)$(infodir)/ga68-internals.info ++ ++algol68.install-html: $(build_htmldir)/ga68 $(build_htmldir)/ga68-internals ++ @$(NORMAL_INSTALL) ++ test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)" ++ @for p in $(build_htmldir)/ga68; do \ ++ if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \ ++ f=$(html__strip_dir) \ ++ if test -d "$$d$$p"; then \ ++ echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \ ++ $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ ++ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ ++ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \ ++ else \ ++ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \ ++ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \ ++ fi; \ ++ done ++ ++algol68.uninstall: ++# ++# Clean hooks: ++# A lot of the ancillary files are deleted by the main makefile. ++# We just have to delete files specific to us. ++algol68.mostlyclean: ++ -rm -f algol68/*$(objext) algol68/xforward algol68/fflags ++ -rm -f algol68/*$(coverageexts) ++algol68.clean: algol68.mostlyclean ++algol68.distclean: ++ -rm -f algol68/Makefile algol68/Make-host algol68/Make-target ++ -rm -f algol68/config.status algol68/config.cache ++algol68.maintainer-clean: ++ -rm -f $(gcc_docdir)/*.7algol ++ ++# ++# Stage hooks: ++ ++algol68.stage1: stage1-start ++ -mv algol68/*$(objext) stage1/algol68 ++algol68.stage2: stage2-start ++ -mv algol68/*$(objext) stage2/algol68 ++algol68.stage3: stage3-start ++ -mv algol68/*$(objext) stage3/algol68 ++algol68.stage4: stage4-start ++ -mv algol68/*$(objext) stage4/algol68 ++algol68.stageprofile: stageprofile-start ++ -mv algol68/*$(objext) stageprofile/algol68 ++algol68.stagefeedback: stagefeedback-start ++ -mv algol68/*$(objext) stagefeedback/algol68 +--- /dev/null ++++ b/src/gcc/algol68/README +@@ -0,0 +1,130 @@ ++This is the GNU Algol 68 compiler. ++ ++This compiler implements the Algol 68 programming language ++(https://www.algol68-lang.org) as defined in the Revised Report, along ++with several GNU extensions to the language which are oriented to ++enhance its application in systems programming and to achieve a good ++integration in POSIX systems. ++ ++The parser component used in this front-end has been adapted from ++Algol 68 Genie, an Algol 68 interpreter written by Marcel van der ++Veer. It is worth noting that this parser is not your typical garden ++variety parser, as it is capable of effectively parsing the two-level ++grammar of Algol 68, which is no small task. Parsing Algol 68 is ++notoriously difficult, and without Marcel's careful work of many years ++this front-end would most probably not exist. It is also a beautiful ++implementation that is a delight to both read and work with. ++ ++The syntax tree built by the parser is lowered into a GENERIC tree by ++a lowering pass, which then invokes the gimplifier and hands the ++resulting gimple IR over to the rest of the compilation, down the ++rabbit hole all the way to optimized assembly code. ++ ++The compiler driver is called `ga68'. ++The compiler proper is called `a681'. ++ ++Programs built by this compiler make use of the libga68 run-time ++library. ++ ++Building ++======== ++ ++Configure and build GCC with: ++ ++ $ mkdir build-algol68 ++ $ cd build-algol68 ++ $ ../configure --enable-languages=algol68 ++ $ make ++ $ make install ++ ++Alternatively you can configure and build a non-bootstrapped compiler, ++which is much faster to build. But note that in this case you better ++pass some flags so the compiler gets built optimized, or the resulting ++compiler will be rather slow: ++ ++ $ mkdir build-algol68 ++ $ cd build-algol68 ++ $ ../configure --enable-languages=algol68 BOOT_CFLAGS="-O2 -g" \ ++ BOOT_CXXFLAGS="-O2 -g" \ ++ STAGE1_CFLAGS="-O2 -g" \ ++ STAGE1_CXXFLAGS="-O2 -g" ++ $ make ++ $ make install ++ ++Debugging ++========= ++ ++A few front-end specific options useful for debugging are: ++ ++ '-fa68-dump-ast' ++ Emits a textual representation of the parse tree as produced by the parser. ++ ++ '-fa68-dump-modes' ++ Emits a list of all parsed modes. ++ ++See the Developer Options section in the GNU Algol Compiler manual for ++more hacking related options. ++ ++Testing ++======= ++ ++Invoke the full testsuite from the build directory: ++ ++ $ make check-algol68 ++ ++You can pass -jN to run tests in parallel: ++ ++ $ make -jN check-algol68 ++ ++Invoke a subset of the testsuite. For example, to only run tests that ++involve compilation but not running: ++ ++ $ make check-algol68 RUNTESTFLAGS="compile.exp" ++ ++There are the following sets of tests: ++ ++ compile.exp - compilation tests ++ ++Invoke only a specific test: ++ ++ $ make check-algol68 RUNTESTFLAGS="--all compile.exp=bad-coercion-1.a68" ++ ++Test in both 32-bit and 64-bit in multilib arches: ++ ++ $ make check-algol68 RUNTESTFLAGS="--target_board=unix\{-m64,-m32\}" ++ ++Test that integration with the GCC GC is correct: ++ ++ $ make check-algol68 RUNTESTFLAGS="CFLAGS_FOR_TARGET='--param=ggc-min-expand=0 --param=ggc-min-heapsize=0'" ++ ++Logs (with corresponding commands) can be found in ++BUILD/gcc/testsuite/algol68/algol68.log. ++ ++See https://gcc.gnu.org/install/test.html for more details. ++ ++Useful Resources ++================ ++ ++- An Emacs mode for editing Algol 68 programs can be found at ++ https://git.sr.ht/~jemarch/a68-mode. It supports automatic ++ indentation, pretty-printing of bold tags, an auto-stropping minor ++ mode and other features. ++ ++- The Algol 68 Jargon File at https://jemarch.net/a68-jargon provides ++ a comprehensive list of definitions of many of the technical and ++ non-technical terms used in the context of Algol 68. ++ ++- The very formal Revised Report on the Algorithmic Language ALGOL 68 ++ can be found at [1]. ++ ++- The truly delightful Informal Introduction to ALGOL 68 by C.H ++ Lindsey and van der Meulen can be found at [2]. ++ ++Community ++========= ++ ++mailing list: algol68@gcc.gnu.org ++irc: irc.oftc.net - #gnualgol ++ ++[1] https://www.softwarepreservation.org/projects/ALGOL/report/Algol68_revised_report-AB-600dpi.pdf ++[2] https://inria.hal.science/hal-03027689/file/Lindsey_van_der_Meulen-IItA68-Revised.pdf +--- /dev/null ++++ b/src/gcc/algol68/a68-diagnostics.cc +@@ -0,0 +1,381 @@ ++/* Error and warning routines. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted and expanded for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "diagnostic.h" ++ ++#include "a68.h" ++ ++/* ++ * Error handling routines. ++ */ ++ ++#define TABULATE(n) (8 * (n / 8 + 1) - n) ++ ++/* Severities handled by the DIAGNOSTIC function defined below. */ ++ ++#define A68_ERROR 0 ++#define A68_WARNING 1 ++#define A68_FATAL 2 ++#define A68_SCAN_ERROR 3 ++#define A68_INFORM 4 ++ ++/* Give a diagnostic message. */ ++ ++#if __GNUC__ >= 10 ++#pragma GCC diagnostic ignored "-Wsuggest-attribute=format" ++#endif ++ ++static bool ++diagnostic (int sev, int opt, ++ NODE_T *p, ++ LINE_T *line, ++ char *pos, ++ const char *loc_str, va_list args) ++{ ++ int res = 0; ++ MOID_T *moid = NO_MOID; ++ const char *t = loc_str; ++ obstack b; ++ ++ /* ++ * Synthesize diagnostic message. ++ * ++ * Legend for special symbols: ++ * * as first character, copy rest of string literally ++ * @ AST node ++ * A AST node attribute ++ * B keyword ++ * C context ++ * L line number ++ * M moid - if error mode return without giving a message ++ * O moid - operand ++ * S quoted symbol, when possible with typographical display features ++ * X expected attribute ++ * Y string literal. ++ * Z quoted string. */ ++ ++ static va_list argp; /* Note this is empty. */ ++ gcc_obstack_init (&b); ++ ++ if (t[0] == '*') ++ obstack_grow (&b, t + 1, strlen (t + 1)); ++ else ++ while (t[0] != '\0') ++ { ++ if (t[0] == '@') ++ { ++ const char *nt = a68_attribute_name (ATTRIBUTE (p)); ++ if (t != NO_TEXT) ++ obstack_grow (&b, nt, strlen (nt)); ++ else ++ obstack_grow (&b, "construct", strlen ("construct")); ++ } ++ else if (t[0] == 'A') ++ { ++ enum a68_attribute att = (enum a68_attribute) va_arg (args, int); ++ const char *nt = a68_attribute_name (att); ++ if (nt != NO_TEXT) ++ obstack_grow (&b, nt, strlen (nt)); ++ else ++ obstack_grow (&b, "construct", strlen ("construct")); ++ } ++ else if (t[0] == 'B') ++ { ++ enum a68_attribute att = (enum a68_attribute) va_arg (args, int); ++ KEYWORD_T *nt = a68_find_keyword_from_attribute (A68 (top_keyword), att); ++ if (nt != NO_KEYWORD) ++ { ++ const char *strop_keyword = a68_strop_keyword (TEXT (nt)); ++ ++ obstack_grow (&b, "%<", 2); ++ obstack_grow (&b, strop_keyword, strlen (strop_keyword)); ++ obstack_grow (&b, "%>", 2); ++ } ++ else ++ obstack_grow (&b, "keyword", strlen ("keyword")); ++ } ++ else if (t[0] == 'C') ++ { ++ int att = va_arg (args, int); ++ const char *sort = NULL; ++ ++ switch (att) ++ { ++ case NO_SORT: sort = "this"; break; ++ case SOFT: sort = "a soft"; break; ++ case WEAK: sort = "a weak"; break; ++ case MEEK: sort = "a meek"; break; ++ case FIRM: sort = "a meek"; break; ++ case STRONG: sort = "a strong"; break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ obstack_grow (&b, sort, strlen (sort)); ++ } ++ else if (t[0] == 'L') ++ { ++ LINE_T *a = va_arg (args, LINE_T *); ++ gcc_assert (a != NO_LINE); ++ if (NUMBER (a) == 0) ++ obstack_grow (&b, "in standard environment", ++ strlen ("in standard environment")); ++ else if (p != NO_NODE && NUMBER (a) == LINE_NUMBER (p)) ++ obstack_grow (&b, "in this line", strlen ("in this line")); ++ else ++ { ++ char d[10]; ++ if (snprintf (d, 10, "in line %d", NUMBER (a)) < 0) ++ gcc_unreachable (); ++ obstack_grow (&b, d, strlen (d)); ++ } ++ } ++ else if (t[0] == 'M') ++ { ++ const char *moidstr = NULL; ++ ++ moid = va_arg (args, MOID_T *); ++ if (moid == NO_MOID || moid == M_ERROR) ++ moid = M_UNDEFINED; ++ ++ if (IS (moid, SERIES_MODE)) ++ { ++ if (PACK (moid) != NO_PACK && NEXT (PACK (moid)) == NO_PACK) ++ moidstr = a68_moid_to_string (MOID (PACK (moid)), ++ MOID_ERROR_WIDTH, p); ++ else ++ moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); ++ } ++ else ++ moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); ++ ++ obstack_grow (&b, "%<", 2); ++ obstack_grow (&b, moidstr, strlen (moidstr)); ++ obstack_grow (&b, "%>", 2); ++ } ++ else if (t[0] == 'O') ++ { ++ moid = va_arg (args, MOID_T *); ++ if (moid == NO_MOID || moid == M_ERROR) ++ moid = M_UNDEFINED; ++ if (moid == M_VOID) ++ obstack_grow (&b, "UNION (VOID, ..)", strlen ("UNION (VOID, ..)")); ++ else if (IS (moid, SERIES_MODE)) ++ { ++ const char *moidstr = NULL; ++ ++ if (PACK (moid) != NO_PACK && NEXT (PACK (moid)) == NO_PACK) ++ moidstr = a68_moid_to_string (MOID (PACK (moid)), MOID_ERROR_WIDTH, p); ++ else ++ moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); ++ obstack_grow (&b, moidstr, strlen (moidstr)); ++ } ++ else ++ { ++ const char *moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); ++ obstack_grow (&b, moidstr, strlen (moidstr)); ++ } ++ } ++ else if (t[0] == 'S') ++ { ++ if (p != NO_NODE && NSYMBOL (p) != NO_TEXT) ++ { ++ const char *txt = NSYMBOL (p); ++ char *sym = NCHAR_IN_LINE (p); ++ int n = 0, size = (int) strlen (txt); ++ ++ obstack_grow (&b, "%<", 2); ++ if (txt[0] != sym[0] || (int) strlen (sym) < size) ++ obstack_grow (&b, txt, strlen (txt)); ++ else ++ { ++ while (n < size) ++ { ++ if (ISPRINT (sym[0])) ++ obstack_1grow (&b, sym[0]); ++ if (TOLOWER (txt[0]) == TOLOWER (sym[0])) ++ { ++ txt++; ++ n++; ++ } ++ sym++; ++ } ++ } ++ obstack_grow (&b, "%>", 2); ++ } ++ else ++ obstack_grow (&b, "symbol", strlen ("symbol")); ++ } ++ else if (t[0] == 'X') ++ { ++ enum a68_attribute att = (enum a68_attribute) (va_arg (args, int)); ++ const char *att_name = a68_attribute_name (att); ++ obstack_grow (&b, att_name, strlen (att_name)); ++ } ++ else if (t[0] == 'Y') ++ { ++ char *loc_string = va_arg (args, char *); ++ obstack_grow (&b, loc_string, strlen (loc_string)); ++ } ++ else if (t[0] == 'Z') ++ { ++ char *str = va_arg (args, char *); ++ obstack_grow (&b, "%<", 2); ++ obstack_grow (&b, str, strlen (str)); ++ obstack_grow (&b, "%>", 2); ++ } ++ else ++ obstack_1grow (&b, t[0]); ++ ++ t++; ++ } ++ ++ obstack_1grow (&b, '\0'); ++ char *format = (char *) obstack_finish (&b); ++ ++ /* Construct a diagnostic message. */ ++ if (sev == A68_WARNING) ++ WARNING_COUNT (&A68_JOB)++; ++ else if (sev != A68_INFORM) ++ ERROR_COUNT (&A68_JOB)++; ++ ++ /* Emit the corresponding GCC diagnostic at the proper location. */ ++ location_t loc = UNKNOWN_LOCATION; ++ ++ if (p != NO_NODE) ++ loc = a68_get_node_location (p); ++ else if (line != NO_LINE) ++ { ++ if (pos == NO_TEXT) ++ pos = STRING (line); ++ loc = a68_get_line_location (line, pos); ++ } ++ ++ /* Prepare rich location and diagnostics. */ ++ rich_location rich_loc (line_table, loc); ++ diagnostic_info diagnostic; ++ diagnostic_t kind; ++ ++ switch (sev) ++ { ++ case A68_FATAL: ++ kind = DK_FATAL; ++ break; ++ case A68_INFORM: ++ kind = DK_NOTE; ++ break; ++ case A68_WARNING: ++ kind = DK_WARNING; ++ break; ++ case A68_SCAN_ERROR: ++ case A68_ERROR: ++ kind = DK_ERROR; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ diagnostic_set_info (&diagnostic, format, ++ &argp, ++ &rich_loc, kind); ++ if (opt != 0) ++ diagnostic.option_id = opt; ++ res = diagnostic_report_diagnostic (global_dc, &diagnostic); ++ ++ if (sev == A68_SCAN_ERROR) ++ exit (FATAL_EXIT_CODE); ++ return res; ++} ++ ++/* Give an intelligible error and exit. A line is provided rather than a ++ node so this can be used at scanning time. */ ++ ++void ++a68_scan_error (LINE_T * u, char *v, const char *txt, ...) ++{ ++ va_list args; ++ ++ va_start (args, txt); ++ diagnostic (A68_SCAN_ERROR, 0, NO_NODE, u, v, txt, args); ++ va_end (args); ++} ++ ++/* Report a compilation error. */ ++ ++void ++a68_error (NODE_T *p, const char *loc_str, ...) ++{ ++ va_list args; ++ ++ va_start (args, loc_str); ++ diagnostic (A68_ERROR, 0, p, NO_LINE, NO_TEXT, loc_str, args); ++ va_end (args); ++} ++ ++/* Report a compilation error in a node's pragmat. */ ++ ++void ++a68_error_in_pragmat (NODE_T *p, size_t off, ++ const char *loc_str, ...) ++{ ++ va_list args; ++ ++ LINE_T *line = NPRAGMAT_LINE (p); ++ char *pos = NPRAGMAT_CHAR_IN_LINE (p) + off; ++ ++ va_start (args, loc_str); ++ diagnostic (A68_ERROR, 0, NO_NODE, line, pos, loc_str, args); ++ va_end (args); ++ a68_inform (p, "pragmat applies to this construct"); ++} ++ ++/* Report a compilation warning. ++ This function returns a boolean indicating whether a warning was ++ emitted. */ ++ ++bool ++a68_warning (NODE_T *p, int opt, ++ const char *loc_str, ...) ++{ ++ bool res; ++ va_list args; ++ ++ va_start (args, loc_str); ++ res = diagnostic (A68_WARNING, opt, p, NO_LINE, NO_TEXT, loc_str, args); ++ va_end (args); ++ return res; ++} ++ ++/* Report a compilation note. */ ++ ++void ++a68_inform (NODE_T *p, const char *loc_str, ...) ++{ ++ va_list args; ++ ++ va_start (args, loc_str); ++ diagnostic (A68_INFORM, 0, p, NO_LINE, NO_TEXT, loc_str, args); ++ va_end (args); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-exports.cc +@@ -0,0 +1,598 @@ ++/* Exporting Algol 68 module interfaces. ++ Copyright (C) 2025 Jose E. Marchesi. ++ Copyright (C) 2010-2025 Free Software Foundation, Inc. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tree.h" ++#include "target.h" ++#include "tm_p.h" ++#include "simple-object.h" ++#include "varasm.h" ++#include "intl.h" ++#include "output.h" /* for assemble_string */ ++#include "common/common-target.h" ++#include "dwarf2asm.h" ++ ++#include ++ ++#include "a68.h" ++ ++#ifndef TARGET_AIX_OS ++#define TARGET_AIX_OS 0 ++#endif ++ ++/* The size of the target's pointer type. */ ++#ifndef PTR_SIZE ++#define PTR_SIZE (POINTER_SIZE / BITS_PER_UNIT) ++#endif ++ ++/* Create a new module interface, initially with no modes and no ++ extracts. MODULE_NAME is the name of the module as it is accessed at the ++ source level, which corresponds to a bold word. */ ++ ++MOIF_T * ++a68_moif_new (const char *module_name) ++{ ++ MOIF_T *moif = ggc_cleared_alloc (); ++ ++ VERSION (moif) = GA68_EXPORTS_VERSION; ++ NAME (moif) = (module_name == NULL ? NULL : ggc_strdup (module_name)); ++ PRELUDE (moif) = NULL; ++ POSTLUDE (moif) = NULL; ++ vec_alloc (MODES (moif), 16); ++ vec_alloc (MODULES (moif), 16); ++ vec_alloc (IDENTIFIERS (moif), 16); ++ vec_alloc (INDICANTS (moif), 16); ++ vec_alloc (PRIOS (moif), 16); ++ vec_alloc (OPERATORS (moif), 16); ++ return moif; ++} ++ ++/* Add a new mode to a module interface. */ ++ ++static void ++a68_add_moid_to_moif (MOIF_T *moif, MOID_T *m) ++{ ++ if (! MODES(moif)->contains (m)) ++ vec_safe_push (MODES (moif), m); ++} ++ ++/* Add a new identifier extract to a module interface. */ ++ ++void ++a68_add_identifier_to_moif (MOIF_T *moif, TAG_T *tag) ++{ ++ EXTRACT_T *e = ggc_alloc (); ++ const char *tag_symbol = IDENTIFIER_POINTER (DECL_NAME (TAX_TREE_DECL (tag))); ++ ++ EXTRACT_KIND (e) = GA68_EXTRACT_IDEN; ++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); ++ EXTRACT_MODE (e) = MOID (tag); ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = VARIABLE (tag); ++ EXTRACT_IN_PROC (e) = IN_PROC (tag); ++ ++ if (! IDENTIFIERS (moif)->contains (e)) ++ { ++ a68_add_moid_to_moif (moif, MOID (tag)); ++ vec_safe_push (IDENTIFIERS (moif), e); ++ } ++} ++ ++/* Add a new mode indicant extract to a module interface. */ ++ ++static void ++a68_add_indicant_to_moif (MOIF_T *moif, TAG_T *tag) ++{ ++ EXTRACT_T *e = ggc_alloc (); ++ /* Mode tags are not associated with declarations, so we have to do the ++ mangling here. */ ++ tree id = a68_get_mangled_indicant (NSYMBOL (NODE (tag)), NAME (moif)); ++ const char *tag_symbol = IDENTIFIER_POINTER (id); ++ ++ EXTRACT_KIND (e) = GA68_EXTRACT_MODE; ++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); ++ EXTRACT_MODE (e) = MOID (tag); ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ ++ if (! INDICANTS (moif)->contains (e)) ++ { ++ a68_add_moid_to_moif (moif, MOID (tag)); ++ vec_safe_push (INDICANTS (moif), e); ++ } ++} ++ ++/* Add a new module extract to a module interface. */ ++ ++static void ++a68_add_module_to_moif (MOIF_T *moif, TAG_T *tag) ++{ ++ EXTRACT_T *e = ggc_alloc (); ++ /* Module tags are not associated with declarations, so we have to do the ++ mangling here. */ ++ tree id = a68_get_mangled_indicant (NSYMBOL (NODE (tag)), NAME (moif)); ++ const char *tag_symbol = IDENTIFIER_POINTER (id); ++ ++ EXTRACT_KIND (e) = GA68_EXTRACT_MODU; ++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); ++ EXTRACT_MODE (e) = NO_MOID; ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ ++ if (! MODULES (moif)->contains (e)) ++ vec_safe_push (MODULES (moif), e); ++} ++ ++/* Add a new priority extract to a module interface. */ ++ ++static void ++a68_add_prio_to_moif (MOIF_T *moif, TAG_T *tag) ++{ ++ EXTRACT_T *e = ggc_alloc (); ++ /* Priority tags are not associated with declarations, so we have to do the ++ mangling here. */ ++ tree id = a68_get_mangled_indicant (NSYMBOL (NODE (tag)), NAME (moif)); ++ const char *tag_symbol = IDENTIFIER_POINTER (id); ++ ++ EXTRACT_KIND (e) = GA68_EXTRACT_PRIO; ++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); ++ EXTRACT_MODE (e) = NO_MOID; ++ EXTRACT_PRIO (e) = PRIO (tag); ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ ++ if (! PRIOS (moif)->contains (e)) ++ vec_safe_push (PRIOS (moif), e); ++} ++ ++/* Add a new operator extract to a module interface. */ ++ ++static void ++a68_add_operator_to_moif (MOIF_T *moif, TAG_T *tag) ++{ ++ EXTRACT_T *e = ggc_alloc (); ++ const char *tag_symbol = IDENTIFIER_POINTER (DECL_NAME (TAX_TREE_DECL (tag))); ++ ++ EXTRACT_KIND (e) = GA68_EXTRACT_OPER; ++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); ++ EXTRACT_MODE (e) = MOID (tag); ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = EXTRACT_VARIABLE (tag); ++ /* There are no operatorvariable-declarations */ ++ gcc_assert (EXTRACT_VARIABLE (e) == false); ++ EXTRACT_IN_PROC (e) = IN_PROC (tag); ++ ++ if (! OPERATORS (moif)->contains (e)) ++ { ++ a68_add_moid_to_moif (moif, MOID (tag)); ++ vec_safe_push (OPERATORS (moif), e); ++ } ++} ++ ++/* Make the exports section the asm_out_file's new current section. */ ++ ++static void ++a68_switch_to_export_section (void) ++{ ++ static section *exports_sec; ++ ++ if (exports_sec == NULL) ++ { ++ gcc_assert (targetm_common.have_named_sections); ++#ifdef OBJECT_FORMAT_MACHO ++ exports_sec ++ = get_section (A68_EXPORT_SEGMENT_NAME "," A68_EXPORT_SECTION_NAME, ++ SECTION_DEBUG, NULL); ++#else ++ exports_sec = get_section (A68_EXPORT_SECTION_NAME, ++ TARGET_AIX_OS ? SECTION_EXCLUDE : SECTION_DEBUG, ++ NULL); ++#endif ++ } ++ ++ switch_to_section (exports_sec); ++} ++ ++/* Output a sized string. */ ++ ++static void ++a68_asm_output_string (const char *s, const char *comment) ++{ ++ dw2_asm_output_data (2, strlen (s) + 1, comment); ++ assemble_string (s, strlen (s) + 1); ++} ++ ++/* Output a mode to the exports section if it hasn't been emitted already. */ ++ ++static void ++a68_asm_output_mode (MOID_T *m, const char *module_label) ++{ ++ /* Do nothing if the mode has been already emitted and therefore there is ++ already a label to access it. */ ++ if (ASM_LABEL (m) != NULL) ++ return; ++ ++ /* Mode indicants are not emitted in the mode table, but as mode extracts in ++ the extracts table. Still we have to emit the named mode. */ ++ if (IS (m, INDICANT)) ++ m = MOID (NODE (m)); ++ ++ /* Collection of modes. */ ++ if (IS (m, SERIES_MODE) || IS (m, STOWED_MODE)) ++ { ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ a68_asm_output_mode (MOID (p), module_label); ++ return; ++ } ++ ++ /* Ok we got a mode to output. */ ++ ++ /* First emit referred modes and sub-modes. Note how we have to create a ++ label for the mode and install it in the NODE_T in order to avoid infinite ++ recursion in case of ref-induced recursive mode definitions. */ ++ ++ static long int cnt; ++ static char label[100]; ++ ASM_GENERATE_INTERNAL_LABEL (label, "LM", cnt++); ++ ASM_LABEL (m) = ggc_strdup (label); ++ ++ if (IS_REF(m) || IS_FLEX (m)) ++ a68_asm_output_mode (SUB (m), module_label); ++ else if (m != M_STRING && IS_FLEXETY_ROW (m)) ++ a68_asm_output_mode (SUB (m), module_label); ++ else if (!IS_COMPLEX (m) && (IS_STRUCT (m) || IS_UNION (m))) ++ { ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ a68_asm_output_mode (MOID (p), module_label); ++ } ++ else if (IS (m, PROC_SYMBOL)) ++ { ++ a68_asm_output_mode (SUB (m), module_label); ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ a68_asm_output_mode (MOID (p), module_label); ++ } ++ ++ /* No recursion below this point pls. */ ++ ++ /* Emit a label for this mode. */ ++ ASM_OUTPUT_LABEL (asm_out_file, ASM_LABEL (m)); ++ ++ /* Now emit assembly for the mode entry. */ ++ if (m == M_VOID) ++ dw2_asm_output_data (1, GA68_MODE_VOID, "void"); ++ else if (m == M_CHAR) ++ dw2_asm_output_data (1, GA68_MODE_CHAR, "char"); ++ else if (m == M_BOOL) ++ dw2_asm_output_data (1, GA68_MODE_BOOL, "bool"); ++ else if (m == M_STRING) ++ dw2_asm_output_data (1, GA68_MODE_STRING, "string"); ++ else if (IS_INTEGRAL (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_INT, "int"); ++ dw2_asm_output_data (1, DIM (m), "sizety"); ++ } ++ else if (IS_REAL (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_REAL, "real"); ++ dw2_asm_output_data (1, DIM (m), "sizety"); ++ } ++ else if (IS_BITS (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_BITS, "bits"); ++ dw2_asm_output_data (1, DIM (m), "sizety"); ++ } ++ else if (IS_BYTES (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_BYTES, "bytes"); ++ dw2_asm_output_data (1, DIM (m), "sizety"); ++ } ++ else if (IS_COMPLEX (m)) ++ { ++ /* Complex is a struct of two reals of the right sizety. */ ++ int dim = DIM (MOID (PACK (m))); ++ dw2_asm_output_data (1, GA68_MODE_CMPL, "compl"); ++ dw2_asm_output_data (1, dim, "sizety"); ++ } ++ else if (IS_REF (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_NAME, "ref"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "referred mode"); ++ } ++ else if (IS_FLEX (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_FLEX, "flex"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "flexible row mode"); ++ } ++ else if (IS_ROW (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_ROW, "row"); ++ dw2_asm_output_data (1, DIM (m), "dim"); ++ /* XXX for now emit zeroes as triplets. */ ++ for (int i = 0; i < DIM (m); ++i) ++ { ++ dw2_asm_output_data (PTR_SIZE, 0, "lb"); ++ dw2_asm_output_data (PTR_SIZE, 0, "ub"); ++ } ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "row of"); ++ } ++ else if (IS_STRUCT (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_STRUCT, "struct"); ++ dw2_asm_output_data (2, DIM (m), "nfields"); ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ { ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (MOID (p)), module_label, "field mode"); ++ if (TEXT (p) != NO_TEXT) ++ a68_asm_output_string (TEXT (p), "field name"); ++ else ++ a68_asm_output_string ("", "field name"); ++ } ++ } ++ else if (IS_UNION (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_UNION, "union"); ++ dw2_asm_output_data (2, DIM (m), "nmodes"); ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (MOID (p)), module_label, "united mode"); ++ } ++ else if (IS (m, PROC_SYMBOL)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_PROC, "proc"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "ret mode"); ++ dw2_asm_output_data (1, DIM (m), "nargs"); ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ { ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (MOID (p)), module_label, "arg mode"); ++ if (TEXT (p) != NO_TEXT) ++ a68_asm_output_string (TEXT (p), "arg name"); ++ else ++ a68_asm_output_string ("", "arg name"); ++ } ++ } ++ else ++ dw2_asm_output_data (1, GA68_MODE_UNKNOWN, "unknown mode %s", ++ a68_moid_to_string (m, 80, NO_NODE, false)); ++} ++ ++/* Output an extract for a given tag to the extracts section. */ ++ ++static void ++a68_asm_output_extract (const char *module_label, int kind, ++ const char *symbol, MOID_T *mode, int prio, ++ bool variable, bool in_proc) ++{ ++ static char begin_label[100]; ++ static char end_label[100]; ++ static long int cnt; ++ ++ ASM_GENERATE_INTERNAL_LABEL (begin_label, "LEBL", cnt); ++ ASM_GENERATE_INTERNAL_LABEL (end_label, "LEEL", cnt); ++ cnt++; ++ ++ dw2_asm_output_delta (PTR_SIZE, end_label, begin_label, "extract size"); ++ ASM_OUTPUT_LABEL (asm_out_file, begin_label); ++ ++ bool encode_mdextra = false; ++ switch (kind) ++ { ++ case GA68_EXTRACT_MODU: ++ dw2_asm_output_data (1, GA68_EXTRACT_MODU, "module extract %s", symbol); ++ a68_asm_output_string (symbol, "module indication"); ++ break; ++ case GA68_EXTRACT_MODE: ++ dw2_asm_output_data (1, GA68_EXTRACT_MODE, "mode extract %s", symbol); ++ a68_asm_output_string (symbol, "mode indication"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (mode), module_label, "mode"); ++ break; ++ case GA68_EXTRACT_IDEN: ++ dw2_asm_output_data (1, GA68_EXTRACT_IDEN, "identifier extract %s", symbol); ++ a68_asm_output_string (symbol, "name"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (mode), module_label, "mode"); ++ encode_mdextra = true; ++ break; ++ case GA68_EXTRACT_PRIO: ++ dw2_asm_output_data (1, GA68_EXTRACT_PRIO, "prio extract %s", symbol); ++ a68_asm_output_string (symbol, "opname"); ++ dw2_asm_output_data (1, prio, "priority"); ++ break; ++ case GA68_EXTRACT_OPER: ++ dw2_asm_output_data (1, GA68_EXTRACT_OPER, "operator extract %s", symbol); ++ a68_asm_output_string (symbol, "opname"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (mode), module_label, "mode"); ++ encode_mdextra = true; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ if (encode_mdextra) ++ { ++ dw2_asm_output_data (PTR_SIZE, 2, "mdextra size"); ++ dw2_asm_output_data (1, variable, "variable"); ++ dw2_asm_output_data (1, in_proc, "in_proc"); ++ } ++ else ++ dw2_asm_output_data (PTR_SIZE, 0, "mdextra size"); ++ ++ ASM_OUTPUT_LABEL (asm_out_file, end_label); ++} ++ ++/* Output a module interface. */ ++ ++static void ++a68_asm_output_moif (MOIF_T *moif) ++{ ++ a68_switch_to_export_section (); ++ ++ static char module_label[100]; ++ static long int moifcnt; ++ ASM_GENERATE_INTERNAL_LABEL (module_label, "LMOIF", moifcnt++); ++ ASM_OUTPUT_LABEL (asm_out_file, module_label); ++ ++ if (flag_debug_asm) ++ { ++ fputs (ASM_COMMENT_START " MODIF START ", asm_out_file); ++ fputs (NAME (moif), asm_out_file); ++ fputc ('\n', asm_out_file); ++ } ++ ++ dw2_asm_output_data (1, A68_EXPORT_MAGIC1, "magic1"); ++ dw2_asm_output_data (1, A68_EXPORT_MAGIC2, "magic2"); ++ dw2_asm_output_data (2, VERSION (moif), "exports version"); ++ a68_asm_output_string (NAME (moif), "module name"); ++ a68_asm_output_string (PRELUDE (moif) ? PRELUDE (moif) : "", "prelude symbol"); ++ a68_asm_output_string (POSTLUDE (moif) ? POSTLUDE (moif) : "", "postlude symbol"); ++ ++ /* Modes table. */ ++ static char modes_begin_label[100]; ++ static char modes_end_label[100]; ++ static long int modescnt; ++ ASM_GENERATE_INTERNAL_LABEL (modes_begin_label, "LMTL", modescnt++); ++ ASM_GENERATE_INTERNAL_LABEL (modes_end_label, "LMTL", modescnt++); ++ ++ if (flag_debug_asm) ++ fputs ("\t" ASM_COMMENT_START " modes table\n", asm_out_file); ++ dw2_asm_output_delta (PTR_SIZE, modes_end_label, modes_begin_label, ++ "modes size"); ++ ASM_OUTPUT_LABEL (asm_out_file, modes_begin_label); ++ for (MOID_T *m : MODES (moif)) ++ a68_asm_output_mode (m, module_label); ++ ASM_OUTPUT_LABEL (asm_out_file, modes_end_label); ++ ++ /* Extracts table. */ ++ static char extracts_begin_label[100]; ++ static char extracts_end_label[100]; ++ static long int extractscnt; ++ ASM_GENERATE_INTERNAL_LABEL (extracts_begin_label, "LETL", extractscnt++); ++ ASM_GENERATE_INTERNAL_LABEL (extracts_end_label, "LETL", extractscnt++); ++ ++ if (flag_debug_asm) ++ fputs ("\t" ASM_COMMENT_START " extracts table\n", asm_out_file); ++ dw2_asm_output_delta (PTR_SIZE, extracts_end_label, extracts_begin_label, ++ "extracts size"); ++ ASM_OUTPUT_LABEL (asm_out_file, extracts_begin_label); ++ for (EXTRACT_T *e : MODULES (moif)) ++ a68_asm_output_extract (module_label, GA68_EXTRACT_MODU, ++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), ++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); ++ for (EXTRACT_T *e : INDICANTS (moif)) ++ a68_asm_output_extract (module_label, GA68_EXTRACT_MODE, ++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), ++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); ++ for (EXTRACT_T *e : IDENTIFIERS (moif)) ++ a68_asm_output_extract (module_label, GA68_EXTRACT_IDEN, ++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), ++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); ++ for (EXTRACT_T *e : PRIOS (moif)) ++ a68_asm_output_extract (module_label, GA68_EXTRACT_PRIO, ++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), ++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); ++ for (EXTRACT_T *e : OPERATORS (moif)) ++ a68_asm_output_extract (module_label, GA68_EXTRACT_OPER, ++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), ++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); ++ ASM_OUTPUT_LABEL (asm_out_file, extracts_end_label); ++ ++ if (flag_debug_asm) ++ { ++ fputs (ASM_COMMENT_START " MODIF END ", asm_out_file); ++ fputs (NAME (moif), asm_out_file); ++ fputc ('\n', asm_out_file); ++ } ++} ++ ++/* Emit export information for the module definition in the parse tree P. */ ++ ++void ++a68_do_exports (NODE_T *p) ++{ ++ for (;p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEFINING_MODULE_INDICANT)) ++ { ++ // XXX only do this if the defining module is to be ++ // exported. Accessed modules without PUB are not exported. */ ++ TAG_T *tag = a68_find_tag_global (TABLE (p), MODULE_SYMBOL, NSYMBOL (p)); ++ gcc_assert (tag != NO_TAG); ++ ++ if (EXPORTED (tag)) ++ { ++ tree module_id = a68_get_mangled_indicant (NSYMBOL (p)); ++ MOIF_T *moif = a68_moif_new (IDENTIFIER_POINTER (module_id)); ++ char *prelude = xasprintf ("%s__prelude", IDENTIFIER_POINTER (module_id)); ++ char *postlude = xasprintf ("%s__postlude", IDENTIFIER_POINTER (module_id)); ++ PRELUDE (moif) = ggc_strdup (prelude); ++ POSTLUDE (moif) = ggc_strdup (postlude); ++ free (prelude); ++ free (postlude); ++ ++ NODE_T *module_text = NEXT (NEXT (p)); ++ gcc_assert (IS (module_text, MODULE_TEXT)); ++ NODE_T *def_part = (IS (SUB (module_text), REVELATION_PART) ++ ? NEXT_SUB (module_text) ++ : SUB (module_text)); ++ gcc_assert (IS (def_part, DEF_PART)); ++ TABLE_T *table = TABLE (SUB (def_part)); ++ gcc_assert (PUBLIC_RANGE (table)); ++ ++ for (TAG_T *t = MODULES (table); t != NO_TAG; FORWARD (t)) ++ { ++ if (PUBLICIZED (t)) ++ a68_add_module_to_moif (moif, t); ++ } ++ ++ for (TAG_T *t = INDICANTS (table); t != NO_TAG; FORWARD (t)) ++ { ++ if (PUBLICIZED (t)) ++ a68_add_indicant_to_moif (moif, t); ++ } ++ ++ for (TAG_T *t = IDENTIFIERS (table); t != NO_TAG; FORWARD (t)) ++ { ++ if (PUBLICIZED (t)) ++ a68_add_identifier_to_moif (moif, t); ++ } ++ ++ for (TAG_T *t = PRIO (table); t != NO_TAG; FORWARD (t)) ++ { ++ if (PUBLICIZED (t)) ++ a68_add_prio_to_moif (moif, t); ++ } ++ ++ for (TAG_T *t = OPERATORS (table); t != NO_TAG; FORWARD (t)) ++ { ++ if (PUBLICIZED (t)) ++ a68_add_operator_to_moif (moif, t); ++ } ++ ++ a68_asm_output_moif (moif); ++ if (flag_a68_dump_moif) ++ a68_dump_moif (moif); ++ } ++ } ++ else ++ a68_do_exports (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-imports.cc +@@ -0,0 +1,1263 @@ ++/* Importing Algol 68 module interfaces. ++ Copyright (C) 2025 Jose E. Marchesi. ++ Copyright (C) 2010-2025 Free Software Foundation, Inc. ++ ++ Written by Jose E. Marchesi. ++ ++ The following utility functions have been adapted from the Go front-end: ++ ++ a68_open_packet ++ a68_try_packet_in_directory ++ a68_try_suffixes ++ a68_find_export_data ++ a68_find_object_export_data ++ a68_read_export_data ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tree.h" ++#include "target.h" ++#include "tm_p.h" ++#include "simple-object.h" ++#include "varasm.h" ++#include "intl.h" ++#include "common/common-target.h" ++#include "dwarf2asm.h" ++ ++#include ++ ++#include "a68.h" ++ ++/* Read exports from an object file. ++ ++ FD is a file descriptor open for reading. ++ ++ OFFSET is the offset within the file where the object file starts; this will ++ be 0 except when reading an archive. ++ ++ On success this returns NULL and sets *PBUF to a buffer allocated using ++ malloc, of size *PLEN, holding the export data. ++ ++ If the data is not found this returns NULL and sets *PBUF to NULL and *PLEN ++ to 0. ++ ++ If some error occurs, this returns an error message and sets *PERR to an ++ errno value or 0 if there is no relevant errno. */ ++ ++static const char * ++a68_read_export_data (int fd, uint64_t offset, char **pbuf, size_t *plen, ++ int *perr) ++{ ++ simple_object_read *sobj; ++ const char *errmsg; ++ off_t sec_offset; ++ off_t sec_length; ++ int found; ++ char *buf; ++ ssize_t c; ++ ++ *pbuf = NULL; ++ *plen = 0; ++ ++ sobj = simple_object_start_read (fd, offset, A68_EXPORT_SEGMENT_NAME, ++ &errmsg, perr); ++ if (sobj == NULL) ++ { ++ /* If we get an error here, just pretend that we didn't find any ++ export data. This is the right thing to do if the error is ++ that the file was not recognized as an object file. This ++ will ignore file I/O errors, but it's not too big a deal ++ because we will wind up giving some other error later. */ ++ return NULL; ++ } ++ ++ found = simple_object_find_section (sobj, A68_EXPORT_SECTION_NAME, ++ &sec_offset, &sec_length, ++ &errmsg, perr); ++ simple_object_release_read (sobj); ++ if (!found) ++ return errmsg; ++ ++ if (lseek (fd, offset + sec_offset, SEEK_SET) < 0) ++ { ++ *perr = errno; ++ return _("lseek failed while reading export data"); ++ } ++ ++ buf = XNEWVEC (char, sec_length); ++ if (buf == NULL) ++ { ++ *perr = errno; ++ return _("memory allocation failed while reading export data"); ++ } ++ ++ c = read (fd, buf, sec_length); ++ if (c < 0) ++ { ++ *perr = errno; ++ free (buf); ++ return _("read failed while reading export data"); ++ } ++ ++ if (c < sec_length) ++ { ++ free (buf); ++ return _("short read while reading export data"); ++ } ++ ++ *pbuf = buf; ++ *plen = sec_length; ++ return NULL; ++} ++ ++/* Look for export data in an object file. */ ++ ++static char * ++a68_find_object_export_data (const std::string& filename, ++ int fd, uint64_t offset, size_t *psize) ++{ ++ char *buf; ++ size_t len; ++ int err; ++ ++ const char *errmsg = a68_read_export_data (fd, offset, &buf, &len, &err); ++ if (errmsg != NULL) ++ { ++ if (err == 0) ++ a68_error (NO_NODE, "Z: Z", filename.c_str (), errmsg); ++ else ++ a68_error (NO_NODE, "Z: Z: Z", filename.c_str(), errmsg, ++ xstrerror(err)); ++ return NULL; ++ } ++ ++ *psize = len; ++ return buf; ++} ++ ++/* Look for export data in the file descriptor FD. */ ++ ++static char * ++a68_find_export_data (const std::string &filename, int fd, size_t *psize) ++{ ++ /* See if we can read this as an object file. */ ++ char *exports = a68_find_object_export_data (filename, fd, 0, psize); ++ if (exports != NULL) ++ return exports; ++ ++ if (lseek (fd, 0, SEEK_SET) < 0) ++ { ++ a68_error (NO_NODE, "lseek Z failed", filename.c_str ()); ++ return NULL; ++ } ++ ++ char buf[A68_EXPORT_MAGIC_LEN]; ++ ssize_t c = ::read(fd, buf, A68_EXPORT_MAGIC_LEN); ++ if (c < A68_EXPORT_MAGIC_LEN) ++ return NULL; ++ ++ /* Check for a file containing nothing but Algol 68 export data. */ ++ if (buf[0] == '\x0a' && buf[1] == '\xad') ++ { ++ /* XXX read whole file. */ ++ return exports; ++ } ++ ++#if 0 ++ /* See if we can read this as an archive. */ ++ if (Import::is_archive_magic(buf)) ++ return Import::find_archive_export_data(filename, fd, location); ++#endif ++ ++ return NULL; ++ ++} ++ ++/* Given *PFILENAME, where *PFILENAME does not exist, try various suffixes. If ++ we find one, set *FILENAME to the one we found. Return the open file ++ descriptor. */ ++ ++static int ++a68_try_suffixes (std::string *pfilename) ++{ ++ std::string filename = *pfilename + ".m68"; ++ int fd = open (filename.c_str(), O_RDONLY | O_BINARY); ++ if (fd >= 0) ++ { ++ *pfilename = filename; ++ return fd; ++ } ++ ++ const char* basename = lbasename (pfilename->c_str()); ++ size_t basename_pos = basename - pfilename->c_str (); ++ filename = pfilename->substr (0, basename_pos) + "lib" + basename + ".so"; ++ fd = open (filename.c_str (), O_RDONLY | O_BINARY); ++ if (fd >= 0) ++ { ++ *pfilename = filename; ++ return fd; ++ } ++ ++ filename = pfilename->substr (0, basename_pos) + "lib" + basename + ".a"; ++ fd = open (filename.c_str (), O_RDONLY | O_BINARY); ++ if (fd >= 0) ++ { ++ *pfilename = filename; ++ return fd; ++ } ++ ++ filename = *pfilename + ".o"; ++ fd = open (filename.c_str(), O_RDONLY | O_BINARY); ++ if (fd >= 0) ++ { ++ *pfilename = filename; ++ return fd; ++ } ++ ++ return -1; ++} ++ ++/* Try to find the export data for FILENAME. */ ++ ++static char * ++a68_try_packet_in_directory (const std::string &filename, size_t *psize) ++{ ++ std::string found_filename = filename; ++ int fd = open (found_filename.c_str(), O_RDONLY | O_BINARY); ++ ++ if (fd >= 0) ++ { ++ struct stat s; ++ if (fstat (fd, &s) >= 0 && S_ISDIR (s.st_mode)) ++ { ++ close (fd); ++ fd = -1; ++ errno = EISDIR; ++ } ++ } ++ ++ if (fd < 0) ++ { ++ if (errno != ENOENT && errno != EISDIR) ++ a68_warning (NO_NODE, 0, "cannot open file Z for imports", ++ filename.c_str ()); ++ ++ fd = a68_try_suffixes (&found_filename); ++ if (fd < 0) ++ return NULL; ++ } ++ ++ /* The export data may not be in this file. */ ++ char *exports = a68_find_export_data (found_filename, fd, psize); ++ if (exports != NULL) ++ return exports; ++ ++ close (fd); ++ ++ a68_error (NO_NODE, "file Z exists but does not contain any export data", ++ found_filename.c_str ()); ++ ++ return NULL; ++} ++ ++/* Find import data in FILENAME. ++ ++ This searches the file system for FILENAME, reads exports information from ++ it, and returns a pointer to the beginning of an allocated buffer with the ++ exports data, its size in *psize. It is up to the caller of this function ++ to release the buffer when it is no longer necessary. If the file is not ++ found, this function returns NULL. ++ ++ When FILENAME is not an absolute path and does not start with ./ or ../, we ++ use the search path provided by -I and -L options. ++ ++ When FILENAME does start with ./ or ../, we use RELATIVE_IMPORT_PATH as a ++ prefix. ++ ++ When FILENAME does not exist, we try modifying FILENAME to find the file. ++ We use the first of these which exists: ++ ++ - We append ".m68". ++ - We turn the base of FILENAME info libFILENAME.so. ++ - We turn the base of FILENAME into libFILENAME.a. ++ - We append ".o". ++ ++ When using a search path, we apply each of these transformations at each ++ entry on the search path before moving on to the next entry. If the file ++ exists, but does not contain Algol 68 export data, we stop; we do not keep ++ looking for another file with the same name later in the search path. */ ++ ++static char * ++a68_get_packet_exports (const std::string &filename, ++ const std::string &relative_import_path, ++ size_t *psize) ++{ ++ char *exports; ++ ++ bool is_local; ++ if (IS_ABSOLUTE_PATH (filename)) ++ is_local = true; ++ else if (filename[0] == '.' ++ && (filename[1] == '\0' || IS_DIR_SEPARATOR (filename[1]))) ++ is_local = true; ++ else if (filename[0] == '.' ++ && filename[1] == '.' ++ && (filename[2] == '\0' || IS_DIR_SEPARATOR (filename[2]))) ++ is_local = true; ++ else ++ is_local = false; ++ ++ std::string fn = filename; ++ if (is_local && !IS_ABSOLUTE_PATH (filename) ++ && !relative_import_path.empty ()) ++ { ++ if (fn == ".") ++ /* A special case. */ ++ fn = relative_import_path; ++ else if (fn[0] == '.' && fn[1] == '.' ++ && (fn[2] == '\0' || IS_DIR_SEPARATOR (fn[2]))) ++ { ++ /* We are going to join relative_import_path and fn, and it will look ++ like DIR/../PATH. BUt DIR does not necessarily exist in this ++ case, and if it doesn't the use of .. will fail although it ++ shouldn't. */ ++ size_t index; ++ for (index = relative_import_path.length () - 1; ++ index > 0 && !IS_DIR_SEPARATOR (relative_import_path[index]); ++ index--) ++ ; ++ if (index > 0) ++ fn = relative_import_path.substr (0, index) + fn.substr (2); ++ else ++ fn = relative_import_path + '/' + fn; ++ } ++ else ++ fn = relative_import_path + '/' + fn; ++ is_local = false; ++ } ++ ++ if (!is_local) ++ { ++ for (std::string path : A68_IMPORT_PATHS) ++ { ++ if (path.empty () && path[path.size () - 1] != '/') ++ path += '/'; ++ path += fn; ++ exports = a68_try_packet_in_directory (path, psize); ++ if (exports != NULL) ++ return exports; ++ } ++ } ++ ++ return a68_try_packet_in_directory (fn, psize); ++} ++ ++/* The size of the target's pointer type, in bytes. */ ++#ifndef PTR_SIZE ++#define PTR_SIZE ((int)(POINTER_SIZE / BITS_PER_UNIT)) ++#endif ++ ++/* Collection of decoding helper macros, to be exclusively used in the ++ a68_decode_* functions below. */ ++ ++#define DINT8(V) \ ++ do \ ++ { \ ++ if (pos + 1 > size) \ ++ goto decode_error; \ ++ (V) = (int8_t)data[pos++]; \ ++ } \ ++ while (0) ++ ++#define DUINT8(V) \ ++ do \ ++ { \ ++ if (pos + 1 > size) \ ++ goto decode_error; \ ++ (V) = (uint8_t)data[pos++]; \ ++ } \ ++ while (0) ++ ++#define DUINT16(V) \ ++ do \ ++ { \ ++ if (pos + 2 > size) \ ++ goto decode_error; \ ++ if (BYTES_BIG_ENDIAN) \ ++ (V) = ((uint8_t) data[pos] << 8) | (uint8_t) data[pos + 1]; \ ++ else \ ++ (V) = ((uint8_t) data[pos + 1] << 8) | (uint8_t) data[pos]; \ ++ pos += 2; \ ++ } \ ++ while (0) ++ ++#define DOFFSET(V) \ ++ do \ ++ { \ ++ if (pos + PTR_SIZE > size) \ ++ goto decode_error; \ ++ (V) = 0; \ ++ uint64_t ptr_bit_size = 8 * PTR_SIZE; \ ++ if (BYTES_BIG_ENDIAN) \ ++ { \ ++ for (int i = 0; i < PTR_SIZE; i++) \ ++ (V) = ((V) | ((uint8_t) data[pos + i] << (ptr_bit_size - (i * 8)))); \ ++ } \ ++ else \ ++ { \ ++ for (int i = 0; i < PTR_SIZE; i++) \ ++ (V) = ((V) | ((uint8_t) data[pos + i] << (i * 8))); \ ++ } \ ++ pos += PTR_SIZE; \ ++ } \ ++ while (0) ++ ++#define DSTR(V) \ ++ do \ ++ { \ ++ uint16_t len; \ ++ char *str = NULL; \ ++ DUINT16 (len); \ ++ if (pos + len > size) \ ++ goto decode_error; \ ++ if (len > 0) \ ++ { \ ++ str = (char *) xmalloc (len); \ ++ memcpy (str, data + pos, len); \ ++ pos += len; \ ++ } \ ++ (V) = str; \ ++ } \ ++ while (0) ++ ++/* Types to denote encoded modes. */ ++ ++struct encoded_triplet ++{ ++ uint64_t lb; ++ uint64_t ub; ++}; ++ ++struct encoded_field ++{ ++ uint64_t mode_offset; ++ char *name; ++}; ++ ++struct encoded_arg ++{ ++ uint64_t arg_mode_offset; ++ char *arg_name; ++}; ++ ++struct encoded_mode ++{ ++ MOID_T *moid; ++ uint64_t offset; ++ uint8_t kind; ++ int8_t sizety; ++ union ++ { ++ struct ++ { ++ uint64_t sub_offset; ++ } name; ++ ++ struct ++ { ++ uint8_t sub_offset; ++ } flex; ++ ++ struct ++ { ++ uint8_t ndims; ++ struct encoded_triplet *triplets; ++ uint64_t sub_offset; ++ } row; ++ ++ struct ++ { ++ uint16_t nfields; ++ struct encoded_field *fields; ++ } sct; ++ ++ struct ++ { ++ uint8_t nmodes; ++ uint64_t *modes; ++ } union_; ++ ++ struct ++ { ++ uint64_t ret_mode_offset; ++ uint8_t nargs; ++ struct encoded_arg *args; ++ } proc; ++ ++ } data; ++}; ++ ++/* Free the memory used by an encoded mode. */ ++ ++static void ++encoded_mode_free (struct encoded_mode *em) ++{ ++ switch (em->kind) ++ { ++ case GA68_MODE_ROW: ++ free (em->data.row.triplets); ++ break; ++ case GA68_MODE_STRUCT: ++ /* Note that the field names are installed in moids in ++ encoded_mode_to_moid, so we shoud not free them. */ ++ free (em->data.sct.fields); ++ break; ++ case GA68_MODE_UNION: ++ free (em->data.union_.modes); ++ break; ++ case GA68_MODE_PROC: ++ for (uint8_t i = 0; i < em->data.proc.nargs; i++) ++ free (em->data.proc.args[i].arg_name); ++ free (em->data.proc.args); ++ break; ++ default: ++ break; ++ } ++ free (em); ++} ++ ++/* A collection of encoded modes indexed by offsets. */ ++ ++#define NO_OFFSET ((uint64_t) -1) ++ ++typedef hash_map, ++ struct encoded_mode *> encoded_modes_map_t; ++ ++/* Complete a encoded mode. */ ++ ++static MOID_T * ++complete_encoded_mode (encoded_modes_map_t &encoded_modes, uint64_t offset) ++{ ++ struct encoded_mode *em = *(encoded_modes.get (offset)); ++ MOID_T *sub; ++ PACK_T *pack; ++ ++ if (em->moid != NO_MOID) ++ return em->moid; ++ ++ switch (em->kind) ++ { ++ case GA68_MODE_VOID: em->moid = M_VOID; break; ++ case GA68_MODE_CHAR: em->moid = M_CHAR; break; ++ case GA68_MODE_BOOL: em->moid = M_BOOL; break; ++ case GA68_MODE_STRING: em->moid = M_FLEX_ROW_CHAR; break; ++ case GA68_MODE_INT: ++ switch (em->sizety) ++ { ++ case 0: em->moid = M_INT; break; ++ case 1: em->moid = M_LONG_INT; break; ++ case 2: em->moid = M_LONG_LONG_INT; break; ++ case -1: em->moid = M_SHORT_INT; break; ++ case -2: em->moid = M_SHORT_SHORT_INT; break; ++ default: ++ gcc_unreachable (); ++ } ++ break; ++ case GA68_MODE_BITS: ++ switch (em->sizety) ++ { ++ case 0: em->moid = M_BITS; break; ++ case 1: em->moid = M_LONG_BITS; break; ++ case 2: em->moid = M_LONG_LONG_BITS; break; ++ case -1: em->moid = M_SHORT_BITS; break; ++ case -2: em->moid = M_SHORT_SHORT_BITS; break; ++ default: ++ gcc_unreachable (); ++ } ++ break; ++ case GA68_MODE_BYTES: ++ switch (em->sizety) ++ { ++ case 0: em->moid = M_BYTES; break; ++ case 1: em->moid = M_LONG_BYTES; break; ++ default: ++ gcc_unreachable (); ++ } ++ break; ++ case GA68_MODE_REAL: ++ switch (em->sizety) ++ { ++ case 0: em->moid = M_REAL; break; ++ case 1: em->moid = M_LONG_REAL; break; ++ case 2: em->moid = M_LONG_LONG_REAL; break; ++ default: ++ gcc_unreachable (); ++ } ++ break; ++ case GA68_MODE_CMPL: ++ switch (em->sizety) ++ { ++ case 0: em->moid = M_COMPLEX; break; ++ case 1: em->moid = M_LONG_COMPLEX; break; ++ case 2: em->moid = M_LONG_LONG_COMPLEX; break; ++ default: ++ gcc_unreachable (); ++ } ++ break; ++ case GA68_MODE_NAME: ++ case GA68_MODE_FLEX: ++ /* For recursive declarations. */ ++ em->moid = a68_create_mode (em->kind == GA68_MODE_NAME ? REF_SYMBOL : FLEX_SYMBOL, ++ 0, NO_NODE, M_ERROR, NO_PACK); ++ sub = complete_encoded_mode (encoded_modes, em->data.name.sub_offset); ++ if (sub == NO_MOID) ++ { ++ /* Free em->moid */ ++ return NO_MOID; ++ } ++ SUB (em->moid) = sub; ++ break; ++ case GA68_MODE_ROW: ++ /* XXX how to convey actual bounds. */ ++ /* For recursive declarations. */ ++ em->moid = a68_create_mode (ROW_SYMBOL, 0, NO_NODE, M_ERROR, NO_PACK); ++ sub = complete_encoded_mode (encoded_modes, em->data.row.sub_offset); ++ if (sub == NO_MOID) ++ { ++ /* Free em->moid */ ++ return NO_MOID; ++ } ++ SUB (em->moid) = sub; ++ DIM (em->moid) = em->data.row.ndims; ++ break; ++ case GA68_MODE_STRUCT: ++ /* For recursive declarations. */ ++ em->moid = a68_create_mode (STRUCT_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); ++ pack = NO_PACK; ++ for (uint16_t i = 0; i < em->data.sct.nfields; i++) ++ { ++ /* Note we have to do this from last field to first field, because ++ a68_add_mode_to_pack prepends to the list. */ ++ uint16_t index = em->data.sct.nfields - 1 - i; ++ char *field_name = em->data.sct.fields[index].name; ++ MOID_T *field_moid = complete_encoded_mode (encoded_modes, ++ em->data.sct.fields[index].mode_offset); ++ if (field_moid == NO_MOID) ++ { ++ /* XXX free em->moid */ ++ em->moid = NO_MOID; ++ return NO_MOID; ++ } ++ (void) a68_add_mode_to_pack (&pack, field_moid, field_name, NO_NODE); ++ } ++ DIM (em->moid) = a68_count_pack_members (pack); ++ PACK (em->moid) = pack; ++ break; ++ case GA68_MODE_UNION: ++ /* For recursive declarations. */ ++ em->moid = a68_create_mode (UNION_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); ++ pack = NO_PACK; ++ for (uint8_t i = 0; i < em->data.union_.nmodes; i++) ++ { ++ /* Union alternatives are internally stored in reverse order in the ++ pack. */ ++ uint16_t index = i; ++ MOID_T *united_moid = complete_encoded_mode (encoded_modes, ++ em->data.union_.modes[index]); ++ if (united_moid == NO_MOID) ++ { ++ /* XXX free em->moid */ ++ em->moid = NO_MOID; ++ return NO_MOID; ++ } ++ (void) a68_add_mode_to_pack (&pack, united_moid, NO_TEXT, NO_NODE); ++ } ++ DIM (em->moid) = a68_count_pack_members (pack); ++ PACK (em->moid) = pack; ++ break; ++ case GA68_MODE_PROC: ++ /* For recursive declarations. */ ++ em->moid = a68_create_mode (PROC_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); ++ pack = NO_PACK; ++ for (uint8_t i = 0; i < em->data.proc.nargs; i++) ++ { ++ /* Note we have to do this from last argument mode to first argument ++ mode, because a68_add_mode_to_pack prepends to the list. */ ++ uint16_t index = em->data.proc.nargs - 1 - i; ++ char *arg_name = em->data.proc.args[index].arg_name; ++ MOID_T *arg_moid = complete_encoded_mode (encoded_modes, ++ em->data.proc.args[index].arg_mode_offset); ++ if (arg_moid == NO_MOID) ++ { ++ /* XXX free em->moid */ ++ em->moid = NO_MOID; ++ return NO_MOID; ++ } ++ (void) a68_add_mode_to_pack (&pack, arg_moid, arg_name, NO_NODE); ++ } ++ SUB (em->moid) = complete_encoded_mode (encoded_modes, ++ em->data.proc.ret_mode_offset); ++ if (SUB (em->moid) == NO_MOID) ++ { ++ /* Free em->moid */ ++ em->moid = NO_MOID; ++ return NO_MOID; ++ } ++ DIM (em->moid) = a68_count_pack_members (pack); ++ PACK (em->moid) = pack; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ return em->moid; ++} ++ ++/* Dump the contents of an encoded_mode, for debugging purposes. */ ++ ++ATTRIBUTE_UNUSED static void ++dump_encoded_mode (struct encoded_mode *em) ++{ ++ printf ("[%" PRIu64 "] kind: %" PRIu8, em->offset, em->kind); ++ switch (em->kind) ++ { ++ case GA68_MODE_VOID: ++ printf (" void\n"); ++ break; ++ case GA68_MODE_CHAR: ++ printf (" char\n"); ++ break; ++ case GA68_MODE_BOOL: ++ printf (" bool\n"); ++ break; ++ case GA68_MODE_STRING: ++ printf (" basic\n"); ++ break; ++ case GA68_MODE_NAME: ++ printf (" name\n"); ++ printf (" sub: %" PRIu64 "\n", em->data.name.sub_offset); ++ break; ++ case GA68_MODE_STRUCT: ++ printf (" struct\n"); ++ printf (" nfields: %" PRIu16 "\n", em->data.sct.nfields); ++ for (uint16_t i = 0; i < em->data.sct.nfields; i++) ++ printf (" %s : [%" PRIu64 "]\n", ++ em->data.sct.fields[i].name, em->data.sct.fields[i].mode_offset); ++ break; ++ case GA68_MODE_FLEX: ++ printf (" flex\n"); ++ printf (" sub: %" PRIu64 "\n", em->data.name.sub_offset); ++ break; ++ case GA68_MODE_UNION: ++ printf (" union\n"); ++ printf (" nmodes: %" PRIu8 "\n", em->data.union_.nmodes); ++ printf (" "); ++ for (uint8_t i = 0; i < em->data.union_.nmodes; i++) ++ printf (" [%" PRIu64 "]", em->data.union_.modes[i]); ++ printf ("\n"); ++ break; ++ case GA68_MODE_PROC: ++ printf (" proc\n"); ++ printf (" retmode: [%" PRIu64 "]\n", em->data.proc.ret_mode_offset); ++ printf (" nargs: %" PRIu8 "\n", em->data.proc.nargs); ++ for (uint8_t i = 0; i < em->data.proc.nargs; i++) ++ printf (" %s : [%" PRIu64 "]\n", ++ em->data.proc.args[i].arg_name, ++ em->data.proc.args[i].arg_mode_offset); ++ break; ++ case GA68_MODE_ROW: ++ printf (" row\n"); ++ printf (" ndims: %" PRIu8 "\n", em->data.row.ndims); ++ for (uint8_t i = 0; i < em->data.row.ndims; i++) ++ { ++ printf (" lb: %" PRIu64 "\n", em->data.row.triplets[i].lb); ++ printf (" ub: %" PRIu64 "\n", em->data.row.triplets[i].ub); ++ } ++ printf (" sub: [%" PRIu64 "]\n", em->data.row.sub_offset); ++ break; ++ default: ++ break; ++ } ++} ++ ++/* Substitute any reference to mode M in T to R. */ ++ ++static void ++a68_replace_submode (MOID_T *t, MOID_T *m, MOID_T *r) ++{ ++ if (SUB (t) == m) ++ SUB (t) = r; ++ ++ for (PACK_T *p = PACK (t); p != NO_PACK; FORWARD (p)) ++ { ++ if (MOID (p) == m) ++ MOID (p) = r; ++ } ++} ++ ++/* Substitute mode M with mode R in all modes in MODES_LIST. ++ The entry for M in MODES_LIST is set to NO_MOID. */ ++ ++static void ++a68_replace_equivalent_mode (vec *mode_list, ++ MOID_T *m, MOID_T *r) ++{ ++ for (size_t i = 0; i < mode_list->length (); ++i) ++ { ++ if ((*mode_list)[i] == m) ++ (*mode_list)[i] = NO_MOID; ++ else if ((*mode_list)[i] != NO_MOID) ++ a68_replace_submode ((*mode_list)[i], m, r); ++ } ++} ++ ++/* Decode a modes table at DATA + POS. */ ++ ++static bool ++a68_decode_modes (MOIF_T *moif, encoded_modes_map_t &encoded_modes, ++ const char *data, size_t size, size_t pos, ++ size_t *ppos, const char **errstr) ++{ ++ bool siga; ++ uint8_t kind; ++ uint64_t mode_table_size, mode_table_end; ++ ++ /* Get the size of the modes table. */ ++ DOFFSET (mode_table_size); ++ mode_table_end = pos + mode_table_size; ++ ++ /* Decode all the mode entries and fill in encoded_modes. */ ++ while (pos < mode_table_end) ++ { ++ int8_t sizety; ++ uint8_t ndims, nmodes, nargs; ++ uint16_t nfields; ++ uint64_t mode_offset = pos; ++ uint64_t sub, ret_mode_offset; ++ struct encoded_mode *encoded_mode; ++ ++ DUINT8 (kind); ++ encoded_mode = (struct encoded_mode *) xmalloc (sizeof (struct encoded_mode)); ++ encoded_mode->moid = NO_MOID; ++ encoded_mode->offset = mode_offset; ++ encoded_mode->kind = kind; ++ encoded_mode->sizety = 0; ++ switch (kind) ++ { ++ case GA68_MODE_VOID: ++ case GA68_MODE_CHAR: ++ case GA68_MODE_BOOL: ++ case GA68_MODE_STRING: ++ break; ++ case GA68_MODE_INT: ++ case GA68_MODE_REAL: ++ case GA68_MODE_BITS: ++ case GA68_MODE_BYTES: ++ case GA68_MODE_CMPL: ++ DINT8 (sizety); ++ encoded_mode->sizety = sizety; ++ break; ++ case GA68_MODE_NAME: ++ DOFFSET (sub); ++ encoded_mode->data.name.sub_offset = sub; ++ break; ++ case GA68_MODE_FLEX: ++ DOFFSET (sub); ++ encoded_mode->data.flex.sub_offset = sub; ++ break; ++ case GA68_MODE_ROW: ++ DUINT8 (ndims); ++ encoded_mode->data.row.triplets ++ = (struct encoded_triplet *) xmalloc (sizeof (struct encoded_triplet) * ndims); ++ for (uint8_t i = 0; i < ndims; i++) ++ { ++ uint64_t lb, ub; ++ DOFFSET (lb); ++ DOFFSET (ub); ++ encoded_mode->data.row.triplets[i].lb = lb; ++ encoded_mode->data.row.triplets[i].ub = ub; ++ } ++ DOFFSET (sub); ++ encoded_mode->data.row.ndims = ndims; ++ encoded_mode->data.row.sub_offset = sub; ++ break; ++ case GA68_MODE_UNION: ++ DUINT16 (nmodes); ++ encoded_mode->data.union_.nmodes = nmodes; ++ encoded_mode->data.union_.modes ++ = (uint64_t *) xmalloc (sizeof (uint64_t) * nmodes); ++ for (uint8_t i = 0; i < nmodes; i++) ++ { ++ uint64_t mode; ++ DOFFSET (mode); ++ encoded_mode->data.union_.modes[i] = mode; ++ } ++ break; ++ case GA68_MODE_PROC: ++ DOFFSET (ret_mode_offset); ++ DUINT8 (nargs); ++ encoded_mode->data.proc.ret_mode_offset = ret_mode_offset; ++ encoded_mode->data.proc.nargs = nargs; ++ encoded_mode->data.proc.args ++ = (struct encoded_arg *) xmalloc (sizeof (struct encoded_arg) * nargs); ++ for (uint8_t i = 0; i < nargs; i++) ++ { ++ uint64_t arg_mode_offset; ++ char *arg_name; ++ DOFFSET (arg_mode_offset); ++ DSTR (arg_name); ++ encoded_mode->data.proc.args[i].arg_mode_offset = arg_mode_offset; ++ encoded_mode->data.proc.args[i].arg_name = arg_name; ++ } ++ break; ++ case GA68_MODE_STRUCT: ++ DUINT16 (nfields); ++ encoded_mode->data.sct.nfields = nfields; ++ encoded_mode->data.sct.fields ++ = (struct encoded_field *) xmalloc (sizeof (struct encoded_field) * nfields); ++ for (uint16_t i = 0; i < nfields; i++) ++ { ++ uint64_t mode_offset; ++ char *field_name; ++ DOFFSET (mode_offset); ++ DSTR (field_name); ++ encoded_mode->data.sct.fields[i].mode_offset = mode_offset; ++ encoded_mode->data.sct.fields[i].name = field_name; ++ } ++ break; ++ case GA68_MODE_UNKNOWN: ++ default: ++ *errstr = "invalid kind in mode"; ++ goto decode_error; ++ break; ++ } ++ ++ encoded_modes.put (mode_offset, encoded_mode); ++ } ++ ++ /* Sanity check. */ ++ if (pos != mode_table_end) ++ { ++ *errstr = "invalid mode table size"; ++ goto decode_error; ++ } ++ ++ /* Complete all encoded modes. ++ This operation must conform a transitive closure. */ ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ for (auto entry : encoded_modes) ++ { ++ uint64_t offset = entry.first; ++ struct encoded_mode *em = entry.second; ++ ++ if (em->moid == NO_MOID ++ && complete_encoded_mode (encoded_modes, offset) != NO_MOID) ++ siga = true; ++ } ++ } ++ ++ /* At this point all the encoded modes are complete and they are all ++ associated with moids. Put them in the moif. */ ++ for (auto entry : encoded_modes) ++ { ++ struct encoded_mode *em = entry.second; ++ vec_safe_push (MODES (moif), em->moid); ++ } ++ ++ /* Next step is to see if equivalent modes the any of the modes in the moif ++ DIM already exist in the compiler's mode list. In that case, replace the ++ DIM moif's mode with the existing mode anywhere in the moif. */ ++ for (MOID_T *m : MODES (moif)) ++ { ++ MOID_T *r = a68_search_equivalent_mode (m); ++ if (r != NO_MOID) ++ { ++ a68_replace_equivalent_mode (MODES (moif), m, r); ++ ++ /* Update encoded_modes to reflect the replacement. */ ++ for (auto entry : encoded_modes) ++ { ++ struct encoded_mode *em = entry.second; ++ if (em->moid == m) ++ em->moid = r; ++ } ++ } ++ } ++ ++ *errstr = NULL; ++ *ppos = pos; ++ return true; ++ decode_error: ++ if (*errstr == NULL) ++ *errstr = "error decoding mode"; ++ return false; ++} ++ ++/* Decode an extracts table at DATA + POS. */ ++ ++static bool ++a68_decode_extracts (MOIF_T *moif, encoded_modes_map_t &encoded_modes, ++ const char *data, size_t size, size_t pos, ++ size_t *ppos, const char **errstr) ++{ ++ uint64_t extracts_table_size, extracts_table_end; ++ ++ /* Get the size of the extracts table. */ ++ DOFFSET (extracts_table_size); ++ extracts_table_end = pos + extracts_table_size; ++ ++ /* Decode all the extracts entries, adding them to MOIF as we go. */ ++ while (pos < extracts_table_end) ++ { ++ uint8_t marker, prio, variable, in_proc; ++ uint64_t extract_size, extract_end, mode_offset; ++ uint64_t mdextra_size; ++ char *name; ++ ++ EXTRACT_T *e = (EXTRACT_T *) ggc_cleared_alloc (); ++ ++ DOFFSET (extract_size); ++ extract_end = pos + extract_size; ++ ++ DUINT8 (marker); ++ switch (marker) ++ { ++ case GA68_EXTRACT_MODU: ++ DSTR (name); ++ DOFFSET (mdextra_size); ++ if (mdextra_size != 0) ++ { ++ *errstr = "non-empty mdextra in module extract"; ++ goto decode_error; ++ } ++ EXTRACT_KIND (e) = GA68_EXTRACT_MODU; ++ EXTRACT_SYMBOL (e) = ggc_strdup (name); ++ EXTRACT_MODE (e) = NO_MOID; ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ vec_safe_push (MODULES (moif), e); ++ break; ++ case GA68_EXTRACT_IDEN: ++ DSTR (name); ++ DOFFSET (mode_offset); ++ DOFFSET (mdextra_size); ++ if (mdextra_size != 2) ++ { ++ *errstr = "mdextra size should be 2 in iden extract"; ++ goto decode_error; ++ } ++ DUINT8 (variable); ++ DUINT8 (in_proc); ++ EXTRACT_KIND (e) = GA68_EXTRACT_IDEN; ++ EXTRACT_SYMBOL (e) = ggc_strdup (name); ++ EXTRACT_MODE (e) = (*(encoded_modes.get (mode_offset)))->moid; ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = variable; ++ EXTRACT_IN_PROC (e) = in_proc; ++ vec_safe_push (IDENTIFIERS (moif), e); ++ break; ++ case GA68_EXTRACT_MODE: ++ DSTR (name); ++ DOFFSET (mode_offset); ++ DOFFSET (mdextra_size); ++ if (mdextra_size != 0) ++ { ++ *errstr = "non-empty mdextra in indicant extract"; ++ goto decode_error; ++ } ++ EXTRACT_KIND (e) = GA68_EXTRACT_MODE; ++ EXTRACT_SYMBOL (e) = ggc_strdup (name); ++ EXTRACT_MODE (e) = (*(encoded_modes.get (mode_offset)))->moid; ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ vec_safe_push (INDICANTS (moif), e); ++ break; ++ case GA68_EXTRACT_PRIO: ++ DSTR (name); ++ DUINT8 (prio); ++ DOFFSET (mdextra_size); ++ if (mdextra_size != 0) ++ { ++ *errstr = "non-empty mdextra in prio extract"; ++ goto decode_error; ++ } ++ EXTRACT_KIND (e) = GA68_EXTRACT_PRIO; ++ EXTRACT_SYMBOL (e) = ggc_strdup (name); ++ EXTRACT_MODE (e) = NO_MOID; ++ EXTRACT_PRIO (e) = prio; ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ vec_safe_push (PRIOS (moif), e); ++ break; ++ case GA68_EXTRACT_OPER: ++ DSTR (name); ++ DOFFSET (mode_offset); ++ DOFFSET (mdextra_size); ++ if (mdextra_size != 2) ++ { ++ *errstr = "mdextra size should be 2 in oper extract"; ++ goto decode_error; ++ } ++ DUINT8 (variable); ++ DUINT8 (in_proc); ++ EXTRACT_KIND (e) = GA68_EXTRACT_OPER; ++ EXTRACT_SYMBOL (e) = ggc_strdup (name); ++ EXTRACT_MODE (e) = (*(encoded_modes.get (mode_offset)))->moid; ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = variable; ++ EXTRACT_IN_PROC (e) = in_proc; ++ vec_safe_push (OPERATORS (moif), e); ++ break; ++ default: ++ *errstr = "invalid marker in extract"; ++ goto decode_error; ++ break; ++ } ++ ++ /* Sanity check. */ ++ if (pos != extract_end) ++ { ++ *errstr = "invalid extract size"; ++ goto decode_error; ++ } ++ } ++ ++ /* Sanity check. */ ++ if (pos != extracts_table_end) ++ { ++ *errstr = "invalid extracts table size"; ++ goto decode_error; ++ } ++ ++ *errstr = NULL; ++ *ppos = pos; ++ return true; ++ decode_error: ++ if (*errstr == NULL) ++ *errstr = "error decoding extract"; ++ return false; ++} ++ ++/* Decode the given exports data into a moif. If there is a decoding error ++ then put an explicative mssage in *ERRSTR and return NULL. */ ++ ++static MOIF_T * ++a68_decode_moif (const char *data, size_t size, const char **errstr) ++{ ++ size_t pos = 0; ++ MOIF_T *moif = a68_moif_new (NULL /* name */); ++ encoded_modes_map_t encoded_modes (16); ++ ++ uint8_t magic1, magic2; ++ uint16_t version; ++ char *name, *prelude, *postlude; ++ ++ DUINT8 (magic1); ++ DUINT8 (magic2); ++ if (magic1 != A68_EXPORT_MAGIC1 || magic2 != A68_EXPORT_MAGIC2) ++ { ++ *errstr = "invalid magic number"; ++ goto decode_error; ++ } ++ ++ DUINT16 (version); ++ if (version != 1) ++ { ++ *errstr = "invalid a68 exports version"; ++ goto decode_error; ++ } ++ ++ DSTR (name); ++ DSTR (prelude); ++ DSTR (postlude); ++ NAME (moif) = name; ++ PRELUDE (moif) = prelude; ++ POSTLUDE (moif) = postlude; ++ ++ /* Decode the modes table. ++ This installs the resulting moids in MOIF. */ ++ if (!a68_decode_modes (moif, encoded_modes, data, size, pos, &pos, errstr)) ++ goto decode_error; ++ ++ /* Decode the extracts table. ++ This installs the resulting tags in MOIF. */ ++ if (!a68_decode_extracts (moif, encoded_modes, data, size, pos, &pos, errstr)) ++ goto decode_error; ++ ++ /* We don't need the encoded modes anymore. */ ++ for (auto entry : encoded_modes) ++ { ++ struct encoded_mode *em = entry.second; ++ encoded_mode_free (em); ++ } ++ ++ /* Got some juicy exports for youuuuuu... */ ++ return moif; ++ decode_error: ++ if (*errstr == NULL) ++ *errstr = "premature end of data"; ++ return NULL; ++} ++ ++/* Get a moif with the exports for module named MODULE. If no exports can be ++ found then return NULL. */ ++ ++MOIF_T * ++a68_open_packet (const char *module) ++{ ++ /* Look in the modules location maps to see if there is an entry for MODULE. ++ If there is one, use the specified filename. Otherwise canonicalize the ++ module name to a file name. */ ++ char *filename; ++ const char **pfilename = A68_MODULE_FILES->get (module); ++ if (pfilename == NULL) ++ { ++ /* Turn the module indicant in MODULE to lower-case. */ ++ filename = (char *) alloca (strlen (module) + 1); ++ size_t i = 0; ++ for (; i < strlen (module); i++) ++ filename[i] = TOLOWER (module[i]); ++ filename[i] = '\0'; ++ } ++ else ++ { ++ size_t len = strlen (*pfilename) + 1; ++ filename = (char *) alloca (len); ++ memcpy (filename, *pfilename, len); ++ } ++ ++ /* Try to read exports data in a buffer. */ ++ char *exports_data; ++ size_t exports_data_size; ++ exports_data = a68_get_packet_exports (std::string (filename), ++ std::string ("."), ++ &exports_data_size); ++ if (exports_data == NULL) ++ return NULL; ++ ++ /* Got some data. Parse it into a moif. */ ++ const char *errstr = NULL; ++ MOIF_T *moif = a68_decode_moif (exports_data, exports_data_size, &errstr); ++ return moif; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-lang.cc +@@ -0,0 +1,755 @@ ++/* Language-dependent hooks for Algol 68. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tree.h" ++#include "toplev.h" ++#include "langhooks.h" ++#include "langhooks-def.h" ++#include "target.h" ++#include "stringpool.h" ++#include "debug.h" ++#include "diagnostic.h" ++#include "opts.h" ++#include "machmode.h" ++#include "stor-layout.h" /* For layout_type */ ++#include "vec.h" ++ ++#include "a68.h" ++ ++/* Global state for the Algol 68 front end. */ ++ ++A68_T a68_common; ++ ++/* Types expected by gcc's garbage collector. ++ These types exist to allow language front-ends to ++ add extra information in gcc's parse tree data structure. */ ++ ++struct GTY(()) lang_type ++{ ++ MOID_T * moid; ++}; ++ ++struct GTY(()) lang_decl ++{ ++ NODE_T * node; ++}; ++ ++/* Language-specific identifier information. This must include a ++ tree_identifier. */ ++struct GTY(()) lang_identifier ++{ ++ struct tree_identifier common; ++}; ++ ++ ++struct GTY(()) language_function ++{ ++ int dummy; ++}; ++ ++/* The Algol68 frontend Type AST for GCC type NODE. */ ++#define TYPE_LANG_FRONTEND(NODE) \ ++ (TYPE_LANG_SPECIFIC (NODE) \ ++ ? TYPE_LANG_SPECIFIC (NODE)->type : NULL) ++ ++/* The resulting tree type. */ ++ ++union GTY((desc ("TREE_CODE (&%h.generic) == IDENTIFIER_NODE"), ++ chain_next ("CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), " ++ "TS_COMMON) ? ((union lang_tree_node *) TREE_CHAIN " ++ "(&%h.generic)) : NULL"))) lang_tree_node ++{ ++ union tree_node GTY((tag ("0"), ++ desc ("tree_node_structure (&%h)"))) generic; ++ struct lang_identifier GTY ((tag ("1"))) identifier; ++}; ++ ++/* Allocate and return a lang specific structure for type tree nodes. */ ++ ++struct lang_type * ++a68_build_lang_type (MOID_T *moid) ++{ ++ tree ctype = CTYPE (moid); ++ struct lang_type *lt = ctype ? TYPE_LANG_SPECIFIC (ctype) : NULL; ++ ++ if (lt == NULL) ++ lt = (struct lang_type *) ggc_cleared_alloc (); ++ if (lt->moid == NULL) ++ lt->moid = moid; ++ return lt; ++} ++ ++/* Allocate and return a lang specific structure for decl tree nodes. */ ++ ++struct lang_decl * ++a68_build_lang_decl (NODE_T *node) ++{ ++ tree cdecl = CDECL (node); ++ struct lang_decl *ld = cdecl ? DECL_LANG_SPECIFIC (cdecl) : NULL; ++ ++ if (ld == NULL) ++ ld = (struct lang_decl *) ggc_cleared_alloc (); ++ if (ld->node == NULL) ++ ld->node = node; ++ return ld; ++} ++ ++/* Get the front-end mode associated with the given TYPE. If no mode is ++ associated then this function returns NO_MODE. */ ++ ++MOID_T * ++a68_type_moid (tree type) ++{ ++ gcc_assert (TYPE_LANG_SPECIFIC (type) != NULL ++ && TYPE_LANG_SPECIFIC (type)->moid != NO_MOID); ++ return TYPE_LANG_SPECIFIC (type)->moid; ++} ++ ++/* Build the type trees in a68_global_trees. */ ++ ++static void ++a68_build_a68_type_nodes (void) ++{ ++ /* VOID */ ++ a68_void_type = make_node (RECORD_TYPE); ++ TYPE_NAME (a68_void_type) = get_identifier ("void%"); ++ TYPE_FIELDS (a68_void_type) = NULL_TREE; ++ TYPE_READONLY (a68_void_type) = 1; ++ TYPE_CXX_ODR_P (a68_void_type) = 1; ++ layout_type (a68_void_type); ++ ++ /* BOOL */ ++ a68_bool_type = boolean_type_node; ++ ++ /* CHAR */ ++ a68_char_type = uint32_type_node; ++ ++ /* SHORT SHORT INT ++ SHORT INT ++ INT */ ++ a68_short_short_int_type = signed_char_type_node; ++ a68_short_int_type = short_integer_type_node; ++ a68_int_type = integer_type_node; ++ ++ /* LONG INT */ ++ if (int_size_in_bytes (long_integer_type_node) ++ > int_size_in_bytes (a68_int_type)) ++ a68_long_int_type = long_integer_type_node; ++ else if (int_size_in_bytes (long_long_integer_type_node) ++ > int_size_in_bytes (a68_int_type)) ++ a68_long_int_type = long_long_integer_type_node; ++ else ++ a68_long_int_type = a68_int_type; ++ ++ /* LONG LONG INT */ ++ if (int_size_in_bytes (long_integer_type_node) ++ > int_size_in_bytes (a68_long_int_type)) ++ a68_long_long_int_type = long_integer_type_node; ++ else if (int_size_in_bytes (long_long_integer_type_node) ++ > int_size_in_bytes (a68_long_int_type)) ++ a68_long_long_int_type = long_long_integer_type_node; ++ else ++ a68_long_long_int_type = a68_long_int_type; ++ ++ /* SHORT SHORT BITS ++ SHORT BITS ++ BITS */ ++ a68_short_short_bits_type = unsigned_char_type_node; ++ a68_short_bits_type = short_unsigned_type_node; ++ a68_bits_type = unsigned_type_node; ++ ++ /* LONG BITS */ ++ if (int_size_in_bytes (long_unsigned_type_node) ++ > int_size_in_bytes (a68_bits_type)) ++ a68_long_bits_type = long_unsigned_type_node; ++ else if (int_size_in_bytes (long_long_unsigned_type_node) ++ > int_size_in_bytes (a68_bits_type)) ++ a68_long_bits_type = long_long_unsigned_type_node; ++ else ++ a68_long_bits_type = a68_bits_type; ++ ++ /* LONG LONG BITS */ ++ if (int_size_in_bytes (long_unsigned_type_node) ++ > int_size_in_bytes (a68_long_bits_type)) ++ a68_long_long_bits_type = long_unsigned_type_node; ++ else if (int_size_in_bytes (long_long_unsigned_type_node) ++ > int_size_in_bytes (a68_long_bits_type)) ++ a68_long_long_bits_type = long_long_unsigned_type_node; ++ else ++ a68_long_long_bits_type = a68_long_bits_type; ++ ++ /* BYTES ++ LONG BYTES */ ++ a68_bytes_type = unsigned_type_node; ++ a68_long_bytes_type = long_unsigned_type_node; ++ ++ /* REAL ++ LONG REAL ++ LONG LONG REAL */ ++ a68_real_type = float_type_node; ++ a68_long_real_type = double_type_node; ++ a68_long_long_real_type = long_double_type_node; ++} ++ ++/* Language hooks data structures. This is the main interface between ++ the GCC front-end and the GCC middle-end/back-end. A list of ++ language hooks can be found in langhooks.h. */ ++ ++#undef LANG_HOOKS_NAME ++#define LANG_HOOKS_NAME "GNU Algol 68" ++ ++/* LANG_HOOKS_INIT gets called to initialize the front-end. ++ Invoked after option handling. */ ++ ++static bool ++a68_init (void) ++{ ++ build_common_tree_nodes (false); ++ targetm.init_builtins (); ++ a68_build_a68_type_nodes (); ++ build_common_builtin_nodes (); ++ a68_install_builtins (); ++ ++ /* Initialize binding contexts. */ ++ a68_init_ranges (); ++ ++ /* Set the type of size_t. */ ++ if (TYPE_MODE (long_unsigned_type_node) == ptr_mode) ++ size_type_node = long_unsigned_type_node; ++ else if (TYPE_MODE (long_long_unsigned_type_node) == ptr_mode) ++ size_type_node = long_long_unsigned_type_node; ++ else ++ size_type_node = long_unsigned_type_node; ++ ++ /* Create an empty module files map. */ ++ A68_MODULE_FILES = hash_map::create_ggc (16); ++ A68_MODULE_FILES->empty (); ++ ++ return true; ++} ++ ++#undef LANG_HOOKS_INIT ++#define LANG_HOOKS_INIT a68_init ++ ++/* LANG_HOOKS_OPTION_LANG_MASK */ ++ ++static unsigned int ++a68_option_lang_mask (void) ++{ ++ return CL_Algol68; ++} ++ ++#undef LANG_HOOKS_OPTION_LANG_MASK ++#define LANG_HOOKS_OPTION_LANG_MASK a68_option_lang_mask ++ ++ ++/* Return a data type that has machine mode MODE. If the mode is an ++ integer, then UNSIGNEDP selects between signed and unsigned types. */ ++ ++static tree ++a68_type_for_mode (enum machine_mode mode, int unsignedp) ++{ ++ if (mode == QImode) ++ return unsignedp ? a68_short_short_bits_type :a68_short_short_int_type; ++ ++ if (mode == HImode) ++ return unsignedp ? a68_short_bits_type : a68_short_int_type; ++ ++ if (mode == SImode) ++ return unsignedp ? a68_bits_type : a68_int_type; ++ ++ if (mode == DImode) ++ return unsignedp ? a68_long_bits_type : a68_long_int_type; ++ ++ if (mode == TYPE_MODE (a68_long_long_bits_type)) ++ return unsignedp ? a68_long_long_bits_type : a68_long_long_int_type; ++ ++ if (mode == TYPE_MODE (a68_real_type)) ++ return a68_real_type; ++ ++ if (mode == TYPE_MODE (a68_long_real_type)) ++ return a68_long_real_type; ++ ++ if (mode == TYPE_MODE (a68_long_long_real_type)) ++ return a68_long_long_real_type; ++ ++ if (mode == TYPE_MODE (build_pointer_type (char_type_node))) ++ return build_pointer_type (char_type_node); ++ ++ if (mode == TYPE_MODE (build_pointer_type (integer_type_node))) ++ return build_pointer_type (integer_type_node); ++ ++ for (int i = 0; i < NUM_INT_N_ENTS; i ++) ++ { ++ if (int_n_enabled_p[i] && mode == int_n_data[i].m) ++ { ++ if (unsignedp) ++ return int_n_trees[i].unsigned_type; ++ else ++ return int_n_trees[i].signed_type; ++ } ++ } ++ ++ return 0; ++} ++ ++#undef LANG_HOOKS_TYPE_FOR_MODE ++#define LANG_HOOKS_TYPE_FOR_MODE a68_type_for_mode ++ ++ ++/* Return an integer type with BITS bits of precision, ++ that is unsigned if UNSIGNEDP is nonzero, otherwise signed. */ ++ ++static tree ++a68_type_for_size (unsigned int bits, int unsignedp) ++{ ++ if (unsignedp) ++ { ++ if (bits <= TYPE_PRECISION (a68_short_short_bits_type)) ++ return a68_short_short_bits_type; ++ if (bits <= TYPE_PRECISION (a68_short_bits_type)) ++ return a68_short_bits_type; ++ if (bits <= TYPE_PRECISION (a68_bits_type)) ++ return a68_bits_type; ++ if (bits <= TYPE_PRECISION (a68_long_bits_type)) ++ return a68_long_bits_type; ++ if (bits <= TYPE_PRECISION (a68_long_long_bits_type)) ++ return a68_long_long_bits_type; ++ } ++ else ++ { ++ if (bits <= TYPE_PRECISION (a68_short_short_int_type)) ++ return a68_short_short_int_type; ++ if (bits <= TYPE_PRECISION (a68_short_int_type)) ++ return a68_short_int_type; ++ if (bits <= TYPE_PRECISION (a68_int_type)) ++ return a68_int_type; ++ if (bits <= TYPE_PRECISION (a68_long_int_type)) ++ return a68_long_int_type; ++ if (bits <= TYPE_PRECISION (a68_long_long_int_type)) ++ return a68_long_long_int_type; ++ } ++ ++ for (int i = 0; i < NUM_INT_N_ENTS; ++i) ++ { ++ if (int_n_enabled_p[i] && bits == int_n_data[i].bitsize) ++ { ++ if (unsignedp) ++ return int_n_trees[i].unsigned_type; ++ else ++ return int_n_trees[i].signed_type; ++ } ++ } ++ ++ return 0; ++} ++ ++#undef LANG_HOOKS_TYPE_FOR_SIZE ++#define LANG_HOOKS_TYPE_FOR_SIZE a68_type_for_size ++ ++ ++/* Implements the lang_hooks.decls.global_bindings_p routine for Algol 68. ++ Return true if we are in the global binding level. */ ++ ++static bool ++a68_global_bindings_p (void) ++{ ++ return (current_function_decl == NULL_TREE); ++} ++ ++#undef LANG_HOOKS_GLOBAL_BINDINGS_P ++#define LANG_HOOKS_GLOBAL_BINDINGS_P a68_global_bindings_p ++ ++/* Implements the lang_hooks.decls.getdecls routine. ++ Return the list of declarations of the current level. */ ++ ++static tree ++a68_getdecls (void) ++{ ++ return a68_range_names (); ++} ++ ++#undef LANG_HOOKS_GETDECLS ++#define LANG_HOOKS_GETDECLS a68_getdecls ++ ++/* Return A68_GLOBAL_CONTEXT, but create it first if need be. */ ++ ++static tree ++get_global_context (void) ++{ ++ if (!A68_GLOBAL_CONTEXT) ++ { ++ A68_GLOBAL_CONTEXT = build_translation_unit_decl (NULL_TREE); ++ debug_hooks->register_main_translation_unit (A68_GLOBAL_CONTEXT); ++ } ++ ++ return A68_GLOBAL_CONTEXT; ++} ++ ++/* Implements the lang_hooks.decls.pushdecl routine. ++ Record DECL as belonging to the current lexical scope. */ ++ ++static tree ++pushdecl (tree decl) ++{ ++ /* Set the context of the decl. If current_function_decl did not help in ++ determining the context, use global scope. */ ++ if (!DECL_CONTEXT (decl)) ++ { ++ if (current_function_decl) ++ DECL_CONTEXT (decl) = current_function_decl; ++ else ++ DECL_CONTEXT (decl) = get_global_context (); ++ } ++ ++ /* Put decls on list in reverse order. */ ++ if (TREE_STATIC (decl) || a68_global_bindings_p ()) ++ vec_safe_push (A68_GLOBAL_DECLARATIONS, decl); ++ else ++ a68_add_decl (decl); ++ ++ return decl; ++} ++ ++#undef LANG_HOOKS_PUSHDECL ++#define LANG_HOOKS_PUSHDECL pushdecl ++ ++/* Implements the lang_hooks.init_options routine for language Algol 68. This ++ initializes the global state for the frontend before calling the option ++ handlers. */ ++ ++static void ++a68_init_options (unsigned int argc ATTRIBUTE_UNUSED, ++ cl_decoded_option *decoded_options ATTRIBUTE_UNUSED) ++{ ++ /* Nothing to do here for now. */ ++} ++ ++#undef LANG_HOOKS_INIT_OPTIONS ++#define LANG_HOOKS_INIT_OPTIONS a68_init_options ++ ++ ++/* Handle -fcheck= option. */ ++ ++static void ++a68_handle_runtime_check_option (const char *arg) ++{ ++ int pos = 0; ++ ++ while (*arg) ++ { ++ /* We accept entries like -fcheck=nil,,bounds and -fcheck=,all. */ ++ while (*arg == ',') ++ arg++; ++ ++ while (arg[pos] && arg[pos] != ',') ++ pos++; ++ ++ /* Process an option flag in the -fcheck= specification. ++ ++ "all" means enable all run-time checks. ++ "none" means disable all run-time checks. ++ ++ Options are processed from left to right, with increase ++ precedende. */ ++ ++ if (strncmp (arg, "all", pos) == 0) ++ { ++ OPTION_NIL_CHECKING (&A68_JOB) = true; ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = true; ++ } ++ else if (strncmp (arg, "none", pos) == 0) ++ { ++ OPTION_NIL_CHECKING (&A68_JOB) = false; ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = false; ++ } ++ else if (strncmp (arg, "nil", pos) == 0) ++ OPTION_NIL_CHECKING (&A68_JOB) = true; ++ else if (strncmp (arg, "no-nil", pos) == 0) ++ OPTION_NIL_CHECKING (&A68_JOB) = false; ++ else if (strncmp (arg, "bounds", pos) == 0) ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = true; ++ else if (strncmp (arg, "no-bounds", pos) == 0) ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = false; ++ else ++ fatal_error (UNKNOWN_LOCATION, ++ "Argument to %<-fcheck%> is not valid: %s", arg); ++ ++ /* Process next flag. */ ++ arg += pos; ++ pos = 0; ++ } ++} ++ ++/* Handle Algol 68 specific options. Return false if we didn't do ++ anything. */ ++ ++static bool ++a68_handle_option (size_t scode, ++ const char *arg, ++ HOST_WIDE_INT value ATTRIBUTE_UNUSED, ++ int kind ATTRIBUTE_UNUSED, ++ location_t loc ATTRIBUTE_UNUSED, ++ const cl_option_handlers *handlers ATTRIBUTE_UNUSED) ++{ ++ opt_code code = (opt_code) scode; ++ ++ switch (code) ++ { ++ case OPT_std_algol68: ++ OPTION_STRICT (&A68_JOB) = 1; ++ break; ++ case OPT_fbrackets: ++ OPTION_BRACKETS (&A68_JOB) = flag_brackets; ++ break; ++ case OPT_fassert: ++ OPTION_ASSERT (&A68_JOB) = flag_assert; ++ break; ++ case OPT_fcheck_: ++ a68_handle_runtime_check_option (arg); ++ break; ++ case OPT_fstropping_: ++ if (value == 0) ++ OPTION_STROPPING (&A68_JOB) = UPPER_STROPPING; ++ else ++ OPTION_STROPPING (&A68_JOB) = SUPPER_STROPPING; ++ break; ++ case OPT_I: ++ vec_safe_push (A68_INCLUDE_PATHS, arg); ++ vec_safe_push (A68_IMPORT_PATHS, arg); ++ break; ++ case OPT_L: ++ vec_safe_push (A68_IMPORT_PATHS, arg); ++ break; ++ default: ++ break; ++ } ++ ++ return true; ++} ++ ++#undef LANG_HOOKS_HANDLE_OPTION ++#define LANG_HOOKS_HANDLE_OPTION a68_handle_option ++ ++/* LANG_HOOKS_INIT_OPTIONS_STRUCT is called so the front-end can ++ change some default values in the compiler's option structure. */ ++ ++static void ++a68_init_options_struct (struct gcc_options *opts) ++{ ++ /* Operations are always wrapping in algol68, even on signed ++ integer. */ ++ opts->x_flag_wrapv = 1; ++ /* Do not warn for voiding by default. */ ++ opts->x_warn_algol68_voiding = 0; ++ /* Do not warn for usage of Algol 68 extensions by default. */ ++ opts->x_warn_algol68_extensions = 0; ++ /* Do not warn for potential scope violations by default. */ ++ opts->x_warn_algol68_scope = 0; ++ /* Do not warn for hidden declarations by default. */ ++ opts->x_warn_algol68_hidden_declarations = 0; ++ /* Enable assertions by default. */ ++ OPTION_ASSERT (&A68_JOB) = 1; ++ /* Disable run-time nil checking by default. */ ++ OPTION_NIL_CHECKING (&A68_JOB) = 0; ++ /* Enable run-time bounds checking by default. */ ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = 1; ++ opts->x_flag_assert = 1; ++ /* Allow GNU extensions by default. */ ++ OPTION_STRICT (&A68_JOB) = 0; ++ /* The default stropping regime is SUPPER. */ ++ OPTION_STROPPING (&A68_JOB) = SUPPER_STROPPING; ++} ++ ++#undef LANG_HOOKS_INIT_OPTIONS_STRUCT ++#define LANG_HOOKS_INIT_OPTIONS_STRUCT a68_init_options_struct ++ ++/* Deal with any options that imply the turning on/off of features. FILENAME ++ is the main input file passed on the command line. */ ++ ++static bool ++a68_post_options (const char **filename ATTRIBUTE_UNUSED) ++{ ++ /* -fbounds-check is equivalent to -fcheck=bounds */ ++ if (flag_bounds_check) ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = true; ++ ++ return false; ++} ++ ++#undef LANG_HOOKS_POST_OPTIONS ++#define LANG_HOOKS_POST_OPTIONS a68_post_options ++ ++/* LANG_HOOKS_PARSE_FILE is called to parse the input files. ++ ++ The input file names are available in the global variables ++ in_fnames and num_in_fnames, and this function is required to ++ create a complete parse tree from them in a global var, then ++ return. */ ++ ++MOIF_T *moif; ++ ++static void ++a68_parse_file (void) ++{ ++ if (num_in_fnames != 1) ++ fatal_error (UNKNOWN_LOCATION, ++ "exactly one source file must be specified on the command line"); ++ ++ /* Run the Mailloux parser. */ ++ a68_parser (in_fnames[0]); ++ ++ if (ERROR_COUNT (&A68_JOB) > 0) ++ goto had_errors; ++ ++ /* Generate dumps if so requested. */ ++ if (flag_a68_dump_modes) ++ a68_dump_modes (TOP_MOID (&A68_JOB)); ++ if (flag_a68_dump_ast) ++ a68_dump_parse_tree (TOP_NODE (&A68_JOB)); ++ ++ /* Lower modes to GENERIC. */ ++ a68_lower_moids (TOP_MOID (&A68_JOB)); ++ /* Lower the particular program. */ ++ a68_lower_top_tree (TOP_NODE (&A68_JOB)); ++ ++ if (ERROR_COUNT (&A68_JOB) > 0) ++ goto had_errors; ++ ++ /* Emit exports information for any compiled module in this packet. Note ++ this must be done after the low pass. */ ++ a68_do_exports (TOP_NODE (&A68_JOB)); ++ ++ /* Process all file scopes in this compilation, and the external_scope, ++ through wrapup_global_declarations. */ ++ for (unsigned int i = 0; i < vec_safe_length (A68_GLOBAL_DECLARATIONS); i++) ++ { ++ tree decl = vec_safe_address (A68_GLOBAL_DECLARATIONS)[i]; ++ wrapup_global_declarations (&decl, 1); ++ } ++ ++ had_errors: ++ errorcount += ERROR_COUNT (&A68_JOB); ++} ++ ++#undef LANG_HOOKS_PARSE_FILE ++#define LANG_HOOKS_PARSE_FILE a68_parse_file ++ ++/* This hook is called for every GENERIC tree that gets gimplified. ++ Its purpose is to gimplify language specific trees. ++ ++ At the moment we are not supporting any Algol 68 specific tree, so ++ we just return FALSE. */ ++ ++static int ++a68_gimplify_expr (tree *expr_p ATTRIBUTE_UNUSED, ++ gimple_seq *pre_p ATTRIBUTE_UNUSED, ++ gimple_seq *post_p ATTRIBUTE_UNUSED) ++{ ++ return false; ++} ++ ++#undef LANG_HOOKS_GIMPLIFY_EXPR ++#define LANG_HOOKS_GIMPLIFY_EXPR a68_gimplify_expr ++ ++/* This function shall return the printable name of the language. */ ++ ++static const char * ++a68_printable_name (tree decl, int kind ATTRIBUTE_UNUSED) ++{ ++ tree decl_name = DECL_NAME (decl); ++ ++ if (decl_name == NULL_TREE) ++ return ""; ++ else ++ return IDENTIFIER_POINTER (decl_name); ++} ++ ++#undef LANG_HOOKS_DECL_PRINTABLE_NAME ++#define LANG_HOOKS_DECL_PRINTABLE_NAME a68_printable_name ++ ++ ++/* Return true if a warning should be given about option OPTION, which is for ++ the wrong language, false if it should be quietly ignored. */ ++ ++static bool ++a68_complain_wrong_lang_p (const struct cl_option *option ATTRIBUTE_UNUSED) ++{ ++ return false; ++} ++ ++#undef LANG_HOOKS_COMPLAIN_WRONG_LANG_P ++#define LANG_HOOKS_COMPLAIN_WRONG_LANG_P a68_complain_wrong_lang_p ++ ++/* Create an expression whose value is that of EXPR, ++ converted to type TYPE. The TREE_TYPE of the value ++ is always TYPE. This function implements all reasonable ++ conversions; callers should filter out those that are ++ not permitted by the language being compiled. ++ ++ Note that this function is not used outside the front-end. This front-end ++ doesn't currently use it at all. */ ++ ++tree convert (tree type ATTRIBUTE_UNUSED, ++ tree expr ATTRIBUTE_UNUSED) ++{ ++ gcc_unreachable (); ++} ++ ++/* Implements the lang_hooks.types_compatible_p routine for Algol 68. ++ Compares two types for equivalence in Algol 68. ++ This routine should only return 1 if it is sure, even though the frontend ++ should have already ensured that all types are compatible before handing ++ over the parsed ASTs to the code generator. */ ++ ++static int ++a68_types_compatible_p (tree x, tree y) ++{ ++ MOID_T *mode_x = a68_type_moid (x); ++ MOID_T *mode_y = a68_type_moid (y); ++ ++ if (mode_x != NO_MOID && mode_y != NO_MOID) ++ return a68_is_equal_modes (mode_x, mode_y, SAFE_DEFLEXING); ++ ++ return false; ++} ++ ++#undef LANG_HOOKS_TYPES_COMPATIBLE_P ++#define LANG_HOOKS_TYPES_COMPATIBLE_P a68_types_compatible_p ++ ++/* Get a value for the SARIF v2.1.0 "artifact.sourceLanguage" property. Algol ++ 68 is not yet listed in SARIF v2.1.0 Appendix J, but if/when it does, it ++ will likely use this string. */ ++ ++const char * ++a68_get_sarif_source_language (const char *) ++{ ++ return "algol68"; ++} ++ ++#undef LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE ++#define LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE a68_get_sarif_source_language ++ ++/* Expands all LANG_HOOKS_x o GCC. */ ++struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; ++ ++#include "gt-algol68-a68-lang.h" ++#include "gtype-algol68.h" +--- /dev/null ++++ b/src/gcc/algol68/a68-low-bits.cc +@@ -0,0 +1,297 @@ ++/* Lowering routines for all things related to BITS values. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielind of SKIP for the given BITS mode. */ ++ ++tree ++a68_get_bits_skip_tree (MOID_T *m) ++{ ++ tree type; ++ ++ if (m == M_BITS) ++ type = a68_bits_type; ++ else if (m == M_LONG_BITS) ++ type = a68_long_bits_type; ++ else if (m == M_LONG_LONG_BITS) ++ type = a68_long_long_bits_type; ++ else if (m == M_SHORT_BITS) ++ type = a68_short_bits_type; ++ else if (m == M_SHORT_SHORT_BITS) ++ type = a68_short_short_bits_type; ++ else ++ gcc_unreachable (); ++ ++ return build_int_cst (type, 0); ++} ++ ++/* Given a BITS type, compute the number of bits that fit in a value of that ++ type. The result is an INT. */ ++ ++tree ++a68_bits_width (tree type) ++{ ++ return fold_convert (a68_int_type, TYPE_SIZE (type)); ++} ++ ++/* Given a BITS type, compute the maximum value that can be expressed with that ++ type. */ ++ ++tree ++a68_bits_maxbits (tree type) ++{ ++ return fold_convert (type, TYPE_MAX_VALUE (type)); ++} ++ ++/* Given a SIZETY INT value VAL, compute and return a SIZETY BITS reflecting ++ its constituent bits. ++ ++ In strict Algol 68 the BIN of a negative value is BITS (SKIP). ++ ++ In GNU 68 the BIN of a negative value is the constituent bits of the two's ++ complement of the value. */ ++ ++tree ++a68_bits_bin (MOID_T *m, tree val) ++{ ++ tree type = CTYPE (m); ++ ++ if (OPTION_STRICT (&A68_JOB)) ++ return a68_get_bits_skip_tree (m); ++ else ++ return fold_convert (type, val); ++} ++ ++/* Given a SIZETY BITS value BITS, compute and return the corresponding SIZETY ++ INT. ++ ++ In strict Algol 68 the ABS of a BITS value reflecting a bit pattern that ++ would correspond a negative integral value is INT (SKIP). ++ ++ In GNU 68 the ABS of a BITS value reflecting a bit pattern that would ++ correspond a negative integral value is that negative integral value. */ ++ ++tree ++a68_bits_abs (MOID_T *m, tree bits) ++{ ++ tree type = CTYPE (m); ++ ++ if (OPTION_STRICT (&A68_JOB)) ++ { ++ tree integral_val = save_expr (fold_convert (type, bits)); ++ return fold_build3 (COND_EXPR, ++ type, ++ fold_build2 (LT_EXPR, type, integral_val, ++ build_int_cst (type, 0)), ++ a68_get_int_skip_tree (m), ++ integral_val); ++ } ++ else ++ return fold_convert (type, bits); ++} ++ ++/* Given a SIZETY BITS value BITS, shorten it into a SIZETY BITS whose tree ++ type is TYPE. */ ++ ++tree ++a68_bits_shorten (tree type, tree bits) ++{ ++ /* This will truncate at the left, which is what is intended. */ ++ return fold_convert (type, bits); ++} ++ ++/* Given a SIZETY BITS value BITS, length it into a SIZETY BITS whose tree type ++ is TYPE. */ ++ ++tree ++a68_bits_leng (tree type, tree bits) ++{ ++ /* This will add zeroes to the left, which is what is intended. */ ++ return fold_convert (type, bits); ++} ++ ++/* Given a SIZETY BITS value BITS, compute and return a new SIZETY BITS whose ++ bits are the logical negation of the bits of BITS. */ ++ ++tree ++a68_bits_not (tree bits) ++{ ++ return fold_build1 (BIT_NOT_EXPR, TREE_TYPE (bits), bits); ++} ++ ++/* Given two SIZETY BITS values BITS1 and BITS2, compute and return a new ++ SIZETY BITS whose bits are the `and' of the bits of BITS1 and ++ BITS2. */ ++ ++tree ++a68_bits_and (tree bits1, tree bits2) ++{ ++ return fold_build2 (BIT_AND_EXPR, TREE_TYPE (bits1), bits1, bits2); ++} ++ ++/* Given two SIZETY BITS values BITS1 and BITS2, compute and return a new ++ SIZETY BITS whose bits are the inclusive-or of the bits of BITS1 and ++ BITS2. */ ++ ++tree ++a68_bits_ior (tree bits1, tree bits2) ++{ ++ return fold_build2 (BIT_IOR_EXPR, TREE_TYPE (bits1), bits1, bits2); ++} ++ ++/* Given two SIZETY BITS values BITS1 and BITS2, compute and return a new ++ SIZETY BITS whose bits are the exclusive-or of the bits of BITS1 and ++ BITS2. */ ++ ++tree ++a68_bits_xor (tree bits1, tree bits2) ++{ ++ return fold_build2 (BIT_XOR_EXPR, TREE_TYPE (bits1), bits1, bits2); ++} ++ ++/* Given a position POS of mode INT and a BITS of mode SIZETY BITS, return a ++ BOOL reflecting the state of the bit occupying the position POS in BITS. ++ ++ If POS is out of range a run-time error is emitted. */ ++ ++tree ++a68_bits_elem (NODE_T *p, tree pos, tree bits) ++{ ++ pos = save_expr (pos); ++ tree one = build_int_cst (TREE_TYPE (bits), 1); ++ ++ tree shift = fold_build2 (MINUS_EXPR, bitsizetype, ++ TYPE_SIZE (TREE_TYPE (bits)), ++ fold_convert (bitsizetype, pos)); ++ tree elem = fold_build2 (EQ_EXPR, ++ a68_bool_type, ++ fold_build2 (BIT_AND_EXPR, ++ TREE_TYPE (bits), ++ fold_build2 (RSHIFT_EXPR, ++ TREE_TYPE (bits), ++ bits, shift), ++ one), ++ one); ++ ++ /* Do bounds checking if requested. */ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ { ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_BITSBOUNDSERROR, ++ void_type_node, 3, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ fold_convert (ssizetype, pos)); ++ tree check = fold_build2 (TRUTH_AND_EXPR, integer_type_node, ++ fold_build2 (GT_EXPR, integer_type_node, ++ pos, fold_convert (TREE_TYPE (pos), integer_zero_node)), ++ fold_build2 (LE_EXPR, integer_type_node, ++ fold_convert (bitsizetype, pos), ++ TYPE_SIZE (TREE_TYPE (bits)))); ++ ++ check = fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ ssizetype, ++ check, ++ fold_build2 (COMPOUND_EXPR, a68_bool_type, ++ call, boolean_false_node)); ++ elem = fold_build2 (COMPOUND_EXPR, a68_bool_type, ++ check, elem); ++ } ++ ++ return elem; ++} ++ ++/* Given two SIZETY BITS values BITS1 and BITS2, return a BOOL value indicating ++ whether all the bits set in BITS1 are also set in BITS2. */ ++ ++tree ++a68_bits_subset (tree bits1, tree bits2) ++{ ++ /* We compute this operation with `A | B == B' as specified by the Report */ ++ bits2 = save_expr (bits2); ++ return fold_build2 (EQ_EXPR, a68_bool_type, ++ fold_build2 (BIT_IOR_EXPR, TREE_TYPE (bits1), bits1, bits2), ++ bits2); ++} ++ ++/* Rotate the bits in BITS SHIFT bits to the left if SHIFT is positive, or ABS ++ (SHIFT) bits to the right if SHIFT is negative. ++ ++ A run-time error is raised if the count overflows the BITS value. */ ++ ++tree ++a68_bits_shift (tree shift, tree bits) ++{ ++ shift = save_expr (shift); ++ bits = save_expr (bits); ++ return fold_build3 (COND_EXPR, ++ TREE_TYPE (bits), ++ fold_build2 (GE_EXPR, TREE_TYPE (shift), ++ shift, build_int_cst (TREE_TYPE (shift), 0)), ++ fold_build2 (LSHIFT_EXPR, TREE_TYPE (bits), ++ bits, shift), ++ fold_build2 (RSHIFT_EXPR, TREE_TYPE (bits), ++ bits, ++ fold_build1 (ABS_EXPR, TREE_TYPE (shift), shift))); ++} ++ ++/* Given two bits values, build an expression that calculates whether A = B. */ ++ ++tree ++a68_bits_eq (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two bits values, build an expression that calculates whether A /= ++ B. */ ++ ++tree ++a68_bits_ne (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-bools.cc +@@ -0,0 +1,77 @@ ++/* Lowering routines for all things related to BOOL values. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielind of SKIP of a BOOL mode. */ ++ ++tree ++a68_get_bool_skip_tree (void) ++{ ++ return build_int_cst (a68_bool_type, 0); ++} ++ ++/* The absolute value of a BOOL is a non-zero INT for TRUE and zero for ++ FALSE. */ ++ ++tree ++a68_bool_abs (tree val) ++{ ++ return fold_convert (a68_int_type, val); ++} ++ ++/* Given two boolean values, build an expression that calculates whether A = B. */ ++ ++tree ++a68_bool_eq (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two boolean values, build an expression that calculates whether A /= ++ B. */ ++ ++tree ++a68_bool_ne (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-builtins.cc +@@ -0,0 +1,533 @@ ++/* GCC built-ins support for Algol 68. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Define a built-in function. */ ++ ++static void ++local_define_builtin (const char *name, tree type, enum built_in_function code, ++ const char *library_name, int ecf_flags) ++{ ++ tree decl; ++ ++ decl = add_builtin_function (name, type, code, BUILT_IN_NORMAL, ++ library_name, NULL_TREE); ++ set_call_expr_flags (decl, ecf_flags); ++ set_builtin_decl (code, decl, true); ++} ++ ++/* Install the GCC built-ins so the front-end can use them. */ ++ ++void ++a68_install_builtins (void) ++{ ++ if (!builtin_decl_explicit_p (BUILT_IN_IROUNDF)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_iroundf", ftype, BUILT_IN_IROUNDF, ++ "iroundf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LROUNDF)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lroundf", ftype, BUILT_IN_LROUNDF, ++ "lroundf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLROUNDF)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llroundf", ftype, BUILT_IN_LLROUNDF, ++ "llroundf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_IROUND)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_iround", ftype, BUILT_IN_IROUND, ++ "iround", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LROUND)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lround", ftype, BUILT_IN_LROUND, ++ "lround", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLROUND)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llround", ftype, BUILT_IN_LLROUND, ++ "llround", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_IROUNDL)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_iroundl", ftype, BUILT_IN_IROUNDL, ++ "iroundl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LROUNDL)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lroundl", ftype, BUILT_IN_LROUNDL, ++ "lroundl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLROUNDL)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llroundl", ftype, BUILT_IN_LLROUNDL, ++ "llroundl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_IFLOORF)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_ifloorf", ftype, BUILT_IN_IFLOORF, ++ "ifloorf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LFLOORF)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lfloorf", ftype, BUILT_IN_LFLOORF, ++ "lfloorf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLFLOORF)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llfloorf", ftype, BUILT_IN_LLFLOORF, ++ "llfloorf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_IFLOOR)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_ifloor", ftype, BUILT_IN_IFLOOR, ++ "ifloor", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LFLOOR)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lfloor", ftype, BUILT_IN_LFLOOR, ++ "lfloor", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLFLOOR)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llfloor", ftype, BUILT_IN_LLFLOOR, ++ "llfloor", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_IFLOORL)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_ifloorl", ftype, BUILT_IN_IFLOORL, ++ "ifloorl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LFLOORL)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lfloorl", ftype, BUILT_IN_LFLOORL, ++ "lfloorl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLFLOORL)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llfloorl", ftype, BUILT_IN_LLFLOORL, ++ "llfloorl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POWF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, ++ float_type_node, float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_powf", ftype, BUILT_IN_POWF, ++ "powf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POWIF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, ++ float_type_node, integer_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_powif", ftype, BUILT_IN_POWIF, ++ "powif", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POW)) ++ { ++ tree ftype = build_function_type_list (double_type_node, ++ double_type_node, double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_pow", ftype, BUILT_IN_POW, ++ "pow", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POWI)) ++ { ++ tree ftype = build_function_type_list (double_type_node, ++ double_type_node, integer_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_powi", ftype, BUILT_IN_POWI, ++ "powi", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POWL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_powl", ftype, BUILT_IN_POWL, ++ "powl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POWIL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, integer_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_powil", ftype, BUILT_IN_POWIL, ++ "powil", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_CALLOC)) ++ { ++ tree ftype = build_function_type_list (ptr_type_node, ++ size_type_node, size_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_calloc", ftype, BUILT_IN_CALLOC, ++ "calloc", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_MEMCPY)) ++ { ++ tree ftype = build_function_type_list (ptr_type_node, ++ ptr_type_node, const_ptr_type_node, size_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_memcpy", ftype, BUILT_IN_MEMSET, ++ "memcpy", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_MEMSET)) ++ { ++ tree ftype = build_function_type_list (ptr_type_node, ++ ptr_type_node, integer_type_node, size_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_memset", ftype, BUILT_IN_MEMSET, ++ "memset", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SQRTF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_sqrtf", ftype, BUILT_IN_SQRTF, ++ "sqrtf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SQRT)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_sqrt", ftype, BUILT_IN_SQRT, ++ "sqrt", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SQRTL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_sqrtl", ftype, BUILT_IN_SQRTL, ++ "sqrtl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_TANF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_tanf", ftype, BUILT_IN_TANF, ++ "tanf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_TAN)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_tan", ftype, BUILT_IN_TAN, ++ "tan", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_TANL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_tanl", ftype, BUILT_IN_TANL, ++ "tanl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SINF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_sinf", ftype, BUILT_IN_SINF, ++ "sinf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SIN)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_sin", ftype, BUILT_IN_SIN, ++ "sin", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SINL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_sinl", ftype, BUILT_IN_SINL, ++ "sinl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_COSF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_cosf", ftype, BUILT_IN_COSF, ++ "cosf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_COS)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_cos", ftype, BUILT_IN_COS, ++ "cos", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_COSL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_cosl", ftype, BUILT_IN_COSL, ++ "cosl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ACOSF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_acosf", ftype, BUILT_IN_ACOSF, ++ "acosf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ACOS)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_acos", ftype, BUILT_IN_ACOS, ++ "acos", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ACOSL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_acosl", ftype, BUILT_IN_ACOSL, ++ "acosl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ASINF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_asinf", ftype, BUILT_IN_ASINF, ++ "asinf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ASIN)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_asin", ftype, BUILT_IN_ASIN, ++ "asin", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ASINL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_asinl", ftype, BUILT_IN_ASINL, ++ "asinl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ATANF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_atanf", ftype, BUILT_IN_ATANF, ++ "atanf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ATAN)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_atan", ftype, BUILT_IN_ATAN, ++ "atan", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ATANL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_atanl", ftype, BUILT_IN_ATANL, ++ "atanl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOGF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_logf", ftype, BUILT_IN_LOGF, ++ "logf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOG)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_log", ftype, BUILT_IN_LOG, ++ "log", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOGL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_logl", ftype, BUILT_IN_LOGL, ++ "logl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOG10F)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_log10f", ftype, BUILT_IN_LOG10F, ++ "log10f", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOG10)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_log10", ftype, BUILT_IN_LOG10, ++ "log10", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOG10L)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_log10l", ftype, BUILT_IN_LOG10L, ++ "log10l", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_EXPF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_expf", ftype, BUILT_IN_EXPF, ++ "expf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_EXP)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_exp", ftype, BUILT_IN_EXP, ++ "exp", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_EXPL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_expl", ftype, BUILT_IN_EXPL, ++ "expl", ECF_NOTHROW | ECF_LEAF); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-chars.cc +@@ -0,0 +1,170 @@ ++/* Lowering routines for all things related to STRINGs. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielind of SKIP of a CHAR mode. */ ++ ++tree ++a68_get_char_skip_tree (void) ++{ ++ return build_int_cst (a68_char_type, ' '); ++} ++ ++/* Return the maximum valid character code that can be stored in a CHAR. */ ++tree ++a68_char_max (void) ++{ ++ /* 0x10FFFF is the maximum valid code point in Unicode. */ ++ return build_int_cst (a68_char_type, 0x10FFFF); ++} ++ ++/* Given an integral value, if it denotes a char code build the corresponding ++ CHAR. Otherwise raise a run-time error. */ ++ ++tree ++a68_char_repr (NODE_T *p, tree val) ++{ ++ /* UCS-4 (UTF-32) encodes the Unicode code points using the identity ++ function. Valid code points are in the ranges [U+0000,U+D7FF] and ++ [U+E000,U+10FFFF]. */ ++ ++ tree c = save_expr (val); ++ tree val_type = TREE_TYPE (val); ++ ++ /* (c >= 0 && c < 0xd800) */ ++ tree range1 = fold_build2 (TRUTH_AND_EXPR, integer_type_node, ++ fold_build2 (GE_EXPR, integer_type_node, ++ c, fold_convert (val_type, integer_zero_node)), ++ fold_build2 (LT_EXPR, integer_type_node, ++ c, build_int_cst (val_type, 0xd800))); ++ /* (c >= 0xe000 && c < 0x110000) */ ++ tree range2 = fold_build2 (TRUTH_AND_EXPR, integer_type_node, ++ fold_build2 (GE_EXPR, integer_type_node, ++ c, build_int_cst (val_type, 0xe000)), ++ fold_build2 (LT_EXPR, integer_type_node, ++ c, build_int_cst (val_type, 0x110000))); ++ tree notvalid = fold_build1 (TRUTH_NOT_EXPR, ++ integer_type_node, ++ fold_build2 (TRUTH_OR_EXPR, integer_type_node, ++ range1, range2)); ++ ++ /* Call to the runtime run-time error handler. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_INVALIDCHARERROR, ++ void_type_node, 3, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ fold_convert (a68_int_type, c)); ++ ++ /* Return the REPR of the given integer value, or raise run-time error. */ ++ return fold_build2 (COMPOUND_EXPR, a68_char_type, ++ fold_build3 (COND_EXPR, integer_type_node, ++ notvalid, ++ call, integer_zero_node), ++ fold_convert (a68_char_type, c)); ++} ++ ++/* the ABS of a CHAR is an INT containing an unique value for each permissable ++ char value. */ ++ ++tree ++a68_char_abs (tree val) ++{ ++ return fold_convert (a68_int_type, val); ++} ++ ++/* Given two characters, build an expression that calculates whether A = B. */ ++ ++tree ++a68_char_eq (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two characters, build an expression that calculates whether A /= ++ B. */ ++ ++tree ++a68_char_ne (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two characters, build an expression that calculates ++ whether A < B. */ ++ ++tree ++a68_char_lt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two characters, build an expression that calculates ++ whether A <= B. */ ++ ++tree ++a68_char_le (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two characters, build an expression that calculates ++ whether A > B. */ ++ ++tree ++a68_char_gt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two characters, build an expression that calculates ++ whether A >= B. */ ++ ++tree ++a68_char_ge (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GE_EXPR, boolean_type_node, a, b); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-clauses.cc +@@ -0,0 +1,1480 @@ ++/* Lower clauses to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Given a serial_clause node P, return whether it performs dynamic stack ++ allocations. ++ ++ This function allocates for the fact that the bottom-up parser generates ++ successively nested serial clauses like ++ ++ SERIAL_CLAUSE ++ SERIAL_CLAUSE ++ ... ++ ++ the outer of which corresponds to a single serial clause in the source code, ++ but it is the inner ones annotated by the dsa pass. */ ++ ++static bool ++serial_clause_dsa (NODE_T *p) ++{ ++ NODE_T *s = NEXT (SUB (p)); ++ ++ for (s = p; SUB (s) && IS (s, SERIAL_CLAUSE); s = SUB (s)) ++ { ++ if (DYNAMIC_STACK_ALLOCS (s)) ++ return true; ++ } ++ ++ return false; ++} ++ ++/* Lower one or more labels. ++ ++ label : defining identifier, colon symbol; ++ label, defining identifier, colon symbol; ++ ++ A label lowers into a LABEL_EXPR and the declaration of a LABEL_DECL in the ++ current block and bind. Lists of labels get returned in nested compound ++ expressions. */ ++ ++tree ++a68_lower_label (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree expr = NULL_TREE; ++ ++ if (IS (SUB (p), LABEL)) ++ expr = a68_lower_tree (SUB (p), ctx); ++ ++ NODE_T *defining_identifier; ++ ++ if (IS (SUB (p), DEFINING_IDENTIFIER)) ++ defining_identifier = SUB (p); ++ else ++ { ++ gcc_assert (IS (NEXT (SUB (p)), DEFINING_IDENTIFIER)); ++ defining_identifier = NEXT (SUB (p)); ++ } ++ ++ /* Create LABEL_DECL if necessary. */ ++ tree label_decl = TAX_TREE_DECL (TAX (defining_identifier)); ++ if (label_decl == NULL_TREE) ++ { ++ label_decl = build_decl (a68_get_node_location (defining_identifier), ++ LABEL_DECL, ++ a68_get_mangled_identifier (NSYMBOL (defining_identifier)), ++ void_type_node); ++ TAX_TREE_DECL (TAX (defining_identifier)) = label_decl; ++ } ++ ++ a68_add_decl (label_decl); ++ ++ /* Return the accummulated LABEL_EXPRs. */ ++ tree label_expr = build1 (LABEL_EXPR, void_type_node, label_decl); ++ if (expr) ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ void_type_node, ++ expr, label_expr); ++ else ++ return label_expr; ++} ++ ++/* Lower a labeled unit. ++ ++ labeled unit : label, unit. ++ ++ Lower the label, then the unit. Return them in a compound expression. */ ++ ++tree ++a68_lower_labeled_unit (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree label_expr = a68_lower_tree (SUB (p), ctx); ++ tree unit_expr = a68_lower_tree (NEXT (SUB (p)), ctx); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (unit_expr), ++ label_expr, unit_expr); ++} ++ ++/* Lower a completer. ++ ++ exit_symbol ++ ++ This handler replaces the last expression in stmt_list with a statement ++ assigning it to the clause result of the current serial clause, then jump to ++ the exit label of the current serial clause. Note that a completer is a ++ separator so stmt_list contains at least one expression at this point. Note ++ that a completer can only appear inside a serial clause. ++ ++ This function always returns NULL_TREE, so the traversing code shall always ++ be careful to travese on these nodes explicitly and ignore the returned ++ value. */ ++ ++tree ++a68_lower_completer (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ a68_add_completer (); ++ return NULL_TREE; ++} ++ ++/* Lower an initialiser series. ++ ++ Parse tree: ++ ++ initialiser series : serial clause, semi symbol, declaration list; ++ initialiser series, declaration list; ++ initialiser series, semi symbol, unit; ++ initialiser series, semi symbol, labeled unit; ++ initialiser series, semi symbol, declaration list. ++ ++ GENERIC: ++ ++ Traverse subtree adding units and labels to STMT_LIST, and declarations to ++ BLOCK. ++ ++ This function always returns NULL_TREE, so the traversing code shall always ++ be careful to travese on these nodes explicitly and ignore the returned ++ value. */ ++ ++tree ++a68_lower_initialiser_series (NODE_T *p, LOW_CTX_T ctx) ++{ ++ for (NODE_T *s = SUB (p); s != NO_NODE; FORWARD (s)) ++ { ++ if (!IS (s, SEMI_SYMBOL)) ++ a68_add_stmt (a68_lower_tree (s, ctx)); ++ } ++ return NULL_TREE; ++} ++ ++/* Lower a serial clause. ++ ++ serial clause : labeled unit; ++ unit; ++ serial clause, semi symbol, unit; ++ serial clause, exit symbol, labeled unit; ++ serial clause, semi_symbol, declaration list; ++ initialiser series, semi symbol, unit; ++ initialiser series, semi symbol, labeled unit. ++ ++ Ranges: ++ ++ serial-clause ++ ------------- R1 ++ ++ See the function body to see the lowering actions. ++ ++ This function always returns NULL_TREE, so the traversing code shall always ++ be careful to travese on these nodes explicitly and ignore the returned ++ value. */ ++ ++tree ++a68_lower_serial_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (IS (SUB (p), SERIAL_CLAUSE)) ++ { ++ /* Traverse down for side-effects. */ ++ (void) a68_lower_tree (SUB (p), ctx); ++ ++ if (IS (NEXT (SUB (p)), EXIT_SYMBOL)) ++ { ++ /* Traverse the completer for side-effects. This turns the last ++ expression in the current statements list into an assignment. */ ++ (void) a68_lower_tree (NEXT (SUB (p)), ctx); ++ /* Now append the result of the labeled unit to the current ++ statements list. */ ++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++ } ++ else ++ { ++ /* Append the result of either the unit or the declarations list in ++ the current statements list. */ ++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++ } ++ } ++ else if (IS (SUB (p), INITIALISER_SERIES)) ++ { ++ /* Traverse down for side-effects. */ ++ (void) a68_lower_tree (SUB (p), ctx); ++ ++ /* Append the result of either the unit or the declarations list in the ++ current statements list. */ ++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++ } ++ else ++ { ++ /* Append the result of either the unit or labeled unit in the current ++ statements list. */ ++ a68_add_stmt (a68_lower_tree (SUB (p), ctx)); ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a loop clause. ++ ++ loop clause : for part, from part, by part, to part, while part, alt do part; ++ for part, from part, by part, while part, alt do part; ++ for part, from part, while part, alt do part; ++ for part, by part, to part, while part, alt do part; ++ for part, by part, to part, while part, alt do part; ++ for part, by part, while part, alt do part; ++ for part, while part, alt do part; ++ for part, from part, by part, to part, alt do part; ++ for part, from part, by part, alt do part; ++ for part, from part, alt do part; ++ for part, by part, to part, alt do part; ++ for part, by part, alt do part; ++ for part, to part, alt do part, ++ for part, alt do part; ++ from part, by part, to part, while part, alt do part; ++ from part, by part, while aprt, alt do part; ++ from part, to part, while aprt, alt do part; ++ from part, while part, alt do part; ++ from part, by part, to part, alt do part; ++ from part, by part, alt do part; ++ from part, to part, alt do part; ++ from part, alt do part; ++ by part, to part, while part, alt do part; ++ by part, while part, alt do part; ++ by part, to part, alt do part; ++ by part, alt do part; ++ to part, while part, alt do part; ++ to part, alt do part; ++ while part, alt do part; ++ do part. ++*/ ++ ++tree ++a68_lower_loop_clause (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ NODE_T *s = SUB (p); ++ bool while_part = false; ++ bool has_iterator = false; ++ tree iterator = NULL_TREE; ++ tree while_condition = NULL_TREE; ++ tree do_part = NULL_TREE; ++ tree from_part = NULL_TREE; ++ tree by_part = NULL_TREE; ++ tree to_part = NULL_TREE; ++ tree overflow = NULL_TREE; ++ NODE_T *iterator_defining_identifier = NO_NODE; ++ ++ if (IS (s, FOR_PART)) ++ { ++ /* Get the defining identifier. */ ++ iterator_defining_identifier = NEXT (SUB (s)); ++ has_iterator = true; ++ FORWARD (s); ++ } ++ ++ if (IS (s, FROM_PART)) ++ { ++ /* Lower the unit. */ ++ from_part = a68_lower_tree (NEXT (SUB (s)), ctx); ++ has_iterator = true; ++ FORWARD (s); ++ } ++ ++ if (IS (s, BY_PART)) ++ { ++ /* Lower the unit. */ ++ by_part = a68_lower_tree (NEXT (SUB (s)), ctx); ++ has_iterator = true; ++ FORWARD (s); ++ } ++ ++ if (IS (s, TO_PART)) ++ { ++ /* Lower the unit. */ ++ to_part = a68_lower_tree (NEXT (SUB (s)), ctx); ++ has_iterator = true; ++ FORWARD (s); ++ } ++ ++ if (has_iterator) ++ { ++ /* Introduce a range that spans until the end of the loop clause. */ ++ a68_push_range (M_VOID); ++ ++ /* Compute some defaults for not specified loop parts. Note that to_part ++ defaults to max_int or min_int depending on the signedness of ++ by_part. */ ++ if (from_part == NULL_TREE) ++ from_part = integer_one_node; ++ if (by_part == NULL_TREE) ++ by_part = integer_one_node; ++ if (to_part == NULL_TREE) ++ { ++ to_part = fold_build3 (COND_EXPR, ++ a68_bool_type, ++ fold_build2 (LT_EXPR, a68_int_type, by_part, ++ build_int_cst (a68_int_type, 0)), ++ a68_int_minval (a68_int_type), ++ a68_int_maxval (a68_int_type)); ++ } ++ ++ /* If the user has specified an explicit iterator in the form of a ++ defining-identifier in a for-part, use it as the name in the iterator ++ declaration and install the resulting declaration in the taxes table ++ in order for applied identifiers in the rest of the loop to find it. ++ Otherwise, the iterator is not directly accessible by the ++ programmer. */ ++ const char *iterator_name = (iterator_defining_identifier == NO_NODE ++ ? "iterator%" ++ : NSYMBOL (iterator_defining_identifier)); ++ iterator = a68_lower_tmpvar (iterator_name, a68_int_type, from_part); ++ if (iterator_defining_identifier != NO_NODE) ++ TAX_TREE_DECL (TAX (iterator_defining_identifier)) = iterator; ++ ++ /* The from_part and to_part expressions shall be evaluated once and once ++ only. The expression for from_part is evaluated only once in the ++ initialization expression for iterator% above, but we need to put ++ to_part in a temporary since it is used in the loop body. */ ++ to_part = a68_lower_tmpvar ("to_part%", TREE_TYPE (to_part), to_part); ++ ++ /* We need to detect overflow/underflow of the iterator. */ ++ overflow = a68_lower_tmpvar ("overflow%", boolean_type_node, ++ boolean_false_node); ++ } ++ ++ if (IS (s, WHILE_PART)) ++ { ++ while_part = true; ++ /* Introduce a range that spans until the end of the loop clause. */ ++ a68_push_range (M_VOID); ++ /* Process the enquiry clause, which yields a BOOL. */ ++ a68_push_stmt_list (M_BOOL); ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ while_condition = a68_pop_stmt_list (); ++ FORWARD (s); ++ } ++ ++ /* DO part. */ ++ gcc_assert (IS (s, ALT_DO_PART) || IS (s, DO_PART)); ++ ++ /* Build the loop's body. */ ++ a68_push_range (NULL); ++ { ++ /* First lower the loop exit condition. */ ++ if (has_iterator || while_part) ++ { ++ tree exit_condition = NULL_TREE; ++ /* IF overflow OREL (by_part < 0 THEN iterator < to_part ELSE iterator > to_part) FI */ ++ if (has_iterator) ++ exit_condition = fold_build2 (TRUTH_ORIF_EXPR, boolean_type_node, ++ overflow, ++ fold_build3 (COND_EXPR, ++ a68_bool_type, ++ fold_build2 (LT_EXPR, a68_int_type, by_part, ++ build_int_cst (a68_int_type, 0)), ++ fold_build2 (LT_EXPR, a68_int_type, ++ iterator, to_part), ++ fold_build2 (GT_EXPR, a68_int_type, ++ iterator, to_part))); ++ /* NOT while_condition */ ++ if (while_part) ++ { ++ tree while_exit_condition = fold_build1 (TRUTH_NOT_EXPR, ++ a68_bool_type, ++ while_condition); ++ if (has_iterator) ++ exit_condition = fold_build2 (TRUTH_ORIF_EXPR, a68_bool_type, ++ exit_condition, while_exit_condition); ++ else ++ exit_condition = while_exit_condition; ++ } ++ ++ if (exit_condition != NULL_TREE) ++ a68_add_stmt (fold_build1 (EXIT_EXPR, void_type_node, exit_condition)); ++ } ++ ++ /* Serial clauses in DO .. OD do not yield any value. */ ++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); ++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; ++ a68_push_serial_clause_range (M_VOID, dsa && local); ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ do_part = a68_pop_serial_clause_range (); ++ a68_add_stmt (do_part); ++ ++ if (has_iterator) ++ { ++ /* Increment the iterator by BY_PART. Detect overflow. ++ Given a + b = sum, overflows = ((~((a) ^ (b)) & ((a) ^ (sum))) < 0) ++ See OVERFLOW_SUM_SIGN in double-int.cc for an explanation ++ of this formula. ++ */ ++ tree type = TREE_TYPE (iterator); ++ tree a = iterator; ++ tree b = save_expr (by_part); ++ tree sum = fold_build2 (PLUS_EXPR, type, a, b); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, boolean_type_node, ++ overflow, ++ fold_build2 (LT_EXPR, boolean_type_node, ++ fold_build2 (BIT_AND_EXPR, type, ++ fold_build1 (BIT_NOT_EXPR, type, ++ fold_build2 (BIT_XOR_EXPR, type, ++ a, b)), ++ fold_build2 (BIT_XOR_EXPR, type, ++ a, sum)), ++ build_int_cst (a68_int_type, 0)))); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, type, iterator, sum)); ++ } ++ } ++ tree loop_body = a68_pop_range (); ++ ++ /* Finally build the LOOP_EXPR and exit the introduced ranges. */ ++ tree loop_clause = fold_build1_loc (a68_get_node_location (p), ++ LOOP_EXPR, a68_void_type, loop_body); ++ if (while_part) ++ { ++ a68_add_stmt (loop_clause); ++ loop_clause = a68_pop_range (); ++ } ++ if (has_iterator) ++ { ++ a68_add_stmt (loop_clause); ++ loop_clause = a68_pop_range (); ++ } ++ ++ return loop_clause; ++} ++ ++/* Lower a conformity clause. ++ ++ conformity clause : case part, conformity in part, out part, esac symbol; ++ case part, conformity in part, esac symbol; ++ case part, conformity in part, conformity ouse part; ++ open part, conformity choice, choice, close symbol; ++ open part, conformity choice, close symbol; ++ open part, conformity choice, brief conformity ouse part. ++ ++ conformity choice : then bar symbol, specified unit list; ++ then bar symbol, specified unit. ++ ++ specified unit list : specified unit list, comma symbol, specified unit; ++ specified unit list, specified unit. ++ ++ specified unit : specifier, colon symbol, unit. ++ ++ specifier : open symbol, declarer, identifier, close symbol; ++ open symbol, declarer, close symbol; ++ open symbol, void symbol, close symbol. ++*/ ++ ++static void ++lower_unite_case_unit (NODE_T *p, ++ tree enquiry, MOID_T *enquiry_mode, ++ tree result, tree exit_label, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, SPECIFIER)) ++ { ++ MOID_T *spec_moid = MOID (NEXT (SUB (p))); ++ NODE_T *spec_identifier = NEXT (NEXT (SUB (p))); ++ NODE_T *spec_unit = NEXT (NEXT (p)); ++ const char *specifier_identifier_name = NULL; ++ if (IS (spec_identifier, IDENTIFIER)) ++ specifier_identifier_name = NSYMBOL (spec_identifier); ++ ++ tree overhead = a68_union_overhead (enquiry); ++ tree spec_value = NULL_TREE; ++ tree entry_selected = NULL_TREE; ++ if (IS_UNION (spec_moid)) ++ { ++ /* The spec_moid is an united mode, which must be unitable to the ++ enquiry_mode. */ ++ gcc_assert (a68_is_unitable (spec_moid, enquiry_mode, ++ SAFE_DEFLEXING)); ++ ++ /* Build the entry_selected expression. ++ ++ For each mode in spec_moid, determine the corresponding index ++ in enquiry_mode and add a check for it to the expression. */ ++ for (PACK_T *pack = PACK (spec_moid); pack != NO_PACK; FORWARD (pack)) ++ { ++ int index = a68_united_mode_index (enquiry_mode, MOID (pack)); ++ tree expr = fold_build2 (EQ_EXPR, ++ boolean_type_node, ++ overhead, ++ build_int_cst (TREE_TYPE (overhead), index)); ++ if (entry_selected == NULL_TREE) ++ entry_selected = expr; ++ else ++ entry_selected = fold_build2 (TRUTH_OR_EXPR, ++ boolean_type_node, ++ entry_selected, ++ expr); ++ } ++ ++ /* The spec_value is an union of mode spec_moid, with the ++ overhead translated from enquiry_mode. */ ++ tree spec_overhead ++ = a68_union_translate_overhead (enquiry_mode, overhead, spec_moid); ++ a68_push_range (spec_moid); ++ spec_value = a68_lower_tmpvar ("spec_value%", ++ CTYPE (spec_moid), ++ a68_get_skip_tree (spec_moid)); ++ a68_add_stmt (a68_union_set_overhead (spec_value, spec_overhead)); ++ tree from_cunion = a68_union_cunion (enquiry); ++ tree to_cunion = a68_union_cunion (spec_value); ++ a68_add_stmt (a68_lower_memcpy (fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (to_cunion)), ++ to_cunion), ++ fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (from_cunion)), ++ from_cunion), ++ size_in_bytes (TREE_TYPE (to_cunion)))); ++ a68_add_stmt (spec_value); ++ spec_value = a68_pop_range (); ++ } ++ else ++ { ++ int index = a68_united_mode_index (enquiry_mode, spec_moid); ++ spec_value = a68_union_alternative (enquiry, index); ++ entry_selected = fold_build2 (EQ_EXPR, ++ TREE_TYPE (overhead), ++ overhead, ++ build_int_cst (TREE_TYPE (overhead), index)); ++ } ++ ++ a68_push_range (M_VOID); ++ { ++ /* If the enquiry value is ascribed to an identifier in the case ++ entry then create a suitable declaration and turn the identifier ++ into a defining identifier. */ ++ if (specifier_identifier_name) ++ { ++ tree united_value = a68_lower_tmpvar (specifier_identifier_name, ++ CTYPE (spec_moid), spec_value); ++ TAX_TREE_DECL (TAX (spec_identifier)) = united_value; ++ } ++ ++ /* Set result% to the lowering of the unit and jump to the end of ++ the enquiry clause. */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), ++ result, a68_lower_tree (spec_unit, ctx))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, ++ void_type_node, ++ exit_label)); ++ a68_add_stmt (a68_get_skip_tree (M_VOID)); ++ } ++ tree process_entry = a68_pop_range (); ++ ++ /* IF index = overhead THEN process entry FI */ ++ a68_add_stmt (fold_build3 (COND_EXPR, ++ a68_void_type, ++ entry_selected, ++ process_entry, ++ a68_get_skip_tree (M_VOID))); ++ ++ FORWARD (p); /* Skip specifier. */ ++ FORWARD (p); /* Skip unit. */ ++ /* The unit is skipped in the for loop post-action. */ ++ } ++ else ++ lower_unite_case_unit (SUB (p), ++ enquiry, enquiry_mode, ++ result, exit_label, ctx); ++ } ++} ++ ++tree ++a68_lower_conformity_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *conformity_clause_mode = MOID (p); ++ ++ /* CASE or OUSE. */ ++ NODE_T *s = SUB (p); ++ NODE_T *enquiry_node = NEXT (SUB (s)); ++ MOID_T *enquiry_mode = MOID (SUB (s)); ++ ++ /* Push a binding environment for the enquiry clause. */ ++ a68_push_range (conformity_clause_mode); ++ ++ /* Process the enquiry clause and put the resulting value in enquiry%. */ ++ a68_push_stmt_list (enquiry_mode); ++ (void) a68_lower_tree (enquiry_node, ctx); ++ tree enquiry = a68_lower_tmpvar ("enquiry%", ++ CTYPE (enquiry_mode), ++ a68_pop_stmt_list ()); ++ ++ /* Create a decl for result%. */ ++ tree result = a68_lower_tmpvar ("result%", ++ CTYPE (conformity_clause_mode), ++ a68_get_skip_tree (conformity_clause_mode)); ++ ++ /* Create an exit label. */ ++ tree exit_label = build_decl (UNKNOWN_LOCATION, ++ LABEL_DECL, ++ get_identifier ("exit_label%"), ++ void_type_node); ++ DECL_CONTEXT (exit_label) = a68_range_context (); ++ a68_add_decl (exit_label); ++ a68_add_decl_expr (fold_build1 (DECL_EXPR, TREE_TYPE (exit_label), exit_label)); ++ ++ /* IN. */ ++ FORWARD (s); ++ lower_unite_case_unit (NEXT (SUB (s)), ++ enquiry, enquiry_mode, ++ result, exit_label, ctx); ++ ++ /* OUT. */ ++ FORWARD (s); ++ switch (ATTRIBUTE (s)) ++ { ++ case CHOICE: ++ case OUT_PART: ++ { ++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); ++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; ++ a68_push_serial_clause_range (conformity_clause_mode, dsa && local); ++ ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), ++ result, a68_pop_serial_clause_range ())); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ } ++ case CLOSE_SYMBOL: ++ case ESAC_SYMBOL: ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (result), ++ result, ++ a68_get_skip_tree (conformity_clause_mode))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ default: ++ /* Recurse. ++ ++ Note that the parser guarantees that the embedded CASE clause is a ++ conformity clause, and that its mode is the same than the containing ++ clause, but it doesn't annotate the mode in the tree node so we have ++ to do it here. */ ++ MOID (s) = conformity_clause_mode; ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (result), ++ result, ++ a68_lower_conformity_clause (s, ctx))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ } ++ ++ /* ESAC */ ++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, exit_label)); ++ a68_add_stmt (result); ++ return a68_pop_range (); ++} ++ ++/* Lower a case clause. ++ ++ case clause : open part, case choice clause, choice, close symbol; ++ open part, case choice clause, close symbol; ++ open part, case shoice clause, brief ouse part; ++ case part, case in part, out part, esac symbol; ++ case part, case in part, esac symbol; ++ case part, case in part, case ouse part; ++*/ ++ ++static void ++lower_int_case_unit (NODE_T *p, ++ tree enquiry, MOID_T *enquiry_mode, ++ tree result, tree exit_label, int *count, ++ LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ { ++ a68_push_range (M_VOID); ++ { ++ /* Set result% to the lowering of the unit and jump to the end of ++ the enquiry clause. */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), ++ result, a68_lower_tree (p, ctx))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, ++ void_type_node, ++ exit_label)); ++ a68_add_stmt (a68_get_skip_tree (M_VOID)); ++ } ++ tree process_entry = a68_pop_range (); ++ ++ /* IF count = enquiry THEN process entry FI */ ++ a68_add_stmt (fold_build3 (COND_EXPR, ++ a68_void_type, ++ fold_build2 (EQ_EXPR, ++ TREE_TYPE (enquiry), ++ enquiry, ++ build_int_cst (TREE_TYPE (enquiry), *count)), ++ process_entry, ++ a68_get_skip_tree (M_VOID))); ++ *count += 1; ++ } ++ else ++ lower_int_case_unit (SUB (p), ++ enquiry, enquiry_mode, ++ result, exit_label, count, ctx); ++ } ++} ++ ++tree ++a68_lower_case_clause (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ MOID_T *case_clause_mode = MOID (p); ++ ++ /* CASE or OUSE */ ++ NODE_T *s = SUB (p); ++ NODE_T *enquiry_node = NEXT (SUB (s)); ++ MOID_T *enquiry_mode = M_INT; ++ ++ /* Push a bingding environment fo the case clause. */ ++ a68_push_range (case_clause_mode); ++ ++ /* Process the enquiry clause and put the result value in enquiry%. */ ++ a68_push_stmt_list (enquiry_mode); ++ (void) a68_lower_tree (enquiry_node, ctx); ++ tree enquiry = a68_lower_tmpvar ("enquiry%", ++ CTYPE (enquiry_mode), ++ a68_pop_stmt_list ()); ++ /* Create a decl for result%. */ ++ tree result = a68_lower_tmpvar ("result%", ++ CTYPE (case_clause_mode), ++ a68_get_skip_tree (case_clause_mode)); ++ ++ /* Create an exit label. */ ++ tree exit_label = build_decl (UNKNOWN_LOCATION, ++ LABEL_DECL, ++ get_identifier ("exit_label%"), ++ void_type_node); ++ DECL_CONTEXT (exit_label) = a68_range_context (); ++ a68_add_decl (exit_label); ++ a68_add_decl_expr (fold_build1 (DECL_EXPR, TREE_TYPE (exit_label), exit_label)); ++ ++ /* IN. */ ++ FORWARD (s); ++ int count = 1; ++ lower_int_case_unit (NEXT (SUB (s)), ++ enquiry, enquiry_mode, ++ result, exit_label, &count, ctx); ++ ++ /* OUT. */ ++ FORWARD (s); ++ switch (ATTRIBUTE (s)) ++ { ++ case CHOICE: ++ case OUT_PART: ++ { ++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); ++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; ++ a68_push_serial_clause_range (case_clause_mode, dsa && local); ++ ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), ++ result, a68_pop_serial_clause_range ())); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ } ++ case CLOSE_SYMBOL: ++ case ESAC_SYMBOL: ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (result), ++ result, ++ a68_get_skip_tree (case_clause_mode))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ default: ++ /* Recurse. ++ ++ Note that the parser guarantees that the embedded CASE clause has the ++ same mode than the containing clause, but it doesn't annotate the OUSE ++ node with its mode so we have to do it here. */ ++ MOID (s) = case_clause_mode; ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (result), ++ result, ++ a68_lower_case_clause (s, ctx))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ } ++ ++ /* ESAC */ ++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, exit_label)); ++ a68_add_stmt (result); ++ return a68_pop_range (); ++} ++ ++/* Lower an enquiry clause. ++ ++ enquiry clause : unit; ++ enquiry clause, semi symbol, unit; ++ enquiry clause, comma symbol, unit; ++ initialiser series, semi symbol, unit. ++ ++ The units and declarations in the enquiry clause get lowered into ++ expressions and declaration nodes which are added to the current serial ++ clause. ++ ++ This function always returns NULL_TREE, so the traversing code shall always ++ be careful to travese on these nodes explicitly and ignore the returned ++ value. */ ++ ++tree ++a68_lower_enquiry_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (IS (SUB (p), UNIT)) ++ { ++ a68_add_stmt (a68_lower_tree (SUB (p), ctx)); ++ } ++ else if (IS (SUB (p), ENQUIRY_CLAUSE)) ++ { ++ (void) a68_lower_tree (SUB (p), ctx); ++ gcc_assert (IS (NEXT (NEXT (SUB (p))), UNIT)); ++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++ } ++ else ++ { ++ gcc_assert (IS (SUB (p), INITIALISER_SERIES)); ++ gcc_assert (IS (NEXT (NEXT (SUB (p))), UNIT)); ++ (void) a68_lower_tree (SUB (p), ctx); ++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a conditional clause. ++ ++ conditional clause : open part, choice, choice, close symbol; ++ open part, choice, close symbol; ++ open part, choice, brief elif part; ++ if part, then part, else part, fi symbol; ++ if part, then part, elif part; ++ if part, then part, fi symbol. ++ ++ if part : if symbol, enquiry clause; ++ if symbol, initialiser series. ++ ++ then part : then symbol, serial clause; ++ then symbol, initialiser series. ++ ++ elif part : elif if part, then part, else part, fi symbol; ++ elif if part, then part, fi symbol; ++ elif if part, then part, elif part. ++ ++ else part : else symbol, serial clause; ++ else symbol, initialiser series. ++ ++ elif if part : elif symbol, enquiry clause. ++ ++ open part : open symbol, enquiry clause. ++ ++ choice : then bar symbol, serial clause; ++ then bar symbol initialiser series. ++ ++ brief elif part : else open part, choice, choice, close symbol; ++ else open part, choice, close symbol; ++ else open part, choice, bief elif part. ++ ++ else open part : else bar symbol, enquiry clause; ++ else bar symbol, initialiser series. ++ ++ Ranges: ++ ++ IF enquiry-clause THEN expr ELSE expr FI ++ --- R2 ---- R3 ++ ---------------------------------------- R1 ++ ++ The conditional clause lowers into: ++ ++ BIND_EXPR ++ BIND_EXPR_VARS -> delcls in enquiry clause. ++ BIND_EXPR_BODY ++ STMT_LIST ++ enquiry% = ...; ++ COND_EXPR (enquiry%, then_expr, else_expr) */ ++ ++tree ++a68_lower_conditional_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree then_expr = NULL_TREE; ++ tree else_expr = NULL_TREE; ++ ++ MOID_T *conditional_clause_mode = MOID (p); ++ MOID_T *effective_rows_mode = NO_MOID; ++ bool is_rows = false; ++ ++ /* Push a binding environment for the conditional. */ ++ a68_push_range (is_rows ? effective_rows_mode : conditional_clause_mode); ++ ++ /* Create a decl for %enquiry and add it to the bind's declaration chain. */ ++ tree enquiry_decl = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, ++ NULL, /* Set below. */ ++ a68_bool_type); ++ char *enquiry_name = xasprintf ("enquiry%d%%", DECL_UID(enquiry_decl)); ++ DECL_NAME (enquiry_decl) = get_identifier (enquiry_name); ++ free (enquiry_name); ++ DECL_INITIAL (enquiry_decl) = a68_get_skip_tree (M_BOOL); ++ a68_add_decl (enquiry_decl); ++ ++ /* Add a DECL_EXPR for enquiry_decl% */ ++ a68_add_stmt (fold_build1 (DECL_EXPR, a68_bool_type, enquiry_decl)); ++ ++ /* IF or ELIF part. */ ++ NODE_T *s = SUB (p); ++ ++ /* Process the enquiry clause. */ ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ ++ /* Assignation enquiry% = .. expr .. ++ Note that since no completers are allowed in enquiry clauses, ++ the last statement in the statement list has to be the unit ++ yielding the boolean value. */ ++ tree_stmt_iterator si = tsi_last (a68_range_stmt_list ()); ++ gcc_assert (TREE_TYPE (tsi_stmt (si)) != void_type_node); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, a68_bool_type, enquiry_decl, tsi_stmt (si))); ++ tsi_delink (&si); ++ ++ /* THEN part. */ ++ FORWARD (s); ++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); ++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; ++ a68_push_serial_clause_range (is_rows ? effective_rows_mode : conditional_clause_mode, ++ dsa && local); ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ then_expr = a68_pop_serial_clause_range (); ++ ++ /* ELSE part */ ++ FORWARD (s); ++ switch (ATTRIBUTE (s)) ++ { ++ case CHOICE: ++ case ELSE_PART: ++ { ++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); ++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; ++ a68_push_serial_clause_range (is_rows ? effective_rows_mode : conditional_clause_mode, ++ dsa && local); ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ else_expr = a68_pop_serial_clause_range (); ++ break; ++ } ++ case CLOSE_SYMBOL: ++ case FI_SYMBOL: ++ { ++ else_expr = a68_get_skip_tree (is_rows ? effective_rows_mode : conditional_clause_mode); ++ break; ++ } ++ default: ++ { ++ /* ELIF part. Recurse. */ ++ MOID (s) = conditional_clause_mode; ++ else_expr = a68_lower_conditional_clause (s, ctx); ++ } ++ } ++ ++ /* Build the conditional clause's COND_EXPR. */ ++ a68_add_stmt (fold_build3_loc (a68_get_node_location (p), ++ COND_EXPR, ++ CTYPE (is_rows ? effective_rows_mode : conditional_clause_mode), ++ enquiry_decl, ++ then_expr, else_expr)); ++ ++ return a68_pop_range (); ++} ++ ++/* Lower a comma separated list of zero, two, or more units ++ ++ unit list : unit list, comma symbol, unit; ++ unit list, unit. ++ ++ The list of units lowers into appending the units into the current ++ statements list. ++ ++ This function always returns NULL_TREE, so the traversing code shall always ++ be careful to traverse on these nodes explicitly and ignore the returned ++ value. */ ++ ++tree ++a68_lower_unit_list (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (IS (SUB (p), UNIT_LIST)) ++ (void) a68_lower_tree (SUB (p), ctx); ++ ++ for (NODE_T *s = SUB (p); s != NO_NODE; FORWARD (s)) ++ { ++ if (IS (s, UNIT)) ++ a68_add_stmt (a68_lower_tree (s, ctx)); ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a collateral clause. ++ ++ collateral clause : open symbol, unit list, close symbol; ++ open symbol, close symbol; ++ begin symbol, unit list, end symbol; ++ begin symbol, end symbol. ++ ++ An empty collateral clause lowers into EMPTY. */ ++ ++tree ++a68_lower_collateral_clause (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ bool clause_is_empty = (ATTRIBUTE (NEXT (SUB (p))) != UNIT_LIST); ++ MOID_T *mode = MOID (p); ++ ++ /* Lower the constituent units into a statements list. */ ++ a68_push_stmt_list (mode); ++ if (!clause_is_empty) ++ (void) a68_lower_tree (NEXT (SUB (p)), ctx); ++ tree units = a68_pop_stmt_list (); ++ ++ /* The collateral clause lowers to different constructions depending on its ++ nature. */ ++ if (mode == M_VOID) ++ { ++ /* A VOID-collateral-clause lowers into a STMT_LIST containing all ++ the units. Since there cannot be declarations in a collateral ++ clause, there is no need to introduce a new binding scope. Note ++ that for now we are not really elaborating collaterally, but ++ sequentially. */ ++ return units; ++ } ++ else if (IS_FLEXETY_ROW (mode) || mode == M_STRING) ++ { ++ if (mode == M_STRING) ++ mode = M_FLEX_ROW_CHAR; ++ ++ /* This is a row display. It lowers to a multiple. */ ++ tree row_type = CTYPE (mode); ++ size_t dim = DIM (DEFLEX (mode)); ++ ++ if (clause_is_empty) ++ { ++ /* The clause is empty. This lowers into a multiple with DIM ++ dimension, each dimension having bounds of 1:0, and no ++ elements. */ ++ tree element_pointer_type = a68_row_elements_pointer_type (row_type); ++ tree multiple_elements = build_int_cst (element_pointer_type, 0); ++ tree multiple_elements_size = size_zero_node; ++ ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); ++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); ++ for (size_t d = 0; d < dim; ++d) ++ { ++ lower_bounds[d] = ssize_one_node; ++ upper_bounds[d] = ssize_zero_node; ++ } ++ ++ tree row = a68_row_value (row_type, dim, ++ multiple_elements, ++ multiple_elements_size, ++ lower_bounds, upper_bounds); ++ TREE_CONSTANT (row) = 1; ++ free (lower_bounds); ++ free (upper_bounds); ++ return row; ++ } ++ ++ if (dim == 1) ++ { ++ /* Create a constructor with the multiple's elements. */ ++ vec *ve = NULL; ++ int num_units = 0; ++ for (tree_stmt_iterator si = tsi_start (units); !tsi_end_p (si); tsi_next (&si)) ++ { ++ tree unit = tsi_stmt (si); ++ if (A68_TYPE_HAS_ROWS_P (TREE_TYPE (unit))) ++ unit = a68_low_dup (unit); ++ CONSTRUCTOR_APPEND_ELT (ve, size_int (num_units), unit); ++ num_units += 1; ++ } ++ ++ tree element_pointer_type = a68_row_elements_pointer_type (row_type); ++ tree array_constructor_type = build_array_type (TREE_TYPE (element_pointer_type), ++ build_index_type (size_int (num_units - 1))); ++ tree array_constructor = build_constructor (array_constructor_type, ve); ++ tree multiple_elements = fold_build1 (ADDR_EXPR, ++ element_pointer_type, ++ array_constructor); ++ tree elements_type = TREE_TYPE (element_pointer_type); ++ tree multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_int (num_units), ++ size_in_bytes (elements_type)); ++ tree lower_bound = fold_convert (ssizetype, size_one_node); ++ tree upper_bound = ssize_int (num_units); ++ tree row = a68_row_value (row_type, dim, ++ multiple_elements, ++ multiple_elements_size, ++ &lower_bound, &upper_bound); ++ return row; ++ } ++ else ++ { ++ gcc_assert (dim > 1); ++ ++ /* The units in the collateral clause are multiples, whose elements ++ are to be copied consecutively in a new multiple. The descriptor ++ of this multiple is constructed as follows: ++ ++ The first dimension is: ++ ++ - The lower bound is 1. ++ - The upper bound is the number of sub-multiples processed ++ here. ++ - The stride is the number of elements in each sub-multiple ++ multiplied by the element size. ++ ++ Subsequent dimensions are taken from the first inner multiple. ++ All descriptors of the inner multiples shall be equal. This is ++ checked at run-time, and in case of discrepancy a run-time error ++ is emitted. ++ ++ Let's see an example. Suppose in the stmt-list we have: ++ ++ (1, 2, 3) ++ {triplets: {lb: 1 ub: 3 stride: 1S} elements: {1, 2, 3}} ++ (4, 5, 6) ++ {triplets: {lb: 1 ub: 3 stride: 1S} elements: {4, 5, 6}} ++ ++ The resulting multiple would be: ++ ++ ((1, 2, 3), (4, 5, 6)) ++ {triplets: {{lb: 1 ub: 2 stride: 3S}, {lb: 1 ub: 3 stride: 1S}} ++ elements: {1, 2, 3, 4, 5, 6}} */ ++ ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ size_t num_units = 0; ++ ++ for (tree_stmt_iterator si = tsi_start (units); !tsi_end_p (si); tsi_next (&si)) ++ num_units++; ++ ++ a68_push_range (mode); ++ ++ /* Process each sub-multiple. The first sub-multiple establishes the ++ bounds that all subsequent sub-multiples shall match. */ ++ tree multiple_elements = NULL_TREE; ++ tree multiple_elements_size = NULL_TREE; ++ tree sub_multiple = NULL_TREE; ++ // tree sub_multiple_lb = NULL_TREE; ++ // tree sub_multiple_ub = NULL_TREE; ++ // tree sub_multiple_stride = NULL_TREE; ++ tree index = a68_lower_tmpvar ("index%", sizetype, size_zero_node); ++ for (tree_stmt_iterator si = tsi_start (units); !tsi_end_p (si); tsi_next (&si)) ++ { ++ if (sub_multiple == NULL) ++ sub_multiple = a68_lower_tmpvar ("sub_multiple%", ++ TREE_TYPE (tsi_stmt (si)), ++ tsi_stmt (si)); ++ else ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (tsi_stmt (si)), ++ sub_multiple, ++ tsi_stmt (si))); ++ ++ if (si == tsi_start (units)) ++ { ++#if 0 ++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); ++ /* The first sub-multiple establishes the bounds that all ++ subsequent sub-multiples shall match. */ ++ sub_multiple_lb = a68_lower_tmpvar ("sub_multiple_lb%", ++ ssizetype, ++ a68_multiple_lower_bound (sub_multiple, ++ ssize_zero_node)); ++ sub_multiple_ub = a68_lower_tmpvar ("sub_multiple_ub%", ++ ssizetype, ++ a68_multiple_upper_bound (sub_multiple, ++ ssize_zero_node)); ++ sub_multiple_stride = a68_lower_tmpvar ("sub_multiple_stride%", ++ sizetype, ++ a68_multiple_stride (sub_multiple, ++ size_zero_node)); ++#endif ++ /* Now we have enough information to calculate the size of ++ the elements of the new multiple and allocate ++ multiple_elements. */ ++ tree sub_multiple_elements = a68_multiple_elements (sub_multiple); ++ tree elements_pointer_type = TREE_TYPE (sub_multiple_elements); ++ tree elements_type = TREE_TYPE (elements_pointer_type); ++ multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_int (num_units), ++ size_in_bytes (elements_type)); ++ multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, ++ multiple_elements_size, ++ a68_multiple_num_elems (sub_multiple)); ++ multiple_elements = a68_lower_tmpvar ("multiple_elements%", ++ elements_pointer_type, ++ a68_lower_alloca (elements_type, ++ multiple_elements_size)); ++ ++ /* We can also now calculate the bounds of the new multiple. ++ The top-level triplet has lower bound 1, upper bound is ++ num_units, and stride is the number of elements in each ++ sub-multiple multiplied by the element size. Bounds for ++ the subsequent DIM-1 dimensions are copied from the ++ sub-multiple's descriptor. */ ++ lower_bounds[0] = fold_convert (ssizetype, size_one_node); ++ upper_bounds[0] = ssize_int (num_units); ++ for (size_t d = 1; d < dim; ++d) ++ { ++ lower_bounds[d] = a68_multiple_lower_bound (sub_multiple, ++ ssize_int (d - 1)); ++ upper_bounds[d] = a68_multiple_upper_bound (sub_multiple, ++ ssize_int (d - 1)); ++ } ++ } ++ else ++ { ++ /* Check bounds of this sub-multiple. Note that this is ++ always done at run-time, since the interpretation of a row ++ display depens on the target type, whether it is a row row ++ or a row of rows, for example. */ ++ // XXX use sub_multiple_lb, sub_multiple_ub and sub_multiple_stride ++ } ++ ++ /* Copy the elements of a copy of the sub-multiple in the ++ elements of the multiple. */ ++ tree sub_multiple_elements = a68_multiple_elements (sub_multiple); ++ // XXX should we make a copy of the sub_multiple_elements here? ++ // We DO need to iterate slicing, because of strides: if ++ // the sub_multiple is a trimmer. ++ sub_multiple_elements = sub_multiple_elements; ++ tree sub_multiple_elements_type = TREE_TYPE (sub_multiple_elements); ++ tree sub_multiple_num_elems = a68_multiple_num_elems (sub_multiple); ++ tree sub_multiple_element_type = TREE_TYPE (sub_multiple_elements_type); ++ tree sub_multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, ++ sub_multiple_num_elems, ++ size_in_bytes (sub_multiple_element_type)); ++ ++ /* memcpy (multiple_elements[index], sub_multiple_elements) */ ++ a68_add_stmt (a68_lower_memcpy (fold_build2 (POINTER_PLUS_EXPR, ++ sub_multiple_elements_type, ++ multiple_elements, ++ index), ++ sub_multiple_elements, ++ sub_multiple_elements_size)); ++ /* index += sub_multiple_elements_size */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, sizetype, ++ index, ++ fold_build2 (PLUS_EXPR, sizetype, ++ index, sub_multiple_elements_size))); ++ } ++ ++ tree multiple = a68_lower_tmpvar ("multiple%", ++ row_type, ++ a68_row_value (row_type, dim, ++ multiple_elements, ++ multiple_elements_size, ++ lower_bounds, upper_bounds)); ++ free (lower_bounds); ++ free (upper_bounds); ++ ++ /* Yield the multiple. */ ++ a68_add_stmt (multiple); ++ return a68_pop_range (); ++ } ++ } ++ else if (IS_STRUCT (mode)) ++ { ++ /* This is a struct display. There are as many units in the clause as ++ fields in the struct type. Build a constructor with the values for ++ the fields. */ ++ vec *ve = NULL; ++ tree_stmt_iterator si = tsi_start (units); ++ for (tree f = TYPE_FIELDS (CTYPE (mode)); f; f = DECL_CHAIN (f)) ++ { ++ tree v = tsi_stmt (si); ++ gcc_assert (v != NULL_TREE); ++ v = a68_consolidate_ref (a68_type_moid (TREE_TYPE (f)) ,v); ++ CONSTRUCTOR_APPEND_ELT (ve, f, v); ++ tsi_next (&si); ++ } ++ tree ctor = build_constructor (CTYPE (mode), ve); ++ return ctor; ++ } ++ else ++ gcc_unreachable (); ++} ++ ++/* Lower a parallel clause. ++ ++ parallel clause : par symbol, collateral clause. ++*/ ++ ++tree ++a68_lower_parallel_clause (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* XXX For now treat like a VOID collateral clause. */ ++ return a68_lower_tree (NEXT (SUB (p)), ctx); ++} ++ ++/* Lower a closed clause. ++ ++ closed clause : open symbol, serial clause, close symbol; ++ open symbol, initialiser series, close symbol; ++ begin symbol, serial clause, end symbol; ++ begin symbol, initialiser series, end symbol; ++ ++ This function returns a BIND_EXPR. */ ++ ++tree ++a68_lower_closed_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ /* Determine the mode of the closed clause. */ ++ MOID_T *clause_mode = MOID (p); ++ gcc_assert (clause_mode != NO_MOID); ++ gcc_assert (CTYPE (clause_mode) != NULL_TREE); ++ ++ /* Lower the enclosed serial clause. ++ ++ Note that a serial clause can be nested right inside another, and in that ++ case the range we are pushing corresponds to all of them, so we have to ++ keep this into account when determining whether using a DSA serial ++ range. */ ++ ++ bool dsa = serial_clause_dsa (NEXT (SUB (p))); ++ bool local = NON_LOCAL (NEXT (SUB (p))) == NO_TABLE; ++ a68_push_serial_clause_range (clause_mode, dsa && local); ++ (void) a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_pop_serial_clause_range (); ++} ++ ++/* Lower an access clause. ++ ++ access clause : access symbol, joined module indication sequence, ++ enclosed clause. ++*/ ++ ++tree ++a68_lower_access_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *controlled_clause = NEXT (NEXT_SUB (p)); ++ ++ a68_push_range (MOID (p)); ++ ++ /* Call preludes of all ACCESSed modules. */ ++ for (NODE_T *q = SUB (p); q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, MODULE_INDICANT)) ++ { ++ TAG_T *tag = a68_find_tag_global (TABLE (q), MODULE_SYMBOL, NSYMBOL (q)); ++ gcc_assert (tag != NO_TAG); ++ MOIF_T *moif = MOIF (tag); ++ gcc_assert (moif != NO_MOIF); ++ const char *prelude = PRELUDE (moif); ++ ++ tree prelude_decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, ++ get_identifier (prelude), ++ build_function_type_list (void_type_node, ++ void_type_node, ++ NULL_TREE)); ++ DECL_EXTERNAL (prelude_decl) = 1; ++ TREE_PUBLIC (prelude_decl) = 1; ++ a68_add_decl (prelude_decl); ++ a68_add_stmt (build_call_expr_loc (a68_get_node_location (q), ++ prelude_decl, 0)); ++ } ++ } ++ ++ /* Now the controlled clause. */ ++ tree controlled_clause_tree = a68_lower_tree (controlled_clause, ctx); ++ tree tmp = a68_lower_tmpvar ("accessed_clause_result%", ++ TREE_TYPE (controlled_clause_tree), ++ controlled_clause_tree); ++ ++ /* Call postludes of all ACCESSed modules. */ ++ for (NODE_T *q = SUB (p); q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, MODULE_INDICANT)) ++ { ++ TAG_T *tag = a68_find_tag_global (TABLE (q), MODULE_SYMBOL, NSYMBOL (q)); ++ gcc_assert (tag != NO_TAG); ++ MOIF_T *moif = MOIF (tag); ++ gcc_assert (moif != NO_MOIF); ++ const char *postlude = POSTLUDE (moif); ++ ++ tree postlude_decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, ++ get_identifier (postlude), ++ build_function_type_list (void_type_node, ++ void_type_node, ++ NULL_TREE)); ++ DECL_EXTERNAL (postlude_decl) = 1; ++ TREE_PUBLIC (postlude_decl) = 1; ++ a68_add_decl (postlude_decl); ++ a68_add_stmt (build_call_expr_loc (a68_get_node_location (q), ++ postlude_decl, 0)); ++ } ++ } ++ ++ a68_add_stmt (tmp); ++ return a68_pop_range (); ++} ++ ++tree a68_lower_access_clauses (NODE_T *p, LOW_CTX_T ctx); ++ ++/* Lower an enclosed clause. ++ ++ enclosed clause : parallel clause; closed clause; ++ collateral clause; conditional clause; ++ case clause; conformity clause; ++ loop clause ; access clause. ++*/ ++ ++tree ++a68_lower_enclosed_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-coercions.cc +@@ -0,0 +1,471 @@ ++/* Lower Algol 68 coercions to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Lower a dereferencing coercion. */ ++tree ++a68_lower_dereferencing (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_low_deref (a68_lower_tree (SUB (p), ctx), SUB (p)); ++} ++ ++/* Lower an uniting coercion. */ ++ ++tree ++a68_lower_uniting (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree coercend_tree = a68_lower_tree (SUB (p), ctx); ++ ++ if (MOID (p) == M_ROWS) ++ { ++ /* ROWS is a mode to which any ROW mode can be strongly coerced. It is ++ used as the mode of the second operand of the ELEMS, LWB and UPB ++ operators. The coercion is expressed in the parse tree via uniting. ++ This results in replacing the multiple with a "rows" value that ++ contains dimension and bounds information. */ ++ if (A68_ROW_TYPE_P (TREE_TYPE (coercend_tree))) ++ return a68_rows_value (coercend_tree); ++ else if (A68_UNION_TYPE_P (TREE_TYPE (coercend_tree))) ++ { ++ /* coercend_tree is expanded more than once below. */ ++ coercend_tree = save_expr (coercend_tree); ++ ++ /* Union of row modes. We should create a rows value for the currently ++ selected value. */ ++ a68_push_range (M_ROWS); ++ tree done_label = build_decl (UNKNOWN_LOCATION, ++ LABEL_DECL, ++ get_identifier ("done_label%"), ++ void_type_node); ++ DECL_CONTEXT (done_label) = a68_range_context (); ++ a68_add_decl (done_label); ++ a68_add_decl_expr (fold_build1 (DECL_EXPR, TREE_TYPE (done_label), done_label)); ++ tree rows = a68_lower_tmpvar ("rows%", CTYPE (M_ROWS), ++ a68_get_skip_tree (M_ROWS)); ++ tree coercend_overhead = a68_union_overhead (coercend_tree); ++ tree overhead = a68_lower_tmpvar ("overhead%", TREE_TYPE (coercend_overhead), ++ coercend_overhead); ++ int field_index = 0; ++ for (tree field = TYPE_FIELDS (TREE_TYPE (a68_union_cunion (coercend_tree))); ++ field; ++ field = DECL_CHAIN (field)) ++ { ++ a68_push_range (M_VOID); ++ { ++ /* Set rows% to the rows value computed from coercend_tree.FIELD, ++ which is of some multiple type. */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, CTYPE (M_ROWS), ++ rows, ++ a68_rows_value (a68_union_alternative (coercend_tree, ++ field_index)))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, done_label)); ++ a68_add_stmt (a68_get_skip_tree (M_VOID)); ++ } ++ tree process_entry = a68_pop_range (); ++ ++ /* IF overhead = field_index THEN rows% = rows_from_multiple FI */ ++ a68_add_stmt (fold_build3 (COND_EXPR, ++ a68_void_type, ++ fold_build2 (EQ_EXPR, ++ TREE_TYPE (overhead), ++ overhead, ++ build_int_cst (TREE_TYPE (overhead), field_index)), ++ process_entry, ++ a68_get_skip_tree (M_VOID))); ++ field_index += 1; ++ } ++ ++ /* This should not be reached. Emit run-time error. */ ++ { ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_UNREACHABLE, ++ void_type_node, 2, ++ filename, ++ build_int_cst (unsigned_type_node, lineno)); ++ a68_add_stmt (call); ++ } ++ ++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, done_label)); ++ a68_add_stmt (rows); ++ return a68_pop_range (); ++ } ++ else ++ { ++ debug_tree (TREE_TYPE (coercend_tree)); ++ gcc_assert (A68_ROWS_TYPE_P (TREE_TYPE (coercend_tree))); ++ return coercend_tree; ++ } ++ } ++ else if (IS_UNION (MOID (SUB (p)))) ++ { ++ /* We have to extract the value of the coercend union. */ ++ a68_push_range (MOID (p)); ++ { ++ MOID_T *coercend_mode = MOID (SUB (p)); ++ MOID_T *coercee_mode = MOID (p); ++ ++ /* Temporaries for the coercend's components. */ ++ tree coercend = a68_lower_tmpvar ("coercend%", TREE_TYPE (coercend_tree), coercend_tree); ++ tree cval = a68_union_cunion (coercend); ++ tree coverhead = a68_union_overhead (coercend); ++ tree coercend_value = a68_lower_tmpvar ("coercend_value%", TREE_TYPE (cval), cval); ++ tree coercend_overhead = a68_lower_tmpvar ("coercend_overhead%", sizetype, coverhead); ++ ++ /* Create the coercee. */ ++ tree coercee = a68_lower_tmpvar ("coercee%", ++ CTYPE (MOID (p)), ++ a68_get_skip_tree (MOID (p))); ++ tree coercee_value = a68_union_cunion (coercee); ++ ++ /* First translate overhead. This is crude, but it works. */ ++ int idx = 0; ++ tree coercee_overhead = size_zero_node; ++ while (EQUIVALENT (coercend_mode) != NO_MOID) ++ coercend_mode = EQUIVALENT (coercend_mode); ++ for (PACK_T *pack = PACK (coercend_mode); pack != NO_PACK; FORWARD (pack)) ++ { ++ coercee_overhead = fold_build3 (COND_EXPR, ++ sizetype, ++ fold_build2 (EQ_EXPR, ++ sizetype, ++ coercend_overhead, ++ size_int (idx)), ++ size_int (a68_united_mode_index (coercee_mode, MOID (pack))), ++ coercee_overhead); ++ idx++; ++ } ++ a68_add_stmt (a68_union_set_overhead (coercee, coercee_overhead)); ++ ++ /* Now copy over the value. This of course relies on the fact the ++ value of the coercend is smaller or of the same size than the value ++ of the built union. */ ++ a68_add_stmt (a68_lower_memcpy (fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (coercee_value)), ++ coercee_value), ++ fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (coercend_value)), ++ coercend_value), ++ size_in_bytes (TREE_TYPE (coercend_value)))); ++ a68_add_stmt (coercee); ++ } ++ return a68_pop_range (); ++ } ++ else ++ { ++ /* Produce a united mode one of whose component modes is the mode of the ++ coercend. */ ++ return a68_union_value (MOID (p), coercend_tree, MOID (SUB (p))); ++ } ++} ++ ++/* Lower a rowing coercion. */ ++ ++tree ++a68_lower_rowing (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *mode = MOID (p); ++ bool did_deref = false; ++ ++ /* If the primary is a REF, we need to dereference it to get the referred ++ value. */ ++ tree primary = NULL_TREE; ++ tree orig_primary = NULL_TREE; ++ MOID_T *target_mode = NO_MOID; ++ if (IS_REF (mode)) ++ { ++ gcc_assert (IS_REF (MOID (SUB (p)))); ++ did_deref = true; ++ target_mode = SUB (mode); ++ ++ a68_push_range (mode); ++ /* Note that we have to consolidate because we need a pointer to compare ++ to NIL below. */ ++ orig_primary = a68_lower_tmpvar ("orig_primary%", ++ CTYPE (MOID (SUB (p))), ++ a68_consolidate_ref (MOID (SUB (p)), ++ a68_lower_tree (SUB (p), ctx))); ++ primary = a68_low_deref (orig_primary, SUB (p)); ++ } ++ else ++ { ++ target_mode = mode; ++ primary = a68_lower_tree (SUB (p), ctx); ++ /* The primary gets expanded more than once below. */ ++ primary = save_expr (primary); ++ } ++ ++ /* Perform the rowing in the primary. */ ++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); ++ tree rowed_primary = NULL_TREE; ++ if (DIM (DEFLEX (target_mode)) >= 2) ++ { ++ /* []A -> [,]A */ ++ ++ /* First determine the number of dimensions of the resulting ++ multiple. */ ++ tree primary_dimensions = a68_multiple_dimensions (primary); ++ gcc_assert (TREE_CODE (primary_dimensions) == INTEGER_CST); ++ int dim = tree_to_shwi (primary_dimensions) + 1; ++ ++ /* Compute bounds. */ ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ ++ lower_bounds[0] = ssize_one_node; ++ upper_bounds[0] = ssize_one_node; ++ for (int d = 1; d < dim; ++d) ++ { ++ lower_bounds[d] = a68_multiple_lower_bound (primary, ssize_int (d - 1)); ++ upper_bounds[d] = a68_multiple_upper_bound (primary, ssize_int (d - 1)); ++ } ++ ++ rowed_primary = a68_row_value (CTYPE (target_mode), dim, ++ a68_multiple_elements (primary), ++ a68_multiple_elements_size (primary), ++ lower_bounds, upper_bounds); ++ free (lower_bounds); ++ free (upper_bounds); ++ } ++ else ++ { ++ /* A -> []A */ ++ tree row_type = CTYPE (target_mode); ++ tree lower_bound = ssize_one_node; ++ tree upper_bound = ssize_one_node; ++ tree elements = (did_deref ++ ? orig_primary ++ : fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (primary)), ++ build_constructor_va (build_array_type (TREE_TYPE (primary), ++ build_index_type (size_zero_node)), ++ 1, size_zero_node, primary))); ++ tree elements_type = a68_row_elements_type (row_type); ++ tree elements_size = size_in_bytes (elements_type); ++ rowed_primary = a68_row_value (row_type, 1, ++ elements, elements_size, ++ &lower_bound, &upper_bound); ++ } ++ ++ /* Build a ref if we rowed a ref. */ ++ if (did_deref) ++ { ++ tree pointer_type = build_pointer_type (TREE_TYPE (rowed_primary)); ++ rowed_primary = fold_build1 (ADDR_EXPR, pointer_type, rowed_primary); ++ /* Rowing NIL yields NIL. */ ++ rowed_primary = fold_build3_loc (a68_get_node_location (p), ++ COND_EXPR, ++ pointer_type, ++ fold_build2 (EQ_EXPR, ++ pointer_type, ++ fold_convert (pointer_type, orig_primary), ++ build_int_cst (pointer_type, 0)), ++ build_int_cst (pointer_type, 0), ++ rowed_primary); ++ a68_add_stmt (rowed_primary); ++ rowed_primary = a68_pop_range (); ++ } ++ ++ return rowed_primary; ++} ++ ++/* Lower a widening coercion. ++ ++ Widening allows the following conversions of mode: ++ ++ LONGSETY INT to LONGSETY REAL ++ LONGSETY REAL to LONGSETY COMPL ++ LONGSETY BITS to []BOOL ++ LONGSETY BYTES to []CHAR */ ++ ++tree ++a68_lower_widening (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (MOID (p) == M_REAL ++ || MOID (p) == M_LONG_REAL ++ || MOID (p) == M_LONG_LONG_REAL) ++ { ++ return convert_to_real (CTYPE (MOID (p)), a68_lower_tree (SUB (p), ctx)); ++ } ++ if (MOID (p) == M_COMPLEX ++ || MOID (p) == M_LONG_COMPLEX ++ || MOID (p) == M_LONG_LONG_COMPLEX) ++ { ++ return a68_complex_widen_from_real (MOID (p), ++ a68_lower_tree (SUB (p), ctx)); ++ } ++ else if (MOID (p) == M_ROW_BOOL) ++ { ++ /* Widen a LONGSETY BITS to a row of BOOLs. */ ++ tree coercend = a68_lower_tree (SUB (p), ctx); ++ tree coercend_type = TREE_TYPE (coercend); ++ HOST_WIDE_INT bits_size = int_size_in_bytes (coercend_type); ++ gcc_assert (bits_size != -1); ++ bits_size = bits_size * 8; ++ ++ tree pointer_to_bool_type = build_pointer_type (a68_bool_type); ++ a68_push_range (M_ROW_BOOL); ++ /* First allocate space for the elements. */ ++ tree elements = a68_lower_tmpvar ("elements%", ++ pointer_to_bool_type, ++ a68_lower_alloca (a68_bool_type, ++ fold_build2 (MULT_EXPR, ++ sizetype, ++ size_int (bits_size), ++ size_in_bytes (a68_bool_type)))); ++ ++ /* Set the elements, each element is a BOOL which is TRUE if the ++ corresponding bit in the coercend is set, FALSE otherwise. */ ++ tree coercend_one_node = build_int_cst (coercend_type, 1); ++ coercend = save_expr (coercend); ++ for (HOST_WIDE_INT bit = 0; bit < bits_size; ++bit) ++ { ++ tree offset = fold_build2 (MULT_EXPR, sizetype, ++ size_int (bit), size_in_bytes (a68_bool_type)); ++ tree bit_set = fold_convert (a68_bool_type, ++ fold_build2 (BIT_AND_EXPR, coercend_type, ++ fold_build2 (RSHIFT_EXPR, coercend_type, ++ coercend, ++ build_int_cst (coercend_type, ++ bits_size - 1 - bit)), ++ coercend_one_node)); ++ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ a68_bool_type, ++ fold_build2 (MEM_REF, ++ a68_bool_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ pointer_to_bool_type, ++ elements, ++ offset), ++ fold_convert (pointer_to_bool_type, ++ integer_zero_node)), ++ bit_set)); ++ } ++ ++ /* Create multiple. */ ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = ssize_int (bits_size); ++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_int (bits_size), ++ size_in_bytes (a68_bool_type)); ++ tree multiple = a68_row_value (CTYPE (M_ROW_BOOL), 1 /* dim */, ++ elements, elements_size, ++ &lower_bound, &upper_bound); ++ a68_add_stmt (multiple); ++ return a68_pop_range (); ++ } ++ else ++ { ++ fatal_error (a68_get_node_location (p), ++ "cannot do widening from %s to %s", ++ a68_moid_to_string (MOID (SUB (p)), MOID_ERROR_WIDTH, SUB (p)), ++ a68_moid_to_string (MOID (p), MOID_ERROR_WIDTH, p)); ++ gcc_unreachable (); ++ } ++} ++ ++/* Lower a voiding coercion. ++ ++ The voiding lowers into a compound expression with the voided expression ++ (for side-effects) and returns EMPTY. */ ++ ++tree ++a68_lower_voiding (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ a68_void_type, ++ a68_lower_tree (SUB (p), ctx), ++ a68_get_empty ()); ++} ++ ++/* Lower a proceduring coercion. ++ ++ proceduring : jump. ++ ++ In the Revised language only jump statements can be procedured. The ++ coercion results in a new function whose body is the jump instruction. */ ++ ++tree ++a68_lower_proceduring (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree jump = a68_lower_tree (SUB (p), ctx); ++ ++ tree procedured_goto = a68_make_anonymous_routine_decl (MOID (p)); ++ a68_add_decl (procedured_goto); ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (procedured_goto), ++ procedured_goto)); ++ announce_function (procedured_goto); ++ ++ a68_push_function_range (procedured_goto, CTYPE (SUB (MOID (p)))); ++ a68_pop_function_range (jump); ++ return fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (procedured_goto)), ++ procedured_goto); ++} ++ ++/* Lower a deproceduring coercion. ++ The deproceduring lowers into a call expression. */ ++ ++tree ++a68_lower_deproceduring (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree func = a68_lower_tree (SUB (p), ctx); ++ ++ if (POINTER_TYPE_P (TREE_TYPE (func))) ++ { ++ if (TREE_CODE (func) == ADDR_EXPR) ++ func = TREE_OPERAND (func, 0); ++ else ++ func = fold_build1 (INDIRECT_REF, ++ TREE_TYPE (TREE_TYPE (func)), ++ func); ++ } ++ ++ return build_call_expr_loc (a68_get_node_location (p), func, 0); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-complex.cc +@@ -0,0 +1,141 @@ ++/* Lowering routines for all things related to COMPL values. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Build a new COMPL value with real part RE and imaginary part IM, of mode ++ MODE. */ ++ ++tree ++a68_complex_i (MOID_T *mode, tree re, tree im) ++{ ++ tree compl_type = CTYPE (mode); ++ ++ tree re_field = TYPE_FIELDS (compl_type); ++ tree im_field = TREE_CHAIN (re_field); ++ return build_constructor_va (CTYPE (mode), 2, ++ re_field, re, ++ im_field, im); ++} ++ ++/* Given a COMPL value Z, get its real part. */ ++ ++tree ++a68_complex_re (tree z) ++{ ++ tree re_field = TYPE_FIELDS (TREE_TYPE (z)); ++ return fold_build3 (COMPONENT_REF, TREE_TYPE (re_field), ++ z, re_field, NULL_TREE); ++} ++ ++tree ++a68_complex_im (tree z) ++{ ++ tree im_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (z))); ++ return fold_build3 (COMPONENT_REF, TREE_TYPE (im_field), ++ z, im_field, NULL_TREE); ++} ++ ++/* Return the conjugate of the given complex Z of mode MODE. */ ++ ++tree ++a68_complex_conj (MOID_T *mode, tree z) ++{ ++ tree re_field = TYPE_FIELDS (TREE_TYPE (z)); ++ tree complex_type = build_complex_type (TREE_TYPE (re_field), false /* named */); ++ ++ z = save_expr (z); ++ tree complex = fold_build2 (COMPLEX_EXPR, complex_type, ++ a68_complex_re (z), a68_complex_im (z)); ++ tree conj = fold_build1 (CONJ_EXPR, TREE_TYPE (complex), complex); ++ ++ return a68_complex_i (mode, ++ fold_build1 (REALPART_EXPR, TREE_TYPE (TREE_TYPE (z)), conj), ++ fold_build1 (IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (z)), conj)); ++} ++ ++/* Widen a real R to a complex of mode MODE. */ ++ ++tree ++a68_complex_widen_from_real (MOID_T *mode, tree r) ++{ ++ tree compl_type = CTYPE (mode); ++ gcc_assert (compl_type != NULL_TREE); ++ ++ /* Sanity check. */ ++ if (mode == M_COMPLEX) ++ gcc_assert (TREE_TYPE (r) == a68_real_type); ++ else if (mode == M_LONG_COMPLEX) ++ gcc_assert (TREE_TYPE (r) == a68_long_real_type); ++ else if (mode == M_LONG_LONG_COMPLEX) ++ gcc_assert (TREE_TYPE (r) == a68_long_long_real_type); ++ else ++ gcc_unreachable (); ++ ++ a68_push_range (mode); ++ tree res = a68_lower_tmpvar ("compl%", compl_type, ++ a68_get_skip_tree (mode)); ++ ++ /* Look for the "re" field. */ ++ tree field_id = a68_get_mangled_identifier ("re"); ++ tree field = NULL_TREE; ++ for (tree f = TYPE_FIELDS (compl_type); f; f = DECL_CHAIN (f)) ++ { ++ if (field_id == DECL_NAME (f)) ++ { ++ field = f; ++ break; ++ } ++ } ++ gcc_assert (field != NULL_TREE); ++ ++ /* Set it to the given real value. */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (r), ++ fold_build3 (COMPONENT_REF, ++ TREE_TYPE (field), ++ res, field, ++ NULL_TREE), ++ r)); ++ a68_add_stmt (res); ++ return a68_pop_range (); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-decls.cc +@@ -0,0 +1,696 @@ ++/* Lower mode, identity and variable declarations to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Lower one or more mode declarations. ++ ++ mode declaration : mode symbol, defining indicant, ++ equals symbol, declarer; ++ mode symbol, defining indicant, ++ equals symbol, void symbol; ++ mode declaration, comma symbol, ++ defining indicant, equals symbol, declarer; ++ mode declaration, comma symbol, ++ defining indicant, equals symbol, void symbol. ++ ++ Each mode declaration lowers into a TYPE_DECL, which are chained in the ++ current block. This function returns void_node. ++ ++ Note that the defining indicant is already annotated with the declared mode ++ so there is no need to go hunting for the declarer in the subtree. */ ++ ++tree ++a68_lower_mode_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *defining_indicant = NO_NODE; ++ ++ if (IS (SUB (p), MODE_DECLARATION)) ++ { ++ a68_lower_tree (SUB (p), ctx); ++ defining_indicant = NEXT (NEXT (SUB (p))); ++ } ++ else ++ { ++ gcc_assert (IS (SUB (p), MODE_SYMBOL)); ++ defining_indicant = NEXT (SUB (p)); ++ } ++ ++ /* Create a TYPE_DECL declaration for the defined mode and chain it in the ++ current block. */ ++ tree ctype = CTYPE (MOID (defining_indicant)); ++ tree decl_name = a68_get_mangled_indicant (NSYMBOL (defining_indicant), ++ ctx.module_definition_name); ++ tree decl = build_decl (a68_get_node_location (p), ++ TYPE_DECL, decl_name, ctype); ++ SET_DECL_ASSEMBLER_NAME (decl, decl_name); ++ TREE_PUBLIC (decl) = 1; ++ TYPE_CONTEXT (ctype) = DECL_CONTEXT (decl); ++ TYPE_NAME (ctype) = decl; ++ TYPE_STUB_DECL (ctype) = decl; ++ a68_add_decl (decl); ++ ++ return void_node; ++} ++ ++/* Lower one or more variable declarations. ++ ++ variable declaration : qualifier, declarer, defining identifier, ++ assign symbol, unit; ++ qualifier, declarer, defining identiifer; ++ qualifier, declarer, defining identifier; ++ declarer, defining identifier, assign symbol, unit; ++ declarer, defining identifier; ++ variable declaration, comma symbol, ++ defining identifier, assign symbol, unit; ++ variable declaration, comma symbol, ++ defining identifier; ++ ++ Each variable declaration lowers into a VAR_DECL, which are chained in the ++ current block. This function also returns an expression with code to ++ initialize the variable in case there is an initializer. ++ ++ If the variable declaration implies a LOC generator then the VAR_DECL for REF ++ AMODE declares a value of type CTYPE (AMODE). This is an optimization in ++ order to avoid indirect addressing. If the variable declaration implies a ++ HEAP generator, however, then the VAR_DECL declares a value of type pointer ++ to CTYPE (AMODE0. In this later case no optimization is possible and it has ++ exactly the same effect than an identity declaration `REF AMODE ++ defining_identifier = HEAP AMODE'. ++ ++ Note that the defining identifier is annotated with its mode, so there is no ++ need to go hunting for the declarer in the subtree. */ ++ ++tree ++a68_lower_variable_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *defining_identifier, *unit; ++ NODE_T *declarer = NO_NODE; ++ ++ tree sub_expr = NULL_TREE; ++ ++ if (IS (SUB (p), VARIABLE_DECLARATION)) ++ { ++ LOW_CTX_T new_ctx = ctx; ++ new_ctx.declarer = &declarer; ++ sub_expr = a68_lower_tree (SUB (p), new_ctx); ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ } ++ else if (IS (SUB (p), QUALIFIER)) ++ { ++ /* The qualifier determines what kind of generator is used in the ++ variable declaration. This is already annotated in the tax entry for ++ the definining identifier. */ ++ declarer = NEXT (SUB (p)); ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ } ++ else if (IS (SUB (p), DECLARER)) ++ { ++ declarer = SUB (p); ++ defining_identifier = NEXT (SUB (p)); ++ } ++ else ++ gcc_unreachable (); ++ ++ /* Communicate declarer upward. */ ++ if (ctx.declarer != NULL) ++ *ctx.declarer = declarer; ++ ++ /* See if this variable declaration features an initializing unit. */ ++ if (NEXT (defining_identifier) != NO_NODE) ++ { ++ gcc_assert (NEXT (defining_identifier) ++ && IS (NEXT (defining_identifier), ASSIGN_SYMBOL) ++ && NEXT (NEXT (defining_identifier))); ++ unit = NEXT (NEXT (defining_identifier)); ++ } ++ else ++ unit = NO_NODE; ++ ++ /* If not done already by an applied identifier in lower_identifier, create a ++ declaration for the defined entity and chain it in the current block. The ++ declaration has an initial value of SKIP. */ ++ tree var_decl = TAX_TREE_DECL (TAX (defining_identifier)); ++ if (var_decl == NULL_TREE) ++ { ++ var_decl = a68_make_variable_declaration_decl (defining_identifier, ++ ctx.module_definition_name); ++ TAX_TREE_DECL (TAX (defining_identifier)) = var_decl; ++ } ++ ++ /* If the variable declaration is in a public range then add the declaration ++ to the publicized declarations list. Otherwise chain the declaration in ++ the proper block and bind it. */ ++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) ++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, var_decl); ++ else ++ a68_add_decl (var_decl); ++ ++ /* Add a decl_expr in the current range. */ ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (var_decl), ++ var_decl)); ++ ++ tree expr = NULL_TREE; ++ ++ /* Allocate memory for the declared variables. ++ ++ This is done differently depending on the sample generator used in the ++ variable declaration, be it explicit or the default LOC. ++ ++ If the LOC generator is used and the value has no rows, it means it ++ doesnt' need a dynamic part and the var_decl created above is not a ++ pointer. So the memory has been allocated already and there is nothing ++ else to do at this point. ++ ++ If the HEAP generator is used, or if the generated value has rows, it ++ means the var_decl created above is a pointer. We need to run a generator ++ to get the memory with descriptors filled in. Note that we cannot set the ++ pointer as the initial of the var_decl because the bouns in the actual ++ declarer shall be elaborated at the point of the code where the ++ declaration appears, not at the beginning of its reach. Note that the ++ mode of the declarer will be always a REF, since this is a varaible ++ declaration: the referred mode is what we pass to the a68_low_generator. ++ ++ If the STATIC generator is used, the var_decl created above is not a ++ pointer. The static part of the value has been already allocated, and if ++ the value needs a dynamic part (i.e. if it has rows) then it is allocated ++ using the heap. Note how we allocate the whole value (including the ++ static part) and then we copy if over the var_decl. */ ++ ++ if (HEAP (TAX (defining_identifier)) == STATIC_SYMBOL) ++ { ++ if (HAS_ROWS (SUB (MOID (defining_identifier)))) ++ { ++ expr = fold_build2 (MODIFY_EXPR, TREE_TYPE (var_decl), ++ var_decl, ++ fold_build1 (INDIRECT_REF, ++ TREE_TYPE (var_decl), ++ a68_low_generator (declarer, ++ SUB (MOID (declarer)), ++ true /* heap */, ++ ctx))); ++ } ++ } ++ else ++ { ++ bool heap = HEAP (TAX (defining_identifier)) == HEAP_SYMBOL; ++ if (heap || HAS_ROWS (SUB (MOID (defining_identifier)))) ++ { ++ gcc_assert(IS_REF (MOID (declarer))); ++ expr = fold_build2 (MODIFY_EXPR, TREE_TYPE (var_decl), ++ var_decl, ++ a68_low_generator (declarer, ++ SUB (MOID (declarer)), ++ heap, ctx)); ++ } ++ } ++ ++ if (unit != NO_NODE) ++ { ++ tree rhs = a68_lower_tree (unit, ctx); ++ tree assignation = a68_low_assignation (p, ++ var_decl, MOID (defining_identifier), ++ rhs, MOID (unit)); ++ if (expr != NULL_TREE) ++ expr = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (assignation), ++ expr, assignation); ++ else ++ expr = assignation; ++ } ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_expr != NULL_TREE) ++ { ++ if (expr != NULL_TREE) ++ expr = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (var_decl), ++ sub_expr, ++ expr); ++ else ++ expr = sub_expr; ++ } ++ ++ return expr; ++} ++ ++/* Lower one or more identity declarations. ++ ++ identity declaration : declarer, defining identifier, ++ equals symbol, unit; ++ identity declaration, comma symbol, ++ defining identifier, equals symbol, unit; ++ ++ Each identity declaration lowers into a declaration. ++ ++ VAR_DECL with both TREE_CONSTANT and TREE_READONLY set. Note that we cannot ++ use CONST_DECL because of two reasons. First, CONST_DECL only works for ++ scalar modes. Second, since Algol 68 allows usage of identifiers before ++ they get declared, each declaration adds a declaration with a SKIP initial ++ value, and also an assignation of the value at the declaration point. This ++ function also returns an expression with code to initialize the declared ++ constant. */ ++ ++tree ++a68_lower_identity_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree unit_tree = NULL_TREE; ++ tree sub_expr = NULL_TREE; ++ ++ /* Note that the formal declarer in the construct is not used. This is ++ because it is already reflected in the mode of the identity ++ declaration. */ ++ ++ NODE_T *defining_identifier; ++ if (IS (SUB (p), IDENTITY_DECLARATION)) ++ { ++ sub_expr = a68_lower_tree (SUB (p), ctx); ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ } ++ else if (IS (SUB (p), DECLARER)) ++ { ++ defining_identifier = NEXT (SUB (p)); ++ } ++ else ++ gcc_unreachable (); ++ ++ NODE_T *unit = NEXT (NEXT (defining_identifier)); ++ ++ /* If not done already by an applied identifier in lower_identifier, create a ++ declaration for the defined entity and chain it in the current block. The ++ declaration has an initial value of SKIP. */ ++ tree id_decl = TAX_TREE_DECL (TAX (defining_identifier)); ++ if (id_decl == NULL_TREE) ++ { ++ id_decl = a68_make_identity_declaration_decl (defining_identifier, ++ ctx.module_definition_name); ++ TAX_TREE_DECL (TAX (defining_identifier)) = id_decl; ++ } ++ ++ /* If the identity declaration is in a public range then add the declaration ++ to the publicized declarations list. Otherwise chain the declaration in ++ the proper block and bind it. */ ++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) ++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, id_decl); ++ else ++ a68_add_decl (id_decl); ++ ++ /* Prepare the DECL_EXPR. */ ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (id_decl), ++ id_decl)); ++ ++ unit_tree = a68_lower_tree (unit, ctx); ++ unit_tree = a68_consolidate_ref (MOID (unit), unit_tree); ++ tree expr = a68_low_ascription (MOID (defining_identifier), ++ id_decl, unit_tree); ++ ++ /* If the ascribed value is constant, mark the declaration as constant. */ ++ TREE_CONSTANT (id_decl) = TREE_CONSTANT (unit_tree); ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_expr != NULL_TREE) ++ { ++ if (expr != NULL_TREE) ++ expr = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (id_decl), ++ sub_expr, ++ expr); ++ else ++ expr = sub_expr; ++ } ++ ++ return expr; ++} ++ ++/* Lower a declarer. ++ ++ declarer : indicant; ++ longety, indicant; ++ shortety, indicant; ++ flex symbol, declarer; ++ flex symbol, bounds, declarer; ++ flex symbol, formal bounds, declarer; ++ bounds, declarer; ++ formal bounds, declarer; ++ ref symbol, declarer; ++ struct symbol, structure pack; ++ union symbol, union pack; ++ proc symbol, declarer; ++ proc symbol, formal declarers, declarer; ++ proc symbol, formal declarers, void symbol; ++ ++ ++ This handler lowes a DECLARER tree into an expression that evaluates to the ++ size of the actual declarer. Note that this is a self-contained handler and ++ it does traverse the sub-tree on its own. */ ++ ++tree ++a68_lower_declarer (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ gcc_unreachable (); ++} ++ ++/* Lower a declaration list. ++ ++ declaration list : mode declaration; ++ priority declaration; ++ brief operator declaration; ++ operator declaration; ++ identity declaration; ++ procedure declaration; ++ procedure variable declaration; ++ variable declaration; ++ environ name; ++ declaration list, comma symbol, declaration list; ++ ++ Process the subtree, which produces declarations associated with the current ++ context and which get added to the current block. The list of declarations ++ gets returned in nested compound expressions. */ ++ ++tree ++a68_lower_declaration_list (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (IS (SUB (p), DECLARATION_LIST)) ++ { ++ tree left = a68_lower_tree (SUB (p), ctx); ++ tree right = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ /* The trees `left' and `right' may be NULL_TREE if the declarations ++ under them didn't have an initializing expression. In that case, ++ replace them by nops which are removed at fold time. This is ugly, ++ but works. */ ++ if (left == NULL_TREE) ++ left = integer_zero_node; ++ if (right == NULL_TREE) ++ right = integer_zero_node; ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ void_type_node, ++ left, right); ++ } ++ else ++ return a68_lower_tree (SUB (p), ctx); ++} ++ ++/* Lower a procedure declaration. ++ ++ procedure declaration : proc symbol, defining identifier, assign symbol, routine text; ++ procedure declaration, comma symbol, ++ defining identifier, equals symbol, routine text. ++ ++ Each procedure declaration lowers into a declaration. */ ++ ++tree ++a68_lower_procedure_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree sub_func_decl = NULL_TREE; ++ NODE_T *defining_identifier; ++ if (IS (SUB (p), PROCEDURE_DECLARATION)) ++ { ++ sub_func_decl = a68_lower_tree (SUB (p), ctx); ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ } ++ else if (IS (SUB (p), PROC_SYMBOL)) ++ { ++ defining_identifier = NEXT (SUB (p)); ++ } ++ else ++ gcc_unreachable (); ++ ++ NODE_T *routine_text = NEXT (NEXT (defining_identifier)); ++ ++ /* Lower the routine text to get a function decl. */ ++ ctx.proc_decl_identifier = defining_identifier; ++ ctx.proc_decl_operator = false; ++ tree func_decl = a68_lower_tree (routine_text, ctx); ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_func_decl != NULL_TREE) ++ { ++ if (func_decl != NULL_TREE) ++ func_decl = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (func_decl), ++ sub_func_decl, ++ func_decl); ++ else ++ func_decl = sub_func_decl; ++ } ++ ++ return func_decl; ++} ++ ++/* Lower a procedure variable declaration. ++ ++ procedure variable declaration ++ : proc symbol, defining identifier, assign symbol, routine text; ++ qualifier, proc symbol, defining identifier, assign symbol, routine text; ++ procedure variable declaration, comma symbol, defining identiier, assign symbol, routine text. ++ ++ This lowers into the declaration of a VAR_DECL which is a pointer to the ++ free standing routine yielded by the routine text. */ ++ ++tree ++a68_lower_procedure_variable_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree sub_decl = NULL_TREE; ++ NODE_T *defining_identifier; ++ if (IS (SUB (p), PROCEDURE_VARIABLE_DECLARATION)) ++ { ++ sub_decl = a68_lower_tree (SUB (p), ctx); ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ } ++ else if (IS (SUB (p), PROC_SYMBOL)) ++ defining_identifier = NEXT (SUB (p)); ++ else if (IS (SUB (p), QUALIFIER)) ++ /* The qualifier determines what kind of generator is used in the variable ++ declaration. This is already annotated in the tax entry for the ++ definining identifier. */ ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ else ++ gcc_unreachable (); ++ NODE_T *routine_text = NEXT (NEXT (defining_identifier)); ++ ++ /* The routine text lowers into a pointer to function. */ ++ ctx.proc_decl_identifier = NO_NODE; ++ ctx.proc_decl_operator = false; ++ tree routine = a68_lower_tree (routine_text, ctx); ++ ++ /* Create a declaration for the proc variable, if that hasn't been done ++ already. */ ++ tree decl = TAX_TREE_DECL (TAX (defining_identifier)); ++ if (decl == NULL_TREE) ++ { ++ decl = a68_make_variable_declaration_decl (defining_identifier, ++ ctx.module_definition_name); ++ TAX_TREE_DECL (TAX (defining_identifier)) = decl; ++ } ++ ++ /* If the variable declaration is in a public range then add the declaration ++ to the publicized declarations list. Otherwise chain the declaration in ++ the proper block and bind it. */ ++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) ++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, decl); ++ else ++ a68_add_decl (decl); ++ ++ /* Add a decl_expr in the current range. */ ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (decl), ++ decl)); ++ /* Initialize. ++ ++ If the variable is heap allocated then the var_decl created above is a ++ pointer. We don't allocate the actual function on the heap, because the ++ scope of procedures is not global. */ ++ bool heap = HEAP (TAX (defining_identifier)) == HEAP_SYMBOL; ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (decl), decl, ++ heap ? fold_build1 (ADDR_EXPR, TREE_TYPE (decl), ++ routine) : routine)); ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_decl != NULL_TREE) ++ { ++ if (decl != NULL_TREE) ++ decl = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (decl), ++ sub_decl, ++ decl); ++ else ++ decl = sub_decl; ++ } ++ ++ return decl; ++} ++ ++/* Lower a priority declaration. ++ ++ This lowers to nothing. Operator priority is fully handled by the parser in ++ order to decide which operator declaration corresponds to each applied ++ operator. */ ++ ++tree ++a68_lower_priority_declaration (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return NULL_TREE; ++} ++ ++/* Lower a brief operator declaration. ++ ++ brief operator declaration ++ : op symbol, defining operator, equals symbol, routine text; ++ brief operator declaration, comma symbol, defining operator, equals symbol, routine text. ++ ++ The declarations low in a series of FUNCTION_DECLs, one per declared ++ operator. */ ++ ++tree ++a68_lower_brief_operator_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree sub_func_decl = NULL_TREE; ++ NODE_T *defining_operator; ++ ++ if (IS (SUB (p), BRIEF_OPERATOR_DECLARATION)) ++ { ++ sub_func_decl = a68_lower_tree (SUB (p), ctx); ++ defining_operator = NEXT (NEXT (SUB (p))); ++ } ++ else ++ defining_operator = NEXT (SUB (p)); ++ NODE_T *routine_text = NEXT (NEXT (defining_operator)); ++ ++ /* Lower the routine text to get a function decl. */ ++ ctx.proc_decl_identifier = defining_operator; ++ ctx.proc_decl_operator = true; ++ tree func_decl = a68_lower_tree (routine_text, ctx); ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_func_decl != NULL_TREE) ++ { ++ if (func_decl != NULL_TREE) ++ func_decl = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (func_decl), ++ sub_func_decl, ++ func_decl); ++ else ++ func_decl = sub_func_decl; ++ } ++ ++ return func_decl; ++} ++ ++/* Lower an operator declaration. ++ ++ operator declaration : operator plan, defining operator, equals symbol, unit; ++ operator declaration, comma symbol, defining operator, equals symbol, unit. ++ ++ Each operator declaration lowers into a declaration. */ ++ ++tree ++a68_lower_operator_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree sub_op_decl = NULL_TREE; ++ NODE_T *defining_operator; ++ ++ if (IS (SUB (p), OPERATOR_DECLARATION)) ++ { ++ sub_op_decl = a68_lower_tree (SUB (p), ctx); ++ defining_operator = NEXT (NEXT (SUB (p))); ++ } ++ else ++ defining_operator = NEXT (SUB (p)); ++ NODE_T *unit = NEXT (NEXT (defining_operator)); ++ ++ tree op_decl = TAX_TREE_DECL (TAX (defining_operator)); ++ if (op_decl == NULL_TREE) ++ { ++ op_decl = a68_make_identity_declaration_decl (defining_operator, ++ ctx.module_definition_name, ++ true /* indicant */); ++ TAX_TREE_DECL (TAX (defining_operator)) = op_decl; ++ } ++ ++ /* If the identity declaration is in a public range then add the declaration ++ to the publicized declarations list. Otherwise chain the declaration in ++ the proper block and bind it. */ ++ if (PUBLIC_RANGE (TABLE (TAX (defining_operator)))) ++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, op_decl); ++ else ++ a68_add_decl (op_decl); ++ ++ /* Prepare the DECL_EXPR. */ ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (op_decl), ++ op_decl)); ++ /* Initialize. */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (op_decl), op_decl, ++ a68_lower_tree (unit, ctx))); ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_op_decl != NULL_TREE) ++ { ++ if (op_decl != NULL_TREE) ++ op_decl = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (op_decl), ++ sub_op_decl, ++ op_decl); ++ else ++ op_decl = sub_op_decl; ++ } ++ ++ return op_decl; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-generator.cc +@@ -0,0 +1,533 @@ ++/* Lower generators. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++ ++typedef tree (*allocator_t) (tree, tree); ++ ++/* Lower to code that fill in BOUNDS and elements pointers in the given buffer ++ pointed by BUFFER at offset OFFSET according to the mode MODE, and evals to ++ BUFFER. */ ++ ++static tree ++fill_in_buffer (tree buffer, tree offset, tree_stmt_iterator *bounds, MOID_T *m, ++ allocator_t allocator) ++{ ++ tree filler = NULL_TREE; ++ tree type = CTYPE (m); ++ tree pointer_type = build_pointer_type (type); ++ ++ a68_push_stmt_list (M_VOID); ++ ++ if (m == M_INT || m == M_BOOL || m == M_CHAR || m == M_REAL || IS_REF (m)) ++ { ++ tree val_address = fold_build2 (POINTER_PLUS_EXPR, pointer_type, buffer, offset); ++ tree init_val = a68_get_skip_tree (m); ++ tree modify = fold_build2 (MODIFY_EXPR, ++ type, ++ fold_build1 (INDIRECT_REF, type, val_address), ++ init_val); ++ a68_add_stmt (modify); ++ } ++ else if (!HAS_ROWS (m)) ++ { ++ /* This mode has no rows. We can just fill in with zeroes, which ++ translates into SKIP values for all possibly contained types. */ ++ tree call = builtin_decl_explicit (BUILT_IN_MEMSET); ++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 3, ++ buffer, ++ integer_zero_node, ++ fold_convert (sizetype, size_in_bytes (CTYPE (m)))); ++ a68_add_stmt (call); ++ } ++ else if (m == M_STRING) ++ { ++ /* Strings are rows but handled especially as they are created empty and ++ don't feature bounds in the formal declarer. */ ++ ++ /* First the descriptor. */ ++ tree pointer_byte_size = size_int (POINTER_SIZE / BITS_PER_UNIT); ++ tree lb_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, ssizetype, lb_address), ++ ssize_int (1))); ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree ub_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, ssizetype, ub_address), ++ ssize_int (0))); ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree stride_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, sizetype, stride_address), ++ size_in_bytes (a68_char_type))); ++ ++ /* The data is an empty string, i.e NULL. */ ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree elems_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, build_pointer_type (a68_char_type), ++ elems_address), ++ build_int_cst (build_pointer_type (a68_char_type), 0))); ++ ++ /* The size of the elements is zero. */ ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree elems_size_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, build_pointer_type (a68_char_type), ++ elems_size_address), ++ size_zero_node)); ++ } ++ else if (A68_ROW_TYPE_P (type)) ++ { ++ /* If the row mode is flexible we can deflex it now: these also must have ++ bounds specified for them, with the only exception of strings/flexible ++ rows of chars, which are handled above. Note we cannot use DEFLEXED ++ here because that contains the fully deflexed mode. For example, ++ DEFLEXED returns [][]INT for FLEX[]FLEX[]INT, and we want []FLEX[]INT ++ instead. */ ++ if (IS_FLEX (m)) ++ m = SUB (m); ++ ++ /* Consume two bounds from BOUNDS for each dimension and patch them at ++ their right offsets. Note that we have to process from upper ++ dimension to lower dimension so we can calculate the stride as we ++ go. */ ++ size_t dim = DIM (m); ++ ++ /* Collect lower and upper bounds and calculate the number of elements of ++ the multiple. */ ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree num_elems = NULL_TREE; ++ for (size_t i = 0; i < dim; ++i) ++ { ++ /* Note we have to convert the bounds from CTYPE(M_INT) to ++ ssizetype. */ ++ lower_bounds[i] = fold_convert (ssizetype, save_expr (tsi_stmt (*bounds))); ++ tsi_next (bounds); ++ upper_bounds[i] = fold_convert (ssizetype, save_expr (tsi_stmt (*bounds))); ++ tsi_next (bounds); ++ ++ tree dim_num_elems ++ = fold_build2 (PLUS_EXPR, sizetype, ++ fold_convert (sizetype, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ upper_bounds[i], lower_bounds[i])), ++ size_one_node); ++ dim_num_elems = fold_build3 (COND_EXPR, ++ sizetype, ++ fold_build2 (LT_EXPR, ssizetype, ++ upper_bounds[i], lower_bounds[i]), ++ size_zero_node, ++ dim_num_elems); ++ if (num_elems == NULL_TREE) ++ num_elems = dim_num_elems; ++ else ++ num_elems = fold_build2 (MULT_EXPR, sizetype, num_elems, dim_num_elems); ++ } ++ ++ /* Calculate strides. */ ++ tree *strides = (tree *) xmalloc (sizeof (tree) * dim); ++ a68_multiple_compute_strides (type, dim, lower_bounds, upper_bounds, strides); ++ ++ /* Now emit instructions to patch the bounds and strides. */ ++ tree pointer_byte_size = size_int (POINTER_SIZE / BITS_PER_UNIT); ++ for (size_t i = 0; i < dim; ++i) ++ { ++ /* Lower bound. */ ++ tree lb_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, ssizetype, lb_address), ++ lower_bounds[i])); ++ /* Upper bound. */ ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree ub_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, ssizetype, ub_address), ++ upper_bounds[i])); ++ /* Stride. */ ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree stride_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, sizetype, stride_address), ++ strides[i])); ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ } ++ free (lower_bounds); ++ free (upper_bounds); ++ free (strides); ++ ++ /* Now allocate space for the elements. */ ++ MOID_T *elem_mode = SUB (m); ++ tree elem_size = fold_convert (sizetype, size_in_bytes (CTYPE (elem_mode))); ++ tree elems_size = save_expr (fold_build2 (MULT_EXPR, sizetype, elem_size, num_elems)); ++ tree elemsptr = (*allocator) (CTYPE (elem_mode), elems_size); ++ elemsptr = save_expr (elemsptr); ++ ++ /* And initialize them. */ ++ if (elem_mode == M_INT || elem_mode == M_BOOL || elem_mode == M_CHAR ++ || elem_mode == M_REAL || IS_REF (elem_mode)) ++ { ++ /* Memsetting the buffer with either zeroes or ones satisfies the ++ SKIP value for these modes. */ ++ tree call = builtin_decl_explicit (BUILT_IN_MEMSET); ++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 3, ++ elemsptr, ++ integer_zero_node, ++ elems_size); ++ a68_add_stmt (call); ++ } ++ else ++ { ++ /* Recurse in a loop to fill in elements. */ ++ a68_push_range (NULL); ++ tree num_elems_var = a68_lower_tmpvar ("numelems%", size_type_node, ++ num_elems); ++ tree index = a68_lower_tmpvar ("index%", size_type_node, size_zero_node); ++ tree elems_var = a68_lower_tmpvar ("elems%", TREE_TYPE (elemsptr), ++ elemsptr); ++ tree elem_offset = a68_lower_tmpvar ("elem_offset%", size_type_node, ++ size_zero_node); ++ ++ /* Begin of loop body. */ ++ a68_push_range (NULL); ++ a68_add_stmt (fold_build1 (EXIT_EXPR, ++ void_type_node, ++ fold_build2 (EQ_EXPR, ++ size_type_node, ++ index, num_elems_var))); ++ a68_add_stmt (fill_in_buffer (elems_var, elem_offset, bounds, elem_mode, ++ allocator)); ++ /* Increase elem_offset */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, sizetype, ++ elem_offset, ++ fold_build2 (PLUS_EXPR, sizetype, ++ elem_offset, elem_size))); ++ /* index++ */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ++ size_type_node, ++ index, size_one_node)); ++ tree loop_body = a68_pop_range (); ++ /* End of loop body. */ ++ a68_add_stmt (fold_build1 (LOOP_EXPR, ++ void_type_node, ++ loop_body)); ++ a68_add_stmt (a68_pop_range ()); ++ } ++ ++ /* Patch the elements% field. */ ++ tree elems_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, ++ build_pointer_type (CTYPE (elem_mode)), elems_address), ++ elemsptr)); ++ /* Patch the elements_size% field. */ ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree elems_size_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, ++ sizetype, ++ elems_size_address), ++ elems_size)); ++ } ++ else if (A68_STRUCT_TYPE_P (type)) ++ { ++ /* Initialize the struct's fields in the allocated buffer. */ ++ tree base = a68_lower_tmpvar ("base%", TREE_TYPE (buffer), ++ fold_build2 (POINTER_PLUS_EXPR, ++ TREE_TYPE (buffer), ++ buffer, offset)); ++ PACK_T *field_pack = PACK (m); ++ for (tree field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field)) ++ { ++ gcc_assert (COMPLETE_TYPE_P (TREE_TYPE (field))); ++ // printf ("BYTE_POSITION\n"); ++ // debug_tree (byte_position (field)); ++ a68_add_stmt (fill_in_buffer (base, byte_position (field), ++ bounds, MOID (field_pack), allocator)); ++ FORWARD (field_pack); ++ } ++ } ++ else if (A68_UNION_TYPE_P (type)) ++ { ++ /* Union values are initialized with an overhead of (sizetype) -1, which ++ means it is not initialized. Note that row declarers in united modes ++ are formal declarers, so they never contribute bounds. */ ++ tree overhead_address ++ = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ tree uninitialized = fold_convert (sizetype, build_minus_one_cst (ssizetype)); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, sizetype, overhead_address), ++ uninitialized)); ++#if 0 ++ /* Set the rest of the union with zeroes. */ ++ tree value_address ++ = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), ++ buffer, ++ fold_build2 (PLUS_EXPR, sizetype, offset, size_in_bytes (sizetype))); ++ ++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); ++ tree call = builtin_decl_explicit (BUILT_IN_MEMSET); ++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 3, ++ value_address, ++ integer_zero_node, ++ size_in_bytes (TREE_TYPE (value_field))); ++ a68_add_stmt (call); ++#endif ++ } ++ else ++ gcc_unreachable (); ++ ++ a68_add_stmt (buffer); ++ filler = a68_pop_stmt_list (); ++ TREE_TYPE (filler) = pointer_type; ++ return filler; ++} ++ ++/* Lower to code that generates storage for a value of mode M, using bounds ++ from BOUNDS. */ ++ ++static tree ++gen_mode (MOID_T *m, tree_stmt_iterator *bounds, allocator_t allocator) ++{ ++ /* Allocate space for the value and fill it. */ ++ tree buffer = (*allocator) (CTYPE (m), size_in_bytes (CTYPE (m))); ++ buffer = save_expr (buffer); ++ return fill_in_buffer (buffer, size_zero_node, bounds, m, allocator); ++} ++ ++/* Collect row bounds from BOUNDS. ++ Lower bounds are optional, and if not found they default to 1. */ ++ ++static void ++collect_bounds (NODE_T *p, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, BOUNDS_LIST)) ++ collect_bounds (SUB (p), ctx); ++ else if (IS (p, BOUND)) ++ collect_bounds (SUB (p), ctx); ++ else if (IS (p, UNIT)) ++ { ++ /* First the lower bound. */ ++ tree lower_bound; ++ if (NEXT (p) != NO_NODE && IS (NEXT (p), COLON_SYMBOL)) ++ { ++ lower_bound = a68_lower_tree (p, ctx); ++ p = NEXT_NEXT (p); ++ } ++ else ++ /* Default lower bound. */ ++ lower_bound = integer_one_node; ++ ++ /* Now the upper bound. */ ++ tree upper_bound = a68_lower_tree (p, ctx); ++ ++ /* See the comment for collect_declarer_bounds for an explanation for ++ the usage of save_expr here. */ ++ a68_add_stmt (save_expr (lower_bound)); ++ a68_add_stmt (save_expr (upper_bound)); ++ } ++ } ++} ++ ++/* Append all the bounds found in the given declarer in the current statements ++ list. */ ++ ++static void ++collect_declarer_bounds_1 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, BOUNDS)) ++ collect_bounds (SUB (p), ctx); ++ else if (IS (p, INDICANT) && IS_LITERALLY (p, "STRING")) ++ return; ++ else if (IS (p, INDICANT)) ++ { ++ if (TAX (p) != NO_TAG && HAS_ROWS (MOID (TAX (p)))) ++ /* Continue from definition at MODE A = .... */ ++ collect_declarer_bounds_1 (NEXT_NEXT (NODE (TAX (p))), ctx); ++ } ++ else if (IS (p, DECLARER) ++ && (IS_UNION (MOID (p)) || !HAS_ROWS (MOID (p)))) ++ return; ++ else ++ collect_declarer_bounds_1 (SUB (p), ctx); ++ } ++} ++ ++/* Given a declarer node, return a statements list with all the expressions of ++ the bounds within it. ++ ++ Note that the language rules mandates that the bounds expression shall be ++ evaluated just once even when they are used by several generators, such as ++ in ++ ++ [n +:= 1]real a, b; ++ ++ Therefore the expressions are saved in save_exprs and the statements list ++ is cached in the CDECL field of the parse tree node. */ ++ ++static tree ++collect_declarer_bounds (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (CDECL (p) == NULL_TREE) ++ { ++ a68_push_stmt_list (M_VOID); ++ collect_declarer_bounds_1 (SUB (p), ctx); ++ CDECL (p) = a68_pop_stmt_list (); ++ } ++ ++ return CDECL (p); ++} ++ ++/* Low the elaboration of a generator. ++ ++ The lowered code evaluates to a pointer. ++ ++ DECLARER is the actual declarer passed to the generator. ++ ++ MODE is the mode of the value to generate. ++ ++ HEAP is true if we are lowering a heap generator, false if we are lowering a ++ LOC generator. */ ++ ++tree ++a68_low_generator (NODE_T *declarer, ++ MOID_T *mode, ++ bool heap, LOW_CTX_T ctx) ++{ ++ /* If the declarer is a mode indicant which has a recursive definition then ++ we need to lower to a function which gets immediately called rather than ++ an expression, to handle the recursivity. In that case, though, we need ++ to always heap allocated memory for obvious reasons, which sucks, but such ++ is life. */ ++ ++ if (IS (SUB (declarer), INDICANT) && TAX (SUB (declarer)) != NO_TAG ++ && IS_RECURSIVE (TAX (SUB (declarer)))) ++ { ++ if (TAX_TREE_DECL (TAX (SUB (declarer))) != NULL_TREE) ++ { ++ /* This is a recursive mode indicant. Just call the function. */ ++ return save_expr (build_call_expr_loc (a68_get_node_location (SUB (declarer)), ++ TAX_TREE_DECL (TAX (SUB (declarer))), ++ 0)); ++ } ++ ++ tree ret_type = build_pointer_type (CTYPE (mode)); ++ tree func_decl = build_decl (a68_get_node_location (declarer), ++ FUNCTION_DECL, ++ NULL_TREE /* name, set below */, ++ build_function_type (ret_type, void_list_node)); ++ char *name = xasprintf ("genroutine%d", DECL_UID (func_decl)); ++ DECL_NAME (func_decl) = a68_get_mangled_identifier (name); ++ free (name); ++ DECL_EXTERNAL (func_decl) = 0; ++ DECL_STATIC_CHAIN (func_decl) = !a68_in_global_range (); ++ TREE_ADDRESSABLE (func_decl) = 1; ++ TREE_PUBLIC (func_decl) = a68_in_global_range (); ++ TREE_STATIC (func_decl) = 1; ++ TAX_TREE_DECL (TAX (SUB (declarer))) = func_decl; ++ ++ a68_add_decl (func_decl); ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (declarer), ++ DECL_EXPR, ++ TREE_TYPE (func_decl), ++ func_decl)); ++ announce_function (func_decl); ++ a68_push_function_range (func_decl, ret_type); ++ ++ /* Collect bounds from declarer. */ ++ tree bounds = collect_declarer_bounds (declarer, ctx); ++ ++ /* Allocate and initialize a memory buffer for a value of mode MODE with ++ bounds in BOUNDS. */ ++ tree_stmt_iterator bounds_iter = tsi_start (bounds); ++ tree gen = gen_mode (mode, &bounds_iter, a68_lower_malloc); ++ a68_pop_function_range (gen); ++ /* Avoid this generator function, which uses the global lexical ++ environment, to be reused in other contexts. */ ++ TAX_TREE_DECL (TAX (SUB (declarer))) = NULL_TREE; ++ return save_expr (build_call_expr_loc (a68_get_node_location (declarer), ++ func_decl, 0)); ++ } ++ else ++ { ++ /* Collect bounds from declarer. */ ++ tree bounds = collect_declarer_bounds (declarer, ctx); ++ ++ /* Allocate and initialize a memory buffer for a value of mode MODE with ++ bounds in BOUNDS. */ ++ tree_stmt_iterator bounds_iter = tsi_start (bounds); ++ tree gen = gen_mode (mode, &bounds_iter, ++ heap ? a68_lower_malloc : a68_lower_alloca); ++ return gen; ++ } ++} ++ ++/* Allocate storage for a value of mode M. ++ NBOUNDS is the number of bounds in BOUNDS. */ ++ ++tree ++a68_low_gen (MOID_T *m, size_t nbounds, tree *bounds, bool use_heap) ++{ ++ /* First collect bounds from BOUNDS into a statements list, which is what ++ gen_mode expects. */ ++ tree bounds_list = alloc_stmt_list (); ++ for (size_t i = 0; i < nbounds; ++i) ++ append_to_statement_list_force (bounds[i], &bounds_list); ++ allocator_t allocator = use_heap ? a68_lower_malloc : a68_lower_alloca; ++ ++ tree_stmt_iterator q = tsi_start (bounds_list); ++ tree ret = gen_mode (m, &q, allocator); ++ free_stmt_list (bounds_list); ++ return ret; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-ints.cc +@@ -0,0 +1,327 @@ ++/* Lowering routines for all things related to INT values. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielind of SKIP for the given integral mode. */ ++ ++tree ++a68_get_int_skip_tree (MOID_T *m) ++{ ++ tree type; ++ ++ if (m == M_INT) ++ type = a68_int_type; ++ else if (m == M_LONG_INT) ++ type = a68_long_int_type; ++ else if (m == M_LONG_LONG_INT) ++ type = a68_long_long_int_type; ++ else if (m == M_SHORT_INT) ++ type = a68_short_int_type; ++ else if (m == M_SHORT_SHORT_INT) ++ type = a68_short_short_int_type; ++ else ++ gcc_unreachable (); ++ ++ return build_int_cst (type, 0); ++} ++ ++/* Given an integral type, build the maximum value expressable in that ++ type. */ ++ ++tree ++a68_int_maxval (tree type) ++{ ++ return fold_convert (type, TYPE_MAX_VALUE (type)); ++} ++ ++/* Given an integral type, build the minimum value expressable in that ++ type. */ ++ ++tree ++a68_int_minval (tree type) ++{ ++ return fold_convert (type, TYPE_MIN_VALUE (type)); ++} ++ ++/* Given an integral type, build an INT with the number of decimal digits ++ required to represent a value of that typ, not including sign. */ ++ ++tree ++a68_int_width (tree type) ++{ ++ /* Note that log10 (2) is ~ 0.3. ++ Thanks to Andrew Pinski for suggesting using this expression. */ ++ return fold_build2 (PLUS_EXPR, a68_int_type, ++ build_int_cst (a68_int_type, 1), ++ fold_build2 (TRUNC_DIV_EXPR, ++ a68_int_type, ++ fold_build2 (MULT_EXPR, a68_int_type, ++ build_int_cst (a68_int_type, TYPE_PRECISION (type)), ++ build_int_cst (a68_int_type, 3)), ++ build_int_cst (a68_int_type, 10))); ++} ++ ++/* Given an integer value VAL, return -1 if it is less than zero, 0 if it is ++ zero and +1 if it is bigger than zero. The built value is always of mode ++ M_INT. */ ++ ++tree ++a68_int_sign (tree val) ++{ ++ tree zero = build_int_cst (TREE_TYPE (val), 0); ++ return fold_build3 (COND_EXPR, ++ a68_int_type, ++ fold_build2 (EQ_EXPR, integer_type_node, val, zero), ++ build_int_cst (a68_int_type, 0), ++ fold_build3 (COND_EXPR, ++ a68_int_type, ++ fold_build2 (GT_EXPR, integer_type_node, val, zero), ++ build_int_cst (a68_int_type, 1), ++ build_int_cst (a68_int_type, -1))); ++} ++ ++/* Absolute value of an integer. */ ++ ++tree ++a68_int_abs (tree val) ++{ ++ return fold_build1 (ABS_EXPR, TREE_TYPE (val), val); ++} ++ ++/* Build the integral value lengthened from the value of VAL, from mode ++ FROM_MODE to mode TO_MODE. */ ++ ++tree ++a68_int_leng (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) ++{ ++ /* Lengthening can be done by just a cast. */ ++ return fold_convert (CTYPE (to_mode), val); ++} ++ ++/* Build the integral value that can be lengthened to the value of VAL, from ++ mode FROM_MODE to mode TO_MODE. ++ ++ If VAL cannot be represented in TO_MODE because it is bigger than the most ++ positive value representable in TO_MODE, then it is truncated to that value. ++ ++ Likewise, if VAL cannot be represented in TO_MODE because it is less than ++ the most negative value representable in TO_MODE, then it is truncated to ++ that value. */ ++ ++tree ++a68_int_shorten (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) ++{ ++ tree most_positive_value = fold_convert (CTYPE (from_mode), ++ a68_int_maxval (CTYPE (to_mode))); ++ tree most_negative_value = fold_convert (CTYPE (from_mode), ++ a68_int_minval (CTYPE (to_mode))); ++ ++ val = save_expr (val); ++ most_positive_value = save_expr (most_positive_value); ++ most_negative_value = save_expr (most_negative_value); ++ return fold_build3 (COND_EXPR, CTYPE (to_mode), ++ fold_build2 (GT_EXPR, a68_bool_type, val, most_positive_value), ++ fold_convert (CTYPE (to_mode), most_positive_value), ++ fold_build3 (COND_EXPR, CTYPE (to_mode), ++ fold_build2 (LT_EXPR, a68_bool_type, val, most_negative_value), ++ fold_convert (CTYPE (to_mode), most_negative_value), ++ fold_convert (CTYPE (to_mode), val))); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates the ++ addition of A and B. */ ++ ++tree ++a68_int_plus (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, PLUS_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates the ++ subtraction of A by B. */ ++ ++tree ++a68_int_minus (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, MINUS_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates the ++ multiplication of A by B. */ ++ ++tree ++a68_int_mult (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, MULT_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates the ++ division of A by B. */ ++ ++tree ++a68_int_div (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, TRUNC_DIV_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A = B. */ ++ ++tree ++a68_int_eq (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A /= B. */ ++ ++tree ++a68_int_ne (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A < B. */ ++ ++tree ++a68_int_lt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A <= B. */ ++ ++tree ++a68_int_le (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A > B. */ ++ ++tree ++a68_int_gt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A >= B. */ ++ ++tree ++a68_int_ge (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build and expression that calculates the ++ modulus as specified by the Revised Report: ++ ++ OP MOD = (L INT a, b) L INT: ++ (INT r = a - a % b * b; r < 0 | r + ABS b | r) ++*/ ++ ++tree ++a68_int_mod (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ a = save_expr (a); ++ b = save_expr (b); ++ tree r = a68_int_minus (m, a, a68_int_mult (m, a68_int_div (m, a, b), b)); ++ ++ r = save_expr (r); ++ return fold_build3_loc (loc, COND_EXPR, CTYPE (m), ++ a68_int_lt (r, build_int_cst (CTYPE (m), 0)), ++ a68_int_plus (m, r, a68_int_abs (b)), ++ r); ++} ++ ++/* Given two integral values values, the first of mode M an the second of mode ++ INT, build an expression that calculates the exponentiation of A by B, as ++ specified by the Revised Report: ++ ++ OP ** = (L INT a, INT b) L INT: ++ (b >= 0 | L INT p := L 1; TO b DO p := p * a OD; p) ++*/ ++ ++tree ++a68_int_pow (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ tree zero = build_int_cst (CTYPE (m), 0); ++ tree one = build_int_cst (CTYPE (m), 1); ++ ++ a = save_expr (a); ++ b = save_expr (fold_convert (CTYPE (m), b)); ++ ++ a68_push_range (m); ++ tree index = a68_lower_tmpvar ("index%", CTYPE (m), zero); ++ tree p = a68_lower_tmpvar ("p%", CTYPE (m), one); ++ ++ /* Begin of loop body. */ ++ a68_push_range (NULL); ++ { ++ /* if (index == b) break; */ ++ a68_add_stmt (fold_build1 (EXIT_EXPR, ++ void_type_node, ++ fold_build2 (EQ_EXPR, CTYPE (m), ++ index, b))); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, CTYPE (m), ++ p, a68_int_mult (m, p, a))); ++ ++ /* index++ */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, CTYPE (m), ++ index, one)); ++ } ++ tree loop_body = a68_pop_range (); ++ a68_add_stmt (fold_build1 (LOOP_EXPR, ++ void_type_node, ++ loop_body)); ++ a68_add_stmt (p); ++ tree calculate_p = a68_pop_range (); ++ return fold_build3_loc (loc, COND_EXPR, CTYPE (m), ++ a68_int_ge (b, zero), ++ calculate_p, zero); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-misc.cc +@@ -0,0 +1,234 @@ ++/* Lower miscellaneous tree nodes to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Lower an assertion. ++ ++ assertion : assert symbol, enclosed clause. ++*/ ++ ++tree ++a68_lower_assertion (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (!OPTION_ASSERT (&A68_JOB)) ++ return a68_get_empty(); ++ ++ /* Build the call to the assert run-time function. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_ASSERT, ++ void_type_node, 2, ++ filename, ++ build_int_cst (unsigned_type_node, lineno)); ++ /* Check condition and call assert if required. */ ++ tree assertion = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ a68_void_type, ++ build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ a68_int_type, ++ a68_lower_tree (NEXT (SUB (p)), ctx), ++ fold_build2 (COMPOUND_EXPR, ++ a68_int_type, ++ call, ++ build_int_cst (a68_int_type, 0))), ++ a68_get_empty ()); ++ TREE_SIDE_EFFECTS (assertion) = 1; ++ return assertion; ++} ++ ++/* Lower a jump to a label. ++ ++ jump : goto symbol, identifier; ++ identifier. ++ ++ A jump lowers into a ({ GOTO_EXPR; EMPTY }). */ ++ ++tree ++a68_lower_jump (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *label_identifier = SUB (p); ++ MOID_T *jump_mode = MOID (p); ++ if (!IS (label_identifier, IDENTIFIER)) ++ FORWARD (label_identifier); ++ ++ /* Create LABEL_DECL if necessary and chain it in both current block and bind ++ expression. */ ++ if (TAX_TREE_DECL (TAX (label_identifier)) == NULL_TREE) ++ { ++ tree label_decl = build_decl (a68_get_node_location (label_identifier), ++ LABEL_DECL, ++ a68_get_mangled_identifier (NSYMBOL (label_identifier)), ++ void_type_node); ++ TAX_TREE_DECL (TAX (label_identifier)) = label_decl; ++ } ++ ++ MOID (label_identifier) = M_VOID; ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ CTYPE (jump_mode), ++ fold_build1_loc (a68_get_node_location (p), ++ GOTO_EXPR, ++ void_type_node, ++ a68_lower_tree (label_identifier, ctx)), ++ a68_get_skip_tree (jump_mode)); ++} ++ ++/* Lower a parameter into a chain of PARAM_DECLs. ++ ++ parameter : declarer, identifier; ++ parameter, comma symbol, identifier. ++*/ ++ ++tree ++a68_lower_parameter (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree prev_parm_decls = NULL_TREE; ++ NODE_T *identifier = NO_NODE; ++ if (IS (SUB (p), PARAMETER)) ++ { ++ prev_parm_decls = a68_lower_tree (SUB (p), ctx); ++ identifier = NEXT (NEXT (SUB (p))); ++ } ++ else ++ identifier = NEXT (SUB (p)); ++ ++ /* Create the PARM_DECL. */ ++ tree parm_decl = build_decl (a68_get_node_location (p), ++ PARM_DECL, ++ a68_get_mangled_identifier (NSYMBOL (identifier)), ++ CTYPE (MOID (identifier))); ++ DECL_CONTEXT (parm_decl) = current_function_decl; ++ DECL_ARG_TYPE (parm_decl) = TREE_TYPE (parm_decl); ++ TAX_TREE_DECL (TAX (identifier)) = parm_decl; ++ ++ layout_decl (parm_decl, 0); ++ ++ if (prev_parm_decls != NULL) ++ return chainon (prev_parm_decls, parm_decl); ++ else ++ return parm_decl; ++} ++ ++/* Lower a list of parameters into a chain of PARAM_DECLs. ++ ++ parameter list : parameter; ++ parameter list; comma symbol; parameter. ++*/ ++ ++tree ++a68_lower_parameter_list (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree parm_decl = NULL_TREE; ++ tree prev_parm_decls = NULL_TREE; ++ if (IS (SUB (p), PARAMETER_LIST)) ++ { ++ prev_parm_decls = a68_lower_tree (SUB (p), ctx); ++ parm_decl = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ } ++ else ++ parm_decl = a68_lower_tree (SUB (p), ctx); ++ ++ gcc_assert (parm_decl != NULL_TREE); ++ if (prev_parm_decls != NULL) ++ return chainon (prev_parm_decls, parm_decl); ++ else ++ return parm_decl; ++} ++ ++/* Lower a parameter pack into a chain of PARAM_DECLs. ++ ++ parameter pack : open symbol, parameter list, close symbol. ++*/ ++ ++tree ++a68_lower_parameter_pack (NODE_T *p, LOW_CTX_T ctx) ++{ ++ /* Lower the contained PARAMETER_LIST. */ ++ return a68_lower_tree (NEXT (SUB (p)), ctx); ++} ++ ++/* Lower an applied operator. ++ ++ Applied operators lower into a function object that gets one argument in ++ case of monadic operators, or two arguments in case of dyadic operators. */ ++ ++tree ++a68_lower_operator (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* This is an user defined operator. Handle it in a similar way than applied ++ identifiers. */ ++ tree func_decl = TAX_TREE_DECL (TAX (p)); ++ if (func_decl == NULL_TREE) ++ { ++ bool external = (MOIF (TAX (p)) != NO_MOIF); ++ const char *extern_symbol = EXTERN_SYMBOL (TAX (p)); ++ if (IN_PROC (TAX (p))) ++ { ++ if (external) ++ func_decl = a68_make_proc_identity_declaration_decl (p, ++ NAME (MOIF (TAX (p))), ++ true /* indicant */, ++ external, ++ extern_symbol); ++ else ++ func_decl = a68_make_proc_identity_declaration_decl (p, ++ ctx.module_definition_name, ++ true /* indicant */); ++ } ++ else ++ { ++ if (external) ++ func_decl = a68_make_identity_declaration_decl (p, NAME (MOIF (TAX (p))), ++ true /* indicant */, external, ++ extern_symbol); ++ else ++ func_decl = a68_make_identity_declaration_decl (p, ctx.module_definition_name, ++ true /* indicant */); ++ } ++ TAX_TREE_DECL (TAX (p)) = func_decl; ++ } ++ return func_decl; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-moids.cc +@@ -0,0 +1,729 @@ ++/* Lower Algol 68 modes to GCC trees. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "stringpool.h" ++#include "tree.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "print-tree.h" ++ ++#include "a68.h" ++ ++static tree a68_lower_mode (MOID_T *m); ++ ++/* ++ * Support routines and definitions. ++ */ ++ ++/* Build a stub TYPE_DECL for a given TYPE. ++ ++ This is used for TYPE_STUB_DECL so we can generate debug info for all our ++ modes, so the TYPE_DECL has no name. */ ++ ++static void ++build_stub_type_decl (tree type, tree context) ++{ ++ if (TYPE_STUB_DECL (type)) ++ return; ++ ++ tree decl = build_decl (UNKNOWN_LOCATION, ++ TYPE_DECL, ++ NULL_TREE /* name */, ++ type); ++ TREE_PUBLIC (decl) = 1; ++ DECL_CONTEXT (decl) = context; ++ TYPE_CONTEXT (type) = DECL_CONTEXT (decl); ++ TYPE_NAME (type) = decl; /* Weird. This is for typedefs! */ ++ TYPE_STUB_DECL (type) = decl; ++} ++ ++/* Builds a record type whose name is NAME. NFIELDS is the number of fields, ++ provided as field ident/type pairs. ++ ++ This code is copied from the D front end. */ ++ ++static tree ++make_struct_type (tree type, const char *name, int nfields, ...) ++{ ++ tree fields = NULL_TREE; ++ va_list ap; ++ ++ va_start (ap, nfields); ++ ++ for (int i = 0; i < nfields; i++) ++ { ++ tree ident = va_arg (ap, tree); ++ tree type = va_arg (ap, tree); ++ tree field = build_decl (BUILTINS_LOCATION, FIELD_DECL, ident, type); ++ DECL_CHAIN (field) = fields; ++ fields = field; ++ } ++ ++ va_end (ap); ++ ++ if (type == NULL_TREE) ++ type = make_node (RECORD_TYPE); ++ finish_builtin_struct (type, name, fields, NULL_TREE); ++ ++ return type; ++} ++ ++/* Iterate over all the field selectors FIELDS of a structure type and add them ++ as fields to CONTEXT. Returns the number of field selectors found. */ ++ ++static size_t ++chain_struct_fields (PACK_T *fields, tree context) ++{ ++ PACK_T *elem; ++ size_t num_fields; ++ ++ for (num_fields = 0, elem = fields; ++ elem != NO_PACK; ++ FORWARD (elem), ++num_fields) ++ { ++ const char *field_name = TEXT (elem); ++ MOID_T *field_mode = MOID (elem); ++ tree field_type = a68_lower_mode (field_mode); ++ ++ /* Create the field declaration. ++ The declaration is not a compiler-generated entity. ++ Do not ignore the declaration for symbolic debug purposes. */ ++ tree field_decl = build_decl ((NODE (field_mode) ++ ? a68_get_node_location (NODE (field_mode)) ++ : UNKNOWN_LOCATION), ++ FIELD_DECL, ++ field_name ? get_identifier (field_name) : NULL_TREE, ++ field_type); ++ DECL_ARTIFICIAL (field_decl) = 0; ++ DECL_IGNORED_P (field_decl) = 0; ++ ++ /* If the mode of the field is not a ref then references to the field ++ cannot appear in a LHS of an assignment. */ ++ TREE_READONLY (field_decl) = IS_REF (field_mode); ++ ++ /* Associate the tree field declaration and the front end node. */ ++ DECL_LANG_SPECIFIC (field_decl) = ++ (NODE (field_mode) ? a68_build_lang_decl (NODE (field_mode)) : NULL); ++ ++ /* Chain the field declaration in its containing context. */ ++ DECL_FIELD_CONTEXT (field_decl) = context; ++ TYPE_FIELDS (context) = chainon (TYPE_FIELDS (context), field_decl); ++ } ++ ++ return num_fields; ++} ++ ++/* If the union or struct type TYPE completes the type of any previous field ++ declarations, lay them out now. */ ++ ++static void ++finish_incomplete_fields (tree type) ++{ ++ for (tree fwdref = TYPE_FORWARD_REFERENCES (type); fwdref != NULL_TREE; ++ fwdref = TREE_CHAIN (fwdref)) ++ { ++ tree field = TREE_VALUE (fwdref); ++ tree struct_or_union_type = DECL_FIELD_CONTEXT (field); ++ ++ relayout_decl (field); ++ bool type_complete = true; ++ for (tree field = TYPE_FIELDS (struct_or_union_type); ++ field; ++ field = DECL_CHAIN (field)) ++ { ++ if (!COMPLETE_TYPE_P (TREE_TYPE (field))) ++ { ++ type_complete = false; ++ break; ++ } ++ } ++ ++ if (type_complete) ++ { ++ // XXX why this fires ++ // gcc_assert (!COMPLETE_TYPE_P (struct_or_union_type)); ++ layout_type (struct_or_union_type); ++ /* Set the back-end type mode now that all fields have had their size ++ set. */ ++ compute_record_mode (struct_or_union_type); ++ } ++ }; ++ ++ /* No more forward references to process. */ ++ TYPE_FORWARD_REFERENCES (type) = NULL_TREE; ++} ++ ++/* ++ * Mode lowering routines. ++ */ ++ ++/* Lower a HIP mode to a GENERIC tree. ++ HIP is the mode of NIL. */ ++ ++static tree ++lower_hip_mode (MOID_T *m) ++{ ++ static tree hip_type; ++ ++ if (hip_type == NULL) ++ { ++ hip_type = build_pointer_type (a68_void_type); ++ TYPE_LANG_SPECIFIC (hip_type) = a68_build_lang_type (m); ++ CTYPE (m) = hip_type; ++ } ++ ++ return hip_type; ++} ++ ++/* Lower a standard mode to a GENERIC tree. ++ ++ Note that this function only has to handle the standard modes that have not ++ been resolved to some equivalent. */ ++ ++static tree ++lower_standard_mode (MOID_T *m) ++{ ++ tree type = NULL_TREE; ++ ++ if (m == M_VOID) ++ type = a68_void_type; ++ else if (m == M_BOOL) ++ type = a68_bool_type; ++ else if (m == M_CHAR) ++ type = a68_char_type; ++ else if (m == M_SHORT_SHORT_INT) ++ type = a68_short_short_int_type; ++ else if (m == M_SHORT_INT) ++ type = a68_short_int_type; ++ else if (m == M_INT) ++ type = a68_int_type; ++ else if (m == M_LONG_INT) ++ type = a68_long_int_type; ++ else if (m == M_LONG_LONG_INT) ++ type = a68_long_long_int_type; ++ else if (m == M_REAL) ++ type = a68_real_type; ++ else if (m == M_LONG_REAL) ++ type = a68_long_real_type; ++ else if (m == M_LONG_LONG_REAL) ++ type = a68_long_long_real_type; ++ else if (m == M_SHORT_SHORT_BITS) ++ type = a68_short_short_bits_type; ++ else if (m == M_SHORT_BITS) ++ type = a68_short_bits_type; ++ else if (m == M_BITS) ++ type = a68_bits_type; ++ else if (m == M_LONG_BITS) ++ type = a68_long_bits_type; ++ else if (m == M_LONG_LONG_BITS) ++ type = a68_long_long_bits_type; ++ else if (m == M_BYTES) ++ type = a68_bytes_type; ++ else if (m == M_LONG_BYTES) ++ type = a68_long_bytes_type; ++ else if (m == M_FILE) ++ /* XXX for now this is a file descriptor. */ ++ type = integer_type_node; ++ else if (m == M_CHANNEL) ++ /* XXX for now this is a channel descriptor. */ ++ type = integer_type_node; ++ else ++ gcc_unreachable (); ++ ++ TYPE_LANG_SPECIFIC (type) = a68_build_lang_type (m); ++ return type; ++} ++ ++/* Lower a struct mode to a GENERIC tree. */ ++ ++static tree ++lower_struct_mode (MOID_T *m) ++{ ++ /* First make the GENERIC struct. This is needed in case of ++ self-references. */ ++ tree struct_type = make_node (RECORD_TYPE); ++ TYPE_NAME (struct_type) = get_identifier ("lalastruct%"); ++ TYPE_FIELDS (struct_type) = NULL_TREE; ++ TYPE_CXX_ODR_P (struct_type) = 0; ++ CTYPE (m) = struct_type; ++ TYPE_LANG_SPECIFIC (struct_type) = a68_build_lang_type (m); /* XXX this will get overrided. */ ++ ++ /* Add field declarations. */ ++ chain_struct_fields (PACK (m), struct_type); ++ ++ /* Layout all fields. */ ++ bool struct_type_complete = true; ++ for (tree field = TYPE_FIELDS (struct_type); field; field = DECL_CHAIN (field)) ++ { ++ tree basetype = TREE_TYPE (field); ++ ++ if (!COMPLETE_TYPE_P (basetype)) ++ { ++ tree field_type = TREE_TYPE (field); ++ tree forward_refs = tree_cons (NULL_TREE, field, ++ TYPE_FORWARD_REFERENCES (field_type)); ++ TYPE_FORWARD_REFERENCES (struct_type) = forward_refs; ++ ++ struct_type_complete = false; ++ continue; ++ } ++ ++ layout_decl (field, 0); ++ gcc_assert (DECL_SIZE (field) != NULL_TREE); ++ } ++ ++ /* If all fields have complete types then we can layout the struct type now. ++ Otherwise it will be done in finish_incomplete_types. */ ++ if (struct_type_complete) ++ { ++ layout_type (struct_type); ++ /* Set the back-end type mode now that all fields have had their size ++ set. */ ++ compute_record_mode (struct_type); ++ } ++ ++ /* Finish debugging output for this type. */ ++ build_stub_type_decl (struct_type, NULL_TREE /* context */); ++ rest_of_type_compilation (struct_type, TYPE_FILE_SCOPE_P (struct_type)); ++ rest_of_decl_compilation (TYPE_NAME (struct_type), 1 /* file scope p */, 0); ++ A68_STRUCT_TYPE_P (struct_type) = 1; ++ return struct_type; ++} ++ ++/* Lower a ref mode to a GENERIC tree. ++ REF AMODE lowers to a pointer. */ ++ ++static tree ++lower_ref_mode (MOID_T *m) ++{ ++ return build_pointer_type (a68_lower_mode (SUB (m))); ++} ++ ++/* Lower a flex mode to a GENERIC tree. */ ++ ++static tree ++lower_flex_mode (MOID_T *m) ++{ ++ /* This is basically a qualifier of the parent REF. */ ++ return a68_lower_mode (SUB (m)); ++} ++ ++/* Lower a proc mode to a GENERIC tree. */ ++ ++static tree ++lower_proc_mode (MOID_T *m) ++{ ++ tree fnargs = NULL_TREE; ++ tree ret_type; ++ ++ /* We have to create the function type in advance because it can appear ++ recursively as the type of arguments and/or of the return value. We ++ cannot use build_function_type, as it doesn't support recursive types. */ ++ tree function_type = make_node (FUNCTION_TYPE); ++ tree ptr_function_type = build_pointer_type (function_type); ++ CTYPE (m) = ptr_function_type; ++ ++ /* Now add arguments and return value types. */ ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ { ++ tree arg_type = a68_lower_mode (MOID (p)); ++ fnargs = chainon (fnargs, build_tree_list (0, arg_type)); ++ } ++ ret_type = a68_lower_mode (SUB (m)); ++ ++ /* Complete the function type. Note that there is some code duplication with ++ build_function_type, which we cannot use, but such is life. */ ++ TREE_TYPE (function_type) = ret_type; /* THIS */ ++ TYPE_ARG_TYPES (function_type) = fnargs; ++ SET_TYPE_STRUCTURAL_EQUALITY (function_type); ++ ++ if (!COMPLETE_TYPE_P (function_type)) ++ layout_type (function_type); ++ ++ return ptr_function_type; ++} ++ ++/* Lower an union mode to a GENERIC tree. ++ ++ overhead% Characterizes the actual mode of the value. ++ value% GENERIC union. */ ++ ++static tree ++lower_union_mode (MOID_T *m) ++{ ++ // XXX make the union type QUAL_UNION_TYPE and relate the fields with the ++ // overhead%. This is necessary for DWARF. ++ tree union_type = make_node (RECORD_TYPE); ++ TYPE_NAME (union_type) = NULL_TREE; ++ TYPE_FIELDS (union_type) = NULL_TREE; ++ TYPE_CXX_ODR_P (union_type) = 0; ++ CTYPE (m) = union_type; ++ ++ /* Then the GENERIC union. */ ++ tree c_union_type = make_node (UNION_TYPE); ++ TYPE_NAME (c_union_type) = NULL_TREE; ++ TYPE_FIELDS (c_union_type) = NULL_TREE; ++ TYPE_CXX_ODR_P (c_union_type) = 0; // XXX otherwise lto complains. why. ++ SET_TYPE_STRUCTURAL_EQUALITY (c_union_type); ++ ++ /* Add field declarations. */ ++ chain_struct_fields (PACK (m), c_union_type); ++ ++ /* Layout all fields now the type is complete. */ ++ bool c_union_type_complete = true; ++ for (tree field = TYPE_FIELDS (c_union_type); field; field = DECL_CHAIN (field)) ++ { ++ tree field_type = TREE_TYPE (field); ++ ++ if (!COMPLETE_TYPE_P (field_type)) ++ { ++ tree field_type = TREE_TYPE (field); ++ tree forward_refs = tree_cons (NULL_TREE, field, ++ TYPE_FORWARD_REFERENCES (field_type)); ++ TYPE_FORWARD_REFERENCES (c_union_type) = forward_refs; ++ ++ c_union_type_complete = false; ++ continue; ++ } ++ ++ layout_decl (field, 0); ++ gcc_assert (DECL_SIZE (field) != NULL_TREE); ++ } ++ ++ /* If all fields have complete types then we can layout the c-union type now. ++ Otherwise it will be done in finish_incomplete_types. */ ++ if (c_union_type_complete) ++ { ++ layout_type (c_union_type); ++ /* Set the back-end type mode now that all fields have had their size ++ set. */ ++ compute_record_mode (c_union_type); ++ } ++ ++ /* Finish debugging output for this type. */ ++ build_stub_type_decl (c_union_type, NULL_TREE /* context */); ++ rest_of_type_compilation (c_union_type, TYPE_FILE_SCOPE_P (c_union_type)); ++ rest_of_decl_compilation (TYPE_NAME (c_union_type), 1 /* file scope p */, 0); ++ ++ /* Now the type with the overhead. */ ++ TYPE_NAME (union_type) = get_identifier ("union%"); ++ tree overhead_field = build_decl (UNKNOWN_LOCATION, FIELD_DECL, ++ get_identifier ("overhead%"), sizetype); ++ tree value_field = build_decl (UNKNOWN_LOCATION, FIELD_DECL, ++ get_identifier ("value%"), c_union_type); ++ DECL_FIELD_CONTEXT (overhead_field) = union_type; ++ DECL_FIELD_CONTEXT (value_field) = union_type; ++ DECL_CHAIN (value_field) = NULL_TREE; ++ DECL_CHAIN (overhead_field) = value_field; ++ TYPE_FIELDS (union_type) = overhead_field; ++ ++ if (c_union_type_complete) ++ { ++ layout_type (union_type); ++ /* Set the back-end type mode now that all fields have had their size ++ set. */ ++ compute_record_mode (union_type); ++ } ++ else ++ { ++ tree forward_refs = tree_cons (NULL_TREE, value_field, ++ TYPE_FORWARD_REFERENCES (union_type)); ++ TYPE_FORWARD_REFERENCES (union_type) = forward_refs; ++ } ++ ++ SET_TYPE_STRUCTURAL_EQUALITY (union_type); ++ A68_UNION_TYPE_P (union_type) = 1; ++ return union_type; ++} ++ ++/* Return the type for an array descriptor triplet. */ ++ ++tree ++a68_triplet_type (void) ++{ ++ static tree triplet_type = NULL_TREE; ++ if (triplet_type == NULL_TREE) ++ { ++ triplet_type = make_struct_type (NULL_TREE, "triplet%", 3, ++ get_identifier ("lb%"), ++ ssizetype, ++ get_identifier ("ub%"), ++ ssizetype, ++ get_identifier ("stride%"), ++ sizetype); ++ } ++ ++ return triplet_type; ++} ++ ++/* Return the lower bound field in an array descriptor triplet. */ ++ ++tree ++a68_triplet_type_lower_bound (tree triplet) ++{ ++ tree lb_field = TYPE_FIELDS (triplet); ++ return lb_field; ++} ++ ++/* Lower a row mode to a GENERIC tree. ++ ++ descriptor% ++ triplets% Value of ARRAY_TYPE with an entry per multiple dimension. ++ { ++ li% Lower bound of dimension. ++ ui% Upper bound of dimension. ++ di% Stride of dimension in bytes. ++ } ++ elements% Pointer to the elements. ++ elements_size% Size of elements% in bytes. ++*/ ++ ++static tree ++lower_row_mode (MOID_T *m) ++{ ++ int num_dimensions = DIM (m); ++ tree triplet_type = a68_triplet_type (); ++ tree triplets_type = build_array_type (triplet_type, ++ build_index_type (size_int (num_dimensions - 1))); ++ tree element_type = a68_lower_mode (SUB (m)); ++ tree row_type = make_struct_type (NULL_TREE, "row%", 3, ++ get_identifier ("triplets%"), ++ triplets_type, ++ get_identifier ("elements%"), ++ build_pointer_type (element_type), ++ get_identifier ("elements_size%"), ++ sizetype); ++ layout_type (row_type); ++ A68_ROW_TYPE_P (row_type) = 1; ++ return row_type; ++} ++ ++/* Given a row type, return the type of the pointer to its elements. */ ++ ++tree ++a68_row_elements_pointer_type (tree type) ++{ ++ gcc_assert (A68_ROW_TYPE_P (type)); ++ /* elements% is the second field. */ ++ return TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (type))); ++} ++ ++/* Given a row type, return the type of its elements. */ ++ ++tree ++a68_row_elements_type (tree type) ++{ ++ return TREE_TYPE (a68_row_elements_pointer_type (type)); ++} ++ ++/* Lower a ROWS mode to a GENERIC tree. ++ ++ dim% Number of dimensions. ++ triplets% Pointer to triplets. ++ ++ Values of this mode are passed to the operators UPB, LWB and ELEMS, which ++ need only descriptor information. There is no need to store any multiple ++ elements. */ ++ ++static tree ++lower_rows_mode (MOID_T *m ATTRIBUTE_UNUSED) ++{ ++ static tree rows_type = NULL_TREE; ++ ++ if (rows_type == NULL_TREE) ++ { ++ rows_type = make_struct_type (NULL_TREE, "rows%", 2, ++ get_identifier ("dim%"), ++ sizetype, ++ get_identifier ("triplets%"), ++ build_pointer_type (a68_triplet_type ())); ++ A68_ROWS_TYPE_P (rows_type) = 1; ++ } ++ return rows_type; ++} ++ ++/* Lower modes in a series. This is used as the mode of the mode yielded by an ++ enclosed clause that yields a series of united rows, for M_ROWS. */ ++ ++static tree ++lower_series (MOID_T *m) ++{ ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ { ++ if (IS (MOID (p), SERIES_MODE) || IS (MOID (p), STOWED_MODE)) ++ lower_series (MOID (p)); ++ else ++ (void) a68_lower_mode (MOID (p)); ++ } ++ ++ return lower_rows_mode (NO_MOID); ++} ++ ++/* Lower a mode to a GENERIC tree. */ ++ ++static tree ++a68_lower_mode (MOID_T *m) ++{ ++ tree type = NULL_TREE; ++ ++ /* If the given mode has already been lowered, return the corresponding ++ tree. */ ++ if (CTYPE (m) != NULL) ++ return CTYPE (m); ++ ++ if (EQUIVALENT (m) != NO_MOID && EQUIVALENT (m) != m) ++ /* This covers INDICANTs and standard MOIDS having an equivalent mode. */ ++ type = a68_lower_mode (EQUIVALENT (m)); ++ else if (m == M_VOID) ++ type = a68_void_type; ++ else if (m == M_HIP) ++ type = lower_hip_mode (m); ++ else if (IS (m, STANDARD)) ++ type = lower_standard_mode (m); ++ else if (IS_REF (m)) ++ type = lower_ref_mode (m); ++ else if (IS_FLEX (m)) ++ type = lower_flex_mode (m); ++ else if (IS (m, PROC_SYMBOL)) ++ type = lower_proc_mode (m); ++ else if (IS_STRUCT (m)) ++ type = lower_struct_mode (m); ++ else if (IS_ROW (m)) ++ type = lower_row_mode (m); ++ else if (IS_UNION (m)) ++ type = lower_union_mode (m); ++ else if (m == M_SIMPLOUT || m == M_SIMPLIN) ++ type = a68_void_type; ++ else if (IS (m, ROWS_SYMBOL)) ++ /* ROWS is a mode that means "any row mode". */ ++ type = lower_rows_mode (m); ++ else if (m == M_VACUUM) ++ /* This is a mode that should not survive the parser. */ ++ type = a68_void_type; ++ else if (IS (m, SERIES_MODE) || IS (m, STOWED_MODE)) ++ { ++ /* When dealing with operators the parser creates some modes that leak ++ SERIES and STOWED "proto-modes" in them, such as for example: ++ ++ UNION ((INT, INT), INT, PROC [] CHAR) ++ ++ These are not really real Algol 68 modes and are useless by ++ themselves, so when we find them, we traverse them (they ultimately ++ contain valid modes that may show up in other contexts and that ++ require being lowered) and just report them as VOID. */ ++ type = lower_series (m); ++ } ++ else ++ { ++ fatal_error (NODE (m) ? a68_get_node_location (NODE (m)) : UNKNOWN_LOCATION, ++ "Cannot lower mode %s", ++ a68_moid_to_string (m, MOID_ERROR_WIDTH, NODE (m))); ++ } ++ ++ /* Associate the created tree node with the mode, and vice-versa. */ ++ gcc_assert (type != NULL_TREE); ++ TYPE_LANG_SPECIFIC (type) = a68_build_lang_type (m); ++ A68_TYPE_HAS_ROWS_P (type) = HAS_ROWS (m); ++ if (CTYPE (m) == NULL_TREE) ++ CTYPE (m) = type; ++ // printf ("DONE LOWERING %s\n", a68_moid_to_string (m, MOID_ERROR_WIDTH, NODE (m))); ++ return type; ++} ++ ++/* Lower MOIDs to GENERIC trees. */ ++ ++void ++a68_lower_moids (MOID_T *mode) ++{ ++ /* First pass: all modes but refs. */ ++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) ++ (void) a68_lower_mode (m); ++ ++ /* Try to layout all incomplete types. This is a two-passes process. */ ++ ++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) ++ { ++ if (IS_STRUCT (m)) ++ { ++ tree struct_type = CTYPE (m); ++ finish_incomplete_fields (struct_type); ++ } ++ else if (IS_UNION (m)) ++ { ++ tree union_type = CTYPE (m); ++ tree c_union_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (union_type))); ++ finish_incomplete_fields (c_union_type); ++ finish_incomplete_fields (union_type); ++ } ++ } ++ ++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) ++ { ++ if (!COMPLETE_TYPE_P (CTYPE (m))) ++ { ++ if (IS_STRUCT (m)) ++ { ++ tree struct_type = CTYPE (m); ++ layout_type (struct_type); ++ compute_record_mode (struct_type); ++ } ++ else if (IS_UNION (m)) ++ { ++ tree union_type = CTYPE (m); ++ tree c_union_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (union_type))); ++ ++ if (!COMPLETE_TYPE_P (c_union_type)) ++ { ++ layout_type (c_union_type); ++ compute_record_mode (c_union_type); ++ } ++ ++ layout_type (union_type); ++ compute_record_mode (union_type); ++ } ++ else ++ layout_type (CTYPE (m)); ++ } ++ } ++ ++ /* Sanity check. */ ++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) ++ { ++ gcc_assert (COMPLETE_TYPE_P (CTYPE (m))); ++ if (IS_UNION (m)) ++ { ++ tree union_type = CTYPE (m); ++ tree c_union_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (union_type))); ++ gcc_assert (COMPLETE_TYPE_P (c_union_type)); ++ } ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-multiples.cc +@@ -0,0 +1,1097 @@ ++/* Lowering routines for all things related to multiples. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Algol 68 multiples are multi-dimensional and dynamically sized. They have a ++ static part and a dynamic part. The static part is conformed by a ++ "descriptor", which contains information about each of the dimensions, and a ++ pointer to the actual elements stored in the multiple. The dynamic part are ++ the elements, which are stored in column order. Both the descriptor and the ++ elements may reside on the stack, data section, or the heap. The mode of a ++ multiple is a "row". ++ ++ Schematically, the descriptor contains: ++ ++ triplets% ++ lb% ub% stride% ++ ... ++ elements% ++ elements_size% ++ ++ Where elements_size% is the size of the buffer pointed by elements%, in ++ bytes. ++ ++ There is a triplet per dimension in the multiple. The number of dimensions ++ in a row mode is static and is determined at compile-time. ++ ++ The infomation stored for each triplet is: ++ ++ lb% is the lower bound of the dimension. ++ ub% is the upper bound of the dimension. ++ stride% is the stride of the dimension. ++ ++ The stride of each dimension is the number of bytes to skip in order to ++ access the next element in that dimension. They express the layout of the ++ multiple in memory. ++ ++ Algol 68 multi-dimensional multiples are stored in row-major (generalized, ++ lexicographical) order: ++ ++ [1:3,1:2]AMODE = ((e1, e2, e3), ++ (e4, e5, e6)) ++ ++ is stored as: ++ ++ 1 2 3 ++ 1 e1 e2 e3 | stride 2S -> stride 1S ++ 2 e4 e5 e6 v ++ ++ Where S is the size in bytes of a single element. That means that for two ++ dimensional multiples, the column stride is always 1S and the row stride is ++ the column size. ++ ++ In general, given a mode with number of elements N1, N2, N3, ...: ++ ++ [N1,N2,N3...,Nn]AMODE ++ ++ the strides of the dimensions are: ++ ++ S1 = N2 * S2 ++ S2 = N3 * S3 ++ S3 = N4 * S4 ++ ... ++ Si = N1 * N2 * ... * Ni-1 ++ ++ Indexing is then performed by a dot-product of an element coordinate and the ++ strides: ++ ++ (i1,i2,i3) . (S1,S2,S3) = offset + i1*S1 + i2*S2 + i3*S3 = index in elements array. ++ ++ Note that the number of elements in each dimension can be easily derived ++ from the bounds and there is no need to store them explicitly, save for ++ performance reasons. Descriptors are bulky enough and often they they are ++ stored on the stack, so we prefer to pay in performance and save in ++ storage. */ ++ ++/* Return a tree with the yielding of SKIP for the given row mode, a ++ multiple. */ ++ ++tree ++a68_get_multiple_skip_tree (MOID_T *m) ++{ ++ tree res = NULL_TREE; ++ int dim = DIM (m); ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); ++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); ++ for (int i = 0; i < dim; ++i) ++ { ++ lower_bounds[i] = ssize_one_node; ++ upper_bounds[i] = ssize_zero_node; ++ } ++ res = a68_row_value (CTYPE (m), dim, ++ build_int_cst (build_pointer_type (void_type_node), 0), ++ size_zero_node, /* elements_size */ ++ lower_bounds, upper_bounds); ++ free (lower_bounds); ++ free (upper_bounds); ++ return res; ++} ++ ++/* Return the number of dimensions of the multiple EXP as an integer ++ constant. */ ++ ++tree ++a68_multiple_dimensions (tree exp) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* triplets% is the first field in the descriptor. */ ++ tree triplets_field = TYPE_FIELDS (TREE_TYPE (exp)); ++ return array_type_nelts_top (TREE_TYPE (triplets_field)); ++} ++ ++/* Return an expression that evaluates to the total number of elements stored ++ in a multiple as a sizetype. */ ++ ++tree ++a68_multiple_num_elems (tree exp) ++{ ++ /* We have to calculate the number of elements based on the dimension ++ triplets in the array type. The number of dimensions is known at compile ++ time, so we don't really need a loop. */ ++ ++ tree num_dimensions_tree = a68_multiple_dimensions (exp); ++ gcc_assert (TREE_CODE (num_dimensions_tree) == INTEGER_CST); ++ int num_dimensions = tree_to_shwi (num_dimensions_tree); ++ ++ tree size = NULL_TREE; ++ for (int dim = 0; dim < num_dimensions; ++dim) ++ { ++ tree size_dim = size_int (dim); ++ tree lower_bound = a68_multiple_lower_bound (exp, size_dim); ++ tree upper_bound = a68_multiple_upper_bound (exp, size_dim); ++ tree dim_size = fold_build2 (PLUS_EXPR, sizetype, ++ fold_convert (sizetype, fold_build2 (MINUS_EXPR, ++ ssizetype, ++ upper_bound, ++ lower_bound)), ++ size_one_node); ++ ++ if (size == NULL_TREE) ++ size = dim_size; ++ else ++ size = fold_build2 (MULT_EXPR, sizetype, size, dim_size); ++ } ++ ++ return size; ++} ++ ++/* Return a size expression that evaluates to the total size, in bytes, of the ++ elements stored in the multiple. */ ++ ++tree ++a68_multiple_elements_size (tree exp) ++{ ++ tree type = TREE_TYPE (exp); ++ gcc_assert (A68_ROW_TYPE_P (type)); ++ ++ /* elements_size% is the third field in the descriptor. */ ++ tree elements_size_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (type))); ++ return fold_build3 (COMPONENT_REF, TREE_TYPE (elements_size_field), ++ exp, elements_size_field, NULL_TREE); ++} ++ ++/* Return the triplet for dimension DIM in the multiple EXP. */ ++ ++static tree ++multiple_triplet (tree exp, tree dim) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* triplets% is the first field in the descriptor. */ ++ tree triplets_field = TYPE_FIELDS (TREE_TYPE (exp)); ++ tree triplets = fold_build3 (COMPONENT_REF, ++ TREE_TYPE (triplets_field), ++ exp, ++ triplets_field, ++ NULL_TREE); ++ ++ /* Get the triplet for the given dimension. */ ++ return build4 (ARRAY_REF, ++ TREE_TYPE (TREE_TYPE (triplets)), ++ triplets, ++ dim, ++ NULL_TREE, ++ NULL_TREE); ++} ++ ++/* Return the lower bound of dimension DIM of the multiple EXP. The returned ++ value is a ssizetype. */ ++ ++tree ++a68_multiple_lower_bound (tree exp, tree dim) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* lb% is the first field in the triplet. */ ++ tree triplet = multiple_triplet (exp, dim); ++ tree lower_bound_field = TYPE_FIELDS (TREE_TYPE (triplet)); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (lower_bound_field), ++ triplet, ++ lower_bound_field, ++ NULL_TREE); ++} ++ ++/* Return an expression that sets the lower bound of dimension DIM of the ++ multiple EXP to BOUND. */ ++ ++tree ++a68_multiple_set_lower_bound (tree exp, tree dim, tree bound) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (bound), ++ a68_multiple_lower_bound (exp, dim), ++ bound); ++} ++ ++/* Return the upper bound of dimension DIM of the multiple EXP. The returned ++ value is a ssizetype. */ ++ ++tree ++a68_multiple_upper_bound (tree exp, tree dim) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* ub% is the second field in the triplet. */ ++ tree triplet = multiple_triplet (exp, dim); ++ tree upper_bound_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (triplet))); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (upper_bound_field), ++ triplet, ++ upper_bound_field, ++ NULL_TREE); ++} ++ ++/* Return an expression that sets the upper bound of dimension DIM of the ++ multiple EXP to BOUND. */ ++ ++tree ++a68_multiple_set_upper_bound (tree exp, tree dim, tree bound) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (bound), ++ a68_multiple_upper_bound (exp, dim), ++ bound); ++} ++ ++/* Return the stride of dimension DIM of the multiple EXP. */ ++ ++tree ++a68_multiple_stride (tree exp, tree dim) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* stride% is the third field in the triplet. */ ++ tree triplet = multiple_triplet (exp, dim); ++ tree stride_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (triplet)))); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (stride_field), ++ triplet, ++ stride_field, ++ NULL_TREE); ++} ++ ++/* Return an expression that sets the stride of dimension DIM of the multiple ++ EXP to STRIDE. ++ ++ STRIDE must be a sizetype. */ ++ ++tree ++a68_multiple_set_stride (tree exp, tree dim, tree stride) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (stride), ++ a68_multiple_stride (exp, dim), ++ stride); ++} ++ ++/* Return the triplets of the multiple EXP. */ ++ ++tree ++a68_multiple_triplets (tree exp) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* triplets% is the first field in the descriptor. */ ++ tree triplets_field = TYPE_FIELDS (TREE_TYPE (exp)); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (triplets_field), ++ exp, ++ triplets_field, ++ NULL_TREE); ++} ++ ++/* Return the pointer to the elements of the multiple EXP. */ ++ ++tree ++a68_multiple_elements (tree exp) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* elements% is the second field in the descriptor. */ ++ tree elements_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (exp))); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (elements_field), ++ exp, ++ elements_field, ++ NULL_TREE); ++} ++ ++/* Return an expression that sets the elements% field of EXP to ELEMENTS. */ ++ ++tree ++a68_multiple_set_elements (tree exp, tree elements) ++{ ++ /* elements% is the second field in the descriptor. */ ++ tree elements_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (exp))); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (elements_field), ++ fold_build3 (COMPONENT_REF, ++ TREE_TYPE (elements_field), ++ exp, ++ elements_field, ++ NULL_TREE), ++ elements); ++} ++ ++/* Return an expression that sets the elements_size% field of EXP to ++ ELEMENTS_SIZE, which must be a sizetype. */ ++ ++tree ++a68_multiple_set_elements_size (tree exp, tree elements_size) ++{ ++ /* elements_size% is the third field in the descriptor. */ ++ tree elements_size_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (exp)))); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (elements_size_field), ++ fold_build3 (COMPONENT_REF, ++ TREE_TYPE (elements_size_field), ++ exp, ++ elements_size_field, ++ NULL_TREE), ++ elements_size); ++} ++ ++/* Given two arrays of LOWER_BOUNDs and UPPER_BOUNDs corresponding to DIM ++ dimensions of a multiple of type TYPE, fill in the strides in STRIDES, which ++ is assumed to be a buffer big enough to hold DIM tree nodes. The bounds ++ shall be of type ssizetype, and the calculated strides are of type sizetype, ++ i.e. unsigned. */ ++ ++void ++a68_multiple_compute_strides (tree type, size_t dim, ++ tree *lower_bounds, tree *upper_bounds, ++ tree *strides) ++{ ++ tree stride = size_in_bytes (a68_row_elements_type (type)); ++ for (ssize_t i = dim - 1; i >= 0; --i) ++ { ++ strides[i] = stride; ++ ++ /* Calculate the stride for the previous dimension. */ ++ tree dim_num_elems ++ = save_expr (fold_build2 (PLUS_EXPR, ++ sizetype, ++ fold_convert (sizetype, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ upper_bounds[i], lower_bounds[i])), ++ size_one_node)); ++ stride = fold_build2 (MULT_EXPR, sizetype, stride, dim_num_elems); ++ } ++} ++ ++/* Return a constructor for a multiple of row type TYPE, using TRIPLETS and ++ ELEMENTS. ELEMENTS_SIZE is the size in bytes of the memory pointed by ++ ELEMENTS. */ ++ ++tree ++a68_row_value_raw (tree type, tree triplets, ++ tree elements, tree elements_size) ++{ ++ tree triplets_field; ++ tree elements_field; ++ tree elements_size_field; ++ vec *ce = NULL; ++ ++ gcc_assert (A68_ROW_TYPE_P (type)); ++ triplets_field = TYPE_FIELDS (type); ++ elements_field = TREE_CHAIN (triplets_field); ++ elements_size_field = TREE_CHAIN (elements_field); ++ CONSTRUCTOR_APPEND_ELT (ce, triplets_field, triplets); ++ CONSTRUCTOR_APPEND_ELT (ce, elements_field, ++ fold_build1 (CONVERT_EXPR ,TREE_TYPE (elements_field), elements)); ++ CONSTRUCTOR_APPEND_ELT (ce, elements_size_field, elements_size); ++ return build_constructor (type, ce); ++} ++ ++/* Return a constructor for a multiple of row type TYPE, of DIM dimensions and ++ pointing to ELEMENTS. ++ ++ ELEMENTS_SIZE contains the size in bytes of the memory pointed by ELEMENTS. ++ ++ *LOWER_BOUND and *UPPER_BOUND are the bounds for the DIM dimensions. ++*/ ++ ++tree ++a68_row_value (tree type, size_t dim, ++ tree elements, tree elements_size, ++ tree *lower_bound, tree *upper_bound) ++{ ++ tree triplets_field; ++ tree elements_field; ++ tree elements_size_field; ++ vec *ce = NULL; ++ ++ gcc_assert (A68_ROW_TYPE_P (type)); ++ triplets_field = TYPE_FIELDS (type); ++ elements_field = TREE_CHAIN (triplets_field); ++ elements_size_field = TREE_CHAIN (elements_field); ++ ++ tree triplet_type = TREE_TYPE (TREE_TYPE (triplets_field)); ++ tree lower_bound_field = TYPE_FIELDS (triplet_type); ++ tree upper_bound_field = TREE_CHAIN (TYPE_FIELDS (triplet_type)); ++ tree stride_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (triplet_type))); ++ ++ /* Calculate strides. */ ++ tree *strides = (tree *) xmalloc (sizeof (tree) * dim); ++ a68_multiple_compute_strides (type, dim, lower_bound, upper_bound, strides); ++ ++ vec *triplets_ce = NULL; ++ for (size_t i = 0; i < dim; ++i) ++ { ++ CONSTRUCTOR_APPEND_ELT (triplets_ce, ++ size_int (i), ++ build_constructor_va (triplet_type, ++ 3, ++ lower_bound_field, lower_bound[i], ++ upper_bound_field, upper_bound[i], ++ stride_field, strides[i])); ++ } ++ free (strides); ++ CONSTRUCTOR_APPEND_ELT (ce, triplets_field, ++ build_constructor (TREE_TYPE (triplets_field), triplets_ce)); ++ CONSTRUCTOR_APPEND_ELT (ce, elements_field, ++ fold_build1 (CONVERT_EXPR, TREE_TYPE (elements_field), elements)); ++ CONSTRUCTOR_APPEND_ELT (ce, elements_size_field, ++ elements_size ? elements_size : size_zero_node); ++ tree multiple = build_constructor (type, ce); ++ return multiple; ++} ++ ++/* Build a tree to slice a multiple given a set of indexes. ++ ++ P is the tree node corresponding to the slice. It is used as the source of ++ location information. ++ ++ MULTIPLE is the multiple value being sliced. If SLICING_NAME is true, it ++ means the slicing operation is for a name and therefore it must yield a ++ name. ++ ++ INDEXES is a list of NUM_INDEXES indexes, which are units. ++ NUM_INDEXES must match the dimension of the multiple. */ ++ ++tree ++a68_multiple_slice (NODE_T *p, ++ tree multiple, bool slicing_name, ++ int num_indexes, tree *indexes) ++{ ++ tree slice = NULL_TREE; ++ tree bounds_check = NULL_TREE; ++ ++ multiple = save_expr (multiple); ++ tree index = NULL_TREE; ++ for (int idx = 0; idx < num_indexes; ++idx) ++ { ++ tree lower_bound = a68_multiple_lower_bound (multiple, size_int (idx)); ++ tree index_expr = save_expr (indexes[idx]); ++ ++ /* Do run-time bound checking if requested. */ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ { ++ tree upper_bound = a68_multiple_upper_bound (multiple, size_int (idx)); ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYBOUNDS, ++ void_type_node, 5, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ fold_convert (ssizetype, index_expr), ++ fold_convert (ssizetype, lower_bound), ++ fold_convert (ssizetype, upper_bound)); ++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); ++ ++ /* If LB > UB, the dimension contains no elements. ++ Otherwise, it must hold IDX >= LB && IDX <= UB */ ++ tree dim_bounds_check = fold_build2 (TRUTH_AND_EXPR, sizetype, ++ fold_build2 (LE_EXPR, ssizetype, ++ lower_bound, upper_bound), ++ fold_build2 (TRUTH_AND_EXPR, ++ boolean_type_node, ++ fold_build2 (GE_EXPR, ssizetype, ++ fold_convert (ssizetype, ++ index_expr), ++ lower_bound), ++ fold_build2 (LE_EXPR, ssizetype, ++ fold_convert (ssizetype, ++ index_expr), ++ upper_bound))); ++ dim_bounds_check = fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ ssizetype, ++ dim_bounds_check, call); ++ ++ /* bounds_check_ok || call_runtime_error */ ++ if (bounds_check == NULL_TREE) ++ bounds_check = dim_bounds_check; ++ else ++ bounds_check = fold_build2 (TRUTH_ANDIF_EXPR, ++ ssizetype, ++ bounds_check, ++ dim_bounds_check); ++ } ++ ++ /* Now add the effect of this dimension's subscript in the index. Note ++ that the stride is expressed in bytes. */ ++ tree stride = a68_multiple_stride (multiple, size_int (idx)); ++ tree adjusted_index ++ = fold_convert (sizetype, fold_build2 (MINUS_EXPR, ssizetype, ++ fold_convert (ssizetype, index_expr), ++ lower_bound)); ++ tree term = fold_build2 (MULT_EXPR, sizetype, ++ adjusted_index, stride); ++ if (index == NULL_TREE) ++ index = term; ++ else ++ index = fold_build2 (PLUS_EXPR, sizetype, ++ index, term); ++ } ++ ++ tree elements = a68_multiple_elements (multiple); ++ tree element_pointer_type = TREE_TYPE (elements); ++ tree element_type = TREE_TYPE (element_pointer_type); ++ ++ /* Now refer to the indexed element. In case we are slicing a ref to a ++ multiple, return the address of the element and not the element ++ itself. */ ++ tree element_address = fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ elements, ++ index); ++ if (slicing_name) ++ slice = element_address; ++ else ++ slice = fold_build2 (MEM_REF, ++ element_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ elements, ++ index), ++ fold_convert (element_pointer_type, ++ integer_zero_node)); ++ ++ /* Prepend bounds checking code if necessary. */ ++ if (bounds_check != NULL_TREE) ++ { ++ slice = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (slice), ++ bounds_check, ++ slice); ++ } ++ ++ return slice; ++} ++ ++/* Auxiliary routine for a68_multiple_copy_elemens. */ ++ ++static tree ++copy_multiple_dimension_elems (size_t dim, size_t num_dimensions, ++ tree to, tree from, ++ tree to_elements, tree from_elements, ++ tree *to_offset, tree *from_offset, ++ tree *indexes) ++{ ++ tree element_pointer_type = TREE_TYPE (from_elements); ++ tree element_type = TREE_TYPE (element_pointer_type); ++ tree upb = a68_multiple_upper_bound (from, size_int (dim)); ++ ++ char *name = xasprintf ("r%ld%%", dim); ++ indexes[dim] = a68_lower_tmpvar (name, ssizetype, ++ a68_multiple_lower_bound (from, ++ size_int (dim))); ++ free (name); ++ ++ /* Loop body. */ ++ a68_push_range (NULL); ++ { ++ /* if (indexes[dim] > upb) break; */ ++ a68_add_stmt (fold_build1 (EXIT_EXPR, void_type_node, ++ fold_build2 (GT_EXPR, size_type_node, ++ indexes[dim], upb))); ++ ++ /* Add this dimension's contribution to the offsets. */ ++ tree index = fold_convert (sizetype, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ upb, indexes[dim])); ++ *to_offset = fold_build2 (PLUS_EXPR, sizetype, ++ *to_offset, ++ fold_build2 (MULT_EXPR, sizetype, ++ index, ++ a68_multiple_stride (to, size_int (dim)))); ++ *from_offset = fold_build2 (PLUS_EXPR, sizetype, ++ *from_offset, ++ fold_build2 (MULT_EXPR, sizetype, ++ index, ++ a68_multiple_stride (from, size_int (dim)))); ++ ++ if (dim == num_dimensions - 1) ++ { ++ /* Most inner loop, copy one element. */ ++ ++ tree to_off = a68_lower_tmpvar ("to_offset%", sizetype, *to_offset); ++ tree from_off = a68_lower_tmpvar ("from_offset%", sizetype, *from_offset); ++ ++ tree to_elem = fold_build2 (MEM_REF, ++ element_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ to_elements, ++ to_off), ++ fold_convert (element_pointer_type, ++ integer_zero_node)); ++ tree from_elem = fold_build2 (MEM_REF, ++ element_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ from_elements, ++ from_off), ++ fold_convert (element_pointer_type, ++ integer_zero_node)); ++ ++ /* XXX ++ if may_overlap then modify only if dst_offset < src_offset */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, element_type, ++ to_elem, from_elem)); ++ } ++ else ++ { ++ a68_add_stmt (copy_multiple_dimension_elems (dim + 1, num_dimensions, ++ to, from, ++ to_elements, from_elements, ++ to_offset, from_offset, ++ indexes)); ++ } ++ ++ /* indexes[dim]++ */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ssizetype, ++ indexes[dim], ssize_int (1))); ++ } ++ tree loop_body = a68_pop_range (); ++ ++ return fold_build1 (LOOP_EXPR, void_type_node, loop_body); ++} ++ ++/* Copy the elements of a given multiple (string) FROM to the multiple (string) ++ TO. ++ ++ The dimensions and bounds of both multiples are supposed to match, and they ++ are supposed to not be flat. ++ ++ XXX simple cases with same strides may be done with a memcpy. ++ XXX compile this into a support routine to reduce code size. */ ++ ++tree ++a68_multiple_copy_elems (MOID_T *mode, tree to, tree from) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (to)) ++ && A68_ROW_TYPE_P (TREE_TYPE (from))); ++ ++ /* Deflex modes as needed and determine dimension. */ ++ if (IS_FLEX (mode)) ++ mode = SUB (mode); ++ int num_dimensions = (mode == M_STRING ? 1 : DIM (mode)); ++ ++ a68_push_range (NULL); ++ to = a68_lower_tmpvar ("to%", TREE_TYPE (to), to); ++ from = a68_lower_tmpvar ("from%", TREE_TYPE (from), from); ++ tree from_elements = a68_multiple_elements (from); ++ tree element_pointer_type = TREE_TYPE (from_elements); ++ from_elements = a68_lower_tmpvar ("from_elements%", element_pointer_type, ++ from_elements); ++ tree to_elements = a68_lower_tmpvar ("to_elements%", element_pointer_type, ++ a68_multiple_elements (to)); ++ ++ tree *indexes = (tree *) xmalloc (num_dimensions * sizeof (tree)); ++ tree to_offset = size_zero_node; ++ tree from_offset = size_zero_node; ++ a68_add_stmt (copy_multiple_dimension_elems (0 /* dim */, num_dimensions, ++ to, from, ++ to_elements, from_elements, ++ &to_offset, &from_offset, ++ indexes)); ++ free (indexes); ++ return a68_pop_range (); ++} ++ ++/* Given a rows type, return the number of dimensions. */ ++ ++tree ++a68_rows_dim (tree exp) ++{ ++ gcc_assert (A68_ROWS_TYPE_P (TREE_TYPE (exp))); ++ ++ /* dim% is the first field in the rows struct. */ ++ tree dim_field = TYPE_FIELDS (TREE_TYPE (exp)); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (dim_field), ++ exp, ++ dim_field, ++ NULL_TREE); ++} ++ ++/* Given a multiple value, create a rows value reflecting the multiple's ++ dimensions and triplets. */ ++ ++tree ++a68_rows_value (tree multiple) ++{ ++ tree rows_type = CTYPE (M_ROWS); ++ tree dim_field = TYPE_FIELDS (rows_type); ++ tree triplets_field = TREE_CHAIN (dim_field); ++ ++ tree dimensions = save_expr (a68_multiple_dimensions (multiple)); ++ tree triplets = fold_build1 (ADDR_EXPR, TREE_TYPE (triplets_field), ++ a68_multiple_triplets (multiple)); ++ return build_constructor_va (rows_type, 2, ++ dim_field, dimensions, ++ triplets_field, triplets); ++} ++ ++/* Given a rows value and a dimension number, return the upper bound or the ++ lower of the given dimension. The returned bound is a ssizetype. ++ ++ DIM must be a sizetype. */ ++ ++static tree ++rows_lower_or_upper_bound (tree rows, tree dim, bool upper) ++{ ++ tree rows_type = TREE_TYPE (rows); ++ tree triplet_type = a68_triplet_type (); ++ tree triplet_pointer_type = build_pointer_type (triplet_type); ++ tree triplet_lb_field = TYPE_FIELDS (triplet_type); ++ tree triplet_ub_field = TREE_CHAIN (TYPE_FIELDS (triplet_type)); ++ tree triplets_field = TREE_CHAIN (TYPE_FIELDS (rows_type)); ++ tree triplets = fold_build3 (COMPONENT_REF, triplet_pointer_type, ++ rows, triplets_field, NULL_TREE); ++ tree triplet_offset = fold_build2 (MULT_EXPR, sizetype, ++ dim, ++ size_in_bytes (triplet_type)); ++ tree bound = fold_build3 (COMPONENT_REF, ssizetype, ++ fold_build1 (INDIRECT_REF, triplet_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ triplet_pointer_type, ++ triplets, ++ triplet_offset)), ++ upper ? triplet_ub_field : triplet_lb_field, ++ NULL_TREE); ++ ++ return bound; ++} ++ ++/* Return the lower bound of dimension DIM of ROWS. */ ++ ++tree ++a68_rows_lower_bound (tree rows, tree dim) ++{ ++ return rows_lower_or_upper_bound (rows, dim, false); ++} ++ ++/* Return the upper bound of dimension DIM of ROWS. */ ++ ++tree ++a68_rows_upper_bound (tree rows, tree dim) ++{ ++ return rows_lower_or_upper_bound (rows, dim, true); ++} ++ ++/* Return a tree that checks that a given INDEX is correct given a multiple's ++ bounds in a given rank DIM. ++ ++ If UPPER_BOUND is true then INDEX shall be less or equal than the multiple's ++ upper bound. Otherwise INDEX shall be bigger or equal than the multiple's ++ lower bound. ++ ++ If the condition above doesn't hold then a call to a run-time function is ++ performed: if UPPER_BOUND is true then ARRAYUPPERBOUND is called. Otherwise ++ ARRAYLOWERBOUND is called. */ ++ ++tree ++a68_multiple_single_bound_check (NODE_T *p, tree dim, ++ tree multiple, tree index, bool upper_bound) ++{ ++ index = save_expr (index); ++ multiple = save_expr (multiple); ++ ++ tree bound = (upper_bound ++ ? a68_multiple_upper_bound (multiple, dim) ++ : a68_multiple_lower_bound (multiple, dim)); ++ a68_libcall_fn libcall = (upper_bound ++ ? A68_LIBCALL_ARRAYUPPERBOUND ++ : A68_LIBCALL_ARRAYLOWERBOUND); ++ ++ /* Build the call to ARRAY*BOUNDS. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (libcall, ++ void_type_node, 4, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ fold_convert (ssizetype, index), ++ fold_convert (ssizetype, bound)); ++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); ++ ++ tree bounds_check = fold_build2 (upper_bound ? LE_EXPR : GE_EXPR, ++ ssizetype, ++ fold_convert (ssizetype, index), ++ bound); ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ ssizetype, ++ bounds_check, call); ++} ++ ++/* Return a tree that checks whether the given DIM is a valid dimension/rank of ++ a boundable object with dimension BOUNDABLE_DIM. If the provided DIM is not ++ a valid dimention then a call to the run-time function ARRAYDIM is ++ performed. ++ ++ BOUNDABLE_DIM and DIM must be of type sizetype. They are both one-based. ++ ++ The parse tree node P is used as the source for the filename and line number ++ passed to the run-time function. */ ++ ++static tree ++a68_boundable_dim_check (NODE_T *p, tree boundable_dim, tree dim) ++{ ++ boundable_dim = save_expr (boundable_dim); ++ dim = save_expr (dim); ++ ++ /* Build the call to ARRAYDIM. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYDIM, ++ void_type_node, 4, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ boundable_dim, dim); ++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); ++ ++ tree dim_check = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, ++ fold_build2 (GT_EXPR, boolean_type_node, dim, size_zero_node), ++ fold_build2 (LE_EXPR, boolean_type_node, dim, boundable_dim)); ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ ssizetype, ++ dim_check, call); ++} ++ ++/* Return a tree that checks whether the given DIM is a valid dimension/rank of ++ the given rows value ROWS. ++ ++ DIM is a sizetype. ++ The parse tree node P is used as the source for the filename and line ++ number. */ ++ ++tree ++a68_rows_dim_check (NODE_T *p, tree rows, tree dim) ++{ ++ return a68_boundable_dim_check (p, a68_rows_dim (rows), dim); ++} ++ ++/* Return a tree that checks whether the given DIM is a valid dimension/rank of ++ the given multiple value MULTIPLE. ++ ++ DIM is a sizetype. ++ The parse tree node P is used as the source for the filename and line ++ number. */ ++ ++tree ++a68_multiple_dim_check (NODE_T *p, tree multiple, tree dim) ++{ ++ return a68_boundable_dim_check (p, a68_multiple_dimensions (multiple), dim); ++} ++ ++/* Return a tree that checks whether the given INDEX falls within the bounds of ++ MULTIPLE in the rank DIM. If the provided index is out of bounds then a ++ call to the run-time function ARRAYBOUNDS is performed. ++ ++ DIM must be a sizetype. ++ MULTIPLE must be a multiple value. ++ INDEX must be a ssizetype. ++ ++ The parse tree node P is used as the source for the filename and line number ++ passed to the run-time function. */ ++ ++tree ++a68_multiple_bounds_check (NODE_T *p, tree dim, ++ tree multiple, tree index) ++{ ++ index = save_expr (index); ++ multiple = save_expr (multiple); ++ ++ tree upper_bound = a68_multiple_upper_bound (multiple, dim); ++ tree lower_bound = a68_multiple_lower_bound (multiple, dim); ++ ++ /* Build the call to ARRAYBOUNDS. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYBOUNDS, ++ void_type_node, 5, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ fold_convert (ssizetype, index), ++ fold_convert (ssizetype, lower_bound), ++ fold_convert (ssizetype, upper_bound)); ++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); ++ ++ /* If LB > UB, the dimension contains no elements. ++ Otherwise, it must hold IDX >= LB && IDX <= UB */ ++ tree bounds_check = fold_build2 (TRUTH_AND_EXPR, sizetype, ++ fold_build2 (LE_EXPR, ssizetype, ++ lower_bound, upper_bound), ++ fold_build2 (TRUTH_AND_EXPR, ++ boolean_type_node, ++ fold_build2 (GE_EXPR, ssizetype, ++ fold_convert (ssizetype, ++ index), ++ lower_bound), ++ fold_build2 (LE_EXPR, ssizetype, ++ fold_convert (ssizetype, ++ index), ++ upper_bound))); ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ ssizetype, ++ bounds_check, call); ++} ++ ++/* Emit a run-time error if the bounds of M1 and M2 are not the same. Both ++ multiples are assumed to have the same type and therefore feature the same ++ number of dimensions. */ ++ ++tree ++a68_multiple_bounds_check_equal (NODE_T *p, tree m1, tree m2) ++{ ++ m1 = save_expr (m1); ++ m2 = save_expr (m2); ++ ++ /* First determine the rank of the multiples and check they match. */ ++ tree m1_dimensions = a68_multiple_dimensions (m1); ++ tree m2_dimensions = a68_multiple_dimensions (m2); ++ gcc_assert (TREE_CODE (m1_dimensions) == INTEGER_CST ++ && TREE_CODE (m2_dimensions) == INTEGER_CST); ++ ++ int dim1 = tree_to_shwi (m1_dimensions); ++ int dim2 = tree_to_shwi (m2_dimensions); ++ gcc_assert (dim1 == dim2); ++ ++ a68_push_range (NULL /* VOID */); ++ ++ /* For each dimension, check that bounds are the same in both multiples. */ ++ int i; ++ for (i = 0; i < dim1; ++i) ++ { ++ tree dim_tree = build_int_cst (ssizetype, i); ++ tree dim_plus_one = fold_build2 (PLUS_EXPR, ssizetype, ++ dim_tree, ++ fold_convert (ssizetype, size_one_node)); ++ ++ tree lb1 = save_expr (a68_multiple_lower_bound (m1, dim_tree)); ++ tree lb2 = save_expr (a68_multiple_lower_bound (m2, dim_tree)); ++ ++ tree ub1 = save_expr (a68_multiple_upper_bound (m1, dim_tree)); ++ tree ub2 = save_expr (a68_multiple_upper_bound (m2, dim_tree)); ++ ++ tree bounds_equal = fold_build2 (TRUTH_AND_EXPR, ++ boolean_type_node, ++ fold_build2 (EQ_EXPR, boolean_type_node, ++ lb1, lb2), ++ fold_build2 (EQ_EXPR, boolean_type_node, ++ ub1, ub2)); ++ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYBOUNDSMISMATCH, ++ void_type_node, 7, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ dim_plus_one, ++ lb1, ub1, lb2, ub2); ++ call = fold_build2 (COMPOUND_EXPR, boolean_type_node, call, boolean_false_node); ++ ++ tree check = fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, boolean_type_node, ++ bounds_equal, ++ call); ++ a68_add_stmt (check); ++ } ++ ++ return a68_pop_range (); ++} ++ ++/* Allocate a multiple on the heap. ++ ++ M is the mode the multiple to allocate. ++ DIM is the number of dimensions of the multiple. ++ ELEMS is a pointer to the elements of the multiple. ++ ELEMS_SIZE is the size in bytes of ELEMS. ++ *LOWER_BOUND and *UPPER_BOUND are the bounds for the DIM dimensions. */ ++ ++tree ++a68_row_malloc (tree type, int dim, tree elems, tree elems_size, ++ tree *lower_bound, tree *upper_bound) ++{ ++ tree ptr_to_type = build_pointer_type (type); ++ ++ a68_push_range (NULL); ++ ++ /* Allocate space for the descriptor. */ ++ tree ptr_to_multiple = a68_lower_tmpvar ("ptr_to_multiple%", ptr_to_type, ++ a68_lower_malloc (type, size_in_bytes (type))); ++ tree multiple = a68_row_value (type, dim, ++ elems, elems_size, ++ lower_bound, upper_bound); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, type, ptr_to_multiple), ++ multiple)); ++ a68_add_stmt (ptr_to_multiple); ++ tree res = a68_pop_range (); ++ TREE_TYPE (res) = ptr_to_type; ++ return res; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-posix.cc +@@ -0,0 +1,559 @@ ++/* Lowering routines for the POSIX prelude. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Set the exit status of the running process, to be returned to the OS upon ++ exit. */ ++ ++tree ++a68_posix_setexitstatus (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_SET_EXIT_STATUS); ++} ++ ++/* Number of command line arguments passed to the program. */ ++ ++tree ++a68_posix_argc (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_ARGC); ++} ++ ++/* Gets the Nth command line argument passed to the program. If N is out of ++ range the result is an empty string. */ ++ ++tree ++a68_posix_argv (void) ++{ ++ static tree argv_fndecl; ++ ++ if (argv_fndecl == NULL_TREE) ++ { ++ argv_fndecl ++ = a68_low_toplevel_func_decl ("argv", ++ build_function_type_list (CTYPE (M_STRING), ++ a68_int_type, ++ NULL_TREE)); ++ announce_function (argv_fndecl); ++ ++ tree param = a68_low_func_param (argv_fndecl, "n", a68_int_type); ++ DECL_ARGUMENTS (argv_fndecl) = param; ++ ++ a68_push_function_range (argv_fndecl, CTYPE (M_STRING), ++ true /* top_level */); ++ ++ a68_push_range (M_STRING); ++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); ++ TREE_ADDRESSABLE (len) = 1; ++ ++ tree ptrtochar_type = build_pointer_type (a68_char_type); ++ tree elems = a68_lower_tmpvar ("elems%", ptrtochar_type, ++ a68_build_libcall (A68_LIBCALL_POSIX_ARGV, ++ ptrtochar_type, 2, ++ param, ++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), ++ len))); ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, len); ++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, ++ len, ++ size_in_bytes (a68_char_type)); ++ a68_add_stmt (a68_row_value (CTYPE (M_STRING), 1 /* dim */, ++ elems, elems_size, ++ &lower_bound, &upper_bound)); ++ tree body = a68_pop_range (); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (argv_fndecl)), ++ argv_fndecl); ++} ++ ++/* Gets the value of an environment variable, or an empty string if the ++ variable is not set. */ ++ ++tree ++a68_posix_getenv (void) ++{ ++ static tree getenv_fndecl; ++ ++ if (getenv_fndecl == NULL_TREE) ++ { ++ getenv_fndecl ++ = a68_low_toplevel_func_decl ("getenv", ++ build_function_type_list (CTYPE (M_STRING), ++ CTYPE (M_STRING), ++ NULL_TREE)); ++ announce_function (getenv_fndecl); ++ ++ tree param = a68_low_func_param (getenv_fndecl, "varname", CTYPE (M_STRING)); ++ DECL_ARGUMENTS (getenv_fndecl) = param; ++ ++ a68_push_function_range (getenv_fndecl, CTYPE (M_STRING), ++ true /* top_level */); ++ ++ a68_push_range (M_STRING); ++ ++ tree varname = a68_lower_tmpvar ("varname%", CTYPE (M_STRING), ++ param); ++ ++ tree ptrtochar_type = build_pointer_type (a68_char_type); ++ tree convelems = a68_lower_tmpvar ("convelems%", ptrtochar_type, ++ build_int_cst (ptrtochar_type, 0)); ++ TREE_ADDRESSABLE (convelems) = 1; ++ tree convelemslen = a68_lower_tmpvar ("convelemslen%", sizetype, ++ size_int (0)); ++ TREE_ADDRESSABLE (convelemslen) = 1; ++ ++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_GETENV, ++ void_type_node, 5, ++ a68_multiple_elements (varname), ++ a68_multiple_num_elems (varname), ++ a68_multiple_stride (varname, size_zero_node), ++ fold_build1 (ADDR_EXPR, build_pointer_type (ptrtochar_type), ++ convelems), ++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), ++ convelemslen)); ++ a68_add_stmt (call); ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, convelemslen); ++ tree convelems_size = fold_build2 (MULT_EXPR, sizetype, ++ convelemslen, ++ size_in_bytes (a68_char_type)); ++ a68_add_stmt (a68_row_value (CTYPE (M_STRING), 1 /* dim */, ++ convelems, convelems_size, ++ &lower_bound, &upper_bound)); ++ tree body = a68_pop_range (); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (getenv_fndecl)), ++ getenv_fndecl); ++} ++ ++tree ++a68_posix_putchar (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_PUTCHAR); ++} ++ ++tree ++a68_posix_puts (void) ++{ ++ static tree puts_fndecl; ++ ++ if (puts_fndecl == NULL_TREE) ++ { ++ puts_fndecl ++ = a68_low_toplevel_func_decl ("puts", ++ build_function_type_list (void_type_node, ++ CTYPE (M_STRING), ++ NULL_TREE)); ++ announce_function (puts_fndecl); ++ ++ tree param = a68_low_func_param (puts_fndecl, "str", CTYPE (M_STRING)); ++ DECL_ARGUMENTS (puts_fndecl) = param; ++ ++ a68_push_function_range (puts_fndecl, void_type_node, ++ true /* top_level */); ++ ++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_PUTS, ++ void_type_node, 3, ++ a68_multiple_elements (param), ++ a68_multiple_num_elems (param), ++ a68_multiple_stride (param, size_zero_node)); ++ a68_pop_function_range (call); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (puts_fndecl)), ++ puts_fndecl); ++} ++ ++tree ++a68_posix_fconnect (void) ++{ ++ static tree fconnect_fndecl; ++ ++ if (fconnect_fndecl == NULL_TREE) ++ { ++ fconnect_fndecl ++ = a68_low_toplevel_func_decl ("fconnect", ++ build_function_type_list (a68_int_type, ++ CTYPE (M_STRING), ++ a68_bits_type, ++ NULL_TREE)); ++ announce_function (fconnect_fndecl); ++ ++ tree host = a68_low_func_param (fconnect_fndecl, "host", CTYPE (M_STRING)); ++ tree port = a68_low_func_param (fconnect_fndecl, "port", a68_int_type); ++ DECL_ARGUMENTS (fconnect_fndecl) = chainon (host, port); ++ ++ a68_push_function_range (fconnect_fndecl, a68_int_type, ++ true /* top_level */); ++ ++ ++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FCONNECT, ++ a68_int_type, 4, ++ a68_multiple_elements (host), ++ a68_multiple_num_elems (host), ++ a68_multiple_stride (host, size_zero_node), ++ port); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fconnect_fndecl)), ++ fconnect_fndecl); ++} ++ ++tree ++a68_posix_fcreate (void) ++{ ++ static tree fcreate_fndecl; ++ ++ if (fcreate_fndecl == NULL_TREE) ++ { ++ fcreate_fndecl ++ = a68_low_toplevel_func_decl ("fcreate", ++ build_function_type_list (a68_int_type, ++ CTYPE (M_STRING), ++ a68_bits_type, ++ NULL_TREE)); ++ announce_function (fcreate_fndecl); ++ ++ tree pathname = a68_low_func_param (fcreate_fndecl, "pathname", CTYPE (M_STRING)); ++ tree mode = a68_low_func_param (fcreate_fndecl, "mode", a68_int_type); ++ DECL_ARGUMENTS (fcreate_fndecl) = chainon (pathname, mode); ++ ++ a68_push_function_range (fcreate_fndecl, a68_int_type, ++ true /* top_level */); ++ ++ ++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FCREATE, ++ a68_int_type, 4, ++ a68_multiple_elements (pathname), ++ a68_multiple_num_elems (pathname), ++ a68_multiple_stride (pathname, size_zero_node), ++ mode); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fcreate_fndecl)), ++ fcreate_fndecl); ++} ++ ++tree ++a68_posix_fopen (void) ++{ ++ static tree fopen_fndecl; ++ ++ if (fopen_fndecl == NULL_TREE) ++ { ++ fopen_fndecl ++ = a68_low_toplevel_func_decl ("fopen", ++ build_function_type_list (a68_int_type, ++ CTYPE (M_STRING), ++ a68_bits_type, ++ NULL_TREE)); ++ announce_function (fopen_fndecl); ++ ++ tree pathname = a68_low_func_param (fopen_fndecl, "pathname", CTYPE (M_STRING)); ++ tree flags = a68_low_func_param (fopen_fndecl, "flags", a68_int_type); ++ DECL_ARGUMENTS (fopen_fndecl) = chainon (pathname, flags); ++ ++ a68_push_function_range (fopen_fndecl, a68_int_type, ++ true /* top_level */); ++ ++ ++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FOPEN, ++ a68_int_type, 4, ++ a68_multiple_elements (pathname), ++ a68_multiple_num_elems (pathname), ++ a68_multiple_stride (pathname, size_zero_node), ++ flags); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fopen_fndecl)), ++ fopen_fndecl); ++} ++ ++tree ++a68_posix_fclose (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_FCLOSE); ++} ++ ++tree ++a68_posix_fsize (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_FSIZE); ++} ++ ++tree ++a68_posix_lseek (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_LSEEK); ++} ++ ++tree ++a68_posix_errno (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_ERRNO); ++} ++ ++tree ++a68_posix_perror (void) ++{ ++ static tree perror_fndecl; ++ ++ if (perror_fndecl == NULL_TREE) ++ { ++ perror_fndecl ++ = a68_low_toplevel_func_decl ("perror", ++ build_function_type_list (void_type_node, ++ CTYPE (M_STRING), ++ NULL_TREE)); ++ announce_function (perror_fndecl); ++ ++ tree str = a68_low_func_param (perror_fndecl, "str", CTYPE (M_STRING)); ++ DECL_ARGUMENTS (perror_fndecl) = str; ++ ++ a68_push_function_range (perror_fndecl, void_type_node, ++ true /* top_level */); ++ ++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_PERROR, ++ a68_int_type, 3, ++ a68_multiple_elements (str), ++ a68_multiple_num_elems (str), ++ a68_multiple_stride (str, size_zero_node)); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (perror_fndecl)), ++ perror_fndecl); ++} ++ ++tree ++a68_posix_strerror (void) ++{ ++ static tree strerror_fndecl; ++ ++ if (strerror_fndecl == NULL_TREE) ++ { ++ strerror_fndecl ++ = a68_low_toplevel_func_decl ("strerror", ++ build_function_type_list (CTYPE (M_STRING), ++ a68_int_type, ++ NULL_TREE)); ++ announce_function (strerror_fndecl); ++ ++ tree errnum = a68_low_func_param (strerror_fndecl, "errnum", a68_int_type); ++ DECL_ARGUMENTS (strerror_fndecl) = errnum; ++ ++ a68_push_function_range (strerror_fndecl, CTYPE (M_STRING), ++ true /* top_level */); ++ ++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); ++ TREE_ADDRESSABLE (len) = 1; ++ ++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_STRERROR, ++ void_type_node, 2, ++ errnum, ++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), len)); ++ tree elems = a68_lower_tmpvar ("elems%", build_pointer_type (a68_char_type), call); ++ ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, len); ++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, ++ len, size_in_bytes (a68_char_type)); ++ ++ tree body = a68_row_value (CTYPE (M_STRING), 1 /* dim */, ++ elems, elems_size, ++ &lower_bound, &upper_bound); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (strerror_fndecl)), ++ strerror_fndecl); ++} ++ ++tree ++a68_posix_getchar (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_GETCHAR); ++} ++ ++tree ++a68_posix_fgetc (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_FGETC); ++} ++ ++tree ++a68_posix_fputc (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_FPUTC); ++} ++ ++tree ++a68_posix_fputs (void) ++{ ++ static tree fputs_fndecl; ++ ++ if (fputs_fndecl == NULL_TREE) ++ { ++ fputs_fndecl ++ = a68_low_toplevel_func_decl ("fputs", ++ build_function_type_list (a68_int_type, ++ a68_int_type, ++ CTYPE (M_STRING), ++ NULL_TREE)); ++ announce_function (fputs_fndecl); ++ ++ tree fd = a68_low_func_param (fputs_fndecl, "fd", a68_int_type); ++ tree str = a68_low_func_param (fputs_fndecl, "str", CTYPE (M_STRING)); ++ DECL_ARGUMENTS (fputs_fndecl) = chainon (fd, str); ++ ++ a68_push_function_range (fputs_fndecl, a68_int_type, ++ true /* top_level */); ++ ++ ++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FPUTS, ++ a68_int_type, 4, ++ fd, ++ a68_multiple_elements (str), ++ a68_multiple_num_elems (str), ++ a68_multiple_stride (str, size_zero_node)); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fputs_fndecl)), ++ fputs_fndecl); ++} ++ ++tree ++a68_posix_fgets (void) ++{ ++ static tree fgets_fndecl; ++ ++ if (fgets_fndecl == NULL_TREE) ++ { ++ fgets_fndecl ++ = a68_low_toplevel_func_decl ("fgets", ++ build_function_type_list (CTYPE (M_REF_STRING), ++ a68_int_type, ++ a68_int_type, ++ NULL_TREE)); ++ announce_function (fgets_fndecl); ++ ++ tree fd = a68_low_func_param (fgets_fndecl, "fd", a68_int_type); ++ tree n = a68_low_func_param (fgets_fndecl, "n", a68_int_type); ++ DECL_ARGUMENTS (fgets_fndecl) = chainon (fd, n); ++ ++ a68_push_function_range (fgets_fndecl, CTYPE (M_REF_STRING), ++ true /* top_level */); ++ ++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); ++ TREE_ADDRESSABLE (len) = 1; ++ ++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_FGETS, ++ CTYPE (M_REF_STRING), 3, ++ fd, n, ++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), len)); ++ tree elems = a68_lower_tmpvar ("elems%", build_pointer_type (a68_char_type), call); ++ ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, len); ++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, ++ len, size_in_bytes (a68_char_type)); ++ tree body = a68_row_malloc (CTYPE (M_STRING), 1 /* dim */, ++ elems, elems_size, ++ &lower_bound, &upper_bound); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fgets_fndecl)), ++ fgets_fndecl); ++} ++ ++tree ++a68_posix_gets (void) ++{ ++ static tree gets_fndecl; ++ ++ if (gets_fndecl == NULL_TREE) ++ { ++ gets_fndecl ++ = a68_low_toplevel_func_decl ("gets", ++ build_function_type_list (CTYPE (M_REF_STRING), ++ a68_int_type, ++ NULL_TREE)); ++ announce_function (gets_fndecl); ++ ++ tree n = a68_low_func_param (gets_fndecl, "n", a68_int_type); ++ DECL_ARGUMENTS (gets_fndecl) = n; ++ ++ a68_push_function_range (gets_fndecl, CTYPE (M_REF_STRING), ++ true /* top_level */); ++ ++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); ++ TREE_ADDRESSABLE (len) = 1; ++ ++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_GETS, ++ CTYPE (M_REF_STRING), 2, ++ n, fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), len)); ++ tree elems = a68_lower_tmpvar ("elems%", build_pointer_type (a68_char_type), call); ++ ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, len); ++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, ++ len, size_in_bytes (a68_char_type)); ++ tree body = a68_row_malloc (CTYPE (M_STRING), 1 /* dim */, ++ elems, elems_size, ++ &lower_bound, &upper_bound); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (gets_fndecl)), ++ gets_fndecl); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-prelude.cc +@@ -0,0 +1,2193 @@ ++/* Lower Algol 68 pre-defined operators and procedures. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* The following handlers are for lowing the entities defined in ++ a68-parser-prelude.c. */ ++ ++tree ++a68_lower_unimplemented (NODE_T *p, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ fatal_error (a68_get_node_location (p), ++ "no lowering routine installed for construct. jemarch has been lazy"); ++} ++ ++tree ++a68_lower_charabs2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_char_abs (op); ++} ++ ++tree ++a68_lower_boolabs2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bool_abs (op); ++} ++ ++tree ++a68_lower_intabs2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_int_abs (op); ++} ++ ++tree ++a68_lower_realabs2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_real_abs (op); ++} ++ ++tree ++a68_lower_confirm2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ /* Used to implement monadic +. */ ++ return a68_lower_tree (NEXT (SUB (p)), ctx); ++} ++ ++tree ++a68_lower_negate2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build1_loc (a68_get_node_location (p), ++ NEGATE_EXPR, ++ CTYPE (MOID (p)), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++/* Lower an ENTIER standard monadic operator. */ ++ ++tree ++a68_lower_entier2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *op = NEXT (SUB (p)); ++ return a68_real_entier (a68_lower_tree (op, ctx), MOID (p), MOID (op)); ++} ++ ++/* Lower a ROUND standard monadic operator. ++ ++ This operator gets a LONGSETY REAL and produces a LONGSETY INT which is the ++ nearest integer to the given real. */ ++ ++tree ++a68_lower_round2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *op = NEXT (SUB (p)); ++ return a68_real_round (a68_lower_tree (op, ctx), MOID (p), MOID (op)); ++} ++ ++tree ++a68_lower_not2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build1_loc (a68_get_node_location (p), ++ TRUTH_NOT_EXPR, ++ CTYPE (MOID (p)), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++tree ++a68_lower_and3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_AND_EXPR, ++ CTYPE (MOID (p)), ++ a68_lower_tree (SUB (p), ctx), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++} ++ ++tree ++a68_lower_or3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_OR_EXPR, ++ CTYPE (MOID (p)), ++ a68_lower_tree (SUB (p), ctx), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++} ++ ++tree ++a68_lower_xor3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_XOR_EXPR, ++ CTYPE (MOID (p)), ++ a68_lower_tree (SUB (p), ctx), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++} ++ ++tree ++a68_lower_plus_int (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_plus (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_plus_real (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_real_plus (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_minus_int (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_minus (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_minus_real (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_real_minus (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_mult_int (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_mult (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_mult_real (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_real_mult (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_multab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ MULT_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_over3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_div (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_mod3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_mod (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_div3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_real_div (MOID (p), ++ a68_lower_tree (SUB (p), ctx), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx), ++ a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_rdiv3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_real_div (MOID (p), ++ fold_build1 (FLOAT_EXPR, CTYPE (MOID (p)), ++ a68_lower_tree (SUB (p), ctx)), ++ fold_build1 (FLOAT_EXPR, CTYPE (MOID (p)), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)), ++ a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_eq (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_ne (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_lt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_lt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_le3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_le (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_gt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_gt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_ge3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_ge (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_eq (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_ne (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_lt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_lt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_le3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_le (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_gt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_gt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_ge3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_ge (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_eq (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_ne (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_lt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_lt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_le3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_le (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_gt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_gt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_ge3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_ge (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_bool_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_bool_eq (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_bool_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_bool_ne (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_sign2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_int_sign (op); ++} ++ ++tree ++a68_lower_realsign2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_real_sign (op); ++} ++ ++tree ++a68_lower_plusab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ PLUS_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_minusab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ MINUS_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_overab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ TRUNC_DIV_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_modab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ TRUNC_MOD_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_divab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ RDIV_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++/* UPB comes in two flavors. ++ ++ The unary operator returns the upper bound of the first dimension of the ++ operand multple. ++ ++ The binary operator returns the upper bound of the given dimension of the ++ operand multiple. The dimension is one-based. If the specified dimension ++ is out of bounds then an a run-time error is raised. */ ++ ++static tree ++upb (NODE_T *p, tree boundable, tree dim) ++{ ++ boundable = save_expr (boundable); ++ dim = save_expr (dim); ++ ++ /* BOUNDABLE can be a multiple or a ROWS. */ ++ tree zero_based_dim ++ = save_expr (fold_build2 (MINUS_EXPR, TREE_TYPE (dim), dim, size_one_node)); ++ tree type = TREE_TYPE (boundable); ++ if (A68_ROW_TYPE_P (type)) ++ { ++ return fold_build2 (COMPOUND_EXPR, ssizetype, ++ a68_multiple_dim_check (p, boundable, dim), ++ a68_multiple_upper_bound (boundable, zero_based_dim)); ++ } ++ else if (A68_ROWS_TYPE_P (type)) ++ { ++ return fold_build2 (COMPOUND_EXPR, ssizetype, ++ a68_rows_dim_check (p, boundable, dim), ++ a68_rows_upper_bound (boundable, zero_based_dim)); ++ } ++ else ++ gcc_unreachable (); ++} ++ ++tree ++a68_lower_upb2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree multiple = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return fold_convert (CTYPE (MOID (p)), upb (p, multiple, size_one_node)); ++} ++ ++tree ++a68_lower_upb3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree dim = fold_convert (sizetype, a68_lower_tree (SUB (p), ctx)); ++ tree multiple = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return fold_convert (CTYPE (MOID (p)), upb (p, multiple, dim)); ++} ++ ++/* LWB comes in two flavors. ++ ++ The unary operator returns the lower bound of the first dimension of the ++ operand multple. ++ ++ The binary operator returns the lower bound of the given dimension of the ++ operand multiple. The dimension is one-based. If the specified dimension ++ is out of bounds then an a run-time error is raised. */ ++ ++static tree ++lwb (NODE_T *p, tree boundable, tree dim) ++{ ++ boundable = save_expr (boundable); ++ dim = save_expr (dim); ++ ++ /* BOUNDABLE can be a multiple or an union whose all alternatives yield a ++ multiple. */ ++ tree zero_based_dim ++ = save_expr (fold_build2 (MINUS_EXPR, TREE_TYPE (dim), dim, size_one_node)); ++ tree type = TREE_TYPE (boundable); ++ if (A68_ROW_TYPE_P (type)) ++ { ++ return fold_build2 (COMPOUND_EXPR, ssizetype, ++ a68_multiple_dim_check (p, boundable, dim), ++ a68_multiple_lower_bound (boundable, zero_based_dim)); ++ } ++ else if (A68_ROWS_TYPE_P (type)) ++ { ++ return fold_build2 (COMPOUND_EXPR, ssizetype, ++ a68_rows_dim_check (p, boundable, dim), ++ a68_rows_lower_bound (boundable, zero_based_dim)); ++ } ++ else ++ gcc_unreachable (); ++} ++ ++tree ++a68_lower_lwb2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree multiple = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return fold_convert (CTYPE (MOID (p)), lwb (p, multiple, size_one_node)); ++} ++ ++tree ++a68_lower_lwb3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree dim = fold_convert (sizetype, a68_lower_tree (SUB (p), ctx)); ++ tree multiple = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return fold_convert (CTYPE (MOID (p)), lwb (p, multiple, dim)); ++} ++ ++/* ELEMS comes in two flavors. ++ ++ The unary operator returns the number of elements in the first dimension of ++ the operand multple. ++ ++ DIM must be a size. ++ ++ The binary operator returns the number of elements in the given dimension of the ++ operand multiple. The dimension is one-based. If the specified dimension ++ is out of bounds then an a run-time error is raised. */ ++ ++static tree ++elems (NODE_T *p, tree boundable, tree dim) ++{ ++ dim = save_expr (dim); ++ ++ /* BOUNDABLE can be a multiple or a ROWS. */ ++ tree type = TREE_TYPE (boundable); ++ ++ /* Make DIM zero-based. */ ++ tree dim_minus_one ++ = fold_build2 (MINUS_EXPR, TREE_TYPE (dim), dim, size_one_node); ++ ++ boundable = save_expr (boundable); ++ tree upper_bound = NULL_TREE; ++ tree lower_bound = NULL_TREE; ++ tree check_dimension = NULL_TREE; ++ if (A68_ROW_TYPE_P (type)) ++ { ++ upper_bound = a68_multiple_upper_bound (boundable, dim_minus_one); ++ lower_bound = a68_multiple_lower_bound (boundable, dim_minus_one); ++ check_dimension = a68_multiple_dim_check (p, boundable, dim); ++ } ++ else if (A68_ROWS_TYPE_P (type)) ++ { ++ upper_bound = a68_rows_upper_bound (boundable, dim_minus_one); ++ lower_bound = a68_rows_lower_bound (boundable, dim_minus_one); ++ check_dimension = a68_rows_dim_check (p, boundable, dim); ++ } ++ else ++ gcc_unreachable (); ++ ++ upper_bound = save_expr (upper_bound); ++ lower_bound = save_expr (lower_bound); ++ ++ tree non_flat = fold_build2 (PLUS_EXPR, ++ sizetype, ++ fold_convert (sizetype, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ upper_bound, lower_bound)), ++ size_one_node); ++ ++ tree elems = fold_build3 (COND_EXPR, sizetype, ++ fold_build2 (LT_EXPR, boolean_type_node, ++ upper_bound, lower_bound), ++ size_zero_node, ++ non_flat); ++ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ elems = fold_build2 (COMPOUND_EXPR, sizetype, ++ check_dimension, ++ elems); ++ ++ return elems; ++} ++ ++tree ++a68_lower_elems2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree multiple = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return fold_convert (CTYPE (MOID (p)), elems (p, multiple, size_one_node)); ++} ++ ++tree ++a68_lower_elems3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree dim = fold_convert (sizetype, a68_lower_tree (SUB (p), ctx)); ++ tree multiple = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return fold_convert (CTYPE (MOID (p)), elems (p, multiple, dim)); ++} ++ ++tree ++a68_lower_pow_int (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_pow (MOID (p), op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_pow_real (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *mode = MOID (p); ++ MOID_T *op1_mode = MOID (SUB (p)); ++ MOID_T *op2_mode = MOID (NEXT (NEXT (SUB (p)))); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_real_pow (mode, op1_mode, op2_mode, ++ op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_odd2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *op = NEXT (SUB (p)); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ EQ_EXPR, ++ a68_bool_type, ++ fold_build2 (BIT_AND_EXPR, ++ CTYPE (MOID (op)), ++ a68_lower_tree (op, ctx), ++ build_int_cst (CTYPE (MOID (op)), 1)), ++ build_int_cst (CTYPE (MOID (op)), 1)); ++} ++ ++tree ++a68_lower_string_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ EQ_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ NE_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_lt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ LT_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_le3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ LE_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_gt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ GT_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_ge3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ GE_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_plus3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_string_concat (a68_lower_tree (SUB (p), ctx), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++} ++ ++tree ++a68_lower_string_plusab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = a68_string_concat (a68_low_deref (lhs, SUB (p)), rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_string_plusto3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *lhs_node = NEXT (NEXT (SUB (p))); ++ tree lhs = a68_lower_tree (lhs_node, ctx); ++ lhs = a68_consolidate_ref (MOID (lhs_node), lhs); ++ lhs = save_expr (lhs); ++ MOID_T *lhs_mode = MOID (lhs_node); ++ NODE_T *rhs_node = SUB (p); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = a68_string_concat (rhs, a68_low_deref (lhs, NEXT (NEXT (SUB (p))))); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, lhs_mode, ++ operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_repr2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *op = NEXT (SUB (p)); ++ return a68_char_repr (op, a68_lower_tree (op, ctx)); ++} ++ ++tree ++a68_lower_char_plus3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_string_concat (a68_string_from_char (op1), ++ a68_string_from_char (op2)); ++} ++ ++tree ++a68_lower_char_mult3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *n1 = SUB (p); ++ NODE_T *n2 = NEXT (NEXT (SUB (p))); ++ ++ if (MOID (n1) == M_INT) ++ { ++ gcc_assert (MOID (n2) == M_STRING || MOID (n2) == M_ROW_CHAR); ++ return a68_string_mult (a68_string_from_char (a68_lower_tree (n2, ctx)), ++ a68_lower_tree (n1, ctx)); ++ } ++ else ++ { ++ gcc_assert (MOID (n1) == M_CHAR); ++ gcc_assert (MOID (n2) == M_INT); ++ return a68_string_mult (a68_string_from_char (a68_lower_tree (n1, ctx)), ++ a68_lower_tree (n2, ctx)); ++ } ++} ++ ++tree ++a68_lower_string_mult3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *n1 = SUB (p); ++ NODE_T *n2 = NEXT (NEXT (SUB (p))); ++ ++ if (MOID (n1) == M_INT) ++ { ++ gcc_assert (MOID (n2) == M_STRING || MOID (n2) == M_ROW_CHAR); ++ return a68_string_mult (a68_lower_tree (n2, ctx), ++ a68_lower_tree (n1, ctx)); ++ } ++ else ++ { ++ gcc_assert (MOID (n1) == M_STRING || MOID (n1) == M_ROW_CHAR); ++ gcc_assert (MOID (n2) == M_INT); ++ return a68_string_mult (a68_lower_tree (n1, ctx), ++ a68_lower_tree (n2, ctx)); ++ } ++} ++ ++tree ++a68_lower_string_multab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = a68_string_mult (a68_low_deref (lhs, SUB (p)), rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++/* SIZETY BITS operators. */ ++ ++tree ++a68_lower_bin2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bits_bin (MOID (p), op); ++} ++ ++tree ++a68_lower_bitabs2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bits_abs (MOID (p), op); ++} ++ ++tree ++a68_lower_bitleng2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bits_leng (CTYPE (MOID (p)), op); ++} ++ ++tree ++a68_lower_bitshorten2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bits_shorten (CTYPE (MOID (p)), op); ++} ++ ++tree ++a68_lower_bitnot2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bits_not (op); ++} ++ ++tree ++a68_lower_bitand3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_and (op1, op2); ++} ++ ++tree ++a68_lower_bitior3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_ior (op1, op2); ++} ++ ++tree ++a68_lower_bitxor3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_xor (op1, op2); ++} ++ ++tree ++a68_lower_shl3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree bits = a68_lower_tree (SUB (p), ctx); ++ tree shift = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_shift (shift, bits); ++} ++ ++tree ++a68_lower_shr3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree bits = a68_lower_tree (SUB (p), ctx); ++ tree shift = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_shift (fold_build1 (NEGATE_EXPR, ++ TREE_TYPE (shift), shift), ++ bits); ++} ++ ++tree ++a68_lower_bitelem3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree pos = a68_lower_tree (SUB (p), ctx); ++ tree bits = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_elem (p, pos, bits); ++} ++ ++tree ++a68_lower_bit_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_eq (op1, op2); ++} ++ ++tree ++a68_lower_bit_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_ne (op1, op2); ++} ++ ++tree ++a68_lower_bit_le3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_subset (op1, op2); ++} ++ ++tree ++a68_lower_bit_ge3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_subset (op2, op1); ++} ++ ++/* Environment enquiries. */ ++ ++tree ++a68_lower_maxint (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_maxval (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_minint (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_minval (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_maxbits (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_maxbits (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_maxreal (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_maxval (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_minreal (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_minval (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_smallreal (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_smallval (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_bitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_width (a68_bits_type); ++} ++ ++tree ++a68_lower_longbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_width (a68_long_bits_type); ++} ++ ++tree ++a68_lower_longlongbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_width (a68_long_long_bits_type); ++} ++ ++tree ++a68_lower_shortbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_width (a68_short_bits_type); ++} ++ ++tree ++a68_lower_shortshortbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_width (a68_short_short_bits_type); ++} ++ ++tree ++a68_lower_intwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_width (a68_int_type); ++} ++ ++tree ++a68_lower_longintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_width (a68_long_int_type); ++} ++ ++tree ++a68_lower_longlongintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_width (a68_long_long_int_type); ++} ++ ++tree ++a68_lower_shortintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_width (a68_short_int_type); ++} ++ ++tree ++a68_lower_shortshortintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_width (a68_short_short_int_type); ++} ++ ++tree ++a68_lower_realwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_width (a68_real_type); ++} ++ ++tree ++a68_lower_longrealwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_width (a68_long_real_type); ++} ++ ++tree ++a68_lower_longlongrealwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_width (a68_long_long_real_type); ++} ++ ++tree ++a68_lower_expwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_exp_width (a68_real_type); ++} ++ ++tree ++a68_lower_longexpwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_exp_width (a68_long_real_type); ++} ++ ++tree ++a68_lower_longlongexpwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_exp_width (a68_long_long_real_type); ++} ++ ++tree ++a68_lower_pi (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_pi (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_nullcharacter (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree null_character = NULL_TREE; ++ ++ if (null_character == NULL_TREE) ++ null_character = build_int_cst (a68_char_type, 0); ++ return null_character; ++} ++ ++tree ++a68_lower_flip (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree flip = NULL_TREE; ++ ++ if (flip == NULL_TREE) ++ flip = build_int_cst (a68_char_type, 84); /* T */ ++ return flip; ++} ++ ++tree ++a68_lower_eofchar (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree eofchar = NULL_TREE; ++ ++ if (eofchar == NULL_TREE) ++ eofchar = build_int_cst (a68_char_type, -1); ++ return eofchar; ++} ++ ++tree ++a68_lower_replacementchar (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree replacementchar = NULL_TREE; ++ ++ if (replacementchar == NULL_TREE) ++ replacementchar = build_int_cst (a68_char_type, 0xfffd); ++ return replacementchar; ++} ++ ++tree ++a68_lower_flop (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree flop = NULL_TREE; ++ ++ if (flop == NULL_TREE) ++ flop = build_int_cst (a68_char_type, 70); /* F */ ++ return flop; ++} ++ ++tree ++a68_lower_errorchar (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree errorchar = NULL_TREE; ++ ++ if (errorchar == NULL_TREE) ++ errorchar = build_int_cst (a68_char_type, 42); /* * */ ++ return errorchar; ++} ++ ++tree ++a68_lower_blank (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree blank = NULL_TREE; ++ ++ if (blank == NULL_TREE) ++ blank = build_int_cst (a68_char_type, 32); ++ return blank; ++} ++ ++tree ++a68_lower_intlengths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ HOST_WIDE_INT int_size = int_size_in_bytes (a68_int_type); ++ HOST_WIDE_INT long_int_size = int_size_in_bytes (a68_long_int_type); ++ HOST_WIDE_INT long_long_int_size = int_size_in_bytes (a68_long_long_int_type); ++ ++ gcc_assert (int_size != -1); ++ gcc_assert (long_int_size != -1); ++ gcc_assert (long_long_int_size != -1); ++ ++ int lengths = 1; ++ if (long_long_int_size != long_int_size) ++ lengths++; ++ if (long_int_size != int_size) ++ lengths++; ++ ++ return build_int_cst (CTYPE (MOID (p)), lengths); ++} ++ ++tree ++a68_lower_intshorths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ HOST_WIDE_INT int_size = int_size_in_bytes (a68_int_type); ++ HOST_WIDE_INT short_int_size = int_size_in_bytes (a68_short_int_type); ++ HOST_WIDE_INT short_short_int_size = int_size_in_bytes (a68_short_short_int_type); ++ ++ gcc_assert (int_size != -1); ++ gcc_assert (short_int_size != -1); ++ gcc_assert (short_short_int_size != -1); ++ ++ int shorths = 1; ++ if (short_short_int_size != short_int_size) ++ shorths++; ++ if (short_int_size != int_size) ++ shorths++; ++ ++ return build_int_cst (CTYPE (MOID (p)), shorths); ++} ++ ++tree ++a68_lower_bitslengths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ HOST_WIDE_INT bits_size = int_size_in_bytes (a68_bits_type); ++ HOST_WIDE_INT long_bits_size = int_size_in_bytes (a68_long_bits_type); ++ HOST_WIDE_INT long_long_bits_size = int_size_in_bytes (a68_long_long_bits_type); ++ ++ gcc_assert (bits_size != -1); ++ gcc_assert (long_bits_size != -1); ++ gcc_assert (long_long_bits_size != -1); ++ ++ int lengths = 1; ++ if (long_long_bits_size != long_bits_size) ++ lengths++; ++ if (long_bits_size != bits_size) ++ lengths++; ++ ++ return build_int_cst (CTYPE (MOID (p)), lengths); ++} ++ ++tree ++a68_lower_bitsshorths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ HOST_WIDE_INT bits_size = int_size_in_bytes (a68_bits_type); ++ HOST_WIDE_INT short_bits_size = int_size_in_bytes (a68_short_bits_type); ++ HOST_WIDE_INT short_short_bits_size = int_size_in_bytes (a68_short_short_bits_type); ++ ++ gcc_assert (bits_size != -1); ++ gcc_assert (short_bits_size != -1); ++ gcc_assert (short_short_bits_size != -1); ++ ++ int shorths = 1; ++ if (short_short_bits_size != short_bits_size) ++ shorths++; ++ if (short_bits_size != bits_size) ++ shorths++; ++ ++ return build_int_cst (CTYPE (MOID (p)), shorths); ++} ++ ++tree ++a68_lower_reallengths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ HOST_WIDE_INT real_size = int_size_in_bytes (a68_real_type); ++ HOST_WIDE_INT long_real_size = int_size_in_bytes (a68_long_real_type); ++ HOST_WIDE_INT long_long_real_size = int_size_in_bytes (a68_long_long_real_type); ++ ++ gcc_assert (real_size != -1); ++ gcc_assert (long_real_size != -1); ++ gcc_assert (long_long_real_size != -1); ++ ++ int lengths = 1; ++ if (long_long_real_size != long_real_size) ++ lengths++; ++ if (long_real_size != real_size) ++ lengths++; ++ ++ return build_int_cst (CTYPE (MOID (p)), lengths); ++} ++ ++tree ++a68_lower_realshorths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (CTYPE (MOID (p)), 1); ++} ++ ++tree ++a68_lower_infinity (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_real (CTYPE (MOID (p)), dconstinf); ++} ++ ++tree ++a68_lower_minusinfinity (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_real (CTYPE (MOID (p)), dconstninf); ++} ++ ++tree ++a68_lower_maxabschar (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_char_max (); ++} ++ ++tree ++a68_lower_sqrt (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sqrt (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_sqrt (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sqrt (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_sqrt (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sqrt (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_tan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_tan (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_tan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_tan (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_tan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_tan (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_sin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sin (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_sin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sin (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_sin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sin (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_cos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_cos (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_cos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_cos (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_cos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_cos (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_acos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_acos (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_acos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_acos (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_acos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_acos (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_asin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_asin (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_asin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_asin (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_asin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_asin (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_atan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_atan (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_atan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_atan (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_atan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_atan (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_ln (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_ln (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_ln (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_ln (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_ln (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_ln (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_log (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_log (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_log (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_log (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_log (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_log (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_exp (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_exp (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_exp (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_exp (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_exp (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_exp (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_reali (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t = a68_complex_i (M_COMPLEX, op1, op2); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_longreali (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t = a68_complex_i (M_LONG_COMPLEX, op1, op2); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_longlongreali (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t = a68_complex_i (M_LONG_LONG_COMPLEX, op1, op2); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_inti (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t = a68_complex_i (M_COMPLEX, ++ convert_to_real (a68_real_type, op1), ++ convert_to_real (a68_real_type, op2)); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_longinti (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t= a68_complex_i (M_LONG_COMPLEX, ++ convert_to_real (a68_long_real_type, op1), ++ convert_to_real (a68_long_real_type, op2)); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_longlonginti (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t = a68_complex_i (M_LONG_LONG_COMPLEX, ++ convert_to_real (a68_long_long_real_type, op1), ++ convert_to_real (a68_long_long_real_type, op2)); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_re2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ tree t = a68_complex_re (op); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_im2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ tree t = a68_complex_im (op); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_conj2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_complex_conj (MOID (p), op); ++} ++ ++tree ++a68_lower_shortenint2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_int_shorten (MOID (p), MOID (NEXT (SUB (p))), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++tree ++a68_lower_lengint2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_int_leng (MOID (p), MOID (NEXT (SUB (p))), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++tree ++a68_lower_shortenreal2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_real_shorten (MOID (p), MOID (NEXT (SUB (p))), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++tree ++a68_lower_lengreal2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_real_leng (MOID (p), MOID (NEXT (SUB (p))), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++tree ++a68_lower_random (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_get_libcall (A68_LIBCALL_RANDOM); ++} ++ ++tree ++a68_lower_longrandom (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Note we dont build a call because this will get deprocedured in case it is ++ actually called. */ ++ return a68_get_libcall (A68_LIBCALL_LONGRANDOM); ++} ++ ++tree ++a68_lower_longlongrandom (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_get_libcall (A68_LIBCALL_LONGLONGRANDOM); ++} ++ ++/********* POSIX prelude. ***************/ ++ ++tree ++a68_lower_setexitstatus (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_setexitstatus (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixargc (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_argc (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixargv (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_argv (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixgetenv (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_getenv (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixputchar (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_putchar (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixputs (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_puts (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfconnect (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fconnect (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfopen (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fopen (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfcreate (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fcreate (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfclose (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fclose (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfsize (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fsize (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixlseek (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_lseek (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixseekcur (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 0); ++} ++ ++tree ++a68_lower_posixseekend (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 1); ++} ++ ++tree ++a68_lower_posixseekset (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 2); ++} ++ ++tree ++a68_lower_posixstdinfiledes (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 0); ++} ++ ++tree ++a68_lower_posixstdoutfiledes (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 1); ++} ++ ++tree ++a68_lower_posixstderrfiledes (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 2); ++} ++ ++tree ++a68_lower_posixfileodefault (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Please keep in sync with libga68/ga68-posix.c */ ++ return build_int_cst (a68_bits_type, 0x99999999); ++} ++ ++tree ++a68_lower_posixfileordwr (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Please keep in sync with libga68/ga68-posix.c */ ++ return build_int_cst (a68_bits_type, 0x2); ++} ++ ++tree ++a68_lower_posixfileordonly (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Please keep in sync with libga68/ga68-posix.c */ ++ return build_int_cst (a68_bits_type, 0x0); ++} ++ ++tree ++a68_lower_posixfileowronly (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Please keep in sync with libga68/ga68-posix.c */ ++ return build_int_cst (a68_bits_type, 0x1); ++} ++ ++tree ++a68_lower_posixfileotrunc (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Please keep in sync with libga68/ga68-posix.c */ ++ return build_int_cst (a68_bits_type, 0x8); ++} ++ ++tree ++a68_lower_posixerrno (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_errno (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixperror (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_perror (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixstrerror (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_strerror (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfputc (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fputc (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfputs (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fputs (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixgetchar (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_getchar (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++ ++tree ++a68_lower_posixfgetc (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fgetc (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixgets (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_gets (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfgets (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fgets (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-procs.cc +@@ -0,0 +1,52 @@ ++/* Lowering routines for all things related to procedures. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielding of SKIP for the given procedure mode. */ ++ ++tree ++a68_get_proc_skip_tree (MOID_T *m) ++{ ++ /* A SKIP for a procecure mode lowers to a NULL pointer to a function. */ ++ return build_int_cst (CTYPE (m), 0); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-ranges.cc +@@ -0,0 +1,699 @@ ++/* Management of ranges in the Algol 68 front-end. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++#include "tree-nested.h" ++ ++#include "a68.h" ++ ++/* Many Algol 68 constructions introduce a new range of definitions. This is ++ the case of clauses and of routine definitions. The stack of ranges at any ++ point in the program determines the "nest" of the constructions declared in ++ the program. This nest carries a record of all the declarations forming the ++ environment in which that construct is to be interpreted. ++ ++ This file contains a manager of ranges of which we allocate one for each ++ range inducing construct. The top-level range corresponds to the primal ++ environment. ++ ++ The ranges are used by the lowering code in order to create GCC tree BLOCK ++ nodes, and also to keep track of the set of declarations and of statements ++ being added by the current serial clause. */ ++ ++struct GTY (()) range ++{ ++ /* Whether this range entry doesn't introduce a lexical frame. Declarations ++ and decl_exprs get added to the nearst enclosing range that is not ++ frameless. */ ++ bool frameless; ++ ++ /* A chain of _DECL nodes for all variables, constants, functions, ++ and typedef types. These are in the reverse of the order supplied. */ ++ tree names; ++ ++ /* A statements list of DECL_EXPR nodes for all the declarations in the ++ range. These are prepended to the statements list when the range is ++ closed. */ ++ tree decl_exprs; ++ ++ /* The context of the range, either a function declaration or a translation ++ unit. */ ++ tree context; ++ ++ /* The range below this one. */ ++ struct range *next; ++ ++ /* Statement list. */ ++ tree stmt_list; ++ ++ /* List of blocks to which the block created for this range is the ++ superblock. */ ++ tree blocks; ++ ++ /* Mode associated with the range. For serial clauses, this is the mode of ++ the value yielded by the clause. */ ++ MOID_T *mode; ++ ++ /* If not TREE_NULL, then the range corresponds to a function, which can be ++ either nested or defined at top-level. */ ++ tree fndecl; ++ bool top_level_function; ++ ++ /* The following fields are used by ranges introduced by serial ++ clauses. */ ++ bool save_restore_stack; ++ bool has_completers; ++ tree clause_result_decl; ++ tree clause_exit_label_decl; ++ tree clause_stack_save_decl; ++}; ++ ++/* Global and current ranges. */ ++ ++static GTY (()) struct range *global_range; ++static GTY (()) struct range *current_range; ++ ++/* Create a new range and push it in the list. */ ++ ++static struct range * ++new_range (void) ++{ ++ struct range *range = ggc_alloc (); ++ ++ range->frameless = false; ++ range->names = NULL; ++ range->decl_exprs = alloc_stmt_list (); ++ range->context = NULL; ++ range->next = NULL; ++ range->blocks = NULL_TREE; ++ range->stmt_list = alloc_stmt_list (); ++ range->fndecl = NULL_TREE; ++ range->top_level_function = false; ++ range->save_restore_stack = false; ++ range->has_completers = false; ++ range->clause_result_decl = NULL_TREE; ++ range->clause_exit_label_decl = NULL_TREE; ++ range->clause_stack_save_decl = NULL_TREE; ++ range->mode = NO_MOID; ++ return range; ++} ++ ++/* Push a new frameless range. */ ++ ++void ++a68_push_stmt_list (MOID_T *mode) ++{ ++ a68_push_range (mode); ++ current_range->frameless = true; ++} ++ ++/* Pop a frameless range. */ ++ ++tree ++a68_pop_stmt_list (void) ++{ ++ /* This will result into a stmt list. */ ++ tree res = a68_pop_range (); ++ gcc_assert (TREE_CODE (res) == STATEMENT_LIST); ++ return res; ++} ++ ++/* Push a new range. */ ++ ++void ++a68_push_range (MOID_T *mode) ++{ ++ struct range *range = new_range (); ++ if (current_range) ++ range->context = current_range->context; ++ range->next = current_range; ++ range->mode = mode; ++ current_range = range; ++} ++ ++/* Pop a range, with a finalizer. ++ ++ Return a BIND_EXPR, a statement list or a TRY_FINALLY_EXPR. */ ++ ++tree ++a68_pop_range_with_finalizer (tree finalizer) ++{ ++ tree range = a68_pop_range (); ++ return fold_build2 (TRY_FINALLY_EXPR, TREE_TYPE (range), ++ range, finalizer); ++} ++ ++/* Pop a range. Return either a BIND_EXPR or a statements list. */ ++ ++tree ++a68_pop_range (void) ++{ ++ struct range *range = current_range; ++ current_range = range->next; ++ tree type = (range->mode == NULL ? void_type_node : CTYPE (range->mode)); ++ ++ /* If TYPE is a pointer type and the last expression in the statement list is ++ a variable of the type pointed by TYPE then take its address. */ ++ tree_stmt_iterator i = tsi_last (range->stmt_list); ++ if (POINTER_TYPE_P (type) && TREE_TYPE (type) == TREE_TYPE (tsi_stmt (i))) ++ { ++ append_to_statement_list_force (a68_consolidate_ref (range->mode, tsi_stmt (i)), ++ &range->stmt_list); ++ tsi_delink (&i); ++ } ++ ++ tree clause = NULL_TREE; ++ if (range->frameless) ++ clause = range->stmt_list; ++ else ++ { ++ /* Create a block and set its declarations and supercontext. */ ++ tree block = make_node (BLOCK); ++ BLOCK_VARS (block) = range->names; ++ BLOCK_SUBBLOCKS (block) = range->blocks; ++ ++ /* In each subblock, record that this is its superior. */ ++ for (tree t = range->blocks; t; t = BLOCK_CHAIN (t)) ++ BLOCK_SUPERCONTEXT (t) = block; ++ ++ if (range->fndecl) ++ { ++ BLOCK_SUPERCONTEXT (block) = range->fndecl; ++ DECL_INITIAL (range->fndecl) = block; ++ } ++ else ++ { ++ current_range->blocks ++ = block_chainon (current_range->blocks, block); ++ } ++ ++ TREE_USED (block) = true; ++ ++ /* Create a BIND if the range contains declarations. Otherwise just ++ use the statements list. */ ++ clause = range->stmt_list; ++ if (range->names != NULL_TREE) ++ { ++ clause = build3 (BIND_EXPR, ++ type, ++ range->names, ++ range->stmt_list, ++ block); ++ TREE_SIDE_EFFECTS (clause) = 1; ++ BIND_EXPR_VARS (clause) = BLOCK_VARS (block); ++ } ++ ++ /* Prepend the decl_exprs to the range's statements list. */ ++ tree_stmt_iterator q = tsi_start (range->stmt_list); ++ tsi_link_before (&q, range->decl_exprs, TSI_SAME_STMT); ++ } ++ ++ /* Set the type of the stmt_list. */ ++ TREE_TYPE (range->stmt_list) = type; ++ TREE_SIDE_EFFECTS (range->stmt_list) = 1; ++ ++ return clause; ++} ++ ++/* Add a new expression to the current range. */ ++ ++void ++a68_add_stmt (tree exp) ++{ ++ if (exp == void_node) ++ /* This may result from a mode declaration. */ ++ return; ++ gcc_assert (current_range != NULL); ++ append_to_statement_list_force (exp, ++ ¤t_range->stmt_list); ++} ++ ++/* Add a new declaration to the current range. */ ++ ++void ++a68_add_decl (tree decl) ++{ ++ gcc_assert (current_range != NULL); ++ struct range *range = current_range; ++ ++ /* Search for the right frame where to add the declaration. */ ++ while (range->frameless) ++ { ++ gcc_assert (range->next != NULL); ++ range = range->next; ++ } ++ ++ tree n = range->names; ++ while (n != decl && n != NULL) ++ n = TREE_CHAIN (n); ++ if (n != decl) ++ { ++ if (decl != current_function_decl) ++ DECL_CONTEXT (decl) = range->context; ++ /* Note this list needs to be in reverse order for compatibility with ++ GCC. */ ++ TREE_CHAIN (decl) = range->names; ++ range->names = decl; ++ } ++} ++ ++/* Add a new declaration expr to the current range. */ ++ ++void ++a68_add_decl_expr (tree decl_expr) ++{ ++ gcc_assert (current_range != NULL); ++ struct range *range = current_range; ++ ++ /* Search for the right frame where to add the declaration expr. */ ++ while (range->frameless) ++ { ++ gcc_assert (range->next != NULL); ++ range = range->next; ++ } ++ ++ append_to_statement_list_force (decl_expr, &range->decl_exprs); ++} ++ ++/* Add a completer in the current range. */ ++ ++void ++a68_add_completer (void) ++{ ++ struct range *range = current_range; ++ ++ /* The last statement in the statements list is either a single unit or a ++ labeled unit, i.e a COMPOUND_EXPR whose first expression is a label and ++ second expression is the unit. Consolidate the unit within the labeled ++ unit to a ref. */ ++ tree_stmt_iterator i = tsi_last (range->stmt_list); ++ tree last_expr = tsi_stmt (i); ++ ++ if (TREE_CODE (last_expr) == COMPOUND_EXPR ++ && TREE_CODE (TREE_OPERAND (last_expr, 0)) == LABEL_EXPR) ++ { ++ TREE_OPERAND (last_expr, 1) = a68_consolidate_ref (range->mode, ++ TREE_OPERAND (last_expr, 1)); ++ TREE_TYPE (last_expr) = TREE_TYPE (TREE_OPERAND (last_expr, 1)); ++ } ++ else ++ last_expr = a68_consolidate_ref (range->mode, last_expr); ++ ++ /* Now assign the labeled unit to the clause result decl then jump to the end ++ of the serial clause. */ ++ append_to_statement_list_force (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ range->clause_result_decl, ++ last_expr), ++ &range->stmt_list); ++ tsi_delink (&i); ++ append_to_statement_list_force (fold_build1 (GOTO_EXPR, void_type_node, ++ range->clause_exit_label_decl), ++ &range->stmt_list); ++ range->has_completers = true; ++} ++ ++/* Get the context of the current range. */ ++ ++tree ++a68_range_context (void) ++{ ++ gcc_assert (current_range != NULL); ++ return current_range->context; ++} ++ ++/* Get the list of declarations in the current range. */ ++ ++tree ++a68_range_names (void) ++{ ++ struct range *range = current_range; ++ ++ while (range->frameless && range->next != NULL) ++ range = range->next; ++ ++ if (range != NULL) ++ return range->names; ++ else ++ return NULL_TREE; ++} ++ ++/* Get the statements list of the current range. */ ++ ++tree ++a68_range_stmt_list (void) ++{ ++ gcc_assert (current_range != NULL); ++ return current_range->stmt_list; ++} ++ ++/* Push a range for a function. */ ++ ++void ++a68_push_function_range (tree fndecl, tree result_type, ++ bool top_level) ++{ ++ a68_push_range (NULL /* VOID */); ++ current_range->fndecl = fndecl; ++ current_range->top_level_function = top_level; ++ current_range->context = fndecl; ++ ++ /* Setup the result declaration. */ ++ tree resdecl = build_decl (UNKNOWN_LOCATION, ++ RESULT_DECL, ++ get_identifier ("resdecl%"), ++ result_type); ++ DECL_ARTIFICIAL (resdecl) = 1; ++ DECL_IGNORED_P (resdecl) = 1; ++ DECL_CONTEXT (resdecl) = fndecl; ++ DECL_RESULT (fndecl) = resdecl; ++ rest_of_decl_compilation (fndecl, 1, 0); ++ make_decl_rtl (fndecl); ++ allocate_struct_function (fndecl, false); ++ ++ /* Let GCC know the current scope is this function. */ ++ current_function_decl = fndecl; ++} ++ ++/* Pop a range for a function. */ ++ ++void ++a68_pop_function_range (tree body) ++{ ++ tree fndecl = current_range->fndecl; ++ bool top_level = current_range->top_level_function; ++ ++ if (TREE_TYPE (DECL_RESULT (fndecl)) == void_type_node) ++ { ++ a68_add_stmt (body); ++ } ++ else ++ { ++ /* Append the return statement. ++ Note that this does the copy of the returned value. */ ++ tree return_stmt = fold_build1 (RETURN_EXPR, ++ void_type_node, ++ fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (DECL_RESULT (fndecl)), ++ DECL_RESULT (fndecl), ++ a68_low_dup (body, true /* use_heap */))); ++ a68_add_stmt (return_stmt); ++ } ++ ++ /* Set the body of the function. */ ++ DECL_SAVED_TREE (fndecl) = a68_pop_range (); ++ ++ /* Output the GENERIC tree for the function.. */ ++ dump_function (TDI_original, fndecl); ++ /* This compiles the function all the way to assembler language output. ++ Nested functions are finalized when the containing top-level function is ++ finalized. */ ++ if (top_level || a68_in_global_range ()) ++ cgraph_node::finalize_function (fndecl, true); ++ else ++ /* Register this function with cgraph just far enough to get it added to ++ our parent's nested function list. */ ++ (void) cgraph_node::get_create (fndecl); ++ ++ /* Let GCC know the current scope has changed. */ ++ current_function_decl = NULL_TREE; ++ for (struct range *r = current_range; r; r = r->next) ++ { ++ if (r->fndecl != NULL_TREE) ++ current_function_decl = r->fndecl; ++ } ++} ++ ++/* Push a range for a serial clause. ++ ++ label1: BIND_EXPR_BODY (STATEMENT_LIST ( ++ expr1; label1, ++ expr2 expr1, ++ exit label2: clause_result = expr2, ++ expr3; goto exit_label, ++ expr4 label2, ++ exit label3: expr3, ++ expr5 clause_result = expr4, ++ goto exit_label, ++ label3, ++ clause_result = expr5, ++ exit_label, ++ clause_result)) */ ++ ++void ++a68_push_serial_clause_range (MOID_T *clause_mode, ++ bool save_restore_stack) ++{ ++ /* Get the type of the enclosing clause. */ ++ tree clause_type = CTYPE (clause_mode); ++ ++ /* If the serial clause has declarations that involve dynamic allocation, and ++ the environ it establishes is local, then save the stack pointer. */ ++ if (save_restore_stack) ++ { ++ a68_push_range (clause_mode); ++ current_range->save_restore_stack = true; ++ ++ tree outer_clause_result_decl = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, ++ NULL, /* Set below. */ ++ clause_type); ++ char *outer_clause_result_name = xasprintf ("outer_clause_result%d%%", ++ DECL_UID (outer_clause_result_decl)); ++ DECL_NAME (outer_clause_result_decl) = get_identifier (outer_clause_result_name); ++ free (outer_clause_result_name); ++ current_range->clause_result_decl = outer_clause_result_decl; ++ a68_add_decl (outer_clause_result_decl); ++ ++ /* Variable used to save the stack pointer. */ ++ tree stack_save_decl = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, ++ get_identifier ("stack_save%"), ++ build_pointer_type (char_type_node)); ++ current_range->clause_stack_save_decl = stack_save_decl; ++ a68_add_decl (stack_save_decl); ++ a68_add_stmt (fold_build1 (DECL_EXPR, ++ TREE_TYPE (stack_save_decl), ++ stack_save_decl)); ++ ++ /* Save stack pointer. */ ++ tree call = builtin_decl_implicit (BUILT_IN_STACK_SAVE); ++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 0); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ stack_save_decl, call)); ++ } ++ ++ /* Push a new range. */ ++ a68_push_range (clause_mode); ++ current_range->save_restore_stack = save_restore_stack; ++ ++ /* Create a decl for clause_result with the right type and add it to the ++ block's declaration list. */ ++ tree clause_result_decl = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, ++ NULL, /* Set below. */ ++ clause_type); ++ char *clause_result_name = xasprintf ("clause_result%d%%", DECL_UID (clause_result_decl)); ++ DECL_NAME (clause_result_decl) = get_identifier (clause_result_name); ++ // free (clause_result_name); ++ DECL_INITIAL (clause_result_decl) = a68_get_skip_tree (clause_mode); ++ DECL_CONTEXT (clause_result_decl) = current_range->context; ++ current_range->clause_result_decl = clause_result_decl; ++ ++ /* Create a decl for the clause's exit label. */ ++ tree clause_exit_label_decl = build_decl (UNKNOWN_LOCATION, ++ LABEL_DECL, ++ NULL, /* Set below. */ ++ void_type_node); ++ char *exit_label_name = xasprintf ("clause_exit_label%d%%", DECL_UID (clause_exit_label_decl)); ++ DECL_NAME (clause_exit_label_decl) = get_identifier (exit_label_name); ++ free (exit_label_name); ++ DECL_CONTEXT (clause_exit_label_decl) = current_range->context; ++ current_range->clause_exit_label_decl = clause_exit_label_decl; ++} ++ ++/* Pop a range for a serial clause and return the resulting bind ++ expression. */ ++ ++tree ++a68_pop_serial_clause_range (void) ++{ ++ struct range *range = current_range; ++ MOID_T *clause_mode = range->mode; ++ tree clause_type = CTYPE (clause_mode); ++ ++ /* The last expression in the statements list is either a single unit or a ++ labeled unit. Consolidate it to a ref if required by the mode of the ++ serial clause. */ ++ { ++ tree_stmt_iterator si = tsi_last (range->stmt_list); ++ tree last_expr = tsi_stmt (si); ++ if (TREE_CODE (last_expr) == COMPOUND_EXPR ++ && TREE_CODE (TREE_OPERAND (last_expr, 0)) == LABEL_EXPR) ++ { ++ TREE_OPERAND (last_expr, 1) = a68_consolidate_ref (range->mode, ++ TREE_OPERAND (last_expr, 1)); ++ TREE_TYPE (last_expr) = TREE_TYPE (TREE_OPERAND (last_expr, 1)); ++ } ++ else ++ last_expr = a68_consolidate_ref (range->mode, last_expr); ++ a68_add_stmt (last_expr); ++ tsi_delink (&si); ++ } ++ ++ /* If the serial clause has completers, we have to make use of the ++ clause_result% and clause_exit_label% mechanism to assure the statements ++ list has a single exit at the end. */ ++ if (range->has_completers) ++ { ++ /* First prepend EXPR_DECL expressions for clause_result% and ++ clause_exit_label% */ ++ { ++ tree_stmt_iterator si = tsi_start (range->stmt_list); ++ tsi_link_before (&si, ++ fold_build1 (DECL_EXPR, ++ TREE_TYPE (range->clause_result_decl), ++ range->clause_result_decl), ++ TSI_CONTINUE_LINKING); ++ tsi_link_before (&si, ++ fold_build1 (DECL_EXPR, ++ TREE_TYPE (range->clause_exit_label_decl), ++ range->clause_exit_label_decl), ++ TSI_CONTINUE_LINKING); ++ } ++ ++ /* Then turn the last expression in stmt_list to an assignment to ++ clause_result_decl%, but don't bother if it has been voided. */ ++ if (clause_type != a68_void_type) ++ { ++ tree_stmt_iterator si = tsi_last (range->stmt_list); ++ tree last_expr = tsi_stmt (si); ++ ++ a68_add_stmt (build2 (MODIFY_EXPR, ++ clause_type, ++ range->clause_result_decl, ++ last_expr)); ++ tsi_delink (&si); ++ } ++ ++ a68_add_decl (range->clause_result_decl); ++ a68_add_decl (range->clause_exit_label_decl); ++ ++ /* Finally append the exit label and last expression with ++ result_decl. */ ++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, range->clause_exit_label_decl)); ++ a68_add_stmt (build1 (NON_LVALUE_EXPR, clause_type, range->clause_result_decl)); ++ } ++ ++ /* Check that the type of the last statement in the statements list is the ++ same than the type corresponding to the clause mode. */ ++ { ++ tree_stmt_iterator si = tsi_last (range->stmt_list); ++ if (TREE_TYPE (tsi_stmt (si)) != clause_type ++ /* But NIL can appear in a context expecting VOID with no widening. */ ++ && !(clause_type == a68_void_type ++ && POINTER_TYPE_P (TREE_TYPE (tsi_stmt (si))) ++ && TREE_CODE (tsi_stmt (si)) == INTEGER_CST ++ && tree_to_shwi (tsi_stmt (si)) == 0) ++ /* And any row type is valid when M_ROWS is expected. */ ++ && !(A68_ROWS_TYPE_P (clause_type) ++ && A68_ROWS_TYPE_P (TREE_TYPE (tsi_stmt (si)))) ++ /* Do not rely on comparing pointer types, as the equality fails in ++ that case. We need a better way of comparing types, either using ++ TYPE_CANONICAL or caching. */ ++ && !(POINTER_TYPE_P (TREE_TYPE (tsi_stmt (si))) && POINTER_TYPE_P (clause_type))) ++ { ++ printf ("last statement:\n"); ++ debug_tree (tsi_stmt (si)); ++ printf ("expected type:\n"); ++ debug_tree (clause_type); ++ gcc_unreachable (); ++ } ++ } ++ ++ /* If the serial clause has declarations that involve dynamic allocation, and ++ the environ it establishes is local, then restore the stack pointer. */ ++ if (range->save_restore_stack) ++ { ++ /* Turn last expression of inner clause into a modify statement. This ++ may involve a copy. This can be omitted if the serial clause yields ++ void. */ ++ if (clause_type != a68_void_type) ++ { ++ tree_stmt_iterator si = tsi_last (range->stmt_list); ++ tree last_expr = tsi_stmt (si); ++ ++ a68_add_stmt (build2 (MODIFY_EXPR, ++ clause_type, ++ range->next->clause_result_decl, ++ a68_low_dup (last_expr))); ++ tsi_delink (&si); ++ } ++ ++ /* Finish inner clause, restoring stack pointer on finalizing. */ ++ tree restore_sp = builtin_decl_implicit (BUILT_IN_STACK_RESTORE); ++ restore_sp = build_call_expr_loc (UNKNOWN_LOCATION, restore_sp, 1, ++ current_range->next->clause_stack_save_decl); ++ a68_add_stmt (a68_pop_range_with_finalizer (restore_sp)); ++ /* The result value is now in clause_result_decl. */ ++ a68_add_stmt (build1 (NON_LVALUE_EXPR, clause_type, ++ current_range->clause_result_decl)); ++ } ++ ++ return a68_pop_range (); ++} ++ ++/* Whether the current range is the global range. */ ++ ++bool ++a68_in_global_range (void) ++{ ++ return current_range == global_range; ++} ++ ++/* Initialize ranges. */ ++ ++void ++a68_init_ranges (void) ++{ ++ global_range = new_range (); ++ global_range->context = build_translation_unit_decl (NULL); ++ current_range = global_range; ++} ++ ++#include "gt-algol68-a68-low-ranges.h" +--- /dev/null ++++ b/src/gcc/algol68/a68-low-reals.cc +@@ -0,0 +1,620 @@ ++/* Lowering routines for all things related to REAL values. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "math.h" /* For log10 */ ++ ++#include "a68.h" ++ ++tree ++a68_get_real_skip_tree (MOID_T *m) ++{ ++ tree int_type = NULL_TREE; ++ tree real_type = NULL_TREE; ++ ++ if (m == M_REAL) ++ { ++ int_type = a68_int_type; ++ real_type = a68_real_type; ++ } ++ else if (m == M_LONG_REAL) ++ { ++ int_type = a68_long_int_type; ++ real_type = a68_long_real_type; ++ } ++ else if (m == M_LONG_LONG_REAL) ++ { ++ int_type = a68_long_long_int_type; ++ real_type = a68_long_long_real_type; ++ } ++ else ++ gcc_unreachable (); ++ ++ return build_real_from_int_cst (real_type, ++ build_int_cst (int_type, 0)); ++} ++ ++static tree ++addr_of_builtin_decl (enum built_in_function fncode) ++{ ++ tree builtin = builtin_decl_explicit (fncode); ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (builtin)), builtin); ++} ++ ++/* Build PI for the given real type. */ ++ ++tree ++a68_real_pi (tree type) ++{ ++ return build_real (type, dconst_pi ()); ++} ++ ++/* Given a real type, build the maximum value expresssable with that type. */ ++ ++tree ++a68_real_maxval (tree type) ++{ ++ REAL_VALUE_TYPE max; ++ real_maxval (&max, 0, TYPE_MODE (type)); ++ return build_real (type, max); ++} ++ ++/* Given a real type, build the minimum value expressable with that type. */ ++ ++tree ++a68_real_minval (tree type) ++{ ++ REAL_VALUE_TYPE min; ++ real_maxval (&min, 1, TYPE_MODE (type)); ++ return build_real (type, min); ++} ++ ++/* Given a real type, build the smallest value which can be meaningfully added ++ to or substracted from 1. */ ++ ++tree ++a68_real_smallval (tree type) ++{ ++ /* The smallest real value which can be meaningfully added to or subtracted ++ from 1. */ ++ const machine_mode mode = TYPE_MODE (type); ++ const struct real_format *fmt = REAL_MODE_FORMAT (mode); ++ ++ char buf[128]; ++ if (fmt->pnan < fmt->p) ++ snprintf (buf, sizeof (buf), "0x1p%d", fmt->emin - fmt->p); ++ else ++ snprintf (buf, sizeof (buf), "0x1p%d", 1 - fmt->p); ++ ++ REAL_VALUE_TYPE res; ++ real_from_string (&res, buf); ++ return build_real (type, res); ++} ++ ++/* Given a real type, build an INT with the number of decimal digits required ++ to represent a mantissa, such that a real is not reglected in comparison ++ with 1, not including sign. */ ++ ++tree ++a68_real_width (tree type) ++{ ++ const machine_mode mode = TYPE_MODE (type); ++ const struct real_format *fmt = REAL_MODE_FORMAT (mode); ++ return build_int_cst (a68_int_type, fmt->p); ++} ++ ++/* Given a real type, build an INT with the number of decimal digits required ++ to represent a decimal exponent, such that a real can be correctly ++ represented, not including sign. */ ++ ++tree ++a68_real_exp_width (tree type ATTRIBUTE_UNUSED) ++{ ++ const machine_mode mode = TYPE_MODE (type); ++ const struct real_format *fmt = REAL_MODE_FORMAT (mode); ++ const double log10_2 = .30102999566398119521; ++ double log10_b = log10_2; ++ int max_10_exp = fmt->emax * log10_b; ++ ++ return build_int_cst (a68_int_type, 1 + log10 (max_10_exp)); ++} ++ ++/* Given a real value VAL, return -1 if it is less than zero, 0 if it is zero ++ and +1 if it is bigger than zero. The built value is always of mode ++ M_INT. */ ++ ++tree ++a68_real_sign (tree val) ++{ ++ tree zero = build_real (TREE_TYPE (val), dconst0); ++ return fold_build3 (COND_EXPR, ++ a68_int_type, ++ build2 (EQ_EXPR, integer_type_node, val, zero), ++ build_int_cst (a68_int_type, 0), ++ fold_build3 (COND_EXPR, ++ a68_int_type, ++ fold_build2 (GT_EXPR, integer_type_node, val, zero), ++ build_int_cst (a68_int_type, 1), ++ build_int_cst (a68_int_type, -1))); ++} ++ ++/* Absolute value of a real value. */ ++ ++tree ++a68_real_abs (tree val) ++{ ++ return fold_build1 (ABS_EXPR, TREE_TYPE (val), val); ++} ++ ++tree ++a68_real_sqrt (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_SQRTF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_SQRT; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_SQRTL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_tan (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_TANF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_TAN; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_TANL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_sin (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_SINF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_SIN; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_SINL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_cos (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_COSF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_COS; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_COSL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_acos (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_ACOSF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_ACOS; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_ACOSL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_asin (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_ASINF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_ASIN; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_ASINL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_atan (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_ATANF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_ATAN; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_ATANL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_ln (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_LOGF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_LOG; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_LOGL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_log (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_LOG10F; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_LOG10; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_LOG10L; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_exp (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_EXPF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_EXP; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_EXPL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++/* Build the real value lengthened from the value of VAL, from mode ++ FROM_MODE to mode TO_MODE. */ ++ ++tree ++a68_real_leng (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) ++{ ++ /* Lengthening can be done by just a conversion. */ ++ return fold_convert (CTYPE (to_mode), val); ++} ++ ++/* Build the real value that can be lengthened to the value of VAL, from mode ++ FROM_MODE to mode TO_MODE. ++ ++ If VAL cannot be represented in TO_MODE because it is bigger than the most ++ positive value representable in TO_MODE, then it is truncated to that value. ++ ++ Likewise, if VAL cannot be represented in TO_MODE because it is less than ++ the most negative value representable in TO_MODE, then it is truncated to ++ that value. */ ++ ++tree ++a68_real_shorten (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) ++{ ++ tree most_positive_value = fold_convert (CTYPE (from_mode), ++ a68_real_maxval (CTYPE (to_mode))); ++ tree most_negative_value = fold_convert (CTYPE (from_mode), ++ a68_real_minval (CTYPE (to_mode))); ++ ++ val = save_expr (val); ++ most_positive_value = save_expr (most_positive_value); ++ most_negative_value = save_expr (most_negative_value); ++ return fold_build3 (COND_EXPR, CTYPE (to_mode), ++ fold_build2 (GT_EXPR, a68_bool_type, val, most_positive_value), ++ fold_convert (CTYPE (to_mode), most_positive_value), ++ fold_build3 (COND_EXPR, CTYPE (to_mode), ++ fold_build2 (LT_EXPR, a68_bool_type, val, most_negative_value), ++ fold_convert (CTYPE (to_mode), most_negative_value), ++ fold_convert (CTYPE (to_mode), val))); ++} ++ ++/* Given a real expression VAL of mode MODE, produce an integral value which is ++ equal to the given real, or the next integer below (more negative than) the ++ given real. */ ++ ++tree ++a68_real_entier (tree val, MOID_T *to_mode, MOID_T *from_mode) ++{ ++ tree fn = NULL_TREE; ++ tree to_type = CTYPE (to_mode); ++ ++ if (from_mode == M_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IFLOORF); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LFLOORF); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLFLOORF); ++ else ++ gcc_unreachable (); ++ } ++ else if (from_mode == M_LONG_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IFLOOR); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LFLOOR); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLFLOOR); ++ else ++ gcc_unreachable (); ++ } ++ else if (from_mode == M_LONG_LONG_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IFLOORL); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LFLOORL); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLFLOORL); ++ else ++ gcc_unreachable (); ++ } ++ else ++ gcc_unreachable (); ++ ++ return build_call_expr_loc (UNKNOWN_LOCATION, fn, 1, val); ++} ++ ++/* Given a real expression VAL of mode MODE, produce an integral value which is ++ the nearest integer to the given real. */ ++ ++tree ++a68_real_round (tree val, MOID_T *to_mode, MOID_T *from_mode) ++{ ++ tree fn = NULL_TREE; ++ tree to_type = CTYPE (to_mode); ++ ++ if (from_mode == M_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IROUNDF); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LROUNDF); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLROUNDF); ++ else ++ gcc_unreachable (); ++ } ++ else if (from_mode == M_LONG_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IROUND); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LROUND); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLROUND); ++ else ++ gcc_unreachable (); ++ } ++ else if (from_mode == M_LONG_LONG_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IROUNDL); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LROUNDL); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLROUNDL); ++ else ++ gcc_unreachable (); ++ } ++ else ++ gcc_unreachable (); ++ ++ return build_call_expr_loc (UNKNOWN_LOCATION, fn, 1, val); ++} ++ ++ ++/* Given two real values of mode M, build an expression that calculates the ++ addition of A and B. */ ++ ++tree ++a68_real_plus (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, PLUS_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates the ++ subtraction of A by B. */ ++ ++tree ++a68_real_minus (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, MINUS_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates the ++ multiplication of A by B. */ ++ ++tree ++a68_real_mult (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, MULT_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates the ++ division of A by B. */ ++ ++tree ++a68_real_div (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, RDIV_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates whether ++ A = B. */ ++ ++tree ++a68_real_eq (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates whether ++ A /= B. */ ++ ++tree ++a68_real_ne (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates whether ++ A < B. */ ++ ++tree ++a68_real_lt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates ++ whether A <= B. */ ++ ++tree ++a68_real_le (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates whether ++ A > B. */ ++ ++tree ++a68_real_gt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates whether ++ A >= B. */ ++ ++tree ++a68_real_ge (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Exponentiation involving real values. ++ ++ REAL <- REAL, REAL ++ REAL <- REAL, INT ++ LONG REAL <- LONG REAL, LONG REAL ++ LONG REAL <- LONG REAL, INT ++ LONG LONG REAL <- LONG LONG REAL, LONG LONG REAL ++ LONG LONG REAL <- LONG LONG REAL, INT */ ++ ++tree ++a68_real_pow (MOID_T *m, MOID_T *a_mode, MOID_T *b_mode, ++ tree a, tree b, location_t loc) ++{ ++ enum built_in_function built_in; ++ if (m == M_REAL) ++ { ++ gcc_assert (a_mode == M_REAL); ++ built_in = b_mode == M_REAL ? BUILT_IN_POWF : BUILT_IN_POWIF; ++ } ++ else if (m == M_LONG_REAL) ++ { ++ gcc_assert (a_mode == M_LONG_REAL); ++ built_in = b_mode == M_LONG_REAL ? BUILT_IN_POW : BUILT_IN_POWI; ++ } ++ else if (m == M_LONG_LONG_REAL) ++ { ++ gcc_assert (a_mode == M_LONG_LONG_REAL); ++ built_in = b_mode == M_LONG_LONG_REAL ? BUILT_IN_POWL : BUILT_IN_POWIL; ++ } ++ else ++ gcc_unreachable (); ++ ++ tree call = builtin_decl_explicit (built_in); ++ gcc_assert (call != NULL_TREE); ++ return build_call_expr_loc (loc, call, 2, a, b); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-refs.cc +@@ -0,0 +1,52 @@ ++/* Lowering routines for all things related to names. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielding of SKIP for the given name mode. */ ++ ++tree ++a68_get_ref_skip_tree (MOID_T *m) ++{ ++ /* Build a NULL pointer. */ ++ return build_int_cst (CTYPE (m), 0); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-runtime.cc +@@ -0,0 +1,225 @@ ++/* Libcalls to Algol 68 run-time functions. ++ Copyright (C) 2006-2025 Free Software Foundation, Inc. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ Adapted from gcc/d/runtime.cc. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* The lowering pass may generate expressions to call various runtime library ++ functions. Most of these functions are implemented in libga68. This file ++ provides facilities to compile libcalls to runtime functions. The file ++ a68-low-runtime.def contains a database of available runtime library ++ functions. */ ++ ++enum a68_libcall_type ++{ ++ LCT_VOID, ++ LCT_CHAR, ++ LCT_CONSTCHARPTR, ++ LCT_VOIDPTR, ++ LCT_UNISTR, ++ LCT_UNISTRPTR, ++ LCT_SIZE, ++ LCT_SSIZE, ++ LCT_SIZEPTR, ++ LCT_UINT, ++ LCT_INT, ++ LCT_LONGLONGINT, ++ LCT_FLOAT, ++ LCT_DOUBLE, ++ LCT_LONGDOUBLE, ++ LCT_END ++}; ++ ++/* An array of all types that are used by the runtime functions we need. */ ++ ++static tree libcall_types[LCT_END]; ++ ++/* Internal list of library functions. */ ++ ++static tree libcall_decls[A68_LIBCALL_LAST]; ++ ++/* Return the TREE type that is described by TYPE. */ ++ ++static tree ++get_libcall_type (a68_libcall_type type) ++{ ++ if (libcall_types[type]) ++ return libcall_types[type]; ++ ++ if (type == LCT_VOID) ++ libcall_types[type] = void_type_node; ++ else if (type == LCT_CHAR) ++ libcall_types[type] = uint32_type_node; ++ else if (type == LCT_CONSTCHARPTR) ++ libcall_types[type] = build_pointer_type (build_qualified_type (char_type_node, ++ TYPE_QUAL_CONST)); ++ else if (type == LCT_VOIDPTR) ++ libcall_types[type] = ptr_type_node; ++ else if (type == LCT_UNISTR) ++ libcall_types[type] = build_pointer_type (a68_char_type); ++ else if (type == LCT_UNISTRPTR) ++ libcall_types[type] = build_pointer_type (build_pointer_type (a68_char_type)); ++ else if (type == LCT_SIZE) ++ libcall_types[type] = sizetype; ++ else if (type == LCT_SSIZE) ++ libcall_types[type] = ssizetype; ++ else if (type == LCT_SIZEPTR) ++ libcall_types[type] = build_pointer_type (sizetype); ++ else if (type == LCT_UINT) ++ libcall_types[type] = unsigned_type_node; ++ else if (type == LCT_INT) ++ libcall_types[type] = integer_type_node; ++ else if (type == LCT_LONGLONGINT) ++ libcall_types[type] = long_long_integer_type_node; ++ else if (type == LCT_FLOAT) ++ libcall_types[type] = float_type_node; ++ else if (type == LCT_DOUBLE) ++ libcall_types[type] = double_type_node; ++ else if (type == LCT_LONGDOUBLE) ++ libcall_types[type] = long_double_type_node; ++ else ++ gcc_unreachable (); ++ ++ return libcall_types[type]; ++} ++ ++/* Build and return a function declaration named NAME. The RETURN_TYPE is the ++ type returned, FLAGS are the expression call flags, and NPARAMS is the ++ number of arguments, the types of which are provided in `...'. */ ++ ++static tree ++build_libcall_decl (const char *name, a68_libcall_type return_type, ++ int flags, int nparams, ...) ++{ ++ tree *args = XALLOCAVEC (tree, nparams); ++ bool varargs = false; ++ tree fntype; ++ ++ /* Add parameter types, using `void' as the last parameter type ++ to mean this function accepts a variable list of arguments. */ ++ va_list ap; ++ va_start (ap, nparams); ++ ++ for (int i = 0; i < nparams; i++) ++ { ++ a68_libcall_type ptype = (a68_libcall_type) va_arg (ap, int); ++ tree type = get_libcall_type (ptype); ++ ++ if (type == void_type_node) ++ { ++ varargs = true; ++ nparams = i; ++ } ++ else ++ args[i] = type; ++ } ++ ++ va_end (ap); ++ ++ /* Build the function. */ ++ tree tret = get_libcall_type (return_type); ++ if (varargs) ++ fntype = build_varargs_function_type_array (tret, nparams, args); ++ else ++ fntype = build_function_type_array (tret, nparams, args); ++ ++ tree decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, ++ get_identifier (name), fntype); ++ DECL_EXTERNAL (decl) = 1; ++ TREE_PUBLIC (decl) = 1; ++ DECL_ARTIFICIAL (decl) = 1; ++ DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; ++ DECL_VISIBILITY_SPECIFIED (decl) = 1; ++ ++ /* Set any attributes on the function, such as malloc or noreturn. */ ++ set_call_expr_flags (decl, flags); ++ return decl; ++} ++ ++/* Return or create the runtime library function declaration for LIBCALL. ++ Library functions are generated as needed. This could probably be changed ++ in the future to be done in the compiler init stage, like GCC builtin trees ++ are. */ ++ ++tree ++a68_get_libcall (a68_libcall_fn libcall) ++{ ++ if (libcall_decls[libcall]) ++ return libcall_decls[libcall]; ++ ++ switch (libcall) ++ { ++#define DEF_A68_RUNTIME(CODE, NAME, TYPE, PARAMS, FLAGS) \ ++ case A68_LIBCALL_ ## CODE: \ ++ libcall_decls[libcall] = build_libcall_decl (NAME, TYPE, FLAGS, PARAMS); \ ++ break; ++#include "a68-low-runtime.def" ++#undef DEF_A68_RUNTIME ++ default: ++ gcc_unreachable (); ++ } ++ ++ return libcall_decls[libcall]; ++} ++ ++/* Generate a call to LIBCALL, returning the result as TYPE. NARGS is the ++ number of call arguments, the expressions of which are provided in `...'. ++ This does not perform conversions or promotions on the arguments. */ ++ ++tree ++a68_build_libcall (a68_libcall_fn libcall, tree type ATTRIBUTE_UNUSED, ++ int nargs, ...) ++{ ++ /* Build the call expression to the runtime function. */ ++ tree decl = a68_get_libcall (libcall); ++ tree *args = XALLOCAVEC (tree, nargs); ++ va_list ap; ++ ++ va_start (ap, nargs); ++ for (int i = 0; i < nargs; i++) ++ args[i] = va_arg (ap, tree); ++ va_end (ap); ++ ++ tree result = build_call_expr_loc_array (input_location, decl, nargs, args); ++ ++ /* Assumes caller knows what it is doing. */ ++ return result; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-runtime.def +@@ -0,0 +1,92 @@ ++/* a68-low-runtime.def -- Definitions for Algol 68 runtime functions. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++/* Helper macros for parameter building. */ ++#define P0() 0 ++#define P1(T1) 1, LCT_ ## T1 ++#define P2(T1, T2) \ ++ 2, LCT_ ## T1, LCT_ ## T2 ++#define P3(T1, T2, T3) \ ++ 3, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3 ++#define P4(T1, T2, T3, T4) \ ++ 4, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4 ++#define P5(T1, T2, T3, T4, T5) \ ++ 5, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4, LCT_ ## T5 ++#define P6(T1, T2, T3, T4, T5, T6) \ ++ 6, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4, LCT_ ## T5, LCT_ ## T6 ++#define P7(T1, T2, T3, T4, T5, T6, T7) \ ++ 7, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4, LCT_ ## T5, LCT_ ## T6, LCT_ ## T7 ++#define RT(T1) LCT_ ## T1 ++ ++/* Algol 68 runtime library functions. */ ++ ++/* DEF_A68_RUNTIME (CODE, NAME, TYPE, PARAMS, FLAGS) ++ CODE The enum code used to refer to this function. ++ NAME The name of this function as a string. ++ FLAGS ECF flags to describe attributes of the function. ++ ++ Used for declaring functions that are called by generated code. */ ++ ++DEF_A68_RUNTIME (ASSERT, "_libga68_assert", RT(VOID), P2(CONSTCHARPTR, UINT), ECF_NORETURN) ++DEF_A68_RUNTIME (SET_EXIT_STATUS, "_libga68_set_exit_status", RT(VOID), P1(INT), 0) ++DEF_A68_RUNTIME (MALLOC, "_libga68_malloc", RT(VOIDPTR), P1(SIZE), ECF_NOTHROW | ECF_LEAF | ECF_MALLOC) ++DEF_A68_RUNTIME (DEREFNIL, "_libga68_derefnil", RT(VOID), P2(CONSTCHARPTR, UINT), ECF_NORETURN) ++DEF_A68_RUNTIME (UNREACHABLE, "_libga68_unreachable", RT(VOID), P2(CONSTCHARPTR, UINT), ECF_NORETURN) ++DEF_A68_RUNTIME (INVALIDCHARERROR, "_libga68_invalidcharerror", RT(VOID), P3(CONSTCHARPTR,UINT,INT), ECF_NORETURN) ++DEF_A68_RUNTIME (BITSBOUNDSERROR, "_libga68_bitsboundserror", RT(VOID), P3(CONSTCHARPTR,UINT,SSIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (ARRAYLOWERBOUND, "_libga68_lower_bound", RT(VOID), ++ P4(CONSTCHARPTR, UINT, SSIZE, SSIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (ARRAYUPPERBOUND, "_libga68_upper_bound", RT(VOID), ++ P4(CONSTCHARPTR, UINT, SSIZE, SSIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (ARRAYBOUNDS, "_libga68_bounds", RT(VOID), ++ P5(CONSTCHARPTR, UINT, SSIZE, SSIZE, SSIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (ARRAYBOUNDSMISMATCH, "_libga68_bounds_mismatch", RT(VOID), ++ P7(CONSTCHARPTR, UINT, SIZE, SSIZE, SSIZE, SSIZE, SSIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (ARRAYDIM, "_libga68_dim", RT(VOID), ++ P4(CONSTCHARPTR, UINT, SIZE, SIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (RANDOM, "_libga68_random", RT(FLOAT), P0(), 0) ++DEF_A68_RUNTIME (LONGRANDOM, "_libga68_longrandom", RT(DOUBLE), P0(), 0) ++DEF_A68_RUNTIME (LONGLONGRANDOM, "_libga68_longlongrandom", RT(LONGDOUBLE), P0(), 0) ++DEF_A68_RUNTIME (POSIX_FCONNECT, "_libga68_posixfconnect", RT(INT), P4(UNISTRPTR,SIZE,SIZE,INT), 0) ++DEF_A68_RUNTIME (POSIX_FOPEN, "_libga68_posixfopen", RT(INT), P4(UNISTRPTR,SIZE,SIZE,UINT), 0) ++DEF_A68_RUNTIME (POSIX_FCREATE, "_libga68_posixcreat", RT(INT), P4(UNISTRPTR,SIZE,SIZE,UINT), 0) ++DEF_A68_RUNTIME (POSIX_FCLOSE, "_libga68_posixclose", RT(INT), P0(), 0) ++DEF_A68_RUNTIME (POSIX_FSIZE, "_libga68_posixfsize", RT(LONGLONGINT), P1(INT), 0) ++DEF_A68_RUNTIME (POSIX_ARGC, "_libga68_posixargc", RT(INT), P0(), 0) ++DEF_A68_RUNTIME (POSIX_ARGV, "_libga68_posixargv", RT(UNISTRPTR), P2(INT, SIZEPTR), 0) ++DEF_A68_RUNTIME (POSIX_PUTCHAR, "_libga68_posixputchar", RT(CHAR), P1(CHAR), 0) ++DEF_A68_RUNTIME (POSIX_FPUTC, "_libga68_posixfputc", RT(CHAR), P2(INT,CHAR), 0) ++DEF_A68_RUNTIME (POSIX_PUTS, "_libga68_posixputs", RT(VOID), P3(UNISTR,SIZE,SIZE), 0) ++DEF_A68_RUNTIME (POSIX_FPUTS, "_libga68_posixfputs", RT(INT), P4(INT,UNISTRPTR,SIZE,SIZE), 0) ++DEF_A68_RUNTIME (POSIX_GETCHAR, "_libga68_posixgetchar", RT(CHAR), P0(), 0) ++DEF_A68_RUNTIME (POSIX_FGETC, "_libga68_posixfgetc", RT(CHAR), P1(INT), 0) ++DEF_A68_RUNTIME (POSIX_GETS, "_libga68_posixgets", RT(UNISTRPTR), P2(INT,SIZEPTR), 0) ++DEF_A68_RUNTIME (POSIX_FGETS, "_libga68_posixfgets", RT(UNISTRPTR), P3(INT,INT,SIZEPTR), 0) ++DEF_A68_RUNTIME (POSIX_GETENV, "_libga68_posixgetenv", RT(VOID), P5(UNISTR,SIZE,SIZE,UNISTRPTR,SIZEPTR), 0) ++DEF_A68_RUNTIME (POSIX_ERRNO, "_libga68_posixerrno", RT(INT), P0(), 0) ++DEF_A68_RUNTIME (POSIX_PERROR, "_libga68_posixperror", RT(VOID), P3(UNISTR,SIZE,SIZE), 0) ++DEF_A68_RUNTIME (POSIX_STRERROR, "_libga68_posixstrerror", RT(UNISTRPTR), P2(INT, SIZEPTR), 0) ++DEF_A68_RUNTIME (POSIX_LSEEK, "_libga68_posixlseek", RT(LONGLONGINT), P3(INT,LONGLONGINT,INT), 0) ++DEF_A68_RUNTIME (U32_CMP2, "_libga68_u32_cmp2", RT(INT), P6(UNISTR, SIZE, SIZE, UNISTR, SIZE, SIZE), 0) ++ ++#undef P0 ++#undef P1 ++#undef P2 ++#undef P3 ++#undef P4 ++#undef P5 ++#undef RT +--- /dev/null ++++ b/src/gcc/algol68/a68-low-strings.cc +@@ -0,0 +1,399 @@ ++/* Lowering routines for all things related to STRINGs. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielding of SKIP for M_STRING. */ ++ ++tree ++a68_get_string_skip_tree (void) ++{ ++ return a68_get_multiple_skip_tree (M_FLEX_ROW_CHAR); ++} ++ ++/* Copy chars from STR to ELEMENTS starting at TO_INDEX chars in ELEMENTS. */ ++ ++static void ++copy_string (tree elements, tree to_index, tree str) ++{ ++ tree char_pointer_type = build_pointer_type (a68_char_type); ++ tree num_elems ++ = a68_lower_tmpvar ("num_elems%", sizetype, a68_multiple_num_elems (str)); ++ ++ tree from_index ++ = a68_lower_tmpvar ("from_index%", sizetype, size_zero_node); ++ tree from_offset ++ = a68_lower_tmpvar ("from_offset%", sizetype, size_zero_node); ++ ++ /* Begin of loop body. */ ++ a68_push_range (NULL); ++ { ++ /* if (from_index == num_elems) break; */ ++ a68_add_stmt (fold_build1 (EXIT_EXPR, void_type_node, ++ fold_build2 (GE_EXPR, sizetype, ++ from_index, num_elems))); ++ ++ /* *(elements + to_index) = *(elements + from_index) */ ++ tree to_offset = fold_build2 (MULT_EXPR, sizetype, ++ to_index, size_in_bytes (a68_char_type)); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build2 (MEM_REF, a68_char_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ char_pointer_type, ++ elements, to_offset), ++ fold_convert (char_pointer_type, ++ integer_zero_node)), ++ fold_build2 (MEM_REF, a68_char_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ char_pointer_type, ++ a68_multiple_elements (str), ++ from_offset), ++ fold_convert (char_pointer_type, ++ integer_zero_node)))); ++ ++ /* from_offset = from_offset + stride */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ from_offset, ++ fold_build2 (PLUS_EXPR, sizetype, ++ from_offset, ++ a68_multiple_stride (str, size_zero_node)))); ++ /* to_index = to_index + 1 */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, sizetype, to_index, size_one_node)); ++ ++ /* from_index = from_index + 1 */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, sizetype, from_index, size_one_node)); ++ } ++ ++ /* End of loop body. */ ++ tree loop_body = a68_pop_range (); ++ a68_add_stmt (fold_build1 (LOOP_EXPR, ++ void_type_node, ++ loop_body)); ++} ++ ++/* Given two STRINGs STR1 and STR2, allocate a new string on the stack with a ++ copy of the concatenated characters of the given string. */ ++ ++tree ++a68_string_concat (tree str1, tree str2) ++{ ++ tree char_pointer_type = build_pointer_type (a68_char_type); ++ static tree string_concat_fndecl; ++ ++ if (string_concat_fndecl == NULL_TREE) ++ { ++ string_concat_fndecl ++ = a68_low_toplevel_func_decl ("string_concat", ++ build_function_type_list (char_pointer_type, ++ TREE_TYPE (str1), ++ TREE_TYPE (str2), ++ NULL_TREE)); ++ announce_function (string_concat_fndecl); ++ ++ tree s1 = a68_low_func_param (string_concat_fndecl, "s1", TREE_TYPE (str1)); ++ tree s2 = a68_low_func_param (string_concat_fndecl, "s2", TREE_TYPE (str2)); ++ DECL_ARGUMENTS (string_concat_fndecl) = chainon (s1, s2); ++ ++ a68_push_function_range (string_concat_fndecl, char_pointer_type, ++ true /* top_level */); ++ ++ tree n1 = a68_lower_tmpvar ("n1%", sizetype, a68_multiple_num_elems (s1)); ++ tree n2 = a68_lower_tmpvar ("n2%", sizetype, a68_multiple_num_elems (s2)); ++ tree num_elems = a68_lower_tmpvar ("num_elems%", sizetype, ++ fold_build2 (PLUS_EXPR, sizetype, n1, n2)); ++ ++ /* First allocate memory for the result string. We need enough space to ++ hold the elements of both strings with a stride of 1S. */ ++ tree char_pointer_type = build_pointer_type (a68_char_type); ++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_in_bytes (a68_char_type), ++ num_elems); ++ tree elements = a68_lower_tmpvar ("elements%", char_pointer_type, ++ a68_lower_malloc (a68_char_type, elements_size)); ++ ++ /* Copy elements. */ ++ tree to_index = a68_lower_tmpvar ("to_index%", sizetype, size_zero_node); ++ copy_string (elements, to_index, s1); ++ copy_string (elements, to_index, s2); ++ a68_pop_function_range (elements); ++ } ++ ++ /* Build the resulting multiple. */ ++ str1 = save_expr (str1); ++ str2 = save_expr (str2); ++ tree n1 = a68_multiple_num_elems (str1); ++ tree n2 = a68_multiple_num_elems (str2); ++ tree num_elems = save_expr (fold_build2 (PLUS_EXPR, sizetype, n1, n2)); ++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_in_bytes (a68_char_type), ++ num_elems); ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, num_elems); ++ tree elements = build_call_nary (char_pointer_type, ++ fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (string_concat_fndecl)), ++ string_concat_fndecl), ++ 2, str1, str2); ++ return a68_row_value (CTYPE (M_STRING), 1 /* dim */, ++ elements, elements_size, ++ &lower_bound, &upper_bound); ++} ++ ++/* Given a STRING STR and an INT FACTOR, return STRING concatenated to itself ++ FACTOR - 1 times. ++ ++ Negative values of FACTOR are interpreted as zero. */ ++ ++tree ++a68_string_mult (tree str, tree factor) ++{ ++ a68_push_range (M_STRING); ++ ++ str = save_expr (str); ++ tree ssize_one_node = ssize_int (1); ++ tree res = a68_lower_tmpvar ("res%", CTYPE (M_STRING), str); ++ tree index = a68_lower_tmpvar ("index%", ssizetype, ssize_one_node); ++ ++ /* Begin of loop body. */ ++ a68_push_range (NULL); ++ ++ /* if (index == FACTOR) break; */ ++ a68_add_stmt (fold_build1 (EXIT_EXPR, ++ void_type_node, ++ fold_build2 (GE_EXPR, ssizetype, ++ index, ++ fold_convert (ssizetype, factor)))); ++ ++ /* res += str */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (res), ++ res, ++ a68_string_concat (res, str))); ++ ++ /* index++ */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ++ ssizetype, ++ index, ssize_one_node)); ++ tree loop_body = a68_pop_range (); ++ /* End of loop body. */ ++ a68_add_stmt (fold_build1 (LOOP_EXPR, ++ void_type_node, ++ loop_body)); ++ a68_add_stmt (res); ++ return a68_pop_range (); ++} ++ ++/* Given a CHAR C, build a string whose contents are just that CHAR. */ ++ ++tree ++a68_string_from_char (tree c) ++{ ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = lower_bound; ++ tree char_pointer_type = build_pointer_type (a68_char_type); ++ ++ a68_push_range (M_STRING); ++ ++ tree elements = a68_lower_tmpvar ("elements%", char_pointer_type, ++ a68_lower_malloc (a68_char_type, ++ size_one_node)); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, a68_char_type, elements), ++ c)); ++ a68_add_stmt (a68_row_value (CTYPE (M_STRING), 1 /* dim */, ++ elements, ++ size_in_bytes (a68_char_type), ++ &lower_bound, &upper_bound)); ++ return a68_pop_range (); ++} ++ ++/* Compare the two given strings lexicographically and return -1 (less than), 0 ++ (equal to) or 1 (bigger than) reflecting the result of the comparison. */ ++ ++tree ++a68_string_cmp (tree s1, tree s2) ++{ ++ s1 = save_expr (s1); ++ tree s1_elems = a68_multiple_elements (s1); ++ tree s1_len = a68_multiple_num_elems (s1); ++ tree s1_stride = a68_multiple_stride (s1, size_zero_node); ++ ++ s2 = save_expr (s2); ++ tree s2_elems = a68_multiple_elements (s2); ++ tree s2_len = a68_multiple_num_elems (s2); ++ tree s2_stride = a68_multiple_stride (s2, size_zero_node); ++ ++ return a68_build_libcall (A68_LIBCALL_U32_CMP2, ++ a68_int_type, 6, ++ s1_elems, s1_len, s1_stride, ++ s2_elems, s2_len, s2_stride); ++} ++ ++/* Return a newly allocated UTF-8 string resulting from processing the string ++ breaks in STR. This function assumes the passed string is well-formed (the ++ scanner is in charge of seeing that is true) and just ICEs if it is not. ++ NODE is used as the location for diagnostics in case the string breaks ++ contain some invalid data. */ ++ ++char * ++a68_string_process_breaks (NODE_T *node, const char *str) ++{ ++ size_t len = 0; ++ char *res = NULL; ++ ++ /* First calculate the size of the resulting string. */ ++ for (const char *p = str; *p != '\0';) ++ { ++ if (*p == '\'') ++ { ++ switch (p[1]) ++ { ++ case '\'': ++ case 'n': ++ case 'f': ++ case 'r': ++ case 't': ++ len += 1; ++ p += 2; ++ break; ++ case '(': ++ p += 2; ++ while (1) ++ { ++ if (p[0] == ')') ++ { ++ p++; ++ break; ++ } ++ else if (p[0] == ',' || ISSPACE (p[0])) ++ { ++ p++; ++ continue; ++ } ++ ++ /* An Unicode codepoint encoded in UTF-8 occupies at most six ++ octets. */ ++ len += 6; ++ p += (p[0] == 'u' ? 5 : 9); ++ } ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ } ++ else ++ { ++ len += 1; ++ p += 1; ++ } ++ } ++ ++ /* Now and allocate it, adding space for a trailing NULL. */ ++ res = (char *) xmalloc (len + 1); ++ ++ /* Finally fill it with the result of expanding all the string breaks. */ ++ size_t offset = 0; ++ for (const char *p = str; *p != '\0';) ++ { ++ if (*p == '\'') ++ { ++ switch (p[1]) ++ { ++ case '\'': res[offset] = '\''; p += 2; offset += 1; break; ++ case 'n': res[offset] = '\n'; p += 2; offset += 1; break; ++ case 't': res[offset] = '\t'; p += 2; offset += 1; break; ++ case 'r': res[offset] = '\r'; p += 2; offset += 1; break; ++ case 'f': res[offset] = '\f'; p += 2; offset += 1; break; ++ case '(': ++ { ++ p += 2; ++ while (1) ++ { ++ if (p[0] == ')') ++ { ++ p++; ++ break; ++ } ++ else if (p[0] == ',' || ISSPACE (p[0])) ++ { ++ p++; ++ continue; ++ } ++ ++ /* Skip the u or U. */ ++ gcc_assert (p[0] == 'u' || p[0] == 'U'); ++ p++; ++ ++ const char *begin = p; ++ char *end; ++ int64_t codepoint = strtol (p, &end, 16); ++ gcc_assert (end > p); ++ p = end; ++ /* Append the UTF-8 encoding of the obtained codepoint to ++ the `res' string. */ ++ int n = a68_u8_uctomb ((uint8_t *) res + offset, codepoint, 6); ++ if (n < 0) ++ { ++ char *start = CHAR_IN_LINE (INFO (node)) + (begin - str); ++ a68_scan_error (LINE (INFO (node)), start, ++ "invalid Unicode codepoint in string literal"); ++ } ++ ++ offset += n; ++ } ++ break; ++ } ++ default: gcc_unreachable (); ++ } ++ } ++ else ++ { ++ res[offset] = *p; ++ offset += 1; ++ p += 1; ++ } ++ } ++ res[offset] = '\0'; ++ ++ return res; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-structs.cc +@@ -0,0 +1,63 @@ ++/* Lowering routines for all things related to structs. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielding of SKIP for the given structured mode. */ ++ ++tree ++a68_get_struct_skip_tree (MOID_T *m) ++{ ++ /* Build a constructor that assigns SKIPs to each field in the struct ++ type. */ ++ ++ vec *ve = NULL; ++ tree field = TYPE_FIELDS (CTYPE (m)); ++ for (PACK_T *elem = PACK (m); elem; FORWARD (elem)) ++ { ++ gcc_assert (field != NULL_TREE); ++ CONSTRUCTOR_APPEND_ELT (ve, field, a68_get_skip_tree (MOID (elem))); ++ field = DECL_CHAIN (field); ++ } ++ ++ return build_constructor (CTYPE (m), ve); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-unions.cc +@@ -0,0 +1,279 @@ ++/* Lowering routines for all things related to unions. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Algol 68 unions are implemented in this front-end as a data structure ++ consisting of an overhead followed by a value: ++ ++ overhead% ++ value% ++ ++ Where overhead% is an index that identifies the kind of object currently ++ united, and value% is a GENERIC union. The value currently united in the ++ union is the overhead%-th field in value%. ++ ++ At the language level there are no values of union modes in Algol 68. All ++ values are built from either SKIP (for uninitialized UNION values) or as the ++ result of an uniting coercion. */ ++ ++/* Given an union mode P and a mode Q, return whether Q is a mode in P. */ ++ ++bool ++a68_union_contains_mode (MOID_T *p, MOID_T *q) ++{ ++ while (EQUIVALENT (p) != NO_MOID) ++ p = EQUIVALENT (p); ++ ++ for (PACK_T *pack = PACK (p); pack != NO_PACK; FORWARD (pack)) ++ { ++ MOID_T *m = MOID (pack); ++ ++ if (a68_is_equal_modes (q, m, SAFE_DEFLEXING) ++ || (m == M_STRING && IS_ROW (q) && SUB (q) == M_CHAR) ++ || (q == M_STRING && IS_ROW (m) && SUB (m) == M_CHAR)) ++ return true; ++ } ++ ++ return false; ++} ++ ++/* Given an union mode P and a mode Q, return an integer with the index of the ++ occurrence of Q in P. */ ++ ++int ++a68_united_mode_index (MOID_T *p, MOID_T *q) ++{ ++ int ret = 0; ++ while (EQUIVALENT (p) != NO_MOID) ++ p = EQUIVALENT (p); ++ for (PACK_T *pack = PACK (p); pack != NO_PACK; FORWARD (pack)) ++ { ++ MOID_T *m = MOID (pack); ++ ++ if (a68_is_equal_modes (q, m, SAFE_DEFLEXING) ++ || (m == M_STRING && IS_ROW (q) && SUB (q) == M_CHAR) ++ || (q == M_STRING && IS_ROW (m) && SUB (m) == M_CHAR)) ++ return ret; ++ ret += 1; ++ } ++ ++ /* Not found. Shouldn't happen. */ ++ gcc_unreachable (); ++ return 0; ++} ++ ++/* Given two united modes FROM and TO, and an overhead FROM_OVERHEAD in mode ++ FROM, return the corresponding overhead in mode TO. ++ ++ This function assumes that the mode with FROM_OVERHEAD in mode FROM exists ++ in TO. */ ++ ++tree ++a68_union_translate_overhead (MOID_T *from, tree from_overhead, ++ MOID_T *to) ++{ ++ /* Note that the initialization value for to_overhead should never be used. ++ XXX perhaps translate it to a run-time call to abort/compiler-error. */ ++ tree to_overhead = size_int (0); ++ ++ from_overhead = save_expr (from_overhead); ++ ++ int i = 0; ++ for (PACK_T *pack = PACK (from); pack != NO_PACK; FORWARD (pack), ++i) ++ { ++ MOID_T *mode = MOID (pack); ++ ++ if (a68_union_contains_mode (to, mode)) ++ { ++ to_overhead = fold_build3 (COND_EXPR, sizetype, ++ fold_build2 (EQ_EXPR, boolean_type_node, ++ from_overhead, ++ size_int (i)), ++ size_int (a68_united_mode_index (to, mode)), ++ to_overhead); ++ } ++ } ++ ++ return to_overhead; ++} ++ ++/* Get the overhead of a given united value EXP. */ ++ ++tree ++a68_union_overhead (tree exp) ++{ ++ tree type = TREE_TYPE (exp); ++ tree overhead_field = TYPE_FIELDS (type); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (overhead_field), ++ exp, ++ overhead_field, ++ NULL_TREE); ++} ++ ++/* Set the overhead of a given united value EXP to OVERHEAD. */ ++ ++tree ++a68_union_set_overhead (tree exp, tree overhead) ++{ ++ tree type = TREE_TYPE (exp); ++ tree overhead_field = TYPE_FIELDS (type); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (overhead), ++ fold_build3 (COMPONENT_REF, ++ TREE_TYPE (overhead_field), ++ exp, ++ overhead_field, ++ NULL_TREE), ++ overhead); ++} ++ ++/* Get the cunion in the given union EXP. */ ++ ++tree ++a68_union_cunion (tree exp) ++{ ++ tree type = TREE_TYPE (exp); ++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (value_field), ++ exp, ++ value_field, ++ NULL_TREE); ++} ++ ++/* Build a SKIP value for a given union mode M. ++ ++ The SKIP value computed is: ++ ++ overhead% refers to the first united mode in the union ++ value% is the SKIP for the first united mode in the union ++*/ ++ ++tree ++a68_get_union_skip_tree (MOID_T *m) ++{ ++ tree type = CTYPE (m); ++ tree overhead_field = TYPE_FIELDS (type); ++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); ++ ++ /* Overhead selects the first union alternative. */ ++ tree overhead = size_zero_node; ++ /* First union alternative. ++ ++ Note that the first union alternative corresponds to the last alternative ++ in the mode as written in the source program. */ ++ tree value_type = TREE_TYPE (value_field); ++ tree first_alternative_field = TYPE_FIELDS (value_type); ++ tree value = build_constructor_va (TREE_TYPE (value_field), ++ 1, ++ first_alternative_field, ++ a68_get_skip_tree (MOID (PACK (m)))); ++ return build_constructor_va (CTYPE (m), ++ 2, ++ overhead_field, overhead, ++ value_field, value); ++} ++ ++/* Return the alternative (value) at the index INDEX in the united value ++ EXP. */ ++ ++tree ++a68_union_alternative (tree exp, int index) ++{ ++ tree type = TREE_TYPE (exp); ++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); ++ tree value = fold_build3 (COMPONENT_REF, ++ TREE_TYPE (value_field), ++ exp, ++ value_field, ++ NULL_TREE); ++ ++ /* Get the current alternative in the value union. */ ++ tree value_type = TREE_TYPE (value_field); ++ tree alternative_field = TYPE_FIELDS (value_type); ++ for (int i = 0; i < index; ++i) ++ { ++ gcc_assert (TREE_CHAIN (alternative_field)); ++ alternative_field = TREE_CHAIN (alternative_field); ++ } ++ ++ /* Get the current alternative from the value. */ ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (alternative_field), ++ value, ++ alternative_field, ++ NULL_TREE); ++} ++ ++/* Return a constructor for an union of mode MODE, holding the value in EXP ++ which is of mode EXP_MODE. */ ++ ++tree ++a68_union_value (MOID_T *mode, tree exp, MOID_T *exp_mode) ++{ ++ tree type = CTYPE (mode); ++ tree overhead_field = TYPE_FIELDS (type); ++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); ++ ++ int alternative_index = a68_united_mode_index (mode, exp_mode); ++ tree overhead = build_int_cst (sizetype, alternative_index); ++ ++ /* Get the field for the alternative corresponding to alternative_index. */ ++ tree value_type = TREE_TYPE (value_field); ++ tree alternative_field = TYPE_FIELDS (value_type); ++ for (int i = 0; i < alternative_index; ++i) ++ { ++ gcc_assert (TREE_CHAIN (alternative_field)); ++ alternative_field = TREE_CHAIN (alternative_field); ++ } ++ ++ tree value = build_constructor_va (TREE_TYPE (value_field), ++ 1, ++ alternative_field, ++ a68_consolidate_ref (exp_mode, exp)); ++ return build_constructor_va (type, ++ 2, ++ overhead_field, overhead, ++ value_field, value); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-units.cc +@@ -0,0 +1,1253 @@ ++/* Lower units to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Note that enclosed clauses, which are units, are handled in ++ a68-low-clauses. */ ++ ++/* Lower an applied identifier. ++ ++ This lowers into the declaration of the referred identifier. The ++ declaration of the identifier should now be available in the symbol table ++ entry for the identifier. */ ++ ++tree ++a68_lower_identifier (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (TAG_TABLE (TAX (p)) == A68_STANDENV) ++ { ++ /* This identifier is defined in the standard prelude. Use its lowering ++ handler. */ ++ LOWERER_T lowerer = LOWERER (TAX (p)); ++ return (*lowerer) (p, ctx); ++ } ++ else ++ { ++ tree id_decl = TAX_TREE_DECL (TAX (p)); ++ ++ if (id_decl == NULL_TREE) ++ { ++ /* This is an applied identifier used before the corresponding defining ++ identifier gets defined in either an identity declaration or a ++ variable declaration. Create the declaration and install it in the ++ symbol table. The declaration itself, declaration expr and ++ initialization assignment for the declaration will be emitted by the ++ corresponding declaration lowering handler. Note that the defining ++ identifier (and therefore the declaration associated with this applied ++ identifier) may be in an outer lexical block. */ ++ ++ if (IS (MOID (p), PROC_SYMBOL)) ++ { ++ bool external = (MOIF (TAX (p)) != NO_MOIF); ++ const char *extern_symbol = EXTERN_SYMBOL (TAX (p)); ++ if (VARIABLE (TAX (p))) ++ { ++ if (external) ++ id_decl ++ = a68_make_variable_declaration_decl (p, NAME (MOIF (TAX (p))), external, ++ extern_symbol); ++ else ++ id_decl ++ = a68_make_variable_declaration_decl (p, ctx.module_definition_name); ++ } ++ else if (IN_PROC (TAX (p))) ++ { ++ if (external) ++ id_decl ++ = a68_make_proc_identity_declaration_decl (p, NAME (MOIF (TAX (p))), ++ false /* indicant */, ++ external, ++ extern_symbol); ++ else ++ id_decl ++ = a68_make_proc_identity_declaration_decl (p, ctx.module_definition_name); ++ } ++ else ++ { ++ if (external) ++ id_decl ++ = a68_make_identity_declaration_decl (p, NAME (MOIF (TAX (p))), ++ false /* indicant */, ++ external, extern_symbol); ++ else ++ id_decl ++ = a68_make_identity_declaration_decl (p, ctx.module_definition_name); ++ } ++ } ++ else ++ { ++ bool external = (MOIF (TAX (p)) != NO_MOIF); ++ const char *extern_symbol = EXTERN_SYMBOL (TAX (p)); ++ if (VARIABLE (TAX (p))) ++ { ++ if (external) ++ id_decl ++ = a68_make_variable_declaration_decl (p, NAME (MOIF (TAX (p))), external, ++ extern_symbol); ++ else ++ id_decl ++ = a68_make_variable_declaration_decl (p, ctx.module_definition_name); ++ } ++ else ++ { ++ if (external) ++ id_decl ++ = a68_make_identity_declaration_decl (p, NAME (MOIF (TAX (p))), ++ false /* indicant */, external, ++ extern_symbol); ++ else ++ id_decl ++ = a68_make_identity_declaration_decl (p, ctx.module_definition_name); ++ } ++ } ++ ++ TAX_TREE_DECL (TAX (p)) = id_decl; ++ } ++ ++ /* If the identifier refers to a FUNCTION_DECL, this means the declaration ++ was made by a procecure-identity-dclaration. The applied identifier in ++ that case refers to the address of the corresponding function. */ ++ if (TREE_CODE (id_decl) == FUNCTION_DECL) ++ return fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (id_decl)), ++ id_decl); ++ else ++ return id_decl; ++ } ++} ++ ++/* Lower a string denotation. ++ ++ String denotations are of mode []CHAR, and lower into a multiple with a ++ single dimension, and with the following characteristics: ++ ++ - The lower bound of dimension 0 is 1. ++ - The upper bound of dimension 0 is strlen (NSYMBOL (p)). ++ - The stride of dimension 0 is 0. ++ - The pointed elements are a buffer of CHARs allocated in the stack. */ ++ ++tree ++a68_lower_string_denotation (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* First process string breaks. */ ++ char *str = a68_string_process_breaks (p, NSYMBOL (p)); ++ ++ /* Build a multiple of UCS-4 CHARs from the resulting UTF-8 string. */ ++ size_t ucslen; ++ uint32_t *ucsbuf = a68_u8_to_u32 ((const uint8_t *) str, strlen (str), ++ NULL, &ucslen); ++ free (str); ++ tree string_literal = build_string_literal (ucslen * sizeof (uint32_t), ++ (char *) ucsbuf, a68_char_type); ++ tree elements = string_literal; ++ tree lower_bound = fold_convert (ssizetype, size_one_node); ++ tree upper_bound = ssize_int (ucslen); ++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_int (ucslen), ++ size_in_bytes (a68_char_type)); ++ tree multiple = a68_row_value (CTYPE (M_ROW_CHAR), 1, ++ elements, elements_size, ++ &lower_bound, &upper_bound); ++ TREE_CONSTANT (multiple) = true; ++ free (ucsbuf); ++ return multiple; ++} ++ ++/* Lower denotation. ++ ++ denotation : int denotation; real denotation; bits denotation; ++ row char denotation; ++ true symbol; false symbol; ++ empty symbol; ++ longety, int denotation; ++ longety, real denotation; ++ longety, bits denotation; ++ shortety, int denotation; ++ shortety, real denotation; ++ shortety, bits denotation. ++ ++ Denotations lower into GENERIC cst expressions. */ ++ ++tree ++a68_lower_denotation (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *moid = MOID (p); ++ ++ if (moid == M_VOID) ++ /* EMPTY */ ++ return a68_lower_empty (p, ctx); ++ else if (moid == M_BOOL) ++ /* TRUE or FALSE. */ ++ return (NSYMBOL (p)[0] == 'T') ? boolean_true_node : boolean_false_node; ++ else if (moid == M_CHAR) ++ { ++ char *s = a68_string_process_breaks (p, NSYMBOL (p)); ++ uint32_t ucs; ++ int length = a68_u8_mbtouc (&ucs, (const uint8_t *) s, 1); ++ gcc_assert (length == 1); ++ free (s); ++ return build_int_cst (a68_char_type, ucs); ++ } ++ else if (moid == M_ROW_CHAR) ++ return a68_lower_string_denotation (p, ctx); ++ else if (moid == M_INT ++ || moid == M_LONG_INT ++ || moid == M_LONG_LONG_INT ++ || moid == M_SHORT_INT ++ || moid == M_SHORT_SHORT_INT) ++ { ++ /* SIZETY INT */ ++ tree type; ++ char *end; ++ NODE_T *s = NO_NODE; ++ if (IS (SUB (p), LONGETY) || IS (SUB (p), SHORTETY)) ++ s = NEXT (SUB (p)); ++ else ++ s = SUB (p); ++ ++ type = CTYPE (moid); ++ int64_t val = strtol (NSYMBOL (s), &end, 10); ++ gcc_assert (end[0] == '\0'); ++ return build_int_cst (type, val); ++ } ++ if (moid == M_BITS ++ || moid == M_LONG_BITS ++ || moid == M_LONG_LONG_BITS ++ || moid == M_SHORT_BITS ++ || moid == M_SHORT_SHORT_BITS) ++ { ++ /* SIZETY BITS */ ++ ++ tree type; ++ char *end; ++ NODE_T *s = NO_NODE; ++ if (IS (SUB (p), LONGETY) || IS (SUB (p), SHORTETY)) ++ s = NEXT (SUB (p)); ++ else ++ s = SUB (p); ++ ++ type = CTYPE (moid); ++ int64_t radix = strtol (NSYMBOL (s), &end, 10); ++ gcc_assert (end != NSYMBOL (s) && *end == 'r'); ++ end++; ++ int64_t val = strtol (end, &end, radix); ++ gcc_assert (end[0] == '\0'); ++ return build_int_cst (type, val); ++ } ++ else if (moid == M_REAL ++ || moid == M_LONG_REAL ++ || moid == M_LONG_LONG_REAL) ++ { ++ /* SIZETY INT */ ++ tree type; ++ NODE_T *s = NO_NODE; ++ if (IS (SUB (p), LONGETY) || IS (SUB (p), SHORTETY)) ++ s = NEXT (SUB (p)); ++ else ++ s = SUB (p); ++ ++ if (moid == M_REAL) ++ type = float_type_node; ++ else if (moid == M_LONG_REAL) ++ type = double_type_node; ++ else if (moid == M_LONG_LONG_REAL) ++ type = long_double_type_node; ++ else ++ gcc_unreachable (); ++ ++ REAL_VALUE_TYPE val; ++ real_from_string (&val, NSYMBOL (s)); ++ return build_real (type, val); ++ } ++ ++ gcc_unreachable (); ++ return NULL_TREE; ++} ++ ++/* Lower SKIP. ++ ++ skip ++*/ ++ ++tree ++a68_lower_skip (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_get_skip_tree (MOID (p)); ++} ++ ++/* Lower NIHIL. ++ ++ nihil : nil. ++ ++ NIL stands for a name referring to no value and which must be ++ distinguishable from any other name. It is of mode REF AMODE. NIL is never ++ subject to coercion and it may only occur where the context is strong, ++ i.e. where AMODE is known at compile-time. ++ ++ It lowers to a pointer to AMODE with value 0. */ ++ ++tree ++a68_lower_nihil (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree type = CTYPE (MOID (p)); ++ ++ gcc_assert (type == a68_void_type || POINTER_TYPE_P (type)); ++ if (type == a68_void_type) ++ return a68_lower_empty (p, ctx); ++ else ++ return build_int_cst (type, 0); ++} ++ ++/* Lower EMPTY. */ ++ ++tree ++a68_lower_empty (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_get_empty (); ++} ++ ++/* Lower an identity relation. ++ ++ identity relation : tertiary, is symbol, tertiary; ++ tertiary, isnt symbol, tertiary. ++ ++ An identity relation determines whether two name values are the same. It ++ lowers into EQ_EXPR in case of IS and into NE_EXPR in case of ISNT. */ ++ ++tree ++a68_lower_identity_relation (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *lhs = SUB (p); ++ NODE_T *oper = NEXT (lhs); ++ NODE_T *rhs = NEXT (oper); ++ ++ /* Consolidate arguments to make sure we are comparing pointers in the ++ r-value context of the EQ_EXPR or NE_EXPR operation below. */ ++ tree op1 = a68_consolidate_ref (MOID (lhs), a68_lower_tree (lhs, ctx)); ++ tree op2 = a68_consolidate_ref (MOID (rhs), a68_lower_tree (rhs, ctx)); ++ ++ tree_code code; ++ if (IS (oper, IS_SYMBOL)) ++ code = EQ_EXPR; ++ else if (IS (oper, ISNT_SYMBOL)) ++ code = NE_EXPR; ++ else ++ gcc_unreachable (); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ code, boolean_type_node, op1, op2); ++} ++ ++/* Lower AND_FUNCTION and OR_FUNCTION. ++ ++ and function : tertiary, andf symbol, tertiary. ++ or function : tertiary, orf_symbol, tertiary. ++ ++ These are pseudo-operators that are used to implement short-circuits ++ evaluation of logical expressions. ++ ++ These pseudo-operators lower into TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR, ++ respectively. */ ++ ++tree ++a68_lower_logic_function (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *lhs = SUB (p); ++ NODE_T *oper = NEXT (lhs); ++ NODE_T *rhs = NEXT (oper); ++ ++ tree op1 = a68_lower_tree (lhs, ctx); ++ tree op2 = a68_lower_tree (rhs, ctx); ++ ++ tree_code code; ++ if (IS (oper, ANDF_SYMBOL)) ++ code = TRUTH_ANDIF_EXPR; ++ else if (IS (oper, ORF_SYMBOL)) ++ code = TRUTH_ORIF_EXPR; ++ else ++ gcc_unreachable (); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ code, boolean_type_node, op1, op2); ++} ++ ++/* Lower a primary. ++ ++ primary : identifier; denotation; cast; enclosed clause; format text. ++ ++ The primary lowers into some GENERIC expression. */ ++ ++tree ++a68_lower_primary (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} ++ ++/* Lower a cast. ++ ++ cast : declarer, enclosed clause; ++ void symbol, enclosed clause. ++ ++ A cast establishes a strong context with some required mode. This context ++ allows coercions to be applied, and these coercions have been inserted in ++ the parse tree by the parser. */ ++ ++tree ++a68_lower_cast (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (NEXT (SUB (p)), ctx); ++} ++ ++/* Lower a slice. ++ ++ slice : MULTIPLE INDEXER ++ ++ Slicing a multiple may result in either an element of the multiple, if the ++ operation is indexing, or another multiple, if the operation is a ++ trimming. */ ++ ++static void ++lower_subscript_for_indexes (NODE_T *p, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case TRIMMER: ++ /* Because of ANNOTATION (indexer) == SLICE */ ++ gcc_unreachable (); ++ break; ++ case UNIT: ++ a68_add_stmt (a68_lower_tree (p, ctx)); ++ break; ++ case GENERIC_ARGUMENT: ++ case GENERIC_ARGUMENT_LIST: ++ lower_subscript_for_indexes (SUB (p), ctx); ++ break; ++ default: ++ break; ++ } ++ } ++} ++ ++static void ++lower_subscript_for_trimmers (NODE_T *p, LOW_CTX_T ctx, ++ tree multiple, tree new_multiple, ++ int *dim, int *new_dim, ++ tree elements_pointer_type) ++{ ++ /* new.elements := multiple.elements; ++ FOR dim TO num dimensions ++ DO CO t[dim] is either a subscript i or a trimmer i : j @ k CO ++ new.elements +:= i * multiple.strides[dim]; ++ IF t[dim] is a trimmer ++ THEN INT d := ( k is absent | 1 | multiple.lb[dim] - k ); ++ new.lb[dim] := multiple.lb[dim] - d; ++ new.ub[dim] := multiple.ub[dim] - d; ++ new.strides[dim] := multiple.strides[dim] ++ FI ++ OD ++ */ ++ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case UNIT: ++ { ++ tree unit = save_expr (fold_convert (ssizetype, a68_lower_tree (p, ctx))); ++ tree new_elements = a68_multiple_elements (new_multiple); ++ tree size_dim = size_int (*dim); ++ tree dim_lower_bound = save_expr (a68_multiple_lower_bound (multiple, size_dim)); ++ tree stride = save_expr (a68_multiple_stride (multiple, size_dim)); ++ ++ /* Validate bounds. */ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ a68_add_stmt (a68_multiple_bounds_check (p, size_dim, multiple, unit)); ++ ++ /* new_elements += i * strides[dim] */ ++ tree offset = fold_build2 (MULT_EXPR, sizetype, ++ fold_convert (sizetype, fold_build2 (MINUS_EXPR, ssizetype, ++ unit, dim_lower_bound)), ++ stride); ++ ++ offset = save_expr (offset); ++ new_elements = fold_build2 (POINTER_PLUS_EXPR, ++ elements_pointer_type, ++ new_elements, ++ offset); ++ a68_add_stmt (a68_multiple_set_elements (new_multiple, new_elements)); ++ ++ /* elements_size -= i * strides[dim] */ ++ tree elements_size = a68_multiple_elements_size (new_multiple); ++ elements_size = fold_build2 (MINUS_EXPR, sizetype, ++ elements_size, offset); ++ a68_add_stmt (a68_multiple_set_elements_size (new_multiple, elements_size)); ++ ++ *dim += 1; ++ break; ++ } ++ case TRIMMER: ++ { ++ /* First collect components from the trimmer. */ ++ tree size_dim = size_int (*dim); ++ tree dim_lower_bound = save_expr (a68_multiple_lower_bound (multiple, size_dim)); ++ tree lower_bound = dim_lower_bound; ++ tree upper_bound = save_expr (a68_multiple_upper_bound (multiple, size_dim)); ++ tree at = ssize_int (1); ++ ++ NODE_T *q = SUB (p); ++ if (q != NO_NODE) ++ { ++ if (IS (q, AT_SYMBOL)) ++ { ++ /* Both bounds are implicit. */ ++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); ++ } ++ else if (IS (q, COLON_SYMBOL)) ++ { ++ /* Lower bound is implicit. */ ++ FORWARD (q); ++ if (IS (q, AT_SYMBOL)) ++ { ++ /* Upper bound is implicit, AT specified. */ ++ gcc_assert (IS (q, AT_SYMBOL)); ++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); ++ } ++ else ++ { ++ upper_bound ++ = save_expr (fold_convert (ssizetype, a68_lower_tree (q, ctx))); ++ FORWARD (q); ++ if (q != NO_NODE) ++ { ++ gcc_assert (IS (q, AT_SYMBOL)); ++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); ++ } ++ } ++ } ++ else ++ { ++ /* Lower bound is explicit. */ ++ lower_bound = fold_convert (ssizetype, a68_lower_tree (q, ctx)); ++ FORWARD (q); ++ gcc_assert (IS (q, COLON_SYMBOL)); ++ FORWARD (q); ++ if (q != NO_NODE) ++ { ++ if (IS (q, AT_SYMBOL)) ++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); ++ else ++ { ++ upper_bound ++ = save_expr (fold_convert (ssizetype, a68_lower_tree (q, ctx))); ++ FORWARD (q); ++ if (q != NO_NODE && IS (q, AT_SYMBOL)) ++ at = ++ save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); ++ } ++ } ++ } ++ } ++ ++ /* Time for some bounds checking. ++ ++ Note that in trimmers, given the current dimension's bounds ++ (L,U), we cannot simply do the check: ++ ++ L <= lower_bound <= U ++ L <= upper_bound <= U ++ ++ This is because the multiple may be flat, and the dimension may ++ have bounds such like U < L. In that case, the expressions ++ above would always eval to false for any lower_bound and ++ upper_bound. ++ ++ So we check for this instead: ++ ++ L <= lower_bound AND upper_bound <= U ++ ++ This allows to trim a "flat dimension" using a trimmer where ++ upper_bound < lower_bound. The result is, of course, another ++ "flat dimension" in the multiple result of the trimming. */ ++ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ { ++ a68_add_stmt (a68_multiple_single_bound_check (p, size_dim, multiple, ++ lower_bound, ++ false /* upper_bound */)); ++ a68_add_stmt (a68_multiple_single_bound_check (p, size_dim, multiple, ++ upper_bound, ++ true /* upper_bound */)); ++ } ++ ++ /* new_elements += i * strides[dim] */ ++ tree stride = save_expr (a68_multiple_stride (multiple, size_dim)); ++ tree new_elements = a68_multiple_elements (new_multiple); ++ tree offset = fold_build2 (MULT_EXPR, sizetype, ++ fold_convert (sizetype, fold_build2 (MINUS_EXPR, ssizetype, ++ lower_bound, dim_lower_bound)), ++ stride); ++ ++ offset = save_expr (offset); ++ new_elements = fold_build2 (POINTER_PLUS_EXPR, ++ elements_pointer_type, ++ new_elements, ++ offset); ++ a68_add_stmt (a68_multiple_set_elements (new_multiple, new_elements)); ++ ++ /* elements_size -= i * strides[dim] */ ++ tree elements_size = a68_multiple_elements_size (new_multiple); ++ elements_size = fold_build2 (MINUS_EXPR, sizetype, ++ elements_size, offset); ++ a68_add_stmt (a68_multiple_set_elements_size (new_multiple, ++ elements_size)); ++ ++ /* Fill the triplet for this dimension in new_multiple. */ ++ tree size_new_dim = size_int (*new_dim); ++ tree d = fold_build2 (MINUS_EXPR, ssizetype, lower_bound, at); ++ ++ a68_add_stmt (a68_multiple_set_lower_bound (new_multiple, size_new_dim, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ lower_bound, d))); ++ a68_add_stmt (a68_multiple_set_upper_bound (new_multiple, size_new_dim, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ upper_bound, d))); ++ a68_add_stmt (a68_multiple_set_stride (new_multiple, size_new_dim, stride)); ++ ++ *new_dim += 1; ++ *dim += 1; ++ break; ++ } ++ default: ++ lower_subscript_for_trimmers (SUB (p), ctx, ++ multiple, new_multiple, ++ dim, new_dim, ++ elements_pointer_type); ++ } ++ } ++} ++ ++tree ++a68_lower_slice (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *indexer = NEXT_SUB (p); ++ MOID_T *orig_multiple_mode = MOID (SUB (p)); ++ MOID_T *multiple_mode = orig_multiple_mode; ++ bool slicing_name = false; ++ ++ /* First of all, lower the multiple being sliced. If it is a name to a ++ multiple, set a flag and dereference. */ ++ tree multiple = a68_lower_tree (SUB (p), ctx); ++ MOID_T *orig_sliced_multiple_mode = MOID (p); ++ MOID_T *sliced_multiple_mode = MOID (p); ++ size_t slice_num_dimensions = 0; ++ if (IS_REF (MOID (SUB (p)))) ++ { ++ slicing_name = true; ++ multiple = a68_low_deref (multiple, SUB (p)); ++ multiple_mode = SUB (multiple_mode); ++ slice_num_dimensions = DIM (SUB (MOID (p))); ++ sliced_multiple_mode = SUB (sliced_multiple_mode); ++ } ++ else ++ slice_num_dimensions = DIM (MOID (p)); ++ ++ tree slice = NULL_TREE; ++ if (ANNOTATION (indexer) == SLICE) ++ { ++ /* The slice has only indexers and no trimmers. Collect units and slice ++ an element of the multiple using a68_multiple_slice. This operation ++ results in an element of the multiple. */ ++ ++ /* Collect units */ ++ a68_push_range (NULL); ++ lower_subscript_for_indexes (SUB (indexer), ctx); ++ tree units = a68_pop_range (); ++ ++ /* We need to allocate space for as many indexes as dimensions of the ++ multiple. */ ++ tree num_dimensions_tree = a68_multiple_dimensions (multiple); ++ gcc_assert (TREE_CODE (num_dimensions_tree) == INTEGER_CST); ++ int num_dimensions = tree_to_shwi (num_dimensions_tree); ++ ++ int num_indexes = 0; ++ tree *indexes = (tree *) xmalloc (sizeof (tree) * num_dimensions); ++ for (tree_stmt_iterator si = tsi_start (units); ++ !tsi_end_p (si); ++ tsi_next (&si)) ++ { ++ /* Add the unit to the list of indexes. */ ++ indexes[num_indexes] = tsi_stmt (si); ++ num_indexes++; ++ } ++ gcc_assert (num_indexes == num_dimensions); ++ ++ /* Slice. */ ++ slice = a68_multiple_slice (p, multiple, slicing_name, ++ num_indexes, indexes); ++ free (indexes); ++ } ++ else if (ANNOTATION (indexer) == TRIMMER) ++ { ++ /* The slice has both indexers and trimmers. Traverse the indexer ++ subtree to obtain the descriptor of the trimmed multiple (which is ++ another multiple) and the pointer to the elements, which points to ++ some position within the elements of the trimmed multiple. This ++ operation results in a new multiple of the same mode than the trimmed ++ multiple with shared elements. */ ++ ++ a68_push_range (sliced_multiple_mode); ++ ++ tree sliced_multiple = a68_lower_tmpvar ("multiple%", TREE_TYPE (multiple), ++ multiple); ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * slice_num_dimensions); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * slice_num_dimensions); ++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); ++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); ++ for (size_t d = 0; d < slice_num_dimensions; ++d) ++ { ++ /* Note that these dummy bounds and the implied strides will be ++ overwritten by lower_subscript_for_trimmers below. */ ++ lower_bounds[d] = ssize_one_node; ++ upper_bounds[d] = ssize_zero_node; ++ } ++ tree new_multiple = a68_row_value (CTYPE (sliced_multiple_mode), ++ slice_num_dimensions, ++ a68_multiple_elements (sliced_multiple), ++ a68_multiple_elements_size (sliced_multiple), ++ lower_bounds, upper_bounds); ++ new_multiple = save_expr (new_multiple); ++ new_multiple = a68_lower_tmpvar ("new_multiple%", TREE_TYPE (new_multiple), ++ new_multiple); ++ ++ int dim = 0; ++ int new_dim = 0; ++ lower_subscript_for_trimmers (SUB (indexer), ctx, ++ sliced_multiple, new_multiple, ++ &dim, &new_dim, ++ a68_row_elements_pointer_type (TREE_TYPE (multiple))); ++ a68_add_stmt (new_multiple); ++ slice = a68_pop_range (); ++ ++ /* In case we are slicing a ref to a multiple, return the address of the ++ resulting multiple and not the multiple itself. But in this case we ++ need an address in the heap, because the trimmed multiple may be in ++ the heap and the result shall have the same scope. */ ++ if (slicing_name) ++ { ++ tree ptrtype = CTYPE (orig_sliced_multiple_mode); ++ tree slice_addr = fold_build1 (ADDR_EXPR, ptrtype, slice); ++ tree alloc = a68_lower_malloc (ptrtype, size_in_bytes (TREE_TYPE (slice))); ++ alloc = save_expr (alloc); ++ tree copy = a68_lower_memcpy (alloc, slice_addr, size_in_bytes (TREE_TYPE (slice))); ++ ++ slice = fold_build2 (COMPOUND_EXPR, ptrtype, copy, alloc); ++ } ++ } ++ else ++ gcc_unreachable (); ++ ++ return slice; ++} ++ ++/* Lower a selection. ++ ++ selection : selector, secondary. ++ selector : field identifier, of symbol. ++ ++ The selection lowers into a COMPONENT_REF of the field corresponding to the ++ field identifier. */ ++ ++tree ++a68_lower_selection (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *secondary = NEXT (SUB (p)); ++ NODE_T *field_identifier = SUB (SUB (p)); ++ ++ MOID_T *secondary_mode = MOID (secondary); ++ tree secondary_expr = a68_lower_tree (secondary, ctx); ++ ++ tree res = NULL_TREE; ++ ++ /* If the secondary is an address, we need to indirect. */ ++ if (IS_REF (secondary_mode)) ++ { ++ secondary_expr = a68_low_deref (secondary_expr, secondary); ++ secondary_mode = SUB (secondary_mode); ++ } ++ ++ if (IS_FLEX (secondary_mode) || IS_ROW (secondary_mode)) ++ { ++ /* This is the selection of a multiple of structs. ++ ++ The result is a multiple with same dimensions, dimension bounds and ++ strides than the indexed multiple. The elements pointer is made to ++ point to the selected field of the first struct. */ ++ ++ MOID_T *result_mode = MOID (p); ++ if (IS_REF (result_mode)) ++ result_mode = SUB (result_mode); ++ MOID_T *struct_mode = SUB (secondary_mode); ++ tree field_id = a68_get_mangled_identifier (SYMBOL (INFO (field_identifier))); ++ tree struct_type = CTYPE (struct_mode); ++ a68_push_range (result_mode); ++ tree selection = a68_lower_tmpvar ("selection%", CTYPE (result_mode), ++ a68_get_skip_tree (result_mode)); ++ tree multiple = a68_lower_tmpvar ("multiple%", TREE_TYPE (secondary_expr), ++ secondary_expr); ++ ++ /* First set the bounds of the selection, which are exactly the same ++ bounds than the selected multiple. */ ++ for (int dim = 0; dim < DIM (DEFLEX (secondary_mode)); ++dim) ++ { ++ tree size_dim = size_int (dim); ++ tree lower_bound = a68_multiple_lower_bound (multiple, size_dim); ++ tree upper_bound = a68_multiple_upper_bound (multiple, size_dim); ++ tree stride = a68_multiple_stride (multiple, size_dim); ++ a68_add_stmt (a68_multiple_set_lower_bound (selection, size_dim, ++ lower_bound)); ++ a68_add_stmt (a68_multiple_set_upper_bound (selection, size_dim, ++ upper_bound)); ++ a68_add_stmt (a68_multiple_set_stride (selection, size_dim, ++ stride)); ++ } ++ ++ /* Now set the elements pointer, which is the elements pointer of the ++ selected multiple offset the offset of the selected field in its ++ struct type. */ ++ tree elements = a68_multiple_elements (selection); ++ tree multiple_elements = a68_multiple_elements (multiple); ++ tree multiple_elements_size = a68_multiple_elements_size (multiple); ++ tree element_pointer_type = TREE_TYPE (elements); ++ tree field_offset = NULL_TREE; ++ for (tree f = TYPE_FIELDS (struct_type); f; f = DECL_CHAIN (f)) ++ { ++ if (field_id == DECL_NAME (f)) ++ { ++ field_offset = byte_position (f); ++ break; ++ } ++ } ++ gcc_assert (field_offset != NULL_TREE); ++ a68_add_stmt (a68_multiple_set_elements (selection, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ multiple_elements, ++ field_offset))); ++ ++ /* The size of the buffer pointed by the elements pointer has to be ++ adjusted accordingly. */ ++ a68_add_stmt (a68_multiple_set_elements_size (selection, ++ fold_build2 (MINUS_EXPR, sizetype, ++ multiple_elements_size, ++ field_offset))); ++ ++ a68_add_stmt (selection); ++ res = a68_pop_range (); ++ } ++ else ++ { ++ /* This is the selection of a struct field. */ ++ gcc_assert (A68_STRUCT_TYPE_P (TREE_TYPE (secondary_expr))); ++ ++ /* Search for the selected field in the struct type. */ ++ tree struct_type = TREE_TYPE (secondary_expr); ++ tree field_id = a68_get_mangled_identifier (SYMBOL (INFO (field_identifier))); ++ tree field = NULL_TREE; ++ for (tree f = TYPE_FIELDS (struct_type); f; f = DECL_CHAIN (f)) ++ { ++ if (field_id == DECL_NAME (f)) ++ { ++ field = f; ++ break; ++ } ++ } ++ gcc_assert (field != NULL_TREE); ++ ++ /* Emit the COMPONENT_REF. */ ++ res = fold_build3_loc (a68_get_node_location (p), ++ COMPONENT_REF, ++ TREE_TYPE (field), ++ secondary_expr, ++ field, ++ NULL_TREE); ++ } ++ ++ /* The selection of a name yields a name. */ ++ if (IS_REF (MOID (secondary))) ++ /* XXX This may require copying. */ ++ return fold_build1 (ADDR_EXPR, CTYPE (MOID (p)), res); ++ else ++ return res; ++} ++ ++/* Lower a secondary. ++ ++ secondary : primary; generator; selection. ++ ++ The secondary lowers into some GENERIC expression. */ ++ ++tree ++a68_lower_secondary (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} ++ ++/* Lower a formula. ++ ++ formula : secondary, operator, secondary; ++ secondary, operator, monadic formula; ++ secondary, operator, formula; ++ monadic formula; ++ monadic formula, operator, secondary; ++ monadic formula, operator, monadic formula; ++ monadic formula, operator, formula; ++ formula, operator, secondary; ++ formula, operator, monadic formula; ++ formula, operator, formula. ++ ++ The formula lowers into some GENERIC expression. */ ++ ++tree ++a68_lower_formula (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (IS (SUB (p), MONADIC_FORMULA) && NEXT (SUB (p)) == NO_NODE) ++ return a68_lower_tree (SUB (p), ctx); ++ else ++ { ++ /* If the operator is defined in the standard prelude, then use its lowering ++ code. */ ++ if (TAG_TABLE (TAX (NEXT (SUB (p)))) == A68_STANDENV) ++ { ++ LOWERER_T lowerer = LOWERER (TAX (NEXT (SUB (p)))); ++ return (*lowerer) (p, ctx); ++ } ++ else ++ { ++ tree arg1 = a68_lower_tree (SUB (p), ctx); ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ tree arg2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ if (POINTER_TYPE_P (TREE_TYPE (op))) ++ op = fold_build1 (INDIRECT_REF, ++ TREE_TYPE (TREE_TYPE (op)), ++ op); ++ return build_call_expr_loc (a68_get_node_location (p), op, 2, arg1, arg2); ++ } ++ } ++} ++ ++/* Lower a monadic formula. ++ ++ monadic formula : operator, secondary; ++ operator, monadic formula. ++ ++ The monadic formula lowers into some GENERIC expression. */ ++ ++tree ++a68_lower_monadic_formula (NODE_T *p, LOW_CTX_T ctx) ++{ ++ /* If the operator is defined in the standard prelude, then use its lowering ++ code. */ ++ if (TAG_TABLE (TAX (SUB (p))) == A68_STANDENV) ++ { ++ LOWERER_T lowerer = LOWERER (TAX (SUB (p))); ++ return (*lowerer) (p, ctx); ++ } ++ else ++ { ++ tree op = a68_lower_tree (SUB (p), ctx); ++ tree secondary = a68_lower_tree (NEXT (SUB (p)), ctx); ++ ++ if (POINTER_TYPE_P (TREE_TYPE (op))) ++ op = fold_build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (op)), op); ++ return build_call_expr_loc (a68_get_node_location (p), op, 1, secondary); ++ } ++} ++ ++/* Lower a tertiary. ++ ++ tertiary : nihil; monadic formula; formula; secondary. ++ ++ The tertiary lowers to some GENERIC expression. */ ++ ++tree ++a68_lower_tertiary (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} ++ ++/* Lower an assignation. ++ ++ assignation : tertiary, assign symbol, tertiary; ++ tertiary, assign symbol, identity relation; ++ tertiary, assign symbol, and function; ++ tertiary, assign symbol, or function; ++ tertiary, assign symbol, routine text; ++ tertiary, assign symbol, jump; ++ tertiary, assign symbol, skip; ++ tertiary, assign symbol, assignation; ++ tertiary, assign symbol, code clause. ++ ++ An assignation lowers into appending a MODIFY_EXPR to the statements list, ++ and the result of the expression is the left hand side. A compound ++ expression fits perfectly */ ++ ++tree ++a68_lower_assignation (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *lhs_node = SUB (p); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree lhs = a68_lower_tree (lhs_node, ctx); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ ++ return a68_low_assignation (p, ++ lhs, MOID (lhs_node), ++ rhs, MOID (rhs_node)); ++} ++ ++/* Lower a generator. ++ ++ generator : loc symbol, declarer; ++ heap symbol, declarer; ++ new symbol, declarer. ++ ++ LOC generators lower into calls to BUILT_IN_ALLOCA. ++ HEAP generators lower into calls to malloc. */ ++ ++tree ++a68_lower_generator (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *declarer = NEXT (SUB (p)); ++ return a68_low_generator (declarer, ++ MOID (declarer), ++ !IS (SUB (p), LOC_SYMBOL), ++ ctx); ++} ++ ++/* Lower a procedure call. ++ ++ */ ++ ++static void ++collect_call_arguments (NODE_T *p, vec *args, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ { ++ /* In Algol 68 parameters are passed via an identity declaration, so ++ this must implement same semantics. */ ++ tree arg = a68_lower_tree (p, ctx); ++ if (HAS_ROWS (MOID (p))) ++ arg = a68_low_dup (arg); ++ arg = a68_consolidate_ref (MOID (p), arg); ++ args->quick_push (arg); ++ } ++ else ++ collect_call_arguments (SUB (p), args, ctx); ++ } ++} ++ ++tree ++a68_lower_call (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *proc_mode = MOID (SUB (p)); ++ MOID_T *ret_mode = SUB (proc_mode); ++ unsigned int nargs = DIM (proc_mode); ++ ++ /* Collect arguments. */ ++ vec *args; ++ vec_alloc (args, nargs); ++ collect_call_arguments (NEXT (SUB (p)), args, ctx); ++ ++ /* Lower the primary to call. */ ++ tree primary = a68_lower_tree (SUB (p), ctx); ++ ++ /* We need a pointer to a function type. */ ++ if (!POINTER_TYPE_P (TREE_TYPE (primary))) ++ primary = fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (primary)), ++ primary); ++ ++ /* Build a function call. */ ++ tree call = build_call_vec (CTYPE (ret_mode), primary, args); ++ SET_EXPR_LOCATION (call, a68_get_node_location (p)); ++ return call; ++} ++ ++/* Lower a routine text. ++ ++ routine text : parameter pack, (declarer ; void symbol), colon symbol, assignation; ++ parameter pack, (declarer ; void symbol), colon symbol, identity relation; ++ parameter pack, (declarer ; void symbol), colon symbol, and function; ++ parameter pack, (declarer ; void symbol), colon symbol, or runction; ++ parameter pack, (declarer ; void symbol), colon symbol, jump; ++ parameter pack, (declarer ; void symbol), colon symbol, skip; ++ parameter pack, (declarer ; void symbol), colon symbol, tertiary; ++ parameter pack, (declarer ; void symbol), colon symbol, routine text; ++ parameter pack, (declarer ; void symboL), colon symbol, code clause; ++ (declarer ; void symbol), colon symbol, assignation; ++ (declarer ; void symbol), colon symbol, identity relation; ++ (declarer ; void symbol), colon symbol, and function; ++ (declarer ; void symbol), colon symbol, or runction; ++ (declarer ; void symbol), colon symbol, jump; ++ (declarer ; void symbol), colon symbol, skip; ++ (declarer ; void symbol), colon symbol, tertiary; ++ (declarer ; void symbol), colon symbol, routine text; ++ (declarer ; void symbol), colon symbol, code clause. ++ ++ Routine texts are used to create routines. They can stand as the actual ++ parameter of an identity declaration, as the actual parameter of a call, or ++ as the right-hand side of an assignation. ++ ++ This lowering function is called in two different contexts: ++ ++ 1) As part of a routine-identity-declaration, in which case the routine ++ resulting from this routine-text is beign ascribed to an identifier given ++ in ctx.proc_decl_identifier. In that case, we lower to a FUNC_DECL ++ initialized with the body of the routine-text. ++ ++ 2) As a free standing routine-text. In that case ctx.proc_decl_identifier is ++ NO_NODE. We lower to the address of a FUNC_DECL that features some unique ++ name. This pointer will then likely be assigned or ascribed to some ++ variable or identifier in non-contracted identity declaration, but we ++ cannot assume that so we have to opt for the indirection. */ ++ ++tree ++a68_lower_routine_text (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *s = SUB (p); ++ ++ tree func_decl = NULL_TREE; ++ NODE_T *defining_identifier = ctx.proc_decl_identifier; ++ bool defining_operator = ctx.proc_decl_operator; ++ if (defining_identifier != NO_NODE) ++ { ++ /* The routine-text is part of a routine-identity-declaration. */ ++ func_decl = TAX_TREE_DECL (TAX (defining_identifier)); ++ if (func_decl == NULL_TREE) ++ { ++ func_decl ++ = a68_make_proc_identity_declaration_decl (defining_identifier, ++ ctx.module_definition_name, ++ defining_operator /* indicant */); ++ TAX_TREE_DECL (TAX (defining_identifier)) = func_decl; ++ } ++ ++ /* If the routine-identity-declaration is in a public range then add the ++ declaration to the publicized declarations list. Otherwise chain the ++ declaration in the proper block and bind it. */ ++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) ++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, func_decl); ++ else ++ a68_add_decl (func_decl); ++ } ++ else ++ { ++ /* The routine-text is free standing. */ ++ func_decl = a68_make_anonymous_routine_decl (MOID (p)); ++ a68_add_decl (func_decl); ++ } ++ ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (func_decl), ++ func_decl)); ++ announce_function (func_decl); ++ ++ /* PARAMETER_PACK. */ ++ NODE_T *parameter_pack_node = NO_NODE; ++ tree parameter_pack = NULL_TREE; /* This is computed below. */ ++ if (IS (s, PARAMETER_PACK)) ++ { ++ parameter_pack_node = s; ++ FORWARD (s); ++ } ++ ++ /* DECLARER or VOID_SYMBOL */ ++ if (IS (s, DECLARER) || IS (s, VOID_SYMBOL)) ++ /* This is not used, as this formal declarer is also available in the ++ procedure mode. So just skip it. */ ++ FORWARD (s); ++ ++ /* Skip the COLON_SYMBOL. */ ++ gcc_assert (IS (s, COLON_SYMBOL)); ++ FORWARD (s); ++ ++ /* Lower the function body. ++ ++ This should be done in a new range in which the formal parameters of the ++ routine-text have been declared. */ ++ a68_push_function_range (func_decl, CTYPE (SUB (MOID (p))) /* result_type */); ++ if (parameter_pack_node != NO_NODE) ++ parameter_pack = a68_lower_tree (parameter_pack_node, ctx); ++ DECL_ARGUMENTS (func_decl) = parameter_pack; ++ ctx.proc_decl_identifier = NO_NODE; ++ tree func_body = a68_lower_tree (s, ctx); ++ a68_pop_function_range (func_body); ++ ++ if (defining_identifier != NO_NODE) ++ /* Routine-text immediately ascribed to some identifier in a ++ proc-identity-declaration. Return the FUNC_DECL. */ ++ return func_decl; ++ else ++ /* Free standing routine-text. Return its address. */ ++ return fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (func_decl)), ++ func_decl); ++} ++ ++/* Lower an unit. ++ ++ unit : assignation; identity relation; ++ and function; or function; routine text; ++ jump; skip; tertiary; assertion; code clause. ++ ++ The unit lowers to an expression. */ ++ ++tree ++a68_lower_unit (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low.cc +@@ -0,0 +1,1705 @@ ++/* Lower the Algol 68 parse tree to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with an identifier for the mangled version of a given ++ name. ++ ++ Publicized symbols feature the module name publishing them. ++ Internal symbols don't. ++ ++ Bold words, i.e. mode indicants, module indicants and operator indicants, ++ are mangled to upper-case. ++ ++ Tags, i.e. identifiers are mangled to lower-case. ++ ++ Monads and nomads are mangled to letter codes symbolizing the symbols: ++ ++ % (p)ercentage ++ ^ (c)aret ++ & (a)mpersand ++ + pl(u)s ++ - (m)inus ++ ~ (t)ilde ++ ! (b)ang ++ ? (q)uestion mark ++ > bi(g)ger than ++ < (l)ess than ++ / (s)lash ++ = (e)qual ++ : c(o)lon ++ * sta(r) ++ ++ Each letter code is followed by a single underscore character. */ ++ ++static tree ++get_mangled_identifier_or_indicant (const char *name, bool indicant, ++ const char *mname, bool internal, ++ bool numbered) ++{ ++ /* First determine the size of the mangled symbol. */ ++ size_t mangled_size = strlen (name) + 1; ++ if (mname) ++ { ++ /* Add size for MNAME_ */ ++ mangled_size += strlen (mname) + 1; ++ if (internal) ++ /* Another _ */ ++ mangled_size += 1; ++ } ++ for (const char *p = name; *p; ++p) ++ { ++ mangled_size += 1; ++ if (strchr (MONADS, *p) != NULL ++ || strchr (NOMADS, *p) != NULL ++ || *p == ':') ++ /* Each monad or nomad requires two chars to encode. */ ++ mangled_size += 1; ++ } ++ ++ char *number_buf = NULL; ++ if (numbered) ++ { ++ static unsigned int cnt; ++ number_buf = xasprintf ("%d", cnt++); ++ mangled_size += strlen (number_buf); ++ } ++ ++ /* Now fill-in the mangled symbol. */ ++ char *mangled_name = (char *) alloca (mangled_size); ++ size_t pos = 0; ++ if (mname) ++ { ++ for (const char *p = mname; *p; ++p) ++ /* Module names are bold words. Make sure to emit them in upper-case. */ ++ mangled_name[pos++] = TOUPPER (*p); ++ mangled_name[pos++] = '_'; ++ if (internal) ++ mangled_name[pos++] = '_'; ++ } ++ ++ for (const char *p = name; *p; ++p) ++ { ++ if (strchr (MONADS, *p) != NULL ++ || strchr (NOMADS, *p) != NULL ++ || *p == ':') ++ { ++ char c; ++ switch (*p) ++ { ++ case '%': c = 'p'; break; ++ case '^': c = 'c'; break; ++ case '&': c = 'a'; break; ++ case '+': c = 'u'; break; ++ case '-': c = 'm'; break; ++ case '~': c = 't'; break; ++ case '!': c = 'b'; break; ++ case '?': c = 'q'; break; ++ case '>': c = 'g'; break; ++ case '<': c = 'l'; break; ++ case '/': c = 's'; break; ++ case '=': c = 'e'; break; ++ case ':': c = 'o'; break; ++ case '*': c = 'r'; break; ++ default: ++ /* Should not happen. */ ++ gcc_unreachable (); ++ } ++ mangled_name[pos++] = c; ++ mangled_name[pos++] = '_'; ++ } ++ else ++ { ++ if (indicant) ++ mangled_name[pos++] = TOUPPER (*p); ++ else ++ mangled_name[pos++] = TOLOWER (*p); ++ } ++ } ++ ++ if (numbered) ++ { ++ for (char *p = number_buf; *p; ++p) ++ mangled_name[pos++] = *p; ++ free (number_buf); ++ } ++ mangled_name[pos++] = '\0'; ++ ++ return get_identifier (mangled_name); ++} ++ ++tree ++a68_get_mangled_identifier (const char *name, const char *mname, ++ bool internal, bool numbered) ++{ ++ return get_mangled_identifier_or_indicant (name, false /* indicant */, mname, ++ internal, numbered); ++} ++ ++tree ++a68_get_mangled_indicant (const char *name, const char *mname, ++ bool internal, bool numbered) ++{ ++ return get_mangled_identifier_or_indicant (name, true /* indicant */, mname, ++ internal, numbered); ++} ++ ++/* Demangle a given SYMBOL. ++ ++ This function does the reverse operation than ++ get_mangled_identifier_or_indicant. */ ++ ++char * ++a68_demangle_symbol (const char *mname, const char *symbol, ++ bool is_operator) ++{ ++ gcc_assert (strlen (symbol) >= strlen (mname) + 1); ++ /* First get rid of the module name and underscore. */ ++ symbol += strlen (mname) + 1; ++ /* Now demangle the rest. */ ++ size_t size = strlen (symbol) + 1; ++ char *demangled = (char *) xmalloc (size + 1); ++ size_t o = 0; ++ for (size_t i = 0; i < size; ++i) ++ { ++ if (symbol[i+1] == '_') ++ { ++ switch (symbol[i]) ++ { ++ case 'p': demangled[o++] = '+'; break; ++ case 'c': demangled[o++] = '^'; break; ++ case 'a': demangled[o++] = '&'; break; ++ case 'u': demangled[o++] = '+'; break; ++ case 'm': demangled[o++] = '-'; break; ++ case 't': demangled[o++] = '~'; break; ++ case 'b': demangled[o++] = '!'; break; ++ case 'q': demangled[o++] = '?'; break; ++ case 'g': demangled[o++] = '>'; break; ++ case 'l': demangled[o++] = '<'; break; ++ case 's': demangled[o++] = '/'; break; ++ case 'e': demangled[o++] = '='; break; ++ case 'o': demangled[o++] = ':'; break; ++ case 'r': demangled[o++] = '*'; break; ++ default: ++ /* Invalid mangling. */ ++ // XXX this should be checked at import time in extract. ++ gcc_unreachable (); ++ } ++ i += 1; ++ } ++ else ++ demangled[o++] = symbol[i]; ++ } ++ demangled[o] = '\0'; ++ ++ if (is_operator) ++ { ++ /* Remove trailing digits. */ ++ for (size_t i = strlen (demangled) - 1; i > 0; --i) ++ { ++ if (ISDIGIT (demangled[i])) ++ demangled[i] = '\0'; ++ else ++ break; ++ } ++ } ++ ++ return demangled; ++} ++ ++/* Return a tree with the EMPTY value. ++ ++ EMPTY is the only denotation of the VOID mode. It is used in unions to ++ denote "no value". It must have size zero, so it lowers into an empty ++ constructor with zero elements of type void. This is what GNU C uses to ++ implement the empty struct extension. */ ++ ++tree ++a68_get_empty (void) ++{ ++ return build_constructor (a68_void_type, NULL); ++} ++ ++/* Return a tree with the yielding of SKIP of a given mode. ++ ++ SKIP stands for some value of some given mode. It shall be used only in a ++ context where the compiler can determine the mode. ++ ++ The particular value to which it elaborates is non-important, but this ++ compiler always uses the same values. See the a68_get_ref_*_tree functions ++ for details on what values are these. */ ++ ++tree ++a68_get_skip_tree (MOID_T *m) ++{ ++ tree expr = NULL_TREE; ++ ++ while (EQUIVALENT (m) != NO_MOID) ++ m = EQUIVALENT (m); ++ ++ if (IS_INTEGRAL (m)) ++ expr = a68_get_int_skip_tree (m); ++ else if (m == M_CHAR) ++ expr = a68_get_char_skip_tree (); ++ else if (m == M_BOOL) ++ expr = a68_get_bool_skip_tree (); ++ else if (IS_REAL (m)) ++ expr = a68_get_real_skip_tree (m); ++ else if (IS_BITS (m)) ++ expr = a68_get_bits_skip_tree (m); ++ else if (IS_REF (m)) ++ expr = a68_get_ref_skip_tree (m); ++ else if (IS (m, PROC_SYMBOL)) ++ expr = a68_get_proc_skip_tree (m); ++ else if (IS_STRUCT (m)) ++ expr = a68_get_struct_skip_tree (m); ++ else if (IS_UNION (m)) ++ expr = a68_get_union_skip_tree (m); ++ else if (IS_FLEXETY_ROW (m)) ++ expr = a68_get_multiple_skip_tree (m); ++ else if (m == M_STRING) ++ expr = a68_get_string_skip_tree (); ++ else if (m == M_ROWS || IS (m, SERIES_MODE)) ++ { ++ /* XXX assert that all modes in the series are rows? */ ++ tree rows_type = CTYPE (M_ROWS); ++ tree dim_field = TYPE_FIELDS (rows_type); ++ tree triplets_field = TREE_CHAIN (dim_field); ++ tree null_pointer = build_int_cst (TREE_TYPE (triplets_field), 0); ++ expr = build_constructor_va (rows_type, 2, ++ dim_field, size_zero_node, ++ triplets_field, null_pointer); ++ } ++ else if (m == M_VOID || m == M_HIP) ++ expr = a68_get_empty (); ++ else ++ { ++ fatal_error (UNKNOWN_LOCATION, ++ "get skip tree: cannot compute SKIP for mode %s", ++ a68_moid_to_string (m, MOID_ERROR_WIDTH, NODE (m), true)); ++ gcc_unreachable (); ++ } ++ ++ return expr; ++} ++ ++/* Given a tree node EXP holding a value of mode M: ++ ++ *NUM_REFS is set to the number of REFs in M. ++ ++ *NUM_POINTERS is set to the number of pointers in the type of EXP that ++ correspond to the REFs in M. */ ++ ++void ++a68_ref_counts (tree exp, MOID_T *m, int *num_refs, int *num_pointers) ++{ ++ /* Count REFs in M and pointers in the type of EXP. Note that VAR_DECLs ++ corresponding to REF PROC are of type pointer, so these should not count ++ for the count! */ ++ ++ /* Make sure we are accessing the real mode definition. */ ++ while (EQUIVALENT (m) != NO_MOID) ++ m = EQUIVALENT (m); ++ ++ *num_refs = 0; ++ *num_pointers = 0; ++ for (MOID_T *s = m; s != NO_MOID && IS_REF (s); s = SUB (s)) ++ *num_refs += 1; ++ for (tree p = TREE_TYPE (exp); ++ p != NULL_TREE && POINTER_TYPE_P (p) && TREE_CODE (TREE_TYPE (p)) != FUNCTION_TYPE; ++ p = TREE_TYPE (p)) ++ *num_pointers += 1; ++ ++ gcc_assert (*num_refs >= *num_pointers); ++} ++ ++/* The Algol 68 variable declaration ++ ++ [LOC|HEAP] AMODE foo; ++ ++ Is in principle equivalent to the identity declaration ++ ++ REF AMODE foo = [LOC|HEAP] AMODE; ++ ++ In both cases the object ascribed to the defining identifier `foo' is of ++ mode REF AMODE. The ascribed object is a name which is created by a ++ generator implied in the actual declarer in the first case, and an explicit ++ generator in the initialization expression in the second case. ++ ++ However, this front-end implements these two cases differently in order to ++ reduce the amount of both indirect addressing and of storage: ++ ++ - The variable declaration `[LOC|HEAP] AMODE foo;' lowers into a VAR_DECL ++ with type ATYPE provided that the generator is LOC and that it contains no ++ rows. Accessing it requires direct addressing. When its address is ++ required, an ADDR_EXPR shall be used. ++ ++ - The identity declaration `REF AMODE foo = LOC AMODE;' lowers into a ++ VAR_DECL with type *ATYPE. Accessing it requires indirect addressing. It ++ is effectively a pointer. ++ ++ This introduces the complication that an expression (the VAR_DECL) whose ++ type is TYPE can appear in a place where *TYPE is expected. This function, ++ given the required mode and an expression, adds as many ADDR_EXPR to EXPR as ++ necessary so the resulting value is of the required type. Other than this ++ nuisance, the parser guarantees that the entities have the right type at the ++ location they appear, so a call to a68_consolidate_ref is all must be needed ++ at any point in the lowering process to guarantee a valid value for the ++ context. ++ ++ This function expects: ++ - That the type of EXPR is zero or more pointers to a base type BTYPE. ++ - That the mode M is zero or more REFs to a base non-ref mode AMODE. ++ - That the number of pointers in the type of EXPR is less or equal than the ++ number of REFs in the mode M. ++ - That BTYPE and AMODE are equivalent. */ ++ ++tree ++a68_consolidate_ref (MOID_T *m, tree expr) ++{ ++ int num_refs, num_pointers; ++ a68_ref_counts (expr, m, &num_refs, &num_pointers); ++ ++ /* Address EXPR as many times as necessary to match the number of REFs in the ++ desired mode. */ ++ while (num_pointers < num_refs) ++ { ++ if (TREE_CODE (expr) == COMPOUND_EXPR) ++ { ++ /* (..., x) -> (..., &x) */ ++ // gcc_assert (TREE_CODE (TREE_OPERAND (expr, 0)) == MODIFY_EXPR); ++ // gcc_assert (VAR_P (TREE_OPERAND (expr, 1))); ++ TREE_OPERAND (expr, 1) = a68_consolidate_ref (m, TREE_OPERAND (expr, 1)); ++ TREE_TYPE (expr) = TREE_TYPE (TREE_OPERAND (expr, 1)); ++ } ++ else ++ { ++ /* x -> &x */ ++ if (TREE_CODE (expr) == INDIRECT_REF) ++ /* expr is an indirection. Remove the pointer rather than adding ++ an addr. This avoids &* situations and marking stuff as ++ addressable unnecessarily. */ ++ expr = TREE_OPERAND (expr,0); ++ else ++ { ++ TREE_ADDRESSABLE (expr) = true; ++ expr = fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (expr)), expr); ++ } ++ } ++ num_pointers += 1; ++ } ++ ++ return expr; ++} ++ ++/* Make a declaration for an anonymous routine of mode MODE. */ ++ ++tree ++a68_make_anonymous_routine_decl (MOID_T *mode) ++{ ++ /* The CTYPE of MODE is a pointer to a function. We need the pointed ++ function type for the FUNCTION_DECL. */ ++ tree func_type = TREE_TYPE (CTYPE (mode)); ++ tree func_decl = build_decl (UNKNOWN_LOCATION, ++ FUNCTION_DECL, ++ NULL_TREE /* name, set below. */, ++ func_type); ++ char *name = xasprintf ("routine%d", DECL_UID (func_decl)); ++ DECL_NAME (func_decl) = a68_get_mangled_identifier (name); ++ free (name); ++ DECL_EXTERNAL (func_decl) = 0; ++ DECL_STATIC_CHAIN (func_decl) = !a68_in_global_range (); ++ /* Nested functions should be addressable. ++ XXX this should be propagated to their containing functions, so for now ++ we mark them all as addressable. */ ++ TREE_ADDRESSABLE (func_decl) = 1; ++ /* A nested function is not global. */ ++ TREE_PUBLIC (func_decl) = a68_in_global_range (); ++ TREE_STATIC (func_decl) = 1; ++ ++ return func_decl; ++} ++ ++/* Make a declaration for a constant procedure or operator. */ ++ ++tree ++a68_make_proc_identity_declaration_decl (NODE_T *identifier, ++ const char *module_name, ++ bool indicant, bool external, ++ const char *extern_symbol) ++{ ++ /* The CTYPE of MODE is a pointer to a function. We need the pointed ++ function type for the FUNCTION_DECL. */ ++ tree func_type = TREE_TYPE (CTYPE (MOID (identifier))); ++ bool public_range = PUBLIC_RANGE (TABLE (TAX (identifier))); ++ tree func_decl = build_decl (UNKNOWN_LOCATION, ++ FUNCTION_DECL, ++ NULL_TREE, /* name, set below. */ ++ func_type); ++ ++ if (public_range) ++ { ++ bool publicized = PUBLICIZED (TAX (identifier)); ++ ++ DECL_EXTERNAL (func_decl) = 0; ++ if (publicized) ++ TREE_PUBLIC (func_decl) = 1; ++ else ++ TREE_PUBLIC (func_decl) = 0; ++ if (indicant) ++ DECL_NAME (func_decl) ++ = a68_get_mangled_indicant (NSYMBOL (identifier), module_name, ++ false /* internal */, ++ (IS (identifier, DEFINING_OPERATOR) ++ || IS (identifier, OPERATOR))); ++ else ++ DECL_NAME (func_decl) ++ = a68_get_mangled_identifier (NSYMBOL (identifier), module_name, ++ false /* internal */, ++ (IS (identifier, DEFINING_OPERATOR) ++ || IS (identifier, OPERATOR))); ++ } ++ else if (external) ++ { ++ DECL_EXTERNAL (func_decl) = 1; ++ TREE_PUBLIC (func_decl) = 1; ++ DECL_NAME (func_decl) = get_identifier (extern_symbol); ++ } ++ else ++ { ++ DECL_EXTERNAL (func_decl) = 0; ++ DECL_STATIC_CHAIN (func_decl) = !a68_in_global_range (); ++ /* Nested functions should be addressable. ++ XXX this should be propagated to their containing functions, so for now ++ we mark them all as addressable. */ ++ TREE_ADDRESSABLE (func_decl) = 1; ++ /* A nested function is not global. */ ++ TREE_PUBLIC (func_decl) = a68_in_global_range (); ++ if (indicant) ++ DECL_NAME (func_decl) = a68_get_mangled_indicant (NSYMBOL (identifier)); ++ else ++ DECL_NAME (func_decl) = a68_get_mangled_identifier (NSYMBOL (identifier)); ++ } ++ TREE_STATIC (func_decl) = 1; ++ ++ return func_decl; ++} ++ ++/* Make a declaration for an identity declaration. */ ++ ++tree ++a68_make_identity_declaration_decl (NODE_T *identifier, ++ const char *module_name, ++ bool indicant, bool external, ++ const char *extern_symbol) ++{ ++ tree type = CTYPE (MOID (identifier)); ++ bool public_range = PUBLIC_RANGE (TABLE (TAX (identifier))); ++ tree decl = build_decl (a68_get_node_location (identifier), ++ VAR_DECL, ++ NULL_TREE, /* name, set below. */ ++ type); ++ ++ if (public_range) ++ { ++ bool publicized = PUBLICIZED (TAX (identifier)); ++ ++ DECL_EXTERNAL (decl) = 0; ++ TREE_STATIC (decl) = 1; ++ if (publicized) ++ TREE_PUBLIC (decl) = 1; ++ else ++ TREE_PUBLIC (decl) = 0; ++ if (indicant) ++ DECL_NAME (decl) = a68_get_mangled_indicant (NSYMBOL (identifier), module_name, ++ false /* internal */, ++ (IS (identifier, DEFINING_OPERATOR) ++ || IS (identifier, OPERATOR))); ++ else ++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier), module_name, ++ false /* internal */, ++ (IS (identifier, DEFINING_OPERATOR) ++ || IS (identifier, OPERATOR))); ++ } ++ else if (external) ++ { ++ DECL_EXTERNAL (decl) = 1; ++ TREE_PUBLIC (decl) = 1; ++ DECL_NAME (decl) = get_identifier (extern_symbol); ++ } ++ else ++ { ++ DECL_EXTERNAL (decl) = 0; ++ TREE_PUBLIC (decl) = 0; ++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier)); ++ } ++ ++ DECL_INITIAL (decl) = a68_get_skip_tree (MOID (identifier)); ++ return decl; ++} ++ ++/* Make a declaration for a variable declaration. ++ The mode of the given identifier is expected to be a REF AMODE. */ ++ ++tree ++a68_make_variable_declaration_decl (NODE_T *identifier, ++ const char *module_name, ++ bool external, ++ const char *extern_symbol) ++{ ++ gcc_assert (IS_REF (MOID (identifier))); ++ ++ MOID_T *mode = MOID (identifier); ++ bool use_pointer = (HEAP (TAX (identifier)) != STATIC_SYMBOL ++ && ((HEAP (TAX (identifier)) == HEAP_SYMBOL) ++ || HAS_ROWS (SUB (MOID (identifier))))); ++ bool public_range = PUBLIC_RANGE (TABLE (TAX (identifier))); ++ tree type = use_pointer ? CTYPE (mode) : CTYPE (SUB (mode)); ++ tree decl = build_decl (a68_get_node_location (identifier), ++ VAR_DECL, ++ NULL_TREE, /* name, set below. */ ++ type); ++ ++ if (public_range) ++ { ++ bool publicized = PUBLICIZED (TAX (identifier)); ++ ++ DECL_EXTERNAL (decl) = 0; ++ TREE_STATIC (decl) = 1; ++ if (publicized) ++ TREE_PUBLIC (decl) = 1; ++ else ++ TREE_PUBLIC (decl) = 0; ++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier), module_name, ++ false /* internal */, ++ (IS (identifier, DEFINING_OPERATOR) ++ || IS (identifier, OPERATOR))); ++ } ++ else if (external) ++ { ++ DECL_EXTERNAL (decl) = 1; ++ TREE_PUBLIC (decl) = 1; ++ DECL_NAME (decl) = get_identifier (extern_symbol); ++ } ++ else ++ { ++ TREE_PUBLIC (decl) = 0; ++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier)); ++ } ++ ++ DECL_INITIAL (decl) = a68_get_skip_tree (use_pointer ? mode : SUB (mode)); ++ return decl; ++} ++ ++/* Do a checked indirection. ++ ++ P is a tree node used for its location information. ++ EXP is an expression that gets indirected. ++ EXP_MODE is the mode of exp. */ ++ ++tree ++a68_checked_indirect_ref (NODE_T *p, tree exp, MOID_T *exp_mode) ++{ ++ tree exp_type = TREE_TYPE (exp); ++ tree nil_check = NULL_TREE; ++ ++ if (OPTION_NIL_CHECKING (&A68_JOB)) ++ { ++ exp = save_expr (exp); ++ tree consolidated_exp = a68_consolidate_ref (exp_mode, exp); ++ ++ /* Check whether we are dereferencing NIL. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_DEREFNIL, ++ void_type_node, 2, ++ filename, ++ build_int_cst (unsigned_type_node, lineno)); ++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); ++ nil_check = fold_build2 (NE_EXPR, exp_type, ++ consolidated_exp, ++ build_int_cst (exp_type, 0)); ++ nil_check = fold_build2 (TRUTH_ORIF_EXPR, exp_type, ++ nil_check, call); ++ } ++ ++ tree deref = fold_build1 (INDIRECT_REF, TREE_TYPE (exp_type), exp); ++ if (nil_check == NULL_TREE) ++ return deref; ++ else ++ return fold_build2 (COMPOUND_EXPR, TREE_TYPE (deref), ++ nil_check, deref); ++} ++ ++/* Deref a given expression EXP whose mode is MOID (P). ++ ++ The value to dereference always corresponds to a name, but it may consist ++ of: ++ ++ - Not a pointer, in which case corresponds to a name lowered to a VAR_DECL. ++ ++ - A pointer to a function, in which case corresponds to a name of mode REF ++ PROC, lowered to a VAR_DECL. ++ ++ - Any other pointer corresponds to a name lowered to a VAR_DECL that is a ++ pointer. ++ ++ In the first two cases, in both r-value and l-value situations the expected ++ result is achieved by just returning the value: in r-value the decl denotes ++ the value, in l-value the decl denotes the (direct) address of the ++ value. */ ++ ++tree ++a68_low_deref (tree exp, NODE_T *p) ++{ ++ int num_refs, num_pointers; ++ a68_ref_counts (exp, MOID (p), &num_refs, &num_pointers); ++ ++ if (num_refs > num_pointers) ++ return exp; ++ else ++ { ++ gcc_assert (num_refs == num_pointers); ++ return a68_checked_indirect_ref (p, exp, MOID (p)); ++ } ++} ++ ++/* Get a deep-copy of a given Algol 68 value EXP. */ ++ ++tree ++a68_low_dup (tree expr, bool use_heap) ++{ ++ tree dup = NULL_TREE; ++ tree type = TREE_TYPE (expr); ++ ++ /* XXX */ ++ use_heap = true; ++ ++ /* Determine the mode corresponding to the type of EXPR. */ ++ MOID_T *m = a68_type_moid (type); ++ gcc_assert (m != NO_MOID); ++ while (EQUIVALENT (m) != NO_MOID) ++ m = EQUIVALENT (m); ++ ++ if (A68_ROW_TYPE_P (type)) ++ { ++ /* We need to copy the elements as well as the descriptor. There is no ++ need to check bounds. */ ++ ++ /* Deflexe the mode as appropriate. */ ++ while (IS_FLEX (m)) ++ m = SUB (m); ++ gcc_assert (IS_ROW (m) || m == M_STRING); ++ ++ a68_push_range (NULL); ++ ++ /* First allocate space for the dupped elements. */ ++ expr = save_expr (expr); ++ tree elements = a68_multiple_elements (expr); ++ tree element_pointer_type = TREE_TYPE (elements); ++ tree element_type = TREE_TYPE (element_pointer_type); ++ tree new_elements_size = save_expr (a68_multiple_elements_size (expr)); ++ tree new_elements = a68_lower_tmpvar ("new_elements%", ++ TREE_TYPE (elements), ++ (use_heap ++ ? a68_lower_malloc (TREE_TYPE (TREE_TYPE (elements)), ++ new_elements_size) ++ : a68_lower_alloca (TREE_TYPE (TREE_TYPE (elements)), ++ new_elements_size))); ++ ++ /* Then copy the elements. ++ ++ If the mode of the elements stored in the multiple dont have rows, ++ then we can just use memcpy. Otherwise, we have to loop and recurse ++ to dup all the elements in the multiple one by one. ++ ++ The above applies to multiples of any number of dimensions. */ ++ if (m == M_STRING || !HAS_ROWS (SUB (m))) ++ { ++ a68_add_stmt (a68_lower_memcpy (new_elements, ++ elements, ++ new_elements_size)); ++ a68_add_stmt (new_elements); ++ } ++ else ++ { ++ /* Note that num_elems includes elements that are not accessible due ++ to trimming. */ ++ tree num_elems = a68_lower_tmpvar ("numelems%", size_type_node, ++ fold_build2 (TRUNC_DIV_EXPR, sizetype, ++ new_elements_size, ++ size_in_bytes (element_type))); ++ tree orig_elements = a68_lower_tmpvar ("orig_elements%", ++ element_pointer_type, elements); ++ tree index = a68_lower_tmpvar ("index%", size_type_node, size_zero_node); ++ ++ /* Begin of loop body. */ ++ a68_push_range (NULL); ++ ++ /* if (index == num_elems) break; */ ++ a68_add_stmt (fold_build1 (EXIT_EXPR, ++ void_type_node, ++ fold_build2 (EQ_EXPR, ++ size_type_node, ++ index, num_elems))); ++ /* new_elements[index] = elements[index] */ ++ tree offset = fold_build2 (MULT_EXPR, sizetype, ++ index, size_in_bytes (element_type)); ++ tree new_elem_lvalue = fold_build2 (MEM_REF, element_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ new_elements, ++ offset), ++ fold_convert (element_pointer_type, ++ integer_zero_node)); ++ tree elem = fold_build2 (MEM_REF, element_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ orig_elements, ++ offset), ++ fold_convert (element_pointer_type, ++ integer_zero_node)); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, element_type, ++ new_elem_lvalue, ++ a68_low_dup (elem, use_heap))); ++ /* index++ */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ++ size_type_node, ++ index, size_one_node)); ++ tree loop_body = a68_pop_range (); ++ /* End of loop body. */ ++ ++ a68_add_stmt (fold_build1 (LOOP_EXPR, ++ void_type_node, ++ loop_body)); ++ a68_add_stmt (new_elements); ++ } ++ ++ new_elements = a68_pop_range (); ++ TREE_TYPE (new_elements) = element_pointer_type; ++ ++ /* Now build a descriptor pointing to the dupped elements and return it. ++ Note that the descriptor is always allocated on the stack. */ ++ dup = a68_row_value_raw (type, ++ a68_multiple_triplets (expr), ++ new_elements, ++ new_elements_size); ++ } ++ else if (!HAS_ROWS (m)) ++ { ++ /* Non-multiple values that do not contain rows do not need to be dupped, ++ since they can be just moved around using the semantics of ++ MODIFY_EXPR. */ ++ dup = expr; ++ } ++ else if (A68_STRUCT_TYPE_P (type)) ++ { ++ /* Since struct value can contain multiples and unions and other values ++ that require deep copy, we cannot simply rely on the C semantics of a ++ MODIFY_EXPR. */ ++ tree struct_type = type; ++ vec *ce = NULL; ++ ++ expr = save_expr (expr); ++ for (tree field = TYPE_FIELDS (struct_type); ++ field; ++ field = TREE_CHAIN (field)) ++ { ++ CONSTRUCTOR_APPEND_ELT (ce, field, ++ a68_low_dup (fold_build3 (COMPONENT_REF, ++ TREE_TYPE (field), ++ expr, ++ field, ++ NULL_TREE), ++ use_heap)); ++ } ++ dup = build_constructor (struct_type, ce); ++ } ++ else if (A68_UNION_TYPE_P (type)) ++ { ++ /* We need to recurse in whatever type corresponding to the active mode ++ in the united value. This shall be done at run-time by using a series ++ of ++ ++ IF overhead IS index of mode blah in union ++ THEN dup = dup_type (CTYPE (mode blah in union)) ++ FI ++ */ ++ ++ MOID_T *union_mode = a68_type_moid (type); ++ ++ a68_push_range (union_mode); ++ dup = a68_lower_tmpvar ("dup%", type, expr); ++ ++ tree cunion_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (type))); ++ tree field_decl = TYPE_FIELDS (cunion_type); ++ while (EQUIVALENT (union_mode) != NO_MOID) ++ union_mode = EQUIVALENT (union_mode); ++ for (PACK_T *pack = PACK (union_mode); pack != NO_PACK; FORWARD (pack)) ++ { ++ tree continue_label_decl = build_decl (UNKNOWN_LOCATION, ++ LABEL_DECL, ++ NULL, /* Set below. */ ++ void_type_node); ++ char *label_name = xasprintf ("continue%d%%", DECL_UID (continue_label_decl)); ++ DECL_NAME (continue_label_decl) = get_identifier (label_name); ++ free (label_name); ++ ++ a68_add_decl (continue_label_decl); ++ ++ a68_add_stmt (fold_build2 (TRUTH_ORIF_EXPR, ++ integer_type_node, ++ fold_build2 (EQ_EXPR, ++ integer_type_node, ++ a68_union_overhead (dup), ++ size_int (a68_united_mode_index (union_mode, MOID (pack)))), ++ fold_build2 (COMPOUND_EXPR, ++ integer_type_node, ++ build1 (GOTO_EXPR, void_type_node, continue_label_decl), ++ integer_zero_node))); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, type, ++ fold_build3 (COMPONENT_REF, ++ TREE_TYPE (field_decl), ++ a68_union_cunion (dup), ++ field_decl, ++ NULL_TREE), ++ a68_low_dup (fold_build3 (COMPONENT_REF, ++ TREE_TYPE (field_decl), ++ a68_union_cunion (dup), ++ field_decl, ++ NULL_TREE), ++ use_heap))); ++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, continue_label_decl)); ++ field_decl = TREE_CHAIN (field_decl); ++ } ++ ++ a68_add_stmt (dup); ++ dup = a68_pop_range (); ++ } ++ else ++ /* Not an Algol 68 value. */ ++ gcc_unreachable (); ++ ++ return dup; ++} ++ ++/* Lower code to ascribe the value yielded by the expression in RHS to the ++ defining identifier implied by the LHS, which is a VAR_DECL tree. MODE is ++ the mode of the value to be ascribed. */ ++ ++tree ++a68_low_ascription (MOID_T *mode, tree lhs, tree rhs) ++{ ++ gcc_assert (VAR_P (lhs)); ++ ++ tree type = CTYPE (mode); ++ if (IS (mode, PROC_SYMBOL)) ++ { ++ /* A pointer to a function, or a function, is expected at the right hand ++ side. We need a pointer for the left hand side.. */ ++ if (TREE_CODE (TREE_TYPE (rhs)) == FUNCTION_TYPE) ++ { ++ type = build_pointer_type (type); ++ rhs = fold_build1 (ADDR_EXPR, type, rhs); ++ } ++ } ++ ++ if (HAS_ROWS (mode)) ++ rhs = a68_low_dup (rhs); ++ return fold_build2 (MODIFY_EXPR, type, lhs, rhs); ++} ++ ++/* Perform an assignation of RHS to LHS. ++ ++ MODE_RHS is the mode of the rhs. ++ MODE_LHS is the mode of the lhs. ++ ++ MODE_LHS shall be REF [FLEX] MODE_LHS. */ ++ ++tree ++a68_low_assignation (NODE_T *p, ++ tree lhs, MOID_T *mode_lhs, ++ tree rhs, MOID_T *mode_rhs) ++{ ++ NODE_T *lhs_node = SUB (p); ++ tree assignation = NULL_TREE; ++ tree orig_rhs = rhs; ++ ++ if (IS_FLEXETY_ROW (mode_rhs)) ++ { ++ /* Make a deep copy of the rhs. Note that we have to use the heap ++ because the scope of the lhs may be older than the scope of the rhs. ++ XXX this can be ommitted if a68_multiple_copy_elems below supports ++ overlapping multiples. */ ++ if (HAS_ROWS (mode_rhs)) ++ rhs = a68_low_dup (rhs, true /* use_heap */); ++ rhs = save_expr (rhs); ++ ++ /* Determine whether the REF [FLEX] MODE_LHS is flexible. */ ++ if (SUB (mode_lhs) == M_STRING || IS_FLEX (SUB (mode_lhs))) ++ { ++ /* Assigning to a flexible name updates descriptor with new bounds ++ and also sets the elements to the dup of the rhs. No boundscheck ++ is peformed. XXX but bound checking in contained values may be ++ necessary, ghost elements. */ ++ if (POINTER_TYPE_P (TREE_TYPE (lhs)) ++ && TREE_TYPE (TREE_TYPE (lhs)) == TREE_TYPE (rhs)) ++ { ++ /* Make sure to not evaluate the expression yielding the pointer ++ more than once. */ ++ lhs = save_expr (lhs); ++ tree deref_lhs = a68_checked_indirect_ref (lhs_node, lhs, mode_lhs); ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), ++ deref_lhs, rhs), ++ lhs); ++ } ++ else ++ { ++ /* The lhs is either a variable or a component ref as a l-value. It ++ is ok to evaluate it as an r-value as well as doing so inroduces ++ no side-effects. */ ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), ++ lhs, rhs), ++ lhs); ++ } ++ } ++ else ++ { ++ /* Dereference the multiple at the left-hand side. This may require ++ indirection. */ ++ ++ tree effective_lhs; ++ if (POINTER_TYPE_P (TREE_TYPE (lhs))) ++ { ++ /* The name at the lhs is a pointer. */ ++ gcc_assert (TREE_TYPE (TREE_TYPE (lhs)) == TREE_TYPE (rhs)); ++ lhs = save_expr (lhs); ++ effective_lhs = a68_checked_indirect_ref (lhs_node, lhs, mode_lhs); ++ } ++ else ++ { ++ /* The name at the lhs is either a variable or a component ref as ++ a l-value. It is ok to evaluate it as an r-value as well as ++ doing so introduces no side-effects. */ ++ effective_lhs = lhs; ++ } ++ ++ /* Copy over the elements in a loop. The space occupied by the ++ previous elements stored in the lhs multiple will be recovered by ++ either stack shrinkage or garbage collected. */ ++ tree copy_elements = a68_multiple_copy_elems (mode_rhs, effective_lhs, rhs); ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ copy_elements, ++ lhs); ++ ++ /* Check the bounds of the multiple at the rhs to make sure they are ++ the same than the bounds of the multiple already referred by the ++ lhs. If the bounds don't match then emit a run-time error. */ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (assignation), ++ a68_multiple_bounds_check_equal (p, ++ effective_lhs, ++ rhs), ++ assignation); ++ ++ } ++ } ++ else ++ { ++ /* First make sure we got a pointer in the RHS in case it is a name. */ ++ rhs = a68_consolidate_ref (mode_rhs, rhs); ++ ++ /* The assignation implies copying the entire value being assigned, so ++ make sure we do a deep copy whenever needed. Note that we have to use ++ the heap because the scope of the lhs may be older than the scope of ++ the rhs. */ ++ if (HAS_ROWS (mode_rhs)) ++ rhs = a68_low_dup (rhs, true /* use_heap */); ++ ++ if (POINTER_TYPE_P (TREE_TYPE (lhs)) ++ && TREE_TYPE (TREE_TYPE (lhs)) == TREE_TYPE (rhs)) ++ { ++ /* If the left hand side is a pointer, deref it, but return the ++ pointer. Make sure to not evaluate the expression yielding the ++ pointer more than once. */ ++ lhs = save_expr (lhs); ++ tree deref_lhs = a68_checked_indirect_ref (lhs_node, lhs, mode_lhs); ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), ++ deref_lhs, rhs), ++ lhs); ++ } ++ else ++ { ++ /* Otherwise the lhs is either a variable or a component ref as an ++ l-value. It is ok to evaluate it as an r-value as well as doing ++ so introduces no side-effects. */ ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), ++ lhs, rhs), ++ lhs); ++ } ++ } ++ ++ /* Since it is been assigned to a name, the rhs is no longer constant. */ ++ if (A68_ROW_TYPE_P (TREE_TYPE (orig_rhs)) || A68_STRUCT_TYPE_P (TREE_TYPE (orig_rhs))) ++ TREE_CONSTANT (orig_rhs) = 0; ++ return assignation; ++} ++ ++/* Build a tree that copies SIZE bytes from SRC into DST. */ ++ ++tree ++a68_lower_memcpy (tree dst, tree src, tree size) ++{ ++ return build_call_expr (builtin_decl_explicit (BUILT_IN_MEMCPY), 3, ++ dst, src, size); ++} ++ ++/* Build a tree that allocates SIZE bytes on the stack and returns a *TYPE ++ pointer to it. */ ++ ++tree ++a68_lower_alloca (tree type, tree size) ++{ ++ tree call = builtin_decl_explicit (BUILT_IN_ALLOCA_WITH_ALIGN); ++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 2, ++ size, ++ size_int (TYPE_ALIGN (type))); ++ call = fold_convert (build_pointer_type (type), call); ++ return call; ++} ++ ++ ++/* Build a tree that allocates SIZE bytes on the heap and returns a *TYPE ++ pointer to it. */ ++ ++tree ++a68_lower_malloc (tree type, tree size) ++{ ++ return fold_convert (build_pointer_type (type), ++ a68_build_libcall (A68_LIBCALL_MALLOC, ptr_type_node, ++ 1, size)); ++} ++ ++/* Build code for a temporary variable named NAME, of type TYPE and initialized ++ to INIT. Returns the decl node for the temporary. */ ++ ++tree ++a68_lower_tmpvar (const char *name, tree type, tree init) ++{ ++ tree tmpvar = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, ++ get_identifier (name), ++ type); ++ DECL_ARTIFICIAL (tmpvar) = 1; ++ DECL_IGNORED_P (tmpvar) = 1; ++ a68_add_decl (tmpvar); ++ a68_add_decl_expr (fold_build1 (DECL_EXPR, type, tmpvar)); ++ a68_add_stmt (fold_build2 (INIT_EXPR, type, tmpvar, init)); ++ return tmpvar; ++} ++ ++/* Build a FUNC_DECL for a top-level non-public function and return it. */ ++ ++tree ++a68_low_toplevel_func_decl (const char *name, tree fntype) ++{ ++ tree fndecl = build_decl (UNKNOWN_LOCATION, ++ FUNCTION_DECL, ++ NULL /* set below */, ++ fntype); ++ char *_name = xasprintf ("__ga68_%s%d", name, DECL_UID (fndecl)); ++ DECL_NAME (fndecl) = get_identifier (_name); ++ free (_name); ++ DECL_EXTERNAL (fndecl) = 0; ++ TREE_PUBLIC (fndecl) = 0; ++ TREE_STATIC (fndecl) = 1; ++ ++ return fndecl; ++} ++ ++/* Build a PARM_DECL whose context is TYPE with the given NAME. */ ++ ++tree ++a68_low_func_param (tree fndecl, const char *name, tree type) ++{ ++ tree param = build_decl (UNKNOWN_LOCATION, PARM_DECL, ++ get_identifier (name), type); ++ DECL_CONTEXT (param) = fndecl; ++ DECL_ARG_TYPE (param) = TREE_TYPE (param); ++ layout_decl (param, 0); ++ return param; ++} ++ ++/* Lower revelations, to calls to either its prelude or poslude. ++ This function always returns NULL_TREE. */ ++ ++static tree ++lower_revelations (NODE_T *p, LOW_CTX_T ctx, bool prelude) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ lower_revelations (SUB (p), ctx, prelude); ++ if (IS (p, MODULE_INDICANT)) ++ { ++ tree decl = build_decl (a68_get_node_location (p), ++ FUNCTION_DECL, ++ NULL_TREE, /* name, set below. */ ++ build_function_type (void_type_node, ++ void_list_node)); ++ DECL_NAME (decl) ++ = a68_get_mangled_identifier (prelude ? "_prelude" : "_postlude", ++ NSYMBOL (p)); ++ DECL_EXTERNAL (decl) = 1; ++ TREE_PUBLIC (decl) = 1; ++ a68_add_decl (decl); ++ a68_add_stmt (build_call_expr_loc (a68_get_node_location (p), ++ decl, 0)); ++ } ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a module text. ++ ++ module text : revelation part, def part, postlude part, fed symbol ; ++ revelation part, def part, fed symbol ; ++ def part, postlude part, fed symbol ; ++ def part, postlude part, fed symbol. ++ def part : def symbol, enquiry clause. ++ postlude part : postlude symbol, serial clause. ++ ++ Each module text lowers to two functions which are callable from outside the ++ current compilation unit: ++ ++ MODULENAME__prelude ++ MODULENAME__postlude ++ ++ Declarations inside prelude and postlude are lowered into global decl trees. ++ The non-PUBlicized ones are marked as static. ++ ++ This handler always returns NULL_TREE. */ ++ ++static tree ++lower_module_text (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *def_part = (IS (SUB (p), REVELATION_PART) ++ ? NEXT_SUB (p) ++ : SUB (p)); ++ NODE_T *revelation_part = (IS (SUB (p), REVELATION_PART) ++ ? SUB (p) ++ : NO_NODE); ++ NODE_T *postlude_part = (IS (NEXT (def_part), FED_SYMBOL) ++ ? NO_NODE ++ : NEXT (def_part)); ++ NODE_T *prelude_enquiry = NEXT_SUB (def_part); ++ ++ /* The global sentinel of the module, initialized to 0. */ ++ tree sentinel_decl = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, NULL /* name */, ++ sizetype); ++ char *sentinel_name = xasprintf ("%s__sentinel", ctx.module_definition_name); ++ DECL_NAME (sentinel_decl) = get_identifier (sentinel_name); ++ free (sentinel_name); ++ TREE_PUBLIC (sentinel_decl) = 0; ++ TREE_STATIC (sentinel_decl) = 1; ++ DECL_CONTEXT (sentinel_decl) = NULL_TREE; /* File scope. */ ++ make_decl_rtl (sentinel_decl); ++ varpool_node::finalize_decl (sentinel_decl); ++ ++ /* Create the prelude function. */ ++ tree prelude_decl = build_decl (a68_get_node_location (def_part), ++ FUNCTION_DECL, ++ NULL_TREE, /* name, set below. */ ++ build_function_type (void_type_node, ++ void_list_node)); ++ DECL_NAME (prelude_decl) ++ = a68_get_mangled_identifier ("_prelude", ++ ctx.module_definition_name); ++ DECL_EXTERNAL (prelude_decl) = 0; ++ TREE_PUBLIC (prelude_decl) = 1; ++ TREE_STATIC (prelude_decl) = 1; ++ ++ a68_push_function_range (prelude_decl, ++ void_type_node /* result_type */, true /* top_level */); ++ { ++ /* Increase sentinel. */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ++ sizetype, ++ sentinel_decl, size_one_node)); ++ ++ a68_push_stmt_list (NULL); ++ { ++ a68_push_stmt_list (NULL); ++ { ++ /* Add calls to preludes of modules in REVELATION_PART. */ ++ lower_revelations (revelation_part, ctx, true /* prelude */); ++ a68_add_stmt (a68_lower_tree (prelude_enquiry, ctx)); ++ } ++ tree do_prelude = a68_pop_stmt_list (); ++ ++ a68_push_stmt_list (M_VOID); ++ tree do_nothing = a68_pop_stmt_list (); ++ ++ /* Do the prelude work only if sentinel is 1. */ ++ a68_add_stmt (fold_build3 (COND_EXPR, void_type_node, ++ fold_build2 (EQ_EXPR, sizetype, ++ sentinel_decl, size_one_node), ++ do_prelude, do_nothing)); ++ } ++ tree prelude_body = a68_pop_stmt_list (); ++ a68_pop_function_range (prelude_body); ++ } ++ ++ /* Create the postlude function. This is done even if the module definition ++ has no postlude in the source code. */ ++ ++ location_t postlude_loc = UNKNOWN_LOCATION; ++ if (postlude_part != NO_NODE) ++ postlude_loc = a68_get_node_location (postlude_part); ++ tree postlude_decl = build_decl (postlude_loc, ++ FUNCTION_DECL, ++ NULL_TREE, /* name, set below. */ ++ build_function_type (void_type_node, ++ void_list_node)); ++ DECL_NAME (postlude_decl) ++ = a68_get_mangled_identifier ("_postlude", ++ ctx.module_definition_name); ++ DECL_EXTERNAL (postlude_decl) = 0; ++ TREE_PUBLIC (postlude_decl) = 1; ++ TREE_STATIC (postlude_decl) = 1; ++ ++ a68_push_function_range (postlude_decl, ++ void_type_node /* result_type */, true /* top_level */); ++ { ++ /* Decrease sentinel. */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ++ sizetype, ++ sentinel_decl, size_one_node)); ++ ++ a68_push_stmt_list (NULL); ++ { ++ a68_push_stmt_list (NULL); ++ { ++ /* Add calls to postludes of modules in REVELATION_PART. */ ++ lower_revelations (revelation_part, ctx, false /* prelude */); ++ /* Perhaps the postlude code, if there is one. */ ++ NODE_T *postlude_serial = NO_NODE; ++ if (postlude_part != NO_NODE) ++ postlude_serial = NEXT_SUB (postlude_part); ++ if (postlude_serial != NO_NODE) ++ a68_add_stmt (a68_lower_tree (postlude_serial, ctx)); ++ } ++ tree do_postlude = a68_pop_stmt_list (); ++ ++ a68_push_stmt_list (M_VOID); ++ tree do_nothing = a68_pop_stmt_list (); ++ ++ /* Do the postlude work only if sentinel is 0. */ ++ a68_add_stmt (fold_build3 (COND_EXPR, void_type_node, ++ fold_build2 (EQ_EXPR, sizetype, ++ sentinel_decl, size_zero_node), ++ do_postlude, do_nothing)); ++ } ++ tree postlude_body = a68_pop_stmt_list (); ++ a68_pop_function_range (postlude_body); ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a set of module declarations. ++ ++ module declaration : module symbol, defining module, equals symbol, module text ; ++ module_declaration, comma symbol, defining module, ++ equals symbol, module text. ++ ++ Each module declaration lowers into the side-effects of emitting prelude and ++ postlude global functions, and emitting global declarations for the ++ declarations in the module definition prelude. ++ ++ This handler always returns NULL_TREE. */ ++ ++static tree ++lower_module_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEFINING_MODULE_INDICANT)) ++ { ++ ctx.module_definition_name = NSYMBOL (p); ++ A68_MODULE_DEFINITION_DECLS->truncate (0); ++ vec_alloc (A68_MODULE_DEFINITION_DECLS, 16); ++ lower_module_text (NEXT (NEXT (p)), ctx); ++ for (tree d : A68_MODULE_DEFINITION_DECLS) ++ { ++ if (TREE_CODE (d) == FUNCTION_DECL) ++ cgraph_node::finalize_function (d, true); ++ else ++ { ++ rest_of_decl_compilation (d, 1, 0); ++ make_decl_rtl (d); ++ } ++ } ++ } ++ else ++ lower_module_declaration (SUB (p), ctx); ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a prelude packet. ++ ++ prelude packet : module declaration. ++ ++ This handler always returns NULL_TREE. */ ++ ++static tree ++lower_prelude_packet (NODE_T *p, LOW_CTX_T ctx) ++{ ++ a68_lower_tree (SUB (p), ctx); ++ return NULL_TREE; ++} ++ ++/* Lower a particular program. ++ ++ particular program : label, enclosed clause; enclosed clause. ++ ++ This handler always returns NULL_TREE. */ ++ ++static tree ++lower_particular_program (NODE_T *p, LOW_CTX_T ctx) ++{ ++ /* Create the main function that conforms the particular program. */ ++ tree main_decl = build_decl (a68_get_node_location (p), ++ FUNCTION_DECL, ++ get_identifier ("__algol68_main"), ++ build_function_type (void_type_node, ++ void_list_node)); ++ DECL_EXTERNAL (main_decl) = 0; ++ TREE_PUBLIC (main_decl) = 1; ++ TREE_STATIC (main_decl) = 1; ++ ++ a68_push_function_range (main_decl, ++ void_type_node /* result_type */); ++ ++ /* Lower the body of the function. */ ++ NODE_T *enclosed_clause = (IS (SUB (p), ENCLOSED_CLAUSE) ++ ? SUB (p) : NEXT (SUB (p))); ++ tree body_expr = a68_lower_tree (enclosed_clause, ctx); ++ a68_pop_function_range (body_expr); ++ return NULL_TREE; ++} ++ ++/* Lower a packet. ++ ++ packet : particular program ; prelude packet. ++*/ ++ ++static tree ++lower_packet (NODE_T *p, ++ LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} ++ ++/* Lower the given tree P using the given context CTX. */ ++ ++tree ++a68_lower_tree (NODE_T *p, LOW_CTX_T ctx) ++{ ++#if 0 ++ for (int i = 0; i < ctx.level; ++i) ++ printf (" "); ++ printf ("LOWER TREE: %d::%s\n", ++ NUMBER (p), a68_attribute_name (ATTRIBUTE (p))); ++#endif ++ ctx.level++; ++ ++ tree res = NULL_TREE; ++ ++ if (p == NO_NODE) ++ gcc_unreachable (); ++ ++ switch (ATTRIBUTE (p)) ++ { ++ case PACKET: ++ res = lower_packet (p, ctx); ++ break; ++ break; ++ case PRELUDE_PACKET: ++ res = lower_prelude_packet (p, ctx); ++ break; ++ case MODULE_DECLARATION: ++ res = lower_module_declaration (p, ctx); ++ break; ++ case MODULE_TEXT: ++ res = lower_module_text (p, ctx); ++ break; ++ case PARTICULAR_PROGRAM: ++ res = lower_particular_program (p, ctx); ++ break; ++ /* Clauses */ ++ case ENCLOSED_CLAUSE: ++ res = a68_lower_enclosed_clause (p, ctx); ++ break; ++ case CLOSED_CLAUSE: ++ res = a68_lower_closed_clause (p, ctx); ++ break; ++ case ACCESS_CLAUSE: ++ res = a68_lower_access_clause (p, ctx); ++ break; ++ case PARALLEL_CLAUSE: ++ res = a68_lower_parallel_clause (p, ctx); ++ break; ++ case COLLATERAL_CLAUSE: ++ res = a68_lower_collateral_clause (p, ctx); ++ break; ++ case UNIT_LIST: ++ res = a68_lower_unit_list (p, ctx); ++ break; ++ case CONDITIONAL_CLAUSE: ++ res = a68_lower_conditional_clause (p, ctx); ++ break; ++ case ENQUIRY_CLAUSE: ++ res = a68_lower_enquiry_clause (p, ctx); ++ break; ++ case CASE_CLAUSE: ++ res = a68_lower_case_clause (p, ctx); ++ break; ++ case CONFORMITY_CLAUSE: ++ res = a68_lower_conformity_clause (p, ctx); ++ break; ++ case LOOP_CLAUSE: ++ res = a68_lower_loop_clause (p, ctx); ++ break; ++ case SERIAL_CLAUSE: ++ res = a68_lower_serial_clause (p, ctx); ++ break; ++ case INITIALISER_SERIES: ++ res = a68_lower_initialiser_series (p, ctx); ++ break; ++ case EXIT_SYMBOL: ++ res = a68_lower_completer (p, ctx); ++ break; ++ case LABELED_UNIT: ++ res = a68_lower_labeled_unit (p, ctx); ++ break; ++ case LABEL: ++ res = a68_lower_label (p, ctx); ++ break; ++ /* Declarations. */ ++ case DECLARATION_LIST: ++ res = a68_lower_declaration_list (p, ctx); ++ break; ++ case DECLARER: ++ res = a68_lower_declarer (p, ctx); ++ break; ++ case IDENTITY_DECLARATION: ++ res = a68_lower_identity_declaration (p, ctx); ++ break; ++ case VARIABLE_DECLARATION: ++ res = a68_lower_variable_declaration (p, ctx); ++ break; ++ case PROCEDURE_DECLARATION: ++ res = a68_lower_procedure_declaration (p, ctx); ++ break; ++ case PROCEDURE_VARIABLE_DECLARATION: ++ res = a68_lower_procedure_variable_declaration (p, ctx); ++ break; ++ case PRIORITY_DECLARATION: ++ res = a68_lower_priority_declaration (p, ctx); ++ break; ++ case BRIEF_OPERATOR_DECLARATION: ++ res = a68_lower_brief_operator_declaration (p, ctx); ++ break; ++ case OPERATOR_DECLARATION: ++ res = a68_lower_operator_declaration (p, ctx); ++ break; ++ case MODE_DECLARATION: ++ res = a68_lower_mode_declaration (p, ctx); ++ break; ++ /* Units. */ ++ case UNIT: ++ res = a68_lower_unit (p, ctx); ++ break; ++ case ROUTINE_TEXT: ++ res = a68_lower_routine_text (p, ctx); ++ break; ++ case ASSIGNATION: ++ res = a68_lower_assignation (p, ctx); ++ break; ++ case TERTIARY: ++ res = a68_lower_tertiary (p, ctx); ++ break; ++ case MONADIC_FORMULA: ++ res = a68_lower_monadic_formula (p, ctx); ++ break; ++ case FORMULA: ++ res = a68_lower_formula (p, ctx); ++ break; ++ case SECONDARY: ++ res = a68_lower_secondary (p, ctx); ++ break; ++ case SLICE: ++ res = a68_lower_slice (p, ctx); ++ break; ++ case SELECTION: ++ res = a68_lower_selection (p, ctx); ++ break; ++ case PRIMARY: ++ res = a68_lower_primary (p, ctx); ++ break; ++ case GENERATOR: ++ res = a68_lower_generator (p, ctx); ++ break; ++ case CALL: ++ res = a68_lower_call (p, ctx); ++ break; ++ case CAST: ++ res = a68_lower_cast (p, ctx); ++ break; ++ case AND_FUNCTION: ++ case OR_FUNCTION: ++ res = a68_lower_logic_function (p, ctx); ++ break; ++ case IDENTITY_RELATION: ++ res = a68_lower_identity_relation (p, ctx); ++ break; ++ case EMPTY_SYMBOL: ++ res = a68_lower_empty (p, ctx); ++ break; ++ case NIHIL: ++ res = a68_lower_nihil (p, ctx); ++ break; ++ case SKIP: ++ res = a68_lower_skip (p, ctx); ++ break; ++ case DENOTATION: ++ res = a68_lower_denotation (p, ctx); ++ break; ++ case IDENTIFIER: ++ res = a68_lower_identifier (p, ctx); ++ break; ++ /* Coercions. */ ++ case ROWING: ++ res = a68_lower_rowing (p, ctx); ++ break; ++ case WIDENING: ++ res = a68_lower_widening (p, ctx); ++ break; ++ case DEPROCEDURING: ++ res = a68_lower_deproceduring (p, ctx); ++ break; ++ case PROCEDURING: ++ res = a68_lower_proceduring (p, ctx); ++ break; ++ case VOIDING: ++ res = a68_lower_voiding (p, ctx); ++ break; ++ case DEREFERENCING: ++ res = a68_lower_dereferencing (p, ctx); ++ break; ++ /* Others. */ ++ case UNITING: ++ res = a68_lower_uniting (p, ctx); ++ break; ++ case JUMP: ++ res = a68_lower_jump (p, ctx); ++ break; ++ case PARAMETER: ++ res = a68_lower_parameter (p, ctx); ++ break; ++ case PARAMETER_LIST: ++ res = a68_lower_parameter_list (p, ctx); ++ break; ++ case PARAMETER_PACK: ++ res = a68_lower_parameter_pack (p, ctx); ++ break; ++ case OPERATOR: ++ res = a68_lower_operator (p, ctx); ++ break; ++ case ASSERTION: ++ res = a68_lower_assertion (p, ctx); ++ break; ++ case STOP: ++ res = NULL_TREE; ++ break; ++ default: ++ fatal_error (a68_get_node_location (p), "cannot lower node %s", ++ a68_attribute_name (ATTRIBUTE (p))); ++ gcc_unreachable (); ++ break; ++ } ++ ++ return res; ++} ++ ++/* Lower an Algol 68 complete parse tree to a GENERIC tree. */ ++ ++tree ++a68_lower_top_tree (NODE_T *p) ++{ ++ LOW_CTX_T top_ctx; ++ ++ top_ctx.declarer = NULL; ++ top_ctx.proc_decl_identifier = NO_NODE; ++ top_ctx.proc_decl_operator = false; ++ top_ctx.level = 0; ++ top_ctx.module_definition_name = NULL; ++ vec_alloc (A68_MODULE_DEFINITION_DECLS, 16); ++ return a68_lower_tree (p, top_ctx); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-moids-diagnostics.cc +@@ -0,0 +1,281 @@ ++/* MOID diagnostics routines. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* Give accurate error message. */ ++ ++const char * ++a68_mode_error_text (NODE_T *n, MOID_T *p, MOID_T *q, int context, int deflex, int depth) ++{ ++#define TAIL(z) (&(z)[strlen (z)]) ++#define ACTUAL_SNPRINTF_SIZE ((SNPRINTF_SIZE - len)) ++ static BUFFER txt; ++ size_t len; ++ if (depth == 1) ++ txt[0] = '\0'; ++ if (IS (p, SERIES_MODE)) ++ { ++ len = strlen (txt); ++ PACK_T *u = PACK (p); ++ ++ int N = 0; ++ if (u == NO_PACK) ++ { ++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) ++ gcc_unreachable (); ++ N++; ++ } ++ else ++ { ++ for (; u != NO_PACK; FORWARD (u)) ++ { ++ if (MOID (u) != NO_MOID) ++ { ++ if (IS (MOID (u), SERIES_MODE)) ++ (void) a68_mode_error_text (n, MOID (u), q, context, deflex, depth + 1); ++ else if (!a68_is_coercible (MOID (u), q, context, deflex)) ++ { ++ len = strlen (txt); ++ if (len > BUFFER_SIZE / 2) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) ++ gcc_unreachable (); ++ N++; ++ } ++ else ++ { ++ if (len > 0) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) ++ gcc_unreachable (); ++ N++; ++ len = strlen (txt); ++ } ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%%<%s%%>", ++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ N++; ++ } ++ } ++ } ++ } ++ } ++ if (depth == 1) ++ { ++ len = strlen (txt); ++ if (N == 0) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "mode") < 0) ++ gcc_unreachable (); ++ len = strlen (txt); ++ } ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " cannot be coerced to %%<%s%%>", ++ a68_moid_to_string (q, MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ else if (IS (p, STOWED_MODE) && IS_FLEX (q)) ++ { ++ PACK_T *u = PACK (p); ++ len = strlen (txt); ++ if (u == NO_PACK) ++ { ++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ for (; u != NO_PACK; FORWARD (u)) ++ { ++ if (!a68_is_coercible (MOID (u), SLICE (SUB (q)), context, deflex)) ++ { ++ len = strlen (txt); ++ if (len > BUFFER_SIZE / 2) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ if (len > 0) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) ++ gcc_unreachable (); ++ len = strlen (txt); ++ } ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%s", ++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ } ++ len = strlen (txt); ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " cannot be coerced to %%<%s%%>", ++ a68_moid_to_string (SLICE (SUB (q)), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ else if (IS (p, STOWED_MODE) && IS (q, ROW_SYMBOL)) ++ { ++ PACK_T *u = PACK (p); ++ len = strlen (txt); ++ if (u == NO_PACK) ++ { ++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ for (; u != NO_PACK; FORWARD (u)) ++ { ++ if (!a68_is_coercible (MOID (u), SLICE (q), context, deflex)) ++ { ++ len = strlen (txt); ++ if (len > BUFFER_SIZE / 2) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ if (len > 0) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) ++ gcc_unreachable (); ++ len = strlen (txt); ++ } ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%%<%s%%>", ++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ } ++ len = strlen (txt); ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " cannot be coerced to %s", ++ a68_moid_to_string (SLICE (q), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ else if (IS (p, STOWED_MODE) && (IS (q, PROC_SYMBOL) || IS (q, STRUCT_SYMBOL))) ++ { ++ PACK_T *u = PACK (p), *v = PACK (q); ++ len = strlen (txt); ++ if (u == NO_PACK) ++ { ++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ for (; u != NO_PACK && v != NO_PACK; FORWARD (u), FORWARD (v)) ++ { ++ if (!a68_is_coercible (MOID (u), MOID (v), context, deflex)) ++ { ++ len = strlen (txt); ++ if (len > BUFFER_SIZE / 2) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ if (len > 0) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) ++ gcc_unreachable (); ++ len = strlen (txt); ++ } ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%%<%s%%> cannot be coerced to %%<%s%%>", ++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n), ++ a68_moid_to_string (MOID (v), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ } ++ } ++ } ++ return txt; ++#undef TAIL ++#undef ACTUAL_SNPRINTF_SIZE ++} ++ ++/* Cannot coerce error. */ ++ ++void ++a68_cannot_coerce (NODE_T *p, MOID_T *from, MOID_T *to, int context, int deflex, int att) ++{ ++ const char *txt = a68_mode_error_text (p, from, to, context, deflex, 1); ++ ++ if (att == STOP) ++ { ++ if (strlen (txt) == 0) ++ a68_error (p, "M cannot be coerced to M in C context", from, to, context); ++ else ++ a68_error (p, "Y in C context", txt, context); ++ } ++ else ++ { ++ if (strlen (txt) == 0) ++ a68_error (p, "M cannot be coerced to M in C-A", from, to, context, att); ++ else ++ a68_error (p, "Y in C-A", txt, context, att); ++ } ++} ++ ++/* Give a warning when a value is silently discarded. */ ++ ++void ++a68_warn_for_voiding (NODE_T *p, SOID_T *x, SOID_T *y, int c) ++{ ++ (void) c; ++ ++ if (CAST (x) == false) ++ { ++ if (MOID (x) == M_VOID && MOID (y) != M_ERROR && !(MOID (y) == M_VOID || !a68_is_nonproc (MOID (y)))) ++ { ++ if (IS (p, FORMULA)) ++ a68_warning (p, OPT_Wvoiding, "value of M @ will be voided", MOID (y)); ++ else ++ a68_warning (p, OPT_Wvoiding, "value of M @ will be voided", MOID (y)); ++ } ++ } ++} ++ ++/* Warn for things that are likely unintended. */ ++ ++void ++a68_semantic_pitfall (NODE_T *p, MOID_T *m, int c, int u) ++{ ++ /* semantic_pitfall: warn for things that are likely unintended, for instance ++ REF INT i := LOC INT := 0, which should probably be ++ REF INT i = LOC INT := 0. */ ++ if (IS (p, u)) ++ a68_warning (p, 0, "possibly unintended M A in M A", ++ MOID (p), u, m, c); ++ else if (a68_is_one_of (p, UNIT, TERTIARY, SECONDARY, PRIMARY, STOP)) ++ a68_semantic_pitfall (SUB (p), m, c, u); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-moids-misc.cc +@@ -0,0 +1,1396 @@ ++/* Miscellaneous MOID routines. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* ++ * MODE checker routines. ++ */ ++ ++/* Absorb nested series modes recursively. */ ++ ++void ++a68_absorb_series_pack (MOID_T **p) ++{ ++ bool siga; ++ ++ do ++ { ++ PACK_T *z = NO_PACK; ++ ++ siga = false; ++ for (PACK_T *t = PACK (*p); t != NO_PACK; FORWARD (t)) ++ { ++ if (MOID (t) != NO_MOID && IS (MOID (t), SERIES_MODE)) ++ { ++ siga = true; ++ for (PACK_T *s = PACK (MOID (t)); s != NO_PACK; FORWARD (s)) ++ a68_add_mode_to_pack (&z, MOID (s), NO_TEXT, NODE (s)); ++ } ++ else ++ a68_add_mode_to_pack (&z, MOID (t), NO_TEXT, NODE (t)); ++ } ++ PACK (*p) = z; ++ } ++ while (siga); ++} ++ ++/* Make SERIES (u, v). */ ++ ++MOID_T * ++a68_make_series_from_moids (MOID_T *u, MOID_T *v) ++{ ++ MOID_T *x = a68_new_moid (); ++ ++ ATTRIBUTE (x) = SERIES_MODE; ++ a68_add_mode_to_pack (&(PACK (x)), u, NO_TEXT, NODE (u)); ++ a68_add_mode_to_pack (&(PACK (x)), v, NO_TEXT, NODE (v)); ++ a68_absorb_series_pack (&x); ++ DIM (x) = a68_count_pack_members (PACK (x)); ++ (void) a68_register_extra_mode (&TOP_MOID (&A68_JOB), x); ++ if (DIM (x) == 1) ++ return MOID (PACK (x)); ++ else ++ return x; ++} ++ ++/* Absorb firmly related unions in mode. ++ ++ For instance invalid UNION (PROC REF UNION (A, B), A, B) -> valid ++ UNION (A, B), which is used in balancing conformity clauses. */ ++ ++MOID_T * ++a68_absorb_related_subsets (MOID_T * m) ++{ ++ /* For instance invalid UNION (PROC REF UNION (A, B), A, B) -> valid UNION ++ (A, B), which is used in balancing conformity clauses. */ ++ bool siga; ++ ++ do ++ { ++ PACK_T *u = NO_PACK; ++ ++ siga = false; ++ for (PACK_T *v = PACK (m); v != NO_PACK; FORWARD (v)) ++ { ++ MOID_T *n = a68_depref_completely (MOID (v)); ++ ++ if (IS (n, UNION_SYMBOL) && a68_is_subset (n, m, SAFE_DEFLEXING)) ++ { ++ /* Unpack it. */ ++ for (PACK_T *w = PACK (n); w != NO_PACK; FORWARD (w)) ++ a68_add_mode_to_pack (&u, MOID (w), NO_TEXT, NODE (w)); ++ siga = true; ++ } ++ else ++ a68_add_mode_to_pack (&u, MOID (v), NO_TEXT, NODE (v)); ++ } ++ PACK (m) = a68_absorb_union_pack (u); ++ } ++ while (siga); ++ return m; ++} ++ ++/* Absorb nested series and united modes recursively. */ ++ ++void ++a68_absorb_series_union_pack (MOID_T **p) ++{ ++ bool siga; ++ ++ do ++ { ++ PACK_T *z = NO_PACK; ++ ++ siga = false; ++ for (PACK_T *t = PACK (*p); t != NO_PACK; FORWARD (t)) ++ { ++ if (MOID (t) != NO_MOID && (IS (MOID (t), SERIES_MODE) || IS (MOID (t), UNION_SYMBOL))) ++ { ++ siga = true; ++ for (PACK_T *s = PACK (MOID (t)); s != NO_PACK; FORWARD (s)) ++ a68_add_mode_to_pack (&z, MOID (s), NO_TEXT, NODE (s)); ++ } ++ else ++ a68_add_mode_to_pack (&z, MOID (t), NO_TEXT, NODE (t)); ++ } ++ PACK (*p) = z; ++ } ++ while (siga); ++} ++ ++/* Make united mode, from mode that is a SERIES (..). */ ++ ++MOID_T * ++a68_make_united_mode (MOID_T *m) ++{ ++ if (m == NO_MOID) ++ return M_ERROR; ++ else if (ATTRIBUTE (m) != SERIES_MODE) ++ return m; ++ ++ /* Do not unite a single UNION. */ ++ if (DIM (m) == 1 && IS (MOID (PACK (m)), UNION_SYMBOL)) ++ return MOID (PACK (m)); ++ ++ /* Straighten the series. */ ++ a68_absorb_series_union_pack (&m); ++ /* Copy the series into a UNION. */ ++ MOID_T *u = a68_new_moid (); ++ ATTRIBUTE (u) = UNION_SYMBOL; ++ PACK (u) = NO_PACK; ++ for (PACK_T *w = PACK (m); w != NO_PACK; FORWARD (w)) ++ a68_add_mode_to_pack (&(PACK (u)), MOID (w), NO_TEXT, NODE (m)); ++ ++ /* Absorb and contract the new UNION. */ ++ a68_absorb_series_union_pack (&u); ++ DIM (u) = a68_count_pack_members (PACK (u)); ++ PACK (u) = a68_absorb_union_pack (PACK (u)); ++ a68_contract_union (u); ++ DIM (u) = a68_count_pack_members (PACK (u)); ++ /* A UNION of one mode is that mode itself. */ ++ if (DIM (u) == 1) ++ return MOID (PACK (u)); ++ else ++ return a68_register_extra_mode (&TOP_MOID (&A68_JOB), u); ++} ++ ++/* Make SOID data structure. */ ++ ++void ++a68_make_soid (SOID_T *s, int sort, MOID_T *type, int attribute) ++{ ++ ATTRIBUTE (s) = attribute; ++ SORT (s) = sort; ++ MOID (s) = type; ++ CAST (s) = false; ++} ++ ++/* Whether mode is not well defined. */ ++ ++bool ++a68_is_mode_isnt_well (MOID_T *p) ++{ ++ if (p == NO_MOID) ++ return true; ++ else if (!A68_IF_MODE_IS_WELL (p)) ++ return true; ++ else if (PACK (p) != NO_PACK) ++ { ++ for (PACK_T *q = PACK (p); q != NO_PACK; FORWARD (q)) ++ { ++ if (!A68_IF_MODE_IS_WELL (MOID (q))) ++ return true; ++ } ++ } ++ return false; ++} ++ ++/* Add SOID data to free chain. */ ++ ++void ++a68_free_soid_list (SOID_T *root) ++{ ++ if (root != NO_SOID) ++ { ++ SOID_T *q = root; ++ ++ for (; NEXT (q) != NO_SOID; FORWARD (q)) ++ ; ++ NEXT (q) = A68 (top_soid_list); ++ A68 (top_soid_list) = root; ++ } ++} ++ ++/* Add SOID data structure to soid list. */ ++ ++void ++a68_add_to_soid_list (SOID_T **root, NODE_T *where, SOID_T *soid) ++{ ++ if (*root != NO_SOID) ++ a68_add_to_soid_list (&(NEXT (*root)), where, soid); ++ else ++ { ++ SOID_T *new_one; ++ ++ if (A68 (top_soid_list) == NO_SOID) ++ new_one = (SOID_T *) ggc_cleared_alloc (); ++ else ++ { ++ new_one = A68 (top_soid_list); ++ FORWARD (A68 (top_soid_list)); ++ } ++ ++ a68_make_soid (new_one, SORT (soid), MOID (soid), 0); ++ NODE (new_one) = where; ++ NEXT (new_one) = NO_SOID; ++ *root = new_one; ++ } ++} ++ ++/* Pack soids in moid, gather resulting moids from terminators in a clause. */ ++ ++MOID_T * ++a68_pack_soids_in_moid (SOID_T *top_sl, int attribute) ++{ ++ MOID_T *x = a68_new_moid (); ++ PACK_T *t, **p; ++ ++ ATTRIBUTE (x) = attribute; ++ DIM (x) = 0; ++ SUB (x) = NO_MOID; ++ EQUIVALENT (x) = NO_MOID; ++ SLICE (x) = NO_MOID; ++ DEFLEXED (x) = NO_MOID; ++ NAME (x) = NO_MOID; ++ NEXT (x) = NO_MOID; ++ PACK (x) = NO_PACK; ++ p = &(PACK (x)); ++ for (; top_sl != NO_SOID; FORWARD (top_sl)) ++ { ++ t = a68_new_pack (); ++ MOID (t) = MOID (top_sl); ++ TEXT (t) = NO_TEXT; ++ NODE (t) = NODE (top_sl); ++ NEXT (t) = NO_PACK; ++ DIM (x)++; ++ *p = t; ++ p = &NEXT (t); ++ } ++ (void) a68_register_extra_mode (&TOP_MOID (&A68_JOB), x); ++ return x; ++} ++ ++/* Whether P is compatible with Q. */ ++ ++bool ++a68_is_equal_modes (MOID_T *p, MOID_T *q, int deflex) ++{ ++ if (deflex == FORCE_DEFLEXING) ++ return DEFLEX (p) == DEFLEX (q); ++ else if (deflex == ALIAS_DEFLEXING) ++ { ++ if (IS (p, REF_SYMBOL) && IS (q, REF_SYMBOL)) ++ return (p == q ++ || a68_prove_moid_equivalence (p, q) ++ || a68_prove_moid_equivalence (DEFLEX (p), q) ++ || DEFLEX (p) == q); ++ else if (!IS (p, REF_SYMBOL) && !IS (q, REF_SYMBOL)) ++ return (DEFLEX (p) == DEFLEX (q) ++ || a68_prove_moid_equivalence (DEFLEX (p), DEFLEX (q))); ++ } ++ else if (deflex == SAFE_DEFLEXING) ++ { ++ if (!IS (p, REF_SYMBOL) && !IS (q, REF_SYMBOL)) ++ return (DEFLEX (p) == DEFLEX (q) ++ || a68_prove_moid_equivalence (DEFLEX (p), DEFLEX (q))); ++ } ++ ++ return (p == q || a68_prove_moid_equivalence (p, q)); ++} ++ ++/* Whether mode is deprefable, i.e. whether it can be either deferred or ++ deprocedured. */ ++ ++bool ++a68_is_deprefable (MOID_T *p) ++{ ++ if (IS_REF (p)) ++ return true; ++ else ++ return (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK); ++} ++ ++/* Deref or deproc the mode P once. */ ++ ++MOID_T * ++a68_depref_once (MOID_T *p) ++{ ++ if (IS_REF_FLEX (p)) ++ return SUB_SUB (p); ++ else if (IS_REF (p)) ++ return SUB (p); ++ else if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) ++ return SUB (p); ++ else ++ return NO_MOID; ++} ++ ++/* Depref mode completely. */ ++ ++MOID_T * ++a68_depref_completely (MOID_T *p) ++{ ++ while (a68_is_deprefable (p)) ++ p = a68_depref_once (p); ++ return p; ++} ++ ++/* Deproc_completely. */ ++ ++MOID_T * ++a68_deproc_completely (MOID_T *p) ++{ ++ while (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) ++ p = a68_depref_once (p); ++ return p; ++} ++ ++/* Depref rows. */ ++ ++MOID_T * ++a68_depref_rows (MOID_T *p, MOID_T *q) ++{ ++ if (q == M_ROWS) ++ { ++ while (a68_is_deprefable (p)) ++ p = a68_depref_once (p); ++ return p; ++ } ++ else ++ return q; ++} ++ ++/* Derow mode, strip FLEX and BOUNDS. */ ++ ++MOID_T * ++a68_derow (MOID_T *p) ++{ ++ if (IS_ROW (p) || IS_FLEX (p)) ++ return a68_derow (SUB (p)); ++ else ++ return p; ++} ++ ++/* Whether rows type. */ ++ ++bool ++a68_is_rows_type (MOID_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case ROW_SYMBOL: ++ case FLEX_SYMBOL: ++ return true; ++ case UNION_SYMBOL: ++ { ++ PACK_T *t = PACK (p); ++ bool siga = true; ++ while (t != NO_PACK && siga) ++ { ++ siga &= a68_is_rows_type (MOID (t)); ++ FORWARD (t); ++ } ++ return siga; ++ } ++ default: ++ return false; ++ } ++} ++ ++/* Whether mode is PROC (REF FILE) VOID or FORMAT. */ ++ ++bool ++a68_is_proc_ref_file_void_or_format (MOID_T *p) ++{ ++ if (p == M_PROC_REF_FILE_VOID) ++ return true; ++ else if (p == M_FORMAT) ++ return true; ++ else ++ return false; ++} ++ ++/* Whether mode can be transput. */ ++ ++bool ++a68_is_transput_mode (MOID_T *p, char rw) ++{ ++ if (p == M_INT) ++ return true; ++ else if (p == M_SHORT_INT) ++ return true; ++ else if (p == M_SHORT_SHORT_INT) ++ return true; ++ else if (p == M_LONG_INT) ++ return true; ++ else if (p == M_LONG_LONG_INT) ++ return true; ++ else if (p == M_REAL) ++ return true; ++ else if (p == M_LONG_REAL) ++ return true; ++ else if (p == M_LONG_LONG_REAL) ++ return true; ++ else if (p == M_BOOL) ++ return true; ++ else if (p == M_CHAR) ++ return true; ++ else if (p == M_BITS) ++ return true; ++ else if (p == M_SHORT_BITS) ++ return true; ++ else if (p == M_SHORT_SHORT_BITS) ++ return true; ++ else if (p == M_LONG_BITS) ++ return true; ++ else if (p == M_LONG_LONG_BITS) ++ return true; ++ else if (p == M_COMPLEX) ++ return true; ++ else if (p == M_LONG_COMPLEX) ++ return true; ++ else if (p == M_LONG_LONG_COMPLEX) ++ return true; ++ else if (p == M_ROW_CHAR) ++ return true; ++ else if (p == M_STRING) ++ return true; ++ else if (IS (p, UNION_SYMBOL) || IS (p, STRUCT_SYMBOL)) ++ { ++ for (PACK_T *q = PACK (p); q != NO_PACK; FORWARD (q)) ++ { ++ if (!(a68_is_transput_mode (MOID (q), rw) ++ || a68_is_proc_ref_file_void_or_format (MOID (q)))) ++ return false; ++ } ++ return true; ++ } ++ else if (IS_FLEX (p)) ++ { ++ if (SUB (p) == M_ROW_CHAR) ++ return true; ++ else ++ return (rw == 'w' ? a68_is_transput_mode (SUB (p), rw) : false); ++ } ++ else if (IS_ROW (p)) ++ return (a68_is_transput_mode (SUB (p), rw) ++ || a68_is_proc_ref_file_void_or_format (SUB (p))); ++ else ++ return false; ++} ++ ++/* Whether mode is printable. */ ++ ++bool ++a68_is_printable_mode (MOID_T *p) ++{ ++ if (a68_is_proc_ref_file_void_or_format (p)) ++ return true; ++ else ++ return a68_is_transput_mode (p, 'w'); ++} ++ ++/* Whether mode is readable. */ ++ ++bool ++a68_is_readable_mode (MOID_T *p) ++{ ++ if (a68_is_proc_ref_file_void_or_format (p)) ++ return true; ++ else if (IS_REF (p)) ++ return a68_is_transput_mode (SUB (p), 'r'); ++ else if (IS_UNION (p)) ++ { ++ for (PACK_T *q = PACK (p); q != NO_PACK; FORWARD (q)) ++ { ++ if (!IS_REF (MOID (q))) ++ return false; ++ else if (!a68_is_transput_mode (SUB (MOID (q)), 'r')) ++ return false; ++ } ++ return true; ++ } ++ else ++ return false; ++} ++ ++/* Whether name struct. */ ++ ++bool ++a68_is_name_struct (MOID_T *p) ++{ ++ return (NAME (p) != NO_MOID ? IS (DEFLEX (SUB (p)), STRUCT_SYMBOL) : false); ++} ++ ++/* Yield mode to unite to. */ ++ ++MOID_T * ++a68_unites_to (MOID_T *m, MOID_T *u) ++{ ++ /* Uniting U (m). */ ++ MOID_T *v = NO_MOID; ++ ++ if (u == M_SIMPLIN || u == M_SIMPLOUT) ++ return m; ++ ++ for (PACK_T *p = PACK (u); p != NO_PACK; FORWARD (p)) ++ { ++ /* Prefer []->[] over []->FLEX []. */ ++ if (m == MOID (p)) ++ v = MOID (p); ++ else if (v == NO_MOID && DEFLEX (m) == DEFLEX (MOID (p))) ++ v = MOID (p); ++ } ++ return v; ++} ++ ++/* Whether moid in pack. */ ++ ++bool ++a68_is_moid_in_pack (MOID_T *u, PACK_T *v, int deflex) ++{ ++ for (; v != NO_PACK; FORWARD (v)) ++ { ++ if (a68_is_equal_modes (u, MOID (v), deflex)) ++ return true; ++ } ++ ++ return false; ++} ++ ++/* Whether a rows type in pack. */ ++ ++bool ++a68_is_rows_in_pack (PACK_T *v) ++{ ++ for (; v != NO_PACK; FORWARD (v)) ++ { ++ if (a68_is_rows_type (MOID (v))) ++ return true; ++ } ++ ++ return false; ++} ++ ++/* Whether P is a subset of Q. */ ++ ++bool ++a68_is_subset (MOID_T *p, MOID_T *q, int deflex) ++{ ++ bool j =true; ++ ++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) ++ j = (j && a68_is_moid_in_pack (MOID (u), PACK (q), deflex)); ++ ++ return j; ++} ++ ++/* Whether P can be united to UNION Q. */ ++ ++bool ++a68_is_unitable (MOID_T *p, MOID_T *q, int deflex) ++{ ++ if (IS (q, UNION_SYMBOL)) ++ { ++ if (IS (p, UNION_SYMBOL)) ++ return a68_is_subset (p, q, deflex); ++ else if (p == M_ROWS) ++ return a68_is_rows_in_pack (PACK (q)); ++ else ++ return a68_is_moid_in_pack (p, PACK (q), deflex); ++ } ++ ++ return false; ++} ++ ++/* Whether all or some components of U can be firmly coerced to a component ++ mode of V.. */ ++ ++void ++a68_investigate_firm_relations (PACK_T *u, PACK_T *v, bool *all, bool *some) ++{ ++ *all = true; ++ *some = true; ++ for (; v != NO_PACK; FORWARD (v)) ++ { ++ bool k = false; ++ ++ for (PACK_T *w = u; w != NO_PACK; FORWARD (w)) ++ k |= a68_is_coercible (MOID (w), MOID (v), FIRM, FORCE_DEFLEXING); ++ *some |= k; ++ *all &= k; ++ } ++} ++ ++/* Whether there is a soft path from P to Q. */ ++ ++bool ++a68_is_softly_coercible (MOID_T *p, MOID_T *q, int deflex) ++{ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) ++ return a68_is_softly_coercible (SUB (p), q, deflex); ++ else ++ return false; ++} ++ ++/* Whether there is a weak path from P to Q. */ ++ ++bool ++a68_is_weakly_coercible (MOID_T * p, MOID_T * q, int deflex) ++{ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (a68_is_deprefable (p)) ++ return a68_is_weakly_coercible (a68_depref_once (p), q, deflex); ++ else ++ return false; ++} ++ ++/* Whether there is a meek path from P to Q. */ ++ ++bool ++a68_is_meekly_coercible (MOID_T *p, MOID_T *q, int deflex) ++{ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (a68_is_deprefable (p)) ++ return a68_is_meekly_coercible (a68_depref_once (p), q, deflex); ++ else ++ return false; ++} ++ ++/* Whether there is a firm path from P to Q. */ ++ ++bool ++a68_is_firmly_coercible (MOID_T *p, MOID_T *q, int deflex) ++{ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (q == M_ROWS && a68_is_rows_type (p)) ++ return true; ++ else if (a68_is_unitable (p, q, deflex)) ++ return true; ++ else if (a68_is_deprefable (p)) ++ return a68_is_firmly_coercible (a68_depref_once (p), q, deflex); ++ else ++ return false; ++} ++ ++/* Whether firm. */ ++ ++bool ++a68_is_firm (MOID_T *p, MOID_T *q) ++{ ++ return (a68_is_firmly_coercible (p, q, SAFE_DEFLEXING) ++ || a68_is_firmly_coercible (q, p, SAFE_DEFLEXING)); ++} ++ ++/* Whether P widens to Q. ++ ++ This function returns: ++ ++ The destination mode Q if P, or ++ Some other mode which is an intermediate step from P to Q, or ++ NO_MOID if P cannot be widened to Q. ++ ++ This means that if P is known to widen to Q (a68_is_widenable (P,Q) return ++ true) this function can be invoked repeteadly and it will eventually return ++ Q. */ ++ ++MOID_T * ++a68_widens_to (MOID_T *p, MOID_T *q) ++{ ++ if (p == M_INT) ++ { ++ if (q == M_REAL || q == M_COMPLEX) ++ { ++ return M_REAL; ++ } ++ else ++ { ++ return NO_MOID; ++ } ++ } ++ else if (p == M_LONG_INT) ++ { ++ if (q == M_LONG_REAL) ++ { ++ return M_LONG_REAL; ++ } ++ else ++ { ++ return NO_MOID; ++ } ++ } ++ else if (p == M_LONG_LONG_INT) ++ { ++ if (q == M_LONG_LONG_REAL || q == M_LONG_LONG_COMPLEX) ++ return M_LONG_LONG_REAL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_REAL) ++ { ++ if (q == M_COMPLEX) ++ { ++ return M_COMPLEX; ++ } ++ else ++ { ++ return NO_MOID; ++ } ++ } ++ else if (p == M_LONG_REAL) ++ { ++ if (q == M_LONG_COMPLEX) ++ return M_LONG_COMPLEX; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_LONG_LONG_REAL) ++ { ++ if (q == M_LONG_LONG_COMPLEX) ++ return M_LONG_LONG_COMPLEX; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_BITS) ++ { ++ if (q == M_ROW_BOOL) ++ return M_ROW_BOOL; ++ else if (q == M_FLEX_ROW_BOOL) ++ return M_FLEX_ROW_BOOL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_SHORT_BITS) ++ { ++ if (q == M_ROW_BOOL) ++ return M_ROW_BOOL; ++ else if (q == M_FLEX_ROW_BOOL) ++ return M_FLEX_ROW_BOOL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_SHORT_SHORT_BITS) ++ { ++ if (q == M_ROW_BOOL) ++ return M_ROW_BOOL; ++ else if (q == M_FLEX_ROW_BOOL) ++ return M_FLEX_ROW_BOOL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_LONG_BITS) ++ { ++ if (q == M_ROW_BOOL) ++ return M_ROW_BOOL; ++ else if (q == M_FLEX_ROW_BOOL) ++ return M_FLEX_ROW_BOOL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_LONG_LONG_BITS) ++ { ++ if (q == M_ROW_BOOL) ++ return M_ROW_BOOL; ++ else if (q == M_FLEX_ROW_BOOL) ++ return M_FLEX_ROW_BOOL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_BYTES && q == M_ROW_CHAR) ++ return M_ROW_CHAR; ++ else if (p == M_LONG_BYTES && q == M_ROW_CHAR) ++ return M_ROW_CHAR; ++ else if (p == M_BYTES && q == M_FLEX_ROW_CHAR) ++ return M_FLEX_ROW_CHAR; ++ else if (p == M_LONG_BYTES && q == M_FLEX_ROW_CHAR) ++ return M_FLEX_ROW_CHAR; ++ else ++ return NO_MOID; ++} ++ ++/* Whether P widens to Q. */ ++ ++bool ++a68_is_widenable (MOID_T *p, MOID_T *q) ++{ ++ MOID_T *z = a68_widens_to (p, q); ++ ++ if (z != NO_MOID) ++ return (z == q ? true : a68_is_widenable (z, q)); ++ else ++ return false; ++} ++ ++/* Whether P is a REF ROW. */ ++ ++bool ++a68_is_ref_row (MOID_T *p) ++{ ++ return (NAME (p) != NO_MOID ? IS_ROW (DEFLEX (SUB (p))) : false); ++} ++ ++/* Whether strong name. */ ++ ++bool ++a68_is_strong_name (MOID_T *p, MOID_T *q) ++{ ++ if (p == q) ++ return true; ++ else if (a68_is_ref_row (q)) ++ return a68_is_strong_name (p, NAME (q)); ++ else ++ return false; ++} ++ ++/* Whether strong slice. */ ++ ++bool ++a68_is_strong_slice (MOID_T *p, MOID_T *q) ++{ ++ if (p == q || a68_is_widenable (p, q)) ++ return true; ++ else if (SLICE (q) != NO_MOID) ++ return a68_is_strong_slice (p, SLICE (q)); ++ else if (IS_FLEX (q)) ++ return a68_is_strong_slice (p, SUB (q)); ++ else if (a68_is_ref_row (q)) ++ return a68_is_strong_name (p, q); ++ else ++ return false; ++} ++ ++/* Whether strongly coercible. */ ++ ++bool ++a68_is_strongly_coercible (MOID_T *p, MOID_T *q, int deflex) ++{ ++ /* Keep this sequence of statements. */ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (q == M_VOID) ++ return true; ++ else if ((q == M_SIMPLIN || q == M_ROW_SIMPLIN) && a68_is_readable_mode (p)) ++ return true; ++ else if (q == M_ROWS && a68_is_rows_type (p)) ++ return true; ++ else if (a68_is_unitable (p, a68_derow (q), deflex)) ++ return true; ++ ++ if (a68_is_ref_row (q) && a68_is_strong_name (p, q)) ++ return true; ++ else if (SLICE (q) != NO_MOID && a68_is_strong_slice (p, q)) ++ return true; ++ else if (IS_FLEX (q) && a68_is_strong_slice (p, q)) ++ return true; ++ else if (a68_is_widenable (p, q)) ++ return true; ++ else if (a68_is_deprefable (p)) ++ return a68_is_strongly_coercible (a68_depref_once (p), q, deflex); ++ else if (q == M_SIMPLOUT || q == M_ROW_SIMPLOUT) ++ return a68_is_printable_mode (p); ++ else ++ return false; ++} ++ ++/* Basic coercions. */ ++ ++bool ++a68_basic_coercions (MOID_T *p, MOID_T *q, int c, int deflex) ++{ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (c == NO_SORT) ++ return (p == q); ++ else if (c == SOFT) ++ return a68_is_softly_coercible (p, q, deflex); ++ else if (c == WEAK) ++ return a68_is_weakly_coercible (p, q, deflex); ++ else if (c == MEEK) ++ return a68_is_meekly_coercible (p, q, deflex); ++ else if (c == FIRM) ++ return a68_is_firmly_coercible (p, q, deflex); ++ else if (c == STRONG) ++ return a68_is_strongly_coercible (p, q, deflex); ++ else ++ return false; ++} ++ ++/* Whether coercible stowed. */ ++ ++bool ++a68_is_coercible_stowed (MOID_T *p, MOID_T *q, int c, int deflex) ++{ ++ if (c != STRONG) ++ /* Such construct is always in a strong position, is it not? */ ++ return false; ++ else if (q == M_VOID) ++ return true; ++ else if (IS_FLEX (q)) ++ { ++ bool j = true; ++ ++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) ++ j &= a68_is_coercible (MOID (u), SLICE (SUB (q)), c, deflex); ++ return j; ++ } ++ else if (IS_ROW (q)) ++ { ++ bool j = true; ++ ++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) ++ j &= a68_is_coercible (MOID (u), SLICE (q), c, deflex); ++ return j; ++ } ++ else if (IS (q, PROC_SYMBOL) || IS (q, STRUCT_SYMBOL)) ++ { ++ if (DIM (p) != DIM (q)) ++ return false; ++ else ++ { ++ PACK_T *u = PACK (p), *v = PACK (q); ++ bool j = true; ++ ++ while (u != NO_PACK && v != NO_PACK && j) ++ { ++ j &= a68_is_coercible (MOID (u), MOID (v), c, deflex); ++ FORWARD (u); ++ FORWARD (v); ++ } ++ return j; ++ } ++ } ++ else ++ return false; ++} ++ ++/* Whether coercible series. */ ++ ++bool ++a68_is_coercible_series (MOID_T *p, MOID_T *q, int c, int deflex) ++{ ++ if (c == NO_SORT) ++ return false; ++ else if (p == NO_MOID || q == NO_MOID) ++ return false; ++ else if (IS (p, SERIES_MODE) && PACK (p) == NO_PACK) ++ return false; ++ else if (IS (q, SERIES_MODE) && PACK (q) == NO_PACK) ++ return false; ++ else if (PACK (p) == NO_PACK) ++ return a68_is_coercible (p, q, c, deflex); ++ else ++ { ++ bool j = true; ++ ++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) ++ { ++ if (MOID (u) != NO_MOID) ++ j &= a68_is_coercible (MOID (u), q, c, deflex); ++ } ++ return j; ++ } ++} ++ ++/* Whether P can be coerced to Q in a C context. ++ ++ If P is a STOWED modes serie (A, B, ...) and Q is a routine mode like `proc ++ (X, Y, ...)' then this routine determines whether A can be coerced to X, B ++ to Y, etc. */ ++ ++bool ++a68_is_coercible (MOID_T *p, MOID_T *q, int c, int deflex) ++{ ++ if (a68_is_mode_isnt_well (p) || a68_is_mode_isnt_well (q)) ++ return true; ++ else if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (p == M_HIP) ++ return true; ++ else if (IS (p, STOWED_MODE)) ++ return a68_is_coercible_stowed (p, q, c, deflex); ++ else if (IS (p, SERIES_MODE)) ++ return a68_is_coercible_series (p, q, c, deflex); ++ else if (p == M_VACUUM && IS_ROW (DEFLEX (q))) ++ return true; ++ else ++ return a68_basic_coercions (p, q, c, deflex); ++} ++ ++/* Whether coercible in context. */ ++ ++bool ++a68_is_coercible_in_context (SOID_T *p, SOID_T *q, int deflex) ++{ ++ if (SORT (p) != SORT (q)) ++ return false; ++ else if (MOID (p) == MOID (q)) ++ return true; ++ else ++ return a68_is_coercible (MOID (p), MOID (q), SORT (q), deflex); ++} ++ ++/* Whether list Y is balanced. */ ++ ++bool ++a68_is_balanced (NODE_T *n, SOID_T *y, int sort) ++{ ++ if (sort == STRONG) ++ return true; ++ else ++ { ++ bool k = false; ++ ++ for (; y != NO_SOID && !k; FORWARD (y)) ++ k = (!IS (MOID (y), STOWED_MODE)); ++ ++ if (k == false) ++ a68_error (n, "construct has no unique mode"); ++ return k; ++ } ++} ++ ++/* A moid from M to which all other members can be coerced. ++ If no fulcrum of the balance is found, return NO_MOID. */ ++ ++MOID_T * ++a68_get_balanced_mode_or_no_mode (MOID_T *m, int sort, bool return_depreffed, int deflex) ++{ ++ MOID_T *common_moid = NO_MOID; ++ ++ if (m != NO_MOID && !a68_is_mode_isnt_well (m) && IS (m, UNION_SYMBOL)) ++ { ++ int depref_level; ++ bool siga = true; ++ /* Test for increasing depreffing. */ ++ for (depref_level = 0; siga; depref_level++) ++ { ++ siga = false; ++ /* Test the whole pack. */ ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ { ++ /* HIPs are not eligible of course. */ ++ if (MOID (p) != M_HIP) ++ { ++ MOID_T *candidate = MOID (p); ++ int k; ++ /* Depref as far as allowed. */ ++ for (k = depref_level; k > 0 && a68_is_deprefable (candidate); k--) ++ candidate = a68_depref_once (candidate); ++ /* Only need testing if all allowed deprefs succeeded. */ ++ if (k == 0) ++ { ++ MOID_T *to = (return_depreffed ? a68_depref_completely (candidate) : candidate); ++ bool all_coercible = true; ++ ++ siga = true; ++ for (PACK_T *q = PACK (m); q != NO_PACK && all_coercible; FORWARD (q)) ++ { ++ MOID_T *from = MOID (q); ++ if (p != q && from != to) ++ all_coercible &= a68_is_coercible (from, to, sort, deflex); ++ } ++ /* If the pack is coercible to the candidate, we mark the ++ candidate. We continue searching for longest series ++ of REF REF PROC REF. */ ++ if (all_coercible) ++ { ++ MOID_T *mark = (return_depreffed ? MOID (p) : candidate); ++ ++ if (common_moid == NO_MOID) ++ common_moid = mark; ++ else if (IS_FLEX (candidate) && DEFLEX (candidate) == common_moid) ++ /* We prefer FLEX. */ ++ common_moid = mark; ++ } ++ } ++ } ++ } ++ } ++ } ++ ++ return common_moid; ++} ++ ++/* A moid from M to which all other members can be coerced. ++ If no fulcrum of the balance is found, return M. */ ++ ++MOID_T * ++a68_get_balanced_mode (MOID_T *m, int sort, bool return_depreffed, int deflex) ++{ ++ MOID_T *common_moid ++ = a68_get_balanced_mode_or_no_mode (m, sort, return_depreffed, deflex); ++ return common_moid == NO_MOID ? m : common_moid; ++} ++ ++/* Whether we can search a common mode from a clause or not. */ ++ ++bool ++a68_clause_allows_balancing (int att) ++{ ++ switch (att) ++ { ++ case CLOSED_CLAUSE: ++ case CONDITIONAL_CLAUSE: ++ case CASE_CLAUSE: ++ case SERIAL_CLAUSE: ++ case CONFORMITY_CLAUSE: ++ return true; ++ } ++ return false; ++} ++ ++/* A unique mode from Z. */ ++ ++MOID_T * ++a68_determine_unique_mode (SOID_T *z, int deflex) ++{ ++ if (z == NO_SOID) ++ return NO_MOID; ++ else ++ { ++ MOID_T *x = MOID (z); ++ ++ if (a68_is_mode_isnt_well (x)) ++ return M_ERROR; ++ ++ /* If X is a series containing one union, a68_make_united_mode will ++ return that union (because 'union (union (...))' is the same than ++ 'union (...)') and then a68_get_balanced_mode below will try to ++ balance the modes in that union. Not what we want. */ ++ if (ATTRIBUTE (x) == SERIES_MODE ++ && DIM (x) == 1 ++ && IS (MOID (PACK (x)), UNION_SYMBOL)) ++ return MOID (PACK (x)); ++ ++ x = a68_make_united_mode (x); ++ if (a68_clause_allows_balancing (ATTRIBUTE (z))) ++ return a68_get_balanced_mode (x, STRONG, A68_NO_DEPREF, deflex); ++ else ++ return x; ++ } ++} ++ ++/* Insert coercion A in the tree. */ ++ ++void ++a68_make_coercion (NODE_T *l, enum a68_attribute a, MOID_T *m) ++{ ++ a68_make_sub (l, l, a); ++ MOID (l) = a68_depref_rows (MOID (l), m); ++} ++ ++/* Make widening coercion. */ ++ ++static void ++make_widening_coercion (NODE_T *n, MOID_T *p, MOID_T *q) ++{ ++ MOID_T *z = a68_widens_to (p, q); ++ ++ a68_make_coercion (n, WIDENING, z); ++ if (z != q) ++ make_widening_coercion (n, z, q); ++} ++ ++/* Make ref rowing coercion. */ ++ ++void ++a68_make_ref_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q) ++{ ++ if (DEFLEX (p) != DEFLEX (q)) ++ { ++ if (a68_is_widenable (p, q)) ++ make_widening_coercion (n, p, q); ++ else if (a68_is_ref_row (q)) ++ { ++ a68_make_ref_rowing_coercion (n, p, NAME (q)); ++ a68_make_coercion (n, ROWING, q); ++ } ++ } ++} ++ ++/* Make rowing coercion. */ ++ ++void ++a68_make_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q) ++{ ++ if (DEFLEX (p) != DEFLEX (q)) ++ { ++ if (a68_is_widenable (p, q)) ++ make_widening_coercion (n, p, q); ++ else if (SLICE (q) != NO_MOID) ++ { ++ a68_make_rowing_coercion (n, p, SLICE (q)); ++ a68_make_coercion (n, ROWING, q); ++ } ++ else if (IS_FLEX (q)) ++ a68_make_rowing_coercion (n, p, SUB (q)); ++ else if (a68_is_ref_row (q)) ++ a68_make_ref_rowing_coercion (n, p, q); ++ } ++} ++ ++/* Make uniting coercion. */ ++ ++void ++a68_make_uniting_coercion (NODE_T *n, MOID_T *q) ++{ ++ a68_make_coercion (n, UNITING, a68_derow (q)); ++ if (IS_ROW (q) || IS_FLEX (q)) ++ a68_make_rowing_coercion (n, a68_derow (q), q); ++} ++ ++/* Make depreffing coercion to coerce node N from mode P to mode Q in a strong ++ context. */ ++ ++void ++a68_make_depreffing_coercion (NODE_T *n, MOID_T *p, MOID_T *q) ++{ ++ if (DEFLEX (p) == DEFLEX (q)) ++ return; ++ else if (q == M_SIMPLOUT && a68_is_printable_mode (p)) ++ a68_make_coercion (n, UNITING, q); ++ else if (q == M_ROW_SIMPLOUT && a68_is_printable_mode (p)) ++ { ++ a68_make_coercion (n, UNITING, M_SIMPLOUT); ++ a68_make_coercion (n, ROWING, M_ROW_SIMPLOUT); ++ } ++ else if (q == M_SIMPLIN && a68_is_readable_mode (p)) ++ a68_make_coercion (n, UNITING, q); ++ else if (q == M_ROW_SIMPLIN && a68_is_readable_mode (p)) ++ { ++ a68_make_coercion (n, UNITING, M_SIMPLIN); ++ a68_make_coercion (n, ROWING, M_ROW_SIMPLIN); ++ } ++ else if (q == M_ROWS && a68_is_rows_type (p)) ++ { ++ a68_make_coercion (n, UNITING, M_ROWS); ++ MOID (n) = M_ROWS; ++ } ++ else if (a68_is_widenable (p, q)) ++ make_widening_coercion (n, p, q); ++ else if (a68_is_unitable (p, a68_derow (q), SAFE_DEFLEXING)) ++ a68_make_uniting_coercion (n, q); ++ else if (a68_is_ref_row (q) && a68_is_strong_name (p, q)) ++ a68_make_ref_rowing_coercion (n, p, q); ++ else if (SLICE (q) != NO_MOID && a68_is_strong_slice (p, q)) ++ a68_make_rowing_coercion (n, p, q); ++ else if (IS_FLEX (q) && a68_is_strong_slice (p, q)) ++ a68_make_rowing_coercion (n, p, q); ++ else if (IS_REF (p)) ++ { ++ MOID_T *r = a68_depref_once (p); ++ a68_make_coercion (n, DEREFERENCING, r); ++ a68_make_depreffing_coercion (n, r, q); ++ } ++ else if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) ++ { ++ MOID_T *r = SUB (p); ++ ++ a68_make_coercion (n, DEPROCEDURING, r); ++ a68_make_depreffing_coercion (n, r, q); ++ } ++ else if (p != q) ++ a68_cannot_coerce (n, p, q, NO_SORT, SKIP_DEFLEXING, 0); ++} ++ ++/* Whether p is a nonproc mode (that is voided directly). */ ++ ++bool ++a68_is_nonproc (MOID_T *p) ++{ ++ if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) ++ return false; ++ else if (IS_REF (p)) ++ return a68_is_nonproc (SUB (p)); ++ else ++ return true; ++} ++ ++/* Voiden in an appropriate way. */ ++ ++void ++a68_make_void (NODE_T *p, MOID_T *q) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case ASSIGNATION: ++ case IDENTITY_RELATION: ++ case GENERATOR: ++ case CAST: ++ case DENOTATION: ++ a68_make_coercion (p, VOIDING, M_VOID); ++ return; ++ default: ++ break; ++ } ++ ++ /* MORFs are an involved case. */ ++ switch (ATTRIBUTE (p)) ++ { ++ case SELECTION: ++ case SLICE: ++ case ROUTINE_TEXT: ++ case FORMULA: ++ case CALL: ++ case IDENTIFIER: ++ /* A nonproc moid value is eliminated directly. */ ++ if (a68_is_nonproc (q)) ++ { ++ a68_make_coercion (p, VOIDING, M_VOID); ++ return; ++ } ++ else ++ { ++ /* Descend the chain of e.g. REF PROC .. until a nonproc moid ++ remains. */ ++ MOID_T *z = q; ++ ++ while (!a68_is_nonproc (z)) ++ { ++ if (IS_REF (z)) ++ a68_make_coercion (p, DEREFERENCING, SUB (z)); ++ if (IS (z, PROC_SYMBOL) && NODE_PACK (p) == NO_PACK) ++ a68_make_coercion (p, DEPROCEDURING, SUB (z)); ++ z = SUB (z); ++ } ++ if (z != M_VOID) ++ a68_make_coercion (p, VOIDING, M_VOID); ++ return; ++ } ++ default: ++ break; ++ } ++ ++ /* All other is voided straight away. */ ++ a68_make_coercion (p, VOIDING, M_VOID); ++} ++ ++/* Make strong coercion of node N from mode P to mode Q. */ ++ ++void ++a68_make_strong (NODE_T *n, MOID_T *p, MOID_T *q) ++{ ++ if (q == M_VOID && p != M_VOID) ++ a68_make_void (n, p); ++ else ++ a68_make_depreffing_coercion (n, p, q); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-moids-to-string.cc +@@ -0,0 +1,417 @@ ++/* Pretty-print a MOID. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* ++ * A pretty printer for moids. ++ * ++ * For example "PROC (REF STRUCT (REF SELF, UNION (INT, VOID))) REF SELF" ++ * for a procedure yielding a pointer to an object of its own mode. ++ */ ++ ++static void moid_to_string_2 (char *, MOID_T *, size_t *, NODE_T *, ++ bool indicant_value); ++ ++/* Add string to MOID text. */ ++ ++static void ++add_to_moid_text (char *dst, const char *str, size_t *w) ++{ ++ a68_bufcat (dst, str, BUFFER_SIZE); ++ (*w) -= strlen (str); ++} ++ ++/* Find a tag, searching symbol tables towards the root. */ ++ ++static TAG_T * ++find_indicant_global (TABLE_T * table, MOID_T * mode) ++{ ++ if (table != NO_TABLE) ++ { ++ for (TAG_T *s = INDICANTS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (MOID (s) == mode) ++ return s; ++ } ++ return find_indicant_global (PREVIOUS (table), mode); ++ } ++ else ++ return NO_TAG; ++} ++ ++/* Pack to string. */ ++ ++static void ++pack_to_string (char *b, PACK_T *p, size_t *w, bool text, NODE_T *idf, ++ bool indicant_value) ++{ ++ for (; p != NO_PACK; FORWARD (p)) ++ { ++ moid_to_string_2 (b, MOID (p), w, idf, indicant_value); ++ if (text) ++ { ++ if (TEXT (p) != NO_TEXT) ++ { ++ add_to_moid_text (b, " ", w); ++ add_to_moid_text (b, TEXT (p), w); ++ } ++ } ++ if (p != NO_PACK && NEXT (p) != NO_PACK) ++ add_to_moid_text (b, ", ", w); ++ } ++} ++ ++/* Moid to string 2. */ ++ ++static void moid_to_string_2 (char *b, MOID_T *n, size_t *w, NODE_T *idf, ++ bool indicant_value) ++{ ++ bool supper_stropping = (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING); ++ const char *strop_self = supper_stropping ? "self" : "SELF"; ++ const char *strop_hip = supper_stropping ? "hip" : "HIP"; ++ const char *strop_compl = supper_stropping ? "compl" : "COMPL"; ++ const char *strop_long_compl = supper_stropping ? "long compl" : "LONG COMPL"; ++ const char *strop_long_long_compl = supper_stropping ? "long long compl" : "LONG LONG COMPL"; ++ const char *strop_string = supper_stropping ? "string" : "STRING"; ++ const char *strop_collitem = supper_stropping ? "collitem" : "COLLITEM"; ++ const char *strop_simplin = supper_stropping ? "%%" : "%%"; ++ const char *strop_simplout = supper_stropping ? "%%" : "%%"; ++ const char *strop_rows = supper_stropping ? "%%" : "%%"; ++ const char *strop_vacuum = supper_stropping ? "%%" : "%%"; ++ const char *strop_long = supper_stropping ? "long" : "LONG"; ++ const char *strop_short = supper_stropping ? "short" : "SHORT"; ++ const char *strop_ref = supper_stropping ? "ref" : "REF"; ++ const char *strop_flex = supper_stropping ? "flex" : "FLEX"; ++ const char *strop_struct = supper_stropping ? "struct" : "STRUCT"; ++ const char *strop_union = supper_stropping ? "union" : "UNION"; ++ const char *strop_proc = supper_stropping ? "proc" : "PROC"; ++ ++ if (n == NO_MOID) ++ { ++ /* Oops. Should not happen. */ ++ add_to_moid_text (b, "null", w);; ++ return; ++ } ++ ++ /* Reference to self through REF or PROC. */ ++ if (a68_is_postulated (A68 (postulates), n)) ++ { ++ add_to_moid_text (b, strop_self, w); ++ return; ++ } ++ ++ /* If declared by a mode-declaration, present the indicant. */ ++ if (idf != NO_NODE && !IS (n, STANDARD)) ++ { ++ TAG_T *indy = find_indicant_global (TABLE (idf), n); ++ ++ if (indy != NO_TAG) ++ { ++ add_to_moid_text (b, NSYMBOL (NODE (indy)), w); ++ if (!indicant_value) ++ return; ++ else ++ add_to_moid_text (b, " = ", w); ++ } ++ } ++ ++ /* Write the standard modes. */ ++ if (n == M_HIP) ++ add_to_moid_text (b, strop_hip, w); ++ else if (n == M_ERROR) ++ add_to_moid_text (b, "ERROR", w); ++ else if (n == M_UNDEFINED) ++ add_to_moid_text (b, "unresolved mode", w); ++ else if (n == M_C_STRING) ++ add_to_moid_text (b, "C-STRING", w); ++ else if (n == M_COMPLEX) ++ add_to_moid_text (b, strop_compl, w); ++ else if (n == M_LONG_COMPLEX) ++ add_to_moid_text (b, strop_long_compl, w); ++ else if (n == M_LONG_LONG_COMPLEX) ++ add_to_moid_text (b, strop_long_long_compl, w); ++ else if (n == M_STRING) ++ add_to_moid_text (b, strop_string, w); ++ else if (n == M_COLLITEM) ++ add_to_moid_text (b, strop_collitem, w); ++ else if (IS (n, IN_TYPE_MODE)) ++ add_to_moid_text (b, strop_simplin, w); ++ else if (IS (n, OUT_TYPE_MODE)) ++ add_to_moid_text (b, strop_simplout, w); ++ else if (IS (n, ROWS_SYMBOL)) ++ add_to_moid_text (b, strop_rows, w); ++ else if (n == M_VACUUM) ++ add_to_moid_text (b, strop_vacuum, w); ++ else if (IS (n, VOID_SYMBOL) || IS (n, STANDARD) || IS (n, INDICANT)) ++ { ++ if (DIM (n) > 0) ++ { ++ size_t k = DIM (n); ++ ++ if ((*w) >= k * strlen ("LONG ") + strlen (NSYMBOL (NODE (n)))) ++ { ++ while (k--) ++ { ++ add_to_moid_text (b, strop_long, w); ++ add_to_moid_text (b, " ", w); ++ } ++ ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (NODE (n))); ++ add_to_moid_text (b, strop_symbol, w); ++ } ++ else ++ add_to_moid_text (b, "..", w); ++ } ++ else if (DIM (n) < 0) ++ { ++ size_t k = -DIM (n); ++ ++ if ((*w) >= k * strlen ("SHORT ") + strlen (NSYMBOL (NODE (n)))) ++ { ++ while (k--) ++ { ++ add_to_moid_text (b, strop_short, w); ++ add_to_moid_text (b, " ", w); ++ } ++ ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (NODE (n))); ++ add_to_moid_text (b, strop_symbol, w); ++ } ++ else ++ add_to_moid_text (b, "..", w); ++ } ++ else if (DIM (n) == 0) ++ { ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (NODE (n))); ++ add_to_moid_text (b, strop_symbol, w); ++ } ++ ++ /* Write compxounded modes. */ ++ } ++ else if (IS_REF (n)) ++ { ++ if ((*w) >= strlen ("REF ..")) ++ { ++ add_to_moid_text (b, strop_ref, w); ++ add_to_moid_text (b, " ", w); ++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); ++ } ++ else ++ { ++ add_to_moid_text (b, strop_ref, w); ++ add_to_moid_text (b, " ..", w); ++ } ++ } ++ else if (IS_FLEX (n)) ++ { ++ if ((*w) >= strlen ("FLEX ..")) ++ { ++ add_to_moid_text (b, strop_flex, w); ++ add_to_moid_text (b, " ", w); ++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); ++ } ++ else ++ { ++ add_to_moid_text (b, strop_flex, w); ++ add_to_moid_text (b, " ..", w); ++ } ++ } ++ else if (IS_ROW (n)) ++ { ++ size_t j = strlen ("[] ..") + (DIM (n) - 1) * strlen (","); ++ ++ if ((*w) >= j) ++ { ++ size_t k = DIM (n) - 1; ++ add_to_moid_text (b, "[", w); ++ while (k-- > 0) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, "] ", w); ++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); ++ } ++ else if (DIM (n) == 1) ++ { ++ add_to_moid_text (b, "[] ..", w); ++ } ++ else ++ { ++ size_t k = DIM (n); ++ add_to_moid_text (b, "[", w); ++ while (k--) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, "] ..", w); ++ } ++ } ++ else if (IS_STRUCT (n)) ++ { ++ size_t j = (strlen ("STRUCT ()") + (DIM (n) - 1) ++ * strlen (".., ") + strlen ("..")); ++ ++ if ((*w) >= j) ++ { ++ POSTULATE_T *save = A68 (postulates); ++ a68_make_postulate (&A68 (postulates), n, NO_MOID); ++ add_to_moid_text (b, strop_struct, w); ++ add_to_moid_text (b, " (", w); ++ pack_to_string (b, PACK (n), w, true, idf, indicant_value); ++ add_to_moid_text (b, ")", w); ++ a68_free_postulate_list (A68 (postulates), save); ++ A68 (postulates) = save; ++ } ++ else ++ { ++ size_t k = DIM (n); ++ add_to_moid_text (b, strop_struct, w); ++ add_to_moid_text (b, " (", w); ++ while (k-- > 0) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, ")", w); ++ } ++ } ++ else if (IS_UNION (n)) ++ { ++ size_t j = (strlen ("UNION ()") + (DIM (n) - 1) ++ * strlen (".., ") + strlen ("..")); ++ ++ if ((*w) >= j) ++ { ++ POSTULATE_T *save = A68 (postulates); ++ a68_make_postulate (&A68 (postulates), n, NO_MOID); ++ add_to_moid_text (b, strop_union, w); ++ add_to_moid_text (b, " (", w); ++ pack_to_string (b, PACK (n), w, false, idf, indicant_value); ++ add_to_moid_text (b, ")", w); ++ a68_free_postulate_list (A68 (postulates), save); ++ A68 (postulates) = save; ++ } ++ else ++ { ++ size_t k = DIM (n); ++ add_to_moid_text (b, strop_union, w); ++ add_to_moid_text (b, " (", w); ++ while (k-- > 0) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, ")", w); ++ } ++ } ++ else if (IS (n, PROC_SYMBOL) && DIM (n) == 0) ++ { ++ if ((*w) >= strlen ("PROC ..")) ++ { ++ add_to_moid_text (b, strop_proc, w); ++ add_to_moid_text (b, " ", w); ++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); ++ } ++ else ++ { ++ add_to_moid_text (b, strop_proc, w); ++ add_to_moid_text (b, " ..", w); ++ } ++ } ++ else if (IS (n, PROC_SYMBOL) && DIM (n) > 0) ++ { ++ size_t j = (strlen ("PROC () ..") + (DIM (n) - 1) ++ * strlen (".., ") + strlen ("..")); ++ ++ if ((*w) >= j) ++ { ++ POSTULATE_T *save = A68 (postulates); ++ a68_make_postulate (&A68 (postulates), n, NO_MOID); ++ add_to_moid_text (b, strop_proc, w); ++ add_to_moid_text (b, " (", w); ++ pack_to_string (b, PACK (n), w, false, idf, indicant_value); ++ add_to_moid_text (b, ") ", w); ++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); ++ a68_free_postulate_list (A68 (postulates), save); ++ A68 (postulates) = save; ++ } ++ else ++ { ++ size_t k = DIM (n); ++ ++ add_to_moid_text (b, strop_proc, w); ++ add_to_moid_text (b, " (", w); ++ while (k-- > 0) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, ") ..", w); ++ } ++ } ++ else if (IS (n, SERIES_MODE) || IS (n, STOWED_MODE)) ++ { ++ size_t j = (strlen ("()") + (DIM (n) - 1) ++ * strlen (".., ") + strlen ("..")); ++ ++ if ((*w) >= j) ++ { ++ add_to_moid_text (b, "(", w); ++ pack_to_string (b, PACK (n), w, false, idf, indicant_value); ++ add_to_moid_text (b, ")", w); ++ } ++ else ++ { ++ size_t k = DIM (n); ++ ++ add_to_moid_text (b, "(", w); ++ while (k-- > 0) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, ")", w); ++ } ++ } ++ else ++ { ++ char str[SMALL_BUFFER_SIZE]; ++ if (snprintf (str, (size_t) SMALL_BUFFER_SIZE, "\\%d", ATTRIBUTE (n)) < 0) ++ gcc_unreachable (); ++ add_to_moid_text (b, str, w); ++ } ++} ++ ++/* Pretty-formatted mode N; W is a measure of width. */ ++ ++const char * ++a68_moid_to_string (MOID_T *n, size_t w, NODE_T *idf, bool indicant_value) ++{ ++#define MAX_MTS 8 ++ /* We use a static buffer of MAX_MTS strings. This value 8 should be safe. ++ No more than MAX_MTS calls can be pending in for instance printf. Instead ++ we could allocate each string on the heap but that leaks memory. */ ++ static int mts_buff_ptr = 0; ++ static char mts_buff[8][BUFFER_SIZE]; ++ char *a = &(mts_buff[mts_buff_ptr][0]); ++ mts_buff_ptr++; ++ if (mts_buff_ptr >= MAX_MTS) ++ mts_buff_ptr = 0; ++ a[0] = '\0'; ++ if (w >= BUFFER_SIZE) ++ w = BUFFER_SIZE - 1; ++ A68 (postulates) = NO_POSTULATE; ++ if (n != NO_MOID) ++ moid_to_string_2 (a, n, &w, idf, indicant_value); ++ else ++ a68_bufcat (a, "null", BUFFER_SIZE); ++ return a; ++#undef MAX_MTS ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-attrs.def +@@ -0,0 +1,387 @@ ++/* This file contains the definitions and documentation for all the different ++ kind/attributes of Algol 68 parse tree nodes. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ You should have received a copy of the GNU General Public License along with ++ GCC; see the file COPYING3. If not see . */ ++ ++/* Please keep the entries in this file sorted alphabetically. */ ++ ++/* Note that the textual descriptions for the nodes are used in diagnostic ++ messages and debug dumps. Please make sure to write them in a way you would ++ expect to be used in statements like "[...] near ATT". */ ++ ++A68_ATTR(A68_PATTERN, "transput pattern") ++A68_ATTR(ACCESS_CLAUSE, "access clause") ++A68_ATTR(ACCESS_SYMBOL, "access-symbol") ++A68_ATTR(ACTUAL_DECLARER_MARK, "actual declarer mark") ++A68_ATTR(ALT_ACCESS_SYMBOL, "alt-access-symbol") ++A68_ATTR(ALT_DO_PART, "alt do part") ++A68_ATTR(ALT_DO_SYMBOL, "alt do symbol") ++A68_ATTR(ALT_EQUALS_SYMBOL, "alt equals symbol") ++A68_ATTR(ALT_FORMAL_BOUNDS_LIST, "alt formal bounds list") ++A68_ATTR(ANDF_SYMBOL, "andf symbol") ++A68_ATTR(AND_FUNCTION, "andf pseudo-operator") ++A68_ATTR(ANONYMOUS, "anonymous") ++A68_ATTR(ARGUMENT, "argument") ++A68_ATTR(ARGUMENT_LIST, "argument list") ++A68_ATTR(ASSERTION, "assertion") ++A68_ATTR(ASSERT_SYMBOL, "assert symbol") ++A68_ATTR(ASSIGNATION, "assignation") ++A68_ATTR(ASSIGN_SYMBOL, "assignation symbol") ++A68_ATTR(ASSIGN_TO_SYMBOL, "assign-to symbol") ++A68_ATTR(AT_SYMBOL, "at symbol") ++A68_ATTR(BEGIN_SYMBOL, "begin symbol") ++A68_ATTR(BITS_C_PATTERN, "bits-c-pattern") ++A68_ATTR(BITS_DENOTATION, "bits-denotation") ++A68_ATTR(BITS_PATTERN, "bits pattern") ++A68_ATTR(BITS_SYMBOL, "bits-symbol") ++A68_ATTR(BOLD_COMMENT_SYMBOL, "comment delimiter") ++A68_ATTR(BOLD_COMMENT_BEGIN_SYMBOL, "comment opening delimiter") ++A68_ATTR(BOLD_COMMENT_END_SYMBOL, "comment closing delimiter") ++A68_ATTR(BOLD_PRAGMAT_SYMBOL, "pragmat-symbol") ++A68_ATTR(BOLD_TAG, "bold tag") ++A68_ATTR(BOOLEAN_PATTERN, "boolean pattern") ++A68_ATTR(BOOL_SYMBOL, "bool-symbol") ++A68_ATTR(BOUND, "actual declarer bound") ++A68_ATTR(BOUNDS, "actual declarer bounds") ++A68_ATTR(BOUNDS_LIST, "actual declarer bounds list") ++A68_ATTR(BRIEF_COMMENT_BEGIN_SYMBOL, "comment opening delimiter") ++A68_ATTR(BRIEF_COMMENT_END_SYMBOL, "comment closing delimiter") ++A68_ATTR(BRIEF_OUSE_PART, "ouse-part") ++A68_ATTR(BRIEF_CONFORMITY_OUSE_PART, "ouse-part") ++A68_ATTR(BRIEF_ELIF_PART, "elif-part") ++A68_ATTR(BRIEF_OPERATOR_DECLARATION, "operator declaration") ++A68_ATTR(BUS_SYMBOL, "bus-symbol") ++A68_ATTR(BYTES_SYMBOL, "bytes-symbol") ++A68_ATTR(BY_PART, "by-part") ++A68_ATTR(BY_SYMBOL, "by-symbol") ++A68_ATTR(CALL, "call") ++A68_ATTR(CASE_CHOICE_CLAUSE, "case choice clause") ++A68_ATTR(CASE_CLAUSE, "case clause") ++A68_ATTR(CASE_IN_PART, "case-in-part") ++A68_ATTR(CASE_OUSE_PART, "case-ouse-part") ++A68_ATTR(CASE_PART, "case-part") ++A68_ATTR(CASE_SYMBOL, "case-symbol") ++A68_ATTR(CAST, "cast") ++A68_ATTR(CHANNEL_SYMBOL, "channel-symbol") ++A68_ATTR(CHAR_C_PATTERN, "char C-like pattern") ++A68_ATTR(CHAR_SYMBOL, "char-symbol") ++A68_ATTR(CHOICE, "choice") ++A68_ATTR(CHOICE_PATTERN, "choice pattern") ++A68_ATTR(CLOSED_CLAUSE, "closed clause") ++A68_ATTR(CLOSE_SYMBOL, "close symbol") ++A68_ATTR(COLLATERAL_CLAUSE, "collateral clause") ++A68_ATTR(COLLECTION, "collection") ++A68_ATTR(COLON_SYMBOL, "colon-symbol") ++A68_ATTR(COMMA_SYMBOL, "comma-symbol") ++A68_ATTR(COMPLEX_PATTERN, "complex pattern") ++A68_ATTR(COMPLEX_SYMBOL, "complex-symbol") ++A68_ATTR(COMPL_SYMBOL, "compl-symbol") ++A68_ATTR(CONDITIONAL_CLAUSE, "conditional clause") ++A68_ATTR(CONFORMITY_CHOICE, "conformity clause choice") ++A68_ATTR(CONFORMITY_CLAUSE, "conformity clause") ++A68_ATTR(CONFORMITY_IN_PART, "conformity clause in-part") ++A68_ATTR(CONFORMITY_OUSE_PART, "conformity clause ouse-part") ++A68_ATTR(CONSTRUCT, "construct") ++A68_ATTR(DECLARATION_LIST, "list of declarations") ++A68_ATTR(DECLARER, "declarer") ++A68_ATTR(DEF_PART, "def-part") ++A68_ATTR(DEF_SYMBOL, "def-symbol") ++A68_ATTR(DEFINING_IDENTIFIER, "defining identifier") ++A68_ATTR(DEFINING_INDICANT, "defining mode") ++A68_ATTR(DEFINING_OPERATOR, "defining operator") ++A68_ATTR(DEFINING_MODULE_INDICANT, "defining module indicant") ++A68_ATTR(DENOTATION, "denotation") ++A68_ATTR(DEPROCEDURING, "deproceduring coercion") ++A68_ATTR(DEREFERENCING, "dereferencing coercion") ++A68_ATTR(DO_PART, "do-part") ++A68_ATTR(DO_SYMBOL, "do-symbol") ++A68_ATTR(DYNAMIC_REPLICATOR, "format dynamic replicator") ++A68_ATTR(EGG_SYMBOL, "egg-symbol") ++A68_ATTR(ELIF_IF_PART, "elif if-part") ++A68_ATTR(ELIF_PART, "elif-part") ++A68_ATTR(ELIF_SYMBOL, "elif-symbol") ++A68_ATTR(ELSE_BAR_SYMBOL, "else-bar-symbol") ++A68_ATTR(ELSE_OPEN_PART, "else-open-part") ++A68_ATTR(ELSE_PART, "else-part") ++A68_ATTR(ELSE_SYMBOL, "else-symbol") ++A68_ATTR(EMPTY_SYMBOL, "empty-symbol") ++A68_ATTR(ENCLOSED_CLAUSE, "enclosed clause") ++A68_ATTR(END_SYMBOL, "end-symbol") ++A68_ATTR(ENQUIRY_CLAUSE, "enquiry clause") ++A68_ATTR(EQUALS_SYMBOL, "equals-symbol") ++A68_ATTR(ERROR, "error node") ++A68_ATTR(ERROR_IDENTIFIER, "error-identifier") ++A68_ATTR(ESAC_SYMBOL, "esac-symbol") ++A68_ATTR(EXIT_SYMBOL, "exit-symbol") ++A68_ATTR(EXPONENT_FRAME, "exponent-frame") ++A68_ATTR(FALSE_SYMBOL, "false-symbol") ++A68_ATTR(FED_SYMBOL, "fed-symbol") ++A68_ATTR(FIELD, "struct field") ++A68_ATTR(FIELD_IDENTIFIER, "field-identifier") ++A68_ATTR(FILE_SYMBOL, "file-symbol") ++A68_ATTR(FIRM, "firm context") ++A68_ATTR(FIXED_C_PATTERN, "fixed-c-pattern") ++A68_ATTR(FI_SYMBOL, "fi-symbol") ++A68_ATTR(FLEX_SYMBOL, "flex-symbol") ++A68_ATTR(FLOAT_C_PATTERN, "float C format pattern") ++A68_ATTR(FORMAL_BOUNDS, "formal declarer bounds") ++A68_ATTR(FORMAL_BOUNDS_LIST, "list of formal declarer bounds") ++A68_ATTR(FORMAL_DECLARERS, "formal declarers") ++A68_ATTR(FORMAL_DECLARERS_LIST, "list of formal declarers") ++A68_ATTR(FORMAL_DECLARER_MARK, "formal declarer mark") ++A68_ATTR(FORMAL_NEST_SYMBOL, "formal-nest-symbol") ++A68_ATTR(FORMULA, "formula") ++A68_ATTR(FOR_PART, "for-part") ++A68_ATTR(FOR_SYMBOL, "for-symbol") ++A68_ATTR(FORMAT_CLOSE_SYMBOL, "format-close-symbol") ++A68_ATTR(FORMAT_DELIMITER_SYMBOL, "format-delimiter-symbol") ++A68_ATTR(FORMAT_IDENTIFIER, "format identifier") ++A68_ATTR(FORMAT_A_FRAME, "format A-frame") ++A68_ATTR(FORMAT_D_FRAME, "format D-frame") ++A68_ATTR(FORMAT_E_FRAME, "format E-frame") ++A68_ATTR(FORMAT_I_FRAME, "format I-frame") ++A68_ATTR(FORMAT_ITEM_A, "format item-A") ++A68_ATTR(FORMAT_ITEM_B, "format item-B") ++A68_ATTR(FORMAT_ITEM_C, "format item-C") ++A68_ATTR(FORMAT_ITEM_D, "format item-D") ++A68_ATTR(FORMAT_ITEM_E, "format item-E") ++A68_ATTR(FORMAT_ITEM_F, "format item-F") ++A68_ATTR(FORMAT_ITEM_G, "format item-G") ++A68_ATTR(FORMAT_ITEM_H, "format item-H") ++A68_ATTR(FORMAT_ITEM_I, "format item-I") ++A68_ATTR(FORMAT_ITEM_J, "format item-J") ++A68_ATTR(FORMAT_ITEM_K, "format item-K") ++A68_ATTR(FORMAT_ITEM_L, "format item-L") ++A68_ATTR(FORMAT_ITEM_M, "format item-M") ++A68_ATTR(FORMAT_ITEM_N, "format item-N") ++A68_ATTR(FORMAT_ITEM_O, "format item-O") ++A68_ATTR(FORMAT_ITEM_P, "format item-P") ++A68_ATTR(FORMAT_ITEM_Q, "format item-Q") ++A68_ATTR(FORMAT_ITEM_R, "format item-R") ++A68_ATTR(FORMAT_ITEM_S, "format item-S") ++A68_ATTR(FORMAT_ITEM_T, "format item-T") ++A68_ATTR(FORMAT_ITEM_U, "format item-U") ++A68_ATTR(FORMAT_ITEM_V, "format item-V") ++A68_ATTR(FORMAT_ITEM_W, "format item-W") ++A68_ATTR(FORMAT_ITEM_X, "format item-X") ++A68_ATTR(FORMAT_ITEM_Y, "format item-Y") ++A68_ATTR(FORMAT_ITEM_Z, "format item-Z") ++A68_ATTR(FORMAT_ITEM_ESCAPE, "format item escape") ++A68_ATTR(FORMAT_ITEM_MINUS, "format item -") ++A68_ATTR(FORMAT_ITEM_PLUS, "format item +") ++A68_ATTR(FORMAT_ITEM_POINT, "format item .") ++A68_ATTR(FORMAT_OPEN_SYMBOL, "format-open-symbol") ++A68_ATTR(FORMAT_PATTERN, "format pattern") ++A68_ATTR(FORMAT_POINT_FRAME, "format point frame") ++A68_ATTR(FORMAT_SYMBOL, "format-symbol") ++A68_ATTR(FORMAT_TEXT, "format text") ++A68_ATTR(FORMAT_Z_FRAME, "format Z frame") ++A68_ATTR(FROM_PART, "from-part") ++A68_ATTR(FROM_SYMBOL, "from-symbol") ++A68_ATTR(GENERAL_C_PATTERN, "general C-like pattern") ++A68_ATTR(GENERAL_PATTERN, "general pattern") ++A68_ATTR(GENERATOR, "generator") ++A68_ATTR(GENERIC_ARGUMENT, "generic argument") ++A68_ATTR(GENERIC_ARGUMENT_LIST, "generic argument list") ++A68_ATTR(GOTO_SYMBOL, "goto-symbol") ++A68_ATTR(GO_SYMBOL, "go-symbol") ++A68_ATTR(GUARDED_CONDITIONAL_CLAUSE, "guarded conditional clause") ++A68_ATTR(GUARDED_LOOP_CLAUSE, "guarded loop clause") ++A68_ATTR(HEAP_SYMBOL, "heap-symbol") ++A68_ATTR(IDENTIFIER, "identifier") ++A68_ATTR(IDENTIFIER_WITH_UNDERSCORES, "identifier with underscores") ++A68_ATTR(IDENTITY_DECLARATION, "identity declaration") ++A68_ATTR(IDENTITY_RELATION, "identity relation") ++A68_ATTR(IF_PART, "if-part") ++A68_ATTR(IF_SYMBOL, "if-symbol") ++A68_ATTR(INDICANT, "indicant") ++A68_ATTR(INITIALISER_SERIES, "initialiser series") ++A68_ATTR(INSERTION, "insertion") ++A68_ATTR(INTEGRAL_C_PATTERN, "integral C-like pattern") ++A68_ATTR(INTEGRAL_MOULD, "integral mould") ++A68_ATTR(INTEGRAL_PATTERN, "integral pattern") ++A68_ATTR(INT_DENOTATION, "integral denotation") ++A68_ATTR(INT_SYMBOL, "int-symbol") ++A68_ATTR(IN_SYMBOL, "in-symbol") ++A68_ATTR(IN_TYPE_MODE, "in type mode") ++A68_ATTR(ISNT_SYMBOL, "isnt-symbol") ++A68_ATTR(IS_SYMBOL, "is-symbol") ++A68_ATTR(JUMP, "jump") ++A68_ATTR(KEYWORD, "keyword") ++A68_ATTR(LABEL, "label") ++A68_ATTR(LABELED_UNIT, "labeled unit") ++A68_ATTR(LABEL_IDENTIFIER, "label identifier") ++A68_ATTR(LABEL_SEQUENCE, "label sequence") ++A68_ATTR(LITERAL, "literal") ++A68_ATTR(LOCAL_LABEL, "local label") ++A68_ATTR(LOC_SYMBOL, "loc-symbol") ++A68_ATTR(LONGETY, "longsety") ++A68_ATTR(LONG_SYMBOL, "long-symbol") ++A68_ATTR(LOOP_CLAUSE, "loop clause") ++A68_ATTR(LOOP_IDENTIFIER, "loop identifier") ++A68_ATTR(MAIN_SYMBOL, "main-symbol") ++A68_ATTR(MEEK, "meek context") ++A68_ATTR(MODE_BITS, "mode bits") ++A68_ATTR(MODE_BOOL, "mode bool") ++A68_ATTR(MODE_BYTES, "mode bytes") ++A68_ATTR(MODE_CHAR, "mode char") ++A68_ATTR(MODE_COMPLEX, "mode complex") ++A68_ATTR(MODE_DECLARATION, "mode declaration") ++A68_ATTR(MODE_FILE, "mode file") ++A68_ATTR(MODE_FORMAT, "mode format") ++A68_ATTR(A68_MODE_INT, "mode int") ++A68_ATTR(MODE_LONG_LONG_BITS, "mode long long bits") ++A68_ATTR(MODE_LONG_LONG_COMPLEX, "mode long long complex") ++A68_ATTR(MODE_LONG_LONG_INT, "mode long long int") ++A68_ATTR(MODE_LONG_LONG_REAL, "mode long long real") ++A68_ATTR(MODE_LONG_BITS, "mode long bits") ++A68_ATTR(MODE_LONG_BYTES, "mode long bytes") ++A68_ATTR(MODE_LONG_COMPLEX, "mode long complex") ++A68_ATTR(MODE_LONG_INT, "mode long int") ++A68_ATTR(MODE_LONG_REAL, "mode long real") ++A68_ATTR(MODE_NO_CHECK, "mode no check") ++A68_ATTR(MODE_REAL, "mode real") ++A68_ATTR(MODE_SYMBOL, "mode-symbol") ++A68_ATTR(MODULE_INDICANT, "module indicant") ++A68_ATTR(MODULE_DECLARATION, "module-declaration") ++A68_ATTR(MODULE_SYMBOL, "module-symbol") ++A68_ATTR(MODULE_TEXT, "module text") ++A68_ATTR(MONADIC_FORMULA, "monadic formula") ++A68_ATTR(MONAD_SEQUENCE, "monad sequence") ++A68_ATTR(NIHIL, "nihil") ++A68_ATTR(NIL_SYMBOL, "nil-symbol") ++A68_ATTR(NORMAL_IDENTIFIER, "normal identifier") ++A68_ATTR(NO_SORT, "no sort") ++A68_ATTR(OD_SYMBOL, "od-symbol") ++A68_ATTR(OF_SYMBOL, "of-symbol") ++A68_ATTR(OPEN_PART, "open part") ++A68_ATTR(OPEN_SYMBOL, "open-symbol") ++A68_ATTR(OPERATOR, "operator") ++A68_ATTR(OPERATOR_DECLARATION, "operator declaration") ++A68_ATTR(OPERATOR_PLAN, "operator plan") ++A68_ATTR(OP_SYMBOL, "op-symbol") ++A68_ATTR(ORF_SYMBOL, "orf-symbol") ++A68_ATTR(OR_FUNCTION, "orel pseudo-operator") ++A68_ATTR(OUSE_PART, "ouse-part") ++A68_ATTR(OUSE_SYMBOL, "ouse-symbol") ++A68_ATTR(OUT_PART, "out-part") ++A68_ATTR(OUT_SYMBOL, "out-symbol") ++A68_ATTR(OUT_TYPE_MODE, "out type mode") ++A68_ATTR(PACKET, "packet") ++A68_ATTR(PARALLEL_CLAUSE, "parallel clause") ++A68_ATTR(PARAMETER, "parameter") ++A68_ATTR(PARAMETER_IDENTIFIER, "parameter identifier") ++A68_ATTR(PARAMETER_LIST, "parameter list") ++A68_ATTR(PARAMETER_PACK, "parameter pack") ++A68_ATTR(PARTICULAR_PROGRAM, "particular program") ++A68_ATTR(PAR_SYMBOL, "par-symbol") ++A68_ATTR(PICTURE, "format picture") ++A68_ATTR(PICTURE_LIST, "format picture list") ++A68_ATTR(PIPE_SYMBOL, "pipe-symbol") ++A68_ATTR(POINT_SYMBOL, "point-symbol") ++A68_ATTR(POSTLUDE_PART, "postlude-part") ++A68_ATTR(POSTLUDE_SYMBOL, "postlude-symbol") ++A68_ATTR(PRELUDE_PACKET, "prelude-packet") ++A68_ATTR(PRIMARY, "primary") ++A68_ATTR(PRIORITY, "operator priority") ++A68_ATTR(PRIORITY_DECLARATION, "operator priority declaration") ++A68_ATTR(PRIO_SYMBOL, "prio-symbol") ++A68_ATTR(PROCEDURE_DECLARATION, "procedure declaration") ++A68_ATTR(PROCEDURE_VARIABLE_DECLARATION, "procedure variable declaration") ++A68_ATTR(PROCEDURING, "proceduring coercion") ++A68_ATTR(PROC_SYMBOL, "proc-symbol") ++A68_ATTR(PUBLIC_SYMBOL, "public-symbol") ++A68_ATTR(QUALIFIER, "qualifier") ++A68_ATTR(RADIX_FRAME, "radix frame") ++A68_ATTR(REAL_DENOTATION, "real denotation") ++A68_ATTR(REAL_PATTERN, "real pattern") ++A68_ATTR(REAL_SYMBOL, "real-symbol") ++A68_ATTR(REF_SYMBOL, "ref-symbol") ++A68_ATTR(REPLICATOR, "format replicator") ++A68_ATTR(REVELATION, "revelation") ++A68_ATTR(REVELATION_PART, "revelation-part") ++A68_ATTR(ROUTINE_TEXT, "routine text") ++A68_ATTR(ROUTINE_UNIT, "routine unit") ++A68_ATTR(ROWING, "rowing coercion") ++A68_ATTR(ROWS_SYMBOL, "rows-symbol") ++A68_ATTR(ROW_CHAR_DENOTATION, "row of chars denotation") ++A68_ATTR(ROW_SYMBOL, "row-symbol") ++A68_ATTR(SECONDARY, "secondary") ++A68_ATTR(SELECTION, "selection") ++A68_ATTR(SELECTOR, "selector") ++A68_ATTR(SEMA_SYMBOL, "sema-symbol") ++A68_ATTR(SEMI_SYMBOL, "semi-symbol") ++A68_ATTR(SERIAL_CLAUSE, "serial clause") ++A68_ATTR(SERIES_MODE, "series mode") ++A68_ATTR(SHORTETY, "shortsety") ++A68_ATTR(SHORT_SYMBOL, "short-symbol") ++A68_ATTR(SIGN_MOULD, "sign mould") ++A68_ATTR(SKIP, "skip unit") ++A68_ATTR(SKIP_SYMBOL, "skip-symbol") ++A68_ATTR(SLICE, "slice") ++A68_ATTR(SOFT, "soft context") ++A68_ATTR(SOME_CLAUSE, "some clause") ++A68_ATTR(SPECIFICATION, "specification") ++A68_ATTR(SPECIFIED_UNIT, "specified unit") ++A68_ATTR(SPECIFIED_UNIT_LIST, "specified unit list") ++A68_ATTR(SPECIFIED_UNIT_UNIT, "specified unit unit") ++A68_ATTR(SPECIFIER, "specifier") ++A68_ATTR(SPECIFIER_IDENTIFIER, "specifier identifier") ++A68_ATTR(STANDARD, "standard") ++A68_ATTR(STATIC_REPLICATOR, "static replicator") ++A68_ATTR(STATIC_SYMBOL, "static-symbol") ++A68_ATTR(STOWED_MODE, "stowed mode") ++A68_ATTR(STRING_C_PATTERN, "string C-like pattern") ++A68_ATTR(STRING_PATTERN, "string pattern") ++A68_ATTR(STRING_SYMBOL, "string-symbol") ++A68_ATTR(STRONG, "strong context") ++A68_ATTR(STRUCTURED_FIELD, "structured field") ++A68_ATTR(STRUCTURED_FIELD_LIST, "structured field list") ++A68_ATTR(STRUCTURE_PACK, "structure pack") ++A68_ATTR(STRUCT_SYMBOL, "struct-symbol") ++A68_ATTR(STYLE_II_COMMENT_SYMBOL, "comment delimiter") ++A68_ATTR(STYLE_I_COMMENT_SYMBOL, "comment delimiter") ++A68_ATTR(STYLE_I_PRAGMAT_SYMBOL, "pragmat-symbol") ++A68_ATTR(SUB_SYMBOL, "sub-symbol") ++A68_ATTR(SUB_UNIT, "sub unit") ++A68_ATTR(TERTIARY, "tertiary") ++A68_ATTR(THEN_BAR_SYMBOL, "then-bar-symbol") ++A68_ATTR(THEN_PART, "then-part") ++A68_ATTR(THEN_SYMBOL, "then-symbol") ++A68_ATTR(TO_PART, "to-part") ++A68_ATTR(TO_SYMBOL, "to-symbol") ++A68_ATTR(TRIMMER, "trimmer") ++A68_ATTR(TRUE_SYMBOL, "true-symbol") ++A68_ATTR(UNION_DECLARER_LIST, "union declarer list") ++A68_ATTR(UNION_PACK, "union pack") ++A68_ATTR(UNION_SYMBOL, "union-symbol") ++A68_ATTR(UNIT, "unit") ++A68_ATTR(UNITING, "uniting coercion") ++A68_ATTR(UNIT_LIST, "unit list") ++A68_ATTR(UNIT_SERIES, "unit series") ++A68_ATTR(VARIABLE_DECLARATION, "variable declaration") ++A68_ATTR(VIRTUAL_DECLARER_MARK, "virtual declarer mark") ++A68_ATTR(VOIDING, "voiding coercion") ++A68_ATTR(VOID_SYMBOL, "void-symbol") ++A68_ATTR(WEAK, "weak context") ++A68_ATTR(WHILE_PART, "while-part") ++A68_ATTR(WHILE_SYMBOL, "while-symbol") ++A68_ATTR(WIDENING, "widening coercion") ++A68_ATTR(WILDCARD, "wildcard") ++ ++/* ++Local variables: ++mode:c ++End: ++*/ +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-bottom-up.cc +@@ -0,0 +1,3026 @@ ++/* Hand-coded bottom-up parser for Algol 68. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* This is a Mailloux-type parser, in the sense that it scans a "phrase" for ++ definitions needed for parsing, and therefore allows for tags to be used ++ before they are defined, which gives some freedom in top-down programming. ++ ++ B. J. Mailloux. On the implementation of Algol 68. ++ Thesis, Universiteit van Amsterdam (Mathematisch Centrum) [1968]. ++ ++ Technically, Mailloux's approach renders the two-level grammar LALR. This ++ is the bottom-up parser that resolves the structure of the program. */ ++ ++/* *** Thou who adventure here, please read this *** ++ ++ On parse trees, phrases and branches ++ ------------------------------------ ++ ++ The Algol 68 parser operates on parse trees in which sibling nodes are ++ linked together in "phrases" via NEXT and PREVIOUS pointers, and sub-trees ++ or "branches" start at SUB pointers. For example, in the parse tree ++ ++ a ++ | ++ b - c - d - e ++ | ++ f - g - h - i ++ | ++ j ++ ++ 'a' is the root of the tree. ++ 'a', 'b - c - d - e', 'f - g - h -i' and 'j' are phrases. ++ 'a', 'c' and 'i' introduce branches to sub trees via their SUB pointer. ++ ++ From the scanner to the bottom-up parser ++ ---------------------------------------- ++ ++ The lexical analyzer transforms the textual input programs into a single ++ phrase with all the tokens. For example, the program text ++ ++ begin if A then B fi; ++ C ++ end; ++ D ++ ++ will be turned by the lexical analyzer into the following parse tree, which ++ in fact is a list conforming a single phrase: ++ ++ begin - if - A - then - B - fi - semi - C - end - semi - D ++ ++ This parse tree is then handed over to the top-down parser, which provides ++ some initial structure and turns the single phrase into an actual tree: ++ ++ begin - semi - D ++ | ++ begin - if - then - fi - end - semi - C - end ++ | | ++ | then - B ++ if - A ++ ++ Note how branches have been created for the closed clause and for the ++ different parts of the conditional clause. The same would have happened for ++ loop parts and case parts as well, but it is important to note that the role ++ of the top-down parser doesn't handle the conditional, loop or case clauses ++ themselves: it just branches the parts of these clauses that introduce ++ ranges. Taking care of structuring the clauses is precisely the main role of ++ the bottom-up parser. ++ ++ The bottom-up parser ++ -------------------- ++ ++ The bottom-up parser is given a parse tree like the one above, partially ++ structured in phrases by the top-down parser. The bottom-up parser then ++ proceeds from the root-node using two basic operations: ++ ++ - reduce a phrase, implemented by 'reduce'. ++ - reduce a sub-phrase starting at a branch, implemented by 'reduce_branch'. ++*/ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* Bottom-up parser, reduces all constructs. */ ++ ++ ++/* Maximum number of errors the bottom-up parser will try to recover from and ++ save diagnostics for. */ ++ ++#define MAX_ERRORS 5 ++ ++/* Forward declarations of some of the functions defined below. */ ++ ++static void reduce_branch (NODE_T *q, a68_attribute expect); ++static void recover_from_error (NODE_T * p, enum a68_attribute expect, bool suppress); ++static void reduce_declarers (NODE_T *p, enum a68_attribute expect); ++static void reduce_primary_parts (NODE_T *p, enum a68_attribute expect); ++static void reduce_primaries (NODE_T *p, enum a68_attribute expect); ++static void reduce_format_texts (NODE_T *p); ++static void reduce_secondaries (NODE_T *p); ++static void reduce_formulae (NODE_T * p); ++static void reduce_tertiaries (NODE_T *p); ++static void reduce_right_to_left_constructs (NODE_T *p); ++static void reduce_units (NODE_T * p); ++static void reduce_erroneous_units (NODE_T *p); ++static void reduce_generic_arguments (NODE_T *p); ++static void reduce_bounds (NODE_T *p); ++static void reduce_serial_clauses (NODE_T *p); ++static void reduce_enquiry_clauses (NODE_T *p); ++static void reduce_collateral_clauses (NODE_T *p); ++static void reduce_arguments (NODE_T *p); ++static void reduce_enclosed_clauses (NODE_T *q, enum a68_attribute expect); ++static void reduce_basic_declarations (NODE_T *p); ++static void reduce_declaration_lists (NODE_T *p); ++static void reduce_module_texts (NODE_T *p); ++static void reduce_module_text_parts (NODE_T *p); ++static NODE_T *reduce_dyadic (NODE_T *p, int u); ++ ++/* Whether a series is serial or collateral. */ ++ ++static enum a68_attribute ++serial_or_collateral (NODE_T *p) ++{ ++ int semis = 0, commas = 0, exits = 0; ++ for (NODE_T *q = p; q != NO_NODE; q = NEXT (q)) ++ { ++ if (IS (q, COMMA_SYMBOL)) ++ commas++; ++ else if (IS (q, SEMI_SYMBOL)) ++ semis++; ++ else if (IS (q, EXIT_SYMBOL)) ++ exits++; ++ } ++ ++ if (semis == 0 && exits == 0 && commas > 0) ++ return COLLATERAL_CLAUSE; ++ else if ((semis > 0 || exits > 0) && commas == 0) ++ return SERIAL_CLAUSE; ++ else if (semis == 0 && exits == 0 && commas == 0) ++ return SERIAL_CLAUSE; ++ else ++ /* Heuristic guess to give intelligible error message. */ ++ return (semis + exits >= commas) ? SERIAL_CLAUSE : COLLATERAL_CLAUSE; ++} ++ ++/* Insert a node with attribute "a" after "p". */ ++ ++static void ++pad_node (NODE_T *p, enum a68_attribute a) ++{ ++ /* This is used to fill information that Algol 68 does not require to be ++ present. Filling in gives one format for such construct; this helps later ++ passes. */ ++ NODE_T *z = a68_new_node (); ++ *z = *p; ++ if (GINFO (p) != NO_GINFO) ++ GINFO (z) = a68_new_genie_info (); ++ PREVIOUS (z) = p; ++ SUB (z) = NO_NODE; ++ ATTRIBUTE (z) = a; ++ MOID (z) = NO_MOID; ++ if (NEXT (z) != NO_NODE) ++ PREVIOUS (NEXT (z)) = z; ++ NEXT (p) = z; ++} ++ ++/* Diagnose extensions. */ ++ ++static void ++a68_extension (NODE_T *p) ++{ ++ a68_warning (p, OPT_Wextensions, "ast node is an extension"); ++} ++ ++/* Diagnose for clauses not yielding a value. */ ++ ++static void ++empty_clause (NODE_T *p) ++{ ++ a68_error (p, "clause does not yield a value"); ++} ++ ++/* Diagnose for missing symbol. */ ++ ++static void ++strange_tokens (NODE_T *p) ++{ ++ NODE_T *q = ((p != NO_NODE && NEXT (p) != NO_NODE) ? NEXT (p) : p); ++ a68_error (q, "possibly a missing or erroneous symbol nearby"); ++} ++ ++/* Diagnose for strange separator. */ ++ ++static void ++strange_separator (NODE_T *p) ++{ ++ NODE_T *q = ((p != NO_NODE && NEXT (p) != NO_NODE) ? NEXT (p) : p); ++ a68_error (q, "possibly a missing or erroneous separator nearby"); ++} ++ ++/* If match then reduce a sentence, the core bottom-up parser routine. The ++ reduction of a sequence of nodes stating at P: ++ ++ P - A - B - C - D - E - F ++ ++ where the attributes passed to this function are Z P A B C, the result of ++ the reduction is: ++ ++ Z - D - E - F ++ | ++ P - A - B - C ++ ++ Note how the node pointed by P gets changed after a reduction gets ++ performed. ++ ++ P is the AST node from where start matching. ++ ++ ATTRS is a sequence of node attributes. The first of these attributes is ++ the kind of node resulting from the reduction. The rest of attributes are ++ the matched in order starting at P, then a reduction is performed. Two node ++ attributes exist that convey special meaning when passing to "reduce": ++ ++ STOP marks the end of the variable-length sequence of attributes to match. ++ ++ WILDCARD will match any non terminal, with the exception of a keyword. It ++ is used to recover from errors. ++ ++ A is a "noting" function that is invoked and passed P right before doing the ++ reduction. If A is NO_NOTE then it is not used. ++ ++ The boolean Z is set to "true" if the reduction has been performed, and is ++ left untouched otherwise. If Z is NO_TICK then it is not used. ++ ++ It is common to invoke "reduce" in a row in order to try the reduction of ++ several alternatives, which are mutually exclusive. For example: ++ ++ reduce (p, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, LABEL, ENCLOSED_CLAUSE, STOP); ++ reduce (p, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, ENCLOSED_CLAUSE, STOP); ++ ++ We know that at much only one of these reductions will succeed, becuase if ++ the first reduction succeeds, then P gets changed to LABEL which cannot ++ match ENCLOSED_CLAUSE. ++ ++ Sometimes, however, "reduce" is invoked in a row in a way the second ++ reduction is intended to succeed if the first one succeeds. For example: ++ ++ reduce (p, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); ++ ++ In this case if the first reduction succeeds, then the resulting ++ PARALLEL_CLAUSE will be itself reduced to an ENCLOSED_CLAUSE. ++ ++ Another typical usage of "reduce" is to put it in a loop in order to reduce ++ matches of a left-recursive rule. This is where Z comes to play. For ++ example, consider the rules: ++ ++ label : defining identifier, colon symbol ; ++ label, defining identifier, colon symbol. ++ ++ The second alternative is left-recursive, and along with the first rule ++ defines a sequence of one or more labels, each label consisting on a ++ defining identifier followed by a colon symbol. We could match these rules ++ using the following loop: ++ ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, LABEL, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ } ++ ++ Note how, when presented with a sequence of labels like `l1: l2: l3: ...', ++ the first call to "reduce" will succeed, turning Q into a LABEL. Then the ++ second call to "reduce" will also succed, reducing to another LABEL and ++ setting SIGA to "true". In subsequent iterations of the loop the first call ++ will always fail, and the second call will keep succeeding as more sequences ++ of DEFINING_IDENTIFIER, COLON_SYMBOL get matched. */ ++ ++static void ++reduce (NODE_T *p, void (*a) (NODE_T *), bool *z, /* attrs */...) ++{ ++ va_list list; ++ va_start (list, z); ++ enum a68_attribute expect; ++ enum a68_attribute result = (enum a68_attribute) va_arg (list, int); ++ NODE_T *head = p, *tail = NO_NODE; ++ ++ while ((expect = (enum a68_attribute) va_arg (list, int)) != STOP) ++ { ++ bool keep_matching; ++ ++ if (p == NO_NODE) ++ keep_matching = false; ++ else if (expect == WILDCARD) ++ /* WILDCARD matches any non terminal, but no keyword. */ ++ keep_matching = (a68_attribute_name (ATTRIBUTE (p)) != NO_TEXT); ++ else ++ { ++ if (expect == SKIP) ++ { ++ /* Stray "~" matches expected SKIP. */ ++ if (IS (p, OPERATOR) && IS_LITERALLY (p, "~")) ++ ATTRIBUTE (p) = SKIP; ++ } ++ ++ if (expect >= 0) ++ keep_matching = (expect == ATTRIBUTE (p)); ++ else ++ keep_matching = (expect != ATTRIBUTE (p)); ++ } ++ ++ if (keep_matching) ++ { ++ tail = p; ++ FORWARD (p); ++ } ++ else ++ { ++ va_end (list); ++ return; ++ } ++ } ++ ++ /* Make reduction. */ ++ if (a != NO_NOTE) ++ a (head); ++ ++ a68_make_sub (head, tail, result); ++ va_end (list); ++ if (z != NO_TICK) ++ *z = true; ++} ++ ++/* Graciously ignore extra semicolons. */ ++ ++static void ++ignore_superfluous_semicolons (NODE_T *p) ++{ ++ /* This routine relaxes the parser a bit with respect to superfluous ++ semicolons, for instance "FI; OD". These provoke only a warning. */ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ ignore_superfluous_semicolons (SUB (p)); ++ ++ if (NEXT (p) != NO_NODE && IS (NEXT (p), SEMI_SYMBOL) && NEXT_NEXT (p) == NO_NODE) ++ { ++ a68_warning (NEXT (p), 0, ++ "skipped superfluous A", ATTRIBUTE (NEXT (p))); ++ NEXT (p) = NO_NODE; ++ } ++ else if (IS (p, SEMI_SYMBOL) && a68_is_semicolon_less (NEXT (p))) ++ { ++ a68_warning (p, 0, ++ "skipped superfluous A", ATTRIBUTE (p)); ++ if (PREVIOUS (p) != NO_NODE) ++ NEXT (PREVIOUS (p)) = NEXT (p); ++ PREVIOUS (NEXT (p)) = PREVIOUS (p); ++ } ++ } ++} ++ ++/* Reduce a particular program. */ ++ ++void ++reduce_particular_program (NODE_T *p) ++{ ++ /* A program is "label sequence; particular program". */ ++ a68_extract_labels (p, SERIAL_CLAUSE); ++ ++ NODE_T *q = p; ++ /* Parse the program itself. */ ++ for (; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga = true; ++ ++ if (SUB (q) != NO_NODE) ++ reduce_branch (q, SOME_CLAUSE); ++ ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, LABEL, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ } ++ } ++ /* Determine the encompassing enclosed clause. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, LOOP_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, ACCESS_CLAUSE, STOP); ++ } ++ ++ /* Try reducing a particular program. */ ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, LABEL, ENCLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, ENCLOSED_CLAUSE, STOP); ++} ++ ++/* Reduce a prelude packet. */ ++ ++void ++reduce_prelude_packet (NODE_T *p) ++{ ++ /* Extract the module indicants. */ ++ a68_extract_indicants (p); ++ ++ /* Reduce MODULE_TEXTs */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, ALT_ACCESS_SYMBOL)) ++ reduce_branch (q, MODULE_TEXT); ++ else if (IS (q, DEF_SYMBOL)) ++ { ++ for (NODE_T *v = q; v != NO_NODE; FORWARD (v)) ++ { ++ if (IS (v, DEF_SYMBOL)) ++ reduce_branch (v, DEF_PART); ++ else if (IS (v, POSTLUDE_SYMBOL)) ++ reduce_branch (v, POSTLUDE_PART); ++ } ++ reduce_module_texts (q); ++ } ++ } ++ ++ /* Single module declaration. */ ++ reduce (p, NO_NOTE, NO_TICK, ++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_MODULE_INDICANT, EQUALS_SYMBOL, MODULE_TEXT, STOP); ++ reduce (p, strange_tokens, NO_TICK, ++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_MODULE_INDICANT, EQUALS_SYMBOL, -MODULE_TEXT, STOP); ++ ++ /* Joined module declarations. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ MODULE_DECLARATION, MODULE_DECLARATION, ++ COMMA_SYMBOL, DEFINING_MODULE_INDICANT, EQUALS_SYMBOL, MODULE_TEXT, STOP); ++ } ++ while (siga); ++ } ++ ++ /* Try reducing a prelude packet. */ ++ reduce (p, NO_NOTE, NO_TICK, PRELUDE_PACKET, MODULE_DECLARATION, STOP); ++} ++ ++/* Driver for the bottom-up parser. */ ++ ++void ++a68_bottom_up_parser (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (!setjmp (A68_PARSER (bottom_up_crash_exit))) ++ { ++ NODE_T *q; ++ int error_count_0 = ERROR_COUNT (&A68_JOB); ++ ++ ignore_superfluous_semicolons (p); ++ ++ /* A compilation unit is a packet, which can be either a particular ++ program or a prelude packet. */ ++ if (IS (p, MODULE_SYMBOL)) ++ reduce_prelude_packet (p); ++ else ++ reduce_particular_program (p); ++ ++ /* Try reducing the packet. */ ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, PACKET, PARTICULAR_PROGRAM, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PACKET, PRELUDE_PACKET, STOP); ++ if (SUB (p) == NO_NODE || NEXT (p) != NO_NODE) ++ recover_from_error (p, PACKET, ++ ((ERROR_COUNT (&A68_JOB) - error_count_0) > MAX_ERRORS)); ++ } ++ } ++} ++ ++/* Reduce the sub-phrase that starts one level down. ++ ++ EXPECT is the expected construct for the sub-phrase, and it is used to guide ++ the parsing by determining what reductions to try. This can be SOME_CLAUSE, ++ which means either a serial or a collateral clause. ++ ++ This is a recursive process. Let's suppose we have the parse tree below and ++ we call `reduce_branch (b, EXPECT)': ++ ++ a - b - c - d - e ++ | ++ b - x - y - z ++ | ++ v - w ++ ++ The first thing this function does is to traverse the 'b' branch ++ ++ b - x - y - z ++ ++ looking for declarations of indicants, priorities and operators ++ (a68_extract_{indicants,priorities,operators}). Using this information , it ++ determines the nature of bold tags occuring in the branch, by turning ++ BOLD_TAG nodes into either INDICANT nodes or OPERATOR nodes ++ (a68_elaborate_bold_tags). ++ ++ At this point it is possible to try reduce the declarers within the 'b' ++ subtree, so reduce_declarers is invoked on it. This function is recursive ++ and performs reductions of several kinds: sequences of 'long' and 'short' ++ symbols into sizeties, symbols like 'int' and 'real' into indicants, ++ declarers, declarer lists, etc. ++ ++ Once that is done, the 'p' branch is traversed and reduce_branch is invoked ++ recursively in certain nodes that start a sub-branch: ++ ++ | Recursing in branch | with expect | ++ |--------------------------------------------------+-------------------| ++ | FORMAT_DELIMITER_SYMBOL, FORMAT_OPEN_SYMBOL | FORMAT_TEXT | ++ |--------------------------------------------------+-------------------| ++ | OPEN_SYMBOL, IN_SYMBOL | COLLATERAL_CLAUSE | ++ |--------------------------------------------------+-------------------| ++ | IF_SYMBOL, ELIF_SYMBOL, CASE_SYMBOL, OUSE_SYMBOL | ENQUIRY_CLAUSE | ++ | WHILE_SYMBOL, ELSE_BAR_SYMBOL, DEF_SYMBOL | | ++ |--------------------------------------------------+-------------------| ++ | BEGIN_SYMBOL, THEN_BAR_SYMBOL | SOME_CLAUSE | ++ |--------------------------------------------------+-------------------| ++ | THEN_SYMBOL, ELSE_SYMBOL, OUT_SYMBOL | SERIAL_CLAUSE | ++ | DO_SYMBOL, ALT_DO_SYMBOL, POSTLUDE_SYMBOL | | ++ |--------------------------------------------------+-------------------| ++ | LOOP_CLAUSE, ACCESS_SYMBOL | ENCLOSED_CLAUSE | ++ |--------------------------------------------------+-------------------| ++ | FOR_SYMBOL, FROM_SYMBOL, BY_SYMBOL, TO_SYMBOL | UNIT | ++ ++ Once all the sub-branches are reduced, the final step is to finally reduce ++ the 'b' branch, trying different possibilities: basic declarations, units, ++ bounds, declaration lists, clauses, module texts, etc. ++ ++ Note that reducing a branch requires knowing the kind of resulting subtree. ++ So if you find yourself wanting to call reduce_branch and don't know what to ++ pass in EXPECT, you are probably doing something wrong.. very likely you ++ want to make reduce_branch aware of a new sort of branch. */ ++ ++static void ++reduce_branch (NODE_T *q, enum a68_attribute expect) ++{ ++ /* If unsuccessful then the routine will at least copy the resulting ++ attribute as the parser can repair some faults. This gives less spurious ++ diagnostics. */ ++ if (q != NO_NODE && SUB (q) != NO_NODE) ++ { ++ NODE_T *p = SUB (q), *u = NO_NODE; ++ int error_count_0 = ERROR_COUNT (&A68_JOB), error_count_02; ++ bool declarer_pack = false, no_error; ++ ++ switch (expect) ++ { ++ case STRUCTURE_PACK: ++ case PARAMETER_PACK: ++ case FORMAL_DECLARERS: ++ case UNION_PACK: ++ case SPECIFIER: ++ declarer_pack = true; ++ break; ++ default: ++ declarer_pack = false; ++ } ++ ++ /* Sample all info needed to decide whether a bold tag is operator or ++ indicant. Find the meaning of bold tags and quit in case of extra ++ errors. */ ++ a68_extract_indicants (p); ++ if (!declarer_pack) ++ { ++ a68_extract_priorities (p); ++ a68_extract_operators (p); ++ } ++ ++ error_count_02 = ERROR_COUNT (&A68_JOB); ++ a68_elaborate_bold_tags (p); ++ if ((ERROR_COUNT (&A68_JOB) - error_count_02) > 0) ++ longjmp (A68_PARSER (bottom_up_crash_exit), 1); ++ ++ /* Now we can reduce declarers, knowing which bold tags are indicants. */ ++ reduce_declarers (p, expect); ++ /* Parse the phrase, as appropriate. */ ++ if (declarer_pack == false) ++ { ++ error_count_02 = ERROR_COUNT (&A68_JOB); ++ a68_extract_declarations (p); ++ if ((ERROR_COUNT (&A68_JOB) - error_count_02) > 0) ++ longjmp (A68_PARSER (bottom_up_crash_exit), 1); ++ a68_extract_labels (p, expect); ++ for (u = p; u != NO_NODE; FORWARD (u)) ++ { ++ if (SUB (u) != NO_NODE) ++ { ++ if (IS (u, FORMAT_DELIMITER_SYMBOL)) ++ reduce_branch (u, FORMAT_TEXT); ++ else if (IS (u, FORMAT_OPEN_SYMBOL)) ++ reduce_branch (u, FORMAT_TEXT); ++ else if (IS (u, OPEN_SYMBOL)) ++ { ++ if (NEXT (u) != NO_NODE && IS (NEXT (u), THEN_BAR_SYMBOL)) ++ reduce_branch (u, ENQUIRY_CLAUSE); ++ else if (PREVIOUS (u) != NO_NODE && IS (PREVIOUS (u), PAR_SYMBOL)) ++ reduce_branch (u, COLLATERAL_CLAUSE); ++ } ++ else if (a68_is_one_of (u, IF_SYMBOL, ELIF_SYMBOL, CASE_SYMBOL, ++ OUSE_SYMBOL, WHILE_SYMBOL, ++ ELSE_BAR_SYMBOL, DEF_PART, STOP)) ++ reduce_branch (u, ENQUIRY_CLAUSE); ++ else if (IS (u, BEGIN_SYMBOL)) ++ reduce_branch (u, SOME_CLAUSE); ++ else if (a68_is_one_of (u, THEN_SYMBOL, ELSE_SYMBOL, OUT_SYMBOL, ++ DO_SYMBOL, ALT_DO_SYMBOL, ++ POSTLUDE_PART, STOP)) ++ reduce_branch (u, SERIAL_CLAUSE); ++ else if (IS (u, IN_SYMBOL)) ++ reduce_branch (u, COLLATERAL_CLAUSE); ++ else if (IS (u, THEN_BAR_SYMBOL)) ++ reduce_branch (u, SOME_CLAUSE); ++ else if (IS (u, ACCESS_SYMBOL)) ++ reduce_branch (u, ENCLOSED_CLAUSE); ++ else if (IS (u, DEF_SYMBOL)) ++ reduce_branch (u, DEF_PART); ++ else if (IS (u, POSTLUDE_SYMBOL)) ++ reduce_branch (u, POSTLUDE_PART); ++ else if (IS (u, LOOP_CLAUSE)) ++ reduce_branch (u, ENCLOSED_CLAUSE); ++ else if (a68_is_one_of (u, FOR_SYMBOL, FROM_SYMBOL, BY_SYMBOL, TO_SYMBOL, ++ STOP)) ++ reduce_branch (u, UNIT); ++ } ++ } ++ ++ reduce_primary_parts (p, expect); ++ if (expect != ENCLOSED_CLAUSE) ++ { ++ reduce_primaries (p, expect); ++ if (expect == FORMAT_TEXT) ++ reduce_format_texts (p); ++ else ++ { ++ reduce_secondaries (p); ++ reduce_formulae (p); ++ reduce_tertiaries (p); ++ } ++ } ++ ++ reduce_right_to_left_constructs (p); ++ /* Reduce units and declarations. */ ++ reduce_basic_declarations (p); ++ reduce_units (p); ++ reduce_erroneous_units (p); ++ if (expect != UNIT) ++ { ++ if (expect == GENERIC_ARGUMENT) ++ reduce_generic_arguments (p); ++ else if (expect == BOUNDS) ++ reduce_bounds (p); ++ else ++ { ++ reduce_declaration_lists (p); ++ if (expect != DECLARATION_LIST) ++ { ++ for (u = p; u != NO_NODE; FORWARD (u)) ++ { ++ reduce (u, NO_NOTE, NO_TICK, LABELED_UNIT, LABEL, UNIT, STOP); ++ reduce (u, NO_NOTE, NO_TICK, SPECIFIED_UNIT, SPECIFIER, ++ COLON_SYMBOL, UNIT, STOP); ++ } ++ if (expect == SOME_CLAUSE) ++ expect = serial_or_collateral (p); ++ if (expect == SERIAL_CLAUSE) ++ reduce_serial_clauses (p); ++ else if (expect == ENQUIRY_CLAUSE) ++ reduce_enquiry_clauses (p); ++ else if (expect == COLLATERAL_CLAUSE) ++ reduce_collateral_clauses (p); ++ else if (expect == ARGUMENT) ++ reduce_arguments (p); ++ } ++ } ++ } ++ reduce_enclosed_clauses (p, expect); ++ if (expect == DEF_PART || expect == POSTLUDE_PART) ++ reduce_module_text_parts (p); ++ if (expect == MODULE_TEXT) ++ reduce_module_texts (p); ++ } ++ ++ /* Do something if parsing failed. */ ++ if (SUB (p) == NO_NODE || NEXT (p) != NO_NODE) ++ { ++ recover_from_error (p, expect, ++ ((ERROR_COUNT (&A68_JOB) - error_count_0) > MAX_ERRORS)); ++ no_error = false; ++ } ++ else ++ no_error = true; ++ ATTRIBUTE (q) = ATTRIBUTE (p); ++ if (no_error) ++ SUB (q) = SUB (p); ++ } ++} ++ ++/* Driver for reducing declarers. */ ++ ++static void ++reduce_declarers (NODE_T *p, enum a68_attribute expect) ++{ ++ NODE_T *q; bool siga; /* Must be in this scope. */ ++ ++ /* Reduce lengtheties. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ reduce (q, NO_NOTE, NO_TICK, LONGETY, LONG_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SHORTETY, SHORT_SYMBOL, STOP); ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, LONGETY, LONGETY, LONG_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, SHORTETY, SHORTETY, SHORT_SYMBOL, STOP); ++ } ++ } ++ ++ /* Reduce indicants. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, INT_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, REAL_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, BITS_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, BYTES_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, COMPLEX_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, COMPL_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, BOOL_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, CHAR_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, FORMAT_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, STRING_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, FILE_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, CHANNEL_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, SEMA_SYMBOL, STOP); ++ } ++ ++ /* Reduce standard stuff. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (a68_whether (q, LONGETY, INDICANT, STOP)) ++ { ++ int a; ++ ++ if (SUB_NEXT (q) == NO_NODE) ++ { ++ a68_error (NEXT (q), ++ "Y expected", "appropriate declarer"); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); ++ } ++ else ++ { ++ a = ATTRIBUTE (SUB_NEXT (q)); ++ ++ if (a == INT_SYMBOL || a == REAL_SYMBOL || a == BITS_SYMBOL ++ || a == BYTES_SYMBOL || a == COMPLEX_SYMBOL ++ || a == COMPL_SYMBOL) ++ { ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); ++ } ++ else ++ { ++ a68_error (NEXT (q), ++ "Y expected", "appropriate declarer"); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); ++ } ++ } ++ } ++ else if (a68_whether (q, SHORTETY, INDICANT, STOP)) ++ { ++ int a; ++ ++ if (SUB_NEXT (q) == NO_NODE) ++ { ++ a68_error (NEXT (q), ++ "Y expected", "appropriate declarer"); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, SHORTETY, INDICANT, STOP); ++ } ++ else ++ { ++ a = ATTRIBUTE (SUB_NEXT (q)); ++ if (a == INT_SYMBOL || a == REAL_SYMBOL || a == BITS_SYMBOL ++ || a == BYTES_SYMBOL || a == COMPLEX_SYMBOL || a == COMPL_SYMBOL) ++ { ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, SHORTETY, INDICANT, STOP); ++ } ++ else ++ { ++ a68_error (NEXT (q), ++ "Y expected", "appropriate declarer"); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); ++ } ++ } ++ } ++ } ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, INDICANT, STOP); ++ ++ /* Reduce declarer lists. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (NEXT (q) != NO_NODE && SUB_NEXT (q) != NO_NODE) ++ { ++ if (IS (q, STRUCT_SYMBOL)) ++ { ++ reduce_branch (NEXT (q), STRUCTURE_PACK); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, STRUCT_SYMBOL, STRUCTURE_PACK, STOP); ++ } ++ else if (IS (q, UNION_SYMBOL)) ++ { ++ reduce_branch (NEXT (q), UNION_PACK); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, UNION_SYMBOL, UNION_PACK, STOP); ++ } ++ else if (IS (q, PROC_SYMBOL)) ++ { ++ if (a68_whether (q, PROC_SYMBOL, OPEN_SYMBOL, STOP)) ++ { ++ if (!a68_is_formal_bounds (SUB_NEXT (q))) ++ reduce_branch (NEXT (q), FORMAL_DECLARERS); ++ } ++ } ++ else if (IS (q, OP_SYMBOL)) ++ { ++ if (a68_whether (q, OP_SYMBOL, OPEN_SYMBOL, STOP)) ++ { ++ if (!a68_is_formal_bounds (SUB_NEXT (q))) ++ reduce_branch (NEXT (q), FORMAL_DECLARERS); ++ } ++ } ++ } ++ } ++ ++ /* Reduce row, proc or op declarers. */ ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ /* FLEX DECL. */ ++ if (a68_whether (q, FLEX_SYMBOL, DECLARER, STOP)) ++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, DECLARER, STOP); ++ ++ /* FLEX [] DECL. */ ++ if (a68_whether (q, FLEX_SYMBOL, SUB_SYMBOL, DECLARER, STOP) && SUB_NEXT (q) != NO_NODE) ++ { ++ reduce_branch (NEXT (q), BOUNDS); ++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, BOUNDS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, FORMAL_BOUNDS, DECLARER, STOP); ++ } ++ ++ /* FLEX () DECL. */ ++ if (a68_whether (q, FLEX_SYMBOL, OPEN_SYMBOL, DECLARER, STOP) && SUB_NEXT (q) != NO_NODE) ++ { ++ if (!a68_whether (q, FLEX_SYMBOL, OPEN_SYMBOL, DECLARER, COLON_SYMBOL, STOP)) ++ { ++ reduce_branch (NEXT (q), BOUNDS); ++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, BOUNDS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, FORMAL_BOUNDS, DECLARER, STOP); ++ } ++ } ++ ++ /* [] DECL. */ ++ if (a68_whether (q, SUB_SYMBOL, DECLARER, STOP) && SUB (q) != NO_NODE) ++ { ++ reduce_branch (q, BOUNDS); ++ reduce (q, NO_NOTE, &siga, DECLARER, BOUNDS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, FORMAL_BOUNDS, DECLARER, STOP); ++ } ++ ++ /* () DECL. */ ++ if (a68_whether (q, OPEN_SYMBOL, DECLARER, STOP) && SUB (q) != NO_NODE) ++ { ++ if (a68_whether (q, OPEN_SYMBOL, DECLARER, COLON_SYMBOL, STOP)) ++ { ++ /* Catch e.g. (INT i) () INT:. */ ++ if (a68_is_formal_bounds (SUB (q))) ++ { ++ reduce_branch (q, BOUNDS); ++ reduce (q, NO_NOTE, &siga, DECLARER, BOUNDS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, FORMAL_BOUNDS, DECLARER, STOP); ++ } ++ } ++ else ++ { ++ reduce_branch (q, BOUNDS); ++ reduce (q, NO_NOTE, &siga, DECLARER, BOUNDS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, FORMAL_BOUNDS, DECLARER, STOP); ++ } ++ } ++ } ++ ++ /* PROC DECL, PROC () DECL, OP () DECL. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ int a = ATTRIBUTE (q); ++ if (a == REF_SYMBOL) ++ reduce (q, NO_NOTE, &siga, DECLARER, REF_SYMBOL, DECLARER, STOP); ++ else if (a == PROC_SYMBOL) ++ { ++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, FORMAL_DECLARERS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, VOID_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, FORMAL_DECLARERS, VOID_SYMBOL, STOP); ++ } ++ else if (a == OP_SYMBOL) ++ { ++ reduce (q, NO_NOTE, &siga, OPERATOR_PLAN, OP_SYMBOL, FORMAL_DECLARERS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, OPERATOR_PLAN, OP_SYMBOL, FORMAL_DECLARERS, VOID_SYMBOL, STOP); ++ } ++ } ++ } ++ ++ /* Reduce packs etcetera. */ ++ if (expect == STRUCTURE_PACK) ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD, DECLARER, IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD, STRUCTURED_FIELD, COMMA_SYMBOL, IDENTIFIER, STOP); ++ } ++ } ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD, STOP); ++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD_LIST, ++ COMMA_SYMBOL, STRUCTURED_FIELD, STOP); ++ reduce (q, strange_separator, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD_LIST, ++ STRUCTURED_FIELD, STOP); ++ reduce (q, strange_separator, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD_LIST, ++ SEMI_SYMBOL, STRUCTURED_FIELD, STOP); ++ } ++ } ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, STRUCTURE_PACK, OPEN_SYMBOL, STRUCTURED_FIELD_LIST, ++ CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == PARAMETER_PACK) ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, PARAMETER, DECLARER, IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, &siga, PARAMETER, PARAMETER, COMMA_SYMBOL, IDENTIFIER, STOP); ++ } ++ } ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, PARAMETER_LIST, PARAMETER, STOP); ++ reduce (q, NO_NOTE, &siga, PARAMETER_LIST, PARAMETER_LIST, COMMA_SYMBOL, PARAMETER, STOP); ++ } ++ } ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, PARAMETER_PACK, OPEN_SYMBOL, PARAMETER_LIST, ++ CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == FORMAL_DECLARERS) ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, FORMAL_DECLARERS_LIST, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, FORMAL_DECLARERS_LIST, FORMAL_DECLARERS_LIST, ++ COMMA_SYMBOL, DECLARER, STOP); ++ reduce (q, strange_separator, &siga, FORMAL_DECLARERS_LIST, FORMAL_DECLARERS_LIST, ++ SEMI_SYMBOL, DECLARER, STOP); ++ reduce (q, strange_separator, &siga, FORMAL_DECLARERS_LIST, FORMAL_DECLARERS_LIST, ++ DECLARER, STOP); ++ } ++ } ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, FORMAL_DECLARERS, OPEN_SYMBOL, FORMAL_DECLARERS_LIST, ++ CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == UNION_PACK) ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, VOID_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ COMMA_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ COMMA_SYMBOL, VOID_SYMBOL, STOP); ++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ SEMI_SYMBOL, DECLARER, STOP); ++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ SEMI_SYMBOL, VOID_SYMBOL, STOP); ++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ DECLARER, STOP); ++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ VOID_SYMBOL, STOP); ++ } ++ } ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, UNION_PACK, OPEN_SYMBOL, UNION_DECLARER_LIST, ++ CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == SPECIFIER) ++ { ++ reduce (p, NO_NOTE, NO_TICK, SPECIFIER, OPEN_SYMBOL, DECLARER, IDENTIFIER, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, SPECIFIER, OPEN_SYMBOL, DECLARER, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, SPECIFIER, OPEN_SYMBOL, VOID_SYMBOL, CLOSE_SYMBOL, STOP); ++ } ++ else ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (a68_whether (q, OPEN_SYMBOL, COLON_SYMBOL, STOP) ++ && !(expect == GENERIC_ARGUMENT || expect == BOUNDS)) ++ { ++ if (a68_is_one_of (p, IN_SYMBOL, THEN_BAR_SYMBOL, STOP)) ++ reduce_branch (q, SPECIFIER); ++ } ++ if (a68_whether (q, OPEN_SYMBOL, DECLARER, COLON_SYMBOL, STOP)) ++ reduce_branch (q, PARAMETER_PACK); ++ if (a68_whether (q, OPEN_SYMBOL, VOID_SYMBOL, COLON_SYMBOL, STOP)) ++ reduce_branch (q, PARAMETER_PACK); ++ } ++ } ++} ++ ++/* Handle cases that need reducing from right-to-left. */ ++ ++static void ++reduce_right_to_left_constructs (NODE_T *p) ++{ ++ /* Here are cases that need reducing from right-to-left whereas many things ++ can be reduced left-to-right. Assignations are a notable example; one ++ could discuss whether it would not be more natural to write 1 =: k instead ++ of k := 1. (jemarch: MARY did just that.) The latter is said to be more ++ natural, or it could be just computing history. Meanwhile we use this ++ routine. */ ++ ++ if (p != NO_NODE) ++ { ++ reduce_right_to_left_constructs (NEXT (p)); ++ /* Assignations. */ ++ if (IS (p, TERTIARY)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, TERTIARY, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, IDENTITY_RELATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, AND_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, OR_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, JUMP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, SKIP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, ASSIGNATION, STOP); ++ } ++ ++ /* Routine texts with parameter pack. */ ++ else if (IS (p, PARAMETER_PACK)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, ASSIGNATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, IDENTITY_RELATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL,AND_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, OR_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, JUMP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, SKIP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, TERTIARY, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, ASSIGNATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, IDENTITY_RELATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, AND_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, OR_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, JUMP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, SKIP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, TERTIARY, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, ROUTINE_TEXT, STOP); ++ } ++ /* Routine texts without parameter pack. */ ++ else if (IS (p, DECLARER)) ++ { ++ if (!(PREVIOUS (p) != NO_NODE && IS (PREVIOUS (p), PARAMETER_PACK))) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, ASSIGNATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, IDENTITY_RELATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, AND_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, OR_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, JUMP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, SKIP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, TERTIARY, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, ROUTINE_TEXT, STOP); ++ } ++ } ++ else if (IS (p, VOID_SYMBOL)) ++ { ++ if (!(PREVIOUS (p) != NO_NODE && IS (PREVIOUS (p), PARAMETER_PACK))) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, ASSIGNATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, IDENTITY_RELATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, AND_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, OR_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, JUMP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, SKIP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, TERTIARY, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, ROUTINE_TEXT, STOP); ++ } ++ } ++ } ++} ++ ++/* Reduce primary elements. */ ++ ++static void ++reduce_primary_parts (NODE_T *p, enum a68_attribute expect) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (a68_whether (q, IDENTIFIER, OF_SYMBOL, STOP)) ++ ATTRIBUTE (q) = FIELD_IDENTIFIER; ++ ++ reduce (q, NO_NOTE, NO_TICK, NIHIL, NIL_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SKIP, SKIP_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SELECTOR, FIELD_IDENTIFIER, OF_SYMBOL, STOP); ++ /* JUMPs without GOTO are resolved later. */ ++ reduce (q, NO_NOTE, NO_TICK, JUMP, GOTO_SYMBOL, IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, LONGETY, INT_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, LONGETY, REAL_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, LONGETY, BITS_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, SHORTETY, INT_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, SHORTETY, REAL_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, SHORTETY, BITS_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, INT_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, REAL_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, BITS_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, ROW_CHAR_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, TRUE_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, FALSE_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, EMPTY_SYMBOL, STOP); ++ if (expect == SERIAL_CLAUSE || expect == ENQUIRY_CLAUSE || expect == SOME_CLAUSE) ++ { ++ bool siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, LABEL, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ } ++ } ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, ACCESS_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, LOOP_CLAUSE, STOP); ++ } ++} ++ ++/* Reduce primaries completely. */ ++ ++static void ++reduce_primaries (NODE_T *p, enum a68_attribute expect) ++{ ++ NODE_T *q = p; ++ while (q != NO_NODE) ++ { ++ bool fwd = true, siga; ++ /* Primaries excepts call and slice. */ ++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, CAST, DECLARER, ENCLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, CAST, VOID_SYMBOL, ENCLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ASSERTION, ASSERT_SYMBOL, ENCLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, CAST, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, ENCLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, FORMAT_TEXT, STOP); ++ /* Call and slice. */ ++ siga = true; ++ while (siga) ++ { ++ NODE_T *x = NEXT (q); ++ ++ siga = false; ++ if (IS (q, PRIMARY) && x != NO_NODE) ++ { ++ if (IS (x, OPEN_SYMBOL)) ++ { ++ reduce_branch (NEXT (q), GENERIC_ARGUMENT); ++ reduce (q, NO_NOTE, &siga, SPECIFICATION, PRIMARY, GENERIC_ARGUMENT, STOP); ++ reduce (q, NO_NOTE, &siga, PRIMARY, SPECIFICATION, STOP); ++ } ++ else if (IS (x, SUB_SYMBOL)) ++ { ++ reduce_branch (NEXT (q), GENERIC_ARGUMENT); ++ reduce (q, NO_NOTE, &siga, SPECIFICATION, PRIMARY, GENERIC_ARGUMENT, STOP); ++ reduce (q, NO_NOTE, &siga, PRIMARY, SPECIFICATION, STOP); ++ } ++ } ++ } ++ ++ /* Now that call and slice are known, reduce remaining ( .. ). */ ++ if (IS (q, OPEN_SYMBOL) && SUB (q) != NO_NODE) ++ { ++ reduce_branch (q, SOME_CLAUSE); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); ++ if (PREVIOUS (q) != NO_NODE) ++ { ++ BACKWARD (q); ++ fwd = false; ++ } ++ } ++ ++ /* Format text items. */ ++ if (expect == FORMAT_TEXT) ++ { ++ NODE_T *r; ++ ++ for (r = p; r != NO_NODE; FORWARD (r)) ++ { ++ reduce (r, NO_NOTE, NO_TICK, DYNAMIC_REPLICATOR, FORMAT_ITEM_N, ENCLOSED_CLAUSE, STOP); ++ reduce (r, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_G, ENCLOSED_CLAUSE, STOP); ++ reduce (r, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_H, ENCLOSED_CLAUSE, STOP); ++ reduce (r, NO_NOTE, NO_TICK, FORMAT_PATTERN, FORMAT_ITEM_F, ENCLOSED_CLAUSE, STOP); ++ } ++ } ++ if (fwd) ++ FORWARD (q); ++ } ++} ++ ++/* Enforce that ambiguous patterns are separated by commas. */ ++ ++static void ++ambiguous_patterns (NODE_T *p) ++{ ++ /* Example: printf (($+d.2d +d.2d$, 1, 2)) can produce either "+1.00 +2.00" ++ or "+1+002.00". A comma must be supplied to resolve the ambiguity. ++ ++ The obvious thing would be to weave this into the syntax, letting the BU ++ parser sort it out. But the C-style patterns do not suffer from Algol 68 ++ pattern ambiguity, so by solving it this way we maximise freedom in ++ writing the patterns as we want without introducing two "kinds" of ++ patterns, and so we have shorter routines for implementing formatted ++ transput. This is a pragmatic system. */ ++ NODE_T *q, *last_pat = NO_NODE; ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ switch (ATTRIBUTE (q)) ++ { ++ /* These are the potentially ambiguous patterns. */ ++ case INTEGRAL_PATTERN: ++ case REAL_PATTERN: ++ case COMPLEX_PATTERN: ++ case BITS_PATTERN: ++ if (last_pat != NO_NODE) ++ a68_error (q, "A and A must be separated by a comma-symbol", ++ ATTRIBUTE (last_pat), ATTRIBUTE (q)); ++ last_pat = q; ++ break; ++ case COMMA_SYMBOL: ++ last_pat = NO_NODE; ++ break; ++ default: ++ break; ++ } ++ } ++} ++ ++/* Reduce C format texts completely. */ ++ ++static void ++reduce_c_pattern (NODE_T *p, int pr, int let) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, REPLICATOR, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, REPLICATOR, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, REPLICATOR, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, FORMAT_ITEM_POINT, REPLICATOR, ++ let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, REPLICATOR, FORMAT_ITEM_POINT, ++ REPLICATOR, let, STOP); ++ } ++} ++ ++/* Reduce format texts completely. */ ++ ++static void ++reduce_format_texts (NODE_T *p) ++{ ++ /* Replicators. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, REPLICATOR, STATIC_REPLICATOR, STOP); ++ reduce (q, NO_NOTE, NO_TICK, REPLICATOR, DYNAMIC_REPLICATOR, STOP); ++ } ++ ++ /* "OTHER" patterns. */ ++ reduce_c_pattern (p, BITS_C_PATTERN, FORMAT_ITEM_B); ++ reduce_c_pattern (p, BITS_C_PATTERN, FORMAT_ITEM_O); ++ reduce_c_pattern (p, BITS_C_PATTERN, FORMAT_ITEM_X); ++ reduce_c_pattern (p, CHAR_C_PATTERN, FORMAT_ITEM_C); ++ reduce_c_pattern (p, FIXED_C_PATTERN, FORMAT_ITEM_F); ++ reduce_c_pattern (p, FLOAT_C_PATTERN, FORMAT_ITEM_E); ++ reduce_c_pattern (p, GENERAL_C_PATTERN, FORMAT_ITEM_G); ++ reduce_c_pattern (p, INTEGRAL_C_PATTERN, FORMAT_ITEM_D); ++ reduce_c_pattern (p, INTEGRAL_C_PATTERN, FORMAT_ITEM_I); ++ reduce_c_pattern (p, STRING_C_PATTERN, FORMAT_ITEM_S); ++ /* Radix frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, RADIX_FRAME, REPLICATOR, FORMAT_ITEM_R, STOP); ++ ++ /* Insertions. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_X, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_Y, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_L, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_P, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_Q, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_K, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, LITERAL, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, REPLICATOR, INSERTION, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, INSERTION, INSERTION, INSERTION, STOP); ++ } ++ } ++ ++ /* Replicated suppressible frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, REPLICATOR, FORMAT_ITEM_S, FORMAT_ITEM_A, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, REPLICATOR, FORMAT_ITEM_S, FORMAT_ITEM_Z, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, REPLICATOR, FORMAT_ITEM_S, FORMAT_ITEM_D, STOP); ++ } ++ ++ /* Suppressible frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_A, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_Z, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_D, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_E_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_E, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_POINT_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_POINT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_I_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_I, STOP); ++ } ++ ++ /* Replicated frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, REPLICATOR, FORMAT_ITEM_A, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, REPLICATOR, FORMAT_ITEM_Z, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, REPLICATOR, FORMAT_ITEM_D, STOP); ++ } ++ ++ /* Frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, FORMAT_ITEM_A, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, FORMAT_ITEM_Z, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, FORMAT_ITEM_D, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_E_FRAME, FORMAT_ITEM_E, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_POINT_FRAME, FORMAT_ITEM_POINT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_I_FRAME, FORMAT_ITEM_I, STOP); ++ } ++ ++ /* Frames with an insertion. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, INSERTION, FORMAT_A_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, INSERTION, FORMAT_Z_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, INSERTION, FORMAT_D_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_E_FRAME, INSERTION, FORMAT_E_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_POINT_FRAME, INSERTION, FORMAT_POINT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_I_FRAME, INSERTION, FORMAT_I_FRAME, STOP); ++ } ++ ++ /* String patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, STRING_PATTERN, REPLICATOR, FORMAT_A_FRAME, STOP); ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, STRING_PATTERN, FORMAT_A_FRAME, STOP); ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, STRING_PATTERN, STRING_PATTERN, STRING_PATTERN, STOP); ++ reduce (q, NO_NOTE, &siga, STRING_PATTERN, STRING_PATTERN, INSERTION, STRING_PATTERN, STOP); ++ } ++ } ++ ++ /* Integral moulds. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_MOULD, FORMAT_Z_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_MOULD, FORMAT_D_FRAME, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, INTEGRAL_MOULD, INTEGRAL_MOULD, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, &siga, INTEGRAL_MOULD, INTEGRAL_MOULD, INSERTION, STOP); ++ } ++ } ++ ++ /* Sign moulds. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_ITEM_PLUS, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_ITEM_MINUS, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, FORMAT_ITEM_PLUS, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, FORMAT_ITEM_MINUS, STOP); ++ } ++ ++ /* Exponent frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, EXPONENT_FRAME, FORMAT_E_FRAME, SIGN_MOULD, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, NO_TICK, EXPONENT_FRAME, FORMAT_E_FRAME, INTEGRAL_MOULD, STOP); ++ } ++ ++ /* Real patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, ++ STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); ++ } ++ ++ /* Complex patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, COMPLEX_PATTERN, REAL_PATTERN, FORMAT_I_FRAME, REAL_PATTERN, STOP); ++ ++ /* Bits patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, BITS_PATTERN, RADIX_FRAME, INTEGRAL_MOULD, STOP); ++ ++ /* Integral patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_PATTERN, INTEGRAL_MOULD, STOP); ++ } ++ ++ /* Patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, BOOLEAN_PATTERN, FORMAT_ITEM_B, COLLECTION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, CHOICE_PATTERN, FORMAT_ITEM_C, COLLECTION, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, BOOLEAN_PATTERN, FORMAT_ITEM_B, STOP); ++ reduce (q, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_G, STOP); ++ reduce (q, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_H, STOP); ++ } ++ ++ ambiguous_patterns (p); ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, BITS_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, CHAR_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, FIXED_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, FLOAT_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, GENERAL_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, INTEGRAL_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, STRING_C_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, BITS_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, BOOLEAN_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, CHOICE_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, COMPLEX_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, FORMAT_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, GENERAL_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, INTEGRAL_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, REAL_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, STRING_PATTERN, STOP); ++ } ++ ++ /* Pictures. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, PICTURE, INSERTION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PICTURE, A68_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PICTURE, COLLECTION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PICTURE, REPLICATOR, COLLECTION, STOP); ++ } ++ ++ /* Picture lists. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, PICTURE)) ++ { ++ bool siga = true; ++ reduce (q, NO_NOTE, NO_TICK, PICTURE_LIST, PICTURE, STOP); ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, PICTURE_LIST, PICTURE_LIST, COMMA_SYMBOL, PICTURE, STOP); ++ /* We filtered ambiguous patterns, so commas may be omitted */ ++ reduce (q, NO_NOTE, &siga, PICTURE_LIST, PICTURE_LIST, PICTURE, STOP); ++ } ++ } ++ } ++} ++ ++/* Reduce secondaries completely. */ ++ ++static void ++reduce_secondaries (NODE_T *p) ++{ ++ NODE_T *q; bool siga; ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, SECONDARY, PRIMARY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, GENERATOR, LOC_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, GENERATOR, HEAP_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SECONDARY, GENERATOR, STOP); ++ } ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ for (q = p; NEXT (q) != NO_NODE; FORWARD (q)) ++ ; ++ for (; q != NO_NODE; BACKWARD (q)) ++ { ++ reduce (q, NO_NOTE, &siga, SELECTION, SELECTOR, SECONDARY, STOP); ++ reduce (q, NO_NOTE, &siga, SECONDARY, SELECTION, STOP); ++ } ++ } ++} ++ ++/* Whether Q is an operator with priority K. */ ++ ++static int ++operator_with_priority (NODE_T *q, int k) ++{ ++ return NEXT (q) != NO_NODE ++ && ATTRIBUTE (NEXT (q)) == OPERATOR && PRIO (INFO (NEXT (q))) == k; ++} ++ ++/* Reduce formulae. */ ++ ++static void ++reduce_formulae (NODE_T * p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (a68_is_one_of (q, OPERATOR, SECONDARY, STOP)) ++ q = reduce_dyadic (q, STOP); ++ else ++ FORWARD (q); ++ } ++ ++ /* Reduce the expression. */ ++ for (int prio = MAX_PRIORITY; prio >= 0; prio--) ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (operator_with_priority (q, prio)) ++ { ++ bool siga = false; ++ NODE_T *op = NEXT (q); ++ if (IS (q, SECONDARY)) ++ { ++ reduce (q, NO_NOTE, &siga, FORMULA, SECONDARY, OPERATOR, SECONDARY, STOP); ++ reduce (q, NO_NOTE, &siga, FORMULA, SECONDARY, OPERATOR, MONADIC_FORMULA, STOP); ++ reduce (q, NO_NOTE, &siga, FORMULA, SECONDARY, OPERATOR, FORMULA, STOP); ++ } ++ else if (IS (q, MONADIC_FORMULA)) ++ { ++ reduce (q, NO_NOTE, &siga, FORMULA, MONADIC_FORMULA, OPERATOR, SECONDARY, STOP); ++ reduce (q, NO_NOTE, &siga, FORMULA, MONADIC_FORMULA, OPERATOR, MONADIC_FORMULA, STOP); ++ reduce (q, NO_NOTE, &siga, FORMULA, MONADIC_FORMULA, OPERATOR, FORMULA, STOP); ++ } ++ if (prio == 0 && siga) ++ a68_error (op, "S has no priority declaration"); ++ siga = true; ++ while (siga) ++ { ++ NODE_T *op2 = NEXT (q); ++ siga = false; ++ if (operator_with_priority (q, prio)) ++ reduce (q, NO_NOTE, &siga, FORMULA, FORMULA, OPERATOR, SECONDARY, STOP); ++ if (operator_with_priority (q, prio)) ++ reduce (q, NO_NOTE, &siga, FORMULA, FORMULA, OPERATOR, MONADIC_FORMULA, STOP); ++ if (operator_with_priority (q, prio)) ++ reduce (q, NO_NOTE, &siga, FORMULA, FORMULA, OPERATOR, FORMULA, STOP); ++ if (prio == 0 && siga) ++ a68_error (op2, "S has no priority declaration"); ++ } ++ } ++ } ++ } ++} ++ ++/* Reduce dyadic expressions. */ ++ ++static NODE_T * ++reduce_dyadic (NODE_T *p, int u) ++{ ++ /* We work inside out - higher priority expressions get reduced first. */ ++ if (u > MAX_PRIORITY) ++ { ++ if (p == NO_NODE) ++ return NO_NODE; ++ else if (IS (p, OPERATOR)) ++ { ++ /* Reduce monadic formulas. */ ++ NODE_T *q = p; ++ bool siga; ++ do ++ { ++ PRIO (INFO (q)) = 10; ++ siga = ((NEXT (q) != NO_NODE) && (IS (NEXT (q), OPERATOR))); ++ if (siga) ++ FORWARD (q); ++ } ++ while (siga); ++ reduce (q, NO_NOTE, NO_TICK, MONADIC_FORMULA, OPERATOR, SECONDARY, STOP); ++ while (q != p) ++ { ++ BACKWARD (q); ++ reduce (q, NO_NOTE, NO_TICK, MONADIC_FORMULA, OPERATOR, MONADIC_FORMULA, STOP); ++ } ++ } ++ FORWARD (p); ++ } ++ else ++ { ++ p = reduce_dyadic (p, u + 1); ++ while (p != NO_NODE && IS (p, OPERATOR) && PRIO (INFO (p)) == u) ++ { ++ FORWARD (p); ++ p = reduce_dyadic (p, u + 1); ++ } ++ } ++ return p; ++} ++ ++/* Reduce tertiaries completely. */ ++ ++static void ++reduce_tertiaries (NODE_T *p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, TERTIARY, NIHIL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMULA, MONADIC_FORMULA, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TERTIARY, FORMULA, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TERTIARY, SECONDARY, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, IDENTITY_RELATION, TERTIARY, IS_SYMBOL, TERTIARY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, IDENTITY_RELATION, TERTIARY, ISNT_SYMBOL, TERTIARY, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, AND_FUNCTION, TERTIARY, ANDF_SYMBOL, TERTIARY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, OR_FUNCTION, TERTIARY, ORF_SYMBOL, TERTIARY, STOP); ++ } ++} ++ ++/* Reduce units. */ ++ ++static void ++reduce_units (NODE_T * p) ++{ ++ /* Stray ~ is a SKIP. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, OPERATOR) && IS_LITERALLY (q, "~")) ++ ATTRIBUTE (q) = SKIP; ++ } ++ ++ /* Reduce units. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, UNIT, ASSIGNATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, IDENTITY_RELATION, STOP); ++ reduce (q, a68_extension, NO_TICK, UNIT, AND_FUNCTION, STOP); ++ reduce (q, a68_extension, NO_TICK, UNIT, OR_FUNCTION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, JUMP, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, SKIP, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, TERTIARY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, ASSERTION, STOP); ++ } ++} ++ ++/* Reduce_generic arguments. */ ++ ++static void ++reduce_generic_arguments (NODE_T *p) ++{ ++ NODE_T *q; bool siga; /* In this scope. */ ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, UNIT)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, UNIT, AT_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, AT_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, STOP); ++ } ++ else if (IS (q, COLON_SYMBOL)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, UNIT, AT_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, AT_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, STOP); ++ } ++ } ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, AT_SYMBOL, UNIT, STOP); ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, AT_SYMBOL, UNIT, STOP); ++ for (q = p; q && NEXT (q); FORWARD (q)) ++ { ++ if (IS (q, COMMA_SYMBOL)) ++ { ++ if (!(ATTRIBUTE (NEXT (q)) == UNIT || ATTRIBUTE (NEXT (q)) == TRIMMER)) ++ pad_node (q, TRIMMER); ++ } ++ else ++ { ++ if (IS (NEXT (q), COMMA_SYMBOL)) ++ { ++ if (!IS (q, UNIT) && !IS (q, TRIMMER)) ++ pad_node (q, TRIMMER); ++ } ++ } ++ } ++ ++ q = NEXT (p); ++ if (q == NO_NODE) ++ gcc_unreachable (); ++ reduce (q, NO_NOTE, NO_TICK, GENERIC_ARGUMENT_LIST, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, GENERIC_ARGUMENT_LIST, TRIMMER, STOP); ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, COMMA_SYMBOL, TRIMMER, STOP); ++ reduce (q, strange_separator, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, UNIT, STOP); ++ reduce (q, strange_separator, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, TRIMMER, STOP); ++ } ++ while (siga); ++} ++ ++/* Reduce bounds. */ ++ ++static void ++reduce_bounds (NODE_T *p) ++{ ++ NODE_T *q; bool siga; ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, BOUND, UNIT, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, BOUND, UNIT, STOP); ++ } ++ q = NEXT (p); ++ reduce (q, NO_NOTE, NO_TICK, BOUNDS_LIST, BOUND, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAL_BOUNDS_LIST, COMMA_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ALT_FORMAL_BOUNDS_LIST, COLON_SYMBOL, STOP); ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, BOUNDS_LIST, BOUNDS_LIST, COMMA_SYMBOL, BOUND, STOP); ++ reduce (q, NO_NOTE, &siga, FORMAL_BOUNDS_LIST, FORMAL_BOUNDS_LIST, COMMA_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, ALT_FORMAL_BOUNDS_LIST, FORMAL_BOUNDS_LIST, COLON_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, FORMAL_BOUNDS_LIST, ALT_FORMAL_BOUNDS_LIST, COMMA_SYMBOL, STOP); ++ reduce (q, strange_separator, &siga, BOUNDS_LIST, BOUNDS_LIST, BOUND, STOP); ++ } ++ while (siga); ++} ++ ++/* Reduce argument packs. */ ++ ++static void ++reduce_arguments (NODE_T *p) ++{ ++ if (NEXT (p) != NO_NODE) ++ { ++ NODE_T *q = NEXT (p); ++ bool siga; ++ reduce (q, NO_NOTE, NO_TICK, ARGUMENT_LIST, UNIT, STOP); ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ARGUMENT_LIST, ARGUMENT_LIST, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ARGUMENT_LIST, ARGUMENT_LIST, UNIT, STOP); ++ } ++ while (siga); ++ } ++} ++ ++/* Reduce declarations. */ ++ ++static void ++reduce_basic_declarations (NODE_T *p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ /* Publicized declarations. */ ++ reduce (q, NO_NOTE, NO_TICK, ++ PRIORITY_DECLARATION, PUBLIC_SYMBOL, ++ PRIO_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, PRIORITY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ MODE_DECLARATION, PUBLIC_SYMBOL, ++ MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ MODE_DECLARATION, PUBLIC_SYMBOL, ++ MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, VOID_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_DECLARATION, PUBLIC_SYMBOL, ++ PROC_SYMBOL, DEFINING_IDENTIFIER, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ROUTINE_TEXT, ++ STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ QUALIFIER, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ++ ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ BRIEF_OPERATOR_DECLARATION, PUBLIC_SYMBOL, ++ OP_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++ ++ reduce (q, NO_NOTE, NO_TICK, ++ PRIORITY_DECLARATION, PRIO_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, PRIORITY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ MODE_DECLARATION, MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ MODE_DECLARATION, MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, VOID_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ROUTINE_TEXT, ++ STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, QUALIFIER, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ++ ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ BRIEF_OPERATOR_DECLARATION, OP_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++#if 0 ++ /* XXX for local module definitions */ ++ reduce (q, NO_NOTE, NO_TICK, ++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, MODULE_TEXT, STOP); ++#endif ++ /* Errors. */ ++ reduce (q, strange_tokens, NO_TICK, ++ PRIORITY_DECLARATION, PRIO_SYMBOL, -DEFINING_OPERATOR, -EQUALS_SYMBOL, -PRIORITY, STOP); ++ reduce (q, strange_tokens, NO_TICK, ++ MODE_DECLARATION, MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, -DECLARER, STOP); ++ reduce (q, strange_tokens, NO_TICK, ++ PROCEDURE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, EQUALS_SYMBOL, -ROUTINE_TEXT, STOP); ++ reduce (q, strange_tokens, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, -ROUTINE_TEXT, ++ STOP); ++ reduce (q, strange_tokens, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, QUALIFIER, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ++ -ROUTINE_TEXT, STOP); ++ reduce (q, strange_tokens, NO_TICK, ++ BRIEF_OPERATOR_DECLARATION, OP_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, -ROUTINE_TEXT, STOP); ++#if 0 ++ /* XXX for local module definitions */ ++ reduce (q, strange_tokens, NO_TICK, ++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, -MODULE_TEXT, STOP); ++#endif ++ /* Errors. WILDCARD catches TERTIARY which catches IDENTIFIER. */ ++ reduce (q, strange_tokens, NO_TICK, PROCEDURE_DECLARATION, PROC_SYMBOL, WILDCARD, ROUTINE_TEXT, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ PRIORITY_DECLARATION, PRIORITY_DECLARATION, COMMA_SYMBOL, DEFINING_OPERATOR, ++ EQUALS_SYMBOL, PRIORITY, STOP); ++ reduce (q, NO_NOTE, &siga, ++ MODE_DECLARATION, MODE_DECLARATION, COMMA_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, ++ DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, ++ MODE_DECLARATION, MODE_DECLARATION, COMMA_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, ++ VOID_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, ++ PROCEDURE_DECLARATION, PROCEDURE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, ++ EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ PROCEDURE_VARIABLE_DECLARATION, PROCEDURE_VARIABLE_DECLARATION, COMMA_SYMBOL, ++ DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ BRIEF_OPERATOR_DECLARATION, BRIEF_OPERATOR_DECLARATION, COMMA_SYMBOL, ++ DEFINING_OPERATOR, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++#if 0 ++ /* XXX for local module definitions */ ++ reduce (q, NO_NOTE, &siga, ++ MODULE_DECLARATION, MODULE_DECLARATION, COMMA_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, ++ MODULE_TEXT, STOP); ++#endif ++ /* Errors. WILDCARD catches TERTIARY which catches IDENTIFIER. */ ++ reduce (q, strange_tokens, &siga, ++ PROCEDURE_DECLARATION, PROCEDURE_DECLARATION, COMMA_SYMBOL, WILDCARD, ROUTINE_TEXT, STOP); ++ } ++ while (siga); ++ } ++} ++ ++/* Reduce declaration lists. */ ++ ++static void ++reduce_declaration_lists (NODE_T *p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, ++ IDENTITY_DECLARATION, PUBLIC_SYMBOL, ++ DECLARER, DEFINING_IDENTIFIER, EQUALS_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ QUALIFIER, DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ QUALIFIER, DECLARER, DEFINING_IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ DECLARER, DEFINING_IDENTIFIER, STOP); ++ ++ reduce (q, NO_NOTE, NO_TICK, ++ IDENTITY_DECLARATION, DECLARER, DEFINING_IDENTIFIER, EQUALS_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, QUALIFIER, DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, QUALIFIER, DECLARER, DEFINING_IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, DECLARER, DEFINING_IDENTIFIER, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ IDENTITY_DECLARATION, IDENTITY_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, ++ EQUALS_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ VARIABLE_DECLARATION, VARIABLE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, ++ ASSIGN_SYMBOL, UNIT, STOP); ++ if (!a68_whether (q, VARIABLE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, ++ ASSIGN_SYMBOL, UNIT, STOP)) ++ reduce (q, NO_NOTE, &siga, ++ VARIABLE_DECLARATION, VARIABLE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, STOP); ++ } ++ while (siga); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, ++ OPERATOR_DECLARATION, PUBLIC_SYMBOL, ++ OPERATOR_PLAN, DEFINING_OPERATOR, EQUALS_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ OPERATOR_DECLARATION, OPERATOR_PLAN, DEFINING_OPERATOR, EQUALS_SYMBOL, UNIT, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ OPERATOR_DECLARATION, OPERATOR_DECLARATION, COMMA_SYMBOL, DEFINING_OPERATOR, ++ EQUALS_SYMBOL, UNIT, STOP); ++ } ++ while (siga); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, MODE_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, PRIORITY_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, BRIEF_OPERATOR_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, OPERATOR_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, IDENTITY_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, PROCEDURE_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, PROCEDURE_VARIABLE_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, VARIABLE_DECLARATION, STOP); ++#if 0 ++ /* XXX for local module definitions */ ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, MODULE_DECLARATION, STOP); ++#endif ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ DECLARATION_LIST, DECLARATION_LIST, COMMA_SYMBOL, DECLARATION_LIST, STOP); ++ } ++ while (siga); ++ } ++} ++ ++/* Reduce module text. */ ++ ++static void ++reduce_module_texts (NODE_T *p) ++{ ++ if (IS (p, ALT_ACCESS_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ++ REVELATION, ALT_ACCESS_SYMBOL, PUBLIC_SYMBOL, MODULE_INDICANT, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ REVELATION, ALT_ACCESS_SYMBOL, MODULE_INDICANT, STOP); ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (p, NO_NOTE, &siga, ++ REVELATION, REVELATION, COMMA_SYMBOL, PUBLIC_SYMBOL, MODULE_INDICANT, STOP); ++ reduce (p, NO_NOTE, &siga, ++ REVELATION, REVELATION, COMMA_SYMBOL, MODULE_INDICANT, STOP); ++ } ++ while (siga); ++ reduce (p, NO_NOTE, NO_TICK, REVELATION_PART, REVELATION, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, REVELATION_PART, DEF_PART, POSTLUDE_PART, FED_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, REVELATION_PART, DEF_PART, FED_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, DEF_PART, POSTLUDE_PART, FED_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, DEF_PART, FED_SYMBOL, STOP); ++ } ++} ++ ++/* Reduce def-parts and postlude-parts. ++ Note that revelations are reduced in reduce_module_texts. */ ++ ++static void ++reduce_module_text_parts (NODE_T *p) ++{ ++ if (IS (p, DEF_SYMBOL)) ++ { ++ reduce_enquiry_clauses (p); ++ reduce (p, NO_NOTE, NO_TICK, DEF_PART, DEF_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ } ++ else if (IS (p, POSTLUDE_SYMBOL)) ++ { ++ reduce_serial_clauses (p); ++ reduce (p, NO_NOTE, NO_TICK, POSTLUDE_PART, POSTLUDE_SYMBOL, SERIAL_CLAUSE, STOP); ++ } ++} ++ ++/* Reduce serial clauses. */ ++ ++static void ++reduce_serial_clauses (NODE_T *p) ++{ ++ if (NEXT (p) != NO_NODE) ++ { ++ NODE_T *q = NEXT (p), *u; ++ bool siga, label_seen; ++ /* Check wrong exits. */ ++ for (u = q; u != NO_NODE; FORWARD (u)) ++ { ++ if (IS (u, EXIT_SYMBOL)) ++ { ++ if (NEXT (u) == NO_NODE || !IS (NEXT (u), LABELED_UNIT)) ++ a68_error (u, "S must be followed by a labeled unit"); ++ } ++ } ++ ++ /* Check wrong jumps and declarations. */ ++ for (u = q, label_seen = false; u != NO_NODE; FORWARD (u)) ++ { ++ if (IS (u, LABELED_UNIT)) ++ label_seen = true; ++ else if (IS (u, DECLARATION_LIST)) ++ { ++ if (label_seen) ++ a68_error (u, "declaration cannot follow a labeled unit"); ++ } ++ } ++ ++ /* Reduce serial clauses. */ ++ reduce (q, NO_NOTE, NO_TICK, SERIAL_CLAUSE, LABELED_UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SERIAL_CLAUSE, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INITIALISER_SERIES, DECLARATION_LIST, STOP); ++ do ++ { ++ siga = false; ++ if (IS (q, SERIAL_CLAUSE)) ++ { ++ reduce (q, NO_NOTE, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, SEMI_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, EXIT_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, SEMI_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ INITIALISER_SERIES, SERIAL_CLAUSE, SEMI_SYMBOL, DECLARATION_LIST, STOP); ++ /* Errors */ ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, COMMA_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, SERIAL_CLAUSE, COMMA_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, COLON_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, SERIAL_CLAUSE, COLON_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, SERIAL_CLAUSE, DECLARATION_LIST, STOP); ++ } ++ else if (IS (q, INITIALISER_SERIES)) ++ { ++ reduce (q, NO_NOTE, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, SEMI_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, SEMI_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, SEMI_SYMBOL, DECLARATION_LIST, STOP); ++ /* Errors */ ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, COMMA_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, COMMA_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, COLON_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, COLON_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, DECLARATION_LIST, STOP); ++ } ++ } ++ while (siga); ++ } ++} ++ ++/* Reduce enquiry clauses. */ ++ ++static void ++reduce_enquiry_clauses (NODE_T *p) ++{ ++ if (NEXT (p) != NO_NODE) ++ { ++ NODE_T *q = NEXT (p); ++ bool siga; ++ reduce (q, NO_NOTE, NO_TICK, ENQUIRY_CLAUSE, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INITIALISER_SERIES, DECLARATION_LIST, STOP); ++ do ++ { ++ siga = false; ++ if (IS (q, ENQUIRY_CLAUSE)) ++ { ++ reduce (q, NO_NOTE, &siga, ++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, SEMI_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ INITIALISER_SERIES, ENQUIRY_CLAUSE, SEMI_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, ENQUIRY_CLAUSE, COMMA_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, ENQUIRY_CLAUSE, COLON_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, ENQUIRY_CLAUSE, DECLARATION_LIST, STOP); ++ } ++ else if (IS (q, INITIALISER_SERIES)) ++ { ++ reduce (q, NO_NOTE, &siga, ++ ENQUIRY_CLAUSE, INITIALISER_SERIES, SEMI_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, SEMI_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, INITIALISER_SERIES, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, COMMA_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, INITIALISER_SERIES, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, COLON_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, INITIALISER_SERIES, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, DECLARATION_LIST, STOP); ++ } ++ } ++ while (siga); ++ } ++} ++ ++/* Reduce collateral clauses. */ ++ ++static void ++reduce_collateral_clauses (NODE_T *p) ++{ ++ if (NEXT (p) != NO_NODE) ++ { ++ NODE_T *q = NEXT (p); ++ if (IS (q, UNIT)) ++ { ++ bool siga; ++ reduce (q, NO_NOTE, NO_TICK, UNIT_LIST, UNIT, STOP); ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, UNIT_LIST, UNIT_LIST, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, UNIT_LIST, UNIT_LIST, UNIT, STOP); ++ } ++ while (siga); ++ } ++ else if (IS (q, SPECIFIED_UNIT)) ++ { ++ bool siga; ++ reduce (q, NO_NOTE, NO_TICK, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP); ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ SPECIFIED_UNIT_LIST, SPECIFIED_UNIT_LIST, COMMA_SYMBOL, SPECIFIED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SPECIFIED_UNIT_LIST, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP); ++ } ++ while (siga); ++ } ++ } ++} ++ ++/* Reduces enclosed clauses. */ ++ ++static void ++reduce_enclosed_clauses (NODE_T *q, enum a68_attribute expect) ++{ ++ NODE_T *p = q; ++ ++ if (SUB (p) == NO_NODE) ++ { ++ if (IS (p, FOR_SYMBOL)) ++ reduce (p, NO_NOTE, NO_TICK, FOR_PART, FOR_SYMBOL, DEFINING_IDENTIFIER, STOP); ++ else if (IS (p, OPEN_SYMBOL)) ++ { ++ if (expect == ENQUIRY_CLAUSE) ++ reduce (p, NO_NOTE, NO_TICK, OPEN_PART, OPEN_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ else if (expect == ARGUMENT) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ARGUMENT, OPEN_SYMBOL, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ARGUMENT, OPEN_SYMBOL, ARGUMENT_LIST, CLOSE_SYMBOL, STOP); ++ reduce (p, empty_clause, NO_TICK, ARGUMENT, OPEN_SYMBOL, INITIALISER_SERIES, CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == GENERIC_ARGUMENT) ++ { ++ if (a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP)) ++ { ++ pad_node (p, TRIMMER); ++ reduce (p, NO_NOTE, NO_TICK, GENERIC_ARGUMENT, OPEN_SYMBOL, TRIMMER, CLOSE_SYMBOL, STOP); ++ } ++ reduce (p, NO_NOTE, NO_TICK, ++ GENERIC_ARGUMENT, OPEN_SYMBOL, GENERIC_ARGUMENT_LIST, CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == BOUNDS) ++ { ++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, OPEN_SYMBOL, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, BOUNDS, OPEN_SYMBOL, BOUNDS_LIST, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, OPEN_SYMBOL, FORMAL_BOUNDS_LIST, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ FORMAL_BOUNDS, OPEN_SYMBOL, ALT_FORMAL_BOUNDS_LIST, CLOSE_SYMBOL, STOP); ++ } ++ else ++ { ++ reduce (p, NO_NOTE, NO_TICK, CLOSED_CLAUSE, OPEN_SYMBOL, SERIAL_CLAUSE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, OPEN_SYMBOL, UNIT_LIST, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, OPEN_SYMBOL, CLOSE_SYMBOL, STOP); ++ reduce (p, empty_clause, NO_TICK, ++ CLOSED_CLAUSE, OPEN_SYMBOL, INITIALISER_SERIES, CLOSE_SYMBOL, STOP); ++ } ++ } ++ else if (IS (p, SUB_SYMBOL)) ++ { ++ if (expect == GENERIC_ARGUMENT) ++ { ++ if (a68_whether (p, SUB_SYMBOL, BUS_SYMBOL, STOP)) ++ { ++ pad_node (p, TRIMMER); ++ reduce (p, NO_NOTE, NO_TICK, GENERIC_ARGUMENT, SUB_SYMBOL, TRIMMER, BUS_SYMBOL, STOP); ++ } ++ reduce (p, NO_NOTE, NO_TICK, ++ GENERIC_ARGUMENT, SUB_SYMBOL, GENERIC_ARGUMENT_LIST, BUS_SYMBOL, STOP); ++ } ++ else if (expect == BOUNDS) ++ { ++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, SUB_SYMBOL, BUS_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, BOUNDS, SUB_SYMBOL, BOUNDS_LIST, BUS_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, SUB_SYMBOL, FORMAL_BOUNDS_LIST, BUS_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, SUB_SYMBOL, ALT_FORMAL_BOUNDS_LIST, BUS_SYMBOL, STOP); ++ } ++ } ++ else if (IS (p, BEGIN_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, BEGIN_SYMBOL, UNIT_LIST, END_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, BEGIN_SYMBOL, END_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CLOSED_CLAUSE, BEGIN_SYMBOL, SERIAL_CLAUSE, END_SYMBOL, STOP); ++ reduce (p, empty_clause, NO_TICK, CLOSED_CLAUSE, BEGIN_SYMBOL, INITIALISER_SERIES, END_SYMBOL, STOP); ++ } ++ else if (IS (p, FORMAT_DELIMITER_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ++ FORMAT_TEXT, FORMAT_DELIMITER_SYMBOL, PICTURE_LIST, FORMAT_DELIMITER_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ FORMAT_TEXT, FORMAT_DELIMITER_SYMBOL, FORMAT_DELIMITER_SYMBOL, STOP); ++ } ++ else if (IS (p, FORMAT_OPEN_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ++ COLLECTION, FORMAT_OPEN_SYMBOL, PICTURE_LIST, FORMAT_CLOSE_SYMBOL, STOP); ++ } ++ else if (IS (p, ACCESS_SYMBOL)) ++ { ++ NODE_T *s; ++ for (s = p; s != NO_NODE; FORWARD (s)) ++ { ++ if (SUB (s) != NO_NODE) ++ { ++ // XXX why ++ if (IS (SUB (s), OPEN_SYMBOL)) ++ reduce_branch (s, SOME_CLAUSE); ++ else ++ reduce_branch (s, ENCLOSED_CLAUSE); ++ } ++ reduce (s, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, LOOP_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, ACCESS_CLAUSE, STOP); ++ } ++ // XXX reduce revelations ++ reduce (p, NO_NOTE, NO_TICK, ++ ACCESS_CLAUSE, ACCESS_SYMBOL, MODULE_INDICANT, ENCLOSED_CLAUSE, STOP); ++ } ++ else if (IS (p, IF_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, IF_PART, IF_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, IF_PART, IF_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, THEN_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, THEN_PART, THEN_SYMBOL, SERIAL_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, THEN_PART, THEN_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, ELSE_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ELSE_PART, ELSE_SYMBOL, SERIAL_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, ELSE_PART, ELSE_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, ELIF_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ELIF_IF_PART, ELIF_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ } ++ else if (IS (p, CASE_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CASE_PART, CASE_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, CASE_PART, CASE_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, IN_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CASE_IN_PART, IN_SYMBOL, UNIT_LIST, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONFORMITY_IN_PART, IN_SYMBOL, SPECIFIED_UNIT_LIST, STOP); ++ } ++ else if (IS (p, OUT_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, OUT_PART, OUT_SYMBOL, SERIAL_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, OUT_PART, OUT_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, OUSE_SYMBOL)) ++ reduce (p, NO_NOTE, NO_TICK, OUSE_PART, OUSE_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ else if (IS (p, THEN_BAR_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CHOICE, THEN_BAR_SYMBOL, SERIAL_CLAUSE, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CHOICE_CLAUSE, THEN_BAR_SYMBOL, UNIT_LIST, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONFORMITY_CHOICE, THEN_BAR_SYMBOL, SPECIFIED_UNIT_LIST, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONFORMITY_CHOICE, THEN_BAR_SYMBOL, SPECIFIED_UNIT, STOP); ++ reduce (p, empty_clause, NO_TICK, CHOICE, THEN_BAR_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, ELSE_BAR_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ELSE_OPEN_PART, ELSE_BAR_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, ELSE_OPEN_PART, ELSE_BAR_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, FROM_SYMBOL)) ++ reduce (p, NO_NOTE, NO_TICK, FROM_PART, FROM_SYMBOL, UNIT, STOP); ++ else if (IS (p, BY_SYMBOL)) ++ reduce (p, NO_NOTE, NO_TICK, BY_PART, BY_SYMBOL, UNIT, STOP); ++ else if (IS (p, TO_SYMBOL)) ++ reduce (p, NO_NOTE, NO_TICK, TO_PART, TO_SYMBOL, UNIT, STOP); ++ else if (IS (p, WHILE_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, WHILE_PART, WHILE_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, WHILE_PART, WHILE_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, DO_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, DO_PART, DO_SYMBOL, SERIAL_CLAUSE, OD_SYMBOL, STOP); ++ } ++ else if (IS (p, ALT_DO_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ALT_DO_PART, ALT_DO_SYMBOL, SERIAL_CLAUSE, OD_SYMBOL, STOP); ++ } ++ } ++ p = q; ++ if (SUB (p) != NO_NODE) ++ { ++ if (IS (p, OPEN_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, OPEN_PART, CHOICE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, OPEN_PART, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, OPEN_PART, CHOICE, BRIEF_ELIF_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, OPEN_PART, CASE_CHOICE_CLAUSE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, OPEN_PART, CASE_CHOICE_CLAUSE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, OPEN_PART, CASE_CHOICE_CLAUSE, BRIEF_OUSE_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, OPEN_PART, CONFORMITY_CHOICE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, OPEN_PART, CONFORMITY_CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, OPEN_PART, CONFORMITY_CHOICE, BRIEF_CONFORMITY_OUSE_PART, STOP); ++ } ++ else if (IS (p, ELSE_OPEN_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, BRIEF_ELIF_PART, ELSE_OPEN_PART, CHOICE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, BRIEF_ELIF_PART, ELSE_OPEN_PART, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, BRIEF_ELIF_PART, ELSE_OPEN_PART, CHOICE, BRIEF_ELIF_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ BRIEF_OUSE_PART, ELSE_OPEN_PART, CASE_CHOICE_CLAUSE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, BRIEF_OUSE_PART, ELSE_OPEN_PART, CASE_CHOICE_CLAUSE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ BRIEF_OUSE_PART, ELSE_OPEN_PART, CASE_CHOICE_CLAUSE, BRIEF_OUSE_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ BRIEF_CONFORMITY_OUSE_PART, ELSE_OPEN_PART, CONFORMITY_CHOICE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ BRIEF_CONFORMITY_OUSE_PART, ELSE_OPEN_PART, CONFORMITY_CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ BRIEF_CONFORMITY_OUSE_PART, ELSE_OPEN_PART, CONFORMITY_CHOICE, BRIEF_CONFORMITY_OUSE_PART, ++ STOP); ++ } ++ else if (IS (p, IF_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, IF_PART, THEN_PART, ELSE_PART, FI_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, IF_PART, THEN_PART, ELIF_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, IF_PART, THEN_PART, FI_SYMBOL, STOP); ++ } ++ else if (IS (p, ELIF_IF_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ELIF_PART, ELIF_IF_PART, THEN_PART, ELSE_PART, FI_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ELIF_PART, ELIF_IF_PART, THEN_PART, FI_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ELIF_PART, ELIF_IF_PART, THEN_PART, ELIF_PART, STOP); ++ } ++ else if (IS (p, CASE_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, CASE_PART, CASE_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, CASE_PART, CASE_IN_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, CASE_PART, CASE_IN_PART, CASE_OUSE_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, CASE_PART, CONFORMITY_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, CASE_PART, CONFORMITY_IN_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, CASE_PART, CONFORMITY_IN_PART, CONFORMITY_OUSE_PART, STOP); ++ } ++ else if (IS (p, OUSE_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CASE_OUSE_PART, OUSE_PART, CASE_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_OUSE_PART, OUSE_PART, CASE_IN_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_OUSE_PART, OUSE_PART, CASE_IN_PART, CASE_OUSE_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_OUSE_PART, OUSE_PART, CONFORMITY_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_OUSE_PART, OUSE_PART, CONFORMITY_IN_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_OUSE_PART, OUSE_PART, CONFORMITY_IN_PART, CONFORMITY_OUSE_PART, STOP); ++ } ++ else if (IS (p, FOR_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ++ LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, ALT_DO_PART, STOP); ++ } ++ else if (IS (p, FROM_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, ALT_DO_PART, STOP); ++ } ++ else if (IS (p, BY_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, ALT_DO_PART, STOP); ++ } ++ else if (IS (p, TO_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, TO_PART, ALT_DO_PART, STOP); ++ } ++ else if (IS (p, WHILE_PART)) ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, WHILE_PART, ALT_DO_PART, STOP); ++ else if (IS (p, DO_PART)) ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, DO_PART, STOP); ++ } ++} ++ ++/* Substitute reduction when a phrase could not be parsed. */ ++ ++static void ++recover_from_error (NODE_T * p, enum a68_attribute expect, bool suppress) ++{ ++ /* This routine does not do fancy things as that might introduce more ++ errors. */ ++ NODE_T *q = p; ++ if (p == NO_NODE) ++ return; ++ ++ if (expect == SOME_CLAUSE) ++ expect = serial_or_collateral (p); ++ ++ if (!suppress) ++ { ++ /* Give an error message. */ ++ NODE_T *w = p; ++ const char *seq = a68_phrase_to_text (p, &w); ++ if (strlen (seq) == 0) ++ { ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_error (w, "expected A", expect); ++ } ++ else ++ a68_error (w, "Y is an invalid A", seq, expect); ++ ++ if (ERROR_COUNT (&A68_JOB) >= MAX_ERRORS) ++ longjmp (A68_PARSER (bottom_up_crash_exit), 1); ++ } ++ ++ /* Try to prevent spurious diagnostics by guessing what was expected. */ ++ while (NEXT (q) != NO_NODE) ++ FORWARD (q); ++ ++ if (a68_is_one_of (p, BEGIN_SYMBOL, OPEN_SYMBOL, STOP)) ++ { ++ if (expect == ARGUMENT || expect == COLLATERAL_CLAUSE ++ || expect == PARAMETER_PACK || expect == STRUCTURE_PACK ++ || expect == UNION_PACK) ++ a68_make_sub (p, q, expect); ++ else if (expect == ENQUIRY_CLAUSE) ++ a68_make_sub (p, q, OPEN_PART); ++ else if (expect == FORMAL_DECLARERS) ++ a68_make_sub (p, q, FORMAL_DECLARERS); ++ else ++ a68_make_sub (p, q, CLOSED_CLAUSE); ++ } ++ else if (IS (p, FORMAT_DELIMITER_SYMBOL) && expect == FORMAT_TEXT) ++ a68_make_sub (p, q, FORMAT_TEXT); ++ else if (a68_is_one_of (p, THEN_BAR_SYMBOL, CHOICE, STOP)) ++ a68_make_sub (p, q, CHOICE); ++ else if (a68_is_one_of (p, IF_SYMBOL, IF_PART, STOP)) ++ a68_make_sub (p, q, IF_PART); ++ else if (a68_is_one_of (p, THEN_SYMBOL, THEN_PART, STOP)) ++ a68_make_sub (p, q, THEN_PART); ++ else if (a68_is_one_of (p, ELSE_SYMBOL, ELSE_PART, STOP)) ++ a68_make_sub (p, q, ELSE_PART); ++ else if (a68_is_one_of (p, ELIF_SYMBOL, ELIF_IF_PART, STOP)) ++ a68_make_sub (p, q, ELIF_IF_PART); ++ else if (a68_is_one_of (p, CASE_SYMBOL, CASE_PART, STOP)) ++ a68_make_sub (p, q, CASE_PART); ++ else if (a68_is_one_of (p, OUT_SYMBOL, OUT_PART, STOP)) ++ a68_make_sub (p, q, OUT_PART); ++ else if (a68_is_one_of (p, OUSE_SYMBOL, OUSE_PART, STOP)) ++ a68_make_sub (p, q, OUSE_PART); ++ else if (a68_is_one_of (p, FOR_SYMBOL, FOR_PART, STOP)) ++ a68_make_sub (p, q, FOR_PART); ++ else if (a68_is_one_of (p, FROM_SYMBOL, FROM_PART, STOP)) ++ a68_make_sub (p, q, FROM_PART); ++ else if (a68_is_one_of (p, BY_SYMBOL, BY_PART, STOP)) ++ a68_make_sub (p, q, BY_PART); ++ else if (a68_is_one_of (p, TO_SYMBOL, TO_PART, STOP)) ++ a68_make_sub (p, q, TO_PART); ++ else if (a68_is_one_of (p, WHILE_SYMBOL, WHILE_PART, STOP)) ++ a68_make_sub (p, q, WHILE_PART); ++ else if (a68_is_one_of (p, DO_SYMBOL, DO_PART, STOP)) ++ a68_make_sub (p, q, DO_PART); ++ else if (a68_is_one_of (p, ALT_DO_SYMBOL, ALT_DO_PART, STOP)) ++ a68_make_sub (p, q, ALT_DO_PART); ++ else if (a68_attribute_name (expect) != NO_TEXT) ++ a68_make_sub (p, q, expect); ++} ++ ++/* Heuristic aid in pinpointing errors. */ ++ ++static void ++reduce_erroneous_units (NODE_T *p) ++{ ++ /* Constructs are reduced to units in an attempt to limit spurious ++ diagnostics. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ /* Some implementations allow selection from a tertiary, when there is no ++ risk of ambiguity. GCC follows RR, so some extra attention here to ++ guide an unsuspecting user. */ ++ if (a68_whether (q, SELECTOR, -SECONDARY, STOP)) ++ { ++ a68_error (NEXT (q), "expected A", SECONDARY); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, SELECTOR, WILDCARD, STOP); ++ } ++ ++ /* Attention for identity relations that require tertiaries. */ ++ if (a68_whether (q, -TERTIARY, IS_SYMBOL, TERTIARY, STOP) ++ || a68_whether (q, TERTIARY, IS_SYMBOL, -TERTIARY, STOP) ++ || a68_whether (q, -TERTIARY, IS_SYMBOL, -TERTIARY, STOP)) ++ { ++ a68_error (NEXT (q), "expected A", TERTIARY); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, WILDCARD, IS_SYMBOL, WILDCARD, STOP); ++ } ++ else if (a68_whether (q, -TERTIARY, ISNT_SYMBOL, TERTIARY, STOP) ++ || a68_whether (q, TERTIARY, ISNT_SYMBOL, -TERTIARY, STOP) ++ || a68_whether (q, -TERTIARY, ISNT_SYMBOL, -TERTIARY, STOP)) ++ { ++ a68_error (NEXT (q), "expected A", TERTIARY); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, WILDCARD, ISNT_SYMBOL, WILDCARD, STOP); ++ } ++ } ++} ++ ++/* ++ * A posteriori checks of the syntax tree built by the BU parser. ++ */ ++ ++/* Driver for a posteriori error checking. */ ++ ++void ++a68_bottom_up_error_check (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, BOOLEAN_PATTERN)) ++ { ++ int k = 0; ++ a68_count_pictures (SUB (p), &k); ++ if (!(k == 0 || k == 2)) ++ a68_error (p, "incorrect number of pictures for A", ++ ATTRIBUTE (p)); ++ } ++ else if (IS (p, PUBLIC_SYMBOL)) ++ { ++ /* These should have been removed by a68_bottom_up_coalesce_pub. */ ++ gcc_unreachable (); ++ } ++ else if (a68_is_one_of (p, DEFINING_INDICANT, DEFINING_IDENTIFIER, DEFINING_OPERATOR, STOP)) ++ { ++ if (PUBLICIZED (p) && !PUBLIC_RANGE (TABLE (p))) ++ a68_error (p, ++ "%licized declaration not in a module definition"); ++ } ++ else ++ a68_bottom_up_error_check (SUB (p)); ++ } ++} ++ ++/* ++ * Next part rearranges and checks the tree after the symbol tables are finished. ++ */ ++ ++/* Transfer IDENTIFIER to JUMP where appropriate. */ ++ ++void ++a68_rearrange_goto_less_jumps (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ { ++ NODE_T *q = SUB (p); ++ if (IS (q, TERTIARY)) ++ { ++ NODE_T *tertiary = q; ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, SECONDARY)) ++ { ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, PRIMARY)) ++ { ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, IDENTIFIER)) ++ { ++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) ++ { ++ ATTRIBUTE (tertiary) = JUMP; ++ SUB (tertiary) = q; ++ } ++ } ++ } ++ } ++ } ++ } ++ else if (IS (p, TERTIARY)) ++ { ++ NODE_T *q = SUB (p); ++ if (q != NO_NODE && IS (q, SECONDARY)) ++ { ++ NODE_T *secondary = q; ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, PRIMARY)) ++ { ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, IDENTIFIER)) ++ { ++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) ++ { ++ ATTRIBUTE (secondary) = JUMP; ++ SUB (secondary) = q; ++ } ++ } ++ } ++ } ++ } ++ else if (IS (p, SECONDARY)) ++ { ++ NODE_T *q = SUB (p); ++ if (q != NO_NODE && IS (q, PRIMARY)) ++ { ++ NODE_T *primary = q; ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, IDENTIFIER)) ++ { ++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) ++ { ++ ATTRIBUTE (primary) = JUMP; ++ SUB (primary) = q; ++ } ++ } ++ } ++ } ++ else if (IS (p, PRIMARY)) ++ { ++ NODE_T *q = SUB (p); ++ if (q != NO_NODE && IS (q, IDENTIFIER)) ++ { ++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) ++ a68_make_sub (q, q, JUMP); ++ } ++ } ++ a68_rearrange_goto_less_jumps (SUB (p)); ++ } ++} ++ ++/* ++ * Coalesce PUBLIC_SYMBOLs resulting from reductions, annotating the ++ * corresponding defining identifiers, indicators, operators and prios as ++ * publicized. ++ */ ++ ++void ++a68_bottom_up_coalesce_pub (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, ++ MODE_DECLARATION, PROCEDURE_DECLARATION, PRIORITY_DECLARATION, ++ PROCEDURE_VARIABLE_DECLARATION, BRIEF_OPERATOR_DECLARATION, ++ OPERATOR_DECLARATION, IDENTITY_DECLARATION, ++ VARIABLE_DECLARATION, STOP)) ++ { ++ if (SUB (p) != NO_NODE && IS (SUB (p), PUBLIC_SYMBOL)) ++ { ++ NODE_T *public_symbol = SUB (p); ++ ++ /* Mark the defining entity as PUBlicized. */ ++ /* XXX handle joined declarations. */ ++ NODE_T *defining_entity = NEXT (NEXT (SUB (p))); ++ if (!a68_is_one_of (defining_entity, ++ DEFINING_INDICANT, DEFINING_IDENTIFIER, DEFINING_OPERATOR, ++ STOP)) ++ FORWARD (defining_entity); ++ gcc_assert (defining_entity != NO_NODE ++ && a68_is_one_of (defining_entity, ++ DEFINING_INDICANT, ++ DEFINING_IDENTIFIER, ++ DEFINING_OPERATOR, ++ STOP)); ++ PUBLICIZED (defining_entity) = true; ++ ++ /* Unlink the PUBLIC_SYMBOL node and get rid of it. */ ++ SUB (p) = NEXT (public_symbol); ++ PREVIOUS (NEXT (public_symbol)) = NO_NODE; ++ } ++ } ++ a68_bottom_up_coalesce_pub (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-brackets.cc +@@ -0,0 +1,223 @@ ++/* Recursive-descent parenthesis checker. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* After this checker, we know that at least brackets are matched. This ++ stabilises later parser phases. ++ ++ Note that this checker operates on a linear list of nodes. ++ ++ Error diagnostics are placed near offending lines. */ ++ ++/* Intelligible diagnostics for the bracket checker. */ ++ ++static void ++bracket_check_error (char *txt, int n, const char *bra, const char *ket) ++{ ++ BUFFER buf; ++ ++ if (n == 0) ++ return; ++ ++ const char *strop_ket = a68_strop_keyword (ket); ++ const char *strop_bra = a68_strop_keyword (bra); ++ ++ BUFCLR (buf); ++ if (snprintf (buf, SNPRINTF_SIZE, "missing matching %%<%s%%>", ++ (n > 0 ? strop_ket : strop_bra)) < 0) ++ gcc_unreachable (); ++ ++ if (strlen (txt) > 0) ++ a68_bufcat (txt, " or ", BUFFER_SIZE); ++ a68_bufcat (txt, buf, BUFFER_SIZE); ++} ++ ++/* Diagnose brackets in local branch of the tree. */ ++ ++static char * ++bracket_check_diagnose (NODE_T *p) ++{ ++ int begins = 0, opens = 0, format_delims = 0, format_opens = 0; ++ int subs = 0, ifs = 0, cases = 0, dos = 0; ++ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case BEGIN_SYMBOL: ++ begins++; ++ break; ++ case END_SYMBOL: ++ begins--; ++ break; ++ case OPEN_SYMBOL: ++ opens++; ++ break; ++ case CLOSE_SYMBOL: ++ opens--; ++ break; ++ case FORMAT_DELIMITER_SYMBOL: ++ if (format_delims == 0) ++ format_delims = 1; ++ else ++ format_delims = 0; ++ break; ++ case FORMAT_OPEN_SYMBOL: ++ format_opens++; ++ break; ++ case FORMAT_CLOSE_SYMBOL: ++ format_opens--; ++ break; ++ case SUB_SYMBOL: ++ subs++; ++ break; ++ case BUS_SYMBOL: ++ subs--; ++ break; ++ case IF_SYMBOL: ++ ifs++; ++ break; ++ case FI_SYMBOL: ++ ifs--; ++ break; ++ case CASE_SYMBOL: ++ cases++; ++ break; ++ case ESAC_SYMBOL: ++ cases--; ++ break; ++ case DO_SYMBOL: ++ dos++; ++ break; ++ case OD_SYMBOL: ++ dos--; ++ break; ++ default: ++ break; ++ } ++ } ++ ++ A68 (edit_line)[0] = '\0'; ++ bracket_check_error (A68 (edit_line), begins, "BEGIN", "END"); ++ bracket_check_error (A68 (edit_line), opens, "(", ")"); ++ bracket_check_error (A68 (edit_line), format_opens, "(", ")"); ++ bracket_check_error (A68 (edit_line), format_delims, "$", "$"); ++ bracket_check_error (A68 (edit_line), subs, "[", "]"); ++ bracket_check_error (A68 (edit_line), ifs, "IF", "FI"); ++ bracket_check_error (A68 (edit_line), cases, "CASE", "ESAC"); ++ bracket_check_error (A68 (edit_line), dos, "DO", "OD"); ++ return A68 (edit_line); ++} ++ ++/* Driver for locally diagnosing non-matching tokens. */ ++ ++static NODE_T * ++bracket_check_parse (NODE_T *top, NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ int ket = STOP; ++ NODE_T *q = NO_NODE; ++ bool ignore_token = false; ++ ++ switch (ATTRIBUTE (p)) ++ { ++ case BEGIN_SYMBOL: ++ ket = END_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case OPEN_SYMBOL: ++ ket = CLOSE_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case FORMAT_OPEN_SYMBOL: ++ ket = FORMAT_CLOSE_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case SUB_SYMBOL: ++ ket = BUS_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case IF_SYMBOL: ++ ket = FI_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case CASE_SYMBOL: ++ ket = ESAC_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case DO_SYMBOL: ++ ket = OD_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case END_SYMBOL: ++ case CLOSE_SYMBOL: ++ case FORMAT_CLOSE_SYMBOL: ++ case BUS_SYMBOL: ++ case FI_SYMBOL: ++ case ESAC_SYMBOL: ++ case OD_SYMBOL: ++ return p; ++ default: ++ ignore_token = true; ++ } ++ ++ if (ignore_token) ++ ; ++ else if (q != NO_NODE && IS (q, ket)) ++ p = q; ++ else if (q == NO_NODE) ++ { ++ char *diag = bracket_check_diagnose (top); ++ a68_error (p, "incorrect nesting, check for Y", ++ (strlen (diag) > 0 ? diag : "missing or unmatched keyword")); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ else ++ { ++ char *diag = bracket_check_diagnose (top); ++ a68_error (q, "unexpected X, check for Y", ++ ATTRIBUTE (q), ++ (strlen (diag) > 0 ? diag : "missing or unmatched keyword")); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ } ++ return NO_NODE; ++} ++ ++/* Driver for globally diagnosing non-matching tokens. */ ++ ++void ++a68_check_parenthesis (NODE_T *top) ++{ ++ if (!setjmp (A68_PARSER (top_down_crash_exit))) ++ { ++ if (bracket_check_parse (top, top) != NO_NODE) ++ a68_error (top, "incorrect nesting, check for Y", ++ "missing or unmatched keyword"); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-debug.cc +@@ -0,0 +1,255 @@ ++/* Debug facilities for the Algol 68 parser. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#define INCLUDE_VECTOR ++#include "system.h" ++#include "coretypes.h" ++#include "tree.h" ++#include "diagnostic.h" ++#include "text-art/types.h" ++#include "text-art/dump.h" ++#include "text-art/dump-widget-info.h" ++#include "text-art/canvas.h" ++#include "text-art/theme.h" ++#include "text-art/tree-widget.h" ++ ++#include "a68.h" ++ ++/* Write a printable representation of the parse tree with top node P to the ++ standard output. */ ++ ++static void ++a68_dump_parse_tree_1 (NODE_T *p, const text_art::dump_widget_info &dwi, ++ text_art::tree_widget &widget, bool tables, bool levels) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ char *symbol; ++ if (ATTRIBUTE (p) == IDENTIFIER ++ || ATTRIBUTE (p) == DEFINING_IDENTIFIER ++ || ATTRIBUTE (p) == DEFINING_OPERATOR ++ || ATTRIBUTE (p) == BOLD_TAG) ++ symbol = xasprintf (" %s", NSYMBOL (p)); ++ else ++ symbol = xstrdup (""); ++ ++ char *tableinfo; ++ if (tables && TABLE (p) != NO_TABLE) ++ tableinfo = xasprintf (" table=%p prev=%p", ++ (void *) TABLE (p), ++ (void *) PREVIOUS (TABLE (p))); ++ else ++ tableinfo = xstrdup (""); ++ ++ char *levelsinfo; ++ if (levels && TABLE (p) != NO_TABLE) ++ levelsinfo = xasprintf (" level=%d", LEVEL (TABLE (p))); ++ else ++ levelsinfo = xstrdup (""); ++ ++ char mode[BUFFER_SIZE]; ++ mode[0] = '\0'; ++ if (MOID (p) != NO_MOID) ++ { ++ MOID_T *moid = MOID (p); ++ mode[0] = '\0'; ++ ++ a68_bufcat (mode, " (", 2); ++ if (IS (moid, SERIES_MODE)) ++ { ++ if (PACK (moid) != NO_PACK && NEXT (PACK (moid)) == NO_PACK) ++ a68_bufcat (mode, a68_moid_to_string (MOID (PACK (moid)), MOID_ERROR_WIDTH, p), ++ BUFFER_SIZE); ++ else ++ a68_bufcat (mode, a68_moid_to_string (moid, MOID_ERROR_WIDTH, p), BUFFER_SIZE); ++ } ++ else ++ a68_bufcat (mode, a68_moid_to_string (moid, MOID_ERROR_WIDTH, p), BUFFER_SIZE); ++ a68_bufcat (mode, ")", 2); ++ } ++ ++ location_t loc = a68_get_node_location (p); ++ std::unique_ptr cwidget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, ++ "%s:%d:%d [%d] %s%s%s%s%s", ++ LOCATION_FILE (loc), ++ LOCATION_LINE (loc), ++ LOCATION_COLUMN (loc), ++ NUMBER (p), ++ a68_attribute_name (ATTRIBUTE (p)), ++ symbol, ++ mode, ++ tableinfo, ++ levelsinfo); ++ free (symbol); ++ free (tableinfo); ++ free (levelsinfo); ++ ++ a68_dump_parse_tree_1 (SUB (p), dwi, *cwidget, tables, levels); ++ widget.add_child (std::move (cwidget)); ++ } ++} ++ ++void ++a68_dump_parse_tree (NODE_T *p, bool tables, bool levels) ++{ ++ text_art::style_manager sm; ++ text_art::style::id_t default_style_id (sm.get_or_create_id (text_art::style ())); ++ text_art::ascii_theme theme; ++ text_art::dump_widget_info dwi (sm, theme, default_style_id); ++ std::unique_ptr widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "Parse Tree"); ++ ++ a68_dump_parse_tree_1 (p, dwi, *widget, tables, levels); ++ ++ text_art::canvas c (widget->to_canvas (sm)); ++ pretty_printer *const pp = global_dc->get_reference_printer (); ++ pp_clear_output_area (pp); ++ c.print_to_pp (pp); ++ printf ("%s", pp_formatted_text (pp)); ++} ++ ++/* Dump the modes in the list MOID. */ ++ ++void ++a68_dump_modes (MOID_T *moid) ++{ ++ for (; moid != NO_MOID; FORWARD (moid)) ++ { ++ printf ("%p %s\n", (void *) moid, ++ a68_moid_to_string (moid, MOID_ERROR_WIDTH, NODE (moid), ++ true /* indicant_value */)); ++ } ++} ++ ++/* Dump a given MOIF. */ ++ ++void ++a68_dump_moif (MOIF_T *moif) ++{ ++ text_art::style_manager sm; ++ text_art::style::id_t default_style_id (sm.get_or_create_id (text_art::style ())); ++ text_art::ascii_theme theme; ++ text_art::dump_widget_info dwi (sm, theme, default_style_id); ++ std::unique_ptr widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "module interface: %s", NAME (moif)); ++ ++ std::unique_ptr prelude_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "prelude: %s", PRELUDE (moif)); ++ widget->add_child (std::move (prelude_widget)); ++ ++ std::unique_ptr postlude_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "postlude: %s", POSTLUDE (moif)); ++ widget->add_child (std::move (postlude_widget)); ++ ++ /* Mode table. */ ++ std::unique_ptr modes_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "modes"); ++ for (MOID_T *mode : MODES (moif)) ++ { ++ const char *asm_label = ASM_LABEL (mode); ++ if (asm_label == NULL) ++ asm_label = a68_moid_to_string (mode, 80, NO_NODE, false); ++ std::unique_ptr mode_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "mode: %s: %s", ++ asm_label, ++ a68_moid_to_string (mode, 80, NO_NODE, true)); ++ modes_widget->add_child (std::move (mode_widget)); ++ } ++ widget->add_child (std::move (modes_widget)); ++ ++ /* Module extracts. */ ++ std::unique_ptr mod_extracts_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "module extracts"); ++ for (EXTRACT_T *e : MODULES (moif)) ++ { ++ std::unique_ptr mod_extract_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "module extract: %s", EXTRACT_SYMBOL (e)); ++ mod_extracts_widget->add_child (std::move (mod_extract_widget)); ++ } ++ widget->add_child (std::move (mod_extracts_widget)); ++ ++ /* Mode extracts. */ ++ std::unique_ptr mode_extracts_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "mode extracts"); ++ for (EXTRACT_T *e : INDICANTS (moif)) ++ { ++ const char *asm_label = ASM_LABEL (EXTRACT_MODE (e)); ++ if (asm_label == NULL) ++ asm_label = a68_moid_to_string (EXTRACT_MODE (e), 80, NO_NODE, false); ++ std::unique_ptr mode_extract_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "mode extract: %s [%s]", ++ EXTRACT_SYMBOL (e), asm_label); ++ mode_extracts_widget->add_child (std::move (mode_extract_widget)); ++ } ++ widget->add_child (std::move (mode_extracts_widget)); ++ ++ /* Priority extracts. */ ++ std::unique_ptr prio_extracts_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "prio extracts"); ++ for (EXTRACT_T *e : PRIOS (moif)) ++ { ++ std::unique_ptr prio_extract_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "prio extract: %s [prio: %d]", ++ EXTRACT_SYMBOL (e), EXTRACT_PRIO (e)); ++ prio_extracts_widget->add_child (std::move (prio_extract_widget)); ++ } ++ widget->add_child (std::move (prio_extracts_widget)); ++ ++ /* Identifier extracts. */ ++ std::unique_ptr id_extracts_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "identifier extracts"); ++ for (EXTRACT_T *e : IDENTIFIERS (moif)) ++ { ++ const char *asm_label = ASM_LABEL (EXTRACT_MODE (e)); ++ if (asm_label == NULL) ++ asm_label = a68_moid_to_string (EXTRACT_MODE (e), 80, NO_NODE, false); ++ std::unique_ptr id_extract_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "iden extract: %s [%s] variable=%d inproc=%d", ++ EXTRACT_SYMBOL (e), asm_label, ++ EXTRACT_VARIABLE (e), ++ EXTRACT_IN_PROC (e)); ++ id_extracts_widget->add_child (std::move (id_extract_widget)); ++ } ++ widget->add_child (std::move (id_extracts_widget)); ++ ++ /* Operator extracts. */ ++ std::unique_ptr op_extracts_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "operator extracts"); ++ for (EXTRACT_T *e : OPERATORS (moif)) ++ { ++ const char *asm_label = ASM_LABEL (EXTRACT_MODE (e)); ++ if (asm_label == NULL) ++ asm_label = a68_moid_to_string (EXTRACT_MODE (e), 80, NO_NODE, false); ++ ++ std::unique_ptr op_extract_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "op extract: %s [%s] variable=%d inproc=%d", ++ EXTRACT_SYMBOL (e), asm_label, ++ EXTRACT_VARIABLE (e), ++ EXTRACT_IN_PROC (e)); ++ op_extracts_widget->add_child (std::move (op_extract_widget)); ++ } ++ widget->add_child (std::move (op_extracts_widget)); ++ ++ text_art::canvas c (widget->to_canvas (sm)); ++ pretty_printer *const pp = global_dc->get_reference_printer (); ++ pp_clear_output_area (pp); ++ c.print_to_pp (pp); ++ printf ("%s", pp_formatted_text (pp)); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-extract.cc +@@ -0,0 +1,895 @@ ++/* Extract tags from phrases. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* This is part of the bottom-up parser. Here is a set of routines that gather ++ definitions from phrases. This way we can apply tags before defining them. ++ These routines do not look very elegant as they have to scan through all kind ++ of symbols to find a pattern that they recognise. */ ++ ++/* Insert alt equals symbol. */ ++ ++static void ++insert_alt_equals (NODE_T *p) ++{ ++ NODE_T *q = a68_new_node (); ++ *q = *p; ++ INFO (q) = a68_new_node_info (); ++ *INFO (q) = *INFO (p); ++ GINFO (q) = a68_new_genie_info (); ++ *GINFO (q) = *GINFO (p); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ NSYMBOL (q) = TEXT (a68_add_token (&A68 (top_token), "=")); ++ NEXT (p) = q; ++ PREVIOUS (q) = p; ++ if (NEXT (q) != NO_NODE) ++ PREVIOUS (NEXT (q)) = q; ++} ++ ++/* Detect redefined keyword. */ ++ ++static void ++detect_redefined_keyword (NODE_T *p, int construct) ++{ ++ if (p != NO_NODE && a68_whether (p, KEYWORD, EQUALS_SYMBOL, STOP)) ++ a68_error (p, "attempt to redefine keyword Y in A", ++ NSYMBOL (p), construct); ++} ++ ++/* Skip anything until a FED or ALT_ACCESS_SYMBOL is found. */ ++ ++static NODE_T * ++skip_module_text (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, FED_SYMBOL) || IS (p, ALT_ACCESS_SYMBOL)) ++ return p; ++ } ++ ++ return NO_NODE; ++} ++ ++/* Skip anything until a comma, semicolon or EXIT is found. */ ++ ++static NODE_T * ++skip_unit (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, COMMA_SYMBOL)) ++ return p; ++ else if (IS (p, SEMI_SYMBOL)) ++ return p; ++ else if (IS (p, EXIT_SYMBOL)) ++ return p; ++ } ++ return NO_NODE; ++} ++ ++/* Attribute of entry in symbol table. */ ++ ++static int ++find_tag_definition (TABLE_T *table, const char *name) ++{ ++ if (table != NO_TABLE) ++ { ++ int ret = 0; ++ bool found = false; ++ for (TAG_T *s = INDICANTS (table); s != NO_TAG && !found; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ { ++ ret += INDICANT; ++ found = true; ++ } ++ } ++ found = false; ++ for (TAG_T *s = OPERATORS (table); s != NO_TAG && !found; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ { ++ ret += OPERATOR; ++ found = true; ++ } ++ } ++ found = false; ++ for (TAG_T *s = MODULES (table); s != NO_TAG && !found; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ { ++ ret += MODULE_INDICANT; ++ found = true; ++ } ++ } ++ ++ if (ret == 0) ++ return find_tag_definition (PREVIOUS (table), name); ++ else ++ return ret; ++ } ++ else ++ return 0; ++} ++ ++/* Fill in whether bold tag is operator, indicant or module indicant. */ ++ ++void ++a68_elaborate_bold_tags (NODE_T *p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, BOLD_TAG)) ++ { ++ switch (find_tag_definition (TABLE (q), NSYMBOL (q))) ++ { ++ case 0: ++ a68_error (q, "tag S has not been declared properly"); ++ break; ++ case INDICANT: ++ ATTRIBUTE (q) = INDICANT; ++ break; ++ case OPERATOR: ++ ATTRIBUTE (q) = OPERATOR; ++ break; ++ case MODULE_INDICANT: ++ ATTRIBUTE (q) = MODULE_INDICANT; ++ break; ++ } ++ } ++ } ++} ++ ++/* Skip declarer, or argument pack and declarer. */ ++ ++static NODE_T * ++skip_pack_declarer (NODE_T *p) ++{ ++ /* Skip () REF [] REF FLEX [] [] ... */ ++ while (p != NO_NODE ++ && (a68_is_one_of (p, SUB_SYMBOL, OPEN_SYMBOL, REF_SYMBOL, ++ FLEX_SYMBOL, SHORT_SYMBOL, LONG_SYMBOL, STOP))) ++ { ++ FORWARD (p); ++ } ++ ++ /* Skip STRUCT (), UNION () or PROC [()]. */ ++ if (p != NO_NODE && (a68_is_one_of (p, STRUCT_SYMBOL, UNION_SYMBOL, STOP))) ++ return NEXT (p); ++ else if (p != NO_NODE && IS (p, PROC_SYMBOL)) ++ return skip_pack_declarer (NEXT (p)); ++ else ++ return p; ++} ++ ++/* Extract a revelation. */ ++ ++static void ++extract_revelation (NODE_T *q, bool is_public ATTRIBUTE_UNUSED) ++{ ++ /* Store in the symbol table. */ ++ TAG_T *tag = a68_add_tag (TABLE (q), MODULE_SYMBOL, q, NO_MOID, STOP); ++ gcc_assert (tag != NO_TAG); ++ EXPORTED (tag) = false; // XXX depends on PUB! ++ /* Import the MOIF and install it in the tag. */ ++ MOIF_T *moif = a68_open_packet (NSYMBOL (q)); ++ if (moif == NULL) ++ { ++ a68_error (q, "cannot find module Z", NSYMBOL (q)); ++ return; ++ } ++ MOIF (tag) = moif; // XXX add to existing list of moifs. ++ ++ /* Store all the modes from the MOIF in the moid list. ++ ++ The front-end depends on being able to compare any two modes by pointer ++ value. For example, the parser mode equivalence and coercion code relies ++ on this. The lowerer also relies on this to make sure the same lowered ++ trees are used for the same modes. */ ++ ++ for (MOID_T *m : MODES (moif)) ++ { ++ /* Note that m == NO_MOID if the imported mode was already known to the ++ compiler and has been replaced. */ ++ if (m != NO_MOID) ++ { ++ MOID_T *r = a68_register_extra_mode (&TOP_MOID (&A68_JOB), m); ++ if (r != m) ++ gcc_unreachable (); ++ } ++ } ++ ++ /* Store mode indicants from the MOIF in the symbol table, ++ and also in the moid list. */ ++ for (EXTRACT_T *e : INDICANTS (moif)) ++ { ++ /* Indicants stored in the indicants area of a symbol ++ table are expected to be INDICANT nodes originating in ++ parsing, with the following subtree: ++ ++ INDICANT - EQUALS_SYMBOL - DECLARER ++ ++ where MOID (DECLARER) is determined to be the mode ++ associated by INDICANT, or its "equivalent" mode. ++ Therefore we have to synthesize something like that ++ here, since the mode comes from a module interface and ++ we don't have a declarer tree for it.. */ ++ ++ /* INDICANT node. */ ++ NODE_T *n = a68_some_node (a68_demangle_symbol (NAME (moif), ++ EXTRACT_SYMBOL (e))); ++ /* EQUALS_SYMBOL node. */ ++ NEXT (n) = a68_some_node ("="); ++ ATTRIBUTE (NEXT (n)) = EQUALS_SYMBOL; ++ /* DECLARER node. */ ++ NEXT (NEXT (n)) = a68_some_node (""); ++ LINE (INFO (n)) = LINE (INFO (q)); ++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); ++ MOID (NEXT (NEXT (n))) = EXTRACT_MODE (e); ++ TABLE (n) = TABLE (q); ++ ++ /* Now add the INDICANT subtree to the symbol table of ++ this access clause lexical level. */ ++ TAG_T *tag = a68_add_tag (TABLE (q), INDICANT, n, NO_MOID, 0); ++ gcc_assert (tag != NO_TAG); ++ ++ /* Finally add the mode indicant to the moids list. Note ++ that the mode in DECLARER is associated to the ++ INDICANT in the table at some point later, via ++ EQUIVALENT. Hence the NO_MOID in the call to ++ a68_add_mode. */ ++ MOID_T *effective_mode = a68_add_mode (&TOP_MOID (&A68_JOB), INDICANT, ++ 0, n, NO_MOID, NO_PACK); ++ gcc_assert (effective_mode != NO_MOID); ++ } ++ ++ /* Store priorities from the MOIF. */ ++ for (EXTRACT_T *e : PRIOS (moif)) ++ { ++ NODE_T *n ++ = a68_some_node (a68_demangle_symbol (NAME (moif), ++ EXTRACT_SYMBOL (e))); ++ /* XXX sensible location somehow? */ ++ LINE (INFO (n)) = LINE (INFO (q)); ++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); ++ TABLE (n) = TABLE (q); ++ TAG_T *tag = a68_add_tag (TABLE (q), PRIO_SYMBOL, n, NO_MOID, ++ EXTRACT_PRIO (e)); ++ gcc_assert (tag != NO_TAG); ++ MOIF (tag) = moif; // XXX add to existing list of moifs. ++ } ++ ++ /* Store identifiers from the MOIF. */ ++ for (EXTRACT_T *e : IDENTIFIERS (moif)) ++ { ++ NODE_T *n ++ = a68_some_node (a68_demangle_symbol (NAME (moif), ++ EXTRACT_SYMBOL (e))); ++ /* XXX sensible location somehow? */ ++ LINE (INFO (n)) = LINE (INFO (q)); ++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); ++ TABLE (n) = TABLE (q); ++ ++ TAG_T *tag = a68_add_tag (TABLE (q), IDENTIFIER, ++ n, EXTRACT_MODE (e), NORMAL_IDENTIFIER); ++ gcc_assert (tag != NO_TAG); ++ EXTERN_SYMBOL (tag) = ggc_strdup (EXTRACT_SYMBOL (e)); ++ VARIABLE (tag) = VARIABLE (e); ++ IN_PROC (tag) = IN_PROC (e); ++ HEAP (tag) = STATIC_SYMBOL; ++ MOIF (tag) = moif; ++ } ++ ++ /* Store operators from the MOIF. */ ++ for (EXTRACT_T *e : OPERATORS (moif)) ++ { ++ NODE_T *n ++ = a68_some_node (a68_demangle_symbol (NAME (moif), ++ EXTRACT_SYMBOL (e), ++ true /* operator */)); ++ MOID (n) = EXTRACT_MODE (e); ++ LINE (INFO (n)) = LINE (INFO (q)); ++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); ++ TABLE (n) = TABLE (q); ++ TAG_T *tag = a68_add_tag (TABLE (q), OP_SYMBOL, ++ n, EXTRACT_MODE (e), STOP); ++ gcc_assert (tag != NO_TAG); ++ VARIABLE (tag) = VARIABLE (e); ++ IN_PROC (tag) = IN_PROC (e); ++ HEAP (tag) = STATIC_SYMBOL; ++ MOIF (tag) = moif; ++ EXTERN_SYMBOL (tag) = ggc_strdup (EXTRACT_SYMBOL (e)); ++ } ++} ++ ++/* Search [MODE|MODULE] A = .., B = .. ++ and ACCESS A, B, .. ++ and store indicants. */ ++ ++void ++a68_extract_indicants (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (IS (q, ACCESS_SYMBOL) || IS (q, ALT_ACCESS_SYMBOL)) ++ { ++ /* An access clause implies the declaration of module indicants, ++ provided they are found in a suitable packet. */ ++ do ++ { ++ FORWARD (q); ++ detect_redefined_keyword (q, MODE_DECLARATION); ++ if (IS (q, BOLD_TAG)) ++ { ++ extract_revelation (q, false /* is_public */); ++ FORWARD (q); ++ } ++ else if (a68_whether (q, PUBLIC_SYMBOL, BOLD_TAG, STOP)) ++ { ++ extract_revelation (q, true /* is_public */); ++ FORWARD (q); ++ FORWARD (q); ++ } ++ } ++ while (q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else if (IS (q, MODULE_SYMBOL)) ++ { ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ detect_redefined_keyword (q, MODE_DECLARATION); ++ if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, STOP)) ++ { ++ /* Store in the symbol table. ++ XXX also add to global list of modules? ++ Position of definition (q) connects to this lexical ++ level! */ ++ ATTRIBUTE (q) = DEFINING_MODULE_INDICANT; ++ TAG_T *tag = a68_add_tag (TABLE (p), MODULE_SYMBOL, q, NO_MOID, STOP); ++ gcc_assert (tag != NO_TAG); ++ EXPORTED (tag) = true; ++ FORWARD (q); ++ ATTRIBUTE (q) = EQUALS_SYMBOL; /* XXX why not ALT_EQUALS_SYMBOL */ ++ q = skip_module_text (NEXT (q)); ++ FORWARD (q); ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else if (IS (q, MODE_SYMBOL)) ++ { ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ detect_redefined_keyword (q, MODE_DECLARATION); ++ if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, STOP)) ++ { ++ /* Store in the symbol table, but also in the moid list. ++ Position of definition (q) connects to this lexical ++ level! */ ++ if (a68_add_tag (TABLE (p), INDICANT, q, NO_MOID, STOP) == NO_TAG) ++ gcc_unreachable (); ++ if (a68_add_mode (&TOP_MOID (&A68_JOB), INDICANT, 0, q, NO_MOID, NO_PACK) == NO_MOID) ++ gcc_unreachable (); ++ ATTRIBUTE (q) = DEFINING_INDICANT; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ q = skip_pack_declarer (NEXT (q)); ++ FORWARD (q); ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++#define GET_PRIORITY(q, k) \ ++ do \ ++ { \ ++ errno=0; \ ++ (k) = atoi (NSYMBOL (q)); \ ++ if (errno != 0) { \ ++ a68_error ((q), "invalid priority declaration"); \ ++ (k) = MAX_PRIORITY; \ ++ } else if ((k) < 1 || (k) > MAX_PRIORITY) { \ ++ a68_error ((q), "invalid priority declaration"); \ ++ (k) = MAX_PRIORITY; \ ++ } \ ++ } \ ++ while (0) ++ ++/* Search PRIO X = .., Y = .. and store priorities. */ ++ ++void ++a68_extract_priorities (NODE_T *p) ++{ ++ NODE_T *q = p; ++ while (q != NO_NODE) ++ { ++ if (IS (q, PRIO_SYMBOL)) ++ { ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ detect_redefined_keyword (q, PRIORITY_DECLARATION); ++ /* An operator tag like ++ or && gives strange errors so we catch ++ it here. */ ++ if (a68_whether (q, OPERATOR, OPERATOR, STOP)) ++ { ++ NODE_T *y = q; ++ a68_error (q, "invalid operator tag"); ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ /* Remove one superfluous operator, and hope it was only ++ one. */ ++ NEXT (q) = NEXT_NEXT (q); ++ PREVIOUS (NEXT (q)) = q; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ FORWARD (q); ++ int k; ++ GET_PRIORITY (q, k); ++ ATTRIBUTE (q) = PRIORITY; ++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) ++ gcc_unreachable (); ++ FORWARD (q); ++ } ++ else if (a68_whether (q, OPERATOR, EQUALS_SYMBOL, INT_DENOTATION, STOP) ++ || a68_whether (q, EQUALS_SYMBOL, EQUALS_SYMBOL, INT_DENOTATION, STOP)) ++ { ++ NODE_T *y = q; ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ FORWARD (q); ++ int k; ++ GET_PRIORITY (q, k); ++ ATTRIBUTE (q) = PRIORITY; ++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) ++ gcc_unreachable (); ++ FORWARD (q); ++ } ++ else if (a68_whether (q, BOLD_TAG, IDENTIFIER, STOP)) ++ { ++ siga = false; ++ } ++ else if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, INT_DENOTATION, STOP)) ++ { ++ NODE_T *y = q; ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ FORWARD (q); ++ int k; ++ GET_PRIORITY (q, k); ++ ATTRIBUTE (q) = PRIORITY; ++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) ++ gcc_unreachable (); ++ FORWARD (q); ++ } else if (a68_whether (q, BOLD_TAG, INT_DENOTATION, STOP) ++ || a68_whether (q, OPERATOR, INT_DENOTATION, STOP) ++ || a68_whether (q, EQUALS_SYMBOL, INT_DENOTATION, STOP)) ++ { ++ /* The scanner cannot separate operator and "=" sign so we do this here. */ ++ int len = (int) strlen (NSYMBOL (q)); ++ if (len > 1 && NSYMBOL (q)[len - 1] == '=') ++ { ++ NODE_T *y = q; ++ char *sym = (char *) xmalloc ((size_t) (len + 1)); ++ a68_bufcpy (sym, NSYMBOL (q), len + 1); ++ sym[len - 1] = '\0'; ++ NSYMBOL (q) = TEXT (a68_add_token (&A68 (top_token), sym)); ++ free (sym); ++ if (len > 2 && NSYMBOL (q)[len - 2] == ':' && NSYMBOL (q)[len - 3] != '=') ++ a68_error (q, "probably a missing symbol near invalid operator S"); ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ insert_alt_equals (q); ++ q = NEXT_NEXT (q); ++ int k; ++ GET_PRIORITY (q, k); ++ ATTRIBUTE (q) = PRIORITY; ++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) ++ gcc_unreachable (); ++ FORWARD (q); ++ } ++ else ++ siga = false; ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++/* Search OP [( .. ) ..] X = .., Y = .. and store operators. */ ++ ++void ++a68_extract_operators (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (!IS (q, OP_SYMBOL)) ++ FORWARD (q); ++ else ++ { ++ bool siga = true; ++ bool in_proc = true; ++ /* Skip operator plan. */ ++ if (NEXT (q) != NO_NODE && IS (NEXT (q), OPEN_SYMBOL)) ++ { ++ q = skip_pack_declarer (NEXT (q)); ++ in_proc = false; ++ } ++ /* Sample operators. */ ++ if (q != NO_NODE) ++ { ++ do ++ { ++ FORWARD (q); ++ detect_redefined_keyword (q, OPERATOR_DECLARATION); ++ /* Unacceptable operator tags like ++ or && could give ++ strange errors. */ ++ if (a68_whether (q, OPERATOR, OPERATOR, STOP)) ++ { ++ a68_error (q, "invalid operator tag"); ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); ++ if (t == NO_TAG) ++ gcc_unreachable (); ++ IN_PROC (t) = in_proc; ++ /* Remove one superfluous operator, and hope it was only one. */ ++ NEXT (q) = NEXT_NEXT (q); ++ PREVIOUS (NEXT (q)) = q; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else if (a68_whether (q, OPERATOR, EQUALS_SYMBOL, STOP) ++ || a68_whether (q, EQUALS_SYMBOL, EQUALS_SYMBOL, STOP)) ++ { ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); ++ if (t == NO_TAG) ++ gcc_unreachable (); ++ IN_PROC (t) = in_proc; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else if (a68_whether (q, BOLD_TAG, IDENTIFIER, STOP)) ++ { ++ siga = false; ++ } ++ else if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, STOP)) ++ { ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); ++ if (t == NO_TAG) ++ gcc_unreachable (); ++ IN_PROC (t) = in_proc; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else if (q != NO_NODE && (a68_is_one_of (q, OPERATOR, BOLD_TAG, EQUALS_SYMBOL, STOP))) ++ { ++ /* The scanner cannot separate operator and "=" sign so ++ we do this here. */ ++ int len = (int) strlen (NSYMBOL (q)); ++ if (len > 1 && NSYMBOL (q)[len - 1] == '=') ++ { ++ char *sym = (char *) xmalloc ((size_t) (len + 1)); ++ a68_bufcpy (sym, NSYMBOL (q), len + 1); ++ sym[len - 1] = '\0'; ++ NSYMBOL (q) = TEXT (a68_add_token (&A68 (top_token), sym)); ++ if (len > 2 && NSYMBOL (q)[len - 2] == ':' && NSYMBOL (q)[len - 3] != '=') ++ a68_error (q, "probably a missing symbol near invalid operator S"); ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ insert_alt_equals (q); ++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); ++ if (t == NO_TAG) ++ gcc_unreachable (); ++ IN_PROC (t) = in_proc; ++ FORWARD (q); ++ q = skip_unit (q); ++ } ++ else ++ siga = false; ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ } ++ } ++} ++ ++/* Search and store labels. */ ++ ++void ++a68_extract_labels (NODE_T *p, int expect) ++{ ++ /* Only handle candidate phrases as not to search indexers!. */ ++ if (expect == SERIAL_CLAUSE || expect == ENQUIRY_CLAUSE || expect == SOME_CLAUSE) ++ { ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (a68_whether (q, IDENTIFIER, COLON_SYMBOL, STOP)) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), LABEL, q, NO_MOID, LOCAL_LABEL); ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ UNIT (z) = NO_NODE; ++ } ++ } ++ } ++} ++ ++/* Search MOID x = .., y = .. and store identifiers. */ ++ ++static void ++extract_identities (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (a68_whether (q, DECLARER, IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ bool siga = true; ++ do ++ { ++ if (a68_whether ((FORWARD (q)), IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); ++ if (tag == NO_TAG) ++ gcc_unreachable (); ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else if (a68_whether (q, IDENTIFIER, ASSIGN_SYMBOL, STOP)) ++ { ++ /* Handle common error in ALGOL 68 programs. */ ++ a68_error (q, "mixed identity-declaration and variable-declaration"); ++ if (a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER) == NO_TAG) ++ gcc_unreachable (); ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++/* Search MOID x [:= ..], y [:= ..] and store identifiers. */ ++ ++static void ++extract_variables (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (a68_whether (q, HEAP_SYMBOL, DECLARER, IDENTIFIER, STOP) ++ || a68_whether (q, LOC_SYMBOL, DECLARER, IDENTIFIER, STOP) ++ || a68_whether (q, DECLARER, IDENTIFIER, STOP)) ++ { ++ if (!IS (q, DECLARER)) ++ FORWARD (q); ++ ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ if (a68_whether (q, IDENTIFIER, STOP)) ++ { ++ if (a68_whether (q, IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ /* Handle common error in ALGOL 68 programs. */ ++ a68_error (q, "mixed identity-declaration and variable-declaration"); ++ ATTRIBUTE (NEXT (q)) = ASSIGN_SYMBOL; ++ } ++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); ++ if (tag == NO_TAG) ++ gcc_unreachable (); ++ VARIABLE (tag) = true; ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ q = skip_unit (q); ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++/* Search PROC x = .., y = .. and stores identifiers. */ ++ ++static void ++extract_proc_identities (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (a68_whether (q, PROC_SYMBOL, IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ if (a68_whether (q, IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ TAG_T *t = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); ++ IN_PROC (t) = true; ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else if (a68_whether (q, IDENTIFIER, ASSIGN_SYMBOL, STOP)) ++ { ++ /* Handle common error in ALGOL 68 programs. */ ++ a68_error (q, "mixed identity-declaration and variable-declaration"); ++ if (a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER) == NO_TAG) ++ gcc_unreachable (); ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++/* Search PROC x [:= ..], y [:= ..]; store identifiers. */ ++ ++static void ++extract_proc_variables (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (a68_whether (q, PROC_SYMBOL, IDENTIFIER, STOP)) ++ { ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ if (a68_whether (q, IDENTIFIER, ASSIGN_SYMBOL, STOP)) ++ { ++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); ++ gcc_assert (tag != NO_TAG); ++ VARIABLE (tag) = true; ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ q = skip_unit (FORWARD (q)); ++ } ++ else if (a68_whether (q, IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ /* Handle common error in ALGOL 68 programs. */ ++ a68_error (q, "mixed identity-declaration and variable-declaration"); ++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); ++ gcc_assert (tag != NO_TAG); ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ ATTRIBUTE (FORWARD (q)) = ASSIGN_SYMBOL; ++ q = skip_unit (q); ++ } else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++/* Schedule gathering of definitions in a phrase. */ ++ ++void ++a68_extract_declarations (NODE_T *p) ++{ ++ /* Get definitions so we know what is defined in this range. */ ++ extract_identities (p); ++ extract_variables (p); ++ extract_proc_identities (p); ++ extract_proc_variables (p); ++ /* By now we know whether "=" is an operator or not. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, EQUALS_SYMBOL)) ++ ATTRIBUTE (q) = OPERATOR; ++ else if (IS (q, ALT_EQUALS_SYMBOL)) ++ ATTRIBUTE (q) = EQUALS_SYMBOL; ++ } ++ ++ /* Get qualifiers. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (a68_whether (q, LOC_SYMBOL, DECLARER, DEFINING_IDENTIFIER, STOP)) ++ a68_make_sub (q, q, QUALIFIER); ++ if (a68_whether (q, HEAP_SYMBOL, DECLARER, DEFINING_IDENTIFIER, STOP)) ++ a68_make_sub (q, q, QUALIFIER); ++ if (a68_whether (q, LOC_SYMBOL, PROC_SYMBOL, DEFINING_IDENTIFIER, STOP)) ++ a68_make_sub (q, q, QUALIFIER); ++ if (a68_whether (q, HEAP_SYMBOL, PROC_SYMBOL, DEFINING_IDENTIFIER, STOP)) ++ a68_make_sub (q, q, QUALIFIER); ++ } ++ ++ /* Give priorities to operators. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, OPERATOR)) ++ { ++ if (a68_find_tag_global (TABLE (q), OP_SYMBOL, NSYMBOL (q))) ++ { ++ TAG_T *s = a68_find_tag_global (TABLE (q), PRIO_SYMBOL, NSYMBOL (q)); ++ ++ if (s != NO_TAG) ++ PRIO (INFO (q)) = PRIO (s); ++ else ++ PRIO (INFO (q)) = 0; ++ } ++ else ++ { ++ a68_error (q, "tag S has not been declared properly"); ++ PRIO (INFO (q)) = 1; ++ } ++ } ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-keywords.cc +@@ -0,0 +1,254 @@ ++/* Keyword tables. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* Apply stropping to the given keyword and return its written form, which must ++ be upper-case. */ ++ ++const char * ++a68_strop_keyword (const char *keyword) ++{ ++ char *stropped = (char *) alloca (strlen (keyword) + 1); ++ memcpy (stropped, keyword, strlen (keyword) + 1); ++ ++ if (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING) ++ { ++ for (char *p = stropped; *p; ++p) ++ *p = TOLOWER (*p); ++ } ++ ++ return ggc_strdup (stropped); ++} ++ ++/* Add token to the token tree. */ ++ ++TOKEN_T * ++a68_add_token (TOKEN_T **p, const char *t) ++{ ++ while (*p != NO_TOKEN) ++ { ++ int k = strcmp (t, TEXT (*p)); ++ ++ if (k < 0) ++ p = &LESS (*p); ++ else if (k > 0) ++ p = &MORE (*p); ++ else ++ return *p; ++ } ++ ++ *p = (TOKEN_T *) ggc_cleared_alloc (); ++ TEXT (*p) = ggc_strdup (t); ++ LESS (*p) = MORE (*p) = NO_TOKEN; ++ return *p; ++} ++ ++/* Find keyword, from token name. */ ++ ++KEYWORD_T * ++a68_find_keyword (KEYWORD_T *p, const char *t) ++{ ++ while (p != NO_KEYWORD) ++ { ++ bool case_insensitive = (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING); ++ int k = (case_insensitive ++ ? strcasecmp (t, TEXT (p)) ++ : strcmp (t, TEXT (p))); ++ ++ if (k < 0) ++ p = LESS (p); ++ else if (k > 0) ++ p = MORE (p); ++ else ++ return p; ++ } ++ ++ return NO_KEYWORD; ++} ++ ++/* Find keyword, from attribute. */ ++ ++KEYWORD_T * ++a68_find_keyword_from_attribute (KEYWORD_T *p, enum a68_attribute a) ++{ ++ if (p == NO_KEYWORD) ++ return NO_KEYWORD; ++ else if (a == ATTRIBUTE (p)) ++ return p; ++ else ++ { ++ KEYWORD_T *z; ++ ++ if ((z = a68_find_keyword_from_attribute (LESS (p), a)) != NO_KEYWORD) ++ return z; ++ else if ((z = a68_find_keyword_from_attribute (MORE (p), a)) != NO_KEYWORD) ++ return z; ++ } ++ ++ return NO_KEYWORD; ++} ++ ++/* Add keyword to the tree. */ ++ ++static void ++add_keyword (KEYWORD_T **p, enum a68_attribute a, const char *t) ++{ ++ while (*p != NO_KEYWORD) ++ { ++ bool case_insensitive = (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING); ++ int k = (case_insensitive ++ ? strcasecmp (t, TEXT (*p)) ++ : strcmp (t, TEXT (*p))); ++ if (k < 0) ++ p = &LESS (*p); ++ else ++ p = &MORE (*p); ++ } ++ ++ *p = (KEYWORD_T *) ggc_cleared_alloc (); ++ ATTRIBUTE (*p) = a; ++ TEXT (*p) = t; ++ LESS (*p) = MORE (*p) = NO_KEYWORD; ++} ++ ++/* Make tables of keywords and non-terminals. */ ++ ++void ++a68_set_up_tables (void) ++{ ++ /* Entries are randomised to balance the tree. */ ++ if (OPTION_STRICT (&A68_JOB) == false) ++ { ++ /* Symbols from GNU extensions. */ ++ add_keyword (&A68 (top_keyword), ANDF_SYMBOL, "ANDTH"); ++ add_keyword (&A68 (top_keyword), ORF_SYMBOL, "OREL"); ++ add_keyword (&A68 (top_keyword), BRIEF_COMMENT_BEGIN_SYMBOL, "{"); ++ add_keyword (&A68 (top_keyword), BRIEF_COMMENT_END_SYMBOL, "}"); ++ ++ if (OPTION_STROPPING (&A68_JOB) != SUPPER_STROPPING) ++ { ++ add_keyword (&A68 (top_keyword), BOLD_COMMENT_BEGIN_SYMBOL, "NOTE"); ++ add_keyword (&A68 (top_keyword), BOLD_COMMENT_END_SYMBOL, "ETON"); ++ } ++ ++ /* Symbols from MR. */ ++ add_keyword (&A68 (top_keyword), ACCESS_SYMBOL, "ACCESS"); ++ add_keyword (&A68 (top_keyword), DEF_SYMBOL, "DEF"); ++ add_keyword (&A68 (top_keyword), POSTLUDE_SYMBOL, "POSTLUDE"); ++ add_keyword (&A68 (top_keyword), FED_SYMBOL, "FED"); ++ add_keyword (&A68 (top_keyword), FORMAL_NEST_SYMBOL, "NEST"); ++ add_keyword (&A68 (top_keyword), MODULE_SYMBOL, "MODULE"); ++ add_keyword (&A68 (top_keyword), EGG_SYMBOL, "EGG"); ++ add_keyword (&A68 (top_keyword), PUBLIC_SYMBOL, "PUB"); ++ } ++ ++ if (OPTION_STROPPING (&A68_JOB) != SUPPER_STROPPING) ++ { ++ /* The following representations do not work well with stropping regimes ++ in which reserved words live in the same namespace than ++ tags/identifiers. The alternative "brief" representations for these ++ symbols shall be used instead. */ ++ add_keyword (&A68 (top_keyword), STYLE_I_COMMENT_SYMBOL, "CO"); ++ add_keyword (&A68 (top_keyword), BOLD_COMMENT_SYMBOL, "COMMENT"); ++ add_keyword (&A68 (top_keyword), STYLE_II_COMMENT_SYMBOL, "#"); ++ } ++ ++ add_keyword (&A68 (top_keyword), POINT_SYMBOL, "."); ++ add_keyword (&A68 (top_keyword), COLON_SYMBOL, ":"); ++ add_keyword (&A68 (top_keyword), THEN_BAR_SYMBOL, "|"); ++ add_keyword (&A68 (top_keyword), SUB_SYMBOL, "["); ++ add_keyword (&A68 (top_keyword), BY_SYMBOL, "BY"); ++ add_keyword (&A68 (top_keyword), OP_SYMBOL, "OP"); ++ add_keyword (&A68 (top_keyword), COMMA_SYMBOL, ","); ++ add_keyword (&A68 (top_keyword), AT_SYMBOL, "AT"); ++ add_keyword (&A68 (top_keyword), PRIO_SYMBOL, "PRIO"); ++ add_keyword (&A68 (top_keyword), END_SYMBOL, "END"); ++ add_keyword (&A68 (top_keyword), GO_SYMBOL, "GO"); ++ add_keyword (&A68 (top_keyword), TO_SYMBOL, "TO"); ++ add_keyword (&A68 (top_keyword), ELSE_BAR_SYMBOL, "|:"); ++ add_keyword (&A68 (top_keyword), THEN_SYMBOL, "THEN"); ++ add_keyword (&A68 (top_keyword), TRUE_SYMBOL, "TRUE"); ++ add_keyword (&A68 (top_keyword), PROC_SYMBOL, "PROC"); ++ add_keyword (&A68 (top_keyword), FOR_SYMBOL, "FOR"); ++ add_keyword (&A68 (top_keyword), GOTO_SYMBOL, "GOTO"); ++ add_keyword (&A68 (top_keyword), WHILE_SYMBOL, "WHILE"); ++ add_keyword (&A68 (top_keyword), IS_SYMBOL, ":=:"); ++ add_keyword (&A68 (top_keyword), ASSIGN_TO_SYMBOL, "=:"); ++ add_keyword (&A68 (top_keyword), COMPL_SYMBOL, "COMPL"); ++ add_keyword (&A68 (top_keyword), FROM_SYMBOL, "FROM"); ++ add_keyword (&A68 (top_keyword), BOLD_PRAGMAT_SYMBOL, "PRAGMAT"); ++ add_keyword (&A68 (top_keyword), DO_SYMBOL, "DO"); ++ add_keyword (&A68 (top_keyword), CASE_SYMBOL, "CASE"); ++ add_keyword (&A68 (top_keyword), LOC_SYMBOL, "LOC"); ++ add_keyword (&A68 (top_keyword), CHAR_SYMBOL, "CHAR"); ++ add_keyword (&A68 (top_keyword), ISNT_SYMBOL, ":/=:"); ++ add_keyword (&A68 (top_keyword), REF_SYMBOL, "REF"); ++ add_keyword (&A68 (top_keyword), NIL_SYMBOL, "NIL"); ++ add_keyword (&A68 (top_keyword), ASSIGN_SYMBOL, ":="); ++ add_keyword (&A68 (top_keyword), FI_SYMBOL, "FI"); ++ add_keyword (&A68 (top_keyword), FILE_SYMBOL, "FILE"); ++ add_keyword (&A68 (top_keyword), PAR_SYMBOL, "PAR"); ++ add_keyword (&A68 (top_keyword), ASSERT_SYMBOL, "ASSERT"); ++ add_keyword (&A68 (top_keyword), OUSE_SYMBOL, "OUSE"); ++ add_keyword (&A68 (top_keyword), IN_SYMBOL, "IN"); ++ add_keyword (&A68 (top_keyword), LONG_SYMBOL, "LONG"); ++ add_keyword (&A68 (top_keyword), SEMI_SYMBOL, ";"); ++ add_keyword (&A68 (top_keyword), EMPTY_SYMBOL, "EMPTY"); ++ add_keyword (&A68 (top_keyword), MODE_SYMBOL, "MODE"); ++ add_keyword (&A68 (top_keyword), IF_SYMBOL, "IF"); ++ add_keyword (&A68 (top_keyword), OD_SYMBOL, "OD"); ++ add_keyword (&A68 (top_keyword), OF_SYMBOL, "OF"); ++ add_keyword (&A68 (top_keyword), STRUCT_SYMBOL, "STRUCT"); ++ add_keyword (&A68 (top_keyword), STYLE_I_PRAGMAT_SYMBOL, "PR"); ++ add_keyword (&A68 (top_keyword), BUS_SYMBOL, "]"); ++ add_keyword (&A68 (top_keyword), SKIP_SYMBOL, "SKIP"); ++ add_keyword (&A68 (top_keyword), SHORT_SYMBOL, "SHORT"); ++ add_keyword (&A68 (top_keyword), IS_SYMBOL, "IS"); ++ add_keyword (&A68 (top_keyword), ESAC_SYMBOL, "ESAC"); ++ add_keyword (&A68 (top_keyword), CHANNEL_SYMBOL, "CHANNEL"); ++ add_keyword (&A68 (top_keyword), REAL_SYMBOL, "REAL"); ++ add_keyword (&A68 (top_keyword), STRING_SYMBOL, "STRING"); ++ add_keyword (&A68 (top_keyword), BOOL_SYMBOL, "BOOL"); ++ add_keyword (&A68 (top_keyword), ISNT_SYMBOL, "ISNT"); ++ add_keyword (&A68 (top_keyword), FALSE_SYMBOL, "FALSE"); ++ add_keyword (&A68 (top_keyword), UNION_SYMBOL, "UNION"); ++ add_keyword (&A68 (top_keyword), OUT_SYMBOL, "OUT"); ++ add_keyword (&A68 (top_keyword), BRIEF_COMMENT_END_SYMBOL, "{"); ++ add_keyword (&A68 (top_keyword), OPEN_SYMBOL, "("); ++ add_keyword (&A68 (top_keyword), BEGIN_SYMBOL, "BEGIN"); ++ add_keyword (&A68 (top_keyword), FLEX_SYMBOL, "FLEX"); ++ add_keyword (&A68 (top_keyword), VOID_SYMBOL, "VOID"); ++ add_keyword (&A68 (top_keyword), BITS_SYMBOL, "BITS"); ++ add_keyword (&A68 (top_keyword), ELSE_SYMBOL, "ELSE"); ++ add_keyword (&A68 (top_keyword), EXIT_SYMBOL, "EXIT"); ++ add_keyword (&A68 (top_keyword), HEAP_SYMBOL, "HEAP"); ++ add_keyword (&A68 (top_keyword), INT_SYMBOL, "INT"); ++ add_keyword (&A68 (top_keyword), BYTES_SYMBOL, "BYTES"); ++ add_keyword (&A68 (top_keyword), SEMA_SYMBOL, "SEMA"); ++ add_keyword (&A68 (top_keyword), CLOSE_SYMBOL, ")"); ++ add_keyword (&A68 (top_keyword), AT_SYMBOL, "@"); ++ add_keyword (&A68 (top_keyword), ELIF_SYMBOL, "ELIF"); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-modes.cc +@@ -0,0 +1,1325 @@ ++/* Mode table management. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* ++ * Mode collection, equivalencing and derived modes. ++ */ ++ ++/* Few forward references. */ ++ ++static MOID_T *get_mode_from_declarer (NODE_T *p); ++ ++/* ++ * Mode service routines. ++ */ ++ ++/* Count bounds in declarer in tree. */ ++ ++static int ++count_bounds (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return 0; ++ else ++ { ++ if (IS (p, BOUND)) ++ return 1 + count_bounds (NEXT (p)); ++ else ++ return count_bounds (NEXT (p)) + count_bounds (SUB (p)); ++ } ++} ++ ++/* Count number of SHORTs or LONGs. */ ++ ++static int ++count_sizety (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return 0; ++ else if (IS (p, LONGETY)) ++ return count_sizety (SUB (p)) + count_sizety (NEXT (p)); ++ else if (IS (p, SHORTETY)) ++ return count_sizety (SUB (p)) + count_sizety (NEXT (p)); ++ else if (IS (p, LONG_SYMBOL)) ++ return 1; ++ else if (IS (p, SHORT_SYMBOL)) ++ return -1; ++ else ++ return 0; ++} ++ ++/* Count moids in a pack. */ ++ ++int ++a68_count_pack_members (PACK_T *u) ++{ ++ int k = 0; ++ ++ for (; u != NO_PACK; FORWARD (u)) ++ k++; ++ return k; ++} ++ ++/* Replace a mode by its equivalent mode. */ ++ ++static void ++resolve_equivalent (MOID_T **m) ++{ ++ while ((*m) != NO_MOID ++ && EQUIVALENT ((*m)) != NO_MOID ++ && (*m) != EQUIVALENT (*m)) ++ { ++ (*m) = EQUIVALENT (*m); ++ } ++} ++ ++/* Reset moid. */ ++ ++static void ++reset_moid_tree (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ MOID (p) = NO_MOID; ++ reset_moid_tree (SUB (p)); ++ } ++} ++ ++/* Renumber moids. */ ++ ++void ++a68_renumber_moids (MOID_T *p, int n) ++{ ++ if (p != NO_MOID) ++ { ++ NUMBER (p) = n; ++ a68_renumber_moids (NEXT (p), n + 1); ++ } ++} ++ ++/* See whether a mode equivalent to the mode M exists in the global mode table, ++ and return it. Return NO_MOID if no equivalent mode is found. */ ++ ++MOID_T * ++a68_search_equivalent_mode (MOID_T *m) ++{ ++ for (MOID_T *head = TOP_MOID (&A68_JOB); head != NO_MOID; FORWARD (head)) ++ { ++ if (a68_prove_moid_equivalence (head, m)) ++ return head; ++ } ++ ++ return NO_MOID; ++} ++ ++/* Register mode in the global mode table, if mode is unique. */ ++ ++MOID_T * ++a68_register_extra_mode (MOID_T **z, MOID_T *u) ++{ ++ /* If we already know this mode, return the existing entry; otherwise link it ++ in. */ ++ for (MOID_T *head = TOP_MOID (&A68_JOB); head != NO_MOID; FORWARD (head)) ++ { ++ if (a68_prove_moid_equivalence (head, u)) ++ return head; ++ } ++ ++ /* Link to chain and exit. */ ++ NUMBER (u) = A68 (mode_count)++; ++ NEXT (u) = (*z); ++ return *z = u; ++} ++ ++/* Create a new mode. */ ++ ++MOID_T * ++a68_create_mode (int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack) ++{ ++ MOID_T *new_mode = a68_new_moid (); ++ ++ if (sub == NO_MOID) ++ { ++ if (att == REF_SYMBOL ++ || att == FLEX_SYMBOL ++ || att == ROW_SYMBOL) ++ gcc_unreachable (); ++ } ++ ++ USE (new_mode) = false; ++ ATTRIBUTE (new_mode) = att; ++ DIM (new_mode) = dim; ++ NODE (new_mode) = node; ++ HAS_ROWS (new_mode) = (att == ROW_SYMBOL); ++ SUB (new_mode) = sub; ++ PACK (new_mode) = pack; ++ NEXT (new_mode) = NO_MOID; ++ EQUIVALENT (new_mode) = NO_MOID; ++ SLICE (new_mode) = NO_MOID; ++ DEFLEXED (new_mode) = NO_MOID; ++ NAME (new_mode) = NO_MOID; ++ MULTIPLE (new_mode) = NO_MOID; ++ ROWED (new_mode) = NO_MOID; ++ ++ return new_mode; ++} ++ ++/* Create a new mode and add it to chain Z. */ ++ ++MOID_T * ++a68_add_mode (MOID_T **z, int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack) ++{ ++ MOID_T *new_mode = a68_create_mode (att, dim, node, sub, pack); ++ return a68_register_extra_mode (z, new_mode); ++} ++ ++/* Contract a UNION. */ ++ ++void ++a68_contract_union (MOID_T *u) ++{ ++ for (PACK_T *s = PACK (u); s != NO_PACK; FORWARD (s)) ++ { ++ PACK_T *t = s; ++ ++ while (t != NO_PACK) ++ { ++ if (NEXT (t) != NO_PACK && MOID (NEXT (t)) == MOID (s)) ++ { ++ MOID (t) = MOID (t); ++ NEXT (t) = NEXT_NEXT (t); ++ } ++ else ++ FORWARD (t); ++ } ++ } ++} ++ ++/* Absorb UNION pack. */ ++ ++PACK_T * ++a68_absorb_union_pack (PACK_T * u) ++{ ++ PACK_T *z; ++ bool siga; ++ ++ do ++ { ++ z = NO_PACK; ++ siga = false; ++ for (PACK_T *t = u; t != NO_PACK; FORWARD (t)) ++ { ++ if (IS (MOID (t), UNION_SYMBOL)) ++ { ++ siga = true; ++ for (PACK_T *s = PACK (MOID (t)); s != NO_PACK; FORWARD (s)) ++ (void) a68_add_mode_to_pack (&z, MOID (s), NO_TEXT, NODE (s)); ++ } ++ else ++ { ++ (void) a68_add_mode_to_pack (&z, MOID (t), NO_TEXT, NODE (t)); ++ } ++ } ++ u = z; ++ } ++ while (siga); ++ return z; ++} ++ ++/* Add row and its slices to chain, recursively. */ ++ ++static MOID_T * ++add_row (MOID_T **p, int dim, MOID_T *sub, NODE_T *n, bool derivate) ++{ ++ MOID_T *q = a68_add_mode (p, ROW_SYMBOL, dim, n, sub, NO_PACK); ++ ++ DERIVATE (q) |= derivate; ++ if (dim > 1) ++ SLICE (q) = add_row (&NEXT (q), dim - 1, sub, n, derivate); ++ else ++ SLICE (q) = sub; ++ return q; ++} ++ ++/* Add a moid to a pack, maybe with a (field) name. */ ++ ++void ++a68_add_mode_to_pack (PACK_T **p, MOID_T *m, const char *text, NODE_T *node) ++{ ++ PACK_T *z = a68_new_pack (); ++ ++ MOID (z) = m; ++ TEXT (z) = text; ++ NODE (z) = node; ++ NEXT (z) = *p; ++ PREVIOUS (z) = NO_PACK; ++ if (NEXT (z) != NO_PACK) ++ PREVIOUS (NEXT (z)) = z; ++ ++ /* Link in chain. */ ++ *p = z; ++} ++ ++/* Add a moid to a pack, maybe with a (field) name. */ ++ ++void ++a68_add_mode_to_pack_end (PACK_T **p, MOID_T *m, const char *text, NODE_T *node) ++{ ++ PACK_T *z = a68_new_pack (); ++ ++ MOID (z) = m; ++ TEXT (z) = text; ++ NODE (z) = node; ++ NEXT (z) = NO_PACK; ++ if (NEXT (z) != NO_PACK) ++ PREVIOUS (NEXT (z)) = z; ++ ++ /* Link in chain. */ ++ while ((*p) != NO_PACK) ++ p = &(NEXT (*p)); ++ PREVIOUS (z) = (*p); ++ (*p) = z; ++} ++ ++/* Absorb UNION members. */ ++ ++static void ++absorb_unions (MOID_T *m) ++{ ++ /* UNION (A, UNION (B, C)) = UNION (A, B, C) or ++ UNION (A, UNION (A, B)) = UNION (A, B). */ ++ for (; m != NO_MOID; FORWARD (m)) ++ { ++ if (IS (m, UNION_SYMBOL)) ++ PACK (m) = a68_absorb_union_pack (PACK (m)); ++ } ++} ++ ++/* Contract UNIONs. */ ++ ++static void ++contract_unions (MOID_T *m) ++{ ++ /* UNION (A, B, A) -> UNION (A, B). */ ++ for (; m != NO_MOID; FORWARD (m)) ++ { ++ if (IS (m, UNION_SYMBOL) && EQUIVALENT (m) == NO_MOID) ++ a68_contract_union (m); ++ } ++} ++ ++/* ++ * Routines to collect MOIDs from the program text. ++ */ ++ ++/* Search standard mode in standard environ. */ ++ ++static MOID_T * ++search_standard_mode (int sizety, NODE_T *indicant) ++{ ++ /* Search standard mode. */ ++ for (MOID_T *p = TOP_MOID (&A68_JOB); p != NO_MOID; FORWARD (p)) ++ { ++ if (IS (p, STANDARD) ++ && DIM (p) == sizety ++ && NSYMBOL (NODE (p)) == NSYMBOL (indicant)) ++ return p; ++ } ++ ++ /* Map onto greater precision. */ ++ if (sizety < 0) ++ return search_standard_mode (sizety + 1, indicant); ++ else if (sizety > 0) ++ return search_standard_mode (sizety - 1, indicant); ++ else ++ return NO_MOID; ++} ++ ++/* Collect mode from STRUCT field. */ ++ ++static void ++get_mode_from_struct_field (NODE_T *p, PACK_T **u) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, IDENTIFIER)) ++ { ++ ATTRIBUTE (p) = FIELD_IDENTIFIER; ++ (void) a68_add_mode_to_pack (u, NO_MOID, NSYMBOL (p), p); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ MOID_T *new_one = get_mode_from_declarer (p); ++ ++ get_mode_from_struct_field (NEXT (p), u); ++ for (PACK_T *t = *u; t && MOID (t) == NO_MOID; FORWARD (t)) ++ { ++ MOID (t) = new_one; ++ MOID (NODE (t)) = new_one; ++ } ++ } ++ else ++ { ++ get_mode_from_struct_field (NEXT (p), u); ++ get_mode_from_struct_field (SUB (p), u); ++ } ++ } ++} ++ ++/* Collect MODE from formal pack. */ ++ ++static void ++get_mode_from_formal_pack (NODE_T *p, PACK_T **u) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, DECLARER)) ++ { ++ get_mode_from_formal_pack (NEXT (p), u); ++ MOID_T *z = get_mode_from_declarer (p); ++ (void) a68_add_mode_to_pack (u, z, NO_TEXT, p); ++ } ++ else ++ { ++ get_mode_from_formal_pack (NEXT (p), u); ++ get_mode_from_formal_pack (SUB (p), u); ++ } ++ } ++} ++ ++/* Collect MODE or VOID from formal UNION pack. */ ++ ++static void ++get_mode_from_union_pack (NODE_T *p, PACK_T **u) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, DECLARER) || IS (p, VOID_SYMBOL)) ++ { ++ get_mode_from_union_pack (NEXT (p), u); ++ MOID_T *z = get_mode_from_declarer (p); ++ (void) a68_add_mode_to_pack (u, z, NO_TEXT, p); ++ } ++ else ++ { ++ get_mode_from_union_pack (NEXT (p), u); ++ get_mode_from_union_pack (SUB (p), u); ++ } ++ } ++} ++ ++/* Collect mode from PROC, OP pack. */ ++ ++static void ++get_mode_from_routine_pack (NODE_T *p, PACK_T **u) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, IDENTIFIER)) ++ (void) a68_add_mode_to_pack (u, NO_MOID, NO_TEXT, p); ++ else if (IS (p, DECLARER)) ++ { ++ MOID_T *z = get_mode_from_declarer (p); ++ ++ for (PACK_T *t = *u; t != NO_PACK && MOID (t) == NO_MOID; FORWARD (t)) ++ { ++ MOID (t) = z; ++ MOID (NODE (t)) = z; ++ } ++ (void) a68_add_mode_to_pack (u, z, NO_TEXT, p); ++ } ++ else ++ { ++ get_mode_from_routine_pack (NEXT (p), u); ++ get_mode_from_routine_pack (SUB (p), u); ++ } ++ } ++} ++ ++/* Collect MODE from DECLARER. */ ++ ++static MOID_T * ++get_mode_from_declarer (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return NO_MOID; ++ else ++ { ++ if (IS (p, DECLARER)) ++ { ++ if (MOID (p) != NO_MOID) ++ return MOID (p); ++ else ++ return MOID (p) = get_mode_from_declarer (SUB (p)); ++ } ++ else ++ { ++ if (IS (p, VOID_SYMBOL)) ++ { ++ MOID (p) = M_VOID; ++ return MOID (p); ++ } ++ else if (IS (p, LONGETY)) ++ { ++ if (a68_whether (p, LONGETY, INDICANT, STOP)) ++ { ++ int k = count_sizety (SUB (p)); ++ MOID (p) = search_standard_mode (k, NEXT (p)); ++ return MOID (p); ++ } ++ else ++ { ++ return NO_MOID; ++ } ++ } ++ else if (IS (p, SHORTETY)) ++ { ++ if (a68_whether (p, SHORTETY, INDICANT, STOP)) ++ { ++ int k = count_sizety (SUB (p)); ++ MOID (p) = search_standard_mode (k, NEXT (p)); ++ return MOID (p); ++ } ++ else ++ return NO_MOID; ++ } ++ else if (IS (p, INDICANT)) ++ { ++ MOID_T *q = search_standard_mode (0, p); ++ if (q != NO_MOID) ++ MOID (p) = q; ++ else ++ { ++ /* Position of definition tells indicants apart. */ ++ TAG_T *y = a68_find_tag_global (TABLE (p), INDICANT, NSYMBOL (p)); ++ if (y == NO_TAG) ++ a68_error ( p, "tag Z has not been declared properly", NSYMBOL (p)); ++ else ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), INDICANT, 0, NODE (y), ++ NO_MOID, NO_PACK); ++ } ++ return MOID (p); ++ } ++ else if (IS_REF (p)) ++ { ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, p, new_one, NO_PACK); ++ return MOID (p); ++ } ++ else if (IS_FLEX (p)) ++ { ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), FLEX_SYMBOL, 0, p, new_one, NO_PACK); ++ SLICE (MOID (p)) = SLICE (new_one); ++ return MOID (p); ++ } ++ else if (IS (p, FORMAL_BOUNDS)) ++ { ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = add_row (&TOP_MOID (&A68_JOB), ++ 1 + a68_count_formal_bounds (SUB (p)), new_one, p, false); ++ return MOID (p); ++ } ++ else if (IS (p, BOUNDS)) ++ { ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = add_row (&TOP_MOID (&A68_JOB), count_bounds (SUB (p)), new_one, p, false); ++ return MOID (p); ++ } ++ else if (IS (p, STRUCT_SYMBOL)) ++ { ++ PACK_T *u = NO_PACK; ++ get_mode_from_struct_field (NEXT (p), &u); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), ++ STRUCT_SYMBOL, a68_count_pack_members (u), p, NO_MOID, u); ++ return MOID (p); ++ } ++ else if (IS (p, UNION_SYMBOL)) ++ { ++ PACK_T *u = NO_PACK; ++ get_mode_from_union_pack (NEXT (p), &u); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), ++ UNION_SYMBOL, a68_count_pack_members (u), p, NO_MOID, u); ++ return MOID (p); ++ } ++ else if (IS (p, PROC_SYMBOL)) ++ { ++ NODE_T *save = p; ++ PACK_T *u = NO_PACK; ++ if (IS (NEXT (p), FORMAL_DECLARERS)) ++ { ++ get_mode_from_formal_pack (SUB_NEXT (p), &u); ++ FORWARD (p); ++ } ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = ++ a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (u), save, new_one, u); ++ MOID (save) = MOID (p); ++ return MOID (p); ++ } ++ else ++ return NO_MOID; ++ } ++ } ++} ++ ++/* Collect MODEs from a routine-text header. */ ++ ++static MOID_T * ++get_mode_from_routine_text (NODE_T *p) ++{ ++ PACK_T *u = NO_PACK; ++ NODE_T *q = p; ++ ++ if (IS (p, PARAMETER_PACK)) ++ { ++ get_mode_from_routine_pack (SUB (p), &u); ++ FORWARD (p); ++ } ++ MOID_T *n = get_mode_from_declarer (p); ++ return a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (u), q, n, u); ++} ++ ++/* Collect modes from operator-plan. */ ++ ++static MOID_T * ++get_mode_from_operator (NODE_T *p) ++{ ++ PACK_T *u = NO_PACK; ++ NODE_T *save = p; ++ ++ if (IS (NEXT (p), FORMAL_DECLARERS)) ++ { ++ get_mode_from_formal_pack (SUB_NEXT (p), &u); ++ FORWARD (p); ++ } ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (u), save, new_one, u); ++ return MOID (p); ++} ++ ++/* Collect mode from denotation. */ ++ ++static void ++get_mode_from_denotation (NODE_T *p, int sizety) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, ROW_CHAR_DENOTATION)) ++ { ++ const char *s = NSYMBOL (p); ++ size_t len = strlen (s); ++ ++ if (len == 1 ++ || (len == 2 && s[0] == '\'') ++ || (len == 8 && s[0] == '\'' && s[1] == '(' && s[2] == 'u') ++ || (len == 12 && s[0] == '\'' && s[1] == '(' && s[2] == 'U')) ++ { ++ MOID (p) = M_CHAR; ++ } ++ else ++ MOID (p) = M_ROW_CHAR; ++ } ++ else if (IS (p, TRUE_SYMBOL) || IS (p, FALSE_SYMBOL)) ++ { ++ MOID (p) = M_BOOL; ++ } ++ else if (IS (p, INT_DENOTATION)) ++ { ++ if (sizety == -2) ++ MOID (p) = M_SHORT_SHORT_INT; ++ else if (sizety == -1) ++ MOID (p) = M_SHORT_INT; ++ else if (sizety == 0) ++ MOID (p) = M_INT; ++ else if (sizety == 1) ++ MOID (p) = M_LONG_INT; ++ else if (sizety == 2) ++ MOID (p) = M_LONG_LONG_INT; ++ else ++ MOID (p) = (sizety > 0 ? M_LONG_LONG_INT : M_INT); ++ } ++ else if (IS (p, REAL_DENOTATION)) ++ { ++ if (sizety == 0) ++ MOID (p) = M_REAL; ++ else if (sizety == 1) ++ MOID (p) = M_LONG_REAL; ++ else if (sizety == 2) ++ MOID (p) = M_LONG_LONG_REAL; ++ else ++ MOID (p) = (sizety > 0 ? M_LONG_LONG_REAL : M_REAL); ++ } ++ else if (IS (p, BITS_DENOTATION)) ++ { ++ if (sizety == -2) ++ MOID (p) = M_SHORT_SHORT_BITS; ++ else if (sizety == -1) ++ MOID (p) = M_SHORT_BITS; ++ else if (sizety == 0) ++ MOID (p) = M_BITS; ++ else if (sizety == 1) ++ MOID (p) = M_LONG_BITS; ++ else if (sizety == 2) ++ MOID (p) = M_LONG_LONG_BITS; ++ else ++ MOID (p) = (sizety > 0 ? M_LONG_LONG_BITS : M_BITS); ++ } ++ else if (IS (p, LONGETY) || IS (p, SHORTETY)) ++ { ++ get_mode_from_denotation (NEXT (p), count_sizety (SUB (p))); ++ MOID (p) = MOID (NEXT (p)); ++ } ++ else if (IS (p, EMPTY_SYMBOL)) ++ { ++ MOID (p) = M_VOID; ++ } ++ } ++} ++ ++/* Collect modes from the syntax tree. */ ++ ++static void ++get_modes_from_tree (NODE_T *p, int attribute) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, VOID_SYMBOL)) ++ MOID (q) = M_VOID; ++ else if (IS (q, DECLARER)) ++ { ++ if (attribute == VARIABLE_DECLARATION) ++ { ++ MOID_T *new_one = get_mode_from_declarer (q); ++ MOID (q) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, new_one, NO_PACK); ++ } ++ else ++ MOID (q) = get_mode_from_declarer (q); ++ } ++ else if (IS (q, ROUTINE_TEXT)) ++ { ++ MOID (q) = get_mode_from_routine_text (SUB (q)); ++ } ++ else if (IS (q, OPERATOR_PLAN)) ++ { ++ MOID (q) = get_mode_from_operator (SUB (q)); ++ } ++ else if (a68_is_one_of (q, LOC_SYMBOL, HEAP_SYMBOL, STOP)) ++ { ++ if (attribute == GENERATOR) ++ { ++ MOID_T *new_one = get_mode_from_declarer (NEXT (q)); ++ MOID (NEXT (q)) = new_one; ++ MOID (q) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, new_one, NO_PACK); ++ } ++ } ++ else ++ { ++ if (attribute == DENOTATION) ++ get_mode_from_denotation (q, 0); ++ } ++ } ++ ++ if (attribute != DENOTATION) ++ { ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (SUB (q) != NO_NODE) ++ get_modes_from_tree (SUB (q), ATTRIBUTE (q)); ++ } ++ } ++} ++ ++//! @brief Collect modes from proc variables. ++ ++static void ++get_mode_from_proc_variables (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) ++ { ++ get_mode_from_proc_variables (SUB (p)); ++ get_mode_from_proc_variables (NEXT (p)); ++ } ++ else if (IS (p, QUALIFIER) || IS (p, PROC_SYMBOL) || IS (p, COMMA_SYMBOL)) ++ { ++ get_mode_from_proc_variables (NEXT (p)); ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ MOID_T *new_one = MOID (NEXT_NEXT (p)); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, p, new_one, NO_PACK); ++ } ++ } ++} ++ ++/* Collect modes from proc variable declarations. */ ++ ++static void ++get_mode_from_proc_var_declarations_tree (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ get_mode_from_proc_var_declarations_tree (SUB (p)); ++ ++ if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) ++ get_mode_from_proc_variables (p); ++ } ++} ++ ++/* ++ * Various routines to test modes. ++ */ ++ ++/* Whether a mode declaration refers to self or relates to void. ++ This uses Lindsey's ying-yang algorithm. */ ++ ++static bool ++is_well_formed (MOID_T *def, MOID_T *z, bool yin, bool yang, bool video) ++{ ++ if (z == NO_MOID) ++ return false; ++ else if (yin && yang) ++ return z == M_VOID ? video : true; ++ else if (z == M_VOID) ++ return video; ++ else if (IS (z, STANDARD)) ++ return true; ++ else if (IS (z, INDICANT)) ++ { ++ if (def == NO_MOID) ++ { ++ /* Check an applied indicant for relation to VOID. */ ++ while (z != NO_MOID) ++ z = EQUIVALENT (z); ++ if (z == M_VOID) ++ return video; ++ else ++ return true; ++ } ++ else ++ { ++ if (z == def || USE (z)) ++ return yin && yang; ++ else ++ { ++ USE (z) = true; ++ bool wwf = is_well_formed (def, EQUIVALENT (z), yin, yang, video); ++ USE (z) = false; ++ return wwf; ++ } ++ } ++ } ++ else if (IS_REF (z)) ++ return is_well_formed (def, SUB (z), true, yang, false); ++ else if (IS (z, PROC_SYMBOL)) ++ return PACK (z) != NO_PACK ? true : is_well_formed (def, SUB (z), true, yang, true); ++ else if (IS_ROW (z)) ++ return is_well_formed (def, SUB (z), yin, yang, false); ++ else if (IS_FLEX (z)) ++ return is_well_formed (def, SUB (z), yin, yang, false); ++ else if (IS (z, STRUCT_SYMBOL)) ++ { ++ for (PACK_T *s = PACK (z); s != NO_PACK; FORWARD (s)) ++ { ++ if (!is_well_formed (def, MOID (s), yin, true, false)) ++ return false; ++ } ++ return true; ++ } ++ else if (IS (z, UNION_SYMBOL)) ++ { ++ for (PACK_T *s = PACK (z); s != NO_PACK; FORWARD (s)) ++ { ++ if (!is_well_formed (def, MOID (s), yin, yang, true)) ++ return false; ++ } ++ return true; ++ } ++ else ++ { ++ return false; ++ } ++} ++ ++/* Replace a mode by its equivalent mode (walk chain). */ ++ ++static void ++resolve_eq_members (MOID_T *q) ++{ ++ resolve_equivalent (&SUB (q)); ++ resolve_equivalent (&DEFLEXED (q)); ++ resolve_equivalent (&MULTIPLE (q)); ++ resolve_equivalent (&NAME (q)); ++ resolve_equivalent (&SLICE (q)); ++ resolve_equivalent (&TRIM (q)); ++ resolve_equivalent (&ROWED (q)); ++ for (PACK_T *p = PACK (q); p != NO_PACK; FORWARD (p)) ++ resolve_equivalent (&MOID (p)); ++} ++ ++/* Track equivalent tags. */ ++ ++static void ++resolve_eq_tags (TAG_T *z) ++{ ++ for (; z != NO_TAG; FORWARD (z)) ++ { ++ if (MOID (z) != NO_MOID) ++ resolve_equivalent (&MOID (z)); ++ } ++} ++ ++/* Bind modes in syntax tree. */ ++ ++static void ++bind_modes (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ resolve_equivalent (&MOID (p)); ++ ++ if (SUB (p) != NO_NODE && a68_is_new_lexical_level (p)) ++ { ++ TABLE_T *s = TABLE (SUB (p)); ++ for (TAG_T *z = INDICANTS (s); z != NO_TAG; FORWARD (z)) ++ { ++ if (NODE (z) != NO_NODE) ++ { ++ resolve_equivalent (&MOID (NEXT_NEXT (NODE (z)))); ++ MOID (z) = MOID (NEXT_NEXT (NODE (z))); ++ MOID (NODE (z)) = MOID (z); ++ } ++ } ++ } ++ bind_modes (SUB (p)); ++ } ++} ++ ++/* Routines for calculating subordinates for selections, for instance selection ++ from REF STRUCT (A) yields REF A fields and selection from [] STRUCT (A) ++ yields [] A fields. */ ++ ++/* Make name pack. ++ Given a pack with modes: M1, M2, ... ++ Build a pack with modes: REF M1, REF M2, ... */ ++ ++static void ++make_name_pack (PACK_T *src, PACK_T **dst, MOID_T **p) ++{ ++ if (src != NO_PACK) ++ { ++ make_name_pack (NEXT (src), dst, p); ++ MOID_T *z = a68_add_mode (p, REF_SYMBOL, 0, NO_NODE, MOID (src), NO_PACK); ++ (void) a68_add_mode_to_pack (dst, z, TEXT (src), NODE (src)); ++ } ++} ++ ++/* Make flex multiple row pack. ++ Given a pack with modes: M1, M2, ... ++ Build a pack with modes: []M1, []M2, ... */ ++ ++static void ++make_flex_multiple_row_pack (PACK_T *src, PACK_T **dst, MOID_T **p, int dim) ++{ ++ if (src != NO_PACK) ++ { ++ make_flex_multiple_row_pack (NEXT (src), dst, p, dim); ++ MOID_T *z = add_row (p, dim, MOID (src), NO_NODE, false); ++ z = a68_add_mode (p, FLEX_SYMBOL, 0, NO_NODE, z, NO_PACK); ++ (void) a68_add_mode_to_pack (dst, z, TEXT (src), NODE (src)); ++ } ++} ++ ++/* Make name struct. */ ++ ++static MOID_T * ++make_name_struct (MOID_T *m, MOID_T **p) ++{ ++ PACK_T *u = NO_PACK; ++ make_name_pack (PACK (m), &u, p); ++ return a68_add_mode (p, STRUCT_SYMBOL, DIM (m), NO_NODE, NO_MOID, u); ++} ++ ++/* Make name row. */ ++ ++static MOID_T * ++make_name_row (MOID_T *m, MOID_T **p) ++{ ++ if (SLICE (m) != NO_MOID) ++ return a68_add_mode (p, REF_SYMBOL, 0, NO_NODE, SLICE (m), NO_PACK); ++ else if (SUB (m) != NO_MOID) ++ return a68_add_mode (p, REF_SYMBOL, 0, NO_NODE, SUB (m), NO_PACK); ++ else ++ /* weird, FLEX INT or so ... */ ++ return NO_MOID; ++} ++ ++/* Make multiple row pack. */ ++ ++static void ++make_multiple_row_pack (PACK_T *src, PACK_T **dst, MOID_T **p, int dim) ++{ ++ if (src != NO_PACK) ++ { ++ make_multiple_row_pack (NEXT (src), dst, p, dim); ++ (void) a68_add_mode_to_pack (dst, add_row (p, dim, MOID (src), NO_NODE, false), ++ TEXT (src), NODE (src)); ++ } ++} ++ ++/* Make flex multiple struct. */ ++ ++static MOID_T * ++make_flex_multiple_struct (MOID_T *m, MOID_T **p, int dim) ++{ ++ PACK_T *u = NO_PACK; ++ make_flex_multiple_row_pack (PACK (m), &u, p, dim); ++ return a68_add_mode (p, STRUCT_SYMBOL, DIM (m), NO_NODE, NO_MOID, u); ++} ++ ++/* Make multiple struct. */ ++ ++static MOID_T * ++make_multiple_struct (MOID_T *m, MOID_T **p, int dim) ++{ ++ PACK_T *u = NO_PACK; ++ make_multiple_row_pack (PACK (m), &u, p, dim); ++ return a68_add_mode (p, STRUCT_SYMBOL, DIM (m), NO_NODE, NO_MOID, u); ++} ++ ++/* Whether mode has row. */ ++ ++static bool ++is_mode_has_row (MOID_T *m) ++{ ++ if (IS (m, STRUCT_SYMBOL) || IS (m, UNION_SYMBOL)) ++ { ++ bool k = false; ++ ++ for (PACK_T *p = PACK (m); p != NO_PACK && k == false; FORWARD (p)) ++ { ++ HAS_ROWS (MOID (p)) = is_mode_has_row (MOID (p)); ++ k |= (HAS_ROWS (MOID (p))); ++ } ++ return k; ++ } ++ else ++ return (HAS_ROWS (m) || IS_ROW (m) || IS_FLEX (m)); ++} ++ ++/* Compute derived modes. */ ++ ++static void ++compute_derived_modes (MODULE_T *mod) ++{ ++ MOID_T *z; ++ int len = 0, nlen = 1; ++ ++ /* UNION things. */ ++ absorb_unions (TOP_MOID (mod)); ++ contract_unions (TOP_MOID (mod)); ++ /* The for-statement below prevents an endless loop. */ ++ for (int k = 1; k <= 10 && len != nlen; k++) ++ { ++ /* Make deflexed modes. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (SUB (z) != NO_MOID) ++ { ++ if (IS_REF_FLEX (z) && DEFLEXED (SUB_SUB (z)) != NO_MOID) ++ DEFLEXED (z) = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), ++ DEFLEXED (SUB_SUB (z)), NO_PACK); ++ else if (IS_REF (z) && DEFLEXED (SUB (z)) != NO_MOID) ++ DEFLEXED (z) = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), ++ DEFLEXED (SUB (z)), NO_PACK); ++ else if (IS_ROW (z) && DEFLEXED (SUB (z)) != NO_MOID) ++ DEFLEXED (z) = a68_add_mode (&TOP_MOID (mod), ROW_SYMBOL, DIM (z), NODE (z), ++ DEFLEXED (SUB (z)), NO_PACK); ++ else if (IS_FLEX (z) && DEFLEXED (SUB (z)) != NO_MOID) ++ DEFLEXED (z) = DEFLEXED (SUB (z)); ++ else if (IS_FLEX (z)) ++ DEFLEXED (z) = SUB (z); ++ else ++ DEFLEXED (z) = z; ++ } ++ } ++ ++ /* Derived modes for stowed modes. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (NAME (z) == NO_MOID && IS_REF (z)) ++ { ++ if (IS (SUB (z), STRUCT_SYMBOL)) ++ NAME (z) = make_name_struct (SUB (z), &TOP_MOID (mod)); ++ else if (IS_ROW (SUB (z))) ++ NAME (z) = make_name_row (SUB (z), &TOP_MOID (mod)); ++ else if (IS_FLEX (SUB (z)) && SUB_SUB (z) != NO_MOID) ++ NAME (z) = make_name_row (SUB_SUB (z), &TOP_MOID (mod)); ++ } ++ ++ if (MULTIPLE (z) != NO_MOID) ++ ; ++ else if (IS_REF (z)) ++ { ++ if (MULTIPLE (SUB (z)) != NO_MOID) ++ MULTIPLE (z) = make_name_struct (MULTIPLE (SUB (z)), &TOP_MOID (mod)); ++ } ++ else if (IS_ROW (z)) ++ { ++ if (IS (SUB (z), STRUCT_SYMBOL)) ++ MULTIPLE (z) = make_multiple_struct (SUB (z), &TOP_MOID (mod), DIM (z)); ++ } ++ } ++ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (TRIM (z) == NO_MOID && IS_FLEX (z)) ++ TRIM (z) = SUB (z); ++ if (TRIM (z) == NO_MOID && IS_REF_FLEX (z)) ++ TRIM (z) = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), SUB_SUB (z), NO_PACK); ++ } ++ ++ /* Fill out stuff for rows, f.i. inverse relations. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS_ROW (z) && DIM (z) > 0 && SUB (z) != NO_MOID && !DERIVATE (z)) ++ (void) add_row (&TOP_MOID (mod), DIM (z) + 1, SUB (z), NODE (z), true); ++ else if (IS_REF (z) && IS (SUB (z), ROW_SYMBOL) && !DERIVATE (SUB (z))) ++ { ++ MOID_T *x = add_row (&TOP_MOID (mod), DIM (SUB (z)) + 1, SUB_SUB (z), NODE (SUB (z)), true); ++ MOID_T *y = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), x, NO_PACK); ++ NAME (y) = z; ++ } ++ } ++ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS_ROW (z) && SLICE (z) != NO_MOID) ++ ROWED (SLICE (z)) = z; ++ if (IS_REF (z)) ++ { ++ MOID_T *y = SUB (z); ++ if (SLICE (y) != NO_MOID && IS_ROW (SLICE (y)) && NAME (z) != NO_MOID) ++ ROWED (NAME (z)) = z; ++ } ++ } ++ ++ bind_modes (TOP_NODE (mod)); ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, INDICANT) && NODE (z) != NO_NODE) ++ EQUIVALENT (z) = MOID (NODE (z)); ++ } ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ resolve_eq_members (z); ++ resolve_eq_tags (INDICANTS (A68_STANDENV)); ++ resolve_eq_tags (IDENTIFIERS (A68_STANDENV)); ++ resolve_eq_tags (OPERATORS (A68_STANDENV)); ++ resolve_equivalent (&M_STRING); ++ resolve_equivalent (&M_COMPLEX); ++ resolve_equivalent (&M_LONG_COMPLEX); ++ resolve_equivalent (&M_LONG_LONG_COMPLEX); ++ resolve_equivalent (&M_SEMA); ++ /* UNION members could be resolved. */ ++ absorb_unions (TOP_MOID (mod)); ++ contract_unions (TOP_MOID (mod)); ++ /* FLEX INDICANT could be resolved. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS_FLEX (z) && SUB (z) != NO_MOID) ++ { ++ if (SUB_SUB (z) != NO_MOID && IS (SUB_SUB (z), STRUCT_SYMBOL)) ++ MULTIPLE (z) = make_flex_multiple_struct (SUB_SUB (z), &TOP_MOID (mod), DIM (SUB (z))); ++ } ++ } ++ /* See what new known modes we have generated by resolving.. */ ++ for (z = TOP_MOID (mod); z != STANDENV_MOID (&A68_JOB); FORWARD (z)) ++ { ++ MOID_T *v; ++ ++ for (v = NEXT (z); v != NO_MOID; FORWARD (v)) ++ { ++ if (a68_prove_moid_equivalence (z, v)) ++ { ++ EQUIVALENT (z) = v; ++ EQUIVALENT (v) = NO_MOID; ++ } ++ } ++ } ++ ++ /* Count the modes to check self consistency. */ ++ len = nlen; ++ for (nlen = 0, z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ nlen++; ++ } ++ ++ gcc_assert (M_STRING == M_FLEX_ROW_CHAR); ++ ++ /* Find out what modes contain rows. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ HAS_ROWS (z) = is_mode_has_row (z); ++ ++ /* Check flexible modes. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS_FLEX (z) && !IS (SUB (z), ROW_SYMBOL)) ++ a68_error (NODE (z), "M does not specify a well formed mode", z); ++ } ++ ++ /* Check on fields in structured modes f.i. STRUCT (REAL x, INT n, REAL x) is ++ wrong. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, STRUCT_SYMBOL) && EQUIVALENT (z) == NO_MOID) ++ { ++ PACK_T *s = PACK (z); ++ ++ for (; s != NO_PACK; FORWARD (s)) ++ { ++ PACK_T *t = NEXT (s); ++ bool x = true; ++ ++ for (t = NEXT (s); t != NO_PACK && x; FORWARD (t)) ++ { ++ if (TEXT (s) == TEXT (t)) ++ { ++ a68_error (NODE (z), "multiple declaration of field S"); ++ while (NEXT (s) != NO_PACK && TEXT (NEXT (s)) == TEXT (t)) ++ FORWARD (s); ++ x = false; ++ } ++ } ++ } ++ } ++ } ++ ++ /* Various union test. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, UNION_SYMBOL) && EQUIVALENT (z) == NO_MOID) ++ { ++ PACK_T *s = PACK (z); ++ /* Discard unions with one member. */ ++ if (a68_count_pack_members (s) == 1) ++ a68_error (NODE (z), "M must have at least two components", z); ++ /* Discard incestuous unions with firmly related modes. */ ++ for (; s != NO_PACK; FORWARD (s)) ++ { ++ PACK_T *t; ++ ++ for (t = NEXT (s); t != NO_PACK; FORWARD (t)) ++ { ++ if (MOID (t) != MOID (s)) ++ { ++ if (a68_is_firm (MOID (s), MOID (t))) ++ a68_error (NODE (z), "M has firmly related components", z); ++ } ++ } ++ } ++ ++ /* Discard incestuous unions with firmly related subsets. */ ++ for (s = PACK (z); s != NO_PACK; FORWARD (s)) ++ { ++ MOID_T *n = a68_depref_completely (MOID (s)); ++ ++ if (IS (n, UNION_SYMBOL) && a68_is_subset (n, z, NO_DEFLEXING)) ++ a68_error (NODE (z), "M has firmly related subset M", z, n); ++ } ++ } ++ } ++ ++ /* Wrap up and exit. */ ++ a68_free_postulate_list (A68 (top_postulate), NO_POSTULATE); ++ A68 (top_postulate) = NO_POSTULATE; ++} ++ ++/* Make list of all modes in the program. */ ++ ++void ++a68_make_moid_list (MODULE_T *mod) ++{ ++ bool cont = true; ++ ++ /* Collect modes from the syntax tree. */ ++ reset_moid_tree (TOP_NODE (mod)); ++ get_modes_from_tree (TOP_NODE (mod), STOP); ++ get_mode_from_proc_var_declarations_tree (TOP_NODE (mod)); ++ ++ /* Connect indicants to their declarers. */ ++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, INDICANT)) ++ { ++ NODE_T *u = NODE (z); ++ gcc_assert (NEXT (u) != NO_NODE); ++ gcc_assert (NEXT_NEXT (u) != NO_NODE); ++ gcc_assert (MOID (NEXT_NEXT (u)) != NO_MOID); ++ EQUIVALENT (z) = MOID (NEXT_NEXT (u)); ++ } ++ } ++ ++ /* Checks on wrong declarations. */ ++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ USE (z) = false; ++ ++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, INDICANT) && EQUIVALENT (z) != NO_MOID) ++ { ++ if (!is_well_formed (z, EQUIVALENT (z), false, false, true)) ++ { ++ a68_error (NODE (z), "M does not specify a well formed mode", z); ++ cont = false; ++ } ++ } ++ } ++ ++ for (MOID_T *z = TOP_MOID (mod); cont && z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, INDICANT) && EQUIVALENT (z) != NO_MOID) ++ ; ++ else if (NODE (z) != NO_NODE) ++ { ++ if (!is_well_formed (NO_MOID, z, false, false, true)) ++ a68_error (NODE (z), "M does not specify a well formed mode", z); ++ } ++ } ++ ++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (USE (z)) ++ gcc_unreachable (); ++ } ++ ++ if (ERROR_COUNT (mod) != 0) ++ return; ++ ++ compute_derived_modes (mod); ++ a68_init_postulates (); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-moids-check.cc +@@ -0,0 +1,1878 @@ ++/* Mode checker routines. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC and fixes by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* ALGOL 68 contexts are SOFT, WEAK, MEEK, FIRM and STRONG. ++ These contexts are increasing in strength: ++ ++ SOFT: Deproceduring ++ ++ WEAK: Dereferencing to REF [] or REF STRUCT ++ ++ MEEK: Deproceduring and dereferencing ++ ++ FIRM: MEEK followed by uniting ++ ++ STRONG: FIRM followed by rowing, widening or voiding ++ ++ Furthermore you will see in this file next switches: ++ ++ (1) FORCE_DEFLEXING allows assignment compatibility between FLEX and non FLEX ++ rows. This can only be the case when there is no danger of altering bounds of a ++ non FLEX row. ++ ++ (2) ALIAS_DEFLEXING prohibits aliasing a FLEX row to a non FLEX row (vice versa ++ is no problem) so that one cannot alter the bounds of a non FLEX row by ++ aliasing it to a FLEX row. This is particularly the case when passing names as ++ parameters to procedures: ++ ++ PROC x = (REF STRING s) VOID: ..., PROC y = (REF [] CHAR c) VOID: ...; ++ ++ x (LOC STRING); # OK # ++ ++ x (LOC [10] CHAR); # Not OK, suppose x changes bounds of s! # ++ ++ y (LOC STRING); # OK # ++ ++ y (LOC [10] CHAR); # OK # ++ ++ (3) SAFE_DEFLEXING sets FLEX row apart from non FLEX row. This holds for names, ++ not for values, so common things are not rejected, for instance ++ ++ STRING x = read string; ++ ++ [] CHAR y = read string ++ ++ (4) NO_DEFLEXING sets FLEX row apart from non FLEX row. */ ++ ++/* ++ In the RR grammar: ++ ++ SORT: strong; firm; weak; meek; soft. ++ SORT MOID serial clause; ++ strong void unit, go on token, SORT MOID serial clause; ++ declaration, go on token, SORT MOID serial clause; ++ SORT MOID unit ++ ++ And it is the SORT MOID sequence of metanotions, which shall evaluate the ++ same in the complete rule, that control the balancing! o_O ++ ++ Also, it denotes how the SORT MOID of the serial clause gets "passed" to the ++ last unit in the serial clause. Other units have SOID `strong void'. ++ ++ It is used to pass down the required mode on whatever context. Like, ++ PARTICULAR_PROGRAM evaluates in strong context and requires VOID. ++ ++ The ATTRIBUTE in the soid is used to pass down the kind of construct that ++ introduces the context+required mode. This is used in ++ a68_determine_unique_mode in order to know whether balancing shall be ++ performed or not. ++*/ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* Forward declarations of some of the functions defined below. */ ++ ++static void mode_check_enclosed (NODE_T *p, SOID_T *x, SOID_T *y); ++static void mode_check_unit (NODE_T *p, SOID_T *x, SOID_T *y); ++static void mode_check_formula (NODE_T *p, SOID_T *x, SOID_T *y); ++static void mode_check_module_declaration (NODE_T *p); ++static void mode_check_module_text (NODE_T *p); ++static void mode_check_module_declaration (NODE_T *p); ++ ++/* Driver for mode checker. */ ++ ++void ++a68_mode_checker (NODE_T *p) ++{ ++ if (IS (p, PACKET)) ++ { ++ p = SUB (p); ++ ++ if (IS (p, PARTICULAR_PROGRAM)) ++ { ++ A68 (top_soid_list) = NO_SOID; ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, M_VOID, 0); ++ mode_check_enclosed (SUB (p), &x, &y); ++ MOID (p) = MOID (&y); ++ } ++ else if (IS (p, PRELUDE_PACKET)) ++ mode_check_module_declaration (SUB (p)); ++ } ++} ++ ++/* Mode check on bounds. */ ++ ++static void ++mode_check_bounds (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, UNIT)) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, M_INT, 0); ++ mode_check_unit (p, &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), M_INT, MEEK, SAFE_DEFLEXING, UNIT); ++ mode_check_bounds (NEXT (p)); ++ } ++ else ++ { ++ mode_check_bounds (SUB (p)); ++ mode_check_bounds (NEXT (p)); ++ } ++} ++ ++/* Mode check declarer. */ ++ ++static void ++mode_check_declarer (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, BOUNDS)) ++ { ++ mode_check_bounds (SUB (p)); ++ mode_check_declarer (NEXT (p)); ++ } ++ else ++ { ++ mode_check_declarer (SUB (p)); ++ mode_check_declarer (NEXT (p)); ++ } ++} ++ ++/* Mode check identity declaration. */ ++ ++static void ++mode_check_identity_declaration (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case DECLARER: ++ mode_check_declarer (SUB (p)); ++ mode_check_identity_declaration (NEXT (p)); ++ break; ++ case DEFINING_IDENTIFIER: ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, MOID (p), 0); ++ mode_check_unit (NEXT_NEXT (p), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (NEXT_NEXT (p), MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, UNIT); ++ else if (MOID (&x) != MOID (&y)) ++ /* Check for instance, REF INT i = LOC REF INT. */ ++ a68_semantic_pitfall (NEXT_NEXT (p), MOID (&x), IDENTITY_DECLARATION, GENERATOR); ++ break; ++ } ++ default: ++ mode_check_identity_declaration (SUB (p)); ++ mode_check_identity_declaration (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Mode check variable declaration. */ ++ ++static void ++mode_check_variable_declaration (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case DECLARER: ++ mode_check_declarer (SUB (p)); ++ mode_check_variable_declaration (NEXT (p)); ++ break; ++ case DEFINING_IDENTIFIER: ++ if (a68_whether (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP)) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, SUB_MOID (p), 0); ++ mode_check_unit (NEXT_NEXT (p), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, FORCE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, FORCE_DEFLEXING, UNIT); ++ else if (SUB_MOID (&x) != MOID (&y)) ++ /* Check for instance, REF INT i = LOC REF INT. */ ++ a68_semantic_pitfall (NEXT_NEXT (p), MOID (&x), VARIABLE_DECLARATION, GENERATOR); ++ } ++ break; ++ default: ++ mode_check_variable_declaration (SUB (p)); ++ mode_check_variable_declaration (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Mode check routine text. */ ++ ++static void ++mode_check_routine_text (NODE_T *p, SOID_T *y) ++{ ++ SOID_T w; ++ ++ if (IS (p, PARAMETER_PACK)) ++ { ++ mode_check_declarer (SUB (p)); ++ FORWARD (p); ++ } ++ ++ mode_check_declarer (SUB (p)); ++ a68_make_soid (&w, STRONG, MOID (p), 0); ++ mode_check_unit (NEXT_NEXT (p), &w, y); ++ if (!a68_is_coercible_in_context (y, &w, FORCE_DEFLEXING)) ++ a68_cannot_coerce (NEXT_NEXT (p), MOID (y), MOID (&w), STRONG, FORCE_DEFLEXING, UNIT); ++} ++ ++/* Mode check proc declaration. */ ++ ++static void ++mode_check_proc_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, ROUTINE_TEXT)) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, NO_MOID, 0); ++ mode_check_routine_text (SUB (p), &y); ++ } ++ else ++ { ++ mode_check_proc_declaration (SUB (p)); ++ mode_check_proc_declaration (NEXT (p)); ++ } ++} ++ ++/* Mode check brief op declaration. */ ++ ++static void ++mode_check_brief_op_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ SOID_T y; ++ ++ if (MOID (p) != MOID (NEXT_NEXT (p))) ++ { ++ SOID_T y2, x; ++ a68_make_soid (&y2, NO_SORT, MOID (NEXT_NEXT (p)), 0); ++ a68_make_soid (&x, NO_SORT, MOID (p), 0); ++ a68_cannot_coerce (NEXT_NEXT (p), MOID (&y2), MOID (&x), STRONG, SKIP_DEFLEXING, ROUTINE_TEXT); ++ } ++ mode_check_routine_text (SUB (NEXT_NEXT (p)), &y); ++ } ++ else ++ { ++ mode_check_brief_op_declaration (SUB (p)); ++ mode_check_brief_op_declaration (NEXT (p)); ++ } ++} ++ ++/* Mode check op declaration. */ ++ ++static void ++mode_check_op_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ SOID_T y, x; ++ a68_make_soid (&x, STRONG, MOID (p), 0); ++ mode_check_unit (NEXT_NEXT (p), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (NEXT_NEXT (p), MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, UNIT); ++ } ++ else ++ { ++ mode_check_op_declaration (SUB (p)); ++ mode_check_op_declaration (NEXT (p)); ++ } ++} ++ ++/* Mode check declaration list. */ ++ ++static void ++mode_check_declaration_list (NODE_T * p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case IDENTITY_DECLARATION: ++ mode_check_identity_declaration (SUB (p)); ++ break; ++ case VARIABLE_DECLARATION: ++ mode_check_variable_declaration (SUB (p)); ++ break; ++ case MODE_DECLARATION: ++ mode_check_declarer (SUB (p)); ++ break; ++ case PROCEDURE_DECLARATION: ++ case PROCEDURE_VARIABLE_DECLARATION: ++ mode_check_proc_declaration (SUB (p)); ++ break; ++ case BRIEF_OPERATOR_DECLARATION: ++ mode_check_brief_op_declaration (SUB (p)); ++ break; ++ case OPERATOR_DECLARATION: ++ mode_check_op_declaration (SUB (p)); ++ break; ++ default: ++ mode_check_declaration_list (SUB (p)); ++ mode_check_declaration_list (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Mode check serial clause. */ ++ ++static void ++mode_check_serial (SOID_T **r, NODE_T *p, SOID_T *x, bool k) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, INITIALISER_SERIES)) ++ { ++ mode_check_serial (r, SUB (p), x, false); ++ mode_check_serial (r, NEXT (p), x, k); ++ } ++ else if (IS (p, DECLARATION_LIST)) ++ mode_check_declaration_list (SUB (p)); ++ else if (a68_is_one_of (p, LABEL, SEMI_SYMBOL, EXIT_SYMBOL, STOP)) ++ mode_check_serial (r, NEXT (p), x, k); ++ else if (a68_is_one_of (p, SERIAL_CLAUSE, ENQUIRY_CLAUSE, STOP)) ++ { ++ if (NEXT (p) != NO_NODE) ++ { ++ if (IS (NEXT (p), EXIT_SYMBOL) || IS (NEXT (p), END_SYMBOL) || IS (NEXT (p), CLOSE_SYMBOL)) ++ mode_check_serial (r, SUB (p), x, true); ++ else ++ mode_check_serial (r, SUB (p), x, false); ++ mode_check_serial (r, NEXT (p), x, k); ++ } ++ else ++ mode_check_serial (r, SUB (p), x, true); ++ } ++ else if (IS (p, LABELED_UNIT)) ++ mode_check_serial (r, SUB (p), x, k); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T y; ++ ++ if (k) ++ mode_check_unit (p, x, &y); ++ else ++ { ++ SOID_T w; ++ a68_make_soid (&w, STRONG, M_VOID, 0); ++ mode_check_unit (p, &w, &y); ++ } ++ if (NEXT (p) != NO_NODE) ++ mode_check_serial (r, NEXT (p), x, k); ++ else ++ { ++ if (k) ++ a68_add_to_soid_list (r, p, &y); ++ } ++ } ++} ++ ++/* Mode check serial clause units. */ ++ ++static void ++mode_check_serial_units (NODE_T *p, SOID_T *x, SOID_T *y, ++ int att __attribute__((unused))) ++{ ++ SOID_T *top_sl = NO_SOID; ++ ++ mode_check_serial (&top_sl, SUB (p), x, true); ++ if (a68_is_balanced (p, top_sl, SORT (x))) ++ { ++ MOID_T *result = a68_pack_soids_in_moid (top_sl, SERIES_MODE); ++ a68_make_soid (y, SORT (x), result, SERIAL_CLAUSE); ++ } ++ else ++ a68_make_soid (y, SORT (x), (MOID (x) != NO_MOID ? MOID (x) : M_ERROR), 0); ++ ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check unit list. */ ++ ++static void ++mode_check_unit_list (SOID_T **r, NODE_T *p, SOID_T *x) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, UNIT_LIST)) ++ { ++ mode_check_unit_list (r, SUB (p), x); ++ mode_check_unit_list (r, NEXT (p), x); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ mode_check_unit_list (r, NEXT (p), x); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T y; ++ mode_check_unit (p, x, &y); ++ a68_add_to_soid_list (r, p, &y); ++ mode_check_unit_list (r, NEXT (p), x); ++ } ++} ++ ++/* Mode check struct display. */ ++ ++static void ++mode_check_struct_display (SOID_T **r, NODE_T *p, PACK_T **fields) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, UNIT_LIST)) ++ { ++ mode_check_struct_display (r, SUB (p), fields); ++ mode_check_struct_display (r, NEXT (p), fields); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ mode_check_struct_display (r, NEXT (p), fields); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T x, y; ++ ++ if (*fields != NO_PACK) ++ { ++ a68_make_soid (&x, STRONG, MOID (*fields), 0); ++ FORWARD (*fields); ++ } ++ else ++ a68_make_soid (&x, STRONG, NO_MOID, 0); ++ mode_check_unit (p, &x, &y); ++ a68_add_to_soid_list (r, p, &y); ++ mode_check_struct_display (r, NEXT (p), fields); ++ } ++} ++ ++/* Mode check get specified moids. */ ++ ++static void ++mode_check_get_specified_moids (NODE_T *p, MOID_T *u) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP)) ++ mode_check_get_specified_moids (SUB (p), u); ++ else if (IS (p, SPECIFIER)) ++ { ++ MOID_T *m = MOID (NEXT_SUB (p)); ++ a68_add_mode_to_pack (&(PACK (u)), m, NO_TEXT, NODE (m)); ++ } ++ } ++} ++ ++/* Mode check specified unit list. */ ++ ++void ++mode_check_specified_unit_list (SOID_T **r, NODE_T *p, SOID_T *x, MOID_T *u) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP)) ++ mode_check_specified_unit_list (r, SUB (p), x, u); ++ else if (IS (p, SPECIFIER)) ++ { ++ MOID_T *m = MOID (NEXT_SUB (p)); ++ if (u != NO_MOID && !a68_is_unitable (m, u, SAFE_DEFLEXING)) ++ a68_error (p, "M is neither component nor subset of M", m, u); ++ ++ } ++ else if (IS (p, UNIT)) ++ { ++ SOID_T y; ++ mode_check_unit (p, x, &y); ++ a68_add_to_soid_list (r, p, &y); ++ } ++ } ++} ++ ++/* Mode check united case parts. */ ++ ++static void ++mode_check_united_case_parts (SOID_T **ry, NODE_T *p, SOID_T *x) ++{ ++ SOID_T enq_expct, enq_yield; ++ MOID_T *u = NO_MOID, *v = NO_MOID, *w = NO_MOID; ++ /* Check the CASE part and deduce the united mode. */ ++ a68_make_soid (&enq_expct, MEEK, NO_MOID, 0); ++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); ++ /* Deduce the united mode from the enquiry clause. ++ This requires balancing. */ ++ u = MOID (&enq_yield); ++ a68_absorb_series_pack (&u); ++ DIM (u) = a68_count_pack_members (PACK (u)); ++ if (DIM (u) == 1) ++ u = MOID (PACK (u)); ++ else ++ { ++ MOID_T *united, *balanced; ++ united = a68_make_united_mode (u); ++ balanced = a68_get_balanced_mode_or_no_mode (united, ++ STRONG, A68_NO_DEPREF, ++ SAFE_DEFLEXING); ++ if (balanced != NO_MOID) ++ u = balanced; ++ } ++ u = a68_depref_completely (u); ++ /* Also deduce the united mode from the specifiers. */ ++ v = a68_new_moid (); ++ ATTRIBUTE (v) = SERIES_MODE; ++ mode_check_get_specified_moids (NEXT_SUB (NEXT (p)), v); ++ v = a68_make_united_mode (v); ++ /* Determine a resulting union. */ ++ if (u == M_HIP) ++ w = v; ++ else ++ { ++ if (IS (u, UNION_SYMBOL)) ++ { ++ bool uv, vu, some; ++ a68_investigate_firm_relations (PACK (u), PACK (v), &uv, &some); ++ a68_investigate_firm_relations (PACK (v), PACK (u), &vu, &some); ++ if (uv && vu) ++ { ++ /* Every component has a specifier. */ ++ w = u; ++ } ++ else if (!uv && !vu) ++ { ++ /* Hmmmm ... let the coercer sort it out. */ ++ w = u; ++ } ++ else ++ { ++ /* This is all the balancing we allow here for the moment. Firmly ++ related subsets are not valid so we absorb them. If this ++ doesn't solve it then we get a coercion-error later. */ ++ w = a68_absorb_related_subsets (u); ++ } ++ } ++ else ++ { ++ a68_error (NEXT_SUB (p), "M is not a united mode", u); ++ return; ++ } ++ } ++ MOID (SUB (p)) = w; ++ FORWARD (p); ++ /* Check the IN part. */ ++ mode_check_specified_unit_list (ry, NEXT_SUB (p), x, w); ++ /* OUSE, OUT, ESAC. */ ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) ++ mode_check_serial (ry, NEXT_SUB (p), x, true); ++ else if (a68_is_one_of (p, CONFORMITY_OUSE_PART, BRIEF_CONFORMITY_OUSE_PART, STOP)) ++ mode_check_united_case_parts (ry, SUB (p), x); ++ } ++} ++ ++/* Mode check united case. */ ++ ++static void ++mode_check_united_case (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T *top_sl = NO_SOID; ++ ++ mode_check_united_case_parts (&top_sl, p, x); ++ if (!a68_is_balanced (p, top_sl, SORT (x))) ++ { ++ if (MOID (x) != NO_MOID) ++ a68_make_soid (y, SORT (x), MOID (x), CONFORMITY_CLAUSE); ++ else ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ MOID_T *z = a68_pack_soids_in_moid (top_sl, SERIES_MODE); ++ a68_make_soid (y, SORT (x), z, CONFORMITY_CLAUSE); ++ } ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check unit list 2. */ ++ ++static void ++mode_check_unit_list_2 (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T *top_sl = NO_SOID; ++ ++ if (MOID (x) != NO_MOID) ++ { ++ if (IS_FLEX (MOID (x))) ++ { ++ SOID_T y2; ++ a68_make_soid (&y2, SORT (x), SLICE (SUB_MOID (x)), 0); ++ mode_check_unit_list (&top_sl, SUB (p), &y2); ++ } ++ else if (IS_ROW (MOID (x))) ++ { ++ SOID_T y2; ++ a68_make_soid (&y2, SORT (x), SLICE (MOID (x)), 0); ++ mode_check_unit_list (&top_sl, SUB (p), &y2); ++ } ++ else if (IS (MOID (x), STRUCT_SYMBOL)) ++ { ++ PACK_T *y2 = PACK (MOID (x)); ++ mode_check_struct_display (&top_sl, SUB (p), &y2); ++ } ++ else ++ mode_check_unit_list (&top_sl, SUB (p), x); ++ } ++ else ++ mode_check_unit_list (&top_sl, SUB (p), x); ++ ++ a68_make_soid (y, STRONG, a68_pack_soids_in_moid (top_sl, STOWED_MODE), 0); ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check access. */ ++ ++static void ++mode_check_access (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, ENCLOSED_CLAUSE)) ++ { ++ mode_check_enclosed (q, x, y); ++ MOID (p) = MOID (y); ++ } ++ } ++} ++ ++/* Mode check closed. */ ++ ++static void ++mode_check_closed (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, SERIAL_CLAUSE)) ++ mode_check_serial_units (p, x, y, SERIAL_CLAUSE); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) ++ mode_check_closed (NEXT (p), x, y); ++ MOID (p) = MOID (y); ++} ++ ++/* Mode check collateral. */ ++ ++void ++mode_check_collateral (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (a68_whether (p, BEGIN_SYMBOL, END_SYMBOL, STOP) ++ || a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP)) ++ { ++ if (SORT (x) == STRONG) ++ { ++ if (MOID (x) == NO_MOID) ++ a68_error (p, "vacuum cannot have row elements (use a Y generator)", ++ "REF MODE"); ++ else if (IS_FLEXETY_ROW (MOID (x))) ++ a68_make_soid (y, STRONG, M_VACUUM, 0); ++ else ++ { ++ /* The syntax only allows vacuums in strong contexts with rowed ++ modes. See rule 33d. */ ++ a68_error (p, "a vacuum is not a valid M", MOID (x)); ++ a68_make_soid (y, STRONG, M_ERROR, 0); ++ } ++ } ++ else ++ a68_make_soid (y, STRONG, M_UNDEFINED, 0); ++ } ++ else ++ { ++ if (IS (p, UNIT_LIST)) ++ mode_check_unit_list_2 (p, x, y); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) ++ mode_check_collateral (NEXT (p), x, y); ++ MOID (p) = MOID (y); ++ } ++} ++ ++/* Mode check conditional 2. */ ++ ++static void ++mode_check_conditional_2 (SOID_T **ry, NODE_T *p, SOID_T *x) ++{ ++ SOID_T enq_expct, enq_yield; ++ ++ a68_make_soid (&enq_expct, MEEK, M_BOOL, 0); ++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); ++ if (!a68_is_coercible_in_context (&enq_yield, &enq_expct, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&enq_yield), MOID (&enq_expct), MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); ++ FORWARD (p); ++ mode_check_serial (ry, NEXT_SUB (p), x, true); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, ELSE_PART, CHOICE, STOP)) ++ mode_check_serial (ry, NEXT_SUB (p), x, true); ++ else if (a68_is_one_of (p, ELIF_PART, BRIEF_ELIF_PART, STOP)) ++ mode_check_conditional_2 (ry, SUB (p), x); ++ } ++} ++ ++/* Mode check conditional. */ ++ ++static void ++mode_check_conditional (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T *top_sl = NO_SOID; ++ mode_check_conditional_2 (&top_sl, p, x); ++ if (!a68_is_balanced (p, top_sl, SORT (x))) ++ { ++ if (MOID (x) != NO_MOID) ++ a68_make_soid (y, SORT (x), MOID (x), CONDITIONAL_CLAUSE); ++ else ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ MOID_T *z = a68_pack_soids_in_moid (top_sl, SERIES_MODE); ++ a68_make_soid (y, SORT (x), z, CONDITIONAL_CLAUSE); ++ } ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check int case 2. */ ++ ++static void ++mode_check_int_case_2 (SOID_T **ry, NODE_T *p, SOID_T *x) ++{ ++ SOID_T enq_expct, enq_yield; ++ a68_make_soid (&enq_expct, MEEK, M_INT, 0); ++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); ++ if (!a68_is_coercible_in_context (&enq_yield, &enq_expct, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&enq_yield), MOID (&enq_expct), MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); ++ FORWARD (p); ++ mode_check_unit_list (ry, NEXT_SUB (p), x); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) ++ mode_check_serial (ry, NEXT_SUB (p), x, true); ++ else if (a68_is_one_of (p, CASE_OUSE_PART, BRIEF_OUSE_PART, STOP)) ++ mode_check_int_case_2 (ry, SUB (p), x); ++ } ++} ++ ++/* Mode check int case. */ ++ ++static void ++mode_check_int_case (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T *top_sl = NO_SOID; ++ mode_check_int_case_2 (&top_sl, p, x); ++ if (!a68_is_balanced (p, top_sl, SORT (x))) ++ { ++ if (MOID (x) != NO_MOID) ++ a68_make_soid (y, SORT (x), MOID (x), CASE_CLAUSE); ++ else ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ MOID_T *z = a68_pack_soids_in_moid (top_sl, SERIES_MODE); ++ a68_make_soid (y, SORT (x), z, CASE_CLAUSE); ++ } ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check loop 2. */ ++ ++static void ++mode_check_loop_2 (NODE_T *p, SOID_T *y) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, FOR_PART)) ++ mode_check_loop_2 (NEXT (p), y); ++ else if (a68_is_one_of (p, FROM_PART, BY_PART, TO_PART, STOP)) ++ { ++ SOID_T ix, iy; ++ a68_make_soid (&ix, STRONG, M_INT, 0); ++ mode_check_unit (NEXT_SUB (p), &ix, &iy); ++ if (!a68_is_coercible_in_context (&iy, &ix, SAFE_DEFLEXING)) ++ a68_cannot_coerce (NEXT_SUB (p), MOID (&iy), M_INT, MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); ++ mode_check_loop_2 (NEXT (p), y); ++ } ++ else if (IS (p, WHILE_PART)) ++ { ++ SOID_T enq_expct, enq_yield; ++ a68_make_soid (&enq_expct, MEEK, M_BOOL, 0); ++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); ++ if (!a68_is_coercible_in_context (&enq_yield, &enq_expct, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&enq_yield), MOID (&enq_expct), MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); ++ mode_check_loop_2 (NEXT (p), y); ++ } ++ else if (a68_is_one_of (p, DO_PART, ALT_DO_PART, STOP)) ++ { ++ SOID_T *z = NO_SOID; ++ NODE_T *do_p = NEXT_SUB (p); ++ SOID_T ix; ++ a68_make_soid (&ix, STRONG, M_VOID, 0); ++ if (IS (do_p, SERIAL_CLAUSE)) ++ mode_check_serial (&z, do_p, &ix, true); ++ a68_free_soid_list (z); ++ } ++} ++ ++/* Mode check loop. */ ++ ++static void ++mode_check_loop (NODE_T *p, SOID_T *y) ++{ ++ SOID_T *z = NO_SOID; ++ mode_check_loop_2 (p, z); ++ a68_make_soid (y, STRONG, M_VOID, 0); ++} ++ ++/* Mode check enclosed. */ ++ ++static void ++mode_check_enclosed (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, ENCLOSED_CLAUSE)) ++ mode_check_enclosed (SUB (p), x, y); ++ else if (IS (p, CLOSED_CLAUSE)) ++ mode_check_closed (SUB (p), x, y); ++ else if (IS (p, ACCESS_CLAUSE)) ++ mode_check_access (SUB (p), x, y); ++ else if (IS (p, PARALLEL_CLAUSE)) ++ { ++ mode_check_collateral (SUB (NEXT_SUB (p)), x, y); ++ a68_make_soid (y, STRONG, M_VOID, 0); ++ MOID (NEXT_SUB (p)) = M_VOID; ++ } ++ else if (IS (p, COLLATERAL_CLAUSE)) ++ mode_check_collateral (SUB (p), x, y); ++ else if (IS (p, CONDITIONAL_CLAUSE)) ++ mode_check_conditional (SUB (p), x, y); ++ else if (IS (p, CASE_CLAUSE)) ++ mode_check_int_case (SUB (p), x, y); ++ else if (IS (p, CONFORMITY_CLAUSE)) ++ mode_check_united_case (SUB (p), x, y); ++ else if (IS (p, LOOP_CLAUSE)) ++ mode_check_loop (SUB (p), y); ++ ++ MOID (p) = MOID (y); ++} ++ ++/* Search table for operator. */ ++ ++static TAG_T * ++search_table_for_operator (TAG_T *t, const char *n, MOID_T *x, MOID_T *y) ++{ ++ if (a68_is_mode_isnt_well (x)) ++ return A68_PARSER (error_tag); ++ else if (y != NO_MOID && a68_is_mode_isnt_well (y)) ++ return A68_PARSER (error_tag); ++ ++ for (; t != NO_TAG; FORWARD (t)) ++ { ++ if (NSYMBOL (NODE (t)) == n || strcmp (NSYMBOL (NODE (t)), n) == 0) ++ { ++ PACK_T *p = PACK (MOID (t)); ++ if (a68_is_coercible (x, MOID (p), FIRM, ALIAS_DEFLEXING)) ++ { ++ FORWARD (p); ++ if (p == NO_PACK && y == NO_MOID) ++ /* Matched in case of a monadic. */ ++ return t; ++ else if (p != NO_PACK && y != NO_MOID ++ && a68_is_coercible (y, MOID (p), FIRM, ALIAS_DEFLEXING)) ++ /* Matched in case of a dyadic. */ ++ return t; ++ } ++ } ++ } ++ return NO_TAG; ++} ++ ++/* Search chain of symbol tables and return matching operator "x n y" or ++ "n x". */ ++ ++static TAG_T * ++search_table_chain_for_operator (TABLE_T *s, const char *n, MOID_T *x, MOID_T *y) ++{ ++ if (a68_is_mode_isnt_well (x)) ++ return A68_PARSER (error_tag); ++ else if (y != NO_MOID && a68_is_mode_isnt_well (y)) ++ return A68_PARSER (error_tag); ++ ++ while (s != NO_TABLE) ++ { ++ TAG_T *z = search_table_for_operator (OPERATORS (s), n, x, y); ++ if (z != NO_TAG) ++ return z; ++ BACKWARD (s); ++ } ++ return NO_TAG; ++} ++ ++/* Return a matching operator "x n y". */ ++ ++static TAG_T * ++find_operator (TABLE_T *s, const char *n, MOID_T *x, MOID_T *y) ++{ ++ /* Coercions to operand modes are FIRM. */ ++ MOID_T *u, *v; TAG_T *z; ++ /* (A) Catch exceptions first. */ ++ if (x == NO_MOID && y == NO_MOID) ++ return NO_TAG; ++ else if (a68_is_mode_isnt_well (x)) ++ return A68_PARSER (error_tag); ++ else if (y != NO_MOID && a68_is_mode_isnt_well (y)) ++ return A68_PARSER (error_tag); ++ ++ /* (B) MONADs. */ ++ if (x != NO_MOID && y == NO_MOID) ++ { ++ z = search_table_chain_for_operator (s, n, x, NO_MOID); ++ if (z != NO_TAG) ++ return z; ++ else ++ { ++ /* (B.2) A little trick to allow - (0, 1) or ABS (1, long pi). */ ++ if (a68_is_coercible (x, M_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, NO_MOID); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible (x, M_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_COMPLEX, NO_MOID); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible (x, M_LONG_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_LONG_COMPLEX, NO_MOID); ++ } ++ return NO_TAG; ++ } ++ /* (C) DYADs. */ ++ z = search_table_chain_for_operator (s, n, x, y); ++ if (z != NO_TAG) ++ return z; ++ /* (C.2) Vector and matrix "strong coercions" in standard environ. */ ++ u = DEFLEX (a68_depref_completely (x)); ++ v = DEFLEX (a68_depref_completely (y)); ++ if ((u == M_ROW_REAL || u == M_ROW_ROW_REAL) ++ || (v == M_ROW_REAL || v == M_ROW_ROW_REAL) ++ || (u == M_ROW_COMPLEX || u == M_ROW_ROW_COMPLEX) ++ || (v == M_ROW_COMPLEX || v == M_ROW_ROW_COMPLEX)) ++ { ++ if (u == M_INT) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_REAL, y); ++ if (z != NO_TAG) ++ return z; ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, y); ++ if (z != NO_TAG) ++ return z; ++ } ++ else if (v == M_INT) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, x, M_REAL); ++ if (z != NO_TAG) ++ return z; ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, x, M_COMPLEX); ++ if (z != NO_TAG) ++ return z; ++ } ++ else if (u == M_REAL) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, y); ++ if (z != NO_TAG) ++ return z; ++ } ++ else if (v == M_REAL) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, x, M_COMPLEX); ++ if (z != NO_TAG) ++ return z; ++ } ++ } ++ /* (C.3) Look in standenv for an appropriate cross-term. */ ++ u = a68_make_series_from_moids (x, y); ++ u = a68_make_united_mode (u); ++ v = a68_get_balanced_mode (u, STRONG, A68_NO_DEPREF, SAFE_DEFLEXING); ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, v, v); ++ if (z != NO_TAG) ++ return z; ++ if (a68_is_coercible_series (u, M_REAL, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_REAL, M_REAL); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible_series (u, M_LONG_REAL, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_REAL, M_LONG_REAL); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible_series (u, M_LONG_LONG_REAL, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_LONG_REAL, M_LONG_LONG_REAL); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible_series (u, M_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, M_COMPLEX); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible_series (u, M_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_COMPLEX, M_LONG_COMPLEX); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible_series (u, M_LONG_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX); ++ if (z != NO_TAG) ++ return z; ++ } ++ /* (C.4) Now allow for depreffing for REF REAL +:= INT and alike. */ ++ v = a68_get_balanced_mode (u, STRONG, A68_DEPREF, SAFE_DEFLEXING); ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, v, v); ++ if (z != NO_TAG) ++ return z; ++ return NO_TAG; ++} ++ ++/* Mode check monadic operator. */ ++ ++static void ++mode_check_monadic_operator (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ if (p != NO_NODE) ++ { ++ TAG_T *t; ++ MOID_T *u = a68_determine_unique_mode (y, SAFE_DEFLEXING); ++ if (a68_is_mode_isnt_well (u)) ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ else if (u == M_HIP) ++ { ++ a68_error (NEXT (p), "M construct is an invalid operand", u); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ if (strchr (NOMADS, *(NSYMBOL (p))) != NO_TEXT) ++ { ++ t = NO_TAG; ++ a68_error (p, "monadic S cannot start with a character from Z", NOMADS); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ t = find_operator (TABLE (p), NSYMBOL (p), u, NO_MOID); ++ if (t == NO_TAG) ++ { ++ a68_error (p, "monadic operator S O has not been declared", u); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ } ++ if (t != NO_TAG) ++ MOID (p) = MOID (t); ++ TAX (p) = t; ++ if (t != NO_TAG && t != A68_PARSER (error_tag)) ++ { ++ MOID (p) = MOID (t); ++ a68_make_soid (y, SORT (x), SUB_MOID (t), 0); ++ } ++ else ++ { ++ MOID (p) = M_ERROR; ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ } ++ } ++} ++ ++/* Mode check monadic formula. */ ++ ++static void ++mode_check_monadic_formula (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T e; ++ a68_make_soid (&e, FIRM, NO_MOID, 0); ++ mode_check_formula (NEXT (p), &e, y); ++ mode_check_monadic_operator (p, &e, y); ++ a68_make_soid (y, SORT (x), MOID (y), 0); ++} ++ ++/* Mode check formula. */ ++ ++static void ++mode_check_formula (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T ls; ++ if (IS (p, MONADIC_FORMULA)) ++ mode_check_monadic_formula (SUB (p), x, &ls); ++ else if (IS (p, FORMULA)) ++ mode_check_formula (SUB (p), x, &ls); ++ else if (IS (p, SECONDARY)) ++ { ++ SOID_T e; ++ a68_make_soid (&e, FIRM, NO_MOID, 0); ++ mode_check_unit (SUB (p), &e, &ls); ++ } ++ MOID_T *u = a68_determine_unique_mode (&ls, SAFE_DEFLEXING); ++ MOID (p) = u; ++ SOID_T rs; ++ if (NEXT (p) == NO_NODE) ++ a68_make_soid (y, SORT (x), u, 0); ++ else ++ { ++ NODE_T *q = NEXT_NEXT (p); ++ if (IS (q, MONADIC_FORMULA)) ++ mode_check_monadic_formula (SUB (NEXT_NEXT (p)), x, &rs); ++ else if (IS (q, FORMULA)) ++ mode_check_formula (SUB (NEXT_NEXT (p)), x, &rs); ++ else if (IS (q, SECONDARY)) ++ { ++ SOID_T e; ++ a68_make_soid (&e, FIRM, NO_MOID, 0); ++ mode_check_unit (SUB (q), &e, &rs); ++ } ++ MOID_T *v = a68_determine_unique_mode (&rs, SAFE_DEFLEXING); ++ MOID (q) = v; ++ if (a68_is_mode_isnt_well (u) || a68_is_mode_isnt_well (v)) ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ else if (u == M_HIP) ++ { ++ a68_error (p, "M construct is an invalid operand", u); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else if (v == M_HIP) ++ { ++ a68_error (q, "M construct is an invalid operand", u); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ TAG_T *op = find_operator (TABLE (NEXT (p)), NSYMBOL (NEXT (p)), u, v); ++ if (op == NO_TAG) ++ { ++ a68_error (NEXT (p), "dyadic operator O S O has not been declared", u, v); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ if (op != NO_TAG) ++ MOID (NEXT (p)) = MOID (op); ++ TAX (NEXT (p)) = op; ++ if (op != NO_TAG && op != A68_PARSER (error_tag)) ++ a68_make_soid (y, SORT (x), SUB_MOID (op), 0); ++ else ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ } ++} ++ ++/* Mode check assignation. */ ++ ++static void ++mode_check_assignation (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ /* Get destination mode. */ ++ SOID_T name, tmp, value; ++ a68_make_soid (&name, SOFT, NO_MOID, 0); ++ mode_check_unit (SUB (p), &name, &tmp); ++ /* SOFT coercion. */ ++ MOID_T *ori = a68_determine_unique_mode (&tmp, SAFE_DEFLEXING); ++ MOID_T *name_moid = a68_deproc_completely (ori); ++ if (ATTRIBUTE (name_moid) != REF_SYMBOL) ++ { ++ if (A68_IF_MODE_IS_WELL (name_moid)) ++ a68_error (p, "M A does not yield a name", ori, ATTRIBUTE (SUB (p))); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ return; ++ } ++ MOID (p) = name_moid; ++ /* Get source mode. */ ++ a68_make_soid (&name, STRONG, SUB (name_moid), 0); ++ mode_check_unit (NEXT_NEXT (p), &name, &value); ++ if (!a68_is_coercible_in_context (&value, &name, FORCE_DEFLEXING)) ++ { ++ a68_cannot_coerce (p, MOID (&value), MOID (&name), STRONG, FORCE_DEFLEXING, UNIT); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ a68_make_soid (y, SORT (x), name_moid, 0); ++} ++ ++/* Mode check identity relation. */ ++ ++static void ++mode_check_identity_relation (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ NODE_T *ln = p, *rn = NEXT_NEXT (p); ++ SOID_T e, l, r; ++ a68_make_soid (&e, SOFT, NO_MOID, 0); ++ mode_check_unit (SUB (ln), &e, &l); ++ mode_check_unit (SUB (rn), &e, &r); ++ /* SOFT coercion. */ ++ MOID_T *oril = a68_determine_unique_mode (&l, SAFE_DEFLEXING); ++ MOID_T *orir = a68_determine_unique_mode (&r, SAFE_DEFLEXING); ++ MOID_T *lhs = a68_deproc_completely (oril); ++ MOID_T *rhs = a68_deproc_completely (orir); ++ if (A68_IF_MODE_IS_WELL (lhs) && lhs != M_HIP && ATTRIBUTE (lhs) != REF_SYMBOL) ++ { ++ a68_error (ln, "M A does not yield a name", oril, ATTRIBUTE (SUB (ln))); ++ lhs = M_ERROR; ++ } ++ if (A68_IF_MODE_IS_WELL (rhs) && rhs != M_HIP && ATTRIBUTE (rhs) != REF_SYMBOL) ++ { ++ a68_error (rn, "M A does not yield a name", orir, ATTRIBUTE (SUB (rn))); ++ rhs = M_ERROR; ++ } ++ if (lhs == M_HIP && rhs == M_HIP) ++ a68_error (p, "construct has no unique mode"); ++ ++ if (a68_is_coercible (lhs, rhs, STRONG, SAFE_DEFLEXING)) ++ lhs = rhs; ++ else if (a68_is_coercible (rhs, lhs, STRONG, SAFE_DEFLEXING)) ++ rhs = lhs; ++ else ++ { ++ a68_cannot_coerce (NEXT (p), rhs, lhs, SOFT, SKIP_DEFLEXING, TERTIARY); ++ lhs = rhs = M_ERROR; ++ } ++ MOID (ln) = lhs; ++ MOID (rn) = rhs; ++ a68_make_soid (y, SORT (x), M_BOOL, 0); ++} ++ ++/* Mode check bool functions ANDF and ORF. */ ++ ++static void ++mode_check_bool_function (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T e, l, r; ++ NODE_T *ln = p, *rn = NEXT_NEXT (p); ++ a68_make_soid (&e, STRONG, M_BOOL, 0); ++ mode_check_unit (SUB (ln), &e, &l); ++ if (!a68_is_coercible_in_context (&l, &e, SAFE_DEFLEXING)) ++ a68_cannot_coerce (ln, MOID (&l), MOID (&e), MEEK, SAFE_DEFLEXING, TERTIARY); ++ mode_check_unit (SUB (rn), &e, &r); ++ if (!a68_is_coercible_in_context (&r, &e, SAFE_DEFLEXING)) ++ a68_cannot_coerce (rn, MOID (&r), MOID (&e), MEEK, SAFE_DEFLEXING, TERTIARY); ++ MOID (ln) = M_BOOL; ++ MOID (rn) = M_BOOL; ++ a68_make_soid (y, SORT (x), M_BOOL, 0); ++} ++ ++/* Mode check cast. */ ++ ++static void ++mode_check_cast (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T w; ++ mode_check_declarer (p); ++ a68_make_soid (&w, STRONG, MOID (p), 0); ++ CAST (&w) = true; ++ mode_check_enclosed (SUB_NEXT (p), &w, y); ++ if (!a68_is_coercible_in_context (y, &w, SAFE_DEFLEXING)) ++ a68_cannot_coerce (NEXT (p), MOID (y), MOID (&w), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); ++ a68_make_soid (y, SORT (x), MOID (p), 0); ++} ++ ++/* Mode check assertion. */ ++ ++static void ++mode_check_assertion (NODE_T *p) ++{ ++ SOID_T w, y; ++ a68_make_soid (&w, STRONG, M_BOOL, 0); ++ mode_check_enclosed (SUB_NEXT (p), &w, &y); ++ SORT (&y) = SORT (&w); ++ if (!a68_is_coercible_in_context (&y, &w, NO_DEFLEXING)) ++ a68_cannot_coerce (NEXT (p), MOID (&y), MOID (&w), MEEK, NO_DEFLEXING, ENCLOSED_CLAUSE); ++} ++ ++/* Mode check argument list. */ ++ ++static void ++mode_check_argument_list (SOID_T **r, NODE_T *p, PACK_T **x, PACK_T **v, PACK_T **w) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, GENERIC_ARGUMENT_LIST)) ++ ATTRIBUTE (p) = ARGUMENT_LIST; ++ ++ if (IS (p, ARGUMENT_LIST)) ++ mode_check_argument_list (r, SUB (p), x, v, w); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T y, z; ++ if (*x != NO_PACK) ++ { ++ a68_make_soid (&z, STRONG, MOID (*x), 0); ++ a68_add_mode_to_pack_end (v, MOID (*x), NO_TEXT, p); ++ FORWARD (*x); ++ } ++ else ++ a68_make_soid (&z, STRONG, NO_MOID, 0); ++ mode_check_unit (p, &z, &y); ++ a68_add_to_soid_list (r, p, &y); ++ } ++ else if (IS (p, TRIMMER)) ++ { ++ SOID_T z; ++ if (SUB (p) != NO_NODE) ++ { ++ a68_error (p, "syntax error detected in A", ARGUMENT); ++ a68_make_soid (&z, STRONG, M_ERROR, 0); ++ a68_add_mode_to_pack_end (v, M_VOID, NO_TEXT, p); ++ a68_add_mode_to_pack_end (w, MOID (*x), NO_TEXT, p); ++ FORWARD (*x); ++ } ++ else if (*x != NO_PACK) ++ { ++ a68_make_soid (&z, STRONG, MOID (*x), 0); ++ a68_add_mode_to_pack_end (v, M_VOID, NO_TEXT, p); ++ a68_add_mode_to_pack_end (w, MOID (*x), NO_TEXT, p); ++ FORWARD (*x); ++ } ++ else ++ a68_make_soid (&z, STRONG, NO_MOID, 0); ++ a68_add_to_soid_list (r, p, &z); ++ } ++ else if (IS (p, SUB_SYMBOL) && !OPTION_BRACKETS (&A68_JOB)) ++ a68_error (p, "syntax error detected in A", CALL); ++ } ++} ++ ++/* Mode check argument list 2. */ ++ ++static void ++mode_check_argument_list_2 (NODE_T *p, PACK_T *x, SOID_T *y, PACK_T **v, PACK_T **w) ++{ ++ SOID_T *top_sl = NO_SOID; ++ mode_check_argument_list (&top_sl, SUB (p), &x, v, w); ++ a68_make_soid (y, STRONG, a68_pack_soids_in_moid (top_sl, STOWED_MODE), 0); ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check meek int. */ ++ ++static void ++mode_check_meek_int (NODE_T *p) ++{ ++ SOID_T x, y; ++ a68_make_soid (&x, MEEK, M_INT, 0); ++ mode_check_unit (p, &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), MOID (&x), MEEK, SAFE_DEFLEXING, 0); ++} ++ ++/* Mode check trimmer. */ ++ ++static void ++mode_check_trimmer (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, TRIMMER)) ++ mode_check_trimmer (SUB (p)); ++ else if (IS (p, UNIT)) ++ { ++ mode_check_meek_int (p); ++ mode_check_trimmer (NEXT (p)); ++ } ++ else ++ mode_check_trimmer (NEXT (p)); ++} ++ ++/* Mode check indexer. */ ++ ++static void ++mode_check_indexer (NODE_T *p, int *subs, int *trims) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, TRIMMER)) ++ { ++ (*trims)++; ++ mode_check_trimmer (SUB (p)); ++ } ++ else if (IS (p, UNIT)) ++ { ++ (*subs)++; ++ mode_check_meek_int (p); ++ } ++ else ++ { ++ mode_check_indexer (SUB (p), subs, trims); ++ mode_check_indexer (NEXT (p), subs, trims); ++ } ++} ++ ++/* Mode check call. */ ++ ++static void ++mode_check_call (NODE_T *p, MOID_T *n, SOID_T *x, SOID_T *y) ++{ ++ MOID (p) = n; ++ /* "partial_locale" is the mode of the locale. */ ++ PARTIAL_LOCALE (GINFO (p)) = a68_new_moid (); ++ ATTRIBUTE (PARTIAL_LOCALE (GINFO (p))) = PROC_SYMBOL; ++ PACK (PARTIAL_LOCALE (GINFO (p))) = NO_PACK; ++ SUB (PARTIAL_LOCALE (GINFO (p))) = SUB (n); ++ /* "partial_proc" is the mode of the resulting proc. */ ++ PARTIAL_PROC (GINFO (p)) = a68_new_moid (); ++ ATTRIBUTE (PARTIAL_PROC (GINFO (p))) = PROC_SYMBOL; ++ PACK (PARTIAL_PROC (GINFO (p))) = NO_PACK; ++ SUB (PARTIAL_PROC (GINFO (p))) = SUB (n); ++ /* Check arguments and construct modes. */ ++ SOID_T d; ++ mode_check_argument_list_2 (NEXT (p), PACK (n), &d, &PACK (PARTIAL_LOCALE (GINFO (p))), ++ &PACK (PARTIAL_PROC (GINFO (p)))); ++ DIM (PARTIAL_PROC (GINFO (p))) = a68_count_pack_members (PACK (PARTIAL_PROC (GINFO (p)))); ++ DIM (PARTIAL_LOCALE (GINFO (p))) = a68_count_pack_members (PACK (PARTIAL_LOCALE (GINFO (p)))); ++ PARTIAL_PROC (GINFO (p)) = a68_register_extra_mode (&TOP_MOID (&A68_JOB), PARTIAL_PROC (GINFO (p))); ++ PARTIAL_LOCALE (GINFO (p)) = a68_register_extra_mode (&TOP_MOID (&A68_JOB), PARTIAL_LOCALE (GINFO (p))); ++ if (DIM (MOID (&d)) != DIM (n)) ++ { ++ a68_error (p, "incorrect number of arguments for M", n); ++ a68_make_soid (y, SORT (x), SUB (n), 0); ++ /* a68_make_soid (y, SORT (x), M_ERROR, 0);. */ ++ } ++ else ++ { ++ if (!a68_is_coercible (MOID (&d), n, STRONG, ALIAS_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&d), n, STRONG, ALIAS_DEFLEXING, ARGUMENT); ++ if (DIM (PARTIAL_PROC (GINFO (p))) == 0) ++ a68_make_soid (y, SORT (x), SUB (n), 0); ++ else ++ { ++ a68_warning (NEXT (p), OPT_Wextensions, "@ is an extension"); ++ a68_make_soid (y, SORT (x), PARTIAL_PROC (GINFO (p)), 0); ++ } ++ } ++} ++ ++/* Mode check slice. */ ++ ++static void ++mode_check_slice (NODE_T *p, MOID_T *ori, SOID_T *x, SOID_T *y) ++{ ++ MOID_T *m = a68_depref_completely (ori), *n = ori; ++ /* WEAK coercion. */ ++ while ((IS_REF (n) && !a68_is_ref_row (n)) || (IS (n, PROC_SYMBOL) && PACK (n) == NO_PACK)) ++ n = a68_depref_once (n); ++ ++ if (n == NO_MOID || !(SLICE (DEFLEX (n)) != NO_MOID || a68_is_ref_row (n))) ++ { ++ if (A68_IF_MODE_IS_WELL (n)) ++ a68_error (p, "M A does not yield a row or procedure", ++ n, ATTRIBUTE (SUB (p))); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ ++ MOID (p) = n; ++ int dim = 0, subs = 0, trims = 0; ++ mode_check_indexer (SUB_NEXT (p), &subs, &trims); ++ bool is_ref; ++ if ((is_ref = a68_is_ref_row (n)) != 0) ++ dim = DIM (DEFLEX (SUB (n))); ++ else ++ dim = DIM (DEFLEX (n)); ++ ++ if ((subs + trims) != dim) ++ { ++ a68_error (p, "incorrect number of indexers for M", n); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ if (subs > 0 && trims == 0) ++ { ++ ANNOTATION (NEXT (p)) = SLICE; ++ m = n; ++ } ++ else ++ { ++ ANNOTATION (NEXT (p)) = TRIMMER; ++ m = n; ++ } ++ while (subs > 0) ++ { ++ if (is_ref) ++ m = NAME (m); ++ else ++ { ++ if (IS_FLEX (m)) ++ m = SUB (m); ++ m = SLICE (m); ++ } ++ gcc_assert (m != NO_MOID); ++ subs--; ++ } ++ /* A trim cannot be but deflexed. */ ++ if (ANNOTATION (NEXT (p)) == TRIMMER && TRIM (m) != NO_MOID) ++ { ++ gcc_assert (TRIM (m) != NO_MOID); ++ a68_make_soid (y, SORT (x), TRIM (m), 0); ++ } ++ else ++ a68_make_soid (y, SORT (x), m, 0); ++ } ++} ++ ++/* Mode check specification. */ ++ ++static enum a68_attribute ++mode_check_specification (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T w, d; ++ a68_make_soid (&w, WEAK, NO_MOID, 0); ++ mode_check_unit (SUB (p), &w, &d); ++ MOID_T *ori = a68_determine_unique_mode (&d, SAFE_DEFLEXING); ++ MOID_T *m = a68_depref_completely (ori); ++ if (IS (m, PROC_SYMBOL)) ++ { ++ /* Assume CALL. */ ++ mode_check_call (p, m, x, y); ++ return CALL; ++ } ++ else if (IS_ROW (m) || IS_FLEX (m)) ++ { ++ /* Assume SLICE. */ ++ mode_check_slice (p, ori, x, y); ++ return SLICE; ++ } ++ else ++ { ++ if (m != M_ERROR) ++ a68_error (p, "M construct must yield a routine or a row value", m); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ return PRIMARY; ++ } ++} ++ ++/* Mode check selection. */ ++ ++static void ++mode_check_selection (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ bool deflex = false; ++ NODE_T *secondary = SUB_NEXT (p); ++ SOID_T w, d; ++ a68_make_soid (&w, WEAK, NO_MOID, 0); ++ mode_check_unit (secondary, &w, &d); ++ MOID_T *n, *ori; ++ n = ori = a68_determine_unique_mode (&d, SAFE_DEFLEXING); ++ PACK_T *t = NO_PACK, *t_2 = NO_PACK; ++ bool coerce = true; ++ while (coerce) ++ { ++ if (IS (n, STRUCT_SYMBOL)) ++ { ++ coerce = false; ++ t = PACK (n); ++ } ++ else if (IS_REF (n) && (IS_ROW (SUB (n)) || IS_FLEX (SUB (n))) && MULTIPLE (n) != NO_MOID) ++ { ++ coerce = false; ++ deflex = true; ++ t = PACK (MULTIPLE (n)); ++ } ++ else if ((IS_ROW (n) || IS_FLEX (n)) && MULTIPLE (n) != NO_MOID) ++ { ++ coerce = false; ++ deflex = true; ++ t = PACK (MULTIPLE (n)); ++ } ++ else if (IS_REF (n) && a68_is_name_struct (n)) ++ { ++ coerce = false; ++ t = PACK (NAME (n)); ++ } ++ else if (a68_is_deprefable (n)) ++ { ++ coerce = true; ++ n = SUB (n); ++ t = NO_PACK; ++ } ++ else ++ { ++ coerce = false; ++ t = NO_PACK; ++ } ++ } ++ if (t == NO_PACK) ++ { ++ if (A68_IF_MODE_IS_WELL (MOID (&d))) ++ a68_error (secondary, "M A does not yield a structured value", ori, ATTRIBUTE (secondary)); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ return; ++ } ++ ++ MOID (NEXT (p)) = n; ++ const char *fs = NSYMBOL (SUB (p)); ++ MOID_T *str = n; ++ while (IS_REF (str)) ++ str = SUB (str); ++ if (IS_FLEX (str)) ++ str = SUB (str); ++ if (IS_ROW (str)) ++ str = SUB (str); ++ t_2 = PACK (str); ++ while (t != NO_PACK && t_2 != NO_PACK) ++ { ++ if (TEXT (t) == fs || strcmp (TEXT (t), fs) == 0) ++ { ++ MOID_T *ret = MOID (t); ++ if (deflex && TRIM (ret) != NO_MOID) ++ ret = TRIM (ret); ++ a68_make_soid (y, SORT (x), ret, 0); ++ MOID (p) = ret; ++ NODE_PACK (SUB (p)) = t_2; ++ return; ++ } ++ FORWARD (t); ++ FORWARD (t_2); ++ } ++ a68_make_soid (&d, NO_SORT, n, 0); ++ a68_error (p, "M has no field Z", str, fs); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++} ++ ++/* Mode check format text. */ ++ ++static void ++mode_check_format_text (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ mode_check_format_text (SUB (p)); ++ if (IS (p, FORMAT_PATTERN)) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, M_FORMAT, 0); ++ mode_check_enclosed (SUB (NEXT_SUB (p)), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); ++ } ++ else if (IS (p, GENERAL_PATTERN) && NEXT_SUB (p) != NO_NODE) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, M_ROW_INT, 0); ++ mode_check_enclosed (SUB (NEXT_SUB (p)), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); ++ } ++ else if (IS (p, DYNAMIC_REPLICATOR)) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, M_INT, 0); ++ mode_check_enclosed (SUB (NEXT_SUB (p)), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); ++ } ++ } ++} ++ ++/* Mode check unit. */ ++ ++static void ++mode_check_unit (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (a68_is_one_of (p, UNIT, TERTIARY, SECONDARY, PRIMARY, STOP)) ++ mode_check_unit (SUB (p), x, y); ++ /* Ex primary. */ ++ else if (IS (p, SPECIFICATION)) ++ { ++ ATTRIBUTE (p) = mode_check_specification (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, ATTRIBUTE (p)); ++ } ++ else if (IS (p, CAST)) ++ { ++ mode_check_cast (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, CAST); ++ } ++ else if (IS (p, DENOTATION)) ++ { ++ a68_make_soid (y, SORT (x), MOID (SUB (p)), 0); ++ a68_warn_for_voiding (p, x, y, DENOTATION); ++ } ++ else if (IS (p, IDENTIFIER)) ++ { ++ if ((TAX (p) == NO_TAG) && (MOID (p) == NO_MOID)) ++ { ++ int att = a68_first_tag_global (TABLE (p), NSYMBOL (p)); ++ if (att == STOP) ++ { ++ (void) a68_add_tag (TABLE (p), IDENTIFIER, p, M_ERROR, NORMAL_IDENTIFIER); ++ a68_error (p, "tag S has not been declared properly"); ++ MOID (p) = M_ERROR; ++ } ++ else ++ { ++ TAG_T *z = a68_find_tag_global (TABLE (p), att, NSYMBOL (p)); ++ if (att == IDENTIFIER && z != NO_TAG) ++ MOID (p) = MOID (z); ++ else ++ { ++ (void) a68_add_tag (TABLE (p), IDENTIFIER, p, M_ERROR, NORMAL_IDENTIFIER); ++ a68_error (p, "tag S has not been declared properly"); ++ MOID (p) = M_ERROR; ++ } ++ } ++ } ++ a68_make_soid (y, SORT (x), MOID (p), 0); ++ a68_warn_for_voiding (p, x, y, IDENTIFIER); ++ } ++ else if (IS (p, ENCLOSED_CLAUSE)) ++ mode_check_enclosed (SUB (p), x, y); ++ else if (IS (p, FORMAT_TEXT)) ++ { ++ mode_check_format_text (p); ++ a68_make_soid (y, SORT (x), M_FORMAT, 0); ++ a68_warn_for_voiding (p, x, y, FORMAT_TEXT); ++ /* Ex secondary. */ ++ } ++ else if (IS (p, GENERATOR)) ++ { ++ mode_check_declarer (SUB (p)); ++ a68_make_soid (y, SORT (x), MOID (SUB (p)), 0); ++ a68_warn_for_voiding (p, x, y, GENERATOR); ++ } ++ else if (IS (p, SELECTION)) ++ { ++ mode_check_selection (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, SELECTION); ++ /* Ex tertiary. */ ++ } ++ else if (IS (p, NIHIL)) ++ a68_make_soid (y, STRONG, M_HIP, 0); ++ else if (IS (p, FORMULA)) ++ { ++ mode_check_formula (p, x, y); ++ if (!IS_REF (MOID (y))) ++ a68_warn_for_voiding (p, x, y, FORMULA); ++ } ++ else if (a68_is_one_of (p, JUMP, SKIP, STOP)) ++ { ++ if (SORT (x) != STRONG) ++ a68_warning (p, 0, "@ should not be in C context", SORT (x)); ++ /* a68_make_soid (y, STRONG, M_HIP, 0); */ ++ a68_make_soid (y, SORT (x), M_HIP, 0); ++ } ++ else if (IS (p, ASSIGNATION)) ++ mode_check_assignation (SUB (p), x, y); ++ else if (IS (p, IDENTITY_RELATION)) ++ { ++ mode_check_identity_relation (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, IDENTITY_RELATION); ++ } ++ else if (IS (p, ROUTINE_TEXT)) ++ { ++ mode_check_routine_text (SUB (p), y); ++ a68_make_soid (y, SORT (x), MOID (p), 0); ++ a68_warn_for_voiding (p, x, y, ROUTINE_TEXT); ++ } ++ else if (IS (p, ASSERTION)) ++ { ++ mode_check_assertion (SUB (p)); ++ a68_make_soid (y, STRONG, M_VOID, 0); ++ } ++ else if (IS (p, AND_FUNCTION)) ++ { ++ mode_check_bool_function (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, AND_FUNCTION); ++ } ++ else if (IS (p, OR_FUNCTION)) ++ { ++ mode_check_bool_function (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, OR_FUNCTION); ++ } ++ ++ MOID (p) = MOID (y); ++} ++ ++/* Mode check a module text. */ ++ ++static void ++mode_check_module_text (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEF_PART) || IS (p, POSTLUDE_PART)) ++ { ++ /* XXX unde def is an enquiry clause */ ++ SOID_T *z = NO_SOID; ++ SOID_T ix; ++ a68_make_soid (&ix, STRONG, M_VOID, 0); ++ mode_check_serial (&z, NEXT_SUB (p), &ix, true); ++ a68_free_soid_list (z); ++ } ++ } ++} ++ ++/* Mode check a module declaration. */ ++ ++static void ++mode_check_module_declaration (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, MODULE_TEXT)) ++ mode_check_module_text (SUB (p)); ++ else ++ mode_check_module_declaration (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-moids-coerce.cc +@@ -0,0 +1,925 @@ ++/* Mode coercion driver. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++#define A68_INSERT_COERCIONS(n, p, q) a68_make_strong ((n), (p), MOID (q)) ++ ++/* A few forward references of functions defined below. */ ++ ++static void coerce_unit (NODE_T *p, SOID_T *q); ++static void coerce_formula (NODE_T *p, SOID_T *q __attribute__ ((unused))); ++static void coerce_operand (NODE_T *p, SOID_T *q); ++static void coerce_enclosed (NODE_T *p, SOID_T *q); ++ ++/* Coerce bounds. */ ++ ++static void ++coerce_bounds (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ { ++ SOID_T q; ++ a68_make_soid (&q, MEEK, M_INT, 0); ++ coerce_unit (p, &q); ++ } ++ else ++ coerce_bounds (SUB (p)); ++ } ++} ++ ++/* Coerce declarer. */ ++ ++static void ++coerce_declarer (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, BOUNDS)) ++ coerce_bounds (SUB (p)); ++ else ++ coerce_declarer (SUB (p)); ++ } ++} ++ ++/* Coerce identity declaration. */ ++ ++static void ++coerce_identity_declaration (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case DECLARER: ++ coerce_declarer (SUB (p)); ++ coerce_identity_declaration (NEXT (p)); ++ break; ++ case DEFINING_IDENTIFIER: ++ { ++ SOID_T q; ++ a68_make_soid (&q, STRONG, MOID (p), 0); ++ coerce_unit (NEXT_NEXT (p), &q); ++ break; ++ } ++ default: ++ coerce_identity_declaration (SUB (p)); ++ coerce_identity_declaration (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Coerce variable declaration. */ ++ ++static void ++coerce_variable_declaration (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case DECLARER: ++ coerce_declarer (SUB (p)); ++ coerce_variable_declaration (NEXT (p)); ++ break; ++ case DEFINING_IDENTIFIER: ++ if (a68_whether (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP)) ++ { ++ SOID_T q; ++ a68_make_soid (&q, STRONG, SUB_MOID (p), 0); ++ coerce_unit (NEXT_NEXT (p), &q); ++ break; ++ } ++ /* Fallthrough. */ ++ default: ++ coerce_variable_declaration (SUB (p)); ++ coerce_variable_declaration (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Coerce routine text. */ ++ ++static void ++coerce_routine_text (NODE_T *p) ++{ ++ if (IS (p, PARAMETER_PACK)) ++ FORWARD (p); ++ SOID_T w; ++ a68_make_soid (&w, STRONG, MOID (p), 0); ++ coerce_unit (NEXT_NEXT (p), &w); ++} ++ ++/* Coerce proc declaration. */ ++ ++static void ++coerce_proc_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, ROUTINE_TEXT)) ++ coerce_routine_text (SUB (p)); ++ else ++ { ++ coerce_proc_declaration (SUB (p)); ++ coerce_proc_declaration (NEXT (p)); ++ } ++} ++ ++/* Coerce_op_declaration. */ ++ ++static void ++coerce_op_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ SOID_T q; ++ a68_make_soid (&q, STRONG, MOID (p), 0); ++ coerce_unit (NEXT_NEXT (p), &q); ++ } ++ else ++ { ++ coerce_op_declaration (SUB (p)); ++ coerce_op_declaration (NEXT (p)); ++ } ++} ++ ++/* Coerce brief op declaration. */ ++ ++static void ++coerce_brief_op_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, DEFINING_OPERATOR)) ++ coerce_routine_text (SUB (NEXT_NEXT (p))); ++ else ++ { ++ coerce_brief_op_declaration (SUB (p)); ++ coerce_brief_op_declaration (NEXT (p)); ++ } ++} ++ ++/* Coerce declaration list. */ ++ ++static void ++coerce_declaration_list (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case IDENTITY_DECLARATION: ++ coerce_identity_declaration (SUB (p)); ++ break; ++ case VARIABLE_DECLARATION: ++ coerce_variable_declaration (SUB (p)); ++ break; ++ case MODE_DECLARATION: ++ coerce_declarer (SUB (p)); ++ break; ++ case PROCEDURE_DECLARATION: ++ case PROCEDURE_VARIABLE_DECLARATION: ++ coerce_proc_declaration (SUB (p)); ++ break; ++ case BRIEF_OPERATOR_DECLARATION: ++ coerce_brief_op_declaration (SUB (p)); ++ break; ++ case OPERATOR_DECLARATION: ++ coerce_op_declaration (SUB (p)); ++ break; ++ default: ++ coerce_declaration_list (SUB (p)); ++ coerce_declaration_list (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Coerce serial. */ ++ ++static void ++coerce_serial (NODE_T *p, SOID_T *q, bool k) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, INITIALISER_SERIES)) ++ { ++ coerce_serial (SUB (p), q, false); ++ coerce_serial (NEXT (p), q, k); ++ } ++ else if (IS (p, DECLARATION_LIST)) ++ coerce_declaration_list (SUB (p)); ++ else if (a68_is_one_of (p, LABEL, SEMI_SYMBOL, EXIT_SYMBOL, STOP)) ++ coerce_serial (NEXT (p), q, k); ++ else if (a68_is_one_of (p, SERIAL_CLAUSE, ENQUIRY_CLAUSE, STOP)) ++ { ++ NODE_T *z = NEXT (p); ++ if (z != NO_NODE) ++ { ++ if (IS (z, EXIT_SYMBOL) || IS (z, END_SYMBOL) || IS (z, CLOSE_SYMBOL)) ++ coerce_serial (SUB (p), q, true); ++ else ++ coerce_serial (SUB (p), q, false); ++ } ++ else ++ coerce_serial (SUB (p), q, true); ++ coerce_serial (NEXT (p), q, k); ++ } ++ else if (IS (p, LABELED_UNIT)) ++ coerce_serial (SUB (p), q, k); ++ else if (IS (p, UNIT)) ++ { ++ if (k) ++ coerce_unit (p, q); ++ else ++ { ++ SOID_T strongvoid; ++ a68_make_soid (&strongvoid, STRONG, M_VOID, 0); ++ coerce_unit (p, &strongvoid); ++ } ++ } ++} ++ ++/* Coerce closed. */ ++ ++static void ++coerce_closed (NODE_T *p, SOID_T *q) ++{ ++ if (IS (p, SERIAL_CLAUSE)) ++ coerce_serial (p, q, true); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) ++ coerce_closed (NEXT (p), q); ++} ++ ++/* Coerce access clause. */ ++ ++static void ++coerce_access (NODE_T *p, SOID_T *q) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, ENCLOSED_CLAUSE)) ++ coerce_enclosed (p, q); ++ } ++} ++ ++/* Coerce conditional. */ ++ ++static void ++coerce_conditional (NODE_T *p, SOID_T *q) ++{ ++ SOID_T w; ++ a68_make_soid (&w, MEEK, M_BOOL, 0); ++ coerce_serial (NEXT_SUB (p), &w, true); ++ FORWARD (p); ++ coerce_serial (NEXT_SUB (p), q, true); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, ELSE_PART, CHOICE, STOP)) ++ coerce_serial (NEXT_SUB (p), q, true); ++ else if (a68_is_one_of (p, ELIF_PART, BRIEF_ELIF_PART, STOP)) ++ coerce_conditional (SUB (p), q); ++ } ++} ++ ++/* Coerce unit list. */ ++ ++static void ++coerce_unit_list (NODE_T *p, SOID_T *q) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, UNIT_LIST)) ++ { ++ coerce_unit_list (SUB (p), q); ++ coerce_unit_list (NEXT (p), q); ++ } ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, COMMA_SYMBOL, STOP)) ++ coerce_unit_list (NEXT (p), q); ++ else if (IS (p, UNIT)) ++ { ++ coerce_unit (p, q); ++ coerce_unit_list (NEXT (p), q); ++ } ++} ++ ++/* Coerce int case. */ ++ ++static void ++coerce_int_case (NODE_T *p, SOID_T *q) ++{ ++ SOID_T w; ++ a68_make_soid (&w, MEEK, M_INT, 0); ++ coerce_serial (NEXT_SUB (p), &w, true); ++ FORWARD (p); ++ coerce_unit_list (NEXT_SUB (p), q); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) ++ coerce_serial (NEXT_SUB (p), q, true); ++ else if (a68_is_one_of (p, CASE_OUSE_PART, BRIEF_OUSE_PART, STOP)) ++ coerce_int_case (SUB (p), q); ++ } ++} ++ ++/* Coerce spec unit list. */ ++ ++static void ++coerce_spec_unit_list (NODE_T *p, SOID_T *q) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP)) ++ coerce_spec_unit_list (SUB (p), q); ++ else if (IS (p, UNIT)) ++ coerce_unit (p, q); ++ } ++} ++ ++/* Coerce united case. */ ++ ++static void ++coerce_united_case (NODE_T *p, SOID_T *q) ++{ ++ SOID_T w; ++ a68_make_soid (&w, MEEK, MOID (SUB (p)), 0); ++ coerce_serial (NEXT_SUB (p), &w, true); ++ FORWARD (p); ++ coerce_spec_unit_list (NEXT_SUB (p), q); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) ++ coerce_serial (NEXT_SUB (p), q, true); ++ else if (a68_is_one_of (p, CONFORMITY_OUSE_PART, BRIEF_CONFORMITY_OUSE_PART, STOP)) ++ coerce_united_case (SUB (p), q); ++ } ++} ++ ++/* Coerce loop. */ ++ ++static void ++coerce_loop (NODE_T *p) ++{ ++ if (IS (p, FOR_PART)) ++ coerce_loop (NEXT (p)); ++ else if (a68_is_one_of (p, FROM_PART, BY_PART, TO_PART, STOP)) ++ { ++ SOID_T w; ++ a68_make_soid (&w, MEEK, M_INT, 0); ++ coerce_unit (NEXT_SUB (p), &w); ++ coerce_loop (NEXT (p)); ++ } ++ else if (IS (p, WHILE_PART)) ++ { ++ SOID_T w; ++ a68_make_soid (&w, MEEK, M_BOOL, 0); ++ coerce_serial (NEXT_SUB (p), &w, true); ++ coerce_loop (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, DO_PART, ALT_DO_PART, STOP)) ++ { ++ SOID_T w; ++ NODE_T *do_p = NEXT_SUB (p); ++ a68_make_soid (&w, STRONG, M_VOID, 0); ++ coerce_serial (do_p, &w, true); ++ } ++} ++ ++/* Coerce struct display. */ ++ ++static void ++coerce_struct_display (PACK_T **r, NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, UNIT_LIST)) ++ { ++ coerce_struct_display (r, SUB (p)); ++ coerce_struct_display (r, NEXT (p)); ++ } ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, COMMA_SYMBOL, STOP)) ++ coerce_struct_display (r, NEXT (p)); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T s; ++ a68_make_soid (&s, STRONG, MOID (*r), 0); ++ coerce_unit (p, &s); ++ FORWARD (*r); ++ coerce_struct_display (r, NEXT (p)); ++ } ++} ++ ++/* Coerce collateral. */ ++ ++static void ++coerce_collateral (NODE_T *p, SOID_T *q) ++{ ++ if (!(a68_whether (p, BEGIN_SYMBOL, END_SYMBOL, STOP) ++ || a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP))) ++ { ++ if (IS (MOID (q), STRUCT_SYMBOL)) ++ { ++ PACK_T *t = PACK (MOID (q)); ++ coerce_struct_display (&t, p); ++ } ++ else if (IS_FLEX (MOID (q))) ++ { ++ SOID_T w; ++ a68_make_soid (&w, STRONG, SLICE (SUB_MOID (q)), 0); ++ coerce_unit_list (p, &w); ++ } ++ else if (IS_ROW (MOID (q))) ++ { ++ SOID_T w; ++ a68_make_soid (&w, STRONG, SLICE (MOID (q)), 0); ++ coerce_unit_list (p, &w); ++ } ++ else ++ { ++ /* if (MOID (q) != M_VOID). */ ++ coerce_unit_list (p, q); ++ } ++ } ++} ++ ++/* Coerce_enclosed. */ ++ ++static void ++coerce_enclosed (NODE_T *p, SOID_T *q) ++{ ++ if (IS (p, ENCLOSED_CLAUSE)) ++ coerce_enclosed (SUB (p), q); ++ else if (IS (p, CLOSED_CLAUSE)) ++ coerce_closed (SUB (p), q); ++ else if (IS (p, COLLATERAL_CLAUSE)) ++ coerce_collateral (SUB (p), q); ++ else if (IS (p, ACCESS_CLAUSE)) ++ coerce_access (SUB (p), q); ++ else if (IS (p, PARALLEL_CLAUSE)) ++ coerce_collateral (SUB (NEXT_SUB (p)), q); ++ else if (IS (p, CONDITIONAL_CLAUSE)) ++ coerce_conditional (SUB (p), q); ++ else if (IS (p, CASE_CLAUSE)) ++ coerce_int_case (SUB (p), q); ++ else if (IS (p, CONFORMITY_CLAUSE)) ++ coerce_united_case (SUB (p), q); ++ else if (IS (p, LOOP_CLAUSE)) ++ coerce_loop (SUB (p)); ++ ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++} ++ ++/* Get monad moid. */ ++ ++static MOID_T * ++get_monad_moid (NODE_T *p) ++{ ++ if (TAX (p) != NO_TAG && TAX (p) != A68_PARSER (error_tag)) ++ { ++ MOID (p) = MOID (TAX (p)); ++ return MOID (PACK (MOID (p))); ++ } ++ else ++ return M_ERROR; ++} ++ ++/* Coerce monad oper. */ ++ ++static void ++coerce_monad_oper (NODE_T *p, SOID_T *q) ++{ ++ if (p != NO_NODE) ++ { ++ SOID_T z; ++ a68_make_soid (&z, FIRM, MOID (PACK (MOID (TAX (p)))), 0); ++ A68_INSERT_COERCIONS (NEXT (p), MOID (q), &z); ++ } ++} ++ ++/* Coerce monad formula. */ ++ ++static void ++coerce_monad_formula (NODE_T *p) ++{ ++ SOID_T e; ++ a68_make_soid (&e, STRONG, get_monad_moid (p), 0); ++ coerce_operand (NEXT (p), &e); ++ coerce_monad_oper (p, &e); ++} ++ ++/* Coerce operand. */ ++ ++static void ++coerce_operand (NODE_T *p, SOID_T *q) ++{ ++ if (IS (p, MONADIC_FORMULA)) ++ { ++ coerce_monad_formula (SUB (p)); ++ if (MOID (p) != MOID (q)) ++ { ++ a68_make_sub (p, p, FORMULA); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ a68_make_sub (p, p, TERTIARY); ++ } ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ } ++ else if (IS (p, FORMULA)) ++ { ++ coerce_formula (SUB (p), q); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ } ++ else if (IS (p, SECONDARY)) ++ { ++ coerce_unit (SUB (p), q); ++ MOID (p) = MOID (SUB (p)); ++ } ++} ++ ++/* Coerce formula. */ ++ ++static void ++coerce_formula (NODE_T *p, SOID_T *q __attribute__ ((unused))) ++{ ++ if (IS (p, MONADIC_FORMULA) && NEXT (p) == NO_NODE) ++ coerce_monad_formula (SUB (p)); ++ else ++ { ++ if (TAX (NEXT (p)) != NO_TAG && TAX (NEXT (p)) != A68_PARSER (error_tag)) ++ { ++ SOID_T s; ++ NODE_T *op = NEXT (p), *nq = NEXT_NEXT (p); ++ MOID_T *w = MOID (op); ++ MOID_T *u = MOID (PACK (w)), *v = MOID (NEXT (PACK (w))); ++ a68_make_soid (&s, STRONG, u, 0); ++ coerce_operand (p, &s); ++ a68_make_soid (&s, STRONG, v, 0); ++ coerce_operand (nq, &s); ++ } ++ } ++} ++ ++/* Coerce assignation. */ ++ ++static void ++coerce_assignation (NODE_T *p) ++{ ++ SOID_T w; ++ a68_make_soid (&w, SOFT, MOID (p), 0); ++ coerce_unit (SUB (p), &w); ++ a68_make_soid (&w, STRONG, SUB_MOID (p), 0); ++ coerce_unit (NEXT_NEXT (p), &w); ++} ++ ++/* Coerce relation. */ ++ ++static void ++coerce_relation (NODE_T *p) ++{ ++ SOID_T w; ++ a68_make_soid (&w, STRONG, MOID (p), 0); ++ coerce_unit (SUB (p), &w); ++ a68_make_soid (&w, STRONG, MOID (NEXT_NEXT (p)), 0); ++ coerce_unit (SUB (NEXT_NEXT (p)), &w); ++} ++ ++/* Coerce bool function. */ ++ ++static void ++coerce_bool_function (NODE_T *p) ++{ ++ SOID_T w; ++ a68_make_soid (&w, STRONG, M_BOOL, 0); ++ coerce_unit (SUB (p), &w); ++ coerce_unit (SUB (NEXT_NEXT (p)), &w); ++} ++ ++/* Coerce assertion. */ ++ ++static void ++coerce_assertion (NODE_T *p) ++{ ++ SOID_T w; ++ a68_make_soid (&w, MEEK, M_BOOL, 0); ++ coerce_enclosed (SUB_NEXT (p), &w); ++} ++ ++/* Coerce selection. */ ++ ++static void ++coerce_selection (NODE_T * p) ++{ ++ SOID_T w; ++ a68_make_soid (&w, STRONG, MOID (NEXT (p)), 0); ++ coerce_unit (SUB_NEXT (p), &w); ++} ++ ++/* Coerce cast. */ ++ ++static void ++coerce_cast (NODE_T * p) ++{ ++ coerce_declarer (p); ++ SOID_T w; ++ a68_make_soid (&w, STRONG, MOID (p), 0); ++ coerce_enclosed (NEXT (p), &w); ++} ++ ++/* Coerce argument list. */ ++ ++static void ++coerce_argument_list (PACK_T **r, NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, ARGUMENT_LIST)) ++ coerce_argument_list (r, SUB (p)); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T s; ++ a68_make_soid (&s, STRONG, MOID (*r), 0); ++ coerce_unit (p, &s); ++ FORWARD (*r); ++ } ++ else if (IS (p, TRIMMER)) ++ FORWARD (*r); ++ } ++} ++ ++/* Coerce call. */ ++ ++static void ++coerce_call (NODE_T *p) ++{ ++ MOID_T *proc = MOID (p); ++ SOID_T w; ++ a68_make_soid (&w, MEEK, proc, 0); ++ coerce_unit (SUB (p), &w); ++ FORWARD (p); ++ PACK_T *t = PACK (proc); ++ coerce_argument_list (&t, SUB (p)); ++} ++ ++/* Coerce meek int. */ ++ ++static void ++coerce_meek_int (NODE_T *p) ++{ ++ SOID_T x; ++ a68_make_soid (&x, MEEK, M_INT, 0); ++ coerce_unit (p, &x); ++} ++ ++/* Coerce trimmer. */ ++ ++static void ++coerce_trimmer (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, UNIT)) ++ { ++ coerce_meek_int (p); ++ coerce_trimmer (NEXT (p)); ++ } ++ else ++ coerce_trimmer (NEXT (p)); ++ } ++} ++ ++/* Coerce indexer. */ ++ ++static void ++coerce_indexer (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, TRIMMER)) ++ coerce_trimmer (SUB (p)); ++ else if (IS (p, UNIT)) ++ coerce_meek_int (p); ++ else ++ { ++ coerce_indexer (SUB (p)); ++ coerce_indexer (NEXT (p)); ++ } ++ } ++} ++ ++/* Coerce_slice. */ ++ ++static void ++coerce_slice (NODE_T *p) ++{ ++ SOID_T w; ++ MOID_T *row = MOID (p); ++ a68_make_soid (&w, STRONG, row, 0); ++ coerce_unit (SUB (p), &w); ++ coerce_indexer (SUB_NEXT (p)); ++} ++ ++/* Coerce format text. */ ++ ++static void ++coerce_format_text (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ coerce_format_text (SUB (p)); ++ if (IS (p, FORMAT_PATTERN)) ++ { ++ SOID_T x; ++ a68_make_soid (&x, STRONG, M_FORMAT, 0); ++ coerce_enclosed (SUB (NEXT_SUB (p)), &x); ++ } ++ else if (IS (p, GENERAL_PATTERN) && NEXT_SUB (p) != NO_NODE) ++ { ++ SOID_T x; ++ a68_make_soid (&x, STRONG, M_ROW_INT, 0); ++ coerce_enclosed (SUB (NEXT_SUB (p)), &x); ++ } ++ else if (IS (p, DYNAMIC_REPLICATOR)) ++ { ++ SOID_T x; ++ a68_make_soid (&x, STRONG, M_INT, 0); ++ coerce_enclosed (SUB (NEXT_SUB (p)), &x); ++ } ++ } ++} ++ ++/* Coerce unit. */ ++ ++static void ++coerce_unit (NODE_T *p, SOID_T *q) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (a68_is_one_of (p, UNIT, TERTIARY, SECONDARY, PRIMARY, STOP)) ++ { ++ coerce_unit (SUB (p), q); ++ MOID (p) = MOID (SUB (p)); ++ /* Ex primary. */ ++ } ++ else if (IS (p, CALL)) ++ { ++ coerce_call (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, SLICE)) ++ { ++ coerce_slice (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, CAST)) ++ { ++ coerce_cast (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (a68_is_one_of (p, DENOTATION, IDENTIFIER, STOP)) ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ else if (IS (p, FORMAT_TEXT)) ++ { ++ coerce_format_text (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, ENCLOSED_CLAUSE)) ++ { ++ coerce_enclosed (p, q); ++ /* Ex secondary. */ ++ } ++ else if (IS (p, SELECTION)) ++ { ++ coerce_selection (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, GENERATOR)) ++ { ++ coerce_declarer (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ /* Ex tertiary. */ ++ } ++ else if (IS (p, NIHIL)) ++ { ++ if (ATTRIBUTE (MOID (q)) != REF_SYMBOL && MOID (q) != M_VOID) ++ a68_error (p, "context does not require a name"); ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ } ++ else if (IS (p, FORMULA)) ++ { ++ coerce_formula (SUB (p), q); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, JUMP)) ++ { ++ if (MOID (q) == M_PROC_VOID) ++ a68_make_sub (p, p, PROCEDURING); ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ } ++ else if (IS (p, SKIP)) ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ else if (IS (p, ASSIGNATION)) ++ { ++ coerce_assignation (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ } ++ else if (IS (p, IDENTITY_RELATION)) ++ { ++ coerce_relation (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, ROUTINE_TEXT)) ++ { ++ coerce_routine_text (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (a68_is_one_of (p, AND_FUNCTION, OR_FUNCTION, STOP)) ++ { ++ coerce_bool_function (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, ASSERTION)) ++ { ++ coerce_assertion (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++} ++ ++/* Coerce module text. */ ++ ++static void ++coerce_module_text (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEF_PART) || IS (p, POSTLUDE_PART)) ++ { ++ SOID_T w; ++ a68_make_soid (&w, STRONG, M_VOID, 0); ++ coerce_serial (NEXT_SUB (p), &w, true); ++ } ++ } ++} ++ ++/* Coerce module declaration. */ ++ ++static void ++coerce_module_declaration (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, MODULE_TEXT)) ++ coerce_module_text (SUB (p)); ++ else ++ coerce_module_declaration (SUB (p)); ++ } ++} ++ ++/* Driver for coercion insertions. */ ++ ++void ++a68_coercion_inserter (NODE_T *p) ++{ ++ if (IS (p, PACKET)) ++ { ++ p = SUB (p); ++ if (IS (p, PARTICULAR_PROGRAM)) ++ { ++ SOID_T q; ++ a68_make_soid (&q, STRONG, M_VOID, 0); ++ coerce_enclosed (SUB (p), &q); ++ } ++ else if (IS (p, PRELUDE_PACKET)) ++ coerce_module_declaration (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-moids-equivalence.cc +@@ -0,0 +1,183 @@ ++/* Prove equivalence of modes. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* Routines for establishing equivalence of modes. ++ After I made this mode equivalencer (in 1993), I found: ++ ++ Algol Bulletin 30.3.3 C.H.A. Koster: On infinite modes, 86-89 [1969], ++ ++ which essentially concurs with this test on mode equivalence I wrote. ++ It is elementary logic anyway: prove equivalence, assuming equivalence. */ ++ ++/* Forward declarations of some of the functions defined below. */ ++ ++static bool are_modes_equivalent (MOID_T * a, MOID_T * b); ++ ++/* Whether packs are equivalent, same sequence of equivalence modes. */ ++ ++static bool ++are_packs_equivalent (PACK_T *s, PACK_T *t, ++ bool compare_names = true) ++{ ++ for (; s != NO_PACK && t != NO_PACK; s = s->next, t = t->next) ++ { ++ if (!are_modes_equivalent (MOID (s), MOID (t))) ++ return false; ++ if (compare_names) ++ { ++ if (TEXT (s) != TEXT (t) ++ && TEXT (s) != NO_TEXT ++ && TEXT (t) != NO_TEXT ++ && strcmp (TEXT (s), TEXT (t)) != 0) ++ return false; ++ } ++ } ++ ++ return s == NO_PACK && t == NO_PACK; ++} ++ ++/* Whether packs are subsets. */ ++ ++static bool ++is_united_subset (PACK_T *s, PACK_T *t) ++{ ++ /* For all modes in 's' there must be an equivalent in 't'. */ ++ for (PACK_T *p = s; p != NO_PACK; p = p->next) ++ { ++ bool f = false; ++ for (PACK_T *q = t; q != NO_PACK && !f; q = q->next) ++ f = are_modes_equivalent (MOID (p), MOID (q)); ++ ++ if (!f) ++ return false; ++ } ++ ++ return true; ++} ++ ++/* Whether packs are subsets. */ ++ ++static bool ++are_united_packs_equivalent (PACK_T *s, PACK_T *t) ++{ ++ return is_united_subset (s, t) && is_united_subset (t, s); ++} ++ ++/* Whether moids A and B are structurally equivalent. */ ++ ++static bool ++are_modes_equivalent (MOID_T * a, MOID_T * b) ++{ ++ /* First lets try some cheap heuristics. */ ++ ++ if (a == NO_MOID || b == NO_MOID) ++ /* Modes can be NO_MOID in partial argument lists. */ ++ return false; ++ else if (a == M_ERROR || b == M_ERROR) ++ return false; ++ else if (a == b) ++ return true; ++ else if (ATTRIBUTE (a) != ATTRIBUTE (b)) ++ return false; ++ else if (DIM (a) != DIM (b)) ++ return false; ++ else if (IS (a, STANDARD)) ++ return (a == b); ++ else if (EQUIVALENT (a) == b || EQUIVALENT (b) == a) ++ return true; ++ else if (a68_is_postulated_pair (A68 (top_postulate), a, b) ++ || a68_is_postulated_pair (A68 (top_postulate), b, a)) ++ return true; ++ else if (IS (a, INDICANT)) ++ { ++ if (NODE (a) == NO_NODE || NODE (b) == NO_NODE) ++ return false; ++ else ++ return (NODE (a) == NODE (b) ++ || strcmp (NSYMBOL (NODE (a)), NSYMBOL (NODE (b))) == 0); ++ } ++ ++ /* Investigate structure. */ ++ ++ /* We now know that 'a' and 'b' have same attribute, dimension, ... */ ++ if (IS (a, REF_SYMBOL)) ++ /* REF MODE */ ++ return are_modes_equivalent (a->sub, b->sub); ++ else if (IS (a, ROW_SYMBOL)) ++ /* [] MODE */ ++ return are_modes_equivalent (a->sub, b->sub); ++ else if (IS (a, FLEX_SYMBOL)) ++ /* FLEX [...] MODE */ ++ return are_modes_equivalent (a->sub, b->sub); ++ else if (IS (a, STRUCT_SYMBOL)) ++ { ++ /* STRUCT (...) */ ++ POSTULATE_T *save = A68 (top_postulate); ++ a68_make_postulate (&A68 (top_postulate), a, b); ++ bool z = are_packs_equivalent (PACK (a), PACK (b)); ++ a68_free_postulate_list (A68 (top_postulate), save); ++ A68 (top_postulate) = save; ++ return z; ++ } ++ else if (IS (a, UNION_SYMBOL)) ++ /* UNION (...) */ ++ return are_united_packs_equivalent (PACK (a), PACK (b)); ++ else if (IS (a, PROC_SYMBOL) && PACK (a) == NO_PACK && PACK (b) == NO_PACK) ++ /* PROC MOID */ ++ return are_modes_equivalent (a->sub, b->sub); ++ else if (IS (a, PROC_SYMBOL) && PACK (a) != NO_PACK && PACK (b) != NO_PACK) ++ { ++ /* PROC (...) MOID */ ++ POSTULATE_T *save = A68 (top_postulate); ++ a68_make_postulate (&A68 (top_postulate), a, b); ++ bool z = are_modes_equivalent (a->sub, b->sub); ++ if (z) ++ z = are_packs_equivalent (PACK (a), PACK (b), ++ false /* compare_names */); ++ a68_free_postulate_list (A68 (top_postulate), save); ++ A68 (top_postulate) = save; ++ return z; ++ } ++ else if (IS (a, SERIES_MODE) || IS (a, STOWED_MODE)) ++ /* Modes occurring in displays. */ ++ return are_packs_equivalent (PACK (a), PACK (b)); ++ ++ return false; ++} ++ ++//! @brief Whether two modes are structurally equivalent. ++ ++bool ++a68_prove_moid_equivalence (MOID_T *p, MOID_T *q) ++{ ++// Prove two modes to be equivalent under assumption that they indeed are. ++ POSTULATE_T *save = A68 (top_postulate); ++ bool z = are_modes_equivalent (p, q); ++ a68_free_postulate_list (A68 (top_postulate), save); ++ A68 (top_postulate) = save; ++ return z; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-pragmat.cc +@@ -0,0 +1,202 @@ ++/* Handling of compiler pragmats. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* Utility macros useful for parsing pragmat contents. */ ++ ++#define SKIP_WHITESPACES(P) \ ++ while (ISSPACE (*(P))) (P)++ ++ ++#define PARSE_WORD(P,W) \ ++ do \ ++ { \ ++ (W) = (char *) alloca (strlen ((P))); \ ++ size_t i = 0; \ ++ while (ISALPHA (*(P))) \ ++ (W)[i++] = *((P)++); \ ++ (W)[i] = '\0'; \ ++ } while (0) ++ ++/* Parse a string denotation and return its value in an allocated buffer in ++ *STR. It is up to the caller to dispose of the allocated memory. ++ ++ This function returns a pointer to the character following the string ++ denotation in P, or P in case of parse error. ++ ++ In case of parse error *STR is also set to NULL. */ ++ ++const char * ++parse_string_denotation (const char *p, char **str) ++{ ++ const char *orig = p; ++ size_t i = 0; ++ char *s = (char *) xmalloc (2 * strlen (p)); ++ ++ if (*(p++) != '\"') ++ goto error; ++ while (*p != '\0' && *p != '\"') ++ { ++ if (*p == '\'' && *(p + 1) == '\"') ++ { ++ s[i++] = '\"'; ++ p += 2; ++ } ++ else ++ { ++ s[i++] = *p; ++ p++; ++ } ++ } ++ if (*p != '\"') ++ goto error; ++ ++ *str = s; ++ return p + 1; ++ error: ++ free (s); ++ *str = NULL; ++ return orig; ++} ++ ++/* PR access MODULE in "filename" PR */ ++ ++const char * ++handle_access_in_pragmat (NODE_T *p, const char *pragmat, size_t pos) ++{ ++ const char *beginning = pragmat; ++ ++ SKIP_WHITESPACES (pragmat); ++ /* Parse module name. */ ++ char *module; ++ PARSE_WORD (pragmat, module); ++ if (*module == '\0') ++ { ++ a68_error (p, "invalid pragmat: expected module name after %"); ++ return NULL; ++ } ++ SKIP_WHITESPACES (pragmat); ++ /* Parse "in " */ ++ if (strncmp (pragmat, "in ", 3) != 0) ++ { ++ a68_error (p, "invalid pragmat: expected % after module name"); ++ return NULL; ++ } ++ pragmat += 3; ++ SKIP_WHITESPACES (pragmat); ++ /* Parse a string denotation. */ ++ char *filename; ++ pragmat = parse_string_denotation (pragmat, &filename); ++ if (filename == NULL) ++ { ++ size_t off = pos + pragmat - beginning; ++ char *found; ++ PARSE_WORD (pragmat, found); ++ a68_error_in_pragmat (p, off, ++ "in % pragmat, expected string, found Z", ++ found); ++ return NULL; ++ } ++ /* Add entry in the module files map. */ ++ const char **pmodule = A68_MODULE_FILES->get (module); ++ if (pmodule != NULL) ++ { ++ a68_error_in_pragmat (p, pos + pragmat - beginning, ++ "module Z cannot appear in multiple % pragmats", ++ module); ++ return NULL; ++ } ++ ++ SKIP_WHITESPACES (pragmat); ++ /* Skip closing PR or PRAGMAT. */ ++ if (NPRAGMAT_TYPE (p) == STYLE_I_PRAGMAT_SYMBOL) ++ pragmat += 2; ++ else ++ pragmat += 7; ++ ++ A68_MODULE_FILES->put (ggc_strdup (module), ggc_strdup (filename)); ++ free (filename); ++ return pragmat; ++} ++ ++/* Parse and action on a pragmat. */ ++ ++void ++handle_pragmat (NODE_T *p) ++{ ++ const char *pragmat = NPRAGMAT (p); ++ if (pragmat != NULL ++ && (NPRAGMAT_TYPE (p) == STYLE_I_PRAGMAT_SYMBOL ++ || NPRAGMAT_TYPE (p) == BOLD_PRAGMAT_SYMBOL)) ++ { ++ /* Process pragmat commands. */ ++ do ++ { ++ SKIP_WHITESPACES (pragmat); ++ /* Skip PR or PRAGMAT. */ ++ if (NPRAGMAT_TYPE (p) == STYLE_I_PRAGMAT_SYMBOL) ++ pragmat += 2; ++ else ++ pragmat += 7; ++ SKIP_WHITESPACES (pragmat); ++ /* Get first word in pragmat and dispatch. */ ++ SKIP_WHITESPACES (pragmat); ++ char *word = (char *) alloca (strlen (pragmat)); ++ size_t i = 0; ++ while (ISALPHA (*pragmat) || *pragmat == '\n') ++ word[i++] = *(pragmat++); ++ word[i] = '\0'; ++ ++ if (strcmp (word, "access") == 0) ++ { ++ pragmat ++ = handle_access_in_pragmat (p, pragmat, pragmat - NPRAGMAT (p)); ++ if (pragmat == NULL) ++ break; ++ } ++ else if (strcmp (word, "include") == 0) ++ /* Include pragmats are handled in the scanner. */ ++ return; ++ else ++ { ++ a68_error_in_pragmat (p, pragmat - NPRAGMAT (p), ++ "unrecognized pragmat Z", word); ++ break; ++ } ++ } ++ while (*pragmat != '\0'); ++ } ++} ++ ++/* Entry point: handle all pragmats in the given parse tree. */ ++ ++void ++a68_handle_pragmats (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ a68_handle_pragmats (SUB (p)); ++ handle_pragmat (p); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-prelude.cc +@@ -0,0 +1,1502 @@ ++/* Standard prelude definitions. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++#define A68_STD true ++#define A68_EXT false ++ ++/* ALGOL68C type procs. */ ++ ++#define A68C_DEFIO(name, mode) \ ++ do \ ++ { \ ++ m = a68_proc (MODE (mode), M_REF_FILE, NO_MOID); \ ++ a68_idf (A68_EXT, "get" #name, m); \ ++ m = a68_proc (M_VOID, M_REF_FILE, MODE (mode), NO_MOID); \ ++ a68_idf (A68_EXT, "put" #name, m); \ ++ m = a68_proc (MODE (mode), NO_MOID); \ ++ a68_idf (A68_EXT, "read" #name, m); \ ++ m = a68_proc (M_VOID, MODE (mode), NO_MOID); \ ++ a68_idf (A68_EXT, "print" #name, m); \ ++ } \ ++ while (0) ++ ++/* Enter tag in standenv symbol table. */ ++ ++static void ++add_a68_standenv (bool portable, int a, NODE_T* n, char *c, MOID_T *m, ++ int p, LOWERER_T l = NO_LOWERER) ++{ ++#define INSERT_TAG(l, n) \ ++ do { \ ++ NEXT (n) = *(l); \ ++ *(l) = (n); \ ++ } while (0) ++ ++ TAG_T *new_one = a68_new_tag (); ++ ++ PROCEDURE_LEVEL (INFO (n)) = 0; ++ USE (new_one) = false; ++ HEAP (new_one) = HEAP_SYMBOL; ++ TAG_TABLE (new_one) = A68_STANDENV; ++ NODE (new_one) = n; ++ if (c != NO_TEXT) ++ VALUE (new_one) = TEXT (a68_add_token (&A68 (top_token), c)); ++ else ++ VALUE (new_one) = NO_TEXT; ++ PRIO (new_one) = p; ++ TAX_TREE_DECL (new_one) = NULL; ++ LOWERER (new_one) = l; ++ UNIT (new_one) = NULL; ++ PORTABLE (new_one) = portable; ++ MOID (new_one) = m; ++ NEXT (new_one) = NO_TAG; ++ if (a == IDENTIFIER) ++ INSERT_TAG (&IDENTIFIERS (A68_STANDENV), new_one); ++ else if (a == OP_SYMBOL) ++ INSERT_TAG (&OPERATORS (A68_STANDENV), new_one); ++ else if (a == PRIO_SYMBOL) ++ INSERT_TAG (&PRIO (A68_STANDENV), new_one); ++ else if (a == INDICANT) ++ INSERT_TAG (&INDICANTS (A68_STANDENV), new_one); ++ else if (a == LABEL) ++ INSERT_TAG (&LABELS (A68_STANDENV), new_one); ++#undef INSERT_TAG ++} ++ ++/* Compose PROC moid from arguments - first result, than arguments. */ ++ ++static MOID_T * ++a68_proc (MOID_T *m, ...) ++{ ++ PACK_T *p = NO_PACK, *q = NO_PACK; ++ MOID_T *y; ++ ++ va_list attribute; ++ va_start (attribute, m); ++ while ((y = va_arg (attribute, MOID_T *)) != NO_MOID) ++ { ++ PACK_T *new_one = a68_new_pack (); ++ ++ MOID (new_one) = y; ++ TEXT (new_one) = NO_TEXT; ++ NEXT (new_one) = NO_PACK; ++ if (q != NO_PACK) ++ NEXT (q) = new_one; ++ else ++ p = new_one; ++ q = new_one; ++ } ++ ++ va_end (attribute); ++ return a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, ++ a68_count_pack_members (p), NO_NODE, m, p); ++} ++ ++/* Enter an identifier in standenv. */ ++ ++static void ++a68_idf (bool portable, const char *n, MOID_T *m, LOWERER_T l = NO_LOWERER) ++{ ++ add_a68_standenv (portable, IDENTIFIER, ++ a68_some_node (TEXT (a68_add_token (&A68 (top_token), n))), ++ NO_TEXT, m, 0, l); ++} ++ ++/* Enter a moid in standenv. */ ++ ++static void ++a68_mode (int p, const char *t, MOID_T **m) ++{ ++ (*m) = a68_add_mode (&TOP_MOID (&A68_JOB), ++ STANDARD, p, ++ a68_some_node (TEXT (a68_find_keyword (A68 (top_keyword), t))), ++ NO_MOID, NO_PACK); ++} ++ ++/* Enter a priority in standenv. */ ++ ++static void ++a68_prio (const char *p, int b) ++{ ++ add_a68_standenv (true, PRIO_SYMBOL, ++ a68_some_node (TEXT (a68_add_token (&A68 (top_token), p))), ++ NO_TEXT, NO_MOID, b, NO_LOWERER); ++} ++ ++/* Enter operator in standenv. */ ++ ++static void ++a68_op (bool portable, const char *n, MOID_T *m, LOWERER_T l = NO_LOWERER) ++{ ++ add_a68_standenv (portable, OP_SYMBOL, ++ a68_some_node (TEXT (a68_add_token (&A68 (top_token), n))), ++ NO_TEXT, m, 0, l); ++} ++ ++/* Enter standard modes in standenv. */ ++ ++static void ++stand_moids (void) ++{ ++ /* Primitive A68 moids. */ ++ a68_mode (0, "VOID", &M_VOID); ++ /* Standard precision. */ ++ a68_mode (0, "INT", &M_INT); ++ a68_mode (0, "REAL", &M_REAL); ++ a68_mode (0, "COMPL", &M_COMPLEX); ++ a68_mode (0, "BITS", &M_BITS); ++ a68_mode (0, "BYTES", &M_BYTES); ++ /* Multiple precision. */ ++ a68_mode (-2, "INT", &M_SHORT_SHORT_INT); ++ a68_mode (-2, "BITS", &M_SHORT_SHORT_BITS); ++ a68_mode (-1, "INT", &M_SHORT_INT); ++ a68_mode (-1, "BITS", &M_SHORT_BITS); ++ a68_mode (1, "INT", &M_LONG_INT); ++ a68_mode (1, "REAL", &M_LONG_REAL); ++ a68_mode (1, "COMPL", &M_LONG_COMPLEX); ++ a68_mode (1, "BITS", &M_LONG_BITS); ++ a68_mode (1, "BYTES", &M_LONG_BYTES); ++ a68_mode (2, "REAL", &M_LONG_LONG_REAL); ++ a68_mode (2, "INT", &M_LONG_LONG_INT); ++ a68_mode (2, "BITS", &M_LONG_LONG_BITS); ++ a68_mode (2, "COMPL", &M_LONG_LONG_COMPLEX); ++ /* Other. */ ++ a68_mode (0, "BOOL", &M_BOOL); ++ a68_mode (0, "CHAR", &M_CHAR); ++ a68_mode (0, "STRING", &M_STRING); ++ a68_mode (0, "FILE", &M_FILE); ++ a68_mode (0, "CHANNEL", &M_CHANNEL); ++ a68_mode (0, "SEMA", &M_SEMA); ++ /* Rows. */ ++ M_ROWS = a68_add_mode (&TOP_MOID (&A68_JOB), ROWS_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); ++ /* REFs. */ ++ M_REF_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_INT, NO_PACK); ++ M_REF_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_REAL, NO_PACK); ++ M_REF_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_COMPLEX, NO_PACK); ++ M_REF_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BITS, NO_PACK); ++ M_REF_BYTES = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BYTES, NO_PACK); ++ /* Multiple precision. */ ++ M_REF_LONG_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_INT, NO_PACK); ++ M_REF_LONG_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_REAL, NO_PACK); ++ M_REF_LONG_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_COMPLEX, NO_PACK); ++ M_REF_LONG_LONG_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_INT, NO_PACK); ++ M_REF_LONG_LONG_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_REAL, NO_PACK); ++ M_REF_LONG_LONG_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_COMPLEX, NO_PACK); ++ M_REF_LONG_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_BITS, NO_PACK); ++ M_REF_LONG_LONG_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_BITS, NO_PACK); ++ M_REF_LONG_BYTES = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_BYTES, NO_PACK); ++ M_REF_SHORT_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_INT, NO_PACK); ++ M_REF_SHORT_SHORT_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_SHORT_INT, NO_PACK ++); ++ M_REF_SHORT_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_BITS, NO_PACK); ++ M_REF_SHORT_SHORT_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_SHORT_BITS, NO_PACK); ++ /* Other. */ ++ M_REF_BOOL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BOOL, NO_PACK); ++ M_REF_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_CHAR, NO_PACK); ++ M_REF_FILE = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_FILE, NO_PACK); ++ M_REF_REF_FILE = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_REF_FILE, NO_PACK); ++ /* [] INT. */ ++ M_ROW_INT = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_INT, NO_PACK); ++ HAS_ROWS (M_ROW_INT) = true; ++ SLICE (M_ROW_INT) = M_INT; ++ M_REF_ROW_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_INT, NO_PACK); ++ NAME (M_REF_ROW_INT) = M_REF_INT; ++ /* [] REAL. */ ++ M_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_REAL, NO_PACK); ++ HAS_ROWS (M_ROW_REAL) = true; ++ SLICE (M_ROW_REAL) = M_REAL; ++ M_REF_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_REAL, NO_PACK); ++ NAME (M_REF_ROW_REAL) = M_REF_REAL; ++ /* [,] REAL. */ ++ M_ROW_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 2, NO_NODE, M_REAL, NO_PACK); ++ HAS_ROWS (M_ROW_ROW_REAL) = true; ++ SLICE (M_ROW_ROW_REAL) = M_ROW_REAL; ++ M_REF_ROW_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_ROW_REAL, NO_PACK); ++ NAME (M_REF_ROW_ROW_REAL) = M_REF_ROW_REAL; ++ /* [] COMPLEX. */ ++ M_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_COMPLEX, NO_PACK); ++ HAS_ROWS (M_ROW_COMPLEX) = true; ++ SLICE (M_ROW_COMPLEX) = M_COMPLEX; ++ M_REF_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_COMPLEX, NO_PACK); ++ NAME (M_REF_ROW_COMPLEX) = M_REF_COMPLEX; ++ /* [,] COMPLEX. */ ++ M_ROW_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 2, NO_NODE, M_COMPLEX, NO_PACK); ++ HAS_ROWS (M_ROW_ROW_COMPLEX) = true; ++ SLICE (M_ROW_ROW_COMPLEX) = M_ROW_COMPLEX; ++ M_REF_ROW_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_ROW_COMPLEX, NO_PACK); ++ NAME (M_REF_ROW_ROW_COMPLEX) = M_REF_ROW_COMPLEX; ++ /* [] BOOL. */ ++ M_ROW_BOOL = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_BOOL, NO_PACK); ++ HAS_ROWS (M_ROW_BOOL) = true; ++ SLICE (M_ROW_BOOL) = M_BOOL; ++ /* FLEX [] BOOL. */ ++ MOID_T *m = a68_add_mode (&TOP_MOID (&A68_JOB), FLEX_SYMBOL, 0, NO_NODE, M_ROW_BOOL, NO_PACK); ++ HAS_ROWS (m) = true; ++ M_FLEX_ROW_BOOL = m; ++ /* [] BITS. */ ++ M_ROW_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_BITS, NO_PACK); ++ HAS_ROWS (M_ROW_BITS) = true; ++ SLICE (M_ROW_BITS) = M_BITS; ++ /* [] CHAR. */ ++ M_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_CHAR, NO_PACK); ++ HAS_ROWS (M_ROW_CHAR) = true; ++ SLICE (M_ROW_CHAR) = M_CHAR; ++ /* [][] CHAR. */ ++ M_ROW_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_ROW_CHAR, NO_PACK); ++ HAS_ROWS (M_ROW_ROW_CHAR) = true; ++ SLICE (M_ROW_ROW_CHAR) = M_ROW_CHAR; ++ /* MODE STRING = FLEX [] CHAR. */ ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), FLEX_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK); ++ HAS_ROWS (m) = true; ++ M_FLEX_ROW_CHAR = m; ++ EQUIVALENT (M_STRING) = m; ++ /* REF [] CHAR. */ ++ M_REF_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK); ++ NAME (M_REF_ROW_CHAR) = M_REF_CHAR; ++ /* PROC [] CHAR. */ ++ M_PROC_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK); ++ /* REF STRING = REF FLEX [] CHAR. */ ++ M_REF_STRING = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, EQUIVALENT (M_STRING), NO_PACK); ++ NAME (M_REF_STRING) = M_REF_CHAR; ++ DEFLEXED (M_REF_STRING) = M_REF_ROW_CHAR; ++ /* [] STRING. */ ++ M_ROW_STRING = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_STRING, NO_PACK); ++ HAS_ROWS (M_ROW_STRING) = true; ++ SLICE (M_ROW_STRING) = M_STRING; ++ DEFLEXED (M_ROW_STRING) = M_ROW_ROW_CHAR; ++ /* PROC STRING. */ ++ M_PROC_STRING = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, 0, NO_NODE, M_STRING, NO_PACK); ++ DEFLEXED (M_PROC_STRING) = M_PROC_ROW_CHAR; ++ /* COMPLEX. */ ++ PACK_T *z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ EQUIVALENT (M_COMPLEX) = m; ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_REF_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ NAME (M_REF_COMPLEX) = m; ++ /* LONG COMPLEX. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ EQUIVALENT (M_LONG_COMPLEX) = m; ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ NAME (M_REF_LONG_COMPLEX) = m; ++ /* LONG_LONG COMPLEX. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ EQUIVALENT (M_LONG_LONG_COMPLEX) = m; ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ NAME (M_REF_LONG_LONG_COMPLEX) = m; ++ /* SEMA. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_INT, NO_TEXT, NO_NODE); ++ EQUIVALENT (M_SEMA) = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ /* PROC VOID. */ ++ z = NO_PACK; ++ M_PROC_VOID = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_VOID, z); ++ /* PROC (REAL) REAL. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REAL, NO_TEXT, NO_NODE); ++ M_PROC_REAL_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_REAL, z); ++ /* PROC (LONG_REAL) LONG_REAL. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, NO_TEXT, NO_NODE); ++ M_PROC_LONG_REAL_LONG_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_LONG_REAL, z); ++ /* IO: PROC (REF FILE) BOOL. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_FILE, NO_TEXT, NO_NODE); ++ M_PROC_REF_FILE_BOOL = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_BOOL, z); ++ /* IO: PROC (REF FILE) VOID. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_FILE, NO_TEXT, NO_NODE); ++ M_PROC_REF_FILE_VOID = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_VOID, z); ++ /* IO: SIMPLIN and SIMPLOUT. */ ++ M_SIMPLIN = a68_add_mode (&TOP_MOID (&A68_JOB), IN_TYPE_MODE, 0, NO_NODE, NO_MOID, NO_PACK); ++ M_ROW_SIMPLIN = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_SIMPLIN, NO_PACK); ++ SLICE (M_ROW_SIMPLIN) = M_SIMPLIN; ++ M_SIMPLOUT = a68_add_mode (&TOP_MOID (&A68_JOB), OUT_TYPE_MODE, 0, NO_NODE, NO_MOID, NO_PACK); ++ M_ROW_SIMPLOUT = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_SIMPLOUT, NO_PACK); ++ SLICE (M_ROW_SIMPLOUT) = M_SIMPLOUT; ++} ++ ++/* Set up standenv - general RR but not transput. */ ++ ++static void ++stand_prelude (void) ++{ ++ /* Identifiers. */ ++ a68_idf (A68_STD, "intlengths", M_INT, a68_lower_intlengths); ++ a68_idf (A68_STD, "intshorths", M_INT, a68_lower_intshorths); ++ a68_idf (A68_STD, "maxint", M_INT, a68_lower_maxint); ++ a68_idf (A68_STD, "longmaxint", M_LONG_INT, a68_lower_maxint); ++ a68_idf (A68_STD, "longlongmaxint", M_LONG_LONG_INT, a68_lower_maxint); ++ a68_idf (A68_STD, "shortmaxint", M_SHORT_INT, a68_lower_maxint); ++ a68_idf (A68_STD, "shortshortmaxint", M_SHORT_SHORT_INT, a68_lower_maxint); ++ a68_idf (A68_STD, "maxreal", M_REAL, a68_lower_maxreal); ++ a68_idf (A68_STD, "longmaxreal", M_LONG_REAL, a68_lower_maxreal); ++ a68_idf (A68_STD, "longlongmaxreal", M_LONG_LONG_REAL, a68_lower_maxreal); ++ a68_idf (A68_STD, "smallreal", M_REAL, a68_lower_smallreal); ++ a68_idf (A68_STD, "longsmallreal", M_LONG_REAL, a68_lower_smallreal); ++ a68_idf (A68_STD, "longlongsmallreal", M_LONG_LONG_REAL, a68_lower_smallreal); ++ a68_idf (A68_STD, "reallengths", M_INT, a68_lower_reallengths); ++ a68_idf (A68_STD, "realshorths", M_INT, a68_lower_realshorths); ++ a68_idf (A68_STD, "bitslengths", M_INT, a68_lower_bitslengths); ++ a68_idf (A68_STD, "bitsshorths", M_INT, a68_lower_bitsshorths); ++ a68_idf (A68_STD, "bitswidth", M_INT, a68_lower_bitswidth); ++ a68_idf (A68_STD, "longbitswidth", M_INT, a68_lower_longbitswidth); ++ a68_idf (A68_STD, "longlongbitswidth", M_INT, a68_lower_longlongbitswidth); ++ a68_idf (A68_STD, "shortbitswidth", M_INT, a68_lower_shortbitswidth); ++ a68_idf (A68_STD, "shortshortbitswidth", M_INT, a68_lower_shortshortbitswidth); ++ a68_idf (A68_STD, "maxbits", M_BITS, a68_lower_maxbits); ++ a68_idf (A68_STD, "longmaxbits", M_LONG_BITS, a68_lower_maxbits); ++ a68_idf (A68_STD, "longlongmaxbits", M_LONG_LONG_BITS, a68_lower_maxbits); ++ a68_idf (A68_STD, "maxabschar", M_INT, a68_lower_maxabschar); ++ a68_idf (A68_STD, "intwidth", M_INT, a68_lower_intwidth); ++ a68_idf (A68_STD, "longintwidth", M_INT, a68_lower_longintwidth); ++ a68_idf (A68_STD, "longlongintwidth", M_INT, a68_lower_longlongintwidth); ++ a68_idf (A68_STD, "shortintwidth", M_INT, a68_lower_shortintwidth); ++ a68_idf (A68_STD, "shortshortintwidth", M_INT, a68_lower_shortshortintwidth); ++ a68_idf (A68_STD, "realwidth", M_INT, a68_lower_realwidth); ++ a68_idf (A68_STD, "longrealwidth", M_INT, a68_lower_longrealwidth); ++ a68_idf (A68_STD, "longlongrealwidth", M_INT, a68_lower_longlongrealwidth); ++ a68_idf (A68_STD, "expwidth", M_INT, a68_lower_expwidth); ++ a68_idf (A68_STD, "longexpwidth", M_INT, a68_lower_longexpwidth); ++ a68_idf (A68_STD, "longlongexpwidth", M_INT, a68_lower_longlongexpwidth); ++ a68_idf (A68_STD, "pi", M_REAL, a68_lower_pi); ++ a68_idf (A68_STD, "longpi", M_LONG_REAL, a68_lower_pi); ++ a68_idf (A68_STD, "longlongpi", M_LONG_LONG_REAL, a68_lower_pi); ++ a68_idf (A68_STD, "compllengths", M_INT); ++ a68_idf (A68_STD, "complshorths", M_INT); ++ a68_idf (A68_STD, "byteslengths", M_INT); ++ a68_idf (A68_STD, "bytesshorths", M_INT); ++ a68_idf (A68_STD, "byteswidth", M_INT); ++ a68_idf (A68_STD, "longbyteswidth", M_INT); ++ a68_idf (A68_STD, "flip", M_CHAR, a68_lower_flip); ++ a68_idf (A68_STD, "flop", M_CHAR, a68_lower_flop); ++ a68_idf (A68_STD, "errorchar", M_CHAR, a68_lower_errorchar); ++ a68_idf (A68_STD, "nullcharacter", M_CHAR, a68_lower_nullcharacter); ++ a68_idf (A68_STD, "blank", M_CHAR, a68_lower_blank); ++ /* BITS procedures. */ ++ MOID_T *m = a68_proc (M_BITS, M_ROW_BOOL, NO_MOID); ++ a68_idf (A68_STD, "bitspack", m); ++ /* SHORT BITS procedures. */ ++ m = a68_proc (M_SHORT_BITS, M_ROW_BOOL, NO_MOID); ++ a68_idf (A68_STD, "shortbitspack", m); ++ /* SHORT SHORT BITS procedures. */ ++ m = a68_proc (M_SHORT_SHORT_BITS, M_ROW_BOOL, NO_MOID); ++ a68_idf (A68_STD, "shortshortbitspack", m); ++ /* LONG BITS procedures. */ ++ m = a68_proc (M_LONG_BITS, M_ROW_BOOL, NO_MOID); ++ a68_idf (A68_STD, "longbitspack", m); ++ /* LONG LONG BITS procedures. */ ++ m = a68_proc (M_LONG_LONG_BITS, M_ROW_BOOL, NO_MOID); ++ a68_idf (A68_STD, "longlongbitspack", m); ++ /* RNG procedures. */ ++ m = a68_proc (M_VOID, M_INT, NO_MOID); ++ a68_idf (A68_STD, "firstrandom", m); ++ /* REAL procedures. */ ++ m = A68_MCACHE (proc_real); ++ a68_idf (A68_STD, "nextrandom", m); ++ a68_idf (A68_STD, "random", m, a68_lower_random); ++ a68_idf (A68_STD, "rnd", m); ++ m = A68_MCACHE (proc_real_real); ++ a68_idf (A68_STD, "arccos", m, a68_lower_acos); ++ a68_idf (A68_STD, "arcsin", m, a68_lower_asin); ++ a68_idf (A68_STD, "arctan", m, a68_lower_atan); ++ a68_idf (A68_STD, "cos", m, a68_lower_cos); ++ a68_idf (A68_STD, "exp", m, a68_lower_exp); ++ a68_idf (A68_STD, "ln", m, a68_lower_ln); ++ a68_idf (A68_STD, "sin", m, a68_lower_sin); ++ a68_idf (A68_STD, "sqrt", m, a68_lower_sqrt); ++ a68_idf (A68_STD, "tan", m, a68_lower_tan); ++ /* LONG REAL procedures. */ ++ m = a68_proc (M_LONG_REAL, NO_MOID); ++ a68_idf (A68_STD, "longnextrandom", m); ++ a68_idf (A68_STD, "longrandom", m, a68_lower_longrandom); ++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_idf (A68_STD, "longarccos", m, a68_lower_long_acos); ++ a68_idf (A68_STD, "longarcsin", m, a68_lower_long_asin); ++ a68_idf (A68_STD, "longarctan", m, a68_lower_long_atan); ++ a68_idf (A68_STD, "longcos", m, a68_lower_long_cos); ++ a68_idf (A68_STD, "longexp", m, a68_lower_long_exp); ++ a68_idf (A68_STD, "longln", m, a68_lower_long_ln); ++ a68_idf (A68_STD, "longsin", m, a68_lower_long_sin); ++ a68_idf (A68_STD, "longsqrt", m, a68_lower_long_sqrt); ++ a68_idf (A68_STD, "longtan", m, a68_lower_long_tan); ++ /* LONG LONG REAL procedures. */ ++ m = a68_proc (M_LONG_LONG_REAL, NO_MOID); ++ a68_idf (A68_STD, "longlongnextrandom", m); ++ a68_idf (A68_STD, "longlongrandom", m, a68_lower_longlongrandom); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_idf (A68_STD, "longlongarccos", m, a68_lower_long_long_acos); ++ a68_idf (A68_STD, "longlongarcsin", m, a68_lower_long_long_asin); ++ a68_idf (A68_STD, "longlongarctan", m, a68_lower_long_long_atan); ++ a68_idf (A68_STD, "longlongcos", m, a68_lower_long_long_cos); ++ a68_idf (A68_STD, "longlongexp", m, a68_lower_long_long_exp); ++ a68_idf (A68_STD, "longlongln", m, a68_lower_long_long_ln); ++ a68_idf (A68_STD, "longlongsin", m, a68_lower_long_long_sin); ++ a68_idf (A68_STD, "longlongsqrt", m, a68_lower_long_long_sqrt); ++ a68_idf (A68_STD, "longlongtan", m, a68_lower_long_long_tan); ++ /* Priorities. */ ++ a68_prio ("+:=", 1); ++ a68_prio ("-:=", 1); ++ a68_prio ("*:=", 1); ++ a68_prio ("/:=", 1); ++ a68_prio ("%:=", 1); ++ a68_prio ("%*:=", 1); ++ a68_prio ("+=:", 1); ++ a68_prio ("PLUSAB", 1); ++ a68_prio ("MINUSAB", 1); ++ a68_prio ("TIMESAB", 1); ++ a68_prio ("DIVAB", 1); ++ a68_prio ("OVERAB", 1); ++ a68_prio ("MODAB", 1); ++ a68_prio ("PLUSTO", 1); ++ a68_prio ("OR", 2); ++ a68_prio ("AND", 3); ++ a68_prio ("XOR", 3); ++ a68_prio ("=", 4); ++ a68_prio ("/=", 4); ++ a68_prio ("<", 5); ++ a68_prio ("<=", 5); ++ a68_prio (">", 5); ++ a68_prio (">=", 5); ++ a68_prio ("EQ", 4); ++ a68_prio ("NE", 4); ++ a68_prio ("LT", 5); ++ a68_prio ("LE", 5); ++ a68_prio ("GT", 5); ++ a68_prio ("GE", 5); ++ a68_prio ("+", 6); ++ a68_prio ("-", 6); ++ a68_prio ("*", 7); ++ a68_prio ("/", 7); ++ a68_prio ("OVER", 7); ++ a68_prio ("%", 7); ++ a68_prio ("MOD", 7); ++ a68_prio ("%*", 7); ++ a68_prio ("ELEM", 7); ++ a68_prio ("**", 8); ++ a68_prio ("SHL", 8); ++ a68_prio ("SHR", 8); ++ a68_prio ("UP", 8); ++ a68_prio ("DOWN", 8); ++ a68_prio ("^", 8); ++ a68_prio ("LWB", 8); ++ a68_prio ("UPB", 8); ++ a68_prio ("I", 9); ++ a68_prio ("+*", 9); ++ /* BOOL operators. */ ++ m = a68_proc (M_BOOL, M_BOOL, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_not2); ++ a68_op (A68_STD, "~", m, a68_lower_not2); ++ m = a68_proc (M_INT, M_BOOL, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_boolabs2); ++ m = a68_proc (M_BOOL, M_BOOL, M_BOOL, NO_MOID); ++ a68_op (A68_STD, "OR", m, a68_lower_or3); ++ a68_op (A68_STD, "AND", m, a68_lower_and3); ++ a68_op (A68_STD, "=", m, a68_lower_bool_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bool_ne3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bool_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_bool_ne3); ++ /* CHAR operators. */ ++ m = a68_proc (M_BOOL, M_CHAR, M_CHAR, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_char_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_char_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_char_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_char_le3); ++ a68_op (A68_STD, ">", m, a68_lower_char_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_char_ge3); ++ a68_op (A68_STD, "EQ", m, a68_lower_char_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_char_ne3); ++ a68_op (A68_STD, "LT", m, a68_lower_char_lt3); ++ a68_op (A68_STD, "LE", m, a68_lower_char_le3); ++ a68_op (A68_STD, "GT", m, a68_lower_char_gt3); ++ a68_op (A68_STD, "GE", m, a68_lower_char_ge3); ++ m = a68_proc (M_INT, M_CHAR, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_charabs2); ++ m = a68_proc (M_CHAR, M_INT, NO_MOID); ++ a68_op (A68_STD, "REPR", m, a68_lower_repr2); ++ /* STRING operators. */ ++ m = a68_proc (M_BOOL, M_STRING, M_STRING, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_string_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_string_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_string_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_string_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_string_ge3); ++ a68_op (A68_STD, ">", m, a68_lower_string_gt3); ++ a68_op (A68_STD, "EQ", m, a68_lower_string_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_string_ne3); ++ a68_op (A68_STD, "LT", m, a68_lower_string_lt3); ++ a68_op (A68_STD, "LE", m, a68_lower_string_le3); ++ a68_op (A68_STD, "GE", m, a68_lower_string_ge3); ++ a68_op (A68_STD, "GT", m, a68_lower_string_gt3); ++ m = a68_proc (M_STRING, M_CHAR, M_CHAR, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_char_plus3); ++ m = a68_proc (M_STRING, M_STRING, M_STRING, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_string_plus3); ++ m = a68_proc (M_REF_STRING, M_REF_STRING, M_STRING, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_string_plusab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_string_plusab3); ++ m = a68_proc (M_REF_STRING, M_REF_STRING, M_INT, NO_MOID); ++ a68_op (A68_STD, "*:=", m, a68_lower_string_multab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_string_multab3); ++ m = a68_proc (M_REF_STRING, M_STRING, M_REF_STRING, NO_MOID); ++ a68_op (A68_STD, "+=:", m, a68_lower_string_plusto3); ++ a68_op (A68_STD, "PLUSTO", m, a68_lower_string_plusto3); ++ m = a68_proc (M_STRING, M_STRING, M_INT, NO_MOID); ++ a68_op (A68_STD, "*", m, a68_lower_string_mult3); ++ m = a68_proc (M_STRING, M_INT, M_STRING, NO_MOID); ++ a68_op (A68_STD, "*", m, a68_lower_string_mult3); ++ m = a68_proc (M_STRING, M_INT, M_CHAR, NO_MOID); ++ a68_op (A68_STD, "*", m, a68_lower_char_mult3); ++ m = a68_proc (M_STRING, M_CHAR, M_INT, NO_MOID); ++ a68_op (A68_STD, "*", m, a68_lower_char_mult3); ++ /* SHORT SHORT INT operators. */ ++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); ++ m = a68_proc (M_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); ++ m = a68_proc (M_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); ++ m = a68_proc (M_BOOL, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); ++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_int); ++ a68_op (A68_STD, "-", m, a68_lower_minus_int); ++ a68_op (A68_STD, "*", m, a68_lower_mult_int); ++ a68_op (A68_STD, "OVER", m, a68_lower_over3); ++ a68_op (A68_STD, "%", m, a68_lower_over3); ++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); ++ a68_op (A68_STD, "%*", m, a68_lower_mod3); ++ m = a68_proc (M_REF_SHORT_SHORT_INT, M_REF_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); ++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); ++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); ++ m = a68_proc (M_BOOL, M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); ++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); ++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); ++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); ++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); ++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); ++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_int); ++ a68_op (A68_STD, "^", m, a68_lower_pow_int); ++ /* SHORT INT operators. */ ++ m = a68_proc (M_SHORT_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); ++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); ++ m = a68_proc (M_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); ++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); ++ m = a68_proc (M_BOOL, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); ++ m = a68_proc (M_SHORT_INT, M_SHORT_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_int); ++ a68_op (A68_STD, "-", m, a68_lower_minus_int); ++ a68_op (A68_STD, "*", m, a68_lower_mult_int); ++ a68_op (A68_STD, "OVER", m, a68_lower_over3); ++ a68_op (A68_STD, "%", m, a68_lower_over3); ++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); ++ a68_op (A68_STD, "%*", m, a68_lower_mod3); ++ m = a68_proc (M_REF_SHORT_INT, M_REF_SHORT_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); ++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); ++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); ++ m = a68_proc (M_BOOL, M_SHORT_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); ++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); ++ m = a68_proc (M_SHORT_INT, M_SHORT_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_int); ++ a68_op (A68_STD, "^", m, a68_lower_pow_int); ++ /* INT operators. */ ++ m = a68_proc (M_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); ++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); ++ m = a68_proc (M_SHORT_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); ++ m = a68_proc (M_LONG_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); ++ m = a68_proc (M_BOOL, M_INT, NO_MOID); ++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); ++ m = a68_proc (M_BOOL, M_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); ++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); ++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); ++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); ++ m = a68_proc (M_INT, M_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_int); ++ a68_op (A68_STD, "-", m, a68_lower_minus_int); ++ a68_op (A68_STD, "*", m, a68_lower_mult_int); ++ a68_op (A68_STD, "OVER", m, a68_lower_over3); ++ a68_op (A68_STD, "%", m, a68_lower_over3); ++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); ++ a68_op (A68_STD, "%*", m, a68_lower_mod3); ++ a68_op (A68_STD, "**", m, a68_lower_pow_int); ++ a68_op (A68_STD, "^", m, a68_lower_pow_int); ++ m = a68_proc (M_REAL, M_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "/", m, a68_lower_rdiv3); ++ m = a68_proc (M_REF_INT, M_REF_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); ++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); ++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); ++ /* LONG INT operators */ ++ m = a68_proc (M_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); ++ m = a68_proc (M_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); ++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); ++ m = a68_proc (M_BOOL, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); ++ m = a68_proc (M_LONG_INT, M_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_int); ++ a68_op (A68_STD, "-", m, a68_lower_minus_int); ++ a68_op (A68_STD, "*", m, a68_lower_mult_int); ++ a68_op (A68_STD, "OVER", m, a68_lower_over3); ++ a68_op (A68_STD, "%", m, a68_lower_over3); ++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); ++ a68_op (A68_STD, "%*", m, a68_lower_mod3); ++ m = a68_proc (M_REF_LONG_INT, M_REF_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); ++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); ++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); ++ m = a68_proc (M_BOOL, M_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); ++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); ++ m = a68_proc (M_LONG_REAL, M_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "/", m, a68_lower_rdiv3); ++ m = a68_proc (M_LONG_INT, M_LONG_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_int); ++ a68_op (A68_STD, "^", m, a68_lower_pow_int); ++ /* LONG LONG INT operators. */ ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); ++ m = a68_proc (M_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); ++ m = a68_proc (M_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); ++ m = a68_proc (M_BOOL, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_int); ++ a68_op (A68_STD, "-", m, a68_lower_minus_int); ++ a68_op (A68_STD, "*", m, a68_lower_mult_int); ++ a68_op (A68_STD, "OVER", m, a68_lower_over3); ++ a68_op (A68_STD, "%", m, a68_lower_over3); ++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); ++ a68_op (A68_STD, "%*", m, a68_lower_mod3); ++ m = a68_proc (M_REF_LONG_LONG_INT, M_REF_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); ++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); ++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "/", m, a68_lower_rdiv3); ++ m = a68_proc (M_BOOL, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); ++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); ++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); ++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); ++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); ++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_int); ++ a68_op (A68_STD, "^", m, a68_lower_pow_int); ++ /* SHORT SHORT BITS operators */ ++ m = a68_proc (M_BOOL, M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); ++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); ++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); ++ a68_op (A68_STD, "UP", m, a68_lower_shl3); ++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); ++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); ++ m = a68_proc (M_BOOL, M_INT, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); ++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); ++ m = a68_proc (M_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); ++ /* SHORT BITS operatos. */ ++ m = a68_proc (M_SHORT_INT, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); ++ m = a68_proc (M_SHORT_BITS, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); ++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); ++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); ++ m = a68_proc (M_BOOL, M_SHORT_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); ++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); ++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); ++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); ++ a68_op (A68_STD, "UP", m, a68_lower_shl3); ++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); ++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); ++ m = a68_proc (M_BOOL, M_INT, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); ++ m = a68_proc (M_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); ++ /* BITS operators. */ ++ m = a68_proc (M_INT, M_BITS, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); ++ m = a68_proc (M_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); ++ m = a68_proc (M_BITS, M_BITS, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); ++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); ++ m = a68_proc (M_BOOL, M_BITS, M_BITS, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); ++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); ++ m = a68_proc (M_BITS, M_BITS, M_BITS, NO_MOID); ++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); ++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); ++ m = a68_proc (M_BITS, M_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); ++ a68_op (A68_STD, "UP", m, a68_lower_shl3); ++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); ++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); ++ m = a68_proc (M_BOOL, M_INT, M_BITS, NO_MOID); ++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); ++ m = a68_proc (M_LONG_BITS, M_BITS, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); ++ m = a68_proc (M_SHORT_BITS, M_BITS, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); ++ /* LONG BITS operatos. */ ++ m = a68_proc (M_LONG_INT, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); ++ m = a68_proc (M_LONG_BITS, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); ++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); ++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); ++ m = a68_proc (M_BOOL, M_LONG_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); ++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); ++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); ++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); ++ a68_op (A68_STD, "UP", m, a68_lower_shl3); ++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); ++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); ++ m = a68_proc (M_BOOL, M_INT, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); ++ m = a68_proc (M_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); ++ /* LONG LONG BITS operators */ ++ m = a68_proc (M_BOOL, M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); ++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); ++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); ++ a68_op (A68_STD, "UP", m, a68_lower_shl3); ++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); ++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); ++ m = a68_proc (M_BOOL, M_INT, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); ++ m = a68_proc (M_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); ++ /* REAL operators. */ ++ m = A68_MCACHE (proc_real_real); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_realabs2); ++ m = a68_proc (M_INT, M_REAL, NO_MOID); ++ a68_op (A68_STD, "SIGN", m, a68_lower_realsign2); ++ a68_op (A68_STD, "ROUND", m, a68_lower_round2); ++ a68_op (A68_STD, "ENTIER", m, a68_lower_entier2); ++ m = a68_proc (M_BOOL, M_REAL, M_REAL, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_real_le3); ++ a68_op (A68_STD, ">", m, a68_lower_real_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_real_ge3); ++ a68_op (A68_STD, "EQ", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "LT", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "LE", m, a68_lower_real_le3); ++ a68_op (A68_STD, "GT", m, a68_lower_real_gt3); ++ a68_op (A68_STD, "GE", m, a68_lower_real_ge3); ++ m = A68_MCACHE (proc_real_real_real); ++ a68_op (A68_STD, "+", m, a68_lower_plus_real); ++ a68_op (A68_STD, "-", m, a68_lower_minus_real); ++ a68_op (A68_STD, "*", m, a68_lower_mult_real); ++ a68_op (A68_STD, "/", m, a68_lower_div3); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ m = a68_proc (M_REAL, M_REAL, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ m = a68_proc (M_REF_REAL, M_REF_REAL, M_REAL, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "/:=", m, a68_lower_divab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "DIVAB", m, a68_lower_divab3); ++ m = a68_proc (M_LONG_REAL, M_REAL, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengreal2); ++ /* LONG REAL operators */ ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengreal2); ++ m = a68_proc (M_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenreal2); ++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_realabs2); ++ m = a68_proc (M_INT, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "SIGN", m, a68_lower_realsign2); ++ m = a68_proc (M_LONG_INT, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "ENTIER", m, a68_lower_entier2); ++ a68_op (A68_STD, "ROUND", m, a68_lower_round2); ++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_real); ++ a68_op (A68_STD, "-", m, a68_lower_minus_real); ++ a68_op (A68_STD, "*", m, a68_lower_mult_real); ++ a68_op (A68_STD, "/", m, a68_lower_div3); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ m = a68_proc (M_REF_LONG_REAL, M_REF_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "/:=", m, a68_lower_divab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "DIVAB", m, a68_lower_divab3); ++ m = a68_proc (M_BOOL, M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "LT", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_real_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_real_le3); ++ a68_op (A68_STD, ">", m, a68_lower_real_gt3); ++ a68_op (A68_STD, "GT", m, a68_lower_real_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_real_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_real_ge3); ++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ /* LONG LONG REAL operators. */ ++ m = a68_proc (M_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenreal2); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_realabs2); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ m = a68_proc (M_INT, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "SIGN", m, a68_lower_realsign2); ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "ENTIER", m, a68_lower_entier2); ++ a68_op (A68_STD, "ROUND", m, a68_lower_round2); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_real); ++ a68_op (A68_STD, "-", m, a68_lower_minus_real); ++ a68_op (A68_STD, "*", m, a68_lower_mult_real); ++ a68_op (A68_STD, "/", m, a68_lower_div3); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ m = a68_proc (M_REF_LONG_LONG_REAL, M_REF_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "/:=", m, a68_lower_divab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "DIVAB", m, a68_lower_divab3); ++ m = a68_proc (M_BOOL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "LT", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_real_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_real_le3); ++ a68_op (A68_STD, ">", m, a68_lower_real_gt3); ++ a68_op (A68_STD, "GT", m, a68_lower_real_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_real_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_real_ge3); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ /* ROWS operators. */ ++ m = a68_proc (M_INT, M_ROWS, NO_MOID); ++ a68_op (A68_STD, "LWB", m, a68_lower_lwb2); ++ a68_op (A68_STD, "UPB", m, a68_lower_upb2); ++ m = a68_proc (M_INT, M_INT, M_ROWS, NO_MOID); ++ a68_op (A68_STD, "LWB", m, a68_lower_lwb3); ++ a68_op (A68_STD, "UPB", m, a68_lower_upb3); ++ /* BYTES operators. */ ++ m = a68_proc (M_BYTES, M_STRING, NO_MOID); ++ a68_idf (A68_STD, "bytespack", m); ++ m = a68_proc (M_CHAR, M_INT, M_BYTES, NO_MOID); ++ a68_op (A68_STD, "ELEM", m); ++ m = a68_proc (M_BYTES, M_BYTES, M_BYTES, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ m = a68_proc (M_REF_BYTES, M_REF_BYTES, M_BYTES, NO_MOID); ++ a68_op (A68_STD, "+:=", m); ++ a68_op (A68_STD, "PLUSAB", m); ++ m = a68_proc (M_BOOL, M_BYTES, M_BYTES, NO_MOID); ++ a68_op (A68_STD, "=", m); ++ a68_op (A68_STD, "/=", m); ++ a68_op (A68_STD, "<", m); ++ a68_op (A68_STD, "<=", m); ++ a68_op (A68_STD, ">", m); ++ a68_op (A68_STD, ">=", m); ++ a68_op (A68_STD, "EQ", m); ++ a68_op (A68_STD, "NE", m); ++ a68_op (A68_STD, "LT", m); ++ a68_op (A68_STD, "LE", m); ++ a68_op (A68_STD, "GT", m); ++ a68_op (A68_STD, "GE", m); ++ /* LONG BYTES operators. */ ++ m = a68_proc (M_LONG_BYTES, M_BYTES, NO_MOID); ++ a68_op (A68_STD, "LENG", m); ++ m = a68_proc (M_BYTES, M_LONG_BYTES, NO_MOID); ++ a68_idf (A68_STD, "SHORTEN", m); ++ m = a68_proc (M_LONG_BYTES, M_STRING, NO_MOID); ++ a68_idf (A68_STD, "longbytespack", m); ++ m = a68_proc (M_CHAR, M_INT, M_LONG_BYTES, NO_MOID); ++ a68_op (A68_STD, "ELEM", m); ++ m = a68_proc (M_LONG_BYTES, M_LONG_BYTES, M_LONG_BYTES, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ m = a68_proc (M_REF_LONG_BYTES, M_REF_LONG_BYTES, M_LONG_BYTES, NO_MOID); ++ a68_op (A68_STD, "+:=", m); ++ a68_op (A68_STD, "PLUSAB", m); ++ m = a68_proc (M_BOOL, M_LONG_BYTES, M_LONG_BYTES, NO_MOID); ++ a68_op (A68_STD, "=", m); ++ a68_op (A68_STD, "/=", m); ++ a68_op (A68_STD, "<", m); ++ a68_op (A68_STD, "<=", m); ++ a68_op (A68_STD, ">", m); ++ a68_op (A68_STD, ">=", m); ++ a68_op (A68_STD, "EQ", m); ++ a68_op (A68_STD, "NE", m); ++ a68_op (A68_STD, "LT", m); ++ a68_op (A68_STD, "LE", m); ++ a68_op (A68_STD, "GT", m); ++ a68_op (A68_STD, "GE", m); ++ /* COMPLEX operators. */ ++ m = a68_proc (M_COMPLEX, M_REAL, M_REAL, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_reali); ++ a68_op (A68_STD, "+*", m, a68_lower_reali); ++ m = a68_proc (M_COMPLEX, M_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_inti); ++ a68_op (A68_STD, "+*", m, a68_lower_inti); ++ m = a68_proc (M_REAL, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "RE", m, a68_lower_re2); ++ a68_op (A68_STD, "IM", m, a68_lower_im2); ++ a68_op (A68_STD, "ABS", m); ++ a68_op (A68_STD, "ARG", m); ++ m = A68_MCACHE (proc_complex_complex); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "CONJ", m, a68_lower_conj2); ++ m = a68_proc (M_BOOL, M_COMPLEX, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "=", m); ++ a68_op (A68_STD, "/=", m); ++ a68_op (A68_STD, "EQ", m); ++ a68_op (A68_STD, "NE", m); ++ m = a68_proc (M_COMPLEX, M_COMPLEX, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "*", m); ++ a68_op (A68_STD, "/", m); ++ m = a68_proc (M_COMPLEX, M_COMPLEX, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m); ++ a68_op (A68_STD, "UP", m); ++ a68_op (A68_STD, "^", m); ++ m = a68_proc (M_REF_COMPLEX, M_REF_COMPLEX, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+:=", m); ++ a68_op (A68_STD, "-:=", m); ++ a68_op (A68_STD, "*:=", m); ++ a68_op (A68_STD, "/:=", m); ++ a68_op (A68_STD, "PLUSAB", m); ++ a68_op (A68_STD, "MINUSAB", m); ++ a68_op (A68_STD, "TIMESAB", m); ++ a68_op (A68_STD, "DIVAB", m); ++ m = a68_proc (M_COMPLEX, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m); ++ /* LONG COMPLEX operators */ ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_longinti); ++ a68_op (A68_STD, "+*", m, a68_lower_longinti); ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_longreali); ++ a68_op (A68_STD, "+*", m, a68_lower_longreali); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "LENG", m); ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m); ++ m = a68_proc (M_LONG_COMPLEX, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "LENG", m); ++ m = a68_proc (M_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m); ++ m = a68_proc (M_LONG_REAL, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "RE", m, a68_lower_re2); ++ a68_op (A68_STD, "IM", m, a68_lower_im2); ++ a68_op (A68_STD, "ARG", m); ++ a68_op (A68_STD, "ABS", m); ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "CONJ", m, a68_lower_conj2); ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "*", m); ++ a68_op (A68_STD, "/", m); ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m); ++ a68_op (A68_STD, "UP", m); ++ a68_op (A68_STD, "^", m); ++ m = a68_proc (M_BOOL, M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "=", m); ++ a68_op (A68_STD, "EQ", m); ++ a68_op (A68_STD, "/=", m); ++ a68_op (A68_STD, "NE", m); ++ m = a68_proc (M_REF_LONG_COMPLEX, M_REF_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+:=", m); ++ a68_op (A68_STD, "-:=", m); ++ a68_op (A68_STD, "*:=", m); ++ a68_op (A68_STD, "/:=", m); ++ a68_op (A68_STD, "PLUSAB", m); ++ a68_op (A68_STD, "MINUSAB", m); ++ a68_op (A68_STD, "TIMESAB", m); ++ a68_op (A68_STD, "DIVAB", m); ++ /* LONG LONG COMPLEX operators. */ ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_longlonginti); ++ a68_op (A68_STD, "+*", m, a68_lower_longlonginti); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_longlongreali); ++ a68_op (A68_STD, "+*", m, a68_lower_longlongreali); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "RE", m, a68_lower_re2); ++ a68_op (A68_STD, "IM", m, a68_lower_im2); ++ a68_op (A68_STD, "ARG", m); ++ a68_op (A68_STD, "ABS", m); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "CONJ", m, a68_lower_conj2); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "*", m); ++ a68_op (A68_STD, "/", m); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m); ++ a68_op (A68_STD, "UP", m); ++ a68_op (A68_STD, "^", m); ++ m = a68_proc (M_BOOL, M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "=", m); ++ a68_op (A68_STD, "EQ", m); ++ a68_op (A68_STD, "/=", m); ++ a68_op (A68_STD, "NE", m); ++ m = a68_proc (M_REF_LONG_LONG_COMPLEX, M_REF_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+:=", m); ++ a68_op (A68_STD, "-:=", m); ++ a68_op (A68_STD, "*:=", m); ++ a68_op (A68_STD, "/:=", m); ++ a68_op (A68_STD, "PLUSAB", m); ++ a68_op (A68_STD, "MINUSAB", m); ++ a68_op (A68_STD, "TIMESAB", m); ++ a68_op (A68_STD, "DIVAB", m); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "LENG", m); ++ /* SEMA operators. */ ++ m = a68_proc (M_SEMA, M_INT, NO_MOID); ++ a68_op (A68_STD, "LEVEL", m); ++ m = a68_proc (M_INT, M_SEMA, NO_MOID); ++ a68_op (A68_STD, "LEVEL", m); ++ m = a68_proc (M_VOID, M_SEMA, NO_MOID); ++ a68_op (A68_STD, "UP", m); ++ a68_op (A68_STD, "DOWN", m); ++} ++ ++/* GNU extensions for the standenv. */ ++ ++static void ++gnu_prelude (void) ++{ ++ MOID_T *m = NO_MOID; ++ /* Priorities. */ ++ a68_prio ("ELEMS", 8); ++ /* Identifiers. */ ++ a68_idf (A68_EXT, "infinity", M_REAL, a68_lower_infinity); ++ a68_idf (A68_EXT, "minusinfinity", M_REAL, a68_lower_minusinfinity); ++ a68_idf (A68_EXT, "longlonginfinity", M_LONG_LONG_REAL); ++ a68_idf (A68_EXT, "longlongminusinfinity", M_LONG_LONG_REAL); ++ a68_idf (A68_EXT, "longinfinity", M_LONG_REAL); ++ a68_idf (A68_EXT, "longminusinfinity", M_LONG_REAL); ++ a68_idf (A68_EXT, "minint", M_INT, a68_lower_minint); ++ a68_idf (A68_EXT, "longminint", M_LONG_INT, a68_lower_minint); ++ a68_idf (A68_EXT, "longlongminint", M_LONG_LONG_INT, a68_lower_minint); ++ a68_idf (A68_EXT, "shortminint", M_SHORT_INT, a68_lower_minint); ++ a68_idf (A68_EXT, "shortshortminint", M_SHORT_SHORT_INT, a68_lower_minint); ++ a68_idf (A68_EXT, "minreal", M_REAL, a68_lower_minreal); ++ a68_idf (A68_EXT, "longminreal", M_LONG_REAL, a68_lower_minreal); ++ a68_idf (A68_EXT, "longlongminreal", M_LONG_LONG_REAL, a68_lower_minreal); ++ a68_idf (A68_EXT, "eofchar", M_CHAR, a68_lower_eofchar); ++ a68_idf (A68_EXT, "replacementchar", M_CHAR, a68_lower_replacementchar); ++ /* REAL procedures. */ ++ m = A68_MCACHE (proc_real_real); ++ a68_idf (A68_EXT, "log", m, a68_lower_log); ++ /* LONG REAL procedures. */ ++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_idf (A68_EXT, "longlog", m, a68_lower_long_log); ++ /* LONG LONG REAL procedures. */ ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_idf (A68_EXT, "longlonglog", m, a68_lower_long_long_log); ++ /* BOOL operators. */ ++ m = a68_proc (M_BOOL, M_BOOL, M_BOOL, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_xor3); ++ /* SHORT SHORT BITS operators. */ ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); ++ /* SHORT BITS operators. */ ++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); ++ /* BITS operators. */ ++ m = a68_proc (M_BITS, M_BITS, M_BITS, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); ++ /* LONG BITS operators. */ ++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); ++ /* LONG LONG BITS operators. */ ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); ++ /* ROWS operators. */ ++ m = a68_proc (M_INT, M_ROWS, NO_MOID); ++ a68_op (A68_EXT, "ELEMS", m, a68_lower_elems2); ++ m = a68_proc (M_INT, M_INT, M_ROWS, NO_MOID); ++ a68_op (A68_EXT, "ELEMS", m, a68_lower_elems3); ++} ++ ++/* POSIX prelude. */ ++ ++static void ++posix_prelude (void) ++{ ++ MOID_T *m = NO_MOID; ++ ++ /* Environment variables. */ ++ m = a68_proc (M_STRING, M_STRING, NO_MOID); ++ a68_idf (A68_EXT, "getenv", m, a68_lower_posixgetenv); ++ /* Exit status handling. */ ++ m = a68_proc (M_VOID, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "setexitstatus", m, a68_lower_setexitstatus); ++ /* Argument handling. */ ++ m = A68_MCACHE (proc_int); ++ a68_idf (A68_EXT, "argc", m, a68_lower_posixargc); ++ m = a68_proc (M_STRING, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "argv", m, a68_lower_posixargv); ++ /* Error procedures. */ ++ m = A68_MCACHE (proc_int); ++ a68_idf (A68_EXT, "errno", m, a68_lower_posixerrno); ++ m = a68_proc (M_VOID, M_STRING, NO_MOID); ++ a68_idf (A68_EXT, "perror", m, a68_lower_posixperror); ++ m = a68_proc (M_STRING, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "strerror", m, a68_lower_posixstrerror); ++ /* I/O identifiers. */ ++ a68_idf (A68_EXT, "stdin", M_INT, a68_lower_posixstdinfiledes); ++ a68_idf (A68_EXT, "stdout", M_INT, a68_lower_posixstdoutfiledes); ++ a68_idf (A68_EXT, "stderr", M_INT, a68_lower_posixstderrfiledes); ++ a68_idf (A68_EXT, "fileodefault", M_BITS, a68_lower_posixfileodefault); ++ a68_idf (A68_EXT, "fileordwr", M_BITS, a68_lower_posixfileordwr); ++ a68_idf (A68_EXT, "fileordonly", M_BITS, a68_lower_posixfileordonly); ++ a68_idf (A68_EXT, "fileowronly", M_BITS, a68_lower_posixfileowronly); ++ a68_idf (A68_EXT, "fileotrunc", M_BITS, a68_lower_posixfileotrunc); ++ /* Opening and closing files. */ ++ m = a68_proc (M_INT, M_STRING, M_BITS, NO_MOID); ++ a68_idf (A68_EXT, "fopen", m, a68_lower_posixfopen); ++ a68_idf (A68_EXT, "fcreate", m, a68_lower_posixfcreate); ++ m = A68_MCACHE (proc_int_int); ++ a68_idf (A68_EXT, "fclose", m, a68_lower_posixfclose); ++ /* Getting properties of files. */ ++ m = a68_proc (M_LONG_LONG_INT, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "fsize", m, a68_lower_posixfsize); ++ m = a68_proc (M_LONG_LONG_INT, M_INT, M_LONG_LONG_INT, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "lseek", m, a68_lower_posixlseek); ++ a68_idf (A68_EXT, "seekcur", M_INT, a68_lower_posixseekcur); ++ a68_idf (A68_EXT, "seekend", M_INT, a68_lower_posixseekend); ++ a68_idf (A68_EXT, "seekset", M_INT, a68_lower_posixseekset); ++ /* Sockets. */ ++ m = a68_proc (M_INT, M_STRING, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "fconnect", m, a68_lower_posixfconnect); ++ /* String and character output. */ ++ m = a68_proc (M_CHAR, M_CHAR, NO_MOID); ++ a68_idf (A68_EXT, "putchar", m, a68_lower_posixputchar); ++ m = a68_proc (M_VOID, M_STRING, NO_MOID); ++ a68_idf (A68_EXT, "puts", m, a68_lower_posixputs); ++ m = a68_proc (M_CHAR, M_INT, M_CHAR, NO_MOID); ++ a68_idf (A68_EXT, "fputc", m, a68_lower_posixfputc); ++ m = a68_proc (M_INT, M_INT, M_STRING, NO_MOID); ++ a68_idf (A68_EXT, "fputs", m, a68_lower_posixfputs); ++ /* String and character input. */ ++ m = A68_MCACHE (proc_char); ++ a68_idf (A68_EXT, "getchar", m, a68_lower_posixgetchar); ++ m = a68_proc (M_CHAR, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "fgetc", m, a68_lower_posixfgetc); ++ m = a68_proc (M_REF_STRING, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "gets", m, a68_lower_posixgets); ++ m = a68_proc (M_REF_STRING, M_INT, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "fgets", m, a68_lower_posixfgets); ++} ++ ++/* Transput. */ ++ ++static void ++stand_transput (void) ++{ ++ PACK_T *z = NO_PACK; ++ MOID_T *m = NO_MOID; ++ ++ /* Modes. */ ++ ++ /* NUMBER */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_INT, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_INT, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_INT, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_SHORT_INT, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_SHORT_SHORT_INT, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_REAL, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_REAL, NO_TEXT, NO_NODE); ++ M_NUMBER = a68_add_mode (&TOP_MOID (&A68_JOB), UNION_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ ++ /* Layout procedures. */ ++ ++ /* Conversion procedures. */ ++ m = a68_proc (M_STRING, M_NUMBER, M_INT, NO_MOID); ++ a68_idf (A68_STD, "whole", m); ++} ++ ++/* Build the standard environ symbol table. */ ++ ++void ++a68_make_standard_environ (void) ++{ ++ stand_moids (); ++ A68_MCACHE (proc_bool) = a68_proc (M_BOOL, NO_MOID); ++ A68_MCACHE (proc_char) = a68_proc (M_CHAR, NO_MOID); ++ A68_MCACHE (proc_complex_complex) = a68_proc (M_COMPLEX, M_COMPLEX, NO_MOID); ++ A68_MCACHE (proc_int) = a68_proc (M_INT, NO_MOID); ++ A68_MCACHE (proc_int_int) = a68_proc (M_INT, M_INT, NO_MOID); ++ A68_MCACHE (proc_int_int_real) = a68_proc (M_REAL, M_INT, M_INT, NO_MOID); ++ A68_MCACHE (proc_int_real) = a68_proc (M_REAL, M_INT, NO_MOID); ++ A68_MCACHE (proc_int_real_real) = a68_proc (M_REAL, M_INT, M_REAL, NO_MOID); ++ A68_MCACHE (proc_int_real_real_real) = a68_proc (M_REAL, M_INT, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real) = a68_proc (M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_int_real) = a68_proc (M_REAL, M_REAL, M_INT, NO_MOID); ++ A68_MCACHE (proc_real_real_int_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_INT, NO_MOID); ++ A68_MCACHE (proc_real_real) = M_PROC_REAL_REAL; ++ A68_MCACHE (proc_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_real_real_int) = a68_proc (M_INT, M_REAL, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_real_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_ref_real_ref_int_void) = a68_proc (M_VOID, M_REAL, M_REF_REAL, M_REF_INT, NO_MOID); ++ A68_MCACHE (proc_void) = a68_proc (M_VOID, NO_MOID); ++ stand_prelude (); ++ if (!OPTION_STRICT (&A68_JOB)) ++ { ++ gnu_prelude (); ++ posix_prelude (); ++ } ++ stand_transput (); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-scanner.cc +@@ -0,0 +1,2346 @@ ++/* Context-dependent ALGOL 68 tokeniser. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* Context-dependent ALGOL 68 tokeniser. */ ++ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "diagnostic.h" ++#include "options.h" ++#include "vec.h" ++ ++#include "a68.h" ++ ++/* A few forward references of static functions defined in this file. */ ++ ++static void include_files (LINE_T *top); ++ ++/* Standard prelude and postlude for source files. ++ ++ These are used for particular programs only. Not for prelude packets. ++ We need several versions for the several supported stropping regimes. */ ++ ++static const char * ++upper_prelude_start[] = { ++ "BEGIN", ++ " BEGIN", ++ NO_TEXT ++}; ++ ++static const char * ++upper_postlude[] = { ++ " END;", ++ " stop: SKIP", ++ "END", ++ NO_TEXT ++}; ++ ++static const char * ++supper_prelude_start[] = { ++ "begin", ++ " begin", ++ NO_TEXT ++}; ++ ++static const char * ++supper_postlude[] = { ++ " end;", ++ " stop: skip", ++ "end", ++ NO_TEXT ++}; ++ ++/* Macros. */ ++ ++#define NULL_CHAR '\0' ++#define STOP_CHAR 127 ++#define FORMFEED_CHAR '\f' ++#define CR_CHAR '\r' ++#define QUOTE_CHAR '"' ++#define APOSTROPHE_CHAR '\'' ++#define BACKSLASH_CHAR '\\' ++#define NEWLINE_CHAR '\n' ++#define EXPONENT_CHAR 'e' ++#define RADIX_CHAR 'r' ++#define POINT_CHAR '.' ++#define TAB_CHAR '\t' ++ ++#define MAX_RESTART 256 ++ ++#define EOL(c) ((c) == NEWLINE_CHAR || (c) == NULL_CHAR) ++#define SCAN_ERROR(c, u, v, txt) if (c) \ ++ do \ ++ { \ ++ a68_scan_error (u, v, txt); \ ++ } \ ++ while (0) ++ ++ ++#define SCAN_DIGITS(c) \ ++ while (ISDIGIT (c)) \ ++ { \ ++ (sym++)[0] = (c); \ ++ (c) = next_char (ref_l, ref_s, true); \ ++ } ++ ++#define SCAN_EXPONENT_PART(c) \ ++ do \ ++ { \ ++ (sym++)[0] = EXPONENT_CHAR; \ ++ (c) = next_char (ref_l, ref_s, true); \ ++ if ((c) == '+' || (c) == '-') { \ ++ (sym++)[0] = (c); \ ++ (c) = next_char (ref_l, ref_s, true); \ ++ } \ ++ SCAN_ERROR (!ISDIGIT (c), *start_l, *start_c, \ ++ "invalid exponent digit"); \ ++ SCAN_DIGITS (c); \ ++ } \ ++ while (0) ++ ++/* Read bytes from file into buffer. */ ++ ++static ssize_t ++io_read (FILE *file, void *buf, size_t n) ++{ ++ int fd = fileno (file); ++ size_t to_do = n; ++ int restarts = 0; ++ char *z = (char *) buf; ++ while (to_do > 0) ++ { ++ ssize_t bytes_read; ++ ++ errno = 0; ++ bytes_read = read (fd, z, to_do); ++ if (bytes_read < 0) ++ { ++ if (errno == EINTR) ++ { ++ /* interrupt, retry. */ ++ bytes_read = 0; ++ if (restarts++ > MAX_RESTART) ++ { ++ return -1; ++ } ++ } ++ else ++ { ++ /* read error. */ ++ return -1; ++ } ++ } ++ else if (bytes_read == 0) ++ { ++ /* EOF_CHAR */ ++ break; ++ } ++ to_do -= (size_t) bytes_read; ++ z += bytes_read; ++ } ++ ++ /* return >= 0 */ ++ return (ssize_t) n - (ssize_t) to_do; ++} ++ ++/* Save scanner state, for character look-ahead. */ ++ ++static void ++save_state (LINE_T *ref_l, char *ref_s, char ch) ++{ ++ SCAN_STATE_L (&A68_JOB) = ref_l; ++ SCAN_STATE_S (&A68_JOB) = ref_s; ++ SCAN_STATE_C (&A68_JOB) = ch; ++} ++ ++/* Restore scanner state, for character look-ahead. */ ++ ++static void ++restore_state (LINE_T **ref_l, char **ref_s, char *ch) ++{ ++ *ref_l = SCAN_STATE_L (&A68_JOB); ++ *ref_s = SCAN_STATE_S (&A68_JOB); ++ *ch = SCAN_STATE_C (&A68_JOB); ++} ++ ++/* New_source_line. */ ++ ++static LINE_T * ++new_source_line (void) ++{ ++ LINE_T *z = ggc_cleared_alloc (); ++ ++ MARKER (z)[0] = '\0'; ++ STRING (z) = NO_TEXT; ++ FILENAME (z) = NO_TEXT; ++ NUMBER (z) = 0; ++ NEXT (z) = NO_LINE; ++ PREVIOUS (z) = NO_LINE; ++ return z; ++} ++ ++/* Append a source line to the internal source file. */ ++ ++static void ++append_source_line (const char *str, LINE_T **ref_l, int *line_num, ++ const char *filename) ++{ ++ LINE_T *z = new_source_line (); ++ ++ /* Link line into the chain. */ ++ STRING (z) = xstrdup (str); ++ FILENAME (z) = ggc_strdup (filename); ++ NUMBER (z) = (*line_num)++; ++ NEXT (z) = NO_LINE; ++ PREVIOUS (z) = *ref_l; ++ if (TOP_LINE (&A68_JOB) == NO_LINE) ++ TOP_LINE (&A68_JOB) = z; ++ if (*ref_l != NO_LINE) ++ NEXT (*ref_l) = z; ++ *ref_l = z; ++} ++ ++/* Append environment source lines. */ ++ ++static void ++append_environ (const char *str[], LINE_T **ref_l, int *line_num, const char *name) ++{ ++ for (int k = 0; str[k] != NO_TEXT; k++) ++ { ++ int zero_line_num = 0; ++ (*line_num)++; ++ append_source_line (str[k], ref_l, &zero_line_num, name); ++ } ++} ++ ++/* ++ * Scanner, tokenises the source code. ++ */ ++ ++/* Emit a diagnostic if CH is an unworthy character. */ ++ ++static void ++unworthy (LINE_T *u, char *v, char ch) ++{ ++ if (ISPRINT (ch)) ++ { ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, "*%s", ++ "unworthy character") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, "*%s %c", ++ "unworthy character", ch) < 0) ++ gcc_unreachable (); ++ } ++ ++ a68_scan_error (u, v, A68 (edit_line)); ++} ++ ++/* Concatenate lines that terminate in '\' with next line. */ ++ ++static void ++concatenate_lines (LINE_T * top) ++{ ++ LINE_T *q; ++ /* Work from bottom backwards. */ ++ for (q = top; q != NO_LINE && NEXT (q) != NO_LINE; FORWARD (q)) ++ ; ++ ++ for (; q != NO_LINE; BACKWARD (q)) ++ { ++ char *z = STRING (q); ++ size_t len = strlen (z); ++ ++ if (len >= 2 ++ && z[len - 2] == BACKSLASH_CHAR ++ && z[len - 1] == NEWLINE_CHAR ++ && NEXT (q) != NO_LINE ++ && STRING (NEXT (q)) != NO_TEXT) ++ { ++ z[len - 2] = '\0'; ++ len += (int) strlen (STRING (NEXT (q))); ++ z = (char *) xmalloc (len + 1); ++ a68_bufcpy (z, STRING (q), len + 1); ++ a68_bufcat (z, STRING (NEXT (q)), len + 1); ++ STRING (NEXT (q))[0] = '\0'; ++ STRING (q) = z; ++ } ++ } ++} ++ ++/* Size of source file. */ ++ ++static int ++get_source_size (void) ++{ ++ FILE *f = FILE_SOURCE_FD (&A68_JOB); ++ return (int) lseek (fileno (f), 0, SEEK_END); ++} ++ ++/* Read source file FILENAME and make internal copy. */ ++ ++static bool ++read_source_file (const char *filename) ++{ ++ struct stat statbuf; ++ LINE_T *ref_l = NO_LINE; ++ int line_num = 0; ++ size_t k; ++ size_t bytes_read; ++ ssize_t l; ++ size_t source_file_size; ++ char *buffer; ++ FILE *f; ++ bool ret = true; ++ ++ /* First open the given file. */ ++ if (!(FILE_SOURCE_FD (&A68_JOB) = fopen (filename, "r"))) ++ fatal_error (UNKNOWN_LOCATION, "could not open source file %s", ++ filename); ++ FILE_SOURCE_NAME (&A68_JOB) = ggc_strdup (filename); ++ f = FILE_SOURCE_FD (&A68_JOB); ++ ++ if (fstat (fileno (f), &statbuf) ++ || !(S_ISREG (statbuf.st_mode) || S_ISCHR (statbuf.st_mode))) ++ fatal_error (UNKNOWN_LOCATION, "specified file %s is a directory", ++ filename); ++ ++ if ((source_file_size = get_source_size ()) == 0) ++ { ++ /* The source file is empty. */ ++ ret = false; ++ goto done; ++ } ++ ++ /* Allocate A68_PARSER (scan_buf), which is an auxiliary buffer used by the ++ scanner known to be big enough to hold any string contained in the source ++ file. */ ++ A68_PARSER (max_scan_buf_length) = source_file_size + 1; ++ A68_PARSER (max_scan_buf_length) += 1024; /* For the environment. */ ++ A68_PARSER (scan_buf) = (char *) xmalloc (A68_PARSER (max_scan_buf_length)); ++ ++ /* Prelude. */ ++ append_environ (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING ++ ? upper_prelude_start : supper_prelude_start, ++ &ref_l, &line_num, "prelude"); ++ ++ /* Read the file into a single buffer, so we save on system calls. */ ++ line_num = 1; ++ errno = 0; ++ buffer = (char *) xmalloc (8 + source_file_size); ++ if (lseek (fileno (f), 0, SEEK_SET) < 0) ++ gcc_unreachable (); ++ errno = 0; ++ bytes_read = io_read (f, buffer, source_file_size); ++ gcc_assert (errno == 0 && bytes_read == source_file_size); ++ ++ /* Link all lines into the list. */ ++ k = 0; ++ while (k < source_file_size) ++ { ++ l = 0; ++ A68_PARSER (scan_buf)[0] = '\0'; ++ while (k < source_file_size && buffer[k] != NEWLINE_CHAR) ++ { ++ if (k < source_file_size - 1 ++ && buffer[k] == CR_CHAR && buffer[k + 1] == NEWLINE_CHAR) ++ k++; ++ else ++ { ++ A68_PARSER (scan_buf)[l++] = buffer[k++]; ++ A68_PARSER (scan_buf)[l] = '\0'; ++ } ++ } ++ A68_PARSER (scan_buf)[l++] = NEWLINE_CHAR; ++ A68_PARSER (scan_buf)[l] = '\0'; ++ if (k < source_file_size) ++ k++; ++ append_source_line (A68_PARSER (scan_buf), &ref_l, &line_num, ++ FILE_SOURCE_NAME (&A68_JOB)); ++ SCAN_ERROR (l != (ssize_t) strlen (A68_PARSER (scan_buf)), ++ NO_LINE, NO_TEXT, "invalid characters in source file"); ++ } ++ ++ /* Postlude. */ ++ append_environ (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING ++ ? upper_postlude : supper_postlude, ++ &ref_l, &line_num, "postlude"); ++ ++ /* Concatenate lines that end with \. */ ++ concatenate_lines (TOP_LINE (&A68_JOB)); ++ ++ /* Include files. */ ++ include_files (TOP_LINE (&A68_JOB)); ++ ++ done: ++ if (fclose (FILE_SOURCE_FD (&A68_JOB)) != 0) ++ gcc_unreachable (); ++ return ret; ++} ++ ++/* Get next character from internal copy of source file. ++ ++ If ALLOW_TYPO is true then typographical display features are skipped. ++ ++ If ALLOW_ONE_UNDER is true then a single underscore character is ++ skipped. */ ++ ++static char ++next_char (LINE_T **ref_l, char **ref_s, bool allow_typo, ++ bool allow_one_under = false, bool *found_under = NULL) ++{ ++ char ch; ++ ++ /* Empty source. */ ++ if (*ref_l == NO_LINE) ++ return STOP_CHAR; ++ ++ if ((*ref_s)[0] == NEWLINE_CHAR || (*ref_s)[0] == '\0') ++ { ++ /* Go to new line. */ ++ *ref_l = NEXT (*ref_l); ++ if (*ref_l == NO_LINE) ++ return STOP_CHAR; ++ *ref_s = STRING (*ref_l); ++ } ++ else ++ (*ref_s)++; ++ ++ /* Deliver next char. */ ++ ch = (*ref_s)[0]; ++ if ((allow_typo && (ISSPACE (ch) || ch == FORMFEED_CHAR)) ++ || (allow_one_under && ch == '_')) ++ { ++ if (ch == '_' && found_under != NULL) ++ *found_under = true; ++ ch = next_char (ref_l, ref_s, allow_typo); ++ } ++ return ch; ++} ++ ++/* Find first character that can start a valid symbol. */ ++ ++static void ++get_good_char (char *ref_c, LINE_T **ref_l, char **ref_s) ++{ ++ while (*ref_c != STOP_CHAR && (ISSPACE (*ref_c) || (*ref_c == '\0'))) ++ *ref_c = next_char (ref_l, ref_s, false); ++} ++ ++/* Case insensitive strncmp for at most the number of chars in V. */ ++ ++static int ++streq (const char *u, const char *v) ++{ ++ int diff; ++ for (diff = 0; diff == 0 && u[0] != NULL_CHAR && v[0] != NULL_CHAR; u++, v++) ++ diff = ((int) TOLOWER (u[0])) - ((int) TOLOWER (v[0])); ++ return diff; ++} ++ ++/* Case insensitive strncmp for at most N chars. */ ++ ++static int ++strneq (const char *u, const char *v, size_t n) ++{ ++ int diff; ++ size_t pos = 0; ++ for (diff = 0; ++ diff == 0 && u[0] != NULL_CHAR && v[0] != NULL_CHAR && pos < n; ++ u++, v++, pos++) ++ diff = ((int) TOLOWER (u[0])) - ((int) TOLOWER (v[0])); ++ return diff; ++} ++ ++ ++/* Determine whether u is bold tag v, independent of stropping regime. */ ++ ++static bool ++is_bold (char *u, const char *v) ++{ ++ size_t len = strlen (v); ++ ++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) ++ /* UPPER stropping. */ ++ return strncmp (u, v, len) == 0 && !ISUPPER (u[len]); ++ else ++ /* SUPPER stropping. */ ++ return (strlen (u) >= len ++ && ISLOWER (u[0]) ++ && strneq (u, v, len) == 0 ++ && !ISALPHA (u[len]) ++ && !ISDIGIT (u[len])); ++} ++ ++/* Skip a string denotation. ++ ++ This function returns true if the end of the string denotation is found. ++ Returns false otherwise. */ ++ ++static bool ++skip_string (LINE_T **top, char **ch) ++{ ++ LINE_T *u = *top; ++ char *v = *ch; ++ v++; ++ while (u != NO_LINE) ++ { ++ while (v[0] != NULL_CHAR) ++ { ++ if (v[0] == QUOTE_CHAR && v[1] != QUOTE_CHAR) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else if (v[0] == QUOTE_CHAR && v[1] == QUOTE_CHAR) ++ { ++ v += 2; ++ } ++ else ++ { ++ v++; ++ } ++ } ++ FORWARD (u); ++ if (u != NO_LINE) { ++ v = &(STRING (u)[0]); ++ } else { ++ v = NO_TEXT; ++ } ++ } ++ return false; ++} ++ ++/* Skip a comment. ++ ++ This function returns true if the end of the comment is found. Returns ++ false otherwise. */ ++ ++static bool ++skip_comment (LINE_T **top, char **ch, int delim) ++{ ++ LINE_T *u = *top; ++ char *v = *ch; ++ int nesting_level = 1; ++ v++; ++ while (u != NO_LINE) ++ { ++ while (v[0] != NULL_CHAR) ++ { ++ LINE_T *l = u; ++ char *c = v; ++ ++ if (v[0] == QUOTE_CHAR && skip_string (&l, &c) ++ && (delim == BOLD_COMMENT_BEGIN_SYMBOL || delim == BRIEF_COMMENT_BEGIN_SYMBOL)) ++ { ++ u = l; ++ v = c; ++ } ++ else if (is_bold (v, "COMMENT") && delim == BOLD_COMMENT_SYMBOL) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else if (is_bold (v, "CO") && delim == STYLE_I_COMMENT_SYMBOL) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else if (v[0] == '#' && delim == STYLE_II_COMMENT_SYMBOL) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else if (is_bold (v, "ETON") && delim == BOLD_COMMENT_BEGIN_SYMBOL) ++ { ++ gcc_assert (nesting_level > 0); ++ nesting_level -= 1; ++ if (nesting_level == 0) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ } ++ else if (v[0] == '}' && delim == BRIEF_COMMENT_BEGIN_SYMBOL) ++ { ++ gcc_assert (nesting_level > 0); ++ nesting_level -= 1; ++ if (nesting_level == 0) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ } ++ else ++ { ++ if ((is_bold (v, "NOTE") && delim == BOLD_COMMENT_BEGIN_SYMBOL) ++ || (v[0] == '{' && delim == BRIEF_COMMENT_BEGIN_SYMBOL)) ++ { ++ nesting_level += 1; ++ } ++ ++ v++; ++ } ++ } ++ FORWARD (u); ++ if (u != NO_LINE) ++ v = &(STRING (u)[0]); ++ else ++ v = NO_TEXT; ++ } ++ ++ return false; ++} ++ ++/* Skip rest of pragmat. ++ ++ This function returns true if the end of the pragmat is found, false ++ otherwise. */ ++ ++static bool ++skip_pragmat (LINE_T **top, char **ch, int delim, bool whitespace) ++{ ++ LINE_T *u = *top; ++ char *v = *ch; ++ while (u != NO_LINE) ++ { ++ while (v[0] != NULL_CHAR) ++ { ++ if (is_bold (v, "PRAGMAT") && delim == BOLD_PRAGMAT_SYMBOL) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else if (is_bold (v, "PR") && delim == STYLE_I_PRAGMAT_SYMBOL) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else ++ { ++ if (whitespace && !ISSPACE (v[0]) && v[0] != NEWLINE_CHAR) ++ { ++ SCAN_ERROR (true, u, v, "error in pragment"); ++ } ++ else if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING && ISUPPER (v[0])) ++ { ++ /* Skip a bold word as you may trigger on REPR, for ++ instance. */ ++ while (ISUPPER (v[0])) ++ v++; ++ } ++ else if (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING && ISLOWER (v[0])) ++ { ++ /* Skip a tag as you may trigger on expr, for instance. */ ++ while (ISLOWER (v[0]) || ISDIGIT (v[0]) || v[0] == '_') ++ v++; ++ } ++ else ++ { ++ v++; ++ } ++ } ++ } ++ ++ FORWARD (u); ++ if (u != NO_LINE) ++ v = &(STRING (u)[0]); ++ else ++ v = NO_TEXT; ++ } ++ ++ return false; ++} ++ ++/* Return pointer to next token within pragmat. */ ++ ++static char * ++get_pragmat_item (LINE_T **top, char **ch) ++{ ++ LINE_T *u = *top; ++ char *v = *ch; ++ while (u != NO_LINE) ++ { ++ while (v[0] != NULL_CHAR) ++ { ++ if (!ISSPACE (v[0]) && v[0] != NEWLINE_CHAR) ++ { ++ *top = u; ++ *ch = v; ++ return v; ++ } ++ else ++ { ++ v++; ++ } ++ } ++ FORWARD (u); ++ if (u != NO_LINE) ++ v = &(STRING (u)[0]); ++ else ++ v = NO_TEXT; ++ } ++ ++ return NO_TEXT; ++} ++ ++/* Scan for the next pragmat and yield the first item within it. */ ++ ++static char * ++next_preprocessor_item (LINE_T **top, char **ch, int *delim) ++{ ++ LINE_T *u = *top; ++ char *v = *ch; ++ *delim = 0; ++ while (u != NO_LINE) ++ { ++ while (v[0] != NULL_CHAR) ++ { ++ LINE_T *start_l = u; ++ char *start_c = v; ++ ++ if (v[0] == QUOTE_CHAR) ++ { ++ /* Skip string denotation. */ ++ SCAN_ERROR (!skip_string (&u, &v), start_l, start_c, ++ "unterminated string"); ++ } ++ else if (a68_find_keyword (A68 (top_keyword), "COMMENT") != NO_KEYWORD ++ && is_bold (v, "COMMENT")) ++ { ++ /* Skip comment. */ ++ SCAN_ERROR (!skip_comment (&u, &v, BOLD_COMMENT_SYMBOL), start_l, start_c, ++ "unterminated comment"); ++ } ++ else if (a68_find_keyword (A68 (top_keyword), "CO") != NO_KEYWORD ++ && is_bold (v, "CO")) ++ { ++ /* skip comment. */ ++ SCAN_ERROR (!skip_comment (&u, &v, STYLE_I_COMMENT_SYMBOL), start_l, start_c, ++ "unterminated comment"); ++ } ++ else if (a68_find_keyword (A68 (top_keyword), "#") != NO_KEYWORD ++ && v[0] == '#') ++ { ++ SCAN_ERROR (!skip_comment (&u, &v, STYLE_II_COMMENT_SYMBOL), start_l, start_c, ++ "unterminated comment"); ++ } ++ else if (a68_find_keyword (A68 (top_keyword), "NOTE") != NO_KEYWORD ++ && is_bold (v, "NOTE")) ++ { ++ SCAN_ERROR (!skip_comment (&u, &v, BOLD_COMMENT_BEGIN_SYMBOL), start_l, start_c, ++ "unterminated comment"); ++ } ++ else if (a68_find_keyword (A68 (top_keyword), "{") != NO_KEYWORD ++ && v[0] == '{') ++ { ++ SCAN_ERROR (!skip_comment (&u, &v, BRIEF_COMMENT_BEGIN_SYMBOL), start_l, start_c, ++ "unterminated comment"); ++ } ++ else if (is_bold (v, "PRAGMAT") || is_bold (v, "PR")) ++ { ++ /* We caught a PRAGMAT. */ ++ char *item; ++ if (is_bold (v, "PRAGMAT")) ++ { ++ *delim = BOLD_PRAGMAT_SYMBOL; ++ v = &v[strlen ("PRAGMAT")]; ++ } ++ else if (is_bold (v, "PR")) ++ { ++ *delim = STYLE_I_PRAGMAT_SYMBOL; ++ v = &v[strlen ("PR")]; ++ } ++ item = get_pragmat_item (&u, &v); ++ SCAN_ERROR (item == NO_TEXT, start_l, start_c, ++ "unterminated pragmat"); ++ ++ if (streq (item, "INCLUDE") == 0) ++ { ++ /* Item "INCLUDE" includes a file. */ ++ *top = u; ++ *ch = v; ++ return item; ++ } ++ else ++ { ++ /* Unrecognised item - probably options handled later by the ++ tokeniser. */ ++ SCAN_ERROR (!skip_pragmat (&u, &v, *delim, false), start_l, start_c, ++ "unterminated pragmat"); ++ } ++ } ++ else if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING && ISUPPER (v[0])) ++ { ++ /* Skip a bold word as you may trigger on REPR, for instance. */ ++ while (ISUPPER (v[0])) ++ v++; ++ } ++ else if (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING && ISLOWER (v[0])) ++ { ++ /* Skip a tag as you may trigger on expr, for instance. */ ++ while (ISLOWER (v[0]) || ISDIGIT (v[0]) || v[0] == '_') ++ v++; ++ } ++ else ++ { ++ v++; ++ } ++ } ++ ++ FORWARD (u); ++ if (u != NO_LINE) ++ v = &(STRING (u)[0]); ++ else ++ v = NO_TEXT; ++ } ++ ++ *top = u; ++ *ch = v; ++ return NO_TEXT; ++} ++ ++/* Concatenate the two paths P1 and P2. */ ++ ++static char * ++a68_relpath (const char *p1, const char *p2, const char *fn) ++{ ++#if defined(__GNU__) ++ /* The Hurd doesn't define PATH_MAX. */ ++# define PATH_MAX 4096 ++#endif ++ ++ char q[PATH_MAX + 1]; ++ a68_bufcpy (q, p1, PATH_MAX); ++ a68_bufcat (q, "/", PATH_MAX); ++ a68_bufcat (q, p2, PATH_MAX); ++ a68_bufcat (q, "/", PATH_MAX); ++ a68_bufcat (q, fn, PATH_MAX); ++ /* Home directory shortcut ~ is a shell extension. */ ++ if (strchr (q, '~') != NO_TEXT) { ++ return NO_TEXT; ++ } ++ char *r = (char *) xmalloc (PATH_MAX + 1); ++ gcc_assert (r != NULL); ++ /* Error handling in the caller! */ ++ errno = 0; ++ r = lrealpath (q); ++ return r; ++} ++ ++/* Return true if we can open the file for reading. False otherwise. */ ++ ++static bool ++file_read_p (const char *filename) ++{ ++ return access (filename, R_OK) == 0 ? true : false; ++} ++ ++/* Find a file to include into the current source being parsed. Search the file ++ system for FILENAME and return a string with the file path. If the file is ++ not found, return NULL. ++ ++ When FILENAME is not an absolute path we first try to find it relative to the ++ current file being parsed (CURFILE). Failing to do that we use the search ++ paths provided by the -I option. */ ++ ++static char * ++find_include_file (const char *curfile, const char *filename) ++{ ++ char *filepath = NO_TEXT; ++ char *tmpfpath = NO_TEXT; ++ char *fnbdir = ldirname (filename); ++ const char *incfile = lbasename (filename); ++ ++ if (fnbdir == NULL || incfile == NULL) ++ gcc_unreachable (); ++ ++ if (!IS_ABSOLUTE_PATH (filename)) ++ { ++ char *sourcedir = ldirname (curfile); ++ ++ if (sourcedir == NULL || fnbdir == NULL) ++ gcc_unreachable (); ++ ++ if (strlen (sourcedir) == 0 && strlen (fnbdir) == 0) ++ { ++ free (sourcedir); ++ sourcedir = (char *) xmalloc (2); ++ a68_bufcpy (sourcedir, ".", 2); ++ } ++ ++ tmpfpath = a68_relpath (sourcedir, fnbdir, incfile); ++ if (file_read_p (tmpfpath)) ++ { ++ filepath = tmpfpath; ++ goto cleanup; ++ } ++ ++ for (unsigned ix = 0; ix != vec_safe_length (A68_INCLUDE_PATHS); ix++) ++ { ++ const char *include_dir = (*(A68_INCLUDE_PATHS))[ix]; ++ tmpfpath = a68_relpath (include_dir, fnbdir, incfile); ++ if (!IS_ABSOLUTE_PATH (tmpfpath)) ++ tmpfpath = a68_relpath (sourcedir, fnbdir, incfile); ++ if (file_read_p (tmpfpath)) ++ { ++ filepath = tmpfpath; ++ goto cleanup; ++ } ++ } ++ ++ cleanup: ++ free (sourcedir); ++ goto end; ++ } ++ else ++ { ++ size_t fnwid = (int) strlen (filename) + 1; ++ tmpfpath = (char *) xmalloc ((size_t) fnwid); ++ a68_bufcpy (tmpfpath, filename, fnwid); ++ ++ if (file_read_p (tmpfpath)) ++ { ++ filepath = tmpfpath; ++ goto end; ++ } ++ } ++ ++end: ++ free (fnbdir); ++ return filepath; ++} ++ ++/* Include files. ++ This function handles the INCLUDE pragmat in the source file. */ ++ ++static void ++include_files (LINE_T *top) ++{ ++ /* syntax: PR include "filename" PR ++ ++ The file gets inserted before the line containing the pragmat. In this way ++ correct line numbers are preserved which helps diagnostics. A file that ++ has been included will not be included a second time - it will be ignored. ++ A rigorous fail-safe, but there is no mechanism to prevent recursive ++ includes in A68 source code. User reports do not indicate sophisticated ++ use of INCLUDE, so this is fine for now. ++ */ ++ ++ bool make_pass = true; ++ while (make_pass) ++ { ++ LINE_T *s, *t, *u = top; ++ char *v = &(STRING (u)[0]); ++ make_pass = false; ++ errno = 0; ++ while (u != NO_LINE) ++ { ++ int pr_lim; ++ char *item = next_preprocessor_item (&u, &v, &pr_lim); ++ LINE_T *start_l = u; ++ char *start_c = v; ++ /* Search for PR include "filename" PR. */ ++ if (item != NO_TEXT && streq (item, "INCLUDE") == 0) ++ { ++ FILE *fp; ++ int fd; ++ size_t fsize, k; ++ int n, linum, bytes_read; ++ char *fbuf, delim; ++ BUFFER fnb; ++ char *fn = NO_TEXT; ++ /* Skip to filename. */ ++ while (ISALPHA (v[0])) ++ v++; ++ while (ISSPACE (v[0])) ++ v++; ++ /* Scan quoted filename. */ ++ SCAN_ERROR ((v[0] != QUOTE_CHAR && v[0] != '\''), start_l, start_c, ++ "incorrect filename"); ++ delim = (v++)[0]; ++ n = 0; ++ fnb[0] = NULL_CHAR; ++ /* Scan Algol 68 string (note: "" denotes a ", while in C it ++ concatenates). */ ++ do ++ { ++ SCAN_ERROR (EOL (v[0]), start_l, start_c, ++ "incorrect filename"); ++ SCAN_ERROR (n == BUFFER_SIZE - 1, start_l, start_c, ++ "incorrect filename"); ++ if (v[0] == delim) ++ { ++ while (v[0] == delim && v[1] == delim) ++ { ++ SCAN_ERROR (n == BUFFER_SIZE - 1, start_l, start_c, ++ "incorrect filename"); ++ fnb[n++] = delim; ++ fnb[n] = NULL_CHAR; ++ v += 2; ++ } ++ } ++ else if (ISPRINT (v[0])) ++ { ++ fnb[n++] = *(v++); ++ fnb[n] = NULL_CHAR; ++ } ++ else ++ { ++ SCAN_ERROR (true, start_l, start_c, ++ "incorrect filename"); ++ } ++ } ++ while (v[0] != delim); ++ ++ /* Insist that the pragmat is closed properly. */ ++ v = &v[1]; ++ SCAN_ERROR (!skip_pragmat (&u, &v, pr_lim, true), start_l, start_c, ++ "unterminated pragmat"); ++ SCAN_ERROR (n == 0, start_l, start_c, ++ "incorrect filename"); ++ ++ char *sourcefile = NO_TEXT; ++ if (FILENAME (u) != NO_TEXT) ++ { ++ sourcefile = xstrdup (FILENAME (u)); ++ } ++ else ++ { ++ sourcefile = (char *) xmalloc (2); ++ a68_bufcpy (sourcefile, ".", 1); ++ } ++ fn = find_include_file (sourcefile, fnb); ++ free (sourcefile); ++ ++ /* Do not check errno, since errno may be undefined here ++ after a successful call. */ ++ if (fn != NO_TEXT) ++ a68_bufcpy (fnb, fn, BUFFER_SIZE); ++ else ++ { ++ SCAN_ERROR (true, start_l, start_c, ++ "included file not found"); ++ } ++ size_t fnwid = (int) strlen (fnb) + 1; ++ fn = (char *) xmalloc ((size_t) fnwid); ++ a68_bufcpy (fn, fnb, fnwid); ++ ++ /* Ignore the file when included more than once. */ ++ for (t = top; t != NO_LINE; t = NEXT (t)) ++ { ++ if (strcmp (FILENAME (t), fn) == 0) ++ goto search_next_pragmat; ++ } ++ t = NO_LINE; ++ ++ /* Access the file. */ ++ errno = 0; ++ fp = fopen (fn, "r"); ++ SCAN_ERROR (fp == NULL, start_l, start_c, ++ "error opening included file"); ++ fd = fileno (fp); ++ errno = 0; ++ off_t off = lseek (fd, 0, SEEK_END); ++ gcc_assert (off >= 0); ++ fsize = (size_t) off; ++ SCAN_ERROR (errno != 0, start_l, start_c, ++ "error while reading file"); ++ fbuf = (char *) xmalloc (8 + fsize); ++ errno = 0; ++ if (lseek (fd, 0, SEEK_SET) < 0) ++ gcc_unreachable (); ++ SCAN_ERROR (errno != 0, start_l, start_c, ++ "error while reading file"); ++ errno = 0; ++ bytes_read = (int) io_read (fp, fbuf, (size_t) fsize); ++ SCAN_ERROR (errno != 0 || (size_t) bytes_read != fsize, start_l, start_c, ++ "error while reading file"); ++ ++ /* Buffer still usable?. */ ++ if (fsize > A68_PARSER (max_scan_buf_length)) ++ { ++ A68_PARSER (max_scan_buf_length) = fsize; ++ A68_PARSER (scan_buf) = (char *) xmalloc (8 + A68_PARSER (max_scan_buf_length)); ++ } ++ ++ /* Link all lines into the list. */ ++ linum = 1; ++ s = u; ++ t = PREVIOUS (u); ++ k = 0; ++ if (fsize == 0) ++ { ++ /* If file is empty, insert single empty line. */ ++ A68_PARSER (scan_buf)[0] = NEWLINE_CHAR; ++ A68_PARSER (scan_buf)[1] = NULL_CHAR; ++ append_source_line (A68_PARSER (scan_buf), &t, &linum, fn); ++ } ++ else ++ { ++ while (k < fsize) ++ { ++ n = 0; ++ A68_PARSER (scan_buf)[0] = NULL_CHAR; ++ while (k < fsize && fbuf[k] != NEWLINE_CHAR) ++ { ++ SCAN_ERROR ((ISCNTRL (fbuf[k]) && !ISSPACE (fbuf[k])) ++ || fbuf[k] == STOP_CHAR, ++ start_l, start_c, ++ "invalid characters in included file"); ++ A68_PARSER (scan_buf)[n++] = fbuf[k++]; ++ A68_PARSER (scan_buf)[n] = NULL_CHAR; ++ } ++ A68_PARSER (scan_buf)[n++] = NEWLINE_CHAR; ++ A68_PARSER (scan_buf)[n] = NULL_CHAR; ++ if (k < fsize) ++ k++; ++ append_source_line (A68_PARSER (scan_buf), &t, &linum, fn); ++ } ++ } ++ ++ /* Conclude and go find another include directive, if any. */ ++ NEXT (t) = s; ++ PREVIOUS (s) = t; ++ concatenate_lines (top); ++ if (fclose (fp) != 0) ++ gcc_unreachable (); ++ make_pass = true; ++ } ++ search_next_pragmat: ++ { (void) 0; }; ++ } ++ } ++} ++ ++/* Handle a pragment (pragmat or comment). */ ++ ++static char * ++pragment (int type, LINE_T **ref_l, char **ref_c) ++{ ++#define INIT_BUFFER \ ++ do \ ++ { \ ++ chars_in_buf = 0; \ ++ A68_PARSER (scan_buf)[chars_in_buf] = '\0'; \ ++ } \ ++ while (0) ++ ++#define ADD_ONE_CHAR(CH) \ ++ do \ ++ { \ ++ A68_PARSER (scan_buf)[chars_in_buf ++] = (CH); \ ++ A68_PARSER (scan_buf)[chars_in_buf] = '\0'; \ ++ } \ ++ while (0) ++ ++ const char *term_s = NO_TEXT; ++ const char *beg_s = NO_TEXT; ++ char c = **ref_c, *start_c = *ref_c; ++ char *z = NO_TEXT; ++ LINE_T *start_l = *ref_l; ++ int beg_s_length, term_s_length, chars_in_buf; ++ bool stop, pragmat = false; ++ ++ /* Set terminator to look for. */ ++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) ++ { ++ if (type == STYLE_I_COMMENT_SYMBOL) ++ term_s = "CO"; ++ else if (type == STYLE_II_COMMENT_SYMBOL) ++ term_s = "#"; ++ else if (type == BOLD_COMMENT_SYMBOL) ++ term_s = "COMMENT"; ++ else if (type == BOLD_COMMENT_BEGIN_SYMBOL) ++ { ++ beg_s = "NOTE"; ++ term_s = "ETON"; ++ } ++ else if (type == BRIEF_COMMENT_BEGIN_SYMBOL) ++ { ++ beg_s = "{"; ++ term_s = "}"; ++ } ++ else if (type == STYLE_I_PRAGMAT_SYMBOL) ++ { ++ term_s = "PR"; ++ pragmat = true; ++ } ++ else if (type == BOLD_PRAGMAT_SYMBOL) ++ { ++ term_s = "PRAGMAT"; ++ pragmat = true; ++ } ++ } ++ else ++ { ++ /* SUPPER stropping. */ ++ if (type == STYLE_I_COMMENT_SYMBOL) ++ term_s = "co"; ++ else if (type == STYLE_II_COMMENT_SYMBOL) ++ term_s = "#"; ++ else if (type == BOLD_COMMENT_SYMBOL) ++ term_s = "comment"; ++ else if (type == BOLD_COMMENT_BEGIN_SYMBOL) ++ { ++ beg_s = "note"; ++ term_s = "eton"; ++ } ++ else if (type == BRIEF_COMMENT_BEGIN_SYMBOL) ++ { ++ beg_s = "{"; ++ term_s = "}"; ++ } ++ else if (type == STYLE_I_PRAGMAT_SYMBOL) ++ { ++ term_s = "pr"; ++ pragmat = true; ++ } ++ else if (type == BOLD_PRAGMAT_SYMBOL) ++ { ++ term_s = "pragmat"; ++ pragmat = true; ++ } ++ } ++ ++ beg_s_length = (beg_s != NO_TEXT ? (int) strlen (beg_s) : 0); ++ term_s_length = (int) strlen (term_s); ++ ++ /* Scan for terminator. */ ++ bool nestable_comment = (beg_s != NO_TEXT); ++ int nesting_level = 1; ++ INIT_BUFFER; ++ stop = false; ++ while (stop == false) ++ { ++ SCAN_ERROR (c == STOP_CHAR, start_l, start_c, ++ "unterminated pragment"); ++ ++ /* A ".." or '..' delimited string in a PRAGMAT, or ++ a ".." in a nestable comment. */ ++ if ((pragmat && (c == QUOTE_CHAR || c == '\'')) ++ || (nestable_comment && c == QUOTE_CHAR)) ++ { ++ char delim = c; ++ bool eos = false; ++ ADD_ONE_CHAR (c); ++ c = next_char (ref_l, ref_c, false); ++ while (!eos) ++ { ++ SCAN_ERROR (EOL (c), start_l, start_c, ++ "string within pragment exceeds end of line"); ++ ++ if (c == delim) ++ { ++ ADD_ONE_CHAR (delim); ++ save_state (*ref_l, *ref_c, c); ++ c = next_char (ref_l, ref_c, false); ++ if (c == delim) ++ c = next_char (ref_l, ref_c, false); ++ else ++ { ++ restore_state (ref_l, ref_c, &c); ++ eos = true; ++ } ++ } ++ else if (ISPRINT (c)) ++ { ++ ADD_ONE_CHAR (c); ++ c = next_char (ref_l, ref_c, false); ++ } ++ else ++ unworthy (start_l, start_c, c); ++ } ++ } ++ else if (EOL (c)) ++ ADD_ONE_CHAR (NEWLINE_CHAR); ++ else if (ISPRINT (c) || ISSPACE (c)) ++ ADD_ONE_CHAR (c); ++ ++ if (nestable_comment && chars_in_buf >= beg_s_length) ++ { ++ /* If we find another instance of the nestable begin mark, bump the ++ nesting level and continue scanning. */ ++ if (strcmp (beg_s, ++ &(A68_PARSER (scan_buf)[chars_in_buf - beg_s_length])) == 0) ++ { ++ nesting_level += 1; ++ goto nextchar; ++ } ++ } ++ ++ if (chars_in_buf >= term_s_length) ++ { ++ /* Check whether we encountered the terminator. Mind nesting if ++ necessary. */ ++ if (strcmp (term_s, ++ &(A68_PARSER (scan_buf)[chars_in_buf - term_s_length])) == 0) ++ { ++ if (nestable_comment) ++ { ++ gcc_assert (nesting_level > 0); ++ nesting_level -= 1; ++ stop = (nesting_level == 0); ++ } ++ else ++ stop = true; ++ } ++ } ++ ++ nextchar: ++ c = next_char (ref_l, ref_c, false); ++ } ++ ++ A68_PARSER (scan_buf)[chars_in_buf - term_s_length] = '\0'; ++ z = a68_new_string (term_s, A68_PARSER (scan_buf), term_s, NO_TEXT); ++ return z; ++#undef ADD_ONE_CHAR ++#undef INIT_BUFFER ++} ++ ++/* Whether input shows exponent character. */ ++ ++static bool ++is_exp_char (LINE_T **ref_l, char **ref_s, char *ch) ++{ ++ bool ret = false; ++ ++ char exp_syms[3]; ++ ++ /* Note that this works for both UPPER and SUPPER stropping regimes. */ ++ exp_syms[0] = EXPONENT_CHAR; ++ exp_syms[1] = TOUPPER (EXPONENT_CHAR); ++ exp_syms[2] = '\0'; ++ ++ save_state (*ref_l, *ref_s, *ch); ++ if (strchr (exp_syms, *ch) != NO_TEXT) ++ { ++ *ch = next_char (ref_l, ref_s, true); ++ ret = (strchr ("+-0123456789", *ch) != NO_TEXT); ++ } ++ restore_state (ref_l, ref_s, ch); ++ return ret; ++} ++ ++/* Whether input shows radix character. */ ++ ++static bool ++is_radix_char (LINE_T **ref_l, char **ref_s, char *ch) ++{ ++ bool ret = false; ++ ++ save_state (*ref_l, *ref_s, *ch); ++ /* Note that this works for both UPPER and SUPPER stropping regimes. */ ++ if (*ch == RADIX_CHAR) ++ { ++ *ch = next_char (ref_l, ref_s, true); ++ ret = (strchr ("0123456789abcdef", *ch) != NO_TEXT); ++ } ++ restore_state (ref_l, ref_s, ch); ++ return ret; ++} ++ ++/* Whether input shows decimal point. */ ++ ++static bool ++is_decimal_point (LINE_T **ref_l, char **ref_s, char *ch) ++{ ++ bool ret = false; ++ ++ save_state (*ref_l, *ref_s, *ch); ++ if (*ch == POINT_CHAR) ++ { ++ char exp_syms[3]; ++ ++ /* Note that this works for both UPPER and SUPPER stropping regimes. */ ++ exp_syms[0] = EXPONENT_CHAR; ++ exp_syms[1] = TOUPPER (EXPONENT_CHAR); ++ exp_syms[2] = '\0'; ++ ++ *ch = next_char (ref_l, ref_s, true); ++ if (strchr (exp_syms, *ch) != NO_TEXT) ++ { ++ *ch = next_char (ref_l, ref_s, true); ++ ret = (strchr ("+-0123456789", *ch) != NO_TEXT); ++ } ++ else ++ ret = (strchr ("0123456789", *ch) != NO_TEXT); ++ } ++ restore_state (ref_l, ref_s, ch); ++ return ret; ++} ++ ++/* Attribute for format item. */ ++ ++static enum a68_attribute ++get_format_item (char ch) ++{ ++ switch (TOLOWER (ch)) ++ { ++ case 'a': ++ return FORMAT_ITEM_A; ++ case 'b': ++ return FORMAT_ITEM_B; ++ case 'c': ++ return FORMAT_ITEM_C; ++ case 'd': ++ return FORMAT_ITEM_D; ++ case 'e': ++ return FORMAT_ITEM_E; ++ case 'f': ++ return FORMAT_ITEM_F; ++ case 'g': ++ return FORMAT_ITEM_G; ++ case 'h': ++ return FORMAT_ITEM_H; ++ case 'i': ++ return FORMAT_ITEM_I; ++ case 'j': ++ return FORMAT_ITEM_J; ++ case 'k': ++ return FORMAT_ITEM_K; ++ case 'l': ++ case '/': ++ return FORMAT_ITEM_L; ++ case 'm': ++ return FORMAT_ITEM_M; ++ case 'n': ++ return FORMAT_ITEM_N; ++ case 'o': ++ return FORMAT_ITEM_O; ++ case 'p': ++ return FORMAT_ITEM_P; ++ case 'q': ++ return FORMAT_ITEM_Q; ++ case 'r': ++ return FORMAT_ITEM_R; ++ case 's': ++ return FORMAT_ITEM_S; ++ case 't': ++ return FORMAT_ITEM_T; ++ case 'u': ++ return FORMAT_ITEM_U; ++ case 'v': ++ return FORMAT_ITEM_V; ++ case 'w': ++ return FORMAT_ITEM_W; ++ case 'x': ++ return FORMAT_ITEM_X; ++ case 'y': ++ return FORMAT_ITEM_Y; ++ case 'z': ++ return FORMAT_ITEM_Z; ++ case '+': ++ return FORMAT_ITEM_PLUS; ++ case '-': ++ return FORMAT_ITEM_MINUS; ++ case POINT_CHAR: ++ return FORMAT_ITEM_POINT; ++ case '%': ++ return FORMAT_ITEM_ESCAPE; ++ default: ++ return STOP; ++ } ++} ++ ++/* Get next token from internal copy of source file. ++ ++ The kind of token is set via the passed pointer ATTR. ++ The contents of token is set in the scan_buf via SYM. ++ ++ The recognized tokens are, by reported ATTR: ++ ++ ++ End of file. ++ FORMAT_ITEM_* ++ Item in a format. ++ STATIC_REPLICATOR ++ INT denotation for a static replicator in a format. ++ BOLD_TAG ++ Bold tag. ++ IDENTIFIER ++ A "lower case" identifier. ++ IDENTIFIER_WITH_UNDERSCORES ++ A "lower case" identifier whose's at least one taggle ++ was found adjacent to an underscore. ++ REAL_DENOTATION ++ A REAL denotation. ++ POINT_SYMBOL ++ . ++ BITS_DENOTATION ++ A BITS denotation like 16rffff ++ INT_DENOTATION ++ An INT denotation. ++ ROW_CHAR_DENOTATION ++ A STRING denotation. ++ LITERAL ++ A literal denotation in a format. ++ STOP ++ Single-character symbols #$()[]{},;@|: ++ := /= :=: :/=: ++ The character is placed in SYM. ++ EQUALS_SYMBOL ++ The equality symbol. ++ OPERATOR ++ A predefined operator. ++*/ ++ ++static void ++get_next_token (bool in_format, ++ LINE_T **ref_l, char **ref_s, ++ LINE_T **start_l, char **start_c, enum a68_attribute *att) ++{ ++ char c = **ref_s; ++ char *sym = A68_PARSER (scan_buf); ++ ++ sym[0] = '\0'; ++ get_good_char (&c, ref_l, ref_s); ++ *start_l = *ref_l; ++ *start_c = *ref_s; ++ if (c == STOP_CHAR) ++ { ++ /* We are at EOF. */ ++ (sym++)[0] = STOP_CHAR; ++ sym[0] = '\0'; ++ return; ++ } ++ ++ if (in_format) ++ { ++ /* In a format. */ ++ const char *format_items = "/%\\+-.abcdefghijklmnopqrstuvwxyz"; ++ if (strchr (format_items, c) != NO_TEXT) ++ { ++ /* General format items. */ ++ (sym++)[0] = c; ++ sym[0] = NULL_CHAR; ++ *att = get_format_item (c); ++ (void) next_char (ref_l, ref_s, false); ++ return; ++ } ++ if (ISDIGIT (c)) ++ { ++ /* INT denotation for static replicator. */ ++ SCAN_DIGITS (c); ++ sym[0] = NULL_CHAR; ++ *att = STATIC_REPLICATOR; ++ return; ++ } ++ } ++ ++ if (ISUPPER (c)) ++ { ++ /* Bold taggles are enabled only in gnu68. */ ++ bool allow_one_under = !OPTION_STRICT (&A68_JOB); ++ ++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) ++ { ++ /* In UPPER stropping a bold tag is an upper case word. */ ++ while (ISUPPER (c)) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false, allow_one_under); ++ } ++ sym[0] = '\0'; ++ *att = BOLD_TAG; ++ } ++ else ++ { ++ /* In SUPPER stropping a bold tag is a capitalized word that may ++ contain letters and digits. */ ++ while (ISALPHA (c) || ISDIGIT (c)) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false, allow_one_under); ++ } ++ sym[0] = '\0'; ++ *att = BOLD_TAG; ++ } ++ } ++ else if (ISLOWER (c)) ++ { ++ /* In both UPPER and SUPPER stropping regimes a tag is a lower case word ++ which may contain letters and digits. ++ ++ In SUPPER stropping, however, it is not allowed to have blanks ++ separating the taggles within tags. */ ++ ++ bool allow_one_under = true; ++ bool found_under = false; ++ bool allow_typo = OPTION_STROPPING (&A68_JOB) != SUPPER_STROPPING; ++ ++ /* Lower case word - identifier. */ ++ while (ISLOWER (c) || ISDIGIT (c)) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, allow_typo, allow_one_under, ++ &found_under); ++ } ++ ++ sym[0] = '\0'; ++ *att = found_under ? IDENTIFIER_WITH_UNDERSCORES : IDENTIFIER; ++ } ++ else if (c == POINT_CHAR) ++ { ++ /* Begins with a point symbol - point, L REAL denotation. */ ++ if (is_decimal_point (ref_l, ref_s, &c)) ++ { ++ (sym++)[0] = '0'; ++ (sym++)[0] = POINT_CHAR; ++ c = next_char (ref_l, ref_s, true); ++ SCAN_DIGITS (c); ++ if (is_exp_char (ref_l, ref_s, &c)) ++ SCAN_EXPONENT_PART (c); ++ sym[0] = '\0'; ++ *att = REAL_DENOTATION; ++ } ++ else ++ { ++ c = next_char (ref_l, ref_s, true); ++ (sym++)[0] = POINT_CHAR; ++ sym[0] = '\0'; ++ *att = POINT_SYMBOL; ++ } ++ } ++ else if (ISDIGIT (c)) ++ { ++ /* Something that begins with a digit: ++ L INT denotation, L REAL denotation. */ ++ SCAN_DIGITS (c); ++ ++ if (is_decimal_point (ref_l, ref_s, &c)) ++ { ++ c = next_char (ref_l, ref_s, true); ++ if (is_exp_char (ref_l, ref_s, &c)) ++ { ++ (sym++)[0] = POINT_CHAR; ++ (sym++)[0] = '0'; ++ SCAN_EXPONENT_PART (c); ++ *att = REAL_DENOTATION; ++ } ++ else ++ { ++ (sym++)[0] = POINT_CHAR; ++ SCAN_DIGITS (c); ++ if (is_exp_char (ref_l, ref_s, &c)) ++ SCAN_EXPONENT_PART (c); ++ *att = REAL_DENOTATION; ++ } ++ } ++ else if (is_exp_char (ref_l, ref_s, &c)) ++ { ++ SCAN_EXPONENT_PART (c); ++ *att = REAL_DENOTATION; ++ } ++ else if (is_radix_char (ref_l, ref_s, &c)) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, true); ++ /* This is valid for both UPPER and SUPPER stropping. */ ++ while (ISDIGIT (c) || strchr ("abcdef", c) != NO_TEXT) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, true); ++ } ++ *att = BITS_DENOTATION; ++ } ++ else ++ { ++ *att = INT_DENOTATION; ++ } ++ sym[0] = '\0'; ++ } ++ else if (c == QUOTE_CHAR) ++ { ++ /* STRING denotation. */ ++ bool stop = false; ++ ++ while (!stop) ++ { ++ c = next_char (ref_l, ref_s, false); ++ while (c != QUOTE_CHAR && c != STOP_CHAR) ++ { ++ if (c == APOSTROPHE_CHAR) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ switch (c) ++ { ++ case APOSTROPHE_CHAR: ++ case 'n': ++ case 'f': ++ case 'r': ++ case 't': ++ (sym++)[0] = c; ++ break; ++ case '(': ++ { ++ unsigned int num_code_points = 0; ++ ++ (sym++)[0] = c; ++ /* Process code points. */ ++ while (1) ++ { ++ /* Skip white spaces. */ ++ while (1) ++ { ++ c = next_char (ref_l, ref_s, false); ++ if (!ISSPACE (c)) ++ break; ++ } ++ ++ /* See if we are done. */ ++ if (c == ')') ++ { ++ SCAN_ERROR (num_code_points == 0, *start_l, *ref_s, ++ "expected at least one character point in string break"); ++ (sym++)[0] = c; ++ break; ++ } ++ else if (c == 'u' || c == 'U') ++ { ++ (sym++)[0] = c; ++ /* Process a code point. */ ++ char u = c; ++ int numdigits = (u == 'u' ? 4 : 8); ++ char *startpos = *ref_s; ++ int i = 0; ++ do ++ { ++ c = next_char (ref_l, ref_s, false); ++ if (!(ISDIGIT (c) ++ || ((c >= 'a') && (c <= 'f')) ++ || ((c >= 'A') && (c <= 'F')))) ++ { ++ SCAN_ERROR (true, *start_l, startpos, ++ (u == 'u' ++ ? "expected four hex digits in \ ++string break character point" ++ : "expected eight hex digits in \ ++string break character point")); ++ } ++ (sym++)[0] = c; ++ i += 1; ++ } ++ while (i < numdigits); ++ ++ /* Skip white spaces. */ ++ while (1) ++ { ++ c = next_char (ref_l, ref_s, false); ++ if (!ISSPACE (c)) ++ break; ++ } ++ ++ /* Comma or end of list. */ ++ if (c == ')') ++ { ++ (sym++)[0] = c; ++ break; ++ } ++ ++ SCAN_ERROR (c != ',', *start_l, *ref_s, ++ "expected , or ) in string break"); ++ } ++ else ++ { ++ SCAN_ERROR (true, *start_l, *ref_s, ++ "unterminated list of character codes"); ++ } ++ } ++ break; ++ } ++ default: ++ SCAN_ERROR (true, *start_l, *ref_s, "invalid string break sequence"); ++ } ++ } ++ else ++ { ++ SCAN_ERROR (EOL (c), *start_l, *start_c, "string exceeds end of line"); ++ (sym++)[0] = c; ++ } ++ c = next_char (ref_l, ref_s, false); ++ } ++ SCAN_ERROR (*ref_l == NO_LINE, *start_l, *start_c, "unterminated string"); ++ c = next_char (ref_l, ref_s, false); ++ if (c == QUOTE_CHAR) ++ (sym++)[0] = QUOTE_CHAR; ++ else ++ stop = true; ++ } ++ sym[0] = '\0'; ++ *att = (in_format ? LITERAL : ROW_CHAR_DENOTATION); ++ } ++ else if (strchr ("#$()[]{},;@", c) != NO_TEXT) ++ { ++ /* Single character symbols. */ ++ (sym++)[0] = c; ++ (void) next_char (ref_l, ref_s, false); ++ sym[0] = '\0'; ++ *att = STOP; ++ } ++ else if (c == '|') ++ { ++ /* Bar. */ ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ if (c == ':') ++ { ++ (sym++)[0] = c; ++ (void) next_char (ref_l, ref_s, false); ++ } ++ sym[0] = '\0'; ++ *att = STOP; ++ } ++ else if (c == ':') ++ { ++ /* Colon, semicolon, IS, ISNT. */ ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ if (c == '=') ++ { ++ (sym++)[0] = c; ++ if ((c = next_char (ref_l, ref_s, false)) == ':') ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ } ++ } ++ else if (c == '/') ++ { ++ (sym++)[0] = c; ++ if ((c = next_char (ref_l, ref_s, false)) == '=') ++ { ++ (sym++)[0] = c; ++ if ((c = next_char (ref_l, ref_s, false)) == ':') ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ } ++ } ++ } ++ else if (c == ':') ++ { ++ (sym++)[0] = c; ++ if ((c = next_char (ref_l, ref_s, false)) == '=') ++ (sym++)[0] = c; ++ } ++ ++ sym[0] = '\0'; ++ *att = STOP; ++ ++ } ++ else if (c == '=') ++ { ++ /* Operator starting with "=". */ ++ char *scanned = sym; ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ if (strchr (NOMADS, c) != NO_TEXT) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ } ++ if (c == '=') ++ { ++ (sym++)[0] = c; ++ if (next_char (ref_l, ref_s, false) == ':') ++ { ++ (sym++)[0] = ':'; ++ c = next_char (ref_l, ref_s, false); ++ if (strlen (sym) < 4 && c == '=') ++ { ++ (sym++)[0] = '='; ++ (void) next_char (ref_l, ref_s, false); ++ } ++ } ++ } ++ else if (c == ':') ++ { ++ (sym++)[0] = c; ++ sym[0] = '\0'; ++ if (next_char (ref_l, ref_s, false) == '=') ++ { ++ (sym++)[0] = '='; ++ (void) next_char (ref_l, ref_s, false); ++ } ++ else ++ { ++ SCAN_ERROR (!(strcmp (scanned, "=:") == 0 || strcmp (scanned, "==:") == 0), ++ *start_l, *start_c, "invalid operator tag"); ++ } ++ } ++ sym[0] = '\0'; ++ if (strcmp (scanned, "=") == 0) ++ *att = EQUALS_SYMBOL; ++ else ++ *att = OPERATOR; ++ } ++ else if (strchr (MONADS, c) != NO_TEXT || strchr (NOMADS, c) != NO_TEXT) ++ { ++ /* Operator. */ ++ char *scanned = sym; ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ if (strchr (NOMADS, c) != NO_TEXT) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ } ++ if (c == '=') ++ { ++ (sym++)[0] = c; ++ if (next_char (ref_l, ref_s, false) == ':') ++ { ++ (sym++)[0] = ':'; ++ c = next_char (ref_l, ref_s, false); ++ if (strlen (scanned) < 4 && c == '=') ++ { ++ (sym++)[0] = '='; ++ (void) next_char (ref_l, ref_s, false); ++ } ++ } ++ } ++ else if (c == ':') ++ { ++ (sym++)[0] = c; ++ sym[0] = '\0'; ++ if (next_char (ref_l, ref_s, false) == '=') ++ { ++ (sym++)[0] = '='; ++ sym[0] = '\0'; ++ (void) next_char (ref_l, ref_s, false); ++ } ++ else ++ { ++ SCAN_ERROR (strcmp (&(scanned[1]), "=:") != 0, ++ *start_l, *start_c, "invalid operator tag"); ++ } ++ } ++ sym[0] = '\0'; ++ *att = OPERATOR; ++ } ++ else ++ { ++ /* Afuuus ... strange characters!. */ ++ unworthy (*start_l, *start_c, (int) c); ++ } ++} ++ ++/* Whether att opens an embedded clause. */ ++ ++static bool ++open_nested_clause (int att) ++{ ++ switch (att) ++ { ++ case OPEN_SYMBOL: ++ case BEGIN_SYMBOL: ++ case PAR_SYMBOL: ++ case IF_SYMBOL: ++ case CASE_SYMBOL: ++ case FOR_SYMBOL: ++ case FROM_SYMBOL: ++ case BY_SYMBOL: ++ case TO_SYMBOL: ++ case WHILE_SYMBOL: ++ case DO_SYMBOL: ++ case SUB_SYMBOL: ++ return true; ++ } ++ return false; ++} ++ ++/* Whether att closes an embedded clause. */ ++ ++static bool ++close_nested_clause (int att) ++{ ++ switch (att) ++ { ++ case CLOSE_SYMBOL: ++ case END_SYMBOL: ++ case FI_SYMBOL: ++ case ESAC_SYMBOL: ++ case OD_SYMBOL: ++ case BUS_SYMBOL: ++ return true; ++ } ++ return false; ++} ++ ++/* Cast a string to lower case. */ ++ ++static void ++make_lower_case (char *p) ++{ ++ for (; p != NO_TEXT && p[0] != '\0'; p++) ++ p[0] = TOLOWER (p[0]); ++} ++ ++/* Cast a string to upper case. */ ++ ++static void ++make_upper_case (char *p) ++{ ++ for (; p != NO_TEXT && p[0] != '\0'; p++) ++ p[0] = TOUPPER (p[0]); ++} ++ ++/* Construct a linear list of tokens. */ ++ ++static void ++tokenise_source (NODE_T **root, int level, bool in_format, ++ LINE_T **l, char **s, LINE_T **start_l, ++ char **start_c) ++{ ++ char *pragmat_lpr = NO_TEXT; ++ int pragmat_lprt = 0; ++ LINE_T *pragmat_lprl = NO_LINE; ++ char *pragmat_lprc = NULL; ++ ++ char *comment_lpr = NO_TEXT; ++ int comment_lprt = 0; ++ LINE_T *comment_lprl = NO_LINE; ++ char *comment_lprc = NULL; ++ ++ while (l != NO_VAR && !A68_PARSER (stop_scanner)) ++ { ++ enum a68_attribute att = STOP; ++ get_next_token (in_format, l, s, start_l, start_c, &att); ++ ++ if (A68_PARSER (scan_buf)[0] == STOP_CHAR) ++ A68_PARSER (stop_scanner) = true; ++ else if (strlen (A68_PARSER (scan_buf)) > 0 || att == ROW_CHAR_DENOTATION || att == LITERAL) ++ { ++ KEYWORD_T *kw; ++ const char *c = NO_TEXT; ++ bool make_node = true; ++ const char *trailing = NO_TEXT; ++ ++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) ++ { ++ /* In UPPER stropping all symbols in R9.4.1 are expressed as bold ++ tags like "BEGIN", or symbols like "@". */ ++ ++ /* In this stropping regime there is no need to handle ++ identifiers for which taggles were adjacent to underscores ++ specially. */ ++ if (att != IDENTIFIER && att != IDENTIFIER_WITH_UNDERSCORES) ++ kw = a68_find_keyword (A68 (top_keyword), A68_PARSER (scan_buf)); ++ else ++ kw = NO_KEYWORD; ++ } ++ else ++ { ++ /* In SUPPER stropping all symbols in R9.4.1 are expressed as ++ tags like "begin", or symbols like "@". */ ++ ++ /* Normalize bold tags to all upper-case letters. */ ++ if (att == BOLD_TAG) ++ make_upper_case (A68_PARSER (scan_buf)); ++ ++ /* If any of the taggles of the scanned identifier were adjacent ++ to an underscore, that inhibits interpreting it as a ++ keyword. */ ++ if (att != BOLD_TAG && att != IDENTIFIER_WITH_UNDERSCORES) ++ kw = a68_find_keyword (A68 (top_keyword), A68_PARSER (scan_buf)); ++ else ++ kw = NO_KEYWORD; ++ } ++ ++ /* Beyond this point it is irrelevant whether an identifier had ++ taggles adjacent to an underscore. */ ++ if (att == IDENTIFIER_WITH_UNDERSCORES) ++ att = IDENTIFIER; ++ ++ if (kw == NO_KEYWORD || att == ROW_CHAR_DENOTATION) ++ { ++ if (att == IDENTIFIER) ++ make_lower_case (A68_PARSER (scan_buf)); ++ if (att != ROW_CHAR_DENOTATION && att != LITERAL) ++ { ++ size_t len = strlen (A68_PARSER (scan_buf)); ++ while (len >= 1 && A68_PARSER (scan_buf)[len - 1] == '_') ++ { ++ trailing = "_"; ++ A68_PARSER (scan_buf)[len - 1] = NULL_CHAR; ++ len--; ++ } ++ } ++ c = TEXT (a68_add_token (&A68 (top_token), A68_PARSER (scan_buf))); ++ } ++ else ++ { ++ if (IS (kw, TO_SYMBOL)) ++ { ++ /* Merge GO and TO to GOTO. */ ++ if (*root != NO_NODE && IS (*root, GO_SYMBOL)) ++ { ++ ATTRIBUTE (*root) = GOTO_SYMBOL; ++ NSYMBOL (*root) = TEXT (a68_find_keyword (A68 (top_keyword), "GOTO")); ++ make_node = false; ++ } ++ else ++ { ++ att = ATTRIBUTE (kw); ++ c = TEXT (kw); ++ } ++ } ++ else ++ { ++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) ++ { ++ if (att == 0 || att == BOLD_TAG) ++ att = ATTRIBUTE (kw); ++ } ++ else ++ { ++ if (att == 0 || att == IDENTIFIER) ++ att = ATTRIBUTE (kw); ++ } ++ ++ c = TEXT (kw); ++ /* Handle pragments. */ ++ if (att == STYLE_II_COMMENT_SYMBOL ++ || att == STYLE_I_COMMENT_SYMBOL ++ || att == BOLD_COMMENT_SYMBOL ++ || att == BOLD_COMMENT_BEGIN_SYMBOL ++ || att == BRIEF_COMMENT_BEGIN_SYMBOL) ++ { ++ char *nlpr = pragment (ATTRIBUTE (kw), l, s); ++ ++ if (comment_lpr == NO_TEXT ++ || (int) strlen (comment_lpr) == 0) ++ comment_lpr = nlpr; ++ else ++ { ++ char *stale = comment_lpr; ++ comment_lpr ++ = a68_new_string (comment_lpr, "n\n", nlpr, NO_TEXT); ++ free (stale); ++ } ++ comment_lprt = att; ++ comment_lprl = *start_l; ++ comment_lprc = *start_c; ++ make_node = false; ++ } ++ else if (att == STYLE_I_PRAGMAT_SYMBOL ++ || att == BOLD_PRAGMAT_SYMBOL) ++ { ++ char *nlpr = pragment (ATTRIBUTE (kw), l, s); ++ if (pragmat_lpr == NO_TEXT ++ || (int) strlen (pragmat_lpr) == 0) ++ pragmat_lpr = nlpr; ++ else ++ { ++ char *stale = pragmat_lpr; ++ pragmat_lpr ++ = a68_new_string (pragmat_lpr, " ", nlpr, NO_TEXT); ++ free (stale); ++ } ++ pragmat_lprt = att; ++ pragmat_lprl = *start_l; ++ pragmat_lprc = *start_c; ++ if (!A68_PARSER (stop_scanner)) ++ make_node = false; ++ } ++ } ++ } ++ /* Add token to the tree. */ ++ if (make_node) ++ { ++ NODE_T *q = a68_new_node (); ++ INFO (q) = a68_new_node_info (); ++ ++ switch (att) ++ { ++ case ASSIGN_SYMBOL: ++ case END_SYMBOL: ++ case ESAC_SYMBOL: ++ case OD_SYMBOL: ++ case OF_SYMBOL: ++ case FI_SYMBOL: ++ case CLOSE_SYMBOL: ++ case BUS_SYMBOL: ++ case COLON_SYMBOL: ++ case COMMA_SYMBOL: ++ case SEMI_SYMBOL: ++ GINFO (q) = NO_GINFO; ++ break; ++ default: ++ GINFO (q) = a68_new_genie_info (); ++ break; ++ } ++ ++ STATUS (q) = (STATUS_MASK_T) 0; ++ LINE (INFO (q)) = *start_l; ++ CHAR_IN_LINE (INFO (q)) = *start_c; ++ PRIO (INFO (q)) = 0; ++ PROCEDURE_LEVEL (INFO (q)) = 0; ++ ATTRIBUTE (q) = att; ++ NSYMBOL (q) = c; ++ PREVIOUS (q) = *root; ++ SUB (q) = NEXT (q) = NO_NODE; ++ TABLE (q) = NO_TABLE; ++ MOID (q) = NO_MOID; ++ TAX (q) = NO_TAG; ++ if (pragmat_lpr != NO_TEXT) ++ { ++ NPRAGMAT (q) = pragmat_lpr; ++ NPRAGMAT_TYPE (q) = pragmat_lprt; ++ NPRAGMAT_LINE (q) = pragmat_lprl; ++ NPRAGMAT_CHAR_IN_LINE (q) = pragmat_lprc; ++ pragmat_lpr = NO_TEXT; ++ pragmat_lprt = 0; ++ } ++ if (comment_lpr != NO_TEXT) ++ { ++ NCOMMENT (q) = comment_lpr; ++ NCOMMENT_TYPE (q) = comment_lprt; ++ NCOMMENT_LINE (q) = comment_lprl; ++ NCOMMENT_CHAR_IN_LINE (q) = comment_lprc; ++ comment_lpr = NO_TEXT; ++ comment_lprt = 0; ++ } ++ if (*root != NO_NODE) ++ NEXT (*root) = q; ++ if (TOP_NODE (&A68_JOB) == NO_NODE) ++ TOP_NODE (&A68_JOB) = q; ++ *root = q; ++ if (trailing != NO_TEXT) ++ a68_warning (q, 0, ++ "ignoring trailing character H in A", ++ trailing, att); ++ } ++ /* Redirection in tokenising formats. The scanner is a recursive-descent type as ++ to know when it scans a format text and when not. */ ++ if (in_format && att == FORMAT_DELIMITER_SYMBOL) ++ return; ++ else if (!in_format && att == FORMAT_DELIMITER_SYMBOL) ++ tokenise_source (root, level + 1, true, l, s, start_l, start_c); ++ else if (in_format && open_nested_clause (att)) ++ { ++ NODE_T *z = PREVIOUS (*root); ++ ++ if (z != NO_NODE && a68_is_one_of (z, FORMAT_ITEM_N, FORMAT_ITEM_G, FORMAT_ITEM_H, ++ FORMAT_ITEM_F, STOP)) ++ { ++ tokenise_source (root, level, false, l, s, start_l, start_c); ++ } ++ else if (att == OPEN_SYMBOL) ++ ATTRIBUTE (*root) = FORMAT_OPEN_SYMBOL; ++ else if (OPTION_BRACKETS (&A68_JOB) && att == SUB_SYMBOL) ++ ATTRIBUTE (*root) = FORMAT_OPEN_SYMBOL; ++ } ++ else if (!in_format && level > 0 && open_nested_clause (att)) ++ tokenise_source (root, level + 1, false, l, s, start_l, start_c); ++ else if (!in_format && level > 0 && close_nested_clause (att)) ++ return; ++ else if (in_format && att == CLOSE_SYMBOL) ++ ATTRIBUTE (*root) = FORMAT_CLOSE_SYMBOL; ++ else if (OPTION_BRACKETS (&A68_JOB) && in_format && att == BUS_SYMBOL) ++ ATTRIBUTE (*root) = FORMAT_CLOSE_SYMBOL; ++ } ++ } ++} ++ ++/* Tokenise source file, build initial syntax tree. */ ++ ++bool ++a68_lexical_analyser (const char *filename) ++{ ++ LINE_T *l = NO_LINE, *start_l = NO_LINE; ++ char *s = NO_TEXT, *start_c = NO_TEXT; ++ NODE_T *root = NO_NODE; ++ ++ /* Read the source file into lines. */ ++ if (!read_source_file (filename)) ++ return false; ++ ++ /* Start tokenising. */ ++ A68_PARSER (stop_scanner) = false; ++ if ((l = TOP_LINE (&A68_JOB)) != NO_LINE) ++ s = STRING (l); ++ tokenise_source (&root, 0, false, &l, &s, &start_l, &start_c); ++ ++ /* If the source is a prelude packet then we should remove the prelude and ++ postlude nodes from the token stream. We distinguish these nodes by ++ location. ++ ++ Yes this is crude and creepy but it works and it is less annoying than not ++ adding the prelude/postlude in read_source_file and I got other fish to ++ fry at this moment. Somebody please fix this in a decent way, thanks - ++ jemarch. */ ++ ++ NODE_T *p = TOP_NODE (&A68_JOB); ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ LINE_T *l = LINE (INFO (p)); ++ if (strcmp (FILENAME (l), "prelude") != 0) ++ break; ++ } ++ ++ if (p != NO_NODE && IS (p, MODULE_SYMBOL)) ++ { ++ p = TOP_NODE (&A68_JOB); ++ while (p != NO_NODE) ++ { ++ LINE_T *l = LINE (INFO (p)); ++ if (strcmp (FILENAME (l), "prelude") == 0 ++ || strcmp (FILENAME (l), "postlude") == 0) ++ { ++ if (PREVIOUS (p) != NO_NODE) ++ NEXT (PREVIOUS (p)) = NEXT (p); ++ else ++ TOP_NODE (&A68_JOB) = NEXT (p); ++ ++ if (NEXT (p) != NO_NODE) ++ PREVIOUS (NEXT (p)) = PREVIOUS (p); ++ ++ NODE_T *next = NEXT (p); ++ p = next; ++ } ++ else ++ p = FORWARD (p); ++ } ++ } ++ ++ /* Note that A68_PARSER (scan_buf) and A68_PARSER (max_scan_buf_length) are ++ allocated by read_source_line. */ ++ free (A68_PARSER (scan_buf)); ++ A68_PARSER (scan_buf) = NULL; ++ A68_PARSER (max_scan_buf_length) = 0; ++ return true; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-scope.cc +@@ -0,0 +1,986 @@ ++/* Static scope checker. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* A static scope checker inspects the source. Note that ALGOL 68 also needs ++ dynamic scope checking. This phase concludes the parser. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++typedef struct TUPLE_T TUPLE_T; ++typedef struct SCOPE_T SCOPE_T; ++ ++struct TUPLE_T ++{ ++ int level; ++ bool transient; ++}; ++ ++struct SCOPE_T ++{ ++ NODE_T *where; ++ TUPLE_T tuple; ++ SCOPE_T *next; ++}; ++ ++enum { NOT_TRANSIENT = 0, TRANSIENT }; ++ ++static void gather_scopes_for_youngest (NODE_T *, SCOPE_T **); ++static void scope_statement (NODE_T *, SCOPE_T **); ++static void scope_enclosed_clause (NODE_T *, SCOPE_T **); ++static void scope_formula (NODE_T *, SCOPE_T **); ++static void scope_routine_text (NODE_T *, SCOPE_T **); ++ ++/* ++ * Static scope checker. ++ */ ++ ++/* Scope_make_tuple. */ ++ ++static TUPLE_T ++scope_make_tuple (int e, int t) ++{ ++ static TUPLE_T z; ++ LEVEL (&z) = e; ++ TRANSIENT (&z) = t; ++ return z; ++} ++ ++/* Link scope information into the list. */ ++ ++static void ++scope_add (SCOPE_T **sl, NODE_T *p, TUPLE_T tup) ++{ ++ if (sl != NO_VAR) ++ { ++ SCOPE_T *ns = (SCOPE_T *) xmalloc (sizeof (SCOPE_T)); ++ WHERE (ns) = p; ++ TUPLE (ns) = tup; ++ NEXT (ns) = *sl; ++ *sl = ns; ++ } ++} ++ ++/* Scope_check. */ ++ ++static bool ++scope_check (SCOPE_T *top, int mask, int dest) ++{ ++ int errors = 0; ++ ++ /* Transient names cannot be stored. */ ++ if (mask & TRANSIENT) ++ { ++ for (SCOPE_T *s = top; s != NO_SCOPE; FORWARD (s)) ++ { ++ if (TRANSIENT (&TUPLE (s)) & TRANSIENT) ++ { ++ a68_error (WHERE (s), "attempt at storing a transient name"); ++ STATUS_SET (WHERE (s), SCOPE_ERROR_MASK); ++ errors++; ++ } ++ } ++ } ++ ++ /* Potential scope violations. */ ++ for (SCOPE_T *s = top; s != NO_SCOPE; FORWARD (s)) ++ { ++ if (dest < LEVEL (&TUPLE (s)) && !STATUS_TEST (WHERE (s), SCOPE_ERROR_MASK)) ++ { ++ MOID_T *ws = MOID (WHERE (s)); ++ ++ if (ws != NO_MOID) ++ { ++ if (IS_REF (ws) || IS (ws, PROC_SYMBOL) || IS (ws, FORMAT_SYMBOL) || IS (ws, UNION_SYMBOL)) ++ a68_warning (WHERE (s), OPT_Wscope, "M A is a potential scope violation", ++ MOID (WHERE (s)), ATTRIBUTE (WHERE (s))); ++ } ++ STATUS_SET (WHERE (s), SCOPE_ERROR_MASK); ++ errors++; ++ } ++ } ++ return (errors == 0); ++} ++ ++/* Scope_check_multiple. */ ++ ++static bool ++scope_check_multiple (SCOPE_T *top, int mask, SCOPE_T *dest) ++{ ++ bool no_err = true; ++ ++ for (; dest != NO_SCOPE; FORWARD (dest)) ++ no_err = no_err && scope_check (top, mask, LEVEL (&TUPLE (dest))); ++ return no_err; ++} ++ ++/* Check_identifier_usage. */ ++ ++static void ++check_identifier_usage (TAG_T *t, NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, IDENTIFIER) && TAX (p) == t && ATTRIBUTE (MOID (t)) != PROC_SYMBOL) ++ a68_warning (p, OPT_Wuninitialized, "identifier S might be used uninitialised"); ++ check_identifier_usage (t, SUB (p)); ++ } ++} ++ ++/* Scope_find_youngest_outside. */ ++ ++static TUPLE_T ++scope_find_youngest_outside (SCOPE_T *s, int treshold) ++{ ++ TUPLE_T z = scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT); ++ ++ for (; s != NO_SCOPE; FORWARD (s)) ++ { ++ if (LEVEL (&TUPLE (s)) > LEVEL (&z) && LEVEL (&TUPLE (s)) <= treshold) ++ z = TUPLE (s); ++ } ++ return z; ++} ++ ++/* Scope_find_youngest. */ ++ ++static TUPLE_T ++scope_find_youngest (SCOPE_T *s) ++{ ++ return scope_find_youngest_outside (s, INT_MAX); ++} ++ ++/* ++ * Routines for determining scope of ROUTINE TEXT or FORMAT TEXT. ++ */ ++ ++/* Get_declarer_elements. */ ++ ++static void ++get_declarer_elements (NODE_T *p, SCOPE_T **r, bool no_ref) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, BOUNDS)) ++ gather_scopes_for_youngest (SUB (p), r); ++ else if (IS (p, INDICANT)) ++ { ++ if (MOID (p) != NO_MOID && TAX (p) != NO_TAG && HAS_ROWS (MOID (p)) && no_ref) ++ scope_add (r, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)), NOT_TRANSIENT)); ++ } ++ else if (IS_REF (p)) ++ get_declarer_elements (NEXT (p), r, false); ++ else if (a68_is_one_of (p, PROC_SYMBOL, UNION_SYMBOL, STOP)) ++ ; ++ else ++ { ++ get_declarer_elements (SUB (p), r, no_ref); ++ get_declarer_elements (NEXT (p), r, no_ref); ++ } ++ } ++} ++ ++/* Gather_scopes_for_youngest. */ ++ ++static void ++gather_scopes_for_youngest (NODE_T *p, SCOPE_T **s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if ((a68_is_one_of (p, ROUTINE_TEXT, FORMAT_TEXT, STOP)) ++ && (YOUNGEST_ENVIRON (TAX (p)) == PRIMAL_SCOPE)) ++ { ++ SCOPE_T *t = NO_SCOPE; ++ TUPLE_T tup; ++ ++ gather_scopes_for_youngest (SUB (p), &t); ++ tup = scope_find_youngest_outside (t, LEX_LEVEL (p)); ++ YOUNGEST_ENVIRON (TAX (p)) = LEVEL (&tup); ++ /* Direct link into list iso "gather_scopes_for_youngest (SUB (p), ++ s);". */ ++ if (t != NO_SCOPE) ++ { ++ SCOPE_T *u = t; ++ while (NEXT (u) != NO_SCOPE) { ++ FORWARD (u); ++ } ++ NEXT (u) = *s; ++ (*s) = t; ++ } ++ } ++ else if (a68_is_one_of (p, IDENTIFIER, OPERATOR, STOP)) ++ { ++ if (TAX (p) != NO_TAG && TAG_LEX_LEVEL (TAX (p)) != PRIMAL_SCOPE) ++ scope_add (s, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)), NOT_TRANSIENT)); ++ } ++ else if (IS (p, DECLARER)) ++ get_declarer_elements (p, s, true); ++ else ++ gather_scopes_for_youngest (SUB (p), s); ++ } ++} ++ ++/* Get_youngest_environs. */ ++ ++static void ++get_youngest_environs (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, ROUTINE_TEXT, FORMAT_TEXT, STOP)) ++ { ++ SCOPE_T *s = NO_SCOPE; ++ TUPLE_T tup; ++ gather_scopes_for_youngest (SUB (p), &s); ++ tup = scope_find_youngest_outside (s, LEX_LEVEL (p)); ++ YOUNGEST_ENVIRON (TAX (p)) = LEVEL (&tup); ++ } ++ else ++ get_youngest_environs (SUB (p)); ++ } ++} ++ ++/* Bind_scope_to_tag. */ ++ ++static void ++bind_scope_to_tag (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEFINING_IDENTIFIER) && MOID (p) == M_FORMAT) ++ { ++ if (IS (NEXT_NEXT (p), FORMAT_TEXT)) ++ { ++ SCOPE (TAX (p)) = YOUNGEST_ENVIRON (TAX (NEXT_NEXT (p))); ++ SCOPE_ASSIGNED (TAX (p)) = true; ++ } ++ return; ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ if (IS (NEXT_NEXT (p), ROUTINE_TEXT)) ++ { ++ SCOPE (TAX (p)) = YOUNGEST_ENVIRON (TAX (NEXT_NEXT (p))); ++ SCOPE_ASSIGNED (TAX (p)) = true; ++ } ++ return; ++ } ++ else ++ bind_scope_to_tag (SUB (p)); ++ } ++} ++ ++/* Bind_scope_to_tags. */ ++ ++static void ++bind_scope_to_tags (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, PROCEDURE_DECLARATION, IDENTITY_DECLARATION, STOP)) ++ bind_scope_to_tag (SUB (p)); ++ else ++ bind_scope_to_tags (SUB (p)); ++ } ++} ++ ++/* Scope_bounds. */ ++ ++static void ++scope_bounds (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ scope_statement (p, NO_VAR); ++ else ++ scope_bounds (SUB (p)); ++ } ++} ++ ++/* Scope_declarer. */ ++ ++static void ++scope_declarer (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, BOUNDS)) ++ scope_bounds (SUB (p)); ++ else if (IS (p, INDICANT)) ++ ; ++ else if (IS_REF (p)) ++ scope_declarer (NEXT (p)); ++ else if (a68_is_one_of (p, PROC_SYMBOL, UNION_SYMBOL, STOP)) ++ ; ++ else ++ { ++ scope_declarer (SUB (p)); ++ scope_declarer (NEXT (p)); ++ } ++ } ++} ++ ++/* Scope_identity_declaration. */ ++ ++static void ++scope_identity_declaration (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ scope_identity_declaration (SUB (p)); ++ ++ if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ NODE_T *unit = NEXT_NEXT (p); ++ SCOPE_T *s = NO_SCOPE; ++ TUPLE_T tup; ++ int z = PRIMAL_SCOPE; ++ ++ if (ATTRIBUTE (MOID (TAX (p))) != PROC_SYMBOL) ++ check_identifier_usage (TAX (p), unit); ++ scope_statement (unit, &s); ++ (void) scope_check (s, TRANSIENT, LEX_LEVEL (p)); ++ tup = scope_find_youngest (s); ++ z = LEVEL (&tup); ++ if (z < LEX_LEVEL (p)) ++ { ++ SCOPE (TAX (p)) = z; ++ SCOPE_ASSIGNED (TAX (p)) = true; ++ } ++ return; ++ } ++ } ++} ++ ++/* Scope_variable_declaration. */ ++ ++static void ++scope_variable_declaration (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ scope_variable_declaration (SUB (p)); ++ if (IS (p, DECLARER)) ++ scope_declarer (SUB (p)); ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ if (a68_whether (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP)) ++ { ++ NODE_T *unit = NEXT_NEXT (p); ++ SCOPE_T *s = NO_SCOPE; ++ check_identifier_usage (TAX (p), unit); ++ scope_statement (unit, &s); ++ (void) scope_check (s, TRANSIENT, LEX_LEVEL (p)); ++ return; ++ } ++ } ++ } ++} ++ ++/* Scope_procedure_declaration. */ ++ ++static void ++scope_procedure_declaration (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ scope_procedure_declaration (SUB (p)); ++ ++ if (a68_is_one_of (p, DEFINING_IDENTIFIER, DEFINING_OPERATOR, STOP)) ++ { ++ NODE_T *unit = NEXT_NEXT (p); ++ SCOPE_T *s = NO_SCOPE; ++ ++ scope_statement (unit, &s); ++ (void) scope_check (s, NOT_TRANSIENT, LEX_LEVEL (p)); ++ return; ++ } ++ } ++} ++ ++/* Scope_declaration_list. */ ++ ++static void ++scope_declaration_list (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, IDENTITY_DECLARATION)) ++ scope_identity_declaration (SUB (p)); ++ else if (IS (p, VARIABLE_DECLARATION)) ++ scope_variable_declaration (SUB (p)); ++ else if (IS (p, MODE_DECLARATION)) ++ scope_declarer (SUB (p)); ++ else if (IS (p, PRIORITY_DECLARATION)) ++ ; ++ else if (IS (p, PROCEDURE_DECLARATION)) ++ scope_procedure_declaration (SUB (p)); ++ else if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) ++ scope_procedure_declaration (SUB (p)); ++ else if (a68_is_one_of (p, BRIEF_OPERATOR_DECLARATION, OPERATOR_DECLARATION, STOP)) ++ scope_procedure_declaration (SUB (p)); ++ else ++ { ++ scope_declaration_list (SUB (p)); ++ scope_declaration_list (NEXT (p)); ++ } ++ } ++} ++ ++/* Scope_arguments. */ ++ ++static void ++scope_arguments (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ { ++ SCOPE_T *s = NO_SCOPE; ++ scope_statement (p, &s); ++ (void) scope_check (s, TRANSIENT, LEX_LEVEL (p)); ++ } ++ else ++ scope_arguments (SUB (p)); ++ } ++} ++ ++/* Is_coercion. */ ++ ++static bool ++is_coercion (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case DEPROCEDURING: ++ case DEREFERENCING: ++ case UNITING: ++ case ROWING: ++ case WIDENING: ++ case VOIDING: ++ case PROCEDURING: ++ return true; ++ default: ++ return false; ++ } ++ } ++ else ++ return false; ++} ++ ++/* Scope_coercion. */ ++ ++static void ++scope_coercion (NODE_T *p, SCOPE_T **s) ++{ ++ if (is_coercion (p)) ++ { ++ if (IS (p, VOIDING)) ++ scope_coercion (SUB (p), NO_VAR); ++ else if (IS (p, DEREFERENCING)) ++ /* Leave this to the dynamic scope checker. */ ++ scope_coercion (SUB (p), NO_VAR); ++ else if (IS (p, DEPROCEDURING)) ++ scope_coercion (SUB (p), NO_VAR); ++ else if (IS (p, ROWING)) ++ { ++ SCOPE_T *z = NO_SCOPE; ++ ++ scope_coercion (SUB (p), &z); ++ (void) scope_check (z, TRANSIENT, LEX_LEVEL (p)); ++ if (IS_REF_FLEX (MOID (SUB (p)))) ++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), TRANSIENT)); ++ else ++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), NOT_TRANSIENT)); ++ } ++ else if (IS (p, PROCEDURING)) ++ { ++ /* Can only be a JUMP. */ ++ NODE_T *q = SUB_SUB (p); ++ if (IS (q, GOTO_SYMBOL)) ++ FORWARD (q); ++ ++ scope_add (s, q, scope_make_tuple (TAG_LEX_LEVEL (TAX (q)), NOT_TRANSIENT)); ++ } ++ else if (IS (p, UNITING)) ++ { ++ SCOPE_T *z = NO_SCOPE; ++ ++ scope_coercion (SUB (p), &z); ++ if (z != NO_SCOPE) ++ { ++ (void) scope_check (z, TRANSIENT, LEX_LEVEL (p)); ++ scope_add (s, p, scope_find_youngest (z)); ++ } ++ } ++ else ++ scope_coercion (SUB (p), s); ++ } ++ else ++ scope_statement (p, s); ++} ++ ++/* Scope_format_text. */ ++ ++static void ++scope_format_text (NODE_T *p, SCOPE_T **s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, FORMAT_PATTERN)) ++ scope_enclosed_clause (SUB (NEXT_SUB (p)), s); ++ else if (IS (p, FORMAT_ITEM_G) && NEXT (p) != NO_NODE) ++ scope_enclosed_clause (SUB_NEXT (p), s); ++ else if (IS (p, DYNAMIC_REPLICATOR)) ++ scope_enclosed_clause (SUB (NEXT_SUB (p)), s); ++ else ++ scope_format_text (SUB (p), s); ++ } ++} ++ ++/* Scope_operand. */ ++ ++static void ++scope_operand (NODE_T *p, SCOPE_T **s) ++{ ++ if (IS (p, MONADIC_FORMULA)) ++ scope_operand (NEXT_SUB (p), s); ++ else if (IS (p, FORMULA)) ++ scope_formula (p, s); ++ else if (IS (p, SECONDARY)) ++ scope_statement (SUB (p), s); ++} ++ ++/* Scope_formula. */ ++ ++static void ++scope_formula (NODE_T *p, SCOPE_T **s) ++{ ++ NODE_T *q = SUB (p); ++ SCOPE_T *s2 = NO_SCOPE; ++ ++ scope_operand (q, &s2); ++ (void) scope_check (s2, TRANSIENT, LEX_LEVEL (p)); ++ if (NEXT (q) != NO_NODE) ++ { ++ SCOPE_T *s3 = NO_SCOPE; ++ scope_operand (NEXT_NEXT (q), &s3); ++ (void) scope_check (s3, TRANSIENT, LEX_LEVEL (p)); ++ } ++ (void) s; ++} ++ ++/* Scope_routine_text. */ ++ ++static void ++scope_routine_text (NODE_T *p, SCOPE_T **s) ++{ ++ NODE_T *q = SUB (p); ++ NODE_T *routine = (IS (q, PARAMETER_PACK) ? NEXT (q) : q); ++ SCOPE_T *x = NO_SCOPE; ++ ++ scope_statement (NEXT_NEXT (routine), &x); ++ (void) scope_check (x, TRANSIENT, LEX_LEVEL (p)); ++ TUPLE_T routine_tuple = scope_make_tuple (YOUNGEST_ENVIRON (TAX (p)), NOT_TRANSIENT); ++ scope_add (s, p, routine_tuple); ++} ++ ++/* Scope_statement. */ ++ ++static void ++scope_statement (NODE_T *p, SCOPE_T **s) ++{ ++ if (is_coercion (p)) ++ scope_coercion (p, s); ++ else if (a68_is_one_of (p, PRIMARY, SECONDARY, TERTIARY, UNIT, STOP)) ++ scope_statement (SUB (p), s); ++ else if (a68_is_one_of (p, NIHIL, STOP)) ++ scope_add (s, p, scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT)); ++ else if (IS (p, DENOTATION)) ++ ; ++ else if (IS (p, IDENTIFIER)) ++ { ++ if (IS_REF (MOID (p))) ++ { ++ if (PRIO (TAX (p)) == PARAMETER_IDENTIFIER) ++ scope_add (s, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)) - 1, NOT_TRANSIENT)); ++ else ++ { ++ if (HEAP (TAX (p)) == HEAP_SYMBOL) ++ scope_add (s, p, scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT)); ++ else if (SCOPE_ASSIGNED (TAX (p))) ++ scope_add (s, p, scope_make_tuple (SCOPE (TAX (p)), NOT_TRANSIENT)); ++ else ++ scope_add (s, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)), NOT_TRANSIENT)); ++ } ++ } ++ else if (ATTRIBUTE (MOID (p)) == PROC_SYMBOL && SCOPE_ASSIGNED (TAX (p)) == true) ++ scope_add (s, p, scope_make_tuple (SCOPE (TAX (p)), NOT_TRANSIENT)); ++ else if (MOID (p) == M_FORMAT && SCOPE_ASSIGNED (TAX (p)) == true) ++ scope_add (s, p, scope_make_tuple (SCOPE (TAX (p)), NOT_TRANSIENT)); ++ } ++ else if (IS (p, ENCLOSED_CLAUSE)) ++ scope_enclosed_clause (SUB (p), s); ++ else if (IS (p, CALL)) ++ { ++ SCOPE_T *x = NO_SCOPE; ++ ++ scope_statement (SUB (p), &x); ++ (void) scope_check (x, NOT_TRANSIENT, LEX_LEVEL (p)); ++ scope_arguments (NEXT_SUB (p)); ++ } ++ else if (IS (p, SLICE)) ++ { ++ SCOPE_T *x = NO_SCOPE; ++ MOID_T *m = MOID (SUB (p)); ++ ++ if (IS_REF (m)) ++ { ++ if (ATTRIBUTE (SUB (p)) == PRIMARY && ATTRIBUTE (SUB_SUB (p)) == SLICE) ++ scope_statement (SUB (p), s); ++ else ++ { ++ scope_statement (SUB (p), &x); ++ (void) scope_check (x, NOT_TRANSIENT, LEX_LEVEL (p)); ++ } ++ if (IS_FLEX (SUB (m))) ++ scope_add (s, SUB (p), scope_make_tuple (LEX_LEVEL (p), TRANSIENT)); ++ scope_bounds (SUB (NEXT_SUB (p))); ++ } ++ if (IS_REF (MOID (p))) ++ scope_add (s, p, scope_find_youngest (x)); ++ } ++ else if (IS (p, FORMAT_TEXT)) ++ { ++ SCOPE_T *x = NO_SCOPE; ++ scope_format_text (SUB (p), &x); ++ scope_add (s, p, scope_find_youngest (x)); ++ } ++ else if (IS (p, CAST)) ++ { ++ SCOPE_T *x = NO_SCOPE; ++ scope_enclosed_clause (SUB (NEXT_SUB (p)), &x); ++ (void) scope_check (x, NOT_TRANSIENT, LEX_LEVEL (p)); ++ scope_add (s, p, scope_find_youngest (x)); ++ } ++ else if (IS (p, SELECTION)) ++ { ++ SCOPE_T *ns = NO_SCOPE; ++ scope_statement (NEXT_SUB (p), &ns); ++ (void) scope_check (ns, NOT_TRANSIENT, LEX_LEVEL (p)); ++ if (a68_is_ref_refety_flex (MOID (NEXT_SUB (p)))) ++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), TRANSIENT)); ++ scope_add (s, p, scope_find_youngest (ns)); ++ } ++ else if (IS (p, GENERATOR)) ++ { ++ if (IS (SUB (p), LOC_SYMBOL)) ++ { ++ if (NON_LOCAL (p) != NO_TABLE) ++ scope_add (s, p, scope_make_tuple (LEVEL (NON_LOCAL (p)), NOT_TRANSIENT)); ++ else ++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), NOT_TRANSIENT)); ++ } ++ else ++ scope_add (s, p, scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT)); ++ scope_declarer (SUB (NEXT_SUB (p))); ++ } ++ else if (IS (p, FORMULA)) ++ scope_formula (p, s); ++ else if (IS (p, ASSIGNATION)) ++ { ++ NODE_T *unit = NEXT (NEXT_SUB (p)); ++ SCOPE_T *ns = NO_SCOPE, *nd = NO_SCOPE; ++ TUPLE_T tup; ++ scope_statement (SUB_SUB (p), &nd); ++ scope_statement (unit, &ns); ++ (void) scope_check_multiple (ns, TRANSIENT, nd); ++ tup = scope_find_youngest (nd); ++ scope_add (s, p, scope_make_tuple (LEVEL (&tup), NOT_TRANSIENT)); ++ } ++ else if (IS (p, ROUTINE_TEXT)) ++ scope_routine_text (p, s); ++ else if (a68_is_one_of (p, IDENTITY_RELATION, AND_FUNCTION, OR_FUNCTION, STOP)) ++ { ++ SCOPE_T *n = NO_SCOPE; ++ scope_statement (SUB (p), &n); ++ scope_statement (NEXT (NEXT_SUB (p)), &n); ++ (void) scope_check (n, NOT_TRANSIENT, LEX_LEVEL (p)); ++ } ++ else if (IS (p, ASSERTION)) ++ { ++ SCOPE_T *n = NO_SCOPE; ++ scope_enclosed_clause (SUB (NEXT_SUB (p)), &n); ++ (void) scope_check (n, NOT_TRANSIENT, LEX_LEVEL (p)); ++ } ++ else if (a68_is_one_of (p, JUMP, SKIP, STOP)) ++ { ++ ; ++ } ++} ++ ++/* Scope_statement_list. */ ++ ++static void ++scope_statement_list (NODE_T *p, SCOPE_T **s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ scope_statement (p, s); ++ else ++ scope_statement_list (SUB (p), s); ++ } ++} ++ ++/* Scope_serial_clause. */ ++ ++static void ++scope_serial_clause (NODE_T *p, SCOPE_T **s, bool terminator) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, INITIALISER_SERIES)) ++ { ++ scope_serial_clause (SUB (p), s, false); ++ scope_serial_clause (NEXT (p), s, terminator); ++ } ++ else if (IS (p, DECLARATION_LIST)) ++ scope_declaration_list (SUB (p)); ++ else if (a68_is_one_of (p, LABEL, SEMI_SYMBOL, EXIT_SYMBOL, STOP)) ++ scope_serial_clause (NEXT (p), s, terminator); ++ else if (a68_is_one_of (p, SERIAL_CLAUSE, ENQUIRY_CLAUSE, STOP)) ++ { ++ if (NEXT (p) != NO_NODE) ++ { ++ int j = ATTRIBUTE (NEXT (p)); ++ if (j == EXIT_SYMBOL || j == END_SYMBOL || j == CLOSE_SYMBOL) ++ scope_serial_clause (SUB (p), s, true); ++ else ++ scope_serial_clause (SUB (p), s, false); ++ } ++ else ++ scope_serial_clause (SUB (p), s, true); ++ scope_serial_clause (NEXT (p), s, terminator); ++ } ++ else if (IS (p, LABELED_UNIT)) ++ scope_serial_clause (SUB (p), s, terminator); ++ else if (IS (p, UNIT)) ++ { ++ if (terminator) ++ scope_statement (p, s); ++ else ++ scope_statement (p, NO_VAR); ++ } ++ } ++} ++ ++/* Scope_closed_clause. */ ++ ++static void ++scope_closed_clause (NODE_T *p, SCOPE_T **s) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, SERIAL_CLAUSE)) ++ scope_serial_clause (p, s, true); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) ++ scope_closed_clause (NEXT (p), s); ++ } ++} ++ ++/* Scope_collateral_clause. */ ++ ++static void ++scope_collateral_clause (NODE_T *p, SCOPE_T **s) ++{ ++ if (p != NO_NODE) ++ { ++ if (!(a68_whether (p, BEGIN_SYMBOL, END_SYMBOL, STOP) ++ || a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP))) ++ { ++ scope_statement_list (p, s); ++ } ++ } ++} ++ ++/* Scope_conditional_clause. */ ++ ++static void ++scope_conditional_clause (NODE_T *p, SCOPE_T **s) ++{ ++ scope_serial_clause (NEXT_SUB (p), NO_VAR, true); ++ FORWARD (p); ++ scope_serial_clause (NEXT_SUB (p), s, true); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, ELSE_PART, CHOICE, STOP)) ++ scope_serial_clause (NEXT_SUB (p), s, true); ++ else if (a68_is_one_of (p, ELIF_PART, BRIEF_ELIF_PART, STOP)) ++ scope_conditional_clause (SUB (p), s); ++ } ++} ++ ++/* Scope_case_clause. */ ++ ++static void ++scope_case_clause (NODE_T *p, SCOPE_T **s) ++{ ++ SCOPE_T *n = NO_SCOPE; ++ scope_serial_clause (NEXT_SUB (p), &n, true); ++ (void) scope_check (n, NOT_TRANSIENT, LEX_LEVEL (p)); ++ FORWARD (p); ++ scope_statement_list (NEXT_SUB (p), s); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) ++ scope_serial_clause (NEXT_SUB (p), s, true); ++ else if (a68_is_one_of (p, CASE_OUSE_PART, BRIEF_OUSE_PART, STOP)) ++ scope_case_clause (SUB (p), s); ++ else if (a68_is_one_of (p, CONFORMITY_OUSE_PART, BRIEF_CONFORMITY_OUSE_PART, STOP)) ++ scope_case_clause (SUB (p), s); ++ } ++} ++ ++/* Scope_loop_clause. */ ++ ++static void ++scope_loop_clause (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, FOR_PART)) ++ scope_loop_clause (NEXT (p)); ++ else if (a68_is_one_of (p, FROM_PART, BY_PART, TO_PART, STOP)) ++ { ++ scope_statement (NEXT_SUB (p), NO_VAR); ++ scope_loop_clause (NEXT (p)); ++ } ++ else if (IS (p, WHILE_PART)) ++ { ++ scope_serial_clause (NEXT_SUB (p), NO_VAR, true); ++ scope_loop_clause (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, DO_PART, ALT_DO_PART, STOP)) ++ { ++ NODE_T *do_p = NEXT_SUB (p); ++ ++ if (IS (do_p, SERIAL_CLAUSE)) ++ scope_serial_clause (do_p, NO_VAR, true); ++ } ++ } ++} ++ ++/* Scope_enclosed_clause. */ ++ ++static void ++scope_enclosed_clause (NODE_T *p, SCOPE_T **s) ++{ ++ if (IS (p, ENCLOSED_CLAUSE)) ++ scope_enclosed_clause (SUB (p), s); ++ else if (IS (p, CLOSED_CLAUSE)) ++ scope_closed_clause (SUB (p), s); ++ else if (a68_is_one_of (p, COLLATERAL_CLAUSE, PARALLEL_CLAUSE, STOP)) ++ scope_collateral_clause (SUB (p), s); ++ else if (IS (p, CONDITIONAL_CLAUSE)) ++ scope_conditional_clause (SUB (p), s); ++ else if (a68_is_one_of (p, CASE_CLAUSE, CONFORMITY_CLAUSE, STOP)) ++ scope_case_clause (SUB (p), s); ++ else if (IS (p, LOOP_CLAUSE)) ++ scope_loop_clause (SUB (p)); ++} ++ ++/* Whether a symbol table contains no (anonymous) definition. */ ++ ++static bool ++empty_table (TABLE_T * t) ++{ ++ if (IDENTIFIERS (t) == NO_TAG) ++ return (OPERATORS (t) == NO_TAG && INDICANTS (t) == NO_TAG); ++ else if (PRIO (IDENTIFIERS (t)) == LOOP_IDENTIFIER && NEXT (IDENTIFIERS (t)) == NO_TAG) ++ return (OPERATORS (t) == NO_TAG && INDICANTS (t) == NO_TAG); ++ else if (PRIO (IDENTIFIERS (t)) == SPECIFIER_IDENTIFIER && NEXT (IDENTIFIERS (t)) == NO_TAG) ++ return (OPERATORS (t) == NO_TAG && INDICANTS (t) == NO_TAG); ++ else ++ return false; ++} ++ ++/* Indicate non-local environs. */ ++ ++static void ++get_non_local_environs (NODE_T *p, int max) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, ROUTINE_TEXT)) ++ get_non_local_environs (SUB (p), LEX_LEVEL (SUB (p))); ++ else if (IS (p, FORMAT_TEXT)) ++ get_non_local_environs (SUB (p), LEX_LEVEL (SUB (p))); ++ else ++ { ++ get_non_local_environs (SUB (p), max); ++ NON_LOCAL (p) = NO_TABLE; ++ if (TABLE (p) != NO_TABLE) ++ { ++ TABLE_T *q = TABLE (p); ++ while (q != NO_TABLE && empty_table (q) ++ && PREVIOUS (q) != NO_TABLE && LEVEL (PREVIOUS (q)) >= max) ++ { ++ NON_LOCAL (p) = PREVIOUS (q); ++ q = PREVIOUS (q); ++ } ++ } ++ } ++ } ++} ++ ++/* The static scope checker. */ ++ ++void ++a68_scope_checker (NODE_T *p) ++{ ++ if (SUB (p)) ++ { ++ if (IS (SUB (p), PARTICULAR_PROGRAM)) ++ p = SUB (p); ++ else if (IS (SUB (p), PRELUDE_PACKET)) ++ { ++ /* XXX writeme. */ ++ return; ++ } ++ } ++ ++ /* Establish scopes of routine texts and format texts. */ ++ get_youngest_environs (p); ++ /* Find non-local environs. */ ++ get_non_local_environs (p, PRIMAL_SCOPE); ++ /* PROC and FORMAT identities can now be assigned a scope. */ ++ bind_scope_to_tags (p); ++ /* Now check evertyhing else. */ ++ scope_enclosed_clause (SUB (p), NO_VAR); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-serial-dsa.cc +@@ -0,0 +1,114 @@ ++/* Check dynamic stack usage in serial clauses. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* This file implements a phase that determines what serial clauses contain ++ phrases whose elaboration may involve dynamic stack allocation. It ++ annotates the SERIAL_CLAUSE parse nodes by setting the DYNAMIC_STACK_ALLOCS ++ flag. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* Uncomment the following line for debugging traces. */ ++/* #define SERIAL_DSA_DEBUG */ ++ ++static void ++serial_dsa_check_serial_clause (NODE_T *p, bool *dsa) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, GENERATOR)) ++ { ++ /* LOC generators always result in dyamic stack allocation regardless ++ of the mode of the allocated value. */ ++ if (IS (SUB (p), LOC_SYMBOL)) ++ { ++#ifdef SERIAL_DSA_DEBUG ++ fprintf (stderr, "serial_dsa: %s:%d: loc generator implies DSA\n", ++ FILENAME (LINE (INFO (p))), ++ LINE_NUMBER (p)); ++#endif ++ *dsa = true; ++ return; ++ } ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ /* Variable declarations of values with sample loc generators will ++ result in dynamic stack allocation. ++ ++ Note that label declarations do no have a mode, so we have to ++ check for MOID (p). */ ++ ++ if (MOID (p) != NO_MOID && IS_REF (MOID (p))) ++ { ++ bool heap = HEAP (TAX (p)) == HEAP_SYMBOL; ++ if (HAS_ROWS (SUB (MOID (p))) && !heap) ++ { ++#ifdef SERIAL_DSA_DEBUG ++ fprintf (stderr, ++ "serial_dsa: %s:%d: defining identifier %s implies DSA\n", ++ FILENAME (LINE (INFO (p))), ++ LINE_NUMBER (p), ++ NSYMBOL (p)); ++#endif ++ *dsa = true; ++ return; ++ } ++ } ++ } ++ else ++ { ++ /* Inner serial clauses will take care of their own. Code in routine ++ texts will not impact the stack of the containing serial ++ clause. */ ++ if (!IS (p, SERIAL_CLAUSE) && !IS (p, ROUTINE_TEXT)) ++ serial_dsa_check_serial_clause (SUB (p), dsa); ++ } ++ } ++} ++ ++void ++a68_serial_dsa (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ a68_serial_dsa (SUB (p)); ++ if (IS (p, SERIAL_CLAUSE)) ++ { ++ bool dsa = false; ++ serial_dsa_check_serial_clause (SUB (p), &dsa); ++ DYNAMIC_STACK_ALLOCS (p) = dsa; ++#ifdef SERIAL_DSA_DEBUG ++ if (dsa) ++ { ++ fprintf (stderr, "serial_dsa: %s:%d: marking serial clause %p as DSA\n", ++ FILENAME (LINE (INFO (p))), ++ LINE_NUMBER (p), ++ (void *) p); ++ } ++ ++#endif ++ } ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-taxes.cc +@@ -0,0 +1,1806 @@ ++/* Symbol table management. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* ++ * Symbol table handling, managing TAGS. ++ */ ++ ++/* Forward declarations for several functions defined below. */ ++ ++static TAG_T *find_tag_local (TABLE_T *table, int a, const char *name); ++ ++/* Set level for procedures. */ ++ ++void ++a68_set_proc_level (NODE_T *p, int n) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ PROCEDURE_LEVEL (INFO (p)) = n; ++ if (IS (p, ROUTINE_TEXT)) ++ a68_set_proc_level (SUB (p), n + 1); ++ else ++ a68_set_proc_level (SUB (p), n); ++ } ++} ++ ++/* Set nests for diagnostics. */ ++ ++void ++a68_set_nest (NODE_T *p, NODE_T *s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ NEST (p) = s; ++ if (IS (p, PARTICULAR_PROGRAM)) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, CLOSED_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, COLLATERAL_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, CONDITIONAL_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, CASE_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, CONFORMITY_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, LOOP_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else ++ a68_set_nest (SUB (p), s); ++ } ++} ++ ++/* ++ * Routines that work with tags and symbol tables. ++ */ ++ ++static void tax_tags (NODE_T *); ++static void tax_specifier_list (NODE_T *); ++static void tax_parameter_list (NODE_T *); ++static void tax_format_texts (NODE_T *); ++ ++/* Find a tag, searching symbol tables towards the root. */ ++ ++int ++a68_first_tag_global (TABLE_T * table, const char *name) ++{ ++ if (table != NO_TABLE) ++ { ++ for (TAG_T *s = IDENTIFIERS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return IDENTIFIER; ++ } ++ for (TAG_T *s = INDICANTS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return INDICANT; ++ } ++ for (TAG_T *s = LABELS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return LABEL; ++ } ++ for (TAG_T *s = OPERATORS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return OP_SYMBOL; ++ } ++ for (TAG_T *s = MODULES (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return MODULE_SYMBOL; ++ } ++ for (TAG_T *s = PRIO (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return PRIO_SYMBOL; ++ } ++ return a68_first_tag_global (PREVIOUS (table), name); ++ } ++ else ++ return STOP; ++} ++ ++/* Whether routine can be "lengthety-mapped". */ ++ ++static bool ++is_mappable_routine (const char *z) ++{ ++#define ACCEPT(u, v) {\ ++ if (strlen (u) >= strlen (v)) {\ ++ if (strcmp (&u[strlen (u) - strlen (v)], v) == 0) {\ ++ return true;\ ++ }}} ++ ++ /* Math routines. */ ++ ACCEPT (z, "arccos"); ++ ACCEPT (z, "arccosdg"); ++ ACCEPT (z, "arccot"); ++ ACCEPT (z, "arccotdg"); ++ ACCEPT (z, "arcsin"); ++ ACCEPT (z, "arcsindg"); ++ ACCEPT (z, "arctan"); ++ ACCEPT (z, "arctandg"); ++ ACCEPT (z, "beta"); ++ ACCEPT (z, "betainc"); ++ ACCEPT (z, "cbrt"); ++ ACCEPT (z, "cos"); ++ ACCEPT (z, "cosdg"); ++ ACCEPT (z, "cospi"); ++ ACCEPT (z, "cot"); ++ ACCEPT (z, "cot"); ++ ACCEPT (z, "cotdg"); ++ ACCEPT (z, "cotpi"); ++ ACCEPT (z, "curt"); ++ ACCEPT (z, "erf"); ++ ACCEPT (z, "erfc"); ++ ACCEPT (z, "exp"); ++ ACCEPT (z, "gamma"); ++ ACCEPT (z, "gammainc"); ++ ACCEPT (z, "gammaincg"); ++ ACCEPT (z, "gammaincgf"); ++ ACCEPT (z, "ln"); ++ ACCEPT (z, "log"); ++ ACCEPT (z, "pi"); ++ ACCEPT (z, "sin"); ++ ACCEPT (z, "sindg"); ++ ACCEPT (z, "sinpi"); ++ ACCEPT (z, "sqrt"); ++ ACCEPT (z, "tan"); ++ ACCEPT (z, "tandg"); ++ ACCEPT (z, "tanpi"); ++ /* Random generator. */ ++ ACCEPT (z, "nextrandom"); ++ ACCEPT (z, "random"); ++ /* BITS. */ ++ ACCEPT (z, "bitspack"); ++ /* Enquiries. */ ++ ACCEPT (z, "maxint"); ++ ACCEPT (z, "intwidth"); ++ ACCEPT (z, "maxreal"); ++ ACCEPT (z, "realwidth"); ++ ACCEPT (z, "expwidth"); ++ ACCEPT (z, "maxbits"); ++ ACCEPT (z, "bitswidth"); ++ ACCEPT (z, "byteswidth"); ++ ACCEPT (z, "smallreal"); ++ return false; ++#undef ACCEPT ++} ++ ++/* Map "short sqrt" onto "sqrt" etcetera. */ ++ ++static TAG_T * ++bind_lengthety_identifier (const char *u) ++{ ++#define CAR(u, v) (strncmp (u, v, strlen(v)) == 0) ++ /* We can only map routines blessed by "is_mappable_routine", so there is no ++ "short print" or "long char in string". */ ++ if (CAR (u, "short")) ++ { ++ do ++ { ++ u = &u[strlen ("short")]; ++ const char *v = TEXT (a68_add_token (&A68 (top_token), u)); ++ TAG_T *w = find_tag_local (A68_STANDENV, IDENTIFIER, v); ++ if (w != NO_TAG && is_mappable_routine (v)) ++ return w; ++ } ++ while (CAR (u, "short")); ++ } ++ else if (CAR (u, "long")) ++ { ++ do ++ { ++ u = &u[strlen ("long")]; ++ const char *v = TEXT (a68_add_token (&A68 (top_token), u)); ++ TAG_T *w = find_tag_local (A68_STANDENV, IDENTIFIER, v); ++ if (w != NO_TAG && is_mappable_routine (v)) ++ return w; ++ } ++ while (CAR (u, "long")); ++ } ++ ++ return NO_TAG; ++#undef CAR ++} ++ ++/* Bind identifier tags to the symbol table. */ ++ ++static void ++bind_identifier_tag_to_symbol_table (NODE_T * p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ bind_identifier_tag_to_symbol_table (SUB (p)); ++ ++ if (a68_is_one_of (p, IDENTIFIER, DEFINING_IDENTIFIER, STOP)) ++ { ++ int att = a68_first_tag_global (TABLE (p), NSYMBOL (p)); ++ ++ if (att == STOP) ++ { ++ TAG_T *z = bind_lengthety_identifier (NSYMBOL (p)); ++ ++ if (z != NO_TAG) ++ MOID (p) = MOID (z); ++ TAX (p) = z; ++ } ++ else ++ { ++ TAG_T *z = a68_find_tag_global (TABLE (p), att, NSYMBOL (p)); ++ ++ if (att == IDENTIFIER && z != NO_TAG) ++ MOID (p) = MOID (z); ++ else if (att == LABEL && z != NO_TAG) ++ ; ++ else if ((z = bind_lengthety_identifier (NSYMBOL (p))) != NO_TAG) ++ MOID (p) = MOID (z); ++ else ++ { ++ a68_error (p, "tag S has not been declared properly"); ++ z = a68_add_tag (TABLE (p), IDENTIFIER, p, M_ERROR, NORMAL_IDENTIFIER); ++ MOID (p) = M_ERROR; ++ } ++ TAX (p) = z; ++ if (IS (p, DEFINING_IDENTIFIER)) ++ NODE (z) = p; ++ } ++ } ++ } ++} ++ ++/* Tell whether the given tree refers to the applied indicant INDICANT in an ++ actual declarer. */ ++ ++static bool ++declarer_contains_indicant (NODE_T *p, NODE_T *indicant) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, DECLARER) ++ && IS (SUB (q), INDICANT) ++ && ((TAX (SUB (q)) && IS_RECURSIVE (TAX (SUB (q)))) ++ || IS_LITERALLY (SUB (q), NSYMBOL (indicant)))) ++ { ++ return true; ++ } ++ ++ if (declarer_contains_indicant (SUB (q), indicant)) ++ return true; ++ } ++ ++ return false; ++} ++ ++/* Bind indicant tags to the symbol table. */ ++ ++static void ++bind_indicant_tag_to_symbol_table (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ bind_indicant_tag_to_symbol_table (SUB (p)); ++ ++ if (a68_is_one_of (p, INDICANT, DEFINING_INDICANT, STOP)) ++ { ++ TAG_T *z = a68_find_tag_global (TABLE (p), INDICANT, NSYMBOL (p)); ++ ++ if (z != NO_TAG) ++ { ++ MOID (p) = MOID (z); ++ TAX (p) = z; ++ if (IS (p, DEFINING_INDICANT)) ++ { ++ NODE (z) = p; ++ IS_RECURSIVE (z) = declarer_contains_indicant (NEXT_NEXT (p), p); ++ } ++ } ++ } ++ } ++} ++ ++/* Enter specifier identifiers in the symbol table. */ ++ ++static void ++tax_specifiers (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_specifiers (SUB (p)); ++ ++ if (SUB (p) != NO_NODE && IS (p, SPECIFIER)) ++ tax_specifier_list (SUB (p)); ++ } ++} ++ ++/* Enter specifier identifiers in the symbol table. */ ++ ++static void ++tax_specifier_list (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, OPEN_SYMBOL)) ++ tax_specifier_list (NEXT (p)); ++ else if (a68_is_one_of (p, CLOSE_SYMBOL, VOID_SYMBOL, STOP)) ++ ; ++ else if (IS (p, IDENTIFIER)) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), IDENTIFIER, p, NO_MOID, SPECIFIER_IDENTIFIER); ++ HEAP (z) = LOC_SYMBOL; ++ } ++ else if (IS (p, DECLARER)) ++ { ++ tax_specifiers (SUB (p)); ++ tax_specifier_list (NEXT (p)); ++ /* last identifier entry is identifier with this declarer. */ ++ if (IDENTIFIERS (TABLE (p)) != NO_TAG ++ && PRIO (IDENTIFIERS (TABLE (p))) == SPECIFIER_IDENTIFIER) ++ MOID (IDENTIFIERS (TABLE (p))) = MOID (p); ++ } ++ } ++} ++ ++/* Enter parameter identifiers in the symbol table. */ ++ ++static void ++tax_parameters (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (SUB (p) != NO_NODE) ++ { ++ tax_parameters (SUB (p)); ++ if (IS (p, PARAMETER_PACK)) ++ tax_parameter_list (SUB (p)); ++ } ++ } ++} ++ ++/* Enter parameter identifiers in the symbol table. */ ++ ++static void ++tax_parameter_list (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) ++ tax_parameter_list (NEXT (p)); ++ else if (IS (p, CLOSE_SYMBOL)) ++ ; ++ else if (a68_is_one_of (p, PARAMETER_LIST, PARAMETER, STOP)) ++ { ++ tax_parameter_list (NEXT (p)); ++ tax_parameter_list (SUB (p)); ++ } ++ else if (IS (p, IDENTIFIER)) ++ { ++ /* parameters are always local. */ ++ HEAP (a68_add_tag (TABLE (p), IDENTIFIER, p, NO_MOID, PARAMETER_IDENTIFIER)) = LOC_SYMBOL; ++ } ++ else if (IS (p, DECLARER)) ++ { ++ tax_parameter_list (NEXT (p)); ++ /* last identifier entries are identifiers with this declarer. */ ++ for (TAG_T *s = IDENTIFIERS (TABLE (p)); s != NO_TAG && MOID (s) == NO_MOID; FORWARD (s)) ++ MOID (s) = MOID (p); ++ tax_parameters (SUB (p)); ++ } ++ } ++} ++ ++/* Enter FOR identifiers in the symbol table. */ ++ ++static void ++tax_for_identifiers (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_for_identifiers (SUB (p)); ++ ++ if (IS (p, FOR_SYMBOL)) ++ { ++ if ((FORWARD (p)) != NO_NODE) ++ (void) a68_add_tag (TABLE (p), IDENTIFIER, p, M_INT, LOOP_IDENTIFIER); ++ } ++ } ++} ++ ++/* Enter routine texts in the symbol table. */ ++ ++static void ++tax_routine_texts (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_routine_texts (SUB (p)); ++ ++ if (IS (p, ROUTINE_TEXT)) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, MOID (p), ROUTINE_TEXT); ++ TAX (p) = z; ++ HEAP (z) = LOC_SYMBOL; ++ USE (z) = true; ++ } ++ } ++} ++ ++/* Enter format texts in the symbol table. */ ++ ++static void ++tax_format_texts (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_format_texts (SUB (p)); ++ ++ if (IS (p, FORMAT_TEXT)) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, M_FORMAT, FORMAT_TEXT); ++ TAX (p) = z; ++ USE (z) = true; ++ } ++ else if (IS (p, FORMAT_DELIMITER_SYMBOL) && NEXT (p) != NO_NODE) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, M_FORMAT, FORMAT_IDENTIFIER); ++ TAX (p) = z; ++ USE (z) = true; ++ } ++ } ++} ++ ++/* Enter FORMAT pictures in the symbol table. */ ++ ++static void ++tax_pictures (NODE_T * p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_pictures (SUB (p)); ++ ++ if (IS (p, PICTURE)) ++ TAX (p) = a68_add_tag (TABLE (p), ANONYMOUS, p, M_COLLITEM, FORMAT_IDENTIFIER); ++ } ++} ++ ++/* Enter generators in the symbol table. */ ++ ++static void ++tax_generators (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_generators (SUB (p)); ++ ++ if (IS (p, GENERATOR)) ++ { ++ if (IS (SUB (p), LOC_SYMBOL)) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, SUB_MOID (SUB (p)), GENERATOR); ++ HEAP (z) = LOC_SYMBOL; ++ USE (z) = true; ++ TAX (p) = z; ++ } ++ } ++ } ++} ++ ++/* Find a firmly related operator for operands. */ ++ ++static TAG_T * ++find_firmly_related_op (TABLE_T *c, const char *n, MOID_T *l, MOID_T *r, TAG_T *self) ++{ ++ if (c != NO_TABLE) ++ { ++ TAG_T *s = OPERATORS (c); ++ ++ for (; s != NO_TAG; FORWARD (s)) ++ { ++ if (s != self && NSYMBOL (NODE (s)) == n) ++ { ++ PACK_T *t = PACK (MOID (s)); ++ if (t != NO_PACK && a68_is_firm (MOID (t), l)) ++ { ++ /* catch monadic operator. */ ++ if ((FORWARD (t)) == NO_PACK) ++ { ++ if (r == NO_MOID) ++ return s; ++ } ++ else ++ { ++ /* catch dyadic operator. */ ++ if (r != NO_MOID && a68_is_firm (MOID (t), r)) ++ return s; ++ } ++ } ++ } ++ } ++ } ++ return NO_TAG; ++} ++ ++/* Check for firmly related operators in this range. */ ++ ++static void ++test_firmly_related_ops_local (NODE_T *p, TAG_T *s) ++{ ++ if (s != NO_TAG) ++ { ++ PACK_T *u = PACK (MOID (s)); ++ ++ if (u != NO_PACK) ++ { ++ MOID_T *l = MOID (u); ++ MOID_T *r = (NEXT (u) != NO_PACK ? MOID (NEXT (u)) : NO_MOID); ++ TAG_T *t = find_firmly_related_op (TAG_TABLE (s), NSYMBOL (NODE (s)), l, r, s); ++ ++ if (t != NO_TAG) ++ { ++ a68_error (p, "M Z is firmly related to M Z", ++ MOID (s), NSYMBOL (NODE (s)), MOID (t), ++ NSYMBOL (NODE (t))); ++ } ++ else ++ { ++ /* Warn for hidden firmly related operators defined in outer ++ ranges, if requested. */ ++ for (TABLE_T *prev = PREVIOUS (TAG_TABLE (s)); ++ prev != NO_TABLE; ++ prev = PREVIOUS (prev)) ++ { ++ TAG_T *t = find_firmly_related_op (prev, NSYMBOL (NODE (s)), l, r, ++ NO_TAG /* self */); ++ if (t != NO_TAG) ++ { ++ if (TAG_TABLE (t) == A68_STANDENV ++ && warn_algol68_hidden_declarations > 0) ++ { ++ if (a68_warning (p, OPT_Whidden_declarations_, ++ "Z hides a firmly related operator in a larger reach", ++ NSYMBOL (NODE (s)))) ++ { ++ a68_inform (NO_NODE, ++ "operator M Z defined in the standard prelude", ++ MOID (t), NSYMBOL (NODE (t))); ++ } ++ } ++ else if (warn_algol68_hidden_declarations > 1) ++ { ++ if (a68_warning (p, OPT_Whidden_declarations_, ++ "Z hides a firmly related operator in a larger reach", ++ NSYMBOL (NODE (s)))) ++ { ++ a68_inform (NODE (t), ++ "previous hidden declaration of S declared here", ++ NSYMBOL (NODE (s))); ++ } ++ } ++ ++ /* Report only one level of hidding or it gets messy. */ ++ break; ++ } ++ } ++ } ++ } ++ if (NEXT (s) != NO_TAG) ++ test_firmly_related_ops_local ((p == NO_NODE ? NO_NODE : NODE (NEXT (s))), NEXT (s)); ++ } ++} ++ ++/* Find firmly related operators in this program. */ ++ ++static void ++test_firmly_related_ops (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (SUB (p) != NO_NODE && a68_is_new_lexical_level (p)) ++ { ++ TAG_T *oops = OPERATORS (TABLE (SUB (p))); ++ ++ if (oops != NO_TAG) ++ test_firmly_related_ops_local (NODE (oops), oops); ++ } ++ test_firmly_related_ops (SUB (p)); ++ } ++} ++ ++/* Driver for the processing of TAXes. */ ++ ++void ++a68_collect_taxes (NODE_T *p) ++{ ++ tax_tags (p); ++ tax_specifiers (p); ++ tax_parameters (p); ++ tax_for_identifiers (p); ++ tax_routine_texts (p); ++ tax_pictures (p); ++ tax_format_texts (p); ++ tax_generators (p); ++ bind_identifier_tag_to_symbol_table (p); ++ bind_indicant_tag_to_symbol_table (p); ++ test_firmly_related_ops (p); ++ test_firmly_related_ops_local (NO_NODE, OPERATORS (A68_STANDENV)); ++} ++ ++/* Whether tag has already been declared in this range. */ ++ ++static void ++already_declared (NODE_T *n, int a) ++{ ++ if (find_tag_local (TABLE (n), a, NSYMBOL (n)) != NO_TAG) ++ a68_error (n, "multiple declaration of tag S"); ++} ++ ++/* Whether tag has already been declared in this range. */ ++ ++static void ++already_declared_hidden (NODE_T *n, int a) ++{ ++ if (find_tag_local (TABLE (n), a, NSYMBOL (n)) != NO_TAG) ++ a68_error (n, "multiple declaration of tag S"); ++ ++ TAG_T *s = a68_find_tag_global (PREVIOUS (TABLE (n)), a, NSYMBOL (n)); ++ ++ if (s != NO_TAG ++ && ((TAG_TABLE (s) == A68_STANDENV && warn_algol68_hidden_declarations > 0) ++ || (TAG_TABLE (s) != A68_STANDENV && warn_algol68_hidden_declarations > 1))) ++ { ++ if (a68_warning (n, OPT_Whidden_declarations_, ++ "Z hides a declaration with larger reach", ++ NSYMBOL (n))) ++ { ++ if (TAG_TABLE (s) == A68_STANDENV) ++ a68_inform (NO_NODE, ++ "M Z defined in the standard prelude", ++ MOID (s), NSYMBOL (NODE (s))); ++ else ++ a68_inform (NODE (s), ++ "previous hidden declaration of S declared here", ++ NSYMBOL (n)); ++ } ++ } ++} ++ ++/* Add tag to local symbol table. */ ++ ++TAG_T * ++a68_add_tag (TABLE_T *s, int a, NODE_T *n, MOID_T *m, int p) ++{ ++#define INSERT_TAG(l, n) {NEXT (n) = *(l); *(l) = (n);} ++ if (s != NO_TABLE) ++ { ++ TAG_T *z = a68_new_tag (); ++ ++ TAG_TABLE (z) = s; ++ PRIO (z) = p; ++ MOID (z) = m; ++ NODE (z) = n; ++ /* TAX(n) = z;. */ ++ switch (a) ++ { ++ case IDENTIFIER: ++ already_declared_hidden (n, IDENTIFIER); ++ already_declared_hidden (n, LABEL); ++ INSERT_TAG (&IDENTIFIERS (s), z); ++ break; ++ case INDICANT: ++ already_declared_hidden (n, INDICANT); ++ already_declared (n, OP_SYMBOL); ++ already_declared (n, PRIO_SYMBOL); ++ INSERT_TAG (&INDICANTS (s), z); ++ break; ++ case LABEL: ++ already_declared_hidden (n, LABEL); ++ already_declared_hidden (n, IDENTIFIER); ++ INSERT_TAG (&LABELS (s), z); ++ break; ++ case OP_SYMBOL: ++ already_declared (n, INDICANT); ++ INSERT_TAG (&OPERATORS (s), z); ++ break; ++ case MODULE_SYMBOL: ++ already_declared (n, INDICANT); ++ INSERT_TAG (&MODULES (s), z); ++ break; ++ case PRIO_SYMBOL: ++ already_declared (n, PRIO_SYMBOL); ++ already_declared (n, INDICANT); ++ INSERT_TAG (&PRIO (s), z); ++ break; ++ case ANONYMOUS: ++ INSERT_TAG (&ANONYMOUS (s), z); ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ return z; ++ } ++ else ++ return NO_TAG; ++} ++ ++/* Find a tag, searching symbol tables towards the root. */ ++ ++TAG_T * ++a68_find_tag_global (TABLE_T *table, int a, const char *name) ++{ ++ if (table != NO_TABLE) ++ { ++ TAG_T *s = NO_TAG; ++ switch (a) ++ { ++ case IDENTIFIER: ++ s = IDENTIFIERS (table); ++ break; ++ case INDICANT: ++ s = INDICANTS (table); ++ break; ++ case LABEL: ++ s = LABELS (table); ++ break; ++ case OP_SYMBOL: ++ s = OPERATORS (table); ++ break; ++ case MODULE_SYMBOL: ++ s = MODULES (table); ++ break; ++ case PRIO_SYMBOL: ++ s = PRIO (table); ++ break; ++ default: ++ gcc_unreachable (); ++ break; ++ } ++ ++ for (; s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return s; ++ } ++ return a68_find_tag_global (PREVIOUS (table), a, name); ++ } ++ else ++ return NO_TAG; ++} ++ ++/* Whether identifier or label global. */ ++ ++int ++a68_is_identifier_or_label_global (TABLE_T *table, const char *name) ++{ ++ if (table != NO_TABLE) ++ { ++ for (TAG_T *s = IDENTIFIERS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return IDENTIFIER; ++ } ++ for (TAG_T *s = LABELS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return LABEL; ++ } ++ return a68_is_identifier_or_label_global (PREVIOUS (table), name); ++ } ++ else ++ return 0; ++} ++ ++/* Find a tag, searching only local symbol table. */ ++ ++static TAG_T * ++find_tag_local (TABLE_T *table, int a, const char *name) ++{ ++ if (table != NO_TABLE) ++ { ++ TAG_T *s = NO_TAG; ++ ++ if (a == OP_SYMBOL) ++ s = OPERATORS (table); ++ else if (a == MODULE_SYMBOL) ++ s = MODULES (table); ++ else if (a == PRIO_SYMBOL) ++ s = PRIO (table); ++ else if (a == IDENTIFIER) ++ s = IDENTIFIERS (table); ++ else if (a == INDICANT) ++ s = INDICANTS (table); ++ else if (a == LABEL) ++ s = LABELS (table); ++ else ++ gcc_unreachable (); ++ ++ for (; s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return s; ++ } ++ } ++ return NO_TAG; ++} ++ ++/* Whether context specifies HEAP or LOC for an identifier. ++ ++ The boolean *E is set to true if an explicit qualifier was found, false ++ otherwise. */ ++ ++static int ++tab_qualifier (NODE_T *p, bool *e) ++{ ++ *e = false; ++ if (p != NO_NODE) ++ { ++ if (a68_is_one_of (p, UNIT, ASSIGNATION, TERTIARY, SECONDARY, GENERATOR, STOP)) ++ return tab_qualifier (SUB (p), e); ++ else if (a68_is_one_of (p, LOC_SYMBOL, HEAP_SYMBOL, STOP)) ++ { ++ *e = true; ++ return ATTRIBUTE (p) == LOC_SYMBOL ? LOC_SYMBOL : HEAP_SYMBOL; ++ } ++ else ++ return LOC_SYMBOL; ++ } ++ else ++ return LOC_SYMBOL; ++} ++ ++/* Enter identity declarations in the symbol table. ++ ++ E is true if HEAP or LOC got specified explicitly in the identity ++ declaration's formal parameter. */ ++ ++static void ++tax_identity_dec (NODE_T *p, MOID_T **m) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, IDENTITY_DECLARATION)) ++ { ++ tax_identity_dec (SUB (p), m); ++ tax_identity_dec (NEXT (p), m); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ tax_tags (SUB (p)); ++ *m = MOID (p); ++ tax_identity_dec (NEXT (p), m); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ { ++ tax_identity_dec (NEXT (p), m); ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); ++ gcc_assert (entry != NO_TAG); ++ ++ MOID (p) = *m; ++ HEAP (entry) = LOC_SYMBOL; ++ TAX (p) = entry; ++ MOID (entry) = *m; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ bool e; ++ if (ATTRIBUTE (*m) == REF_SYMBOL) ++ { ++ HEAP (entry) = tab_qualifier (NEXT_NEXT (p), &e); ++ if (e && HEAP (entry) == LOC_SYMBOL && PUBLICIZED (entry)) ++ a68_warning (p, 0, "value of local generator will be out of scope"); ++ } ++ tax_identity_dec (NEXT_NEXT (p), m); ++ } ++ else ++ tax_tags (p); ++ } ++} ++ ++/* Enter variable declarations in the symbol table. ++ ++ E is true if an explicit sample generator was specified in the variable ++ declaration. */ ++ ++static void ++tax_variable_dec (NODE_T *p, int *q, MOID_T **m, bool e) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, VARIABLE_DECLARATION)) ++ { ++ tax_variable_dec (SUB (p), q, m, e); ++ tax_variable_dec (NEXT (p), q, m, e); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ tax_tags (SUB (p)); ++ *m = MOID (p); ++ tax_variable_dec (NEXT (p), q, m, e); ++ } ++ else if (IS (p, QUALIFIER)) ++ { ++ *q = ATTRIBUTE (SUB (p)); ++ tax_variable_dec (NEXT (p), q, m, true); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ { ++ tax_variable_dec (NEXT (p), q, m, e); ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); ++ ++ MOID (p) = *m; ++ TAX (p) = entry; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ ++ if (PUBLICIZED (p) && e && *q == LOC_SYMBOL) ++ a68_error (p, "publicized variable should not be allocated on the stack"); ++ ++ if (PUBLICIZED (p)) ++ HEAP (entry) = STATIC_SYMBOL; ++ else ++ HEAP (entry) = *q; ++ ++ if (HEAP (entry) == LOC_SYMBOL) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, SUB (*m), GENERATOR); ++ HEAP (z) = LOC_SYMBOL; ++ USE (z) = true; ++ BODY (entry) = z; ++ } ++ else ++ { ++ BODY (entry) = NO_TAG; ++ } ++ MOID (entry) = *m; ++ tax_variable_dec (NEXT (p), q, m, e); ++ } ++ else ++ tax_tags (p); ++ } ++} ++ ++/* Enter procedure variable declarations in the symbol table. ++ ++ E is true if an explicit sample generator was specified in the procedure ++ variable declaration. */ ++ ++static void ++tax_proc_variable_dec (NODE_T *p, int *q, bool e) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) ++ { ++ tax_proc_variable_dec (SUB (p), q, e); ++ tax_proc_variable_dec (NEXT (p), q, e); ++ } ++ else if (IS (p, QUALIFIER)) ++ { ++ *q = ATTRIBUTE (SUB (p)); ++ tax_proc_variable_dec (NEXT (p), q, true); ++ } ++ else if (a68_is_one_of (p, PROC_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ tax_proc_variable_dec (NEXT (p), q, e); ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); ++ ++ TAX (p) = entry; ++ MOID (entry) = MOID (p); ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ ++ if (PUBLICIZED (p) && e && *q == LOC_SYMBOL) ++ a68_error (p, "publicized variable should not be allocated on the stack"); ++ ++ if (PUBLICIZED (p)) ++ HEAP (entry) = STATIC_SYMBOL; ++ else ++ HEAP (entry) = *q; ++ ++ if (HEAP (entry) == LOC_SYMBOL) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, SUB_MOID (p), GENERATOR); ++ HEAP (z) = LOC_SYMBOL; ++ USE (z) = true; ++ BODY (entry) = z; ++ } ++ else ++ { ++ BODY (entry) = NO_TAG; ++ } ++ tax_proc_variable_dec (NEXT (p), q, e); ++ } ++ else ++ tax_tags (p); ++ } ++} ++ ++/* Enter procedure declarations in the symbol table. */ ++ ++static void ++tax_proc_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, PROCEDURE_DECLARATION)) ++ { ++ tax_proc_dec (SUB (p)); ++ tax_proc_dec (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, PROC_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ tax_proc_dec (NEXT (p)); ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); ++ ++ MOID_T *m = MOID (NEXT_NEXT (p)); ++ MOID (p) = m; ++ TAX (p) = entry; ++ HEAP (entry) = LOC_SYMBOL; ++ MOID (entry) = m; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ tax_proc_dec (NEXT (p)); ++ } ++ else ++ tax_tags (p); ++ } ++} ++ ++/* Check validity of operator declaration. */ ++ ++static void ++check_operator_dec (NODE_T *p, MOID_T *u) ++{ ++ int k = 0; ++ ++ if (u == NO_MOID) ++ { ++ NODE_T *pack = SUB_SUB (NEXT_NEXT (p)); /* Where the parameter pack ++ is. */ ++ if (ATTRIBUTE (NEXT_NEXT (p)) != ROUTINE_TEXT) ++ pack = SUB (pack); ++ k = 1 + a68_count_operands (pack); ++ } ++ else ++ k = a68_count_pack_members (PACK (u)); ++ ++ if (k < 1 || k > 2) ++ { ++ a68_error (p, "incorrect number of operands for S"); ++ k = 0; ++ } ++ ++ if (k == 1 && strchr (NOMADS, NSYMBOL (p)[0]) != NO_TEXT) ++ { ++ a68_error (p, "monadic S cannot start with a character from Z", NOMADS); ++ } ++ else if (k == 2 && !a68_find_tag_global (TABLE (p), PRIO_SYMBOL, NSYMBOL (p))) ++ { ++ a68_error (p, "dyadic S has no priority declaration"); ++ } ++} ++ ++/* Enter operator declarations in the symbol table. */ ++ ++static void ++tax_op_dec (NODE_T *p, MOID_T **m) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, OPERATOR_DECLARATION)) ++ { ++ tax_op_dec (SUB (p), m); ++ tax_op_dec (NEXT (p), m); ++ } ++ else if (IS (p, OPERATOR_PLAN)) ++ { ++ tax_tags (SUB (p)); ++ *m = MOID (p); ++ tax_op_dec (NEXT (p), m); ++ } ++ else if (IS (p, OP_SYMBOL)) ++ { ++ tax_op_dec (NEXT (p), m); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ { ++ tax_op_dec (NEXT (p), m); ++ } ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ TAG_T *entry = OPERATORS (TABLE (p)); ++ check_operator_dec (p, *m); ++ while (entry != NO_TAG && NODE (entry) != p) ++ FORWARD (entry); ++ MOID (p) = *m; ++ TAX (p) = entry; ++ HEAP (entry) = LOC_SYMBOL; ++ MOID (entry) = *m; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ tax_op_dec (NEXT (p), m); ++ } ++ else ++ { ++ tax_tags (p); ++ } ++ } ++} ++ ++/* Enter module declarations in the symbol table. */ ++ ++static void ++tax_module_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, MODULE_DECLARATION)) ++ { ++ tax_module_dec (SUB (p)); ++ tax_module_dec (NEXT (p)); ++ } ++ else if (IS (p, MODULE_SYMBOL)) ++ { ++ tax_module_dec (NEXT (p)); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ { ++ tax_module_dec (NEXT (p)); ++ } ++ else if (IS (p, DEFINING_MODULE_INDICANT)) ++ { ++ TAG_T *entry = MODULES (TABLE (p)); ++ while (entry != NO_TAG && NODE (entry) != p) ++ FORWARD (entry); ++ MOID (p) = NO_MOID; ++ TAX (p) = entry; ++ HEAP (entry) = LOC_SYMBOL; ++ MOID (entry) = NO_MOID; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ tax_module_dec (NEXT (p)); ++ } ++ else ++ { ++ tax_tags (p); ++ } ++ } ++} ++ ++/* Enter brief operator declarations in the symbol table. */ ++ ++static void ++tax_brief_op_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, BRIEF_OPERATOR_DECLARATION)) ++ { ++ tax_brief_op_dec (SUB (p)); ++ tax_brief_op_dec (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, OP_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ tax_brief_op_dec (NEXT (p)); ++ } ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ TAG_T *entry = OPERATORS (TABLE (p)); ++ MOID_T *m = MOID (NEXT_NEXT (p)); ++ check_operator_dec (p, NO_MOID); ++ while (entry != NO_TAG && NODE (entry) != p) ++ FORWARD (entry); ++ MOID (p) = m; ++ TAX (p) = entry; ++ HEAP (entry) = LOC_SYMBOL; ++ MOID (entry) = m; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ tax_brief_op_dec (NEXT (p)); ++ } ++ else ++ { ++ tax_tags (p); ++ } ++ } ++} ++ ++/* Enter priority declarations in the symbol table. */ ++ ++static void tax_prio_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, PRIORITY_DECLARATION)) ++ { ++ tax_prio_dec (SUB (p)); ++ tax_prio_dec (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, PRIO_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ tax_prio_dec (NEXT (p)); ++ } ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ TAG_T *entry = PRIO (TABLE (p)); ++ while (entry != NO_TAG && NODE (entry) != p) ++ FORWARD (entry); ++ MOID (p) = NO_MOID; ++ TAX (p) = entry; ++ HEAP (entry) = LOC_SYMBOL; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ tax_prio_dec (NEXT (p)); ++ } ++ else ++ { ++ tax_tags (p); ++ } ++ } ++} ++ ++/* Enter TAXes in the symbol table. */ ++ ++static void ++tax_tags (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ int heap = LOC_SYMBOL; ++ MOID_T *m = NO_MOID; ++ ++ if (IS (p, IDENTITY_DECLARATION)) ++ tax_identity_dec (p, &m); ++ else if (IS (p, VARIABLE_DECLARATION)) ++ tax_variable_dec (p, &heap, &m, false); ++ else if (IS (p, PROCEDURE_DECLARATION)) ++ tax_proc_dec (p); ++ else if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) ++ tax_proc_variable_dec (p, &heap, false); ++ else if (IS (p, OPERATOR_DECLARATION)) ++ tax_op_dec (p, &m); ++ else if (IS (p, BRIEF_OPERATOR_DECLARATION)) ++ tax_brief_op_dec (p); ++ else if (IS (p, PRIORITY_DECLARATION)) ++ tax_prio_dec (p); ++ else if (IS (p, MODULE_DECLARATION)) ++ tax_module_dec (p); ++ else ++ tax_tags (SUB (p)); ++ } ++} ++ ++/* Reset symbol table nest count. */ ++ ++void ++a68_reset_symbol_table_nest_count (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (SUB (p) != NO_NODE && a68_is_new_lexical_level (p)) ++ NEST (TABLE (SUB (p))) = A68 (symbol_table_count)++; ++ a68_reset_symbol_table_nest_count (SUB (p)); ++ } ++} ++ ++//! @brief Bind routines in symbol table to the tree. ++ ++void ++a68_bind_routine_tags_to_tree (NODE_T *p) ++{ ++ /* By inserting coercions etc. some may have shifted. */ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, ROUTINE_TEXT) && TAX (p) != NO_TAG) ++ NODE (TAX (p)) = p; ++ a68_bind_routine_tags_to_tree (SUB (p)); ++ } ++} ++ ++/* Bind formats in symbol table to tree. */ ++ ++static void ++bind_format_tags_to_tree (NODE_T *p) ++{ ++ /* By inserting coercions etc. some may have shifted. */ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, FORMAT_TEXT) && TAX (p) != NO_TAG) ++ NODE (TAX (p)) = p; ++ else if (IS (p, FORMAT_DELIMITER_SYMBOL) && NEXT (p) != NO_NODE && TAX (p) != NO_TAG) ++ NODE (TAX (p)) = p; ++ ++ bind_format_tags_to_tree (SUB (p)); ++ } ++} ++ ++/* Fill outer level of symbol table. */ ++ ++void ++a68_fill_symbol_table_outer (NODE_T *p, TABLE_T *s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (TABLE (p) != NO_TABLE) ++ OUTER (TABLE (p)) = s; ++ ++ if (SUB (p) != NO_NODE && IS (p, ROUTINE_TEXT)) ++ a68_fill_symbol_table_outer (SUB (p), TABLE (SUB (p))); ++ else if (SUB (p) != NO_NODE && IS (p, FORMAT_TEXT)) ++ a68_fill_symbol_table_outer (SUB (p), TABLE (SUB (p))); ++ else if (SUB (p) != NO_NODE && IS (p, MODULE_TEXT)) ++ a68_fill_symbol_table_outer (SUB (p), TABLE (SUB (p))); ++ else ++ a68_fill_symbol_table_outer (SUB (p), s); ++ } ++} ++ ++/* Flood branch in tree with local symbol table S. */ ++ ++static void ++flood_with_symbol_table_restricted (NODE_T *p, TABLE_T *s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ TABLE (p) = s; ++ if (ATTRIBUTE (p) != ROUTINE_TEXT && ATTRIBUTE (p) != SPECIFIED_UNIT) ++ { ++ if (a68_is_new_lexical_level (p)) ++ PREVIOUS (TABLE (SUB (p))) = s; ++ else ++ flood_with_symbol_table_restricted (SUB (p), s); ++ } ++ } ++} ++ ++/* Final structure of symbol table after parsing. */ ++ ++void ++a68_finalise_symbol_table_setup (NODE_T *p, int l) ++{ ++ TABLE_T *s = TABLE (p); ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ /* routine texts are ranges. */ ++ if (IS (q, ROUTINE_TEXT)) ++ flood_with_symbol_table_restricted (SUB (q), a68_new_symbol_table (s)); ++ ++ /* specifiers are ranges. */ ++ else if (IS (q, SPECIFIED_UNIT)) ++ flood_with_symbol_table_restricted (SUB (q), a68_new_symbol_table (s)); ++ ++ /* level count and recursion. */ ++ if (SUB (q) != NO_NODE) ++ { ++ if (a68_is_new_lexical_level (q)) ++ { ++ LEX_LEVEL (SUB (q)) = l + 1; ++ gcc_assert (TABLE (SUB (q)) != s); ++ PREVIOUS (TABLE (SUB (q))) = s; ++ a68_finalise_symbol_table_setup (SUB (q), l + 1); ++ if (IS (q, WHILE_PART)) ++ { ++ /* This was a bug that went unnoticed for 15 years!. */ ++ TABLE_T *s2 = TABLE (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ return; ++ if (IS (q, ALT_DO_PART)) ++ { ++ PREVIOUS (TABLE (SUB (q))) = s2; ++ LEX_LEVEL (SUB (q)) = l + 2; ++ a68_finalise_symbol_table_setup (SUB (q), l + 2); ++ } ++ } ++ if (IS (q, DEF_PART)) ++ { ++ TABLE_T *s2 = TABLE (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ return; ++ if (IS (q, POSTLUDE_PART)) ++ { ++ PREVIOUS (TABLE (SUB (q))) = s2; ++ LEX_LEVEL (SUB (q)) = l + 2; ++ a68_finalise_symbol_table_setup (SUB (q), l + 2); ++ } ++ } ++ } ++ else ++ { ++ TABLE (SUB (q)) = s; ++ a68_finalise_symbol_table_setup (SUB (q), l); ++ } ++ } ++ TABLE (q) = s; ++ ++ if (IS (q, FOR_SYMBOL)) ++ FORWARD (q); ++ FORWARD (q); ++ } ++ ++ /* FOR identifiers are in the DO ... OD range. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, FOR_SYMBOL)) ++ TABLE (NEXT (q)) = TABLE (SEQUENCE (NEXT (q))); ++ } ++} ++ ++/* First structure of symbol table for parsing. */ ++ ++void ++a68_preliminary_symbol_table_setup (NODE_T *p) ++{ ++ TABLE_T *s = TABLE (p); ++ bool not_a_for_range = false; ++ ++ /* Let the tree point to the current symbol table. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ TABLE (q) = s; ++ ++ /* insert new tables when required. */ ++ for (NODE_T *q = p; q != NO_NODE && !not_a_for_range; FORWARD (q)) ++ { ++ if (SUB (q) != NO_NODE) ++ { ++ /* BEGIN ... END, CODE ... EDOC, DO ... OD, $ ... $, { ... } are ++ ranges. */ ++ if (a68_is_one_of (q, BEGIN_SYMBOL, DO_SYMBOL, ALT_DO_SYMBOL, ++ FORMAT_DELIMITER_SYMBOL, STOP)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ /* ( ... ) is a range. */ ++ else if (IS (q, OPEN_SYMBOL)) ++ { ++ if (a68_whether (q, OPEN_SYMBOL, THEN_BAR_SYMBOL, STOP)) ++ { ++ TABLE (SUB (q)) = s; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ FORWARD (q); ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ not_a_for_range = true; ++ else ++ { ++ if (IS (q, THEN_BAR_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ if (IS (q, OPEN_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ } ++ else ++ { ++ /* Don't worry about STRUCT (...), UNION (...), PROC (...) ++ yet. */ ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* IF ... THEN ... ELSE ... FI are ranges. */ ++ else if (IS (q, IF_SYMBOL)) ++ { ++ if (a68_whether (q, IF_SYMBOL, THEN_SYMBOL, STOP)) ++ { ++ TABLE (SUB (q)) = s; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ FORWARD (q); ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ not_a_for_range = true; ++ else ++ if (IS (q, ELSE_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ if (IS (q, IF_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ else ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* CASE ... IN ... OUT ... ESAC are ranges. */ ++ else if (IS (q, CASE_SYMBOL)) ++ { ++ if (a68_whether (q, CASE_SYMBOL, IN_SYMBOL, STOP)) ++ { ++ TABLE (SUB (q)) = s; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ FORWARD (q); ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ not_a_for_range = true; ++ else ++ { ++ if (IS (q, OUT_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ if (IS (q, CASE_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ } ++ else ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* WHILE ... DO ... OD are ranges. */ ++ else if (IS (q, WHILE_SYMBOL)) ++ { ++ TABLE_T *u = a68_new_symbol_table (s); ++ TABLE (SUB (q)) = u; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ not_a_for_range = true; ++ else if (IS (q, ALT_DO_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (u); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* ACCESS ... DEF ...POSTLUDE ...FED are ranges. */ ++ else if (IS (q, ALT_ACCESS_SYMBOL)) ++ { ++ TABLE_T *u = a68_new_symbol_table (s); ++ TABLE (SUB (q)) = u; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if (NEXT (q) == NO_NODE) ++ not_a_for_range = true; ++ else if (IS ((FORWARD (q)), DEF_SYMBOL)) ++ { ++ TABLE_T *v = a68_new_symbol_table (u); ++ TABLE (SUB (q)) = v; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* DEF ... POSTLUDE ... FED are ranges. */ ++ else if (IS (q, DEF_SYMBOL)) ++ { ++ TABLE_T *u = a68_new_symbol_table (s); ++ PUBLIC_RANGE (u) = true; ++ TABLE (SUB (q)) = u; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if (NEXT (q) == NO_NODE) ++ not_a_for_range = true; ++ else if (IS ((FORWARD (q)), POSTLUDE_SYMBOL)) ++ { ++ TABLE_T *v = a68_new_symbol_table (u); ++ TABLE (SUB (q)) = v; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* ACCESS ... CONTROLLED_CLAUSE are ranges. */ ++ else if (IS (q, ACCESS_SYMBOL)) ++ { ++ TABLE_T *u = a68_new_symbol_table (s); ++ TABLE (SUB (q)) = u; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if (NEXT (q) == NO_NODE) ++ not_a_for_range = true; ++ } ++ else ++ { ++ TABLE (SUB (q)) = s; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ } ++ /* FOR identifiers will go to the DO ... OD range. */ ++ if (!not_a_for_range) ++ { ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, FOR_SYMBOL)) ++ { ++ NODE_T *r = q; ++ TABLE (NEXT (q)) = NO_TABLE; ++ for (; r != NO_NODE && TABLE (NEXT (q)) == NO_TABLE; FORWARD (r)) ++ { ++ if ((a68_is_one_of (r, WHILE_SYMBOL, ALT_DO_SYMBOL, STOP)) ++ && (NEXT (q) != NO_NODE && SUB (r) != NO_NODE)) ++ { ++ TABLE (NEXT (q)) = TABLE (SUB (r)); ++ SEQUENCE (NEXT (q)) = SUB (r); ++ } ++ } ++ } ++ } ++ } ++} ++ ++/* Mark a mode as in use. */ ++ ++static void ++mark_mode (MOID_T *m) ++{ ++ if (m != NO_MOID && USE (m) == false) ++ { ++ PACK_T *p = PACK (m); ++ USE (m) = true; ++ for (; p != NO_PACK; FORWARD (p)) ++ { ++ mark_mode (MOID (p)); ++ mark_mode (SUB (m)); ++ mark_mode (SLICE (m)); ++ } ++ } ++} ++ ++//! @brief Traverse tree and mark modes as used. ++ ++void ++a68_mark_moids (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ a68_mark_moids (SUB (p)); ++ if (MOID (p) != NO_MOID) ++ mark_mode (MOID (p)); ++ } ++} ++ ++/* Mark various tags as used. */ ++ ++void ++a68_mark_auxilliary (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (SUB (p) != NO_NODE) ++ { ++ /* You get no warnings on unused PROC parameters. That is ok since ++ A68 has some parameters that you may not use at all - think of ++ PROC (REF FILE) BOOL event routines in transput. */ ++ a68_mark_auxilliary (SUB (p)); ++ } ++ else if (IS (p, OPERATOR)) ++ { ++ TAG_T *z; ++ ++ if (TAX (p) != NO_TAG) ++ USE (TAX (p)) = true; ++ ++ if ((z = a68_find_tag_global (TABLE (p), PRIO_SYMBOL, NSYMBOL (p))) != NO_TAG) ++ USE (z) = true; ++ } ++ else if (IS (p, INDICANT)) ++ { ++ TAG_T *z = a68_find_tag_global (TABLE (p), INDICANT, NSYMBOL (p)); ++ ++ if (z != NO_TAG) ++ { ++ TAX (p) = z; ++ USE (z) = true; ++ } ++ } ++ else if (IS (p, IDENTIFIER)) ++ { ++ if (TAX (p) != NO_TAG) ++ USE (TAX (p)) = true; ++ } ++ } ++} ++ ++/* Check a single tag. */ ++ ++static void ++unused (TAG_T *s) ++{ ++ for (; s != NO_TAG; FORWARD (s)) ++ { ++ if (LINE_NUMBER (NODE (s)) > 0 && !USE (s)) ++ a68_warning (NODE (s), OPT_Wunused, "tag S is not used", NODE (s)); ++ } ++} ++ ++/* Driver for traversing tree and warn for unused tags. */ ++ ++void ++a68_warn_for_unused_tags (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (SUB (p) != NO_NODE) ++ { ++ if (a68_is_new_lexical_level (p)) ++ { ++ unused (MODULES (TABLE (SUB (p)))); ++ unused (OPERATORS (TABLE (SUB (p)))); ++ unused (PRIO (TABLE (SUB (p)))); ++ unused (IDENTIFIERS (TABLE (SUB (p)))); ++ unused (LABELS (TABLE (SUB (p)))); ++ unused (INDICANTS (TABLE (SUB (p)))); ++ } ++ } ++ a68_warn_for_unused_tags (SUB (p)); ++ } ++} ++ ++/* Mark jumps and procedured jumps. */ ++ ++void ++a68_jumps_from_procs (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, PROCEDURING)) ++ { ++ NODE_T *u = SUB_SUB (p); ++ ++ if (IS (u, GOTO_SYMBOL)) ++ FORWARD (u); ++ USE (TAX (u)) = true; ++ } ++ else if (IS (p, JUMP)) ++ { ++ NODE_T *u = SUB (p); ++ ++ if (IS (u, GOTO_SYMBOL)) ++ FORWARD (u); ++ if ((TAX (u) == NO_TAG) && (MOID (u) == NO_MOID) ++ && (a68_find_tag_global (TABLE (u), LABEL, NSYMBOL (u)) == NO_TAG)) ++ { ++ (void) a68_add_tag (TABLE (u), LABEL, u, NO_MOID, LOCAL_LABEL); ++ a68_error (u, "tag S has not been declared properly"); ++ } ++ else ++ USE (TAX (u)) = true; ++ } ++ else ++ a68_jumps_from_procs (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-top-down.cc +@@ -0,0 +1,894 @@ ++/* Top-down parser for control structure. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* A few forward prototypes of functions defined below. */ ++ ++static NODE_T *top_down_loop (NODE_T *p); ++static NODE_T *top_down_skip_unit (NODE_T *p); ++static NODE_T *top_down_def (NODE_T *def_p); ++ ++/* Substitute brackets. ++ ++ Traditional ALGOL 68 syntax allows ( .. ) to replace [ .. ] in bounds and ++ slices. This top-down pass substitutes [ .. ] occurrences into ( .. ). */ ++ ++void ++a68_substitute_brackets (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ a68_substitute_brackets (SUB (p)); ++ ++ switch (ATTRIBUTE (p)) ++ { ++ case SUB_SYMBOL: ++ ATTRIBUTE (p) = OPEN_SYMBOL; ++ break; ++ case BUS_SYMBOL: ++ ATTRIBUTE (p) = CLOSE_SYMBOL; ++ break; ++ default: ++ break; ++ } ++ } ++} ++ ++/* Intelligible diagnostic from syntax tree branch. */ ++ ++const char * ++a68_phrase_to_text (NODE_T * p, NODE_T ** w) ++{ ++#define MAX_TERMINALS 8 ++ int count = 0, line = -1; ++ static BUFFER buffer; ++ ++ for (buffer[0] = '\0'; p != NO_NODE && count < MAX_TERMINALS; FORWARD (p)) ++ { ++ if (LINE_NUMBER (p) == 0) ++ continue; ++ ++ enum a68_attribute gatt = a68_get_good_attribute (p); ++ const char *z = a68_attribute_name (gatt); ++ ++ /* Where to put the error message? Bob Uzgalis noted that actual ++ content of a diagnostic is not as important as accurately ++ indicating *were* the problem is! */ ++ if (w != NO_VAR) ++ { ++ if (count == 0 || (*w) == NO_NODE) ++ *w = p; ++ else if (a68_dont_mark_here (*w)) ++ *w = p; ++ } ++ ++ /* Add initiation. */ ++ if (count == 0) ++ { ++ if (w != NO_VAR) ++ a68_bufcat (buffer, "construct beginning with", BUFFER_SIZE); ++ } ++ else if (count == 1) ++ a68_bufcat (buffer, " followed by", BUFFER_SIZE); ++ else if (count == 2) ++ a68_bufcat (buffer, " and then", BUFFER_SIZE); ++ else if (count >= 3) ++ a68_bufcat (buffer, " and", BUFFER_SIZE); ++ ++ /* Attribute or symbol. */ ++ if (z != NO_TEXT && SUB (p) != NO_NODE) ++ { ++ if (gatt == IDENTIFIER || gatt == OPERATOR || gatt == DENOTATION) ++ { ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (p)); ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %%<%s%%>", strop_symbol) < 0) ++ gcc_unreachable (); ++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); ++ } ++ else ++ { ++ if (strchr ("aeio", z[0]) != NO_TEXT) ++ a68_bufcat (buffer, " an", BUFFER_SIZE); ++ else ++ a68_bufcat (buffer, " a", BUFFER_SIZE); ++ ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %s", z) < 0) ++ gcc_unreachable (); ++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); ++ } ++ } ++ else if (z != NO_TEXT && SUB (p) == NO_NODE) ++ { ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (p)); ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %%<%s%%>", strop_symbol) < 0) ++ gcc_unreachable (); ++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); ++ } ++ else if (NSYMBOL (p) != NO_TEXT) ++ { ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (p)); ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %%<%s%%>", strop_symbol) < 0) ++ gcc_unreachable (); ++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); ++ } ++ /* Add "starting in line nn". */ ++ if (z != NO_TEXT && line != LINE_NUMBER (p)) ++ { ++ line = LINE_NUMBER (p); ++ if (gatt == SERIAL_CLAUSE || gatt == ENQUIRY_CLAUSE || gatt == INITIALISER_SERIES) ++ a68_bufcat (buffer, " starting", BUFFER_SIZE); ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " in line %d", line) < 0) ++ gcc_unreachable (); ++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); ++ } ++ count++; ++ } ++ ++ if (p != NO_NODE && count == MAX_TERMINALS) ++ a68_bufcat (buffer, " etcetera", BUFFER_SIZE); ++ return buffer; ++} ++ ++/* Next is a top-down parser that branches out the basic blocks. ++ After this we can assign symbol tables to basic blocks. ++ This renders the two-level grammar LALR. */ ++ ++/* Give diagnose from top-down parser. */ ++ ++static void ++top_down_diagnose (NODE_T *start, NODE_T *p, int clause, int expected) ++{ ++ NODE_T *issue = (p != NO_NODE ? p : start); ++ const char *strop_keyword = a68_strop_keyword (NSYMBOL (start)); ++ ++ if (expected != 0) ++ a68_error (issue, "B expected in A, near Z L", ++ expected, clause, strop_keyword, LINE (INFO (start))); ++ else ++ a68_error (issue, "missing or unbalanced keyword in A, near Z L", ++ clause, strop_keyword, LINE (INFO (start))); ++} ++ ++/* Check for premature exhaustion of tokens. */ ++ ++static void ++tokens_exhausted (NODE_T *p, NODE_T *q) ++{ ++ if (p == NO_NODE) ++ { ++ a68_error (q, "check for missing or unmatched keyword in clause starting at S"); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++} ++ ++/* ++ * This part specifically branches out loop clauses. ++ */ ++ ++/* Whether in cast or formula with loop clause. */ ++ ++static int ++is_loop_cast_formula (NODE_T *p) ++{ ++ /* Accept declarers that can appear in such casts but not much more. */ ++ if (IS (p, VOID_SYMBOL)) ++ return 1; ++ else if (IS (p, INT_SYMBOL)) ++ return 1; ++ else if (IS_REF (p)) ++ return 1; ++ else if (a68_is_one_of (p, OPERATOR, BOLD_TAG, STOP)) ++ return 1; ++ else if (a68_whether (p, UNION_SYMBOL, OPEN_SYMBOL, STOP)) ++ return 2; ++ else if (a68_is_one_of (p, OPEN_SYMBOL, SUB_SYMBOL, STOP)) ++ { ++ int k = 0; ++ for (; p != NO_NODE && (a68_is_one_of (p, OPEN_SYMBOL, SUB_SYMBOL, STOP)); FORWARD (p), k++) ++ ; ++ return p != NO_NODE && (a68_whether (p, UNION_SYMBOL, OPEN_SYMBOL, STOP) ? k : 0); ++ } ++ return 0; ++} ++ ++/* Skip a unit in a loop clause (FROM u BY u TO u). */ ++ ++static NODE_T * ++top_down_skip_loop_unit (NODE_T *p) ++{ ++ /* Unit may start with, or consist of, a loop. */ ++ if (a68_is_loop_keyword (p)) ++ p = top_down_loop (p); ++ ++ /* Skip rest of unit. */ ++ while (p != NO_NODE) ++ { ++ int k = is_loop_cast_formula (p); ++ ++ if (k != 0) ++ { ++ /* operator-cast series ... */ ++ while (p != NO_NODE && k != 0) ++ { ++ while (k != 0) ++ { ++ FORWARD (p); ++ k--; ++ } ++ k = is_loop_cast_formula (p); ++ } ++ ++ /* ... may be followed by a loop clause. */ ++ if (a68_is_loop_keyword (p)) ++ p = top_down_loop (p); ++ } ++ else if (a68_is_loop_keyword (p) || IS (p, OD_SYMBOL)) ++ /* new loop or end-of-loop. */ ++ return p; ++ else if (IS (p, COLON_SYMBOL)) ++ { ++ FORWARD (p); ++ /* skip routine header: loop clause. */ ++ if (p != NO_NODE && a68_is_loop_keyword (p)) ++ p = top_down_loop (p); ++ } ++ else if (a68_is_one_of (p, SEMI_SYMBOL, COMMA_SYMBOL, STOP) || IS (p, EXIT_SYMBOL)) ++ /* Statement separators. */ ++ return p; ++ else ++ FORWARD (p); ++ } ++ return NO_NODE; ++} ++ ++/* Skip a loop clause. */ ++ ++static NODE_T * ++top_down_skip_loop_series (NODE_T *p) ++{ ++ bool siga; ++ ++ do ++ { ++ p = top_down_skip_loop_unit (p); ++ siga = (p != NO_NODE && (a68_is_one_of (p, SEMI_SYMBOL, EXIT_SYMBOL, ++ COMMA_SYMBOL, COLON_SYMBOL, ++ STOP))); ++ if (siga) ++ FORWARD (p); ++ } ++ while (!(p == NO_NODE || !siga)); ++ ++ return p; ++} ++ ++/* Make branch of loop parts. */ ++ ++static NODE_T * ++top_down_loop (NODE_T *p) ++{ ++ NODE_T *start = p, *q = p; ++ ++ if (IS (q, FOR_SYMBOL)) ++ { ++ tokens_exhausted (FORWARD (q), start); ++ ++ if (IS (q, IDENTIFIER)) ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, IDENTIFIER); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ tokens_exhausted (FORWARD (q), start); ++ ++ if (a68_is_one_of (q, FROM_SYMBOL, BY_SYMBOL, TO_SYMBOL, ++ WHILE_SYMBOL, STOP)) ++ ; ++ else if (IS (q, DO_SYMBOL)) ++ ATTRIBUTE (q) = ALT_DO_SYMBOL; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ } ++ ++ if (IS (q, FROM_SYMBOL)) ++ { ++ start = q; ++ q = top_down_skip_loop_unit (NEXT (q)); ++ tokens_exhausted (q, start); ++ if (a68_is_one_of (q, BY_SYMBOL, TO_SYMBOL, WHILE_SYMBOL, STOP)) ++ ; ++ else if (IS (q, DO_SYMBOL)) ++ ATTRIBUTE (q) = ALT_DO_SYMBOL; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (start, PREVIOUS (q), FROM_SYMBOL); ++ } ++ ++ if (IS (q, BY_SYMBOL)) ++ { ++ start = q; ++ q = top_down_skip_loop_series (NEXT (q)); ++ tokens_exhausted (q, start); ++ ++ if (a68_is_one_of (q, TO_SYMBOL, WHILE_SYMBOL, STOP)) ++ ; ++ else if (IS (q, DO_SYMBOL)) ++ ATTRIBUTE (q) = ALT_DO_SYMBOL; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (start, PREVIOUS (q), BY_SYMBOL); ++ } ++ ++ if (a68_is_one_of (q, TO_SYMBOL, STOP)) ++ { ++ start = q; ++ q = top_down_skip_loop_series (NEXT (q)); ++ tokens_exhausted (q, start); ++ ++ if (IS (q, WHILE_SYMBOL)) ++ ; ++ else if (IS (q, DO_SYMBOL)) ++ ATTRIBUTE (q) = ALT_DO_SYMBOL; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (start, PREVIOUS (q), TO_SYMBOL); ++ } ++ ++ if (IS (q, WHILE_SYMBOL)) ++ { ++ start = q; ++ q = top_down_skip_loop_series (NEXT (q)); ++ tokens_exhausted (q, start); ++ ++ if (IS (q, DO_SYMBOL)) ++ ATTRIBUTE (q) = ALT_DO_SYMBOL; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, DO_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (start, PREVIOUS (q), WHILE_SYMBOL); ++ } ++ ++ if (a68_is_one_of (q, DO_SYMBOL, ALT_DO_SYMBOL, STOP)) ++ { ++ enum a68_attribute k = ATTRIBUTE (q); ++ ++ start = q; ++ q = top_down_skip_loop_series (NEXT (q)); ++ tokens_exhausted (q, start); ++ ++ if (!IS (q, OD_SYMBOL)) ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, OD_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (start, q, k); ++ } ++ ++ NODE_T *save = NEXT (start); ++ a68_make_sub (p, start, LOOP_CLAUSE); ++ return save; ++} ++ ++/* Driver for making branches of loop parts. */ ++ ++static void ++top_down_loops (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ for (; q != NO_NODE; FORWARD (q)) ++ { ++ if (SUB (q) != NO_NODE) ++ top_down_loops (SUB (q)); ++ } ++ ++ q = p; ++ while (q != NO_NODE) ++ { ++ if (a68_is_loop_keyword (q) != STOP) ++ q = top_down_loop (q); ++ else ++ FORWARD (q); ++ } ++} ++ ++/* ++ * Branch anything except parts of a loop. ++ */ ++ ++/* Skip serial/enquiry clause (unit series). */ ++ ++static NODE_T * ++top_down_series (NODE_T *p) ++{ ++ bool siga = true; ++ while (siga) ++ { ++ siga = false; ++ p = top_down_skip_unit (p); ++ if (p != NO_NODE) ++ { ++ if (a68_is_one_of (p, SEMI_SYMBOL, EXIT_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ siga = true; ++ FORWARD (p); ++ } ++ } ++ } ++ return p; ++} ++ ++/* Make branch of DEF .. POSTLUDE .. FED. */ ++ ++static NODE_T * ++top_down_def (NODE_T *def_p) ++{ ++ NODE_T *fed_p = top_down_series (NEXT (def_p)); ++ ++ if (fed_p == NO_NODE || !(IS (fed_p, FED_SYMBOL) || IS (fed_p, POSTLUDE_SYMBOL))) ++ { ++ top_down_diagnose (def_p, fed_p, MODULE_TEXT, FED_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (def_p, PREVIOUS (fed_p), DEF_SYMBOL); ++ ++ if (IS (fed_p, POSTLUDE_SYMBOL)) ++ { ++ NODE_T *postlude_p = top_down_series (NEXT (fed_p)); ++ ++ if (postlude_p == NO_NODE || !IS (postlude_p, FED_SYMBOL)) ++ { ++ top_down_diagnose (def_p, fed_p, MODULE_TEXT, FED_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (fed_p, PREVIOUS (postlude_p), POSTLUDE_SYMBOL); ++ } ++ ++ return NEXT (def_p); ++} ++ ++/* Make branch of ++ ++ ACCESS REVELATION [DEF_SYMBOL] ++ or ++ ACCESS REVELATION ENCLOSED_CLAUSE. */ ++ ++static void ++top_down_access (NODE_T *p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (SUB (q) != NO_NODE) ++ top_down_access (SUB (q)); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, ACCESS_SYMBOL)) ++ { ++ NODE_T *end_p = NEXT (q); ++ ++ /* Skip joined list of revelations and make branch until the enclosed ++ clause, DEF_SYMBOL or POSTLUDE_SYMBOL. */ ++ while (a68_is_one_of (end_p, BOLD_TAG, PUBLIC_SYMBOL, COMMA_SYMBOL, STOP)) ++ FORWARD (end_p); ++ ++ if (IS (end_p, DEF_SYMBOL)) ++ { ++ FORWARD (end_p); ++ if (IS (end_p, POSTLUDE_SYMBOL)) ++ FORWARD (end_p); ++ if (IS (end_p, FED_SYMBOL)) ++ { ++ ATTRIBUTE (q) = ALT_ACCESS_SYMBOL; ++ a68_make_sub (q, end_p, ALT_ACCESS_SYMBOL); ++ } ++ } ++ else ++ a68_make_sub (q, end_p, ACCESS_SYMBOL); ++ } ++ } ++} ++ ++/* Make branch of BEGIN .. END. */ ++ ++static NODE_T * ++top_down_begin (NODE_T *begin_p) ++{ ++ NODE_T *end_p = top_down_series (NEXT (begin_p)); ++ ++ if (end_p == NO_NODE || !IS (end_p, END_SYMBOL)) ++ { ++ top_down_diagnose (begin_p, end_p, ENCLOSED_CLAUSE, END_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++ else ++ { ++ a68_make_sub (begin_p, end_p, BEGIN_SYMBOL); ++ return NEXT (begin_p); ++ } ++} ++ ++/* Make branch of ( .. ). */ ++ ++static NODE_T * ++top_down_open (NODE_T *open_p) ++{ ++ NODE_T *then_bar_p = top_down_series (NEXT (open_p)), *elif_bar_p; ++ ++ if (then_bar_p != NO_NODE && IS (then_bar_p, CLOSE_SYMBOL)) ++ { ++ a68_make_sub (open_p, then_bar_p, OPEN_SYMBOL); ++ return NEXT (open_p); ++ } ++ ++ if (then_bar_p == NO_NODE || !IS (then_bar_p, THEN_BAR_SYMBOL)) ++ { ++ top_down_diagnose (open_p, then_bar_p, ENCLOSED_CLAUSE, STOP); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (open_p, PREVIOUS (then_bar_p), OPEN_SYMBOL); ++ elif_bar_p = top_down_series (NEXT (then_bar_p)); ++ if (elif_bar_p != NO_NODE && IS (elif_bar_p, CLOSE_SYMBOL)) ++ { ++ a68_make_sub (then_bar_p, PREVIOUS (elif_bar_p), THEN_BAR_SYMBOL); ++ a68_make_sub (open_p, elif_bar_p, OPEN_SYMBOL); ++ return NEXT (open_p); ++ } ++ ++ if (elif_bar_p != NO_NODE && IS (elif_bar_p, THEN_BAR_SYMBOL)) ++ { ++ NODE_T *close_p = top_down_series (NEXT (elif_bar_p)); ++ ++ if (close_p == NO_NODE || !IS (close_p, CLOSE_SYMBOL)) ++ { ++ top_down_diagnose (open_p, elif_bar_p, ENCLOSED_CLAUSE, CLOSE_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (then_bar_p, PREVIOUS (elif_bar_p), THEN_BAR_SYMBOL); ++ a68_make_sub (elif_bar_p, PREVIOUS (close_p), THEN_BAR_SYMBOL); ++ a68_make_sub (open_p, close_p, OPEN_SYMBOL); ++ return NEXT (open_p); ++ } ++ ++ if (elif_bar_p != NO_NODE && IS (elif_bar_p, ELSE_BAR_SYMBOL)) ++ { ++ NODE_T *close_p = top_down_open (elif_bar_p); ++ a68_make_sub (then_bar_p, PREVIOUS (elif_bar_p), THEN_BAR_SYMBOL); ++ a68_make_sub (open_p, elif_bar_p, OPEN_SYMBOL); ++ return close_p; ++ } ++ else ++ { ++ top_down_diagnose (open_p, elif_bar_p, ENCLOSED_CLAUSE, CLOSE_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++} ++ ++/* Make branch of [ .. ]. */ ++ ++static NODE_T * ++top_down_sub (NODE_T *sub_p) ++{ ++ NODE_T *bus_p = top_down_series (NEXT (sub_p)); ++ ++ if (bus_p != NO_NODE && IS (bus_p, BUS_SYMBOL)) ++ { ++ a68_make_sub (sub_p, bus_p, SUB_SYMBOL); ++ return NEXT (sub_p); ++ } ++ else ++ { ++ top_down_diagnose (sub_p, bus_p, 0, BUS_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++} ++ ++/* Make branch of IF .. THEN .. ELSE .. FI. */ ++ ++static NODE_T * ++top_down_if (NODE_T * if_p) ++{ ++ NODE_T *then_p = top_down_series (NEXT (if_p)), *elif_p; ++ ++ if (then_p == NO_NODE || !IS (then_p, THEN_SYMBOL)) ++ { ++ top_down_diagnose (if_p, then_p, CONDITIONAL_CLAUSE, THEN_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (if_p, PREVIOUS (then_p), IF_SYMBOL); ++ ++ elif_p = top_down_series (NEXT (then_p)); ++ if (elif_p != NO_NODE && IS (elif_p, FI_SYMBOL)) ++ { ++ a68_make_sub (then_p, PREVIOUS (elif_p), THEN_SYMBOL); ++ a68_make_sub (if_p, elif_p, IF_SYMBOL); ++ return NEXT (if_p); ++ } ++ ++ if (elif_p != NO_NODE && IS (elif_p, ELSE_SYMBOL)) ++ { ++ NODE_T *fi_p = top_down_series (NEXT (elif_p)); ++ ++ if (fi_p == NO_NODE || !IS (fi_p, FI_SYMBOL)) ++ { ++ top_down_diagnose (if_p, fi_p, CONDITIONAL_CLAUSE, FI_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ else ++ { ++ a68_make_sub (then_p, PREVIOUS (elif_p), THEN_SYMBOL); ++ a68_make_sub (elif_p, PREVIOUS (fi_p), ELSE_SYMBOL); ++ a68_make_sub (if_p, fi_p, IF_SYMBOL); ++ return NEXT (if_p); ++ } ++ } ++ ++ if (elif_p != NO_NODE && IS (elif_p, ELIF_SYMBOL)) ++ { ++ NODE_T *fi_p = top_down_if (elif_p); ++ ++ a68_make_sub (then_p, PREVIOUS (elif_p), THEN_SYMBOL); ++ a68_make_sub (if_p, elif_p, IF_SYMBOL); ++ return fi_p; ++ } ++ else ++ { ++ top_down_diagnose (if_p, elif_p, CONDITIONAL_CLAUSE, FI_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++} ++ ++/* Make branch of CASE .. IN .. OUT .. ESAC. */ ++ ++static NODE_T * ++top_down_case (NODE_T *case_p) ++{ ++ NODE_T *in_p = top_down_series (NEXT (case_p)), *ouse_p; ++ ++ if (in_p == NO_NODE || !IS (in_p, IN_SYMBOL)) ++ { ++ top_down_diagnose (case_p, in_p, ENCLOSED_CLAUSE, IN_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (case_p, PREVIOUS (in_p), CASE_SYMBOL); ++ ++ ouse_p = top_down_series (NEXT (in_p)); ++ if (ouse_p != NO_NODE && IS (ouse_p, ESAC_SYMBOL)) ++ { ++ a68_make_sub (in_p, PREVIOUS (ouse_p), IN_SYMBOL); ++ a68_make_sub (case_p, ouse_p, CASE_SYMBOL); ++ return NEXT (case_p); ++ } ++ ++ if (ouse_p != NO_NODE && IS (ouse_p, OUT_SYMBOL)) ++ { ++ NODE_T *esac_p = top_down_series (NEXT (ouse_p)); ++ ++ if (esac_p == NO_NODE || !IS (esac_p, ESAC_SYMBOL)) ++ { ++ top_down_diagnose (case_p, esac_p, ENCLOSED_CLAUSE, ESAC_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ else ++ { ++ a68_make_sub (in_p, PREVIOUS (ouse_p), IN_SYMBOL); ++ a68_make_sub (ouse_p, PREVIOUS (esac_p), OUT_SYMBOL); ++ a68_make_sub (case_p, esac_p, CASE_SYMBOL); ++ return NEXT (case_p); ++ } ++ } ++ ++ if (ouse_p != NO_NODE && IS (ouse_p, OUSE_SYMBOL)) ++ { ++ NODE_T *esac_p = top_down_case (ouse_p); ++ ++ a68_make_sub (in_p, PREVIOUS (ouse_p), IN_SYMBOL); ++ a68_make_sub (case_p, ouse_p, CASE_SYMBOL); ++ return esac_p; ++ } ++ else ++ { ++ top_down_diagnose (case_p, ouse_p, ENCLOSED_CLAUSE, ESAC_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++} ++ ++/* Skip a unit. */ ++ ++static NODE_T * ++top_down_skip_unit (NODE_T *p) ++{ ++ while (p != NO_NODE && !a68_is_unit_terminator (p)) ++ { ++ if (IS (p, BEGIN_SYMBOL)) ++ p = top_down_begin (p); ++ else if (IS (p, SUB_SYMBOL)) ++ p = top_down_sub (p); ++ else if (IS (p, OPEN_SYMBOL)) ++ p = top_down_open (p); ++ else if (IS (p, IF_SYMBOL)) ++ p = top_down_if (p); ++ else if (IS (p, CASE_SYMBOL)) ++ p = top_down_case (p); ++ else ++ FORWARD (p); ++ } ++ return p; ++} ++ ++static NODE_T *top_down_skip_format (NODE_T *); ++ ++/* Make branch of ( .. ) in a format. */ ++ ++static NODE_T * ++top_down_format_open (NODE_T *open_p) ++{ ++ NODE_T *close_p = top_down_skip_format (NEXT (open_p)); ++ ++ if (close_p != NO_NODE && IS (close_p, FORMAT_CLOSE_SYMBOL)) ++ { ++ a68_make_sub (open_p, close_p, FORMAT_OPEN_SYMBOL); ++ return NEXT (open_p); ++ } ++ else ++ { ++ top_down_diagnose (open_p, close_p, 0, FORMAT_CLOSE_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++} ++ ++/* Skip a format text. */ ++ ++static NODE_T * ++top_down_skip_format (NODE_T *p) ++{ ++ while (p != NO_NODE) ++ { ++ if (IS (p, FORMAT_OPEN_SYMBOL)) ++ p = top_down_format_open (p); ++ else if (a68_is_one_of (p, FORMAT_CLOSE_SYMBOL, FORMAT_DELIMITER_SYMBOL, STOP)) ++ return p; ++ else ++ FORWARD (p); ++ } ++ return NO_NODE; ++} ++ ++/* Make branch of $ .. $. */ ++ ++static void ++top_down_formats (NODE_T * p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (SUB (q) != NO_NODE) ++ top_down_formats (SUB (q)); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, FORMAT_DELIMITER_SYMBOL)) ++ { ++ NODE_T *f = NEXT (q); ++ ++ while (f != NO_NODE && !IS (f, FORMAT_DELIMITER_SYMBOL)) ++ { ++ if (IS (f, FORMAT_OPEN_SYMBOL)) ++ f = top_down_format_open (f); ++ else ++ f = NEXT (f); ++ } ++ ++ if (f == NO_NODE) ++ { ++ top_down_diagnose (p, f, FORMAT_TEXT, FORMAT_DELIMITER_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ else ++ a68_make_sub (q, f, FORMAT_DELIMITER_SYMBOL); ++ } ++ } ++} ++ ++/* Skip prelude packet. */ ++ ++static NODE_T * ++top_down_prelude_packet (NODE_T *p) ++{ ++ while (p != NO_NODE) ++ { ++ if (IS (p, DEF_SYMBOL)) ++ p = top_down_def (p); ++ else ++ FORWARD (p); ++ } ++ ++ return p; ++} ++ ++/* Skip particular program. */ ++ ++static NODE_T * ++top_down_particular_program (NODE_T *p) ++{ ++ (void) top_down_series (p); ++ return p; ++} ++ ++/* Make branches of phrases for the bottom-up parser. */ ++ ++void ++a68_top_down_parser (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ ++ if (!setjmp (A68_PARSER (top_down_crash_exit))) ++ { ++ if (IS (p, MODULE_SYMBOL)) ++ (void) top_down_prelude_packet (p); ++ else ++ (void) top_down_particular_program (p); ++ } ++ ++ top_down_loops (p); ++ top_down_formats (p); ++ top_down_access (p); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-victal.cc +@@ -0,0 +1,362 @@ ++/* Syntax check for formal, actual and virtual declarers. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++static bool victal_check_declarer (NODE_T *, int); ++ ++/* Check generator. */ ++ ++static void ++victal_check_generator (NODE_T * p) ++{ ++ if (!victal_check_declarer (NEXT (p), ACTUAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "actual declarer"); ++} ++ ++/* Check formal pack. */ ++ ++static void ++victal_check_formal_pack (NODE_T *p, int x, bool *z) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, FORMAL_DECLARERS)) ++ victal_check_formal_pack (SUB (p), x, z); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) ++ victal_check_formal_pack (NEXT (p), x, z); ++ else if (IS (p, FORMAL_DECLARERS_LIST)) ++ { ++ victal_check_formal_pack (NEXT (p), x, z); ++ victal_check_formal_pack (SUB (p), x, z); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ victal_check_formal_pack (NEXT (p), x, z); ++ (*z) &= victal_check_declarer (SUB (p), x); ++ } ++ } ++} ++ ++/* Check operator declaration. */ ++ ++static void ++victal_check_operator_dec (NODE_T *p) ++{ ++ if (IS (NEXT (p), FORMAL_DECLARERS)) ++ { ++ bool z = true; ++ victal_check_formal_pack (NEXT (p), FORMAL_DECLARER_MARK, &z); ++ if (!z) ++ a68_error (p, "Y expected", "formal declarers"); ++ FORWARD (p); ++ } ++ if (!victal_check_declarer (NEXT (p), FORMAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "formal declarer"); ++} ++ ++/* Check mode declaration. */ ++ ++static void ++victal_check_mode_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, MODE_DECLARATION)) ++ { ++ victal_check_mode_dec (SUB (p)); ++ victal_check_mode_dec (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, MODE_SYMBOL, DEFINING_INDICANT, STOP) ++ || a68_is_one_of (p, EQUALS_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ victal_check_mode_dec (NEXT (p)); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ if (!victal_check_declarer (p, ACTUAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "actual declarer"); ++ } ++ } ++} ++ ++/* Check variable declaration. */ ++ ++static void ++victal_check_variable_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, VARIABLE_DECLARATION)) ++ { ++ victal_check_variable_dec (SUB (p)); ++ victal_check_variable_dec (NEXT (p)); ++ } ++ else ++ { ++ if (IS (p, QUALIFIER)) ++ FORWARD (p); ++ ++ if (a68_is_one_of (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, STOP) ++ || IS (p, COMMA_SYMBOL)) ++ victal_check_variable_dec (NEXT (p)); ++ else if (IS (p, UNIT)) ++ a68_victal_checker (SUB (p)); ++ else if (IS (p, DECLARER)) ++ { ++ if (!victal_check_declarer (p, ACTUAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "actual declarer"); ++ victal_check_variable_dec (NEXT (p)); ++ } ++ } ++ } ++} ++ ++/* Check identity declaration. */ ++ ++static void ++victal_check_identity_dec (NODE_T * p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, IDENTITY_DECLARATION)) ++ { ++ victal_check_identity_dec (SUB (p)); ++ victal_check_identity_dec (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, DEFINING_IDENTIFIER, EQUALS_SYMBOL, COMMA_SYMBOL, STOP)) ++ victal_check_identity_dec (NEXT (p)); ++ else if (IS (p, UNIT)) ++ a68_victal_checker (SUB (p)); ++ else if (IS (p, DECLARER)) ++ { ++ if (!victal_check_declarer (p, FORMAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "formal declarer"); ++ victal_check_identity_dec (NEXT (p)); ++ } ++ } ++} ++ ++/* Check routine pack. */ ++ ++static void ++victal_check_routine_pack (NODE_T *p, int x, bool *z) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, PARAMETER_PACK)) ++ victal_check_routine_pack (SUB (p), x, z); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) ++ victal_check_routine_pack (NEXT (p), x, z); ++ else if (a68_is_one_of (p, PARAMETER_LIST, PARAMETER, STOP)) ++ { ++ victal_check_routine_pack (NEXT (p), x, z); ++ victal_check_routine_pack (SUB (p), x, z); ++ } ++ else if (IS (p, DECLARER)) ++ *z &= victal_check_declarer (SUB (p), x); ++ } ++} ++ ++/* Check routine text. */ ++ ++static void ++victal_check_routine_text (NODE_T *p) ++{ ++ if (IS (p, PARAMETER_PACK)) ++ { ++ bool z = true; ++ victal_check_routine_pack (p, FORMAL_DECLARER_MARK, &z); ++ if (!z) ++ a68_error (p, "Y expected", "formal declarers"); ++ FORWARD (p); ++ } ++ if (!victal_check_declarer (p, FORMAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "formal declarer"); ++ a68_victal_checker (NEXT (p)); ++} ++ ++/* Check structure pack. */ ++ ++static void ++victal_check_structure_pack (NODE_T *p, int x, bool *z) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, STRUCTURE_PACK)) ++ victal_check_structure_pack (SUB (p), x, z); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) ++ victal_check_structure_pack (NEXT (p), x, z); ++ else if (a68_is_one_of (p, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD, STOP)) ++ { ++ victal_check_structure_pack (NEXT (p), x, z); ++ victal_check_structure_pack (SUB (p), x, z); ++ } ++ else if (IS (p, DECLARER)) ++ (*z) &= victal_check_declarer (SUB (p), x); ++ } ++} ++ ++/* Check union pack. */ ++ ++static void ++victal_check_union_pack (NODE_T * p, int x, bool * z) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, UNION_PACK)) ++ victal_check_union_pack (SUB (p), x, z); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, VOID_SYMBOL, STOP)) ++ victal_check_union_pack (NEXT (p), x, z); ++ else if (IS (p, UNION_DECLARER_LIST)) ++ { ++ victal_check_union_pack (NEXT (p), x, z); ++ victal_check_union_pack (SUB (p), x, z); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ victal_check_union_pack (NEXT (p), x, z); ++ (*z) &= victal_check_declarer (SUB (p), FORMAL_DECLARER_MARK); ++ } ++ } ++} ++ ++/* Check declarer. */ ++ ++static bool ++victal_check_declarer (NODE_T *p, int x) ++{ ++ if (p == NO_NODE) ++ return false; ++ else if (IS (p, DECLARER)) ++ return victal_check_declarer (SUB (p), x); ++ else if (a68_is_one_of (p, LONGETY, SHORTETY, STOP)) ++ return true; ++ else if (a68_is_one_of (p, VOID_SYMBOL, INDICANT, STANDARD, STOP)) ++ return true; ++ else if (IS_REF (p)) ++ return victal_check_declarer (NEXT (p), VIRTUAL_DECLARER_MARK); ++ else if (IS_FLEX (p)) ++ return victal_check_declarer (NEXT (p), x); ++ else if (IS (p, BOUNDS)) ++ { ++ a68_victal_checker (SUB (p)); ++ if (x == FORMAL_DECLARER_MARK) ++ { ++ a68_error (p, "Y expected", "formal bounds"); ++ (void) victal_check_declarer (NEXT (p), x); ++ return true; ++ } ++ else if (x == VIRTUAL_DECLARER_MARK) ++ { ++ a68_error (p, "Y expected", "virtual bounds"); ++ (void) victal_check_declarer (NEXT (p), x); ++ return true; ++ } ++ else ++ return victal_check_declarer (NEXT (p), x); ++ } ++ else if (IS (p, FORMAL_BOUNDS)) ++ { ++ a68_victal_checker (SUB (p)); ++ if (x == ACTUAL_DECLARER_MARK) ++ { ++ a68_error (p, "Y expected", "actual bounds"); ++ (void) victal_check_declarer (NEXT (p), x); ++ return true; ++ } ++ else ++ return victal_check_declarer (NEXT (p), x); ++ } ++ else if (IS (p, STRUCT_SYMBOL)) ++ { ++ bool z = true; ++ victal_check_structure_pack (NEXT (p), x, &z); ++ return z; ++ } ++ else if (IS (p, UNION_SYMBOL)) ++ { ++ bool z = true; ++ victal_check_union_pack (NEXT (p), FORMAL_DECLARER_MARK, &z); ++ if (!z) ++ a68_error (p, "Y expected", "formal declarer pack"); ++ return true; ++ } ++ else if (IS (p, PROC_SYMBOL)) ++ { ++ if (IS (NEXT (p), FORMAL_DECLARERS)) ++ { ++ bool z = true; ++ victal_check_formal_pack (NEXT (p), FORMAL_DECLARER_MARK, &z); ++ if (!z) ++ a68_error (p, "Y expected", "formal declarer"); ++ FORWARD (p); ++ } ++ if (!victal_check_declarer (NEXT (p), FORMAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "formal declarer"); ++ return true; ++ } ++ else ++ return false; ++} ++ ++/* Check cast. */ ++ ++static void ++victal_check_cast (NODE_T *p) ++{ ++ if (!victal_check_declarer (p, FORMAL_DECLARER_MARK)) ++ { ++ a68_error (p, "Y expected", "formal declarer"); ++ a68_victal_checker (NEXT (p)); ++ } ++} ++ ++/* Driver for checking VICTALITY of declarers. */ ++ ++void ++a68_victal_checker (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, MODE_DECLARATION)) ++ victal_check_mode_dec (SUB (p)); ++ else if (IS (p, VARIABLE_DECLARATION)) ++ victal_check_variable_dec (SUB (p)); ++ else if (IS (p, IDENTITY_DECLARATION)) ++ victal_check_identity_dec (SUB (p)); ++ else if (IS (p, GENERATOR)) ++ victal_check_generator (SUB (p)); ++ else if (IS (p, ROUTINE_TEXT)) ++ victal_check_routine_text (SUB (p)); ++ else if (IS (p, OPERATOR_PLAN)) ++ victal_check_operator_dec (SUB (p)); ++ else if (IS (p, CAST)) ++ victal_check_cast (SUB (p)); ++ else ++ a68_victal_checker (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser.cc +@@ -0,0 +1,1181 @@ ++/* ALGOL 68 parser. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* ++ This is a Mailloux-type parser driver. ++ ++ The Algol 68 grammar is a two level (Van Wijngaarden, "VW") grammar ++ that incorporates, as syntactical rules, the semantical rules in ++ other languages. Examples are correct use of symbols, modes and ++ scope. ++ ++ This code constitutes an effective "VW Algol 68 parser". A ++ pragmatic approach was chosen since in the early days of Algol 68, ++ many "ab initio" implementations failed, probably because ++ techniques to parse a language like Algol 68 had yet to be ++ invented. ++ ++ This is a Mailloux-type parser, in the sense that it scans a ++ "phrase" for definitions needed for parsing. Algol 68 allows for ++ tags to be used before they are defined, which gives freedom in ++ top-down programming. ++ ++ B. J. Mailloux. On the implementation of Algol 68. ++ Thesis, Universiteit van Amsterdam (Mathematisch Centrum) [1968]. ++ ++ Technically, Mailloux's approach renders the two-level grammar ++ LALR. ++ ++ First part of the parser is the scanner. The source file is read, is ++ tokenised. The result is a linear list of tokens that is input for the ++ parser, that will transform the linear list into a syntax tree. ++ ++ This front-end tokenises all symbols before the bottom-up parser is invoked. ++ This means that scanning does not use information from the parser. The ++ scanner does of course some rudimentary parsing. ++ ++ The scanner supports two stropping regimes: "bold" (or "upper") and ++ "quote". Examples of both: ++ ++ bold stropping: BEGIN INT i = 1, j = 1; print (i + j) END ++ ++ quote stropping: 'BEGIN' 'INT' I = 1, J = 1; PRINT (I + J) 'END' ++ ++ Quote stropping was used frequently in the (excusez-le-mot) ++ punch-card age. Hence, bold stropping is the default. There also ++ existed point stropping, but that has not been implemented here. ++ ++ Next part of the parser is a recursive-descent type to check ++ parenthesis. Also a first set-up is made of symbol tables, needed ++ by the bottom-up parser. Next part is the bottom-up parser, that ++ parses without knowing modes while parsing and reducing. It can ++ therefore not exchange "[]" with "()" as was blessed by the Revised ++ Report. This is solved by treating CALL and SLICE as equivalent for ++ the moment and letting the mode checker sort it out later. ++ ++ Parsing progresses in various phases to avoid spurious diagnostics ++ from a recovering parser. Every phase "tightens" the grammar more. ++ An error in any phase makes the parser quit when that phase ends. ++ The parser is forgiving in case of superfluous semicolons. ++ ++ These are the parser phases: ++ ++ (1) Parenthesis are checked to see whether they match. Then, a top-down ++ parser determines the basic-block structure of the program ++ so symbol tables can be set up that the bottom-up parser will consult ++ as you can define things before they are applied. ++ ++ (2) A bottom-up parser resolves the structure of the program. ++ ++ (3) After the symbol tables have been finalised, a small rearrangement of the ++ tree may be required where JUMPs have no GOTO. This leads to the ++ non-standard situation that JUMPs without GOTO can have the syntactic ++ position of a PRIMARY, SECONDARY or TERTIARY. The bottom-up parser also ++ does not check VICTAL correctness of declarers. This is done separately. ++ ++ The parser sets up symbol tables and populates them as far as needed to parse ++ the source. After the bottom-up parser terminates succesfully, the symbol tables ++ are completed. ++ ++ (4) Next, modes are collected and rules for well-formedness and structural ++ equivalence are applied. Then the symbol-table is completed now moids are ++ all known. ++ ++ (5) Next phases are the mode checker and coercion inserter. The syntax tree is ++ traversed to determine and check all modes, and to select operators. Then ++ the tree is traversed again to insert coercions. ++ ++ (6) A static scope checker detects where objects are transported out of scope. ++ At run time, a dynamic scope checker will check that what the static scope ++ checker cannot see. ++ ++ (7) A serial-clause dynamic stack allocation (DSA) phase annotates the ++ serial clauses that contain phrases whose elaboration may result in ++ dynamic stack adjustments. ++*/ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "diagnostic.h" ++#include "tree.h" ++ ++#include "a68.h" ++ ++/* Global state kept by the parser. */ ++ ++PARSER_T a68_parser_state; ++ ++/* A few forward declarations of functions defined below. */ ++ ++static void make_special_mode (MOID_T ** n, int m); ++static void tie_label_to_serial (NODE_T *p); ++static void tie_label_to_unit (NODE_T *p); ++ ++/* Is_ref_refety_flex. */ ++ ++bool ++a68_is_ref_refety_flex (MOID_T *m) ++{ ++ if (IS_REF_FLEX (m)) ++ return true; ++ else if (IS_REF (m)) ++ return a68_is_ref_refety_flex (SUB (m)); ++ else ++ return false; ++} ++ ++/* Count number of operands in operator parameter list. */ ++ ++int ++a68_count_operands (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, DECLARER)) ++ return a68_count_operands (NEXT (p)); ++ else if (IS (p, COMMA_SYMBOL)) ++ return 1 + a68_count_operands (NEXT (p)); ++ else ++ return a68_count_operands (NEXT (p)) + a68_count_operands (SUB (p)); ++ } ++ else ++ return 0; ++} ++ ++/* Count formal bounds in declarer in tree. */ ++ ++int ++a68_count_formal_bounds (NODE_T * p) ++{ ++ if (p == NO_NODE) ++ return 0; ++ else ++ { ++ if (IS (p, COMMA_SYMBOL)) ++ return 1; ++ else ++ return a68_count_formal_bounds (NEXT (p)) + a68_count_formal_bounds (SUB (p)); ++ } ++} ++ ++/* Count pictures. */ ++ ++void ++a68_count_pictures (NODE_T *p, int *k) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, PICTURE)) ++ (*k)++; ++ a68_count_pictures (SUB (p), k); ++ } ++} ++ ++/* Whether token cannot follow semicolon or EXIT. */ ++ ++bool ++a68_is_semicolon_less (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case BUS_SYMBOL: ++ case CLOSE_SYMBOL: ++ case END_SYMBOL: ++ case SEMI_SYMBOL: ++ case EXIT_SYMBOL: ++ case THEN_BAR_SYMBOL: ++ case ELSE_BAR_SYMBOL: ++ case THEN_SYMBOL: ++ case ELIF_SYMBOL: ++ case ELSE_SYMBOL: ++ case FI_SYMBOL: ++ case IN_SYMBOL: ++ case OUT_SYMBOL: ++ case OUSE_SYMBOL: ++ case ESAC_SYMBOL: ++ case OD_SYMBOL: ++ case FED_SYMBOL: ++ case POSTLUDE_SYMBOL: ++ return true; ++ default: ++ return false; ++ } ++} ++ ++/* Whether formal bounds. */ ++ ++bool ++a68_is_formal_bounds (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return true; ++ ++ switch (ATTRIBUTE (p)) ++ { ++ case OPEN_SYMBOL: ++ case CLOSE_SYMBOL: ++ case SUB_SYMBOL: ++ case BUS_SYMBOL: ++ case COMMA_SYMBOL: ++ case COLON_SYMBOL: ++ case INT_DENOTATION: ++ case IDENTIFIER: ++ case OPERATOR: ++ return (a68_is_formal_bounds (SUB (p)) ++ && a68_is_formal_bounds (NEXT (p))); ++ default: ++ return false; ++ } ++} ++ ++/* Whether token terminates a unit. */ ++ ++bool ++a68_is_unit_terminator (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case BUS_SYMBOL: ++ case CLOSE_SYMBOL: ++ case END_SYMBOL: ++ case SEMI_SYMBOL: ++ case EXIT_SYMBOL: ++ case COMMA_SYMBOL: ++ case THEN_BAR_SYMBOL: ++ case ELSE_BAR_SYMBOL: ++ case THEN_SYMBOL: ++ case ELIF_SYMBOL: ++ case ELSE_SYMBOL: ++ case FI_SYMBOL: ++ case IN_SYMBOL: ++ case OUT_SYMBOL: ++ case OUSE_SYMBOL: ++ case ESAC_SYMBOL: ++ case FED_SYMBOL: ++ case POSTLUDE_SYMBOL: ++ return true; ++ default: ++ return false; ++ } ++} ++ ++/* Whether token is a unit-terminator in a loop clause. */ ++ ++bool ++a68_is_loop_keyword (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case FOR_SYMBOL: ++ case FROM_SYMBOL: ++ case BY_SYMBOL: ++ case TO_SYMBOL: ++ case WHILE_SYMBOL: ++ case DO_SYMBOL: ++ return true; ++ default: ++ return false; ++ } ++} ++ ++/* Get good attribute. */ ++ ++enum a68_attribute ++a68_get_good_attribute (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case UNIT: ++ case TERTIARY: ++ case SECONDARY: ++ case PRIMARY: ++ return a68_get_good_attribute (SUB (p)); ++ default: ++ return ATTRIBUTE (p); ++ } ++} ++ ++/* Preferably don't put intelligible diagnostic here. */ ++ ++bool ++a68_dont_mark_here (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case ALT_DO_SYMBOL: ++ case ALT_EQUALS_SYMBOL: ++ case ANDF_SYMBOL: ++ case ASSERT_SYMBOL: ++ case ASSIGN_SYMBOL: ++ case ASSIGN_TO_SYMBOL: ++ case AT_SYMBOL: ++ case BEGIN_SYMBOL: ++ case BITS_SYMBOL: ++ case BOLD_COMMENT_SYMBOL: ++ case BOLD_PRAGMAT_SYMBOL: ++ case BOLD_COMMENT_BEGIN_SYMBOL: ++ case BOLD_COMMENT_END_SYMBOL: ++ case BOOL_SYMBOL: ++ case BUS_SYMBOL: ++ case BY_SYMBOL: ++ case BYTES_SYMBOL: ++ case CASE_SYMBOL: ++ case CHANNEL_SYMBOL: ++ case CHAR_SYMBOL: ++ case CLOSE_SYMBOL: ++ case COLON_SYMBOL: ++ case COMMA_SYMBOL: ++ case COMPLEX_SYMBOL: ++ case COMPL_SYMBOL: ++ case DO_SYMBOL: ++ case ELIF_SYMBOL: ++ case ELSE_BAR_SYMBOL: ++ case ELSE_SYMBOL: ++ case EMPTY_SYMBOL: ++ case END_SYMBOL: ++ case EQUALS_SYMBOL: ++ case ESAC_SYMBOL: ++ case EXIT_SYMBOL: ++ case FALSE_SYMBOL: ++ case FILE_SYMBOL: ++ case FI_SYMBOL: ++ case FLEX_SYMBOL: ++ case FOR_SYMBOL: ++ case FROM_SYMBOL: ++ case GO_SYMBOL: ++ case GOTO_SYMBOL: ++ case HEAP_SYMBOL: ++ case IF_SYMBOL: ++ case IN_SYMBOL: ++ case INT_SYMBOL: ++ case ISNT_SYMBOL: ++ case IS_SYMBOL: ++ case LOC_SYMBOL: ++ case LONG_SYMBOL: ++ case MAIN_SYMBOL: ++ case MODE_SYMBOL: ++ case NIL_SYMBOL: ++ case OD_SYMBOL: ++ case OF_SYMBOL: ++ case OPEN_SYMBOL: ++ case OP_SYMBOL: ++ case ORF_SYMBOL: ++ case OUSE_SYMBOL: ++ case OUT_SYMBOL: ++ case PAR_SYMBOL: ++ case POINT_SYMBOL: ++ case PRIO_SYMBOL: ++ case PROC_SYMBOL: ++ case REAL_SYMBOL: ++ case REF_SYMBOL: ++ case ROWS_SYMBOL: ++ case ROW_SYMBOL: ++ case SEMA_SYMBOL: ++ case SEMI_SYMBOL: ++ case SHORT_SYMBOL: ++ case SKIP_SYMBOL: ++ case STRING_SYMBOL: ++ case STRUCT_SYMBOL: ++ case STYLE_I_COMMENT_SYMBOL: ++ case STYLE_II_COMMENT_SYMBOL: ++ case STYLE_I_PRAGMAT_SYMBOL: ++ case SUB_SYMBOL: ++ case THEN_BAR_SYMBOL: ++ case THEN_SYMBOL: ++ case TO_SYMBOL: ++ case TRUE_SYMBOL: ++ case UNION_SYMBOL: ++ case VOID_SYMBOL: ++ case WHILE_SYMBOL: ++ case SERIAL_CLAUSE: ++ case ENQUIRY_CLAUSE: ++ case INITIALISER_SERIES: ++ case DECLARATION_LIST: ++ case DEF_SYMBOL: ++ case FED_SYMBOL: ++ case POSTLUDE_SYMBOL: ++ case ACCESS_SYMBOL: ++ return true; ++ default: ++ return false; ++ } ++} ++ ++/* Renumber nodes in the given subtree P, starting with number N. */ ++ ++static void ++renumber_nodes (NODE_T *p, int *n) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ NUMBER (p) = (*n)++; ++ renumber_nodes (SUB (p), n); ++ } ++} ++ ++/* Parse an ALGOL 68 source file. */ ++ ++void ++a68_parser (const char *filename) ++{ ++ int renum = 0; ++ ++ /* Initialisation. */ ++ A68 (top_keyword) = NO_KEYWORD; ++ A68 (top_token) = NO_TOKEN; ++ A68_PARSER (error_tag) = (TAG_T *) a68_new_tag (); ++ TOP_NODE (&A68_JOB) = NO_NODE; ++ TOP_MOID (&A68_JOB) = NO_MOID; ++ TOP_LINE (&A68_JOB) = NO_LINE; ++ STANDENV_MOID (&A68_JOB) = NO_MOID; ++ a68_set_up_tables (); ++ ERROR_COUNT (&A68_JOB) = WARNING_COUNT (&A68_JOB) = 0; ++ ++ /* Tokeniser. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ bool ok = a68_lexical_analyser (filename); ++ ++ if (!ok) ++ return; ++ ++ /* An empty file is not a valid program. */ ++ if (TOP_NODE (&A68_JOB) == NO_NODE) ++ { ++ a68_error (NO_NODE, "file is empty, expected a program"); ++ return; ++ } ++ ++ TREE_LISTING_SAFE (&A68_JOB) = true; ++ renum = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); ++ } ++ ++ /* Final initialisations. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ A68_STANDENV = NO_TABLE; ++ a68_init_postulates (); ++ A68 (mode_count) = 0; ++ make_special_mode (&M_HIP, A68 (mode_count)++); ++ make_special_mode (&M_UNDEFINED, A68 (mode_count)++); ++ make_special_mode (&M_ERROR, A68 (mode_count)++); ++ make_special_mode (&M_VACUUM, A68 (mode_count)++); ++ make_special_mode (&M_C_STRING, A68 (mode_count)++); ++ make_special_mode (&M_COLLITEM, A68 (mode_count)++); ++ } ++ ++ /* Handle pragmats. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_handle_pragmats (TOP_NODE (&A68_JOB)); ++ ++ /* Top-down parser. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_check_parenthesis (TOP_NODE (&A68_JOB)); ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ if (OPTION_BRACKETS (&A68_JOB)) ++ a68_substitute_brackets (TOP_NODE (&A68_JOB)); ++ A68 (symbol_table_count) = 0; ++ A68_STANDENV = a68_new_symbol_table (NO_TABLE); ++ LEVEL (A68_STANDENV) = 0; ++ a68_top_down_parser (TOP_NODE (&A68_JOB)); ++ // printf ("AFTER TOP-DOWN\n"); ++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB)); ++ } ++ ++ renum = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); ++ } ++ ++ /* Standard environment builder. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ TABLE (TOP_NODE (&A68_JOB)) = a68_new_symbol_table (A68_STANDENV); ++ a68_make_standard_environ (); ++ STANDENV_MOID (&A68_JOB) = TOP_MOID (&A68_JOB); ++ } ++ ++ /* Bottom-up parser. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_preliminary_symbol_table_setup (TOP_NODE (&A68_JOB)); ++ // printf ("AFTER PRELIMINARY SYMBOL TABLE SETUP\n"); ++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB), true); ++ a68_bottom_up_parser (TOP_NODE (&A68_JOB)); ++ a68_bottom_up_coalesce_pub (TOP_NODE (&A68_JOB)); ++ renum = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); ++ } ++ ++ // printf ("AFTER BOTTOM-UP\n"); ++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB), true); ++ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_bottom_up_error_check (TOP_NODE (&A68_JOB)); ++ a68_victal_checker (TOP_NODE (&A68_JOB)); ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_finalise_symbol_table_setup (TOP_NODE (&A68_JOB), 1); ++ // printf ("AFTER FINALISE SYMBOL TABLE SETUP\n"); ++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB), true, true); ++ NEST (TABLE (TOP_NODE (&A68_JOB))) = A68 (symbol_table_count) = 3; ++ a68_reset_symbol_table_nest_count (TOP_NODE (&A68_JOB)); ++ a68_fill_symbol_table_outer (TOP_NODE (&A68_JOB), TABLE (TOP_NODE (&A68_JOB))); ++ a68_set_nest (TOP_NODE (&A68_JOB), NO_NODE); ++ a68_set_proc_level (TOP_NODE (&A68_JOB), 1); ++ } ++ renum = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); ++ } ++ ++ /* Mode table builder. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_make_moid_list (&A68_JOB); ++ CROSS_REFERENCE_SAFE (&A68_JOB) = true; ++ ++ /* Symbol table builder. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_collect_taxes (TOP_NODE (&A68_JOB)); ++ ++ /* Post parser. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_rearrange_goto_less_jumps (TOP_NODE (&A68_JOB)); ++ ++ /* Mode checker. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_mode_checker (TOP_NODE (&A68_JOB)); ++ ++ /* Coercion inserter. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_coercion_inserter (TOP_NODE (&A68_JOB)); ++ renum = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); ++ } ++ ++ /* Application checker. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_mark_moids (TOP_NODE (&A68_JOB)); ++ a68_mark_auxilliary (TOP_NODE (&A68_JOB)); ++ a68_jumps_from_procs (TOP_NODE (&A68_JOB)); ++ a68_warn_for_unused_tags (TOP_NODE (&A68_JOB)); ++ } ++ ++ /* Static scope checker. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ tie_label_to_serial (TOP_NODE (&A68_JOB)); ++ tie_label_to_unit (TOP_NODE (&A68_JOB)); ++ a68_bind_routine_tags_to_tree (TOP_NODE (&A68_JOB)); ++ a68_scope_checker (TOP_NODE (&A68_JOB)); ++ } ++ ++ /* Serial dynamic stack allocation checker. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_serial_dsa (TOP_NODE (&A68_JOB)); ++ } ++ ++ /* Finalise syntax tree. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ int num = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &num); ++ NEST (TABLE (TOP_NODE (&A68_JOB))) = A68 (symbol_table_count) = 3; ++ a68_reset_symbol_table_nest_count (TOP_NODE (&A68_JOB)); ++ } ++} ++ ++/* New_node_info. */ ++ ++NODE_INFO_T * ++a68_new_node_info (void) ++{ ++ NODE_INFO_T *z = ggc_cleared_alloc (); ++ ++ A68 (new_node_infos)++; ++ PROCEDURE_LEVEL (z) = 0; ++ CHAR_IN_LINE (z) = NO_TEXT; ++ SYMBOL (z) = NO_TEXT; ++ PRAGMAT (z) = NO_TEXT; ++ PRAGMAT_TYPE (z) = 0; ++ PRAGMAT_LINE (z) = NO_LINE; ++ PRAGMAT_CHAR_IN_LINE (z) = NO_TEXT; ++ COMMENT (z) = NO_TEXT; ++ COMMENT_TYPE (z) = 0; ++ COMMENT_LINE (z) = NO_LINE; ++ COMMENT_CHAR_IN_LINE (z) = NO_TEXT; ++ LINE (z) = NO_LINE; ++ return z; ++} ++ ++/* New_genie_info. */ ++ ++GINFO_T * ++a68_new_genie_info (void) ++{ ++ GINFO_T *z = ggc_cleared_alloc (); ++ ++ A68 (new_genie_infos)++; ++ PARTIAL_PROC (z) = NO_MOID; ++ PARTIAL_LOCALE (z) = NO_MOID; ++ return z; ++} ++ ++/* Allocate and return a new parse tree node with proper defaults. */ ++ ++NODE_T * ++a68_new_node (void) ++{ ++ NODE_T *z = ggc_cleared_alloc (); ++ ++ A68 (new_nodes)++; ++ TABLE (z) = NO_TABLE; ++ INFO (z) = NO_NINFO; ++ GINFO (z) = NO_GINFO; ++ ATTRIBUTE (z) = STOP; ++ ANNOTATION (z) = STOP; ++ MOID (z) = NO_MOID; ++ NEXT (z) = NO_NODE; ++ PREVIOUS (z) = NO_NODE; ++ SUB (z) = NO_NODE; ++ NEST (z) = NO_NODE; ++ NON_LOCAL (z) = NO_TABLE; ++ TAX (z) = NO_TAG; ++ SEQUENCE (z) = NO_NODE; ++ PACK (z) = NO_PACK; ++ CDECL (z) = NULL_TREE; ++ DYNAMIC_STACK_ALLOCS (z) = false; ++ PUBLICIZED (z) = false; ++ return z; ++} ++ ++/* Some_node. */ ++ ++NODE_T * ++a68_some_node (const char *t) ++{ ++ NODE_T *z = a68_new_node (); ++ INFO (z) = a68_new_node_info (); ++ GINFO (z) = a68_new_genie_info (); ++ NSYMBOL (z) = t; ++ return z; ++} ++ ++/* New_symbol_table. */ ++ ++TABLE_T * ++a68_new_symbol_table (TABLE_T *p) ++{ ++ TABLE_T *z = ggc_cleared_alloc (); ++ ++ NUM (z) = A68 (symbol_table_count); ++ LEVEL (z) = A68 (symbol_table_count)++; ++ NEST (z) = A68 (symbol_table_count); ++ ATTRIBUTE (z) = 0; ++ INITIALISE_FRAME (z) = true; ++ PROC_OPS (z) = true; ++ INITIALISE_ANON (z) = true; ++ PREVIOUS (z) = p; ++ OUTER (z) = NO_TABLE; ++ IDENTIFIERS (z) = NO_TAG; ++ OPERATORS (z) = NO_TAG; ++ MODULES (z) = NO_TAG; ++ PRIO (z) = NO_TAG; ++ INDICANTS (z) = NO_TAG; ++ LABELS (z) = NO_TAG; ++ ANONYMOUS (z) = NO_TAG; ++ JUMP_TO (z) = NO_NODE; ++ SEQUENCE (z) = NO_NODE; ++ PUBLIC_RANGE (z) = false; ++ return z; ++} ++ ++/* New_moid. */ ++ ++MOID_T * ++a68_new_moid (void) ++{ ++ MOID_T *z = ggc_cleared_alloc (); ++ ++ A68 (new_modes)++; ++ ATTRIBUTE (z) = 0; ++ NUMBER (z) = 0; ++ DIM (z) = 0; ++ USE (z) = false; ++ HAS_ROWS (z) = false; ++ PORTABLE (z) = true; ++ DERIVATE (z) = false; ++ NODE (z) = NO_NODE; ++ PACK (z) = NO_PACK; ++ SUB (z) = NO_MOID; ++ EQUIVALENT_MODE (z) = NO_MOID; ++ SLICE (z) = NO_MOID; ++ TRIM (z) = NO_MOID; ++ DEFLEXED (z) = NO_MOID; ++ NAME (z) = NO_MOID; ++ MULTIPLE_MODE (z) = NO_MOID; ++ NEXT (z) = NO_MOID; ++ CTYPE (z) = NULL_TREE; ++ ASM_LABEL (z) = NULL; ++ return z; ++} ++ ++/* New_pack. */ ++ ++PACK_T * ++a68_new_pack (void) ++{ ++ PACK_T *z = ggc_cleared_alloc (); ++ ++ MOID (z) = NO_MOID; ++ TEXT (z) = NO_TEXT; ++ NODE (z) = NO_NODE; ++ NEXT (z) = NO_PACK; ++ PREVIOUS (z) = NO_PACK; ++ return z; ++} ++ ++/* New_tag. */ ++ ++TAG_T * ++a68_new_tag (void) ++{ ++ TAG_T *z = ggc_cleared_alloc (); ++ ++ STATUS (z) = NULL_MASK; ++ TAG_TABLE (z) = NO_TABLE; ++ MOID (z) = NO_MOID; ++ NODE (z) = NO_NODE; ++ UNIT (z) = NO_NODE; ++ VALUE (z) = NO_TEXT; ++ SCOPE (z) = PRIMAL_SCOPE; ++ SCOPE_ASSIGNED (z) = false; ++ PRIO (z) = 0; ++ USE (z) = false; ++ IN_PROC (z) = false; ++ HEAP (z) = false; ++ YOUNGEST_ENVIRON (z) = PRIMAL_SCOPE; ++ LOC_ASSIGNED (z) = false; ++ NEXT (z) = NO_TAG; ++ BODY (z) = NO_TAG; ++ PORTABLE (z) = true; ++ VARIABLE (z) = false; ++ IS_RECURSIVE (z) = false; ++ PUBLICIZED (z) = true; /* XXX */ ++ EXPORTED (z) = false; ++ ASCRIBED_ROUTINE_TEXT (z) = false; ++ LOWERER (z) = NO_LOWERER; ++ TAX_TREE_DECL (z) = NULL_TREE; ++ MOIF (z) = NO_MOIF; ++ EXTERN_SYMBOL (z) = NO_TEXT; ++ NUMBER (z) = ++A68_PARSER (tag_number); ++ return z; ++} ++ ++/* Make special, internal mode. */ ++ ++static void ++make_special_mode (MOID_T ** n, int m) ++{ ++ (*n) = a68_new_moid (); ++ ATTRIBUTE (*n) = 0; ++ NUMBER (*n) = m; ++ PACK (*n) = NO_PACK; ++ SUB (*n) = NO_MOID; ++ EQUIVALENT (*n) = NO_MOID; ++ DEFLEXED (*n) = NO_MOID; ++ NAME (*n) = NO_MOID; ++ SLICE (*n) = NO_MOID; ++ TRIM (*n) = NO_MOID; ++ ROWED (*n) = NO_MOID; ++} ++ ++/* Whether attributes match in subsequent nodes. */ ++ ++bool ++a68_whether (NODE_T * p, ...) ++{ ++ va_list vl; ++ va_start (vl, p); ++ int a; ++ while ((a = va_arg (vl, int)) != STOP) ++ { ++ if (p != NO_NODE && a == WILDCARD) ++ FORWARD (p); ++ else if (p != NO_NODE && (a == KEYWORD)) ++ { ++ if (a68_find_keyword_from_attribute (A68 (top_keyword), ATTRIBUTE (p)) != NO_KEYWORD) ++ FORWARD (p); ++ else ++ { ++ va_end (vl); ++ return false; ++ } ++ } ++ else if (p != NO_NODE && (a >= 0 ? a == ATTRIBUTE (p) : (-a) != ATTRIBUTE (p))) ++ FORWARD (p); ++ else ++ { ++ va_end (vl); ++ return false; ++ } ++ } ++ va_end (vl); ++ return true; ++} ++ ++/* Whether one of a series of attributes matches a node. */ ++ ++bool ++a68_is_one_of (NODE_T *p, ...) ++{ ++ if (p != NO_NODE) ++ { ++ bool match = false; ++ int a; ++ ++ va_list vl; ++ va_start (vl, p); ++ while ((a = va_arg (vl, int)) != STOP) ++ match = (match | IS (p, a)); ++ va_end (vl); ++ return match; ++ } ++ else ++ return false; ++} ++ ++ ++/* Isolate nodes p-q making p a branch to p-q ++ ++ From x - p - a - b - c - q - y ++ To x - t - y ++ | ++ p - a - b - c - q ++*/ ++ ++void ++a68_make_sub (NODE_T *p, NODE_T *q, enum a68_attribute t) ++{ ++ NODE_T *z = a68_new_node (); ++ ++ gcc_assert (p != NO_NODE && q != NO_NODE); ++ *z = *p; ++ ++ if (GINFO (p) != NO_GINFO) ++ GINFO (z) = a68_new_genie_info (); ++ ++ PREVIOUS (z) = NO_NODE; ++ ++ if (p == q) ++ NEXT (z) = NO_NODE; ++ else ++ { ++ if (NEXT (p) != NO_NODE) ++ PREVIOUS (NEXT (p)) = z; ++ NEXT (p) = NEXT (q); ++ if (NEXT (p) != NO_NODE) ++ PREVIOUS (NEXT (p)) = p; ++ NEXT (q) = NO_NODE; ++ } ++ ++ SUB (p) = z; ++ ATTRIBUTE (p) = t; ++} ++ ++/* Find symbol table at level I. */ ++ ++static TABLE_T * ++find_level (NODE_T *n, int i) ++{ ++ if (n == NO_NODE) ++ return NO_TABLE; ++ else ++ { ++ TABLE_T *s = TABLE (n); ++ ++ if (s != NO_TABLE && LEVEL (s) == i) ++ return s; ++ else if ((s = find_level (SUB (n), i)) != NO_TABLE) ++ return s; ++ else if ((s = find_level (NEXT (n), i)) != NO_TABLE) ++ return s; ++ else ++ return NO_TABLE; ++ } ++} ++ ++/* Whether P is top of lexical level. */ ++ ++bool ++a68_is_new_lexical_level (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case ALT_DO_PART: ++ case BRIEF_ELIF_PART: ++ case BRIEF_OUSE_PART: ++ case BRIEF_CONFORMITY_OUSE_PART: ++ case CHOICE: ++ case CLOSED_CLAUSE: ++ case CONDITIONAL_CLAUSE: ++ case DO_PART: ++ case ELIF_PART: ++ case ELSE_PART: ++ case CASE_CLAUSE: ++ case CASE_CHOICE_CLAUSE: ++ case CASE_IN_PART: ++ case CASE_OUSE_PART: ++ case OUT_PART: ++ case ROUTINE_TEXT: ++ case SPECIFIED_UNIT: ++ case THEN_PART: ++ case CONFORMITY_CLAUSE: ++ case CONFORMITY_CHOICE: ++ case CONFORMITY_IN_PART: ++ case CONFORMITY_OUSE_PART: ++ case WHILE_PART: ++ case DEF_PART: ++ case POSTLUDE_PART: ++ case ACCESS_CLAUSE: ++ return true; ++ case MODULE_TEXT: ++ /* Module texts introduce an additional lexical level encompassing all ++ its parts only if it is endowed with revelations. */ ++ if (SUB (p) != NO_NODE && IS (SUB (p), REVELATION_PART)) ++ return true; ++ else ++ return false; ++ break; ++ default: ++ return false; ++ } ++} ++ ++/* ++ * Couple of utility functions. ++ */ ++ ++/* Safely append to buffer. */ ++ ++void ++a68_bufcat (char *dst, const char *src, int len) ++{ ++ if (src != NO_TEXT) { ++ char *d = dst; ++ const char *s = src; ++ int n = len; ++// Find end of dst and left-adjust; do not go past end ++ for (; n-- != 0 && d[0] != '\0'; d++) { ++ ; ++ } ++ int dlen = (int) (d - dst); ++ n = len - dlen; ++ if (n > 0) { ++ while (s[0] != '\0') { ++ if (n != 1) { ++ (d++)[0] = s[0]; ++ n--; ++ } ++ s++; ++ } ++ d[0] = '\0'; ++ } ++// Better sure than sorry ++ dst[len - 1] = '\0'; ++ } ++} ++ ++/* Safely copy to buffer. */ ++ ++void ++a68_bufcpy (char *dst, const char *src, int len) ++{ ++ if (src != NO_TEXT) { ++ char *d = dst; ++ const char *s = src; ++ int n = len; ++// Copy as many as fit ++ if (n > 0 && --n > 0) { ++ do { ++ if (((d++)[0] = (s++)[0]) == '\0') { ++ break; ++ } ++ } while (--n > 0); ++ } ++ if (n == 0 && len > 0) { ++// Not enough room in dst, so terminate ++ d[0] = '\0'; ++ } ++// Better sure than sorry ++ dst[len - 1] = '\0'; ++ } ++} ++ ++/* Make a new copy of concatenated strings. */ ++ ++char * ++a68_new_string (const char *t, ...) ++{ ++ va_list vl; ++ va_start (vl, t); ++ const char *q = t; ++ if (q == NO_TEXT) { ++ va_end (vl); ++ return NO_TEXT; ++ } ++ int len = 0; ++ while (q != NO_TEXT) { ++ len += (int) strlen (q); ++ q = va_arg (vl, char *); ++ } ++ va_end (vl); ++ len++; ++ char *z = (char *) xmalloc ((size_t) len); ++ z[0] = '\0'; ++ q = t; ++ va_start (vl, t); ++ while (q != NO_TEXT) { ++ a68_bufcat (z, q, len); ++ q = va_arg (vl, char *); ++ } ++ va_end (vl); ++ return z; ++} ++ ++/* Tie label to the clause it is defined in. */ ++ ++static void ++tie_label_to_serial (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, SERIAL_CLAUSE)) ++ { ++ bool valid_follow; ++ ++ if (NEXT (p) == NO_NODE) ++ valid_follow = true; ++ else if (IS (NEXT (p), CLOSE_SYMBOL)) ++ valid_follow = true; ++ else if (IS (NEXT (p), END_SYMBOL)) ++ valid_follow = true; ++ else if (IS (NEXT (p), OD_SYMBOL)) ++ valid_follow = true; ++ else ++ valid_follow = false; ++ ++ if (valid_follow) ++ JUMP_TO (TABLE (SUB (p))) = NO_NODE; ++ } ++ ++ tie_label_to_serial (SUB (p)); ++ } ++} ++ ++/* Tie label to the clause it is defined in. */ ++ ++static void ++tie_label (NODE_T *p, NODE_T *unit) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEFINING_IDENTIFIER)) ++ UNIT (TAX (p)) = unit; ++ tie_label (SUB (p), unit); ++ } ++} ++ ++/* Tie label to the clause it is defined in. */ ++ ++static void ++tie_label_to_unit (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, LABELED_UNIT)) ++ tie_label (SUB_SUB (p), NEXT_SUB (p)); ++ tie_label_to_unit (SUB (p)); ++ } ++} ++ ++/* Table with attribute names. */ ++ ++static const char *attribute_names[] = ++{ ++ "STOP", ++#define A68_ATTR(ATTR,DESCR) DESCR, ++#include "a68-parser-attrs.def" ++#undef A68_ATTR ++}; ++ ++/* Get the name of an attribute. */ ++ ++const char * ++a68_attribute_name (enum a68_attribute attr) ++{ ++ return attribute_names[attr]; ++} ++ ++/* Get the location of node P as a GCC location. */ ++ ++location_t ++a68_get_node_location (NODE_T *p) ++{ ++ LINE_T *line = LINE (INFO (p)); ++ ++ if (line == NO_LINE) ++ return UNKNOWN_LOCATION; ++ ++ unsigned line_number = NUMBER (line); ++ unsigned column_number = CHAR_IN_LINE (INFO (p)) - STRING (line) + 1; ++ const char *filename = FILENAME (line); ++ ++ location_t gcc_location; ++ ++ linemap_add (line_table, LC_ENTER, 0, filename, line_number); ++ linemap_line_start (line_table, line_number, 0); ++ gcc_location = linemap_position_for_column (line_table, column_number); ++ linemap_add (line_table, LC_LEAVE, 0, NULL, 0); ++ ++ return gcc_location; ++} ++ ++/* Get the location of POS inside LINE as a GCC location. */ ++ ++location_t ++a68_get_line_location (LINE_T *line, const char *pos) ++{ ++ location_t loc; ++ ++ linemap_add (line_table, LC_ENTER, 0, FILENAME (line), NUMBER (line)); ++ linemap_line_start (line_table, NUMBER (line), 0); ++ loc = linemap_position_for_column (line_table, pos - STRING (line) + 1); ++ linemap_add (line_table, LC_LEAVE, 0, NULL, 0); ++ return loc; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-postulates.cc +@@ -0,0 +1,103 @@ ++/* Postulates needed for improving equivalence of modes. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* Initialise use of postulate-lists. */ ++ ++void ++a68_init_postulates (void) ++{ ++ A68 (top_postulate) = NO_POSTULATE; ++ A68 (top_postulate_list) = NO_POSTULATE; ++} ++ ++/* Make old postulates available for new use. */ ++ ++void ++a68_free_postulate_list (POSTULATE_T *start, POSTULATE_T *stop) ++{ ++ if (start == stop) ++ return; ++ ++ POSTULATE_T *last = start; ++ for (; NEXT (last) != stop; FORWARD (last)) ++ ; ++ ++ NEXT (last) = A68 (top_postulate_list); ++ A68 (top_postulate_list) = start; ++} ++ ++/* Add postulates to postulate-list. */ ++ ++void ++a68_make_postulate (POSTULATE_T **p, MOID_T *a, MOID_T *b) ++{ ++ POSTULATE_T *new_one; ++ ++ if (A68 (top_postulate_list) != NO_POSTULATE) ++ { ++ new_one = A68 (top_postulate_list); ++ A68 (top_postulate_list) = A68 (top_postulate_list)->next; ++ } ++ else ++ { ++ new_one = (POSTULATE_T *) ggc_cleared_alloc (); ++ A68 (new_postulates)++; ++ } ++ ++ new_one->a = a; ++ new_one->b = b; ++ new_one->next = *p; ++ *p = new_one; ++} ++ ++/* Where postulates are in the list. */ ++ ++POSTULATE_T ++*a68_is_postulated_pair (POSTULATE_T *p, MOID_T *a, MOID_T *b) ++{ ++ for (; p != NO_POSTULATE; p = p->next) ++ { ++ if (p->a == a && p->b == b) ++ return p; ++ } ++ ++ return NO_POSTULATE; ++} ++ ++/* Where postulate is in the list. */ ++ ++POSTULATE_T ++*a68_is_postulated (POSTULATE_T *p, MOID_T *a) ++{ ++ for (; p != NO_POSTULATE; p = p->next) ++ { ++ if (p->a == a) ++ return p; ++ } ++ ++ return NO_POSTULATE; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-tree.def +@@ -0,0 +1,24 @@ ++/* This file contains the definitions and documentation for the ++ additional tree codes used in the GNU Algol 68 compiler (see ++ tree.def for the standard codes). ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ You should have received a copy of the GNU General Public License along with ++ GCC; see the file COPYING3. If not see . */ ++ ++/* Tree nodes used in the Algol68 frontend only. */ ++ ++/* ++Local variables: ++mode:c ++End: ++*/ +--- /dev/null ++++ b/src/gcc/algol68/a68-types.h +@@ -0,0 +1,1166 @@ ++/* Type definitions for the ALGOL 68 parser. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#ifndef __A68_TYPES_H__ ++#define __A68_TYPES_H__ ++ ++#include "config.h" ++#include "system.h" ++ ++#include ++#include "vec.h" ++ ++/* Enumerations. */ ++ ++enum a68_stropping ++{ ++ UPPER_STROPPING, ++ SUPPER_STROPPING ++}; ++ ++enum a68_attribute ++{ ++ STOP = 0, ++#define A68_ATTR(ATTR,DESCR) ATTR, ++#include "a68-parser-attrs.def" ++#undef A68_ATTR ++}; ++ ++enum a68_tree_index ++{ ++ /* Type trees. */ ++ ATI_VOID_TYPE, ++ ATI_BOOL_TYPE, ++ ATI_CHAR_TYPE, ++ ATI_SHORT_SHORT_BITS_TYPE, ++ ATI_SHORT_BITS_TYPE, ++ ATI_BITS_TYPE, ++ ATI_LONG_BITS_TYPE, ++ ATI_LONG_LONG_BITS_TYPE, ++ ATI_BYTES_TYPE, ++ ATI_LONG_BYTES_TYPE, ++ ATI_SHORT_SHORT_INT_TYPE, ++ ATI_SHORT_INT_TYPE, ++ ATI_INT_TYPE, ++ ATI_LONG_INT_TYPE, ++ ATI_LONG_LONG_INT_TYPE, ++ ATI_REAL_TYPE, ++ ATI_LONG_REAL_TYPE, ++ ATI_LONG_LONG_REAL_TYPE, ++ /* Sentinel. */ ++ ATI_MAX ++}; ++ ++/* ++ * Type definitions. ++ */ ++ ++typedef char BUFFER[BUFFER_SIZE + 1]; ++ ++typedef struct MODES_T MODES_T; ++typedef struct NODE_T NODE_T; ++typedef struct MODE_CACHE_T MODE_CACHE_T; ++typedef struct MOID_T MOID_T; ++typedef struct GINFO_T GINFO_T; ++typedef struct KEYWORD_T KEYWORD_T; ++typedef struct LINE_T LINE_T; ++typedef struct NODE_INFO_T NODE_INFO_T; ++typedef struct PACK_T PACK_T; ++typedef struct SOID_T SOID_T; ++typedef struct TABLE_T TABLE_T; ++typedef struct TAG_T TAG_T; ++typedef struct TOKEN_T TOKEN_T; ++typedef struct ORIGIN_T ORIGIN_T; ++typedef struct POSTULATE_T POSTULATE_T; ++typedef struct OPTIONS_T OPTIONS_T; ++typedef struct PARSER_T PARSER_T; ++typedef struct MODULE_T MODULE_T; ++typedef struct EXTRACT_T EXTRACT_T; ++typedef struct MOIF_T MOIF_T; ++typedef struct A68_T A68_T; ++ ++#define NO_A68_REF ((A68_REF *) 0) ++#define NO_ARRAY ((A68_ARRAY *) 0) ++#define NO_BOOK ((BOOK_T *) 0) ++#define NO_BOOL ((bool *) 0) ++#define NO_BYTE ((BYTE_T *) 0) ++#define NO_CONSTANT ((void *) 0) ++#define NO_DEC ((DEC_T *) 0) ++#define NO_EDLIN ((EDLIN_T *) 0) ++#define NO_FILE ((FILE *) 0) ++#define NO_FORMAT ((A68_FORMAT *) 0) ++#define NO_GINFO ((GINFO_T *) 0) ++#define NO_GPROC ((void (*) (NODE_T *)) 0) ++#define NO_HANDLE ((A68_HANDLE *) 0) ++#define NO_INT ((int *) 0) ++#define NO_JMP_BUF ((jmp_buf *) 0) ++#define NO_KEYWORD ((KEYWORD_T *) 0) ++#define NO_NINFO ((NODE_INFO_T *) 0) ++#define NO_NOTE ((void (*) (NODE_T *)) 0) ++#define NO_OPTION_LIST ((OPTION_LIST_T *) 0) ++#define NO_PACK ((PACK_T *) 0) ++#define NO_PPROC ((PROP_T (*) (NODE_T *)) 0) ++#define NO_PROCEDURE ((A68_PROCEDURE *) 0) ++#define NO_REAL ((REAL_T *) 0) ++#define NO_REFINEMENT ((REFINEMENT_T *) 0) ++#define NO_REGMATCH ((regmatch_t *) 0) ++#define NO_SCOPE ((SCOPE_T *) 0) ++#define NO_SOID ((SOID_T *) 0) ++#define NO_STREAM NO_FILE ++#define NO_TEXT ((char *) 0) ++#define NO_TICK ((bool *) 0) ++#define NO_TOKEN ((TOKEN_T *) 0) ++#define NO_TUPLE ((A68_TUPLE *) 0) ++#define NO_VAR (0) ++ ++/* A STATUS_MASK_T is a word of flags denoting states. ++ ++ Status masks are used in parse tree nodes (NODE_T) and in entries in the ++ symbol table (TAG_T). ++ ++ ++ SCOPE_ERROR_MASK is used by the static scope checker in order to avoid ++ emitting duplicated scope warnings. */ ++ ++typedef uint32_t STATUS_MASK_T; ++ ++#define STATUS_CLEAR(p, q) {STATUS (p) &= (~(q));} ++#define STATUS_SET(p, q) {STATUS (p) |= (q);} ++#define STATUS_TEST(p, q) ((STATUS (p) & (q)) != (uint32_t) 0) ++ ++#define NULL_MASK ((STATUS_MASK_T) 0x00000000) ++#define SCOPE_ERROR_MASK ((STATUS_MASK_T) 0x00000200) ++ ++/* Structure containing the lowering context which is propagated while calling ++ the lowering handlers. */ ++ ++struct LOW_CTX_T ++{ ++ /* The common declarer in a declaration list. */ ++ NODE_T **declarer; ++ /* The defining identifier of the procedure declaration being processed, or ++ NO_NODE. This is set by a68_lower_procedure_declaration and used by ++ a68_lower_routine_text. */ ++ NODE_T *proc_decl_identifier; ++ /* If proc_decl_identifier is no NO_NODE, this denotes whether the ++ declaration being processed is of an operator. */ ++ bool proc_decl_operator; ++ /* Name of current module definition, or NULL. */ ++ const char *module_definition_name; ++ /* For debugging purposes. */ ++ int level; ++}; ++ ++typedef struct LOW_CTX_T LOW_CTX_T; ++ ++/* Type of the lowerer routines defined in a68-low-prelude.cc. */ ++typedef tree (*LOWERER_T) (struct NODE_T *, struct LOW_CTX_T); ++ ++#define NO_LOWERER a68_lower_unimplemented ++ ++struct GTY((chain_next ("%h.more"), chain_prev ("%h.less"))) KEYWORD_T ++{ ++ enum a68_attribute attribute; ++ const char *text; ++ KEYWORD_T *less, *more; ++}; ++ ++/* A MOID_T represents a mode indicator. ++ ++ NUMBER is an unique number assigned to the moid when it gets created. A ++ renumber_moids function exists in a68-parser-modes.cc but it dosn't seem to ++ be used at all. ++ ++ ATTRIBUTE characterizes the kind of mode and is one of the values defined in ++ a68-parser-attrs.def. Valid values are: ++ ++ PROC_SYMBOL for procecure modes. ++ ROWS_SYMBOL for row modes. ++ REF_SYMBOL for reference modes. ++ FLEX_SYMBOL for flexible reference modes. ++ STRUCT_SYMBOL for struct modes. ++ UNION_SYMBOL for union modes. ++ IN_TYPE_MODE for XXX modes. ++ OUT_TYPE_MODE for XXX modes. ++ SERIES_MODE for XXX modes. ++ INDICANT for XXX modes. ++ MODULE_INDICANT for XXX modules. ++ STANDARD for standard modes. ++ ++ NODE is a parse tree node XXX. ++ ++ HAS_ROWS is true if the mode contains rows somewhere in its internal ++ structure. ++ ++ The interpretation of SUB depends on the kind of mode: ++ - For REF modes it is the referred mode. ++ - For FLEX modes it is the referred mode. ++ - For ROW modes it is the mode of the elements. ++ - For PROC modes it is the mode of the value yielded by the procedure. ++ ++ The interpretation of DIM depends on the kind of mode: ++ - In VOID_SYMBOL, STANDARD or INDICANT mode, if DIM is positive it ++ specifies the size of the longsety of the mode. If DIM is negative then ++ abs (DIM) is the size of hte shortsety of the mode. ++ - In ROW modes, DIM is the number of dimensions. ++ - In STRUCT modes, DIM is the number of fields. ++ - In UNION modes, DIM is the number of united modes. ++ - In PROC_SYMBOL modes, DIM is the number of arguments. ++ - In SERIES_MODE and STOWED_MODE modes, DIM is the number modes. ++ ++ SLICE is the mode resulting from slicing a value of this mode. For example, ++ slicing a M_ROW_INT yields a M_INT. ++ ++ EQUIVALENT_MODE (referred as EQUIVALENT), for INDICANTs it is its declarer ++ mode (in MODE FOO = BAR FOO is the indicant and BAR is its declarer) and for ++ STANDARD modes it may be a mode that reflects its structure. ++ ++ USE is used by the is_well_formed function, which detects whether a mode is ++ well formed, i.e. that the mode doesn't refer to itself nor it relates to ++ void. ++ ++ DEFLEXED_MODE is like the current mode, but without FLEX. Only defined for ++ modes that have a SUB, i.e. REF, FLEX, ROW and PROC. In other modes this is ++ NO_MODE. ++ ++ For refs to structs, rows or flex, NAME points to the corresponding name ++ mode. For example, for a mode REF STRUCT (INT i, REAL x), NAME points to a ++ mode STRUCT (REF INT i, REF REAL x). This is used for selections. ++ ++ For rows of structs, rows or flex, MULTIPLE points to the corresponding row ++ mode. For example, for a mode [] STRUCT (INT i, REAL x), MULTIPLE points to ++ a mode STRUCT ([]INT i, []REAL x). This is used for selections. ++ ++ PACK is a pack of moids. For a STOWED_MODE, it contains the modes of the ++ arguments of a procedure, or the modes of the units in a collateral clause. ++ For a SERIES_MODE, it contains the modes of the completing units in a serial ++ clause, the alternatives in a conformity clause, the alternatives in a ++ CONDITIONAL_CLAUSE, the alternatives in a CASE_CLAUSE, ++ ++ CTYPE is a GCC GENERIC tree corresponding to this mode. It is computed and ++ installed by a68_lower_moid. ++ ++ ASM_LABEL is an assembly label used by a68_asm_output_mode. */ ++ ++#define NO_MOID ((MOID_T *) 0) ++ ++struct GTY((chain_next ("%h.next"))) MOID_T ++{ ++ int number; ++ int attribute; ++ int dim; ++ bool has_rows, use, portable, derivate; ++ NODE_T *node; ++ PACK_T *pack; ++ MOID_T *sub, *equivalent_mode, *slice, *deflexed_mode, *name, *multiple_mode, *next, *rowed, *trim; ++ tree ctype; ++ const char *asm_label; ++}; ++ ++/* A MODES_T struct contains a collection of particular pre-defined modes. ++ ++ These modes are initialized by either stand_moids or make_special_mode. ++ They are commonly referred using the corresponding M_* macros. ++ ++ ROWS is a mode to which any ROW mode can be strongly coerced. It is used as ++ the mode of the second operand of the ELEMS, LWB and UPB operators. ++ ++ HIP is the mode of NIL. */ ++ ++struct MODES_T ++{ ++ MOID_T *BITS, *BOOL, *BYTES, *CHANNEL, *CHAR, *COLLITEM, *COMPL, *COMPLEX, ++ *C_STRING, *ERROR, *FILE, *FORMAT, *HEX_NUMBER, *HIP, *INT, *LONG_BITS, *LONG_BYTES, ++ *LONG_COMPL, *LONG_COMPLEX, *LONG_INT, *LONG_LONG_BITS, *LONG_LONG_COMPL, ++ *LONG_LONG_COMPLEX, *LONG_LONG_INT, *LONG_LONG_REAL, *LONG_REAL, *NUMBER, ++ *PROC_REAL_REAL, *PROC_LONG_REAL_LONG_REAL, *PROC_REF_FILE_BOOL, *PROC_REF_FILE_VOID, *PROC_ROW_CHAR, ++ *PROC_STRING, *PROC_VOID, *REAL, *REF_BITS, *REF_BOOL, *REF_BYTES, ++ *REF_CHAR, *REF_COMPL, *REF_COMPLEX, *REF_FILE, *REF_INT, ++ *REF_LONG_BITS, *REF_LONG_BYTES, *REF_LONG_COMPL, *REF_LONG_COMPLEX, ++ *REF_LONG_INT, *REF_LONG_LONG_BITS, *REF_LONG_LONG_COMPL, ++ *REF_LONG_LONG_COMPLEX, *REF_LONG_LONG_INT, *REF_LONG_LONG_REAL, *REF_LONG_REAL, ++ *REF_REAL, *REF_REF_FILE, *REF_ROW_CHAR, *REF_ROW_COMPLEX, *REF_ROW_INT, ++ *REF_ROW_REAL, *REF_ROW_ROW_COMPLEX, *REF_ROW_ROW_REAL, ++ *REF_SHORT_BITS, *REF_SHORT_SHORT_BITS, *REF_SHORT_INT, ++ *REF_SHORT_SHORT_INT, *REF_STRING, ++ *ROW_BITS, *ROW_BOOL, *ROW_CHAR, *ROW_COMPLEX, *ROW_INT, *ROW_LONG_BITS, *ROW_LONG_LONG_BITS, ++ *ROW_REAL, *ROW_ROW_CHAR, *ROW_ROW_COMPLEX, *ROW_ROW_REAL, *ROWS, *ROW_SIMPLIN, *ROW_SIMPLOUT, ++ *ROW_STRING, *SEMA, *SHORT_BITS, *SHORT_SHORT_BITS, *SHORT_INT, *SHORT_SHORT_INT, ++ *SIMPLIN, *SIMPLOUT, *STRING, *FLEX_ROW_CHAR, ++ *FLEX_ROW_BOOL, *UNDEFINED, *VACUUM, *VOID; ++}; ++ ++/* The OPTIONS_T structure record which front-end options have been activated. ++ Each option OPTION has a corresponding GCC -f[no-]a68-OPTION command-line ++ switch that can be used to activate or deactivate it. ++ ++ STROPPING indicates the stropping regime in use. It can be UPPER_STROPPING ++ or SUPPER_STROPPING. ++ ++ BRACKETS indicates whether [ .. ] and { .. } are equivalent to ( .. ). ++ ++ STRICT indicates that no ALGOL 68 extension is allowed. ++ ++ ASSERT indicates whether to generate code for assertions. ++ ++ BOUNDS_CHECKING indicates whether to perform array bound checking at ++ run-time. ++ ++ NIL_CHECKING indicates whether to check for NIL when dereferencing at ++ run-time. */ ++ ++struct GTY(()) OPTIONS_T ++{ ++ enum a68_stropping stropping; ++ bool brackets; ++ bool strict; ++ bool assert; ++ bool bounds_checking; ++ bool nil_checking; ++}; ++ ++/* The access class static property of a stored value determines how the value ++ can be reached at run-time. It is used by the lowering pass in order to ++ minimize copies at run-time. ++ ++ CONSTANT is for constant literals. At run-time these literals will either ++ reside in operand instructions or in space allocated in CONSTAB%. ++ ++ DIRIDEN (direct identifier) means that the value is stored on IDST% at some ++ static address. This is the access class used for values ascribed to ++ identifiers as long as the block in hich they are declared has not been ++ left. It is also used for values resulting from actions such as the ++ selection from a value possessed by an identifier or the dereferencing fo a ++ name corespodning to a variable. ++ ++ VARIDEN (variable identifier) is used for values which are names/variables. ++ The name is stored on IDST%. The static elaboration of the dereferencing of ++ a variable with access VARIDEN results in a value with access DIRIDEN, not ++ requiring any run-time action. Same happens with selections of variables of ++ access VARIDEN. ++ ++ INDIDEN (indirect identifier) is used for values that are stored in a memory ++ location in IDST%. The static elaboration of a dereferencing applied to a ++ value of access DIRIDEN. ++ ++ DIRWOST (direct working stack) is very much like DIRIDEN, except that the ++ value is stored in WOST% rathern than in IDST%. This access is used for the ++ result of an action when this result does not preexist in memory and hence ++ has to be constructed in WOST%. ++ ++ INDWOST (indirect working stack) is very similar to INDIDEN. Such an access ++ can be obtained for example through the static elaboration of the ++ dereferencing of a name the access of which is DIRWOST. ++ ++ NIHIL is used to characterize the absence of value. This is used in the ++ static elaboration of a jump, a voiding and a call ith a void result. ++ ++ Note that in all these classes we assume as run-time the intermediate ++ language level we are lowering to, i.e. GENERIC. A DIRIDEN value, for ++ example, can very well stored in a register depending on further compiler ++ optimizations. */ ++ ++#define ACCESS_NIHIL 0 ++#define ACCESS_CONSTANT 1 ++#define ACCESS_DIRIDEN 2 ++#define ACCESS_INDIDEN 3 ++#define ACCESS_DIRWOST 4 ++ ++/* A NODE_T is a node in the A68 Syntax tree produced by the lexer-scanner and ++ later expanded by the Mailloux parser. ++ ++ NUMBER identifies the node uniquely in the syntax tree. ++ ++ ATTRIBUTE is a code that specifies the kind of entity denoted by the node. ++ Valid attributes are defined in the enumeration a68_attribute above in ++ this file. Examples of attributes are ELIF_PART, GOTO_SYMBOL or BOLD_TAG. ++ ++ ANNOTATION provides a way to annotate a node with a reference to another ++ node attribute. This is currently used by the mode checker to annotate ++ indexer nodes as slicer or as trimmers. ++ ++ TYPE (accessed as MOID) is either NO_MOID if the entity denoted by the node ++ doesn't have a mode, or a suitable MOID_T reflecting the mode of the entity. ++ This attribute is calculated and set in all the nodes of the tree by the ++ mode collection and checker pass implemented by make_moid_list. ++ ++ INFO contains additional attributes of the node. See NODE_INFO_T below. ++ ++ NEXT, PREVIOUS and SUB are links to other tree nodes. They are used to link ++ the syntax tree structure from the top: ++ ++ TOP <-> N <-> N <-> ... ++ | < is PREVIOUS ++ N <-> N <-> ... > is NEXT ++ | | is SUB ++ N <-> ... ++ ++ SEQUENCE is a link to another tree node. It is used by the tax collector ++ (symbol table builder) in order to handle DO .. OD ranges. ++ ++ NEST is a link to another tree node, which is the NEST for the current node. ++ It is set by the tax collector (symbol table builder) and it is used for ++ diagnostics. ++ ++ PACK (accessed as NODE_PACK) is either NO_PACK or an instance of the PACK_T ++ structure defined below. It is used by the modes checker. ++ ++ STATUS is a mask of flags, used by several passes that handle nodes. Valid status flags are: ++ ++ SYMBOL_TABLE (accessed as TABLE) is either NO_TABLE or a TABLE_T containing ++ a symbol table introduced by the entity denoted by the tree node. These ++ nodes are the ones introducing ranges: BEGIN, DO, etc. ++ ++ NON_LOCAL is either NO_TABLE, if the environ established by the node is ++ local, or a pointer to a TABLE_T identifying the non-local environment ++ associated with the tree node. It is set by the static scope checker. See ++ 3.2.2 and 5.2.3.2.b in the report for its application in the handling of ++ local generators in serial clauses. ++ ++ TAG (accessed as TAX) is either NO_TAG or a TAG_T used to bind identifier ++ nodes, routine texts and other indicants to their corresponding entry in a ++ symbol table. This is set by the taxes collector. ++ ++ The following fields are static properties managed an used in the lowering ++ pass. ++ ++ ORIGIN is a static property that describes the history of the entity denoted ++ by the node. This is only used in nodes denoting values. ++ ++ DYNAMIC_STACK_ALLOCS is a flag used in serial clause nodes. It determines ++ whether the elaboration of the phrases in the serial clause may involve ++ dynamic stack allocation. This is used by the lower pass, along with ++ NON_LOCAL above, in order to properly manage the stack pointer while ++ lowering these clauses. ++ ++ PUBLICIZED is true for DEFINING_OPERATOR, DEFINING_IDENTIFIER and ++ DEFINING_INDICANT nodes that appear in declarations marked with PUB. ++ ++ CDECL is a GCC GENERIC tree corresponding to a DECL_FIELD for FIELD ++ nodes. */ ++ ++struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) NODE_T ++{ ++ GINFO_T *genie; ++ int number; ++ enum a68_attribute attribute; ++ enum a68_attribute annotation; ++ MOID_T *type; ++ NODE_INFO_T *info; ++ NODE_T *next, *previous, *sub; ++ NODE_T *sequence, *nest; ++ PACK_T *pack; ++ STATUS_MASK_T status; ++ TABLE_T *symbol_table; ++ TABLE_T *non_local; ++ TAG_T *tag; ++ tree cdecl; ++ bool dynamic_stack_allocs; ++ bool publicized; ++}; ++ ++#define NO_NODE ((NODE_T *) 0) ++ ++/* A NODE_INFO_T struct contains additional attributes of a NODE_T parse tree ++ node. ++ ++ PROCEDURE_LEVEL indicates how lexically deep the tree node is in terms of ++ routine texts. This attribute is set for all the nodes in the syntax tree ++ by the taxes collector and originally used by ALGOL 68 Genie's monitor. ++ Even if at the moment this is not used by GCC, this field and the ++ correponding machinery is still here in case it is useful in the future. ++ ++ PRIORITY (accessed as PRIO) is used by operator tree nodes and specifies the ++ priority of the operator denoted by the node. This is set tree wide by the ++ bottom-up parser. ++ ++ SYMBOL (accessed indirectly as NSYMBOL) contains the symbol value, a string, ++ corresponding to the tree node. This is used by tree nodes representing ++ tokens such as bold tags, keywords and identifiers. The symbols are set by ++ the parser-scanner. ++ ++ LINE is a pointer to the source line from which the tree node originates. ++ This is set for tree nodes representing tokens and is set by the ++ parser-scanner. */ ++ ++struct GTY(()) NODE_INFO_T ++{ ++ int procedure_level; ++ int priority; ++ char * GTY((skip)) char_in_line; ++ int comment_type; ++ char * GTY((skip)) comment; ++ LINE_T *comment_line; ++ char * GTY((skip)) comment_char_in_line; ++ int pragmat_type; ++ char * GTY((skip)) pragmat; ++ LINE_T *pragmat_line; ++ char * GTY((skip)) pragmat_char_in_line; ++ const char *symbol; ++ LINE_T *line; ++}; ++ ++struct GTY(()) GINFO_T ++{ ++ MOID_T *partial_proc, *partial_locale; ++}; ++ ++struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) PACK_T ++{ ++ MOID_T *type; ++ const char *text; ++ NODE_T *node; ++ PACK_T *next, *previous; ++}; ++ ++/* Postulates. */ ++ ++struct GTY((chain_next ("%h.next"))) POSTULATE_T ++{ ++ MOID_T *a, *b; ++ POSTULATE_T *next; ++}; ++ ++#define NO_POSTULATE ((POSTULATE_T *) 0) ++ ++struct GTY((chain_next ("%h.next"))) SOID_T ++{ ++ int attribute, sort, cast; ++ MOID_T *type; ++ NODE_T *node; ++ SOID_T *next; ++}; ++ ++struct GTY((chain_next ("%h.next"))) LINE_T ++{ ++ char marker[6]; ++ char * GTY((skip)) string; ++ const char *filename; ++ int number; ++ LINE_T *next, *previous; ++}; ++#define NO_LINE ((LINE_T *) 0) ++ ++/* Symbol table. ++ ++ PUBLIC_RANGE is true in ranges whose declarations may be made accessible to ++ other compilation units. decl trees lowered for declarations in public ++ ranges will be put in the top-level block. This is used for top-level ++ module declarations. */ ++ ++struct GTY(()) TABLE_T ++{ ++ int num, level, nest, attribute; ++ bool initialise_frame, initialise_anon, proc_ops, public_range; ++ TABLE_T *previous, *outer; ++ TAG_T *identifiers, *operators, *modules, *priority, *indicants, *labels, *anonymous; ++ NODE_T *jump_to, *sequence; ++}; ++#define NO_TABLE ((TABLE_T *) 0) ++ ++/* A TAG_T structure denotes an entry in the symbol table. Each entry ++ corresponds to an identity. ++ ++ TAX: TAG; TAB; TAD; TAM; ++ ++ TYPE is the mode of the entry. ++ ++ NODE is the defining identifier associated to the declaration. ++ ++ SCOPE is the lexical depth of the tag. Zero corresponds to the primal ++ scope. It is set by the static scope checker. ++ ++ SCOPE_ASSIGNED determines whether a SCOPE has been actually assigned to the ++ tag. It is set by the static scope checker. The entities which get ++ assigned scopes are identities of format texts and routine texts. ++ ++ PORTABLE determines whether the construction associated with the tag is ++ Algol 68 or some extension. ++ ++ VARIABLE is set when the defining identifier in NODE is defined in a ++ variable declaration, as opposed to an identity declaration. This is set by ++ extract_variables and is used by the lowering pass. ++ ++ HEAP is used for defining identifier in NODE is defined in a variable ++ declaration. It is HEAP_SYMBOL or LOC_SYMBOL. ++ ++ IS_RECURSIVE is set for mode indicants whose definition is recursive, ++ i.e. they appear in actual declarers within its own definition. ++ ++ PUBLICIZED is set for tags that are marked as public and therefore shall be ++ exported as part of a module interface. ++ ++ EXPORTED is set for DEFINING_MODULEs whose module interface is to be ++ exported. ++ ++ ASCRIBED_ROUTINE_TEXT is set when the defining identifier is ascribed a ++ routine-text in an identity declaration. ++ ++ IN_PROC is set when the defining identifier has been set in a ++ proc-identity-declaration or in a brief-op-declaration. These declarations ++ are optimized in a similar way than variable declarations in order to avoid ++ indirect addressing. ++ ++ YOUNGEST_ENVIRON is used when NODE is either a ROUTINE_TEXT or a ++ FORMAT_TEXT, and contains the youngest (higher) lexical level of any object ++ directly declared in the routine or format body. This is filled in and used ++ by the scope checker. ++ ++ TREE_DECL is the GENERIC declaration for the definition of this symbol. ++ This is set and used by the lower pass. For mode indicants, it contains a ++ function that generates a pointer to the given mode, and is used by ++ a68_low_generator to handle recursive modes. ++ ++ MOIF is a list of module interfaces. This is used in ACCESS_CLAUSE nodes. ++ ++ EXTERN_SYMBOL is a string with the symbol that was obtained from an imported ++ module declaration. This is only used in entries where MOIF is not NO_MOIF. ++ ++ LOWERER is a lowering routine defined in a68-low-prelude.cc. These are used ++ in taxes that denote some pre-defined operator. */ ++ ++struct GTY((chain_next ("%h.next"))) TAG_T ++{ ++ TABLE_T *symbol_table; ++ MOID_T *type; ++ NODE_T *node, *unit; ++ const char *value; ++ bool scope_assigned, use, in_proc, loc_assigned, portable, variable; ++ bool ascribed_routine_text, is_recursive, publicized, exported; ++ int priority, heap, scope, youngest_environ, number; ++ STATUS_MASK_T status; ++ tree tree_decl; ++ MOIF_T *moif; ++ LOWERER_T lowerer; ++ TAG_T *next, *body; ++ const char *extern_symbol; ++}; ++#define NO_TAG ((TAG_T *) 0) ++ ++struct GTY((chain_next ("%h.more"), chain_prev ("%h.less"))) TOKEN_T ++{ ++ const char *text; ++ TOKEN_T *less, *more; ++}; ++#define NO_TOKEN ((TOKEN_T *) 0) ++ ++struct GTY(()) MODULE_T ++{ ++ bool tree_listing_safe, cross_reference_safe; ++ int error_count, warning_count, source_scan; ++ LINE_T *top_line; ++ MOID_T *top_moid, *standenv_moid; ++ NODE_T *top_node; ++ OPTIONS_T options; ++ FILE * GTY ((skip)) file_source_fd; ++ const char *file_source_name; ++ struct ++ { ++ LINE_T *save_l; ++ char * GTY((skip)) save_s, GTY((skip)) save_c; ++ } scan_state; ++}; ++ ++/* Module interface extracts. ++ ++ KIND is the kind of extract. One of the GA68_EXTRACT_* codes defined in ++ a68-exports.cc. ++ ++ SYMBOL is a string with the symbol name for the entity represented by the ++ extract. It is mangled. ++ ++ MODE applies to identifier, operator and indicatione extracts. ++ ++ PRIORITY is the priority number in a priority extract. ++ ++ VARIABLE applies to GA68_EXTRACT_IDEN and GA68_EXTRACT_OPER extracts, and ++ indicates whether the exported symbol was declared via a variable ++ declaration. These decls are optimized and don't require indirect ++ addressing. This is compiler-specific and part of mdextra. ++ ++ IN_PROC applies to GA68_EXTRACT_IDEN and GA68_EXTRACT_OPER extracts. If ++ set, the exported symbol shall not be indirected. This is compiler-specific ++ and part of mdextra. */ ++ ++struct GTY(()) EXTRACT_T ++{ ++ unsigned int kind; ++ const char *symbol; ++ MOID_T *mode; ++ int priority; ++ bool variable, in_proc; ++}; ++ ++/* Module interfaces. ++ ++ VERSION is the version of the exports format to report in the encoded data. ++ ++ NAME is the name of the module as it is accessed at the source level, which ++ corresponds to a bold word. ++ ++ PRELUDE and POSTLUDE are mangled symbols corresponding to the entry points ++ of the module's prelude and postlude. ++ ++ MODES is a vector of modes which conform the modes table of the module ++ interface. ++ ++ MODULES is a vector of TAGs for module extracts. ++ INDICANTS is a vector of TAGs for mode extracts. ++ IDENTIFIERS is a vector of TAGs for identifier extracts. ++ PRIOS is a vector of TAGs for operator priorities. */ ++ ++#define NO_MOIF ((MOIF_T *) 0) ++ ++struct GTY(()) MOIF_T ++{ ++ unsigned int version; ++ const char *name; ++ const char *prelude; ++ const char *postlude; ++ vec *modes; ++ vec *modules; ++ vec *indicants; ++ vec *identifiers; ++ vec *prios; ++ vec *operators; ++}; ++ ++struct MODE_CACHE_T ++{ ++ MOID_T *proc_bool; ++ MOID_T *proc_char; ++ MOID_T *proc_complex_complex; ++ MOID_T *proc_int; ++ MOID_T *proc_int_int; ++ MOID_T *proc_int_int_real; ++ MOID_T *proc_int_real; ++ MOID_T *proc_int_real_real; ++ MOID_T *proc_int_real_real_real; ++ MOID_T *proc_real; ++ MOID_T *proc_real_int_real; ++ MOID_T *proc_real_real; ++ MOID_T *proc_real_real_int_real; ++ MOID_T *proc_real_real_real; ++ MOID_T *proc_real_real_real_int; ++ MOID_T *proc_real_real_real_real; ++ MOID_T *proc_real_real_real_real_real; ++ MOID_T *proc_real_real_real_real_real_real; ++ MOID_T *proc_real_ref_real_ref_int_void; ++ MOID_T *proc_void; ++}; ++ ++/* A PARSER_T struct contains all the global state that is kept by the parser. ++ This information is managed and used exclusively by a68_parser. ++ ++ ERROR_TAG is a tag that signifies an error. It is initialized in ++ a68_parser. ++ ++ STOP_SCANNER is a control flag used exclusively by the main loop in ++ tokenise_source, which is recursive. ++ ++ SCAN_BUF is a scratch buffer used by the scanner for several purposes. This ++ buffer is known to be big enough to hold any substring from the source file. ++ It is initialized in read_source_file. ++ ++ MAX_SCAN_BUF_LENGTH is the useable size of SCAN_BUF. This is used by the ++ scanner to grow SCAN_BUF as it includes other files. ++ ++ TAG_NUMBER is a global counter used by the parser to assign an unique number ++ to each tag it creates. It is used in a68_new_tag. ++ ++ BOTTOM_UP_CRASH_EXIT and TOP_DOWN_CRASH_EXIT are used to longjmp from deeply ++ nested errors in the bottom-up and top-down parsers respectively. */ ++ ++struct GTY(()) PARSER_T ++{ ++ TAG_T *error_tag; ++ bool stop_scanner; ++ size_t max_scan_buf_length; ++ char * GTY((skip)) scan_buf; ++ int tag_number; ++ jmp_buf GTY((skip)) bottom_up_crash_exit; ++ jmp_buf GTY((skip)) top_down_crash_exit; ++}; ++ ++/* A A68_T struct contains the global state used by the ALGOL 68 front-end. ++ ++ OUTPUT_LINE is used by the diagnostics machinery in order to write out ++ message lines. ++ ++ EDIT_LINE is used as a scratch buffer for composing error messages and the ++ like. ++ ++ INPUT_LINE is used by the original ALGOL 68 Genie to read lines from the ++ tty. But in this parser it is used uninitialized (!) by the ++ a68_phrase_to_text routine in the top-down parser. XXX. ++ ++ NEW_NODES is a global counter that keeps the number of parse tree nodes ++ created. It is currently not used for anything, but still updated in ++ a68_new_node. ++ ++ NEW_MODES is a global counter that keeps the number of moids created. It is ++ currently not used for anything, but still updated in a68_new_moid. ++ ++ NEW_POSTULATES is a global counter that keeps the number of postulates ++ created by the front-end. It is currently not used for anything, but still ++ updated in a68_make_postulate. ++ ++ NEW_NODE_INFOS is a global counter that keeps the number of NODE_INFO_T ++ structures created by the front-end. It is currently not used for anything, ++ but still updated in a68_new_node_info. ++ ++ NEW_GENIE_INFOS is a global counter that keeps the number of GINFO_T ++ structures created by the front-end. It is currently no tused for anything, ++ but still updated in a68_new_genie_info. ++ ++ SYMBOL_TABLE_COUNT is a global counter used by the parser. XXX move to ++ parser global state when syntax tree finalisation is moved to a68_parser? ++ ++ MODE_COUNT is the number of modes registered in the global modes table. XXX ++ which table. ++ ++ TOP_KEYWORD is the top of the list of keywords known to the font-end. ++ ++ MODE_CACHE XXX. ++ ++ A68_MODES (accessed as MODE) is a collection of particular pre-defined ++ modes. These modes are initialized by stand_moids. ++ ++ JOB (accessed as A68_JOB) is the instance of MODULE_T with the global data ++ corresponding to the source file being compiled. ++ ++ OPTIONS is the set of options currently set for the front-end. ++ ++ TOP_POSTULATE and TOP_POSTULATE_LIST are lists of postulates maintained by ++ the front-end. ++ ++ POSTULATES is a collection of postulates used by the moid pretty printer. ++ ++ TOP_SOID_LIST is used by the moid machinery. ++ ++ STANDENV XXX. ++ ++ TOP_TOKEN XXX. ++ ++ INCLUDE_PATHS is the list of paths where we search for files to include. ++ Directories are added to the list at the option handling language hook. ++ The list is searched in FIFO order. ++ ++ IMPORT_PATHS is the list of paths where we search for module exports data. ++ Directories are added to the list at the option handling language hook. The ++ list is searched in FIFO order. ++ ++ GLOBAL_TREES is an array with global types like a68_void_type and ++ a68_long_int_type. It is indexed by an enum a68_tree_index. ++ ++ MODULE_DEFINITION_DECLS is the global list of the tree decls corresponding ++ to the module definition being compiled. Note that currently we only allow ++ top-level modules, so there is no nesting. This is part of the context of ++ the lowering pass, and these declarations are collected by the lowering ++ handlers and finally compiled down to assembler in lower_module_declaration. ++ It cannot go in LOW_CTX_T because the later is on the stack and is not ++ reachable by the GGC. ++ ++ PARSER_STATE contains the parser's global state. ++ ++ GLOBAL_CONTEXT is the context to be used for global declarations. Normally ++ the translation unit. ++ ++ GLOBAL_DECLARATIONS contains a array of global declarations to pass back to ++ the middle-end at the end of the compilation. ++*/ ++ ++struct GTY(()) A68_T ++{ ++ BUFFER output_line; ++ BUFFER edit_line; ++ BUFFER input_line; ++ int new_nodes; ++ int new_modes; ++ int new_postulates; ++ int new_node_infos; ++ int new_genie_infos; ++ int symbol_table_count; ++ int mode_count; ++ KEYWORD_T *top_keyword; ++ MODE_CACHE_T mode_cache; ++ MODES_T a68_modes; ++ MODULE_T job; ++ OPTIONS_T *options; ++ POSTULATE_T *postulates, *top_postulate, *top_postulate_list; ++ SOID_T *top_soid_list; ++ TABLE_T *standenv; ++ TOKEN_T *top_token; ++ vec *include_paths; ++ vec *import_paths; ++ hash_map *module_files; ++ tree global_trees[ATI_MAX]; ++ PARSER_T parser_state; ++ vec *module_definition_decls; ++ tree global_context; ++ vec *global_declarations; ++}; ++ ++/* ++ * Access macros to fields in the struct types defined above. These are used * ++ * in order to achieve a nice ALGOL-like field OF struct style. ++ */ ++ ++#define ASM_LABEL(m) ((m)->asm_label) ++#define BACKWARD(p) (p = PREVIOUS (p)) ++#define DEFLEX(p) (DEFLEXED (p) != NO_MOID ? DEFLEXED(p) : (p)) ++#define FORWARD(p) ((p) = NEXT (p)) ++#define A(p) ((p)->a) ++#define ANNOTATION(p) ((p)->annotation) ++#define ANONYMOUS(p) ((p)->anonymous) ++#define ATTRIBUTE(p) ((p)->attribute) ++#define ASCRIBED_ROUTINE_TEXT(p) ((p)->ascribed_routine_text) ++#define B(p) ((p)->b) ++#define BODY(p) ((p)->body) ++#define CAST(p) ((p)->cast) ++#define CHAR_IN_LINE(p) ((p)->char_in_line) ++#define CROSS_REFERENCE_SAFE(p) ((p)->cross_reference_safe) ++#define CDECL(p) ((p)->cdecl) ++#define COMMENT(p) ((p)->comment) ++#define COMMENT_CHAR_IN_LINE(p) ((p)->comment_char_in_line) ++#define COMMENT_LINE(p) ((p)->comment_line) ++#define COMMENT_TYPE(p) ((p)->comment_type) ++#define CTYPE(p) ((p)->ctype) ++#define DEFLEXED(p) ((p)->deflexed_mode) ++#define DEREFO(p) ((p).derefo) ++#define DERIVATE(p) ((p)->derivate) ++#define DIM(p) ((p)->dim) ++#define DYNAMIC_STACK_ALLOCS(p) ((p)->dynamic_stack_allocs) ++#define EQUIVALENT(p) ((p)->equivalent_mode) ++#define EQUIVALENT_MODE(p) ((p)->equivalent_mode) ++#define ERROR_COUNT(p) ((p)->error_count) ++#define EXPORTED(p) ((p)->exported) ++#define EXTERN_SYMBOL(p) ((p)->extern_symbol) ++#define EXTRACT_IN_PROC(p) ((p)->in_proc) ++#define EXTRACT_KIND(p) ((p)->kind) ++#define EXTRACT_MODE(p) ((p)->mode) ++#define EXTRACT_PRIO(p) ((p)->priority) ++#define EXTRACT_SYMBOL(p) ((p)->symbol) ++#define EXTRACT_VARIABLE(p) ((p)->variable) ++#define WARNING_COUNT(p) ((p)->warning_count) ++#define F(p) ((p)->f) ++#define FILENAME(p) ((p)->filename) ++#define FILE_SOURCE_FD(p) ((p)->file_source_fd) ++#define FILE_SOURCE_NAME(p) ((p)->file_source_name) ++#define FLEXO(p) ((p).flexo) ++#define FLEXO_KNOWN(p) ((p).flexo_known) ++#define G(p) ((p)->g) ++#define GINFO(p) ((p)->genie) ++#define GENO(p) ((p).geno) ++#define GET(p) ((p)->get) ++#define GPARENT(p) (PARENT (GINFO (p))) ++#define GREEN(p) ((p)->green) ++#define H(p) ((p)->h) ++#define HANDLE(p) ((p)->handle) ++#define HAS_ROWS(p) ((p)->has_rows) ++#define HEAP(p) ((p)->heap) ++#define ID(p) ((p)->id) ++#define IDENTIFICATION(p) ((p)->identification) ++#define IDENTIFIERS(p) ((p)->identifiers) ++#define IDF(p) ((p)->idf) ++#define IM(z) (VALUE (&(z)[1])) ++#define IN(p) ((p)->in) ++#define INDEX(p) ((p)->index) ++#define INDICANTS(p) ((p)->indicants) ++#define INFO(p) ((p)->info) ++#define INITIALISE_ANON(p) ((p)->initialise_anon) ++#define INITIALISE_FRAME(p) ((p)->initialise_frame) ++#define INI_PTR(p) ((p)->ini_ptr) ++#define INS_MODE(p) ((p)->ins_mode) ++#define IN_FORBIDDEN(p) ((p)->in_forbidden) ++#define IN_PREFIX(p) ((p)->in_prefix) ++#define IN_PROC(p) ((p)->in_proc) ++#define IN_TEXT(p) ((p)->in_text) ++#define IS_OPEN(p) ((p)->is_open) ++#define IS_RECURSIVE(p) ((p)->is_recursive) ++#define IS_TMP(p) ((p)->is_tmp) ++#define JUMP_STAT(p) ((p)->jump_stat) ++#define JUMP_TO(p) ((p)->jump_to) ++#define K(q) ((q)->k) ++#define LABELS(p) ((p)->labels) ++#define LAST(p) ((p)->last) ++#define LAST_LINE(p) ((p)->last_line) ++#define LESS(p) ((p)->less) ++#define LEVEL(p) ((p)->level) ++#define LEX_LEVEL(p) (LEVEL (TABLE (p))) ++#define LINBUF(p) ((p)->linbuf) ++#define LINE(p) ((p)->line) ++#define LINE_APPLIED(p) ((p)->line_applied) ++#define LINE_DEFINED(p) ((p)->line_defined) ++#define LINE_END_MENDED(p) ((p)->line_end_mended) ++#define LINE_NUMBER(p) (NUMBER (LINE (INFO (p)))) ++#define LINSIZ(p) ((p)->linsiz) ++#define LIST(p) ((p)->list) ++#define ln(x) (log (x)) ++#define LOCALE(p) ((p)->locale) ++#define LOC_ASSIGNED(p) ((p)->loc_assigned) ++#define LOWERER(p) ((p)->lowerer) ++#define LOWER_BOUND(p) ((p)->lower_bound) ++#define LWB(p) ((p)->lower_bound) ++#define MARKER(p) ((p)->marker) ++#define MATCH(p) ((p)->match) ++#define MODIFIED(p) ((p)->modified) ++#define MODULES(p) ((p)->modules) ++#define VERSION(p) ((p)->version) ++#define MODES(p) ((p)->modes) ++#define MOID(p) ((p)->type) ++#define MOIF(p) ((p)->moif) ++#define MORE(p) ((p)->more) ++#define MSGS(p) ((p)->msgs) ++#define MULTIPLE(p) ((p)->multiple_mode) ++#define MULTIPLE_MODE(p) ((p)->multiple_mode) ++#define NAME(p) ((p)->name) ++#define NEST(p) ((p)->nest) ++#define NEXT(p) ((p)->next) ++#define NEXT_NEXT(p) (NEXT (NEXT (p))) ++#define NEXT_NEXT_NEXT(p) (NEXT (NEXT_NEXT (p))) ++#define NEXT_SUB(p) (NEXT (SUB (p))) ++#define NF(p) ((p)->nf) ++#define NILO(p) ((p).nilo) ++#define NILO_KNOWN(p) ((p).nilo_known) ++#define NODE(p) ((p)->node) ++#define NODE_DEFINED(p) ((p)->node_defined) ++#define NODE_PACK(p) ((p)->pack) ++#define NON_LOCAL(p) ((p)->non_local) ++#define NCHAR_IN_LINE(p) (CHAR_IN_LINE (INFO (p))) ++#define NCOMMENT(p) (COMMENT (INFO (p))) ++#define NCOMMENT_CHAR_IN_LINE(p) (COMMENT_CHAR_IN_LINE (INFO (p))) ++#define NCOMMENT_LINE(p) (COMMENT_LINE (INFO (p))) ++#define NCOMMENT_TYPE(p) (COMMENT_TYPE (INFO (p))) ++#define NPRAGMAT(p) (PRAGMAT (INFO (p))) ++#define NPRAGMAT_CHAR_IN_LINE(p) (PRAGMAT_CHAR_IN_LINE (INFO (p))) ++#define NPRAGMAT_LINE(p) (PRAGMAT_LINE (INFO (p))) ++#define NPRAGMAT_TYPE(p) (PRAGMAT_TYPE (INFO (p))) ++#define NSYMBOL(p) (SYMBOL (INFO (p))) ++#define NUM(p) ((p)->num) ++#define NUMBER(p) ((p)->number) ++#define OPER(p) ((p)->oper) ++#define OPERATORS(p) ((p)->operators) ++#define OPT(p) ((p)->opt) ++#define OPTIONS(p) ((p)->options) ++#define OPTION_ASSERT(p) (OPTIONS (p).assert) ++#define OPTION_BOUNDS_CHECKING(p) (OPTIONS (p).bounds_checking) ++#define OPTION_BRACKETS(p) (OPTIONS (p).brackets) ++#define OPTION_NIL_CHECKING(p) (OPTIONS (p).nil_checking) ++#define OPTION_STRICT(p) (OPTIONS (p).strict) ++#define OPTION_STROPPING(p) (OPTIONS (p).stropping) ++#define OPTION_LIST(p) (OPTIONS (p).list) ++#define OPTION_LOCAL(p) (OPTIONS (p).local) ++#define OPTION_NODEMASK(p) (OPTIONS (p).nodemask) ++#define OUT(p) ((p)->out) ++#define OUTER(p) ((p)->outer) ++#define P(q) ((q)->p) ++#define PACK(p) ((p)->pack) ++#define PARTIAL_LOCALE(p) ((p)->partial_locale) ++#define PARTIAL_PROC(p) ((p)->partial_proc) ++#define PORTABLE(p) ((p)->portable) ++#define POSTLUDE(p) ((p)->postlude) ++#define PRAGMAT(p) ((p)->pragmat) ++#define PRAGMAT_CHAR_IN_LINE(p) ((p)->pragmat_char_in_line) ++#define PRAGMAT_LINE(p) ((p)->pragmat_line) ++#define PRAGMAT_TYPE(p) ((p)->pragmat_type) ++#define PRELUDE(p) ((p)->prelude) ++#define PREVIOUS(p) ((p)->previous) ++#define PRIO(p) ((p)->priority) ++#define PRIOS(p) ((p)->prios) ++#define PROCEDURE_LEVEL(p) ((p)->procedure_level) ++#define PROC_OPS(p) ((p)->proc_ops) ++#define PUBLICIZED(p) ((p)->publicized) ++#define PUBLIC_RANGE(p) ((p)->public_range) ++#define R(p) ((p)->r) ++#define RE(z) (VALUE (&(z)[0])) ++#define ROWED(p) ((p)->rowed) ++#define SCAN_STATE_C(p) ((p)->scan_state.save_c) ++#define SCAN_STATE_L(p) ((p)->scan_state.save_l) ++#define SCAN_STATE_S(p) ((p)->scan_state.save_s) ++#define SCOPE(p) ((p)->scope) ++#define SCOPE_ASSIGNED(p) ((p)->scope_assigned) ++#define SEQUENCE(p) ((p)->sequence) ++#define SEVERITY(p) ((p)->severity) ++#define SLICE(p) ((p)->slice) ++#define SORT(p) ((p)->sort) ++#define SOURCE_SCAN(p) ((p)->source_scan) ++#define STANDENV_MOID(p) ((p)->standenv_moid) ++#define STATUS(p) ((p)->status) ++#define STRING(p) ((p)->string) ++#define SUB(p) ((p)->sub) ++#define SUB_MOID(p) (SUB (MOID (p))) ++#define SUB_NEXT(p) (SUB (NEXT (p))) ++#define SUB_SUB(p) (SUB (SUB (p))) ++#define SYMBOL(p) ((p)->symbol) ++#define TABLE(p) ((p)->symbol_table) ++#define TAG_LEX_LEVEL(p) (LEVEL (TAG_TABLE (p))) ++#define TAG_TABLE(p) ((p)->symbol_table) ++#define TAX(p) ((p)->tag) ++#define TAX_TREE_DECL(p) ((p)->tree_decl) ++#define TEXT(p) ((p)->text) ++#define TOP_LINE(p) ((p)->top_line) ++#define TOP_MOID(p) ((p)->top_moid) ++#define TOP_NODE(p) ((p)->top_node) ++#define TRANSIENT(p) ((p)->transient) ++#define TREE_LISTING_SAFE(p) ((p)->tree_listing_safe) ++#define TRIM(p) ((p)->trim) ++#define TUPLE(p) ((p)->tuple) ++#define UNIT(p) ((p)->unit) ++#define USE(p) ((p)->use) ++#define VALUE(p) ((p)->value) ++#define VARIABLE(p) ((p)->variable) ++#define WHERE(p) ((p)->where) ++#define IS_FLEXETY_ROW(m) (IS_FLEX (m) || IS_ROW (m) || m == M_STRING) ++#define IS_FLEX(m) IS ((m), FLEX_SYMBOL) ++#define IS_LITERALLY(p, s) (strcmp (NSYMBOL (p), s) == 0) ++#define ISNT(p, s) (! IS (p, s)) ++#define IS(p, s) (ATTRIBUTE (p) == (s)) ++#define IS_REF_FLEX(m) (IS (m, REF_SYMBOL) && IS (SUB (m), FLEX_SYMBOL)) ++#define IS_REF(m) IS ((m), REF_SYMBOL) ++#define IS_INTEGRAL(m) \ ++ ((m) == M_INT \ ++ || (m) == M_LONG_INT \ ++ || (m) == M_LONG_LONG_INT \ ++ || (m) == M_SHORT_INT \ ++ || (m) == M_SHORT_SHORT_INT) ++#define IS_BITS(m) \ ++ ((m) == M_BITS \ ++ || (m) == M_LONG_BITS \ ++ || (m) == M_LONG_LONG_BITS \ ++ || (m) == M_SHORT_BITS \ ++ || (m) == M_SHORT_SHORT_BITS) ++#define IS_BYTES(m) \ ++ ((m) == M_BYTES || (m) == M_LONG_BYTES) ++#define IS_COMPLEX(m) \ ++ ((m) == M_COMPLEX \ ++ || (m) == M_LONG_COMPLEX \ ++ || (m) == M_LONG_LONG_COMPLEX) ++#define IS_REAL(m) \ ++ ((m) == M_REAL \ ++ || (m) == M_LONG_REAL \ ++ || (m) == M_LONG_LONG_REAL) ++#define IS_ROW(m) IS ((m), ROW_SYMBOL) ++#define IS_STRUCT(m) IS ((m), STRUCT_SYMBOL) ++#define IS_UNION(m) IS ((m), UNION_SYMBOL) ++#define YOUNGEST_ENVIRON(p) ((p)->youngest_environ) ++ ++#endif /* ! __A68_TYPES_H */ +--- /dev/null ++++ b/src/gcc/algol68/a68-unistr.c +@@ -0,0 +1,453 @@ ++/* Character conversion functions for the Algol 68 front-end. ++ Copyright (C) 1999-2002, 2006-2007, 2009-2024 Free Software Foundation, Inc. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ The code in this file has been adapted from the unistr gnulib module, ++ written by Bruno Haible. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++static int ++u8_mbtoucr (uint32_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else if (c >= 0xc2) ++ { ++ if (c < 0xe0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x1f) << 6) ++ | (unsigned int) (s[1] ^ 0x80); ++ return 2; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ else if (c < 0xf0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ if (n >= 3) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x0f) << 12) ++ | ((unsigned int) (s[1] ^ 0x80) << 6) ++ | (unsigned int) (s[2] ^ 0x80); ++ return 3; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ else if (c <= 0xf4) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if (n >= 3) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ if (n >= 4) ++ { ++ if ((s[3] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x07) << 18) ++ | ((unsigned int) (s[1] ^ 0x80) << 12) ++ | ((unsigned int) (s[2] ^ 0x80) << 6) ++ | (unsigned int) (s[3] ^ 0x80); ++ return 4; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return -1; ++} ++ ++/* Get the UCS code for the first character of a given UTF-8 string. */ ++ ++int ++a68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else if (c >= 0xc2) ++ { ++ if (c < 0xe0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x1f) << 6) ++ | (unsigned int) (s[1] ^ 0x80); ++ return 2; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ } ++ else if (c < 0xf0) ++ { ++ if (n >= 3) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x0f) << 12) ++ | ((unsigned int) (s[1] ^ 0x80) << 6) ++ | (unsigned int) (s[2] ^ 0x80); ++ return 3; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 2; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ else ++ { ++ *puc = 0xfffd; ++ if (n == 1) ++ { ++ /* incomplete multibyte character */ ++ return 1; ++ } ++ else ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ /* incomplete multibyte character */ ++ return 2; ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 1; ++ } ++ } ++ } ++ } ++ else if (c <= 0xf4) ++ { ++ if (n >= 4) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ if ((s[3] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x07) << 18) ++ | ((unsigned int) (s[1] ^ 0x80) << 12) ++ | ((unsigned int) (s[2] ^ 0x80) << 6) ++ | (unsigned int) (s[3] ^ 0x80); ++ return 4; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 3; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 2; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ else ++ { ++ *puc = 0xfffd; ++ if (n == 1) ++ { ++ /* incomplete multibyte character */ ++ return 1; ++ } ++ else ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if (n == 2) ++ { ++ /* incomplete multibyte character */ ++ return 2; ++ } ++ else ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ /* incomplete multibyte character */ ++ return 3; ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 2; ++ } ++ } ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 1; ++ } ++ } ++ } ++ } ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++} ++ ++/* Encode a given UCS code in UTF-8. */ ++ ++int ++a68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n) ++{ ++ if (uc < 0x80) ++ { ++ if (n > 0) ++ { ++ s[0] = uc; ++ return 1; ++ } ++ /* else return -2, below. */ ++ } ++ else ++ { ++ int count; ++ ++ if (uc < 0x800) ++ count = 2; ++ else if (uc < 0x10000) ++ { ++ if (uc < 0xd800 || uc >= 0xe000) ++ count = 3; ++ else ++ return -1; ++ } ++ else if (uc < 0x110000) ++ count = 4; ++ else ++ return -1; ++ ++ if (n >= count) ++ { ++ switch (count) /* note: code falls through cases! */ ++ { ++ case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000; ++ gcc_fallthrough (); ++ case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800; ++ gcc_fallthrough (); ++ case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0; ++ /*case 1:*/ s[0] = uc; ++ } ++ return count; ++ } ++ } ++ return -2; ++} ++ ++/* Convert UTF-8 to UTF-32/UCS-4 */ ++ ++uint32_t * ++a68_u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, size_t *lengthp) ++{ ++ const uint8_t *s_end = s + n; ++ /* Output string accumulator. */ ++ uint32_t *result; ++ size_t allocated; ++ size_t length; ++ ++ if (resultbuf != NULL) ++ { ++ result = resultbuf; ++ allocated = *lengthp; ++ } ++ else ++ { ++ result = NULL; ++ allocated = 0; ++ } ++ length = 0; ++ /* Invariants: ++ result is either == resultbuf or == NULL or malloc-allocated. ++ If length > 0, then result != NULL. */ ++ ++ while (s < s_end) ++ { ++ uint32_t uc; ++ int count; ++ ++ /* Fetch a Unicode character from the input string. */ ++ count = u8_mbtoucr (&uc, s, s_end - s); ++ if (count < 0) ++ { ++ if (!(result == resultbuf || result == NULL)) ++ free (result); ++ errno = EILSEQ; ++ return NULL; ++ } ++ s += count; ++ ++ /* Store it in the output string. */ ++ if (length + 1 > allocated) ++ { ++ uint32_t *memory; ++ ++ allocated = (allocated > 0 ? 2 * allocated : 12); ++ if (length + 1 > allocated) ++ allocated = length + 1; ++ if (result == resultbuf || result == NULL) ++ memory = (uint32_t *) xmalloc (allocated * sizeof (uint32_t)); ++ else ++ memory = ++ (uint32_t *) xrealloc (result, allocated * sizeof (uint32_t)); ++ ++ if (memory == NULL) ++ { ++ if (!(result == resultbuf || result == NULL)) ++ free (result); ++ errno = ENOMEM; ++ return NULL; ++ } ++ if (result == resultbuf && length > 0) ++ memcpy ((char *) memory, (char *) result, ++ length * sizeof (uint32_t)); ++ result = memory; ++ } ++ result[length++] = uc; ++ } ++ ++ if (length == 0) ++ { ++ if (result == NULL) ++ { ++ /* Return a non-NULL value. NULL means error. */ ++ result = (uint32_t *) xmalloc (sizeof (uint32_t)); ++ if (result == NULL) ++ { ++ errno = ENOMEM; ++ return NULL; ++ } ++ } ++ } ++ else if (result != resultbuf && length < allocated) ++ { ++ /* Shrink the allocated memory if possible. */ ++ uint32_t *memory; ++ ++ memory = (uint32_t *) xrealloc (result, length * sizeof (uint32_t)); ++ if (memory != NULL) ++ result = memory; ++ } ++ ++ *lengthp = length; ++ return result; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68.h +@@ -0,0 +1,1117 @@ ++/* Definitions for the Algol 68 GCC front end. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#ifndef __A68_H__ ++#define __A68_H__ ++ ++/* Some common definitions first. */ ++ ++#define BUFFER_SIZE 1024 ++#define SMALL_BUFFER_SIZE 128 ++#define SNPRINTF_SIZE ((size_t) (BUFFER_SIZE - 1)) ++#define BUFCLR(z) {memset ((z), 0, BUFFER_SIZE + 1);} ++#define MOID_ERROR_WIDTH 80 ++ ++#define MONADS "%^&+-~!?" ++#define NOMADS ">= 4001) || GCC_VERSION == BUILDING_GCC_VERSION ++#define ATTRIBUTE_A68_DIAG(m, n) __attribute__ ((__format__ (__gcc_tdiag__, m, n))) ATTRIBUTE_NONNULL(m) ++#else ++#define ATTRIBUTE_A68_DIAG(m, n) ATTRIBUTE_NONNULL(m) ++#endif ++ ++/* Maximum number of priorities supported for operators. The Algol 68 RR ++ specifies 9. */ ++ ++#define MAX_PRIORITY 9 ++ ++/* The primal scope is the top-level scope. */ ++ ++#define PRIMAL_SCOPE 0 ++ ++/* Deflexing strategy. See the moid checking routines in ++ a68-parser-moids-check for an explanation of these values. */ ++ ++enum ++{ ++ NO_DEFLEXING = 1, SAFE_DEFLEXING, ALIAS_DEFLEXING, FORCE_DEFLEXING, ++ SKIP_DEFLEXING ++}; ++ ++/* Magic number for the exports data. */ ++ ++#define A68_EXPORT_MAGIC_LEN 2 ++ ++#define A68_EXPORT_MAGIC1 0x0a ++#define A68_EXPORT_MAGIC2 0x68 ++ ++/* The segment name we pass to simple_object_start_read to find Algol 68 export ++ data. */ ++ ++#ifndef A68_EXPORT_SEGMENT_NAME ++#define A68_EXPORT_SEGMENT_NAME "__GNU_A68" ++#endif ++ ++/* The section name we use when reading and writing export data. */ ++ ++#ifndef A68_EXPORT_SECTION_NAME ++#define A68_EXPORT_SECTION_NAME ".a68_exports" ++#endif ++ ++/* ga68 export format definitions. See ga68-exports.pk. */ ++ ++#define GA68_EXPORTS_VERSION 1 ++ ++#define GA68_MODE_UNKNOWN 0 ++#define GA68_MODE_VOID 1 ++#define GA68_MODE_INT 2 ++#define GA68_MODE_REAL 3 ++#define GA68_MODE_BITS 4 ++#define GA68_MODE_BYTES 5 ++#define GA68_MODE_CHAR 6 ++#define GA68_MODE_BOOL 7 ++#define GA68_MODE_CMPL 8 ++#define GA68_MODE_ROW 9 ++#define GA68_MODE_STRUCT 10 ++#define GA68_MODE_UNION 11 ++#define GA68_MODE_NAME 12 ++#define GA68_MODE_PROC 13 ++#define GA68_MODE_STRING 14 ++#define GA68_MODE_FLEX 15 ++ ++#define GA68_EXTRACT_MODU 0 ++#define GA68_EXTRACT_IDEN 1 ++#define GA68_EXTRACT_MODE 2 ++#define GA68_EXTRACT_PRIO 3 ++#define GA68_EXTRACT_OPER 4 ++ ++/* Then the types. */ ++ ++#include "a68-types.h" ++ ++/* Front-end global state. */ ++ ++extern GTY(()) A68_T a68_common; ++#define A68(z) (a68_common.z) ++#define A68_JOB A68 (job) ++#define A68_STANDENV A68 (standenv) ++#define A68_MCACHE(z) A68 (mode_cache.z) ++#define A68_INCLUDE_PATHS A68 (include_paths) ++#define A68_IMPORT_PATHS A68 (import_paths) ++#define A68_MODULE_FILES A68 (module_files) ++#define A68_GLOBAL_TREES A68 (global_trees) ++#define A68_PARSER(Z) (A68 (parser_state).Z) ++#define A68_MODULE_DEFINITION_DECLS A68 (module_definition_decls) ++#define A68_GLOBAL_CONTEXT A68 (global_context) ++#define A68_GLOBAL_DECLARATIONS A68 (global_declarations) ++ ++/* Particular pre-defined modes. */ ++ ++#define MODE(p) A68 (a68_modes.p) ++#define M_BITS (MODE (BITS)) ++#define M_BOOL (MODE (BOOL)) ++#define M_BYTES (MODE (BYTES)) ++#define M_CHANNEL (MODE (CHANNEL)) ++#define M_CHAR (MODE (CHAR)) ++#define M_COLLITEM (MODE (COLLITEM)) ++#define M_COMPLEX (MODE (COMPLEX)) ++#define M_C_STRING (MODE (C_STRING)) ++#define M_ERROR (MODE (ERROR)) ++#define M_FILE (MODE (FILE)) ++#define M_FLEX_ROW_BOOL (MODE (FLEX_ROW_BOOL)) ++#define M_FLEX_ROW_CHAR (MODE (FLEX_ROW_CHAR)) ++#define M_FORMAT (MODE (FORMAT)) ++#define M_HIP (MODE (HIP)) ++#define M_INT (MODE (INT)) ++#define M_LONG_BITS (MODE (LONG_BITS)) ++#define M_LONG_BYTES (MODE (LONG_BYTES)) ++#define M_LONG_COMPLEX (MODE (LONG_COMPLEX)) ++#define M_LONG_INT (MODE (LONG_INT)) ++#define M_LONG_LONG_INT (MODE (LONG_LONG_INT)) ++#define M_LONG_LONG_BITS (MODE (LONG_LONG_BITS)) ++#define M_LONG_LONG_COMPLEX (MODE (LONG_LONG_COMPLEX)) ++#define M_LONG_LONG_INT (MODE (LONG_LONG_INT)) ++#define M_LONG_LONG_REAL (MODE (LONG_LONG_REAL)) ++#define M_LONG_REAL (MODE (LONG_REAL)) ++#define M_NIL (MODE (NIL)) ++#define M_NUMBER (MODE (NUMBER)) ++#define M_PROC_LONG_REAL_LONG_REAL (MODE (PROC_LONG_REAL_LONG_REAL)) ++#define M_PROC_REAL_REAL (MODE (PROC_REAL_REAL)) ++#define M_PROC_REF_FILE_BOOL (MODE (PROC_REF_FILE_BOOL)) ++#define M_PROC_REF_FILE_VOID (MODE (PROC_REF_FILE_VOID)) ++#define M_PROC_ROW_CHAR (MODE (PROC_ROW_CHAR)) ++#define M_PROC_STRING (MODE (PROC_STRING)) ++#define M_PROC_VOID (MODE (PROC_VOID)) ++#define M_REAL (MODE (REAL)) ++#define M_REF_BITS (MODE (REF_BITS)) ++#define M_REF_BOOL (MODE (REF_BOOL)) ++#define M_REF_BYTES (MODE (REF_BYTES)) ++#define M_REF_CHAR (MODE (REF_CHAR)) ++#define M_REF_COMPLEX (MODE (REF_COMPLEX)) ++#define M_REF_FILE (MODE (REF_FILE)) ++#define M_REF_INT (MODE (REF_INT)) ++#define M_REF_LONG_BITS (MODE (REF_LONG_BITS)) ++#define M_REF_LONG_BYTES (MODE (REF_LONG_BYTES)) ++#define M_REF_LONG_COMPLEX (MODE (REF_LONG_COMPLEX)) ++#define M_REF_LONG_INT (MODE (REF_LONG_INT)) ++#define M_REF_LONG_LONG_BITS (MODE (REF_LONG_LONG_BITS)) ++#define M_REF_LONG_LONG_COMPLEX (MODE (REF_LONG_LONG_COMPLEX)) ++#define M_REF_LONG_LONG_INT (MODE (REF_LONG_LONG_INT)) ++#define M_REF_LONG_LONG_REAL (MODE (REF_LONG_LONG_REAL)) ++#define M_REF_LONG_REAL (MODE (REF_LONG_REAL)) ++#define M_REF_REAL (MODE (REF_REAL)) ++#define M_REF_REF_FILE (MODE (REF_REF_FILE)) ++#define M_REF_SHORT_BITS (MODE (REF_SHORT_BITS)) ++#define M_REF_SHORT_SHORT_BITS (MODE (REF_SHORT_SHORT_BITS)) ++#define M_REF_ROW_CHAR (MODE (REF_ROW_CHAR)) ++#define M_REF_ROW_COMPLEX (MODE (REF_ROW_COMPLEX)) ++#define M_REF_ROW_INT (MODE (REF_ROW_INT)) ++#define M_REF_ROW_REAL (MODE (REF_ROW_REAL)) ++#define M_REF_ROW_ROW_COMPLEX (MODE (REF_ROW_ROW_COMPLEX)) ++#define M_REF_ROW_ROW_REAL (MODE (REF_ROW_ROW_REAL)) ++#define M_REF_SHORT_INT (MODE (REF_SHORT_INT)) ++#define M_REF_SHORT_SHORT_INT (MODE (REF_SHORT_SHORT_INT)) ++#define M_REF_STRING (MODE (REF_STRING)) ++#define M_ROW_BITS (MODE (ROW_BITS)) ++#define M_ROW_BOOL (MODE (ROW_BOOL)) ++#define M_ROW_CHAR (MODE (ROW_CHAR)) ++#define M_ROW_COMPLEX (MODE (ROW_COMPLEX)) ++#define M_ROW_INT (MODE (ROW_INT)) ++#define M_ROW_REAL (MODE (ROW_REAL)) ++#define M_ROW_ROW_CHAR (MODE (ROW_ROW_CHAR)) ++#define M_ROW_ROW_COMPLEX (MODE (ROW_ROW_COMPLEX)) ++#define M_ROW_ROW_REAL (MODE (ROW_ROW_REAL)) ++#define M_ROW_SIMPLIN (MODE (ROW_SIMPLIN)) ++#define M_ROW_SIMPLOUT (MODE (ROW_SIMPLOUT)) ++#define M_ROWS (MODE (ROWS)) ++#define M_ROW_STRING (MODE (ROW_STRING)) ++#define M_SEMA (MODE (SEMA)) ++#define M_SHORT_BITS (MODE (SHORT_BITS)) ++#define M_SHORT_SHORT_BITS (MODE (SHORT_SHORT_BITS)) ++#define M_SHORT_INT (MODE (SHORT_INT)) ++#define M_SHORT_SHORT_INT (MODE (SHORT_SHORT_INT)) ++#define M_SIMPLIN (MODE (SIMPLIN)) ++#define M_SIMPLOUT (MODE (SIMPLOUT)) ++#define M_STRING (MODE (STRING)) ++#define M_UNDEFINED (MODE (UNDEFINED)) ++#define M_VACUUM (MODE (VACUUM)) ++#define M_VOID (MODE (VOID)) ++ ++/* Usage of TYPE_LANG_FLAG_* flags. */ ++ ++#define A68_ROW_TYPE_P(NODE) TYPE_LANG_FLAG_0 (NODE) ++#define A68_UNION_TYPE_P(NODE) TYPE_LANG_FLAG_1 (NODE) ++#define A68_STRUCT_TYPE_P(NODE) TYPE_LANG_FLAG_2 (NODE) ++#define A68_ROWS_TYPE_P(NODE) TYPE_LANG_FLAG_3 (NODE) ++#define A68_TYPE_HAS_ROWS_P(NODE) TYPE_LANG_FLAG_4 (NODE) ++ ++/* Language-specific tree checkers. */ ++ ++#define STRUCT_OR_UNION_TYPE_CHECK(NODE) \ ++ TREE_CHECK2 (NODE, RECORD_TYPE, UNION_TYPE) ++ ++/* Usage of TYPE_LANG_SLOT_* fields. */ ++ ++#define TYPE_FORWARD_REFERENCES(NODE) \ ++ (TYPE_LANG_SLOT_1 (STRUCT_OR_UNION_TYPE_CHECK (NODE))) ++ ++/* a68-unistr.cc */ ++ ++int a68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n); ++int a68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n); ++ ++uint32_t *a68_u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, size_t *lengthp); ++ ++/* a68-lang.cc */ ++ ++/* Global types. These are built in a68_build_a68_type_nodes and used by the ++ lowering routines. */ ++ ++#define a68_void_type A68_GLOBAL_TREES[ATI_VOID_TYPE] ++#define a68_bool_type A68_GLOBAL_TREES[ATI_BOOL_TYPE] ++#define a68_char_type A68_GLOBAL_TREES[ATI_CHAR_TYPE] ++#define a68_short_short_bits_type A68_GLOBAL_TREES[ATI_SHORT_SHORT_BITS_TYPE] ++#define a68_short_bits_type A68_GLOBAL_TREES[ATI_SHORT_BITS_TYPE] ++#define a68_bits_type A68_GLOBAL_TREES[ATI_BITS_TYPE] ++#define a68_long_bits_type A68_GLOBAL_TREES[ATI_LONG_BITS_TYPE] ++#define a68_long_long_bits_type A68_GLOBAL_TREES[ATI_LONG_LONG_BITS_TYPE] ++#define a68_bytes_type A68_GLOBAL_TREES[ATI_BYTES_TYPE] ++#define a68_long_bytes_type A68_GLOBAL_TREES[ATI_LONG_BYTES_TYPE] ++#define a68_short_short_int_type A68_GLOBAL_TREES[ATI_SHORT_SHORT_INT_TYPE] ++#define a68_short_int_type A68_GLOBAL_TREES[ATI_SHORT_INT_TYPE] ++#define a68_int_type A68_GLOBAL_TREES[ATI_INT_TYPE] ++#define a68_long_int_type A68_GLOBAL_TREES[ATI_LONG_INT_TYPE] ++#define a68_long_long_int_type A68_GLOBAL_TREES[ATI_LONG_LONG_INT_TYPE] ++#define a68_real_type A68_GLOBAL_TREES[ATI_REAL_TYPE] ++#define a68_long_real_type A68_GLOBAL_TREES[ATI_LONG_REAL_TYPE] ++#define a68_long_long_real_type A68_GLOBAL_TREES[ATI_LONG_LONG_REAL_TYPE] ++ ++struct lang_type *a68_build_lang_type (MOID_T *moid); ++struct lang_decl *a68_build_lang_decl (NODE_T *node); ++MOID_T *a68_type_moid (tree type); ++ ++/* a68-diagnostics.cc */ ++ ++void a68_error (NODE_T *p, const char *loc_str, ...); ++void a68_error_in_pragmat (NODE_T *p, size_t off, ++ const char *loc_str, ...); ++bool a68_warning (NODE_T *p, int opt, const char *loc_str, ...); ++void a68_inform (NODE_T *p, const char *loc_str, ...); ++void a68_fatal (NODE_T *p, const char *loc_str, ...); ++void a68_scan_error (LINE_T *u, char *v, const char *txt, ...); ++ ++/* a68-parser-scanner.cc */ ++ ++bool a68_lexical_analyser (const char *filename); ++ ++/* a68-parser.cc */ ++ ++int a68_count_operands (NODE_T *p); ++int a68_count_formal_bounds (NODE_T *p); ++void a68_count_pictures (NODE_T *p, int *k); ++bool a68_is_ref_refety_flex (MOID_T *m); ++bool a68_is_semicolon_less (NODE_T *p); ++bool a68_is_formal_bounds (NODE_T *p); ++bool a68_is_unit_terminator (NODE_T *p); ++bool a68_is_loop_keyword (NODE_T *p); ++bool a68_is_new_lexical_level (NODE_T *p); ++bool a68_dont_mark_here (NODE_T *p); ++enum a68_attribute a68_get_good_attribute (NODE_T *p); ++void a68_parser (const char *filename); ++NODE_INFO_T *a68_new_node_info (void); ++GINFO_T *a68_new_genie_info (void); ++NODE_T *a68_new_node (void); ++NODE_T *a68_some_node (const char *t); ++TABLE_T *a68_new_symbol_table (TABLE_T *p); ++MOID_T *a68_new_moid (void); ++PACK_T *a68_new_pack (void); ++TAG_T *a68_new_tag (void); ++void a68_make_special_mode (MOID_T **, int m); ++void a68_make_sub (NODE_T *p, NODE_T *, enum a68_attribute t); ++bool a68_whether (NODE_T *, ...); ++bool a68_is_one_of (NODE_T *p, ...); ++void a68_bufcat (char *dst, const char *src, int len); ++void a68_bufcpy (char *dst, const char *src, int len); ++char *a68_new_string (const char *t, ...); ++const char *a68_attribute_name (enum a68_attribute attr); ++location_t a68_get_node_location (NODE_T *p); ++location_t a68_get_line_location (LINE_T *line, const char *pos); ++ ++/* a68-parser-top-down.cc */ ++ ++void a68_substitute_brackets (NODE_T *p); ++const char *a68_phrase_to_text (NODE_T *p, NODE_T **w); ++void a68_top_down_parser (NODE_T *p); ++ ++/* a68-parser-bottom-up.cc */ ++ ++void a68_bottom_up_parser (NODE_T *p); ++void a68_bottom_up_error_check (NODE_T *p); ++void a68_rearrange_goto_less_jumps (NODE_T *p); ++void a68_bottom_up_coalesce_pub (NODE_T *p); ++ ++/* a68-parser-extract.cc */ ++ ++void a68_extract_indicants (NODE_T *p); ++void a68_extract_priorities (NODE_T *p); ++void a68_extract_operators (NODE_T *p); ++void a68_extract_labels (NODE_T *p, int expect); ++void a68_extract_declarations (NODE_T *p); ++void a68_elaborate_bold_tags (NODE_T *p); ++ ++/* a68-parser-keywords.cc */ ++ ++const char *a68_strop_keyword (const char *keyword); ++void a68_set_up_tables (void); ++TOKEN_T *a68_add_token (TOKEN_T **p, const char *t); ++KEYWORD_T *a68_find_keyword (KEYWORD_T *p, const char *t); ++KEYWORD_T *a68_find_keyword_from_attribute (KEYWORD_T *p, enum a68_attribute a); ++ ++/* a68-postulates.cc */ ++ ++void a68_init_postulates (void); ++void a68_free_postulate_list (POSTULATE_T *, POSTULATE_T *); ++void a68_make_postulate (POSTULATE_T **, MOID_T *, MOID_T *); ++POSTULATE_T *a68_is_postulated (POSTULATE_T *, MOID_T *); ++POSTULATE_T *a68_is_postulated_pair (POSTULATE_T *, MOID_T *, MOID_T *); ++ ++/* a68-parser-moids-check.cc */ ++ ++void a68_mode_checker (NODE_T *p); ++ ++/* a68-parser-moids-coerce.cc */ ++ ++void a68_coercion_inserter (NODE_T *p); ++ ++/* a68-parser-moids-equivalence.cc */ ++ ++bool a68_prove_moid_equivalence (MOID_T *, MOID_T *); ++ ++/* a68-parser-brackets.cc */ ++ ++void a68_check_parenthesis (NODE_T *top); ++ ++/* a68-parser-prelude.cc */ ++ ++void a68_make_standard_environ (void); ++ ++/* a68-parser-taxes.cc */ ++ ++void a68_set_proc_level (NODE_T *p, int n); ++void a68_set_nest (NODE_T *p, NODE_T *s); ++int a68_first_tag_global (TABLE_T * table, const char *name); ++void a68_collect_taxes (NODE_T *p); ++TAG_T *a68_add_tag (TABLE_T *s, int a, NODE_T *n, MOID_T *m, int p); ++TAG_T *a68_find_tag_global (TABLE_T *table, int a, const char *name); ++int a68_is_identifier_or_label_global (TABLE_T *table, const char *name); ++void a68_reset_symbol_table_nest_count (NODE_T *p); ++void a68_bind_routine_tags_to_tree (NODE_T *p); ++void a68_fill_symbol_table_outer (NODE_T *p, TABLE_T *s); ++void a68_finalise_symbol_table_setup (NODE_T *p, int l); ++void a68_preliminary_symbol_table_setup (NODE_T *p); ++void a68_mark_moids (NODE_T *p); ++void a68_mark_auxilliary (NODE_T *p); ++void a68_warn_for_unused_tags (NODE_T *p); ++void a68_jumps_from_procs (NODE_T *p); ++ ++/* a68-parser-victal.cc */ ++ ++void a68_victal_checker (NODE_T *p); ++ ++/* a68-parser-modes.cc */ ++ ++int a68_count_pack_members (PACK_T *u); ++MOID_T *a68_register_extra_mode (MOID_T **z, MOID_T *u); ++MOID_T *a68_create_mode (int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack); ++MOID_T *a68_search_equivalent_mode (MOID_T *m); ++MOID_T *a68_add_mode (MOID_T **z, int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack); ++void a68_contract_union (MOID_T *u); ++PACK_T *a68_absorb_union_pack (PACK_T * u); ++void a68_add_mode_to_pack (PACK_T **p, MOID_T *m, const char *text, NODE_T *node); ++void a68_add_mode_to_pack_end (PACK_T **p, MOID_T *m, const char *text, NODE_T *node); ++void a68_make_moid_list (MODULE_T *mod); ++ ++void a68_renumber_moids (MOID_T *p, int n); ++ ++/* a68-moids-to-string.cc */ ++ ++const char *a68_moid_to_string (MOID_T *n, size_t w, NODE_T *idf, ++ bool indicant_value = false); ++ ++/* a68-moids-misc.cc */ ++ ++bool a68_basic_coercions (MOID_T *p, MOID_T *q, int c, int deflex); ++bool a68_clause_allows_balancing (int att); ++bool a68_is_balanced (NODE_T *n, SOID_T *y, int sort); ++bool a68_is_coercible_in_context (SOID_T *p, SOID_T *q, int deflex); ++bool a68_is_coercible (MOID_T *p, MOID_T *q, int c, int deflex); ++bool a68_is_coercible_series (MOID_T *p, MOID_T *q, int c, int deflex); ++bool a68_is_coercible_stowed (MOID_T *p, MOID_T *q, int c, int deflex); ++bool a68_is_deprefable (MOID_T *p); ++bool a68_is_equal_modes (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_firmly_coercible (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_firm (MOID_T *p, MOID_T *q); ++bool a68_is_meekly_coercible (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_mode_isnt_well (MOID_T *p); ++bool a68_is_moid_in_pack (MOID_T *u, PACK_T *v, int deflex); ++bool a68_is_name_struct (MOID_T *p); ++bool a68_is_nonproc (MOID_T *p); ++bool a68_is_printable_mode (MOID_T *p); ++bool a68_is_proc_ref_file_void_or_format (MOID_T *p); ++bool a68_is_readable_mode (MOID_T *p); ++bool a68_is_ref_row (MOID_T *p); ++bool a68_is_rows_type (MOID_T *p); ++bool a68_is_softly_coercible (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_strongly_coercible (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_strong_name (MOID_T *p, MOID_T *q); ++bool a68_is_strong_slice (MOID_T *p, MOID_T *q); ++bool a68_is_subset (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_transput_mode (MOID_T *p, char rw); ++bool a68_is_unitable (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_weakly_coercible (MOID_T * p, MOID_T * q, int deflex); ++bool a68_is_widenable (MOID_T *p, MOID_T *q); ++MOID_T *a68_absorb_related_subsets (MOID_T *m); ++MOID_T *a68_depref_completely (MOID_T *p); ++MOID_T *a68_depref_once (MOID_T *p); ++MOID_T *a68_depref_rows (MOID_T *p, MOID_T *q); ++MOID_T *a68_deproc_completely (MOID_T *p); ++MOID_T *a68_derow (MOID_T *p); ++MOID_T *a68_determine_unique_mode (SOID_T *z, int deflex); ++MOID_T *a68_get_balanced_mode (MOID_T *m, int sort, bool return_depreffed, int deflex); ++MOID_T *a68_get_balanced_mode_or_no_mode (MOID_T *m, int sort, bool return_depreffed, int deflex); ++MOID_T *a68_make_series_from_moids (MOID_T *u, MOID_T *v); ++MOID_T *a68_make_united_mode (MOID_T *m); ++MOID_T *a68_pack_soids_in_moid (SOID_T *top_sl, int attribute); ++MOID_T *a68_unites_to (MOID_T *m, MOID_T *u); ++void a68_absorb_series_pack (MOID_T **p); ++void a68_absorb_series_union_pack (MOID_T **p); ++void a68_add_to_soid_list (SOID_T **root, NODE_T *where, SOID_T *soid); ++void a68_free_soid_list (SOID_T *root); ++void a68_investigate_firm_relations (PACK_T *u, PACK_T *v, bool *all, bool *some); ++void a68_make_coercion (NODE_T *l, enum a68_attribute a, MOID_T *m); ++void a68_make_depreffing_coercion (NODE_T *n, MOID_T *p, MOID_T *q); ++void a68_make_ref_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q); ++void a68_make_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q); ++void a68_make_soid (SOID_T *s, int sort, MOID_T *type, int attribute); ++void a68_make_strong (NODE_T *n, MOID_T *p, MOID_T *q); ++void a68_make_uniting_coercion (NODE_T *n, MOID_T *q); ++void a68_make_void (NODE_T *p, MOID_T *q); ++ ++#define A68_DEPREF true ++#define A68_NO_DEPREF false ++ ++#define A68_IF_MODE_IS_WELL(n) (! ((n) == M_ERROR || (n) == M_UNDEFINED)) ++ ++/* a68-parser-scope.cc */ ++ ++void a68_scope_checker (NODE_T *p); ++ ++/* a68-parser-serial-dsa.cc */ ++ ++void a68_serial_dsa (NODE_T *p); ++ ++/* a68-parser-pragmat.cc */ ++ ++void a68_handle_pragmats (NODE_T *p); ++ ++/* a68-moids-diagnostics.cc */ ++ ++const char *a68_mode_error_text (NODE_T *n, MOID_T *p, MOID_T *q, int context, int deflex, int depth); ++void a68_cannot_coerce (NODE_T *p, MOID_T *from, MOID_T *to, int context, int deflex, int att); ++void a68_warn_for_voiding (NODE_T *p, SOID_T *x, SOID_T *y, int c); ++void a68_semantic_pitfall (NODE_T *p, MOID_T *m, int c, int u); ++ ++/* a68-low-misc.cc */ ++ ++tree a68_lower_assertion (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_jump (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_parameter (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_parameter_list (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_parameter_pack (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_operator (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-low-moids.cc */ ++ ++void a68_lower_moids (MOID_T *m); ++void a68_set_type_moid (tree type, MOID_T *m); ++tree a68_row_elements_pointer_type (tree type); ++tree a68_row_elements_type (tree type); ++tree a68_triplet_type (void); ++ ++/* a68-low-bits.cc */ ++ ++tree a68_get_bits_skip_tree (MOID_T *m); ++tree a68_bits_width (tree type); ++tree a68_bits_maxbits (tree type); ++tree a68_bits_bin (MOID_T *m, tree val); ++tree a68_bits_abs (MOID_T *m, tree bits); ++tree a68_bits_leng (tree type, tree bits); ++tree a68_bits_shorten (tree type, tree bits); ++tree a68_bits_not (tree bits); ++tree a68_bits_and (tree bits1, tree bits2); ++tree a68_bits_ior (tree bits1, tree bits2); ++tree a68_bits_xor (tree bits1, tree bits2); ++tree a68_bits_elem (NODE_T *p, tree pos, tree bits); ++tree a68_bits_subset (tree bits1, tree bits2); ++tree a68_bits_shift (tree shift, tree bits); ++tree a68_bits_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_bits_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++ ++/* a68-low_bools.cc */ ++ ++tree a68_get_bool_skip_tree (void); ++tree a68_bool_abs (tree val); ++tree a68_bool_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_bool_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++ ++/* a68-low-ints.cc */ ++ ++tree a68_get_int_skip_tree (MOID_T *m); ++tree a68_int_maxval (tree type); ++tree a68_int_minval (tree type); ++tree a68_int_width (tree type); ++tree a68_int_sign (tree val); ++tree a68_int_abs (tree val); ++tree a68_int_shorten (MOID_T *to_mode, MOID_T *from_mode, tree val); ++tree a68_int_leng (MOID_T *to_mode, MOID_T *from_mode, tree val); ++ ++tree a68_int_plus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_minus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_mult (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_div (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_mod (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_pow (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_lt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_le (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_gt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_ge (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++ ++/* a68-low-complex.cc */ ++ ++tree a68_complex_i (MOID_T *mode, tree re, tree im); ++tree a68_complex_re (tree z); ++tree a68_complex_im (tree z); ++tree a68_complex_conj (MOID_T *mode, tree z); ++tree a68_complex_widen_from_real (MOID_T *mode, tree r); ++ ++/* a68-low-posix.cc */ ++ ++tree a68_posix_setexitstatus (void); ++tree a68_posix_argc (void); ++tree a68_posix_argv (void); ++tree a68_posix_getenv (void); ++tree a68_posix_putchar (void); ++tree a68_posix_puts (void); ++tree a68_posix_fconnect (void); ++tree a68_posix_fcreate (void); ++tree a68_posix_fopen (void); ++tree a68_posix_fclose (void); ++tree a68_posix_fsize (void); ++tree a68_posix_lseek (void); ++tree a68_posix_errno (void); ++tree a68_posix_perror (void); ++tree a68_posix_strerror (void); ++tree a68_posix_getchar (void); ++tree a68_posix_fgetc (void); ++tree a68_posix_fputc (void); ++tree a68_posix_fputs (void); ++tree a68_posix_gets (void); ++tree a68_posix_fgets (void); ++ ++/* a68-low-reals.cc */ ++ ++tree a68_get_real_skip_tree (MOID_T *m); ++tree a68_real_pi (tree type); ++tree a68_real_maxval (tree type); ++tree a68_real_minval (tree type); ++tree a68_real_smallval (tree type); ++tree a68_real_width (tree type); ++tree a68_real_exp_width (tree type); ++tree a68_real_sign (tree val); ++tree a68_real_abs (tree val); ++tree a68_real_sqrt (tree val); ++tree a68_real_tan (tree type); ++tree a68_real_sin (tree type); ++tree a68_real_cos (tree type); ++tree a68_real_acos (tree type); ++tree a68_real_asin (tree type); ++tree a68_real_atan (tree type); ++tree a68_real_ln (tree type); ++tree a68_real_log (tree type); ++tree a68_real_exp (tree type); ++tree a68_real_shorten (MOID_T *to_mode, MOID_T *from_mode, tree val); ++tree a68_real_leng (MOID_T *to_mode, MOID_T *from_mode, tree val); ++tree a68_real_entier (tree val, MOID_T *to_mode, MOID_T *from_mode); ++tree a68_real_round (tree val, MOID_T *to_mode, MOID_T *from_mode); ++ ++tree a68_real_plus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_minus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_mult (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_div (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_mod (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_pow (MOID_T *m, MOID_T *a_mode, MOID_T *b_mode, ++ tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_lt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_le (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_gt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_ge (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++ ++ ++/* a68-low-strings.cc */ ++ ++tree a68_get_string_skip_tree (void); ++tree a68_string_concat (tree str1, tree str2); ++tree a68_string_mult (tree str1, tree str2); ++tree a68_string_from_char (tree c); ++tree a68_string_cmp (tree s1, tree s2); ++char *a68_string_process_breaks (NODE_T *p, const char *str); ++ ++/* a68-low-chars.cc */ ++ ++tree a68_get_char_skip_tree (void); ++tree a68_char_max (void); ++tree a68_char_repr (NODE_T *p, tree val); ++tree a68_char_abs (tree val); ++tree a68_char_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_char_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_char_lt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_char_le (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_char_gt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_char_ge (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++ ++/* a68-low-refs.cc */ ++ ++tree a68_get_ref_skip_tree (MOID_T *m); ++ ++/* a68-low-procs.cc */ ++ ++tree a68_get_proc_skip_tree (MOID_T *m); ++ ++/* a68-low-structs.cc */ ++ ++tree a68_get_struct_skip_tree (MOID_T *m); ++ ++/* a68-low-multiples.cc */ ++ ++tree a68_get_multiple_skip_tree (MOID_T *m); ++tree a68_multiple_dimensions (tree exp); ++tree a68_multiple_num_elems (tree exp); ++tree a68_multiple_lower_bound (tree exp, tree dim); ++tree a68_multiple_upper_bound (tree exp, tree dim); ++tree a68_multiple_stride (tree exp, tree dim); ++tree a68_multiple_triplets (tree exp); ++tree a68_multiple_elements (tree exp); ++tree a68_multiple_elements_size (tree exp); ++tree a68_multiple_set_elements (tree exp, tree elements); ++tree a68_multiple_set_elements_size (tree exp, tree elements_size); ++void a68_multiple_compute_strides (tree type, size_t dim, ++ tree *lower_bounds, tree *upper_bounds, ++ tree *strides); ++tree a68_multiple_set_lower_bound (tree exp, tree dim, tree bound); ++tree a68_multiple_set_upper_bound (tree exp, tree dim, tree bound); ++tree a68_multiple_set_stride (tree exp, tree dim, tree stride); ++tree a68_row_value (tree type, size_t dim, ++ tree elements, tree elements_size, ++ tree *lower_bound, tree *upper_bound); ++tree a68_row_value_raw (tree type, tree descriptor, ++ tree elements, tree elements_size); ++tree a68_row_malloc (tree type, int dim, ++ tree elements, tree elements_size, ++ tree *lower_bound, tree *upper_bound); ++tree a68_multiple_slice (NODE_T *p, tree multiple, bool slicing_name, ++ int num_indexes, tree *indexes); ++tree a68_multiple_copy_elems (MOID_T *to_mode, tree to, tree from); ++tree a68_rows_dim (tree exp); ++tree a68_rows_value (tree multiple); ++tree a68_rows_lower_bound (tree rows, tree dim); ++tree a68_rows_upper_bound (tree rows, tree dim); ++tree a68_rows_dim_check (NODE_T *p, tree rows, tree dim); ++tree a68_multiple_dim_check (NODE_T *p, tree multiple, tree dim); ++tree a68_multiple_single_bound_check (NODE_T *p, tree dim, tree multiple, ++ tree index, bool upper_bound); ++tree a68_multiple_bounds_check (NODE_T *p, tree dim, tree multiple, ++ tree index); ++tree a68_multiple_bounds_check_equal (NODE_T *p, tree m1, tree m2); ++ ++/* a68-low-ranges.cc */ ++ ++bool a68_in_global_range (void); ++void a68_init_ranges (void); ++void a68_push_range (MOID_T *mode); ++tree a68_pop_range (void); ++tree a68_pop_range_with_finalizer (tree *finalizer); ++void a68_push_stmt_list (MOID_T *mode); ++tree a68_pop_stmt_list (void); ++void a68_push_function_range (tree fndel, tree result_type, ++ bool top_level = false); ++void a68_pop_function_range (tree body); ++void a68_push_serial_clause_range (MOID_T *clause_mode, ++ bool save_restore_stack = false); ++tree a68_pop_serial_clause_range (void); ++void a68_add_stmt (tree exp); ++void a68_add_decl (tree decl); ++void a68_add_decl_expr (tree decl_expr); ++void a68_add_completer (void); ++tree a68_range_context (void); ++tree a68_range_names (void); ++tree a68_range_stmt_list (void); ++ ++/* a68-low-runtime.cc */ ++ ++enum a68_libcall_fn ++{ ++#define DEF_A68_RUNTIME(CODE, N, T, P, F) A68_LIBCALL_ ## CODE, ++#include "a68-low-runtime.def" ++#undef DEF_A68_RUNTIME ++ A68_LIBCALL_LAST ++}; ++ ++tree a68_get_libcall (a68_libcall_fn libcall); ++tree a68_build_libcall (a68_libcall_fn libcall, tree type, int nargs, ...); ++ ++/* a68-low-clauses.cc */ ++ ++void a68_begin_serial_clause (LOW_CTX_T *ctx, MOID_T *clause_mode); ++tree a68_finish_serial_clause (LOW_CTX_T ctx, MOID_T *clause_mode, tree parent_block); ++tree a68_lower_label (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_labeled_unit (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_completer (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_initialiser_series (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_serial_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_loop_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_conformity_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_case_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_enquiry_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_conditional_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_unit_list (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_access_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_collateral_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_parallel_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_closed_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_enclosed_clause (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-low-coercions.cc */ ++ ++tree a68_lower_dereferencing (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_rowing (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_widening (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_deproceduring (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_proceduring (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_voiding (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_uniting (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-low-decls.cc */ ++ ++tree a68_lower_mode_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_variable_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_identity_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_procedure_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_procedure_variable_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_declarer (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_declaration_list (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_priority_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_brief_operator_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_operator_declaration (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-low.cc */ ++ ++tree a68_lower_top_tree (NODE_T *p); ++tree a68_lower_tree (NODE_T *p, LOW_CTX_T ctx); ++tree a68_make_identity_declaration_decl (NODE_T *identifier, const char *module_name = NULL, ++ bool indicant = false, bool external = false, ++ const char *extern_symbol = NULL); ++tree a68_make_variable_declaration_decl (NODE_T *identifier, const char *module_name = NULL, ++ bool external = false, ++ const char *extern_symbol = NULL); ++tree a68_make_proc_identity_declaration_decl (NODE_T *identifier, const char *module_name = NULL, ++ bool indicant = false, bool external = false, ++ const char *extern_symbol = NULL); ++tree a68_make_anonymous_routine_decl (MOID_T *mode); ++tree a68_get_skip_tree (MOID_T *m); ++tree a68_get_empty (void); ++void a68_ref_counts (tree exp, MOID_T *m, int *num_refs, int *num_pointers); ++tree a68_consolidate_ref (MOID_T *m, tree expr); ++tree a68_lower_alloca (tree type, tree size); ++tree a68_lower_malloc (tree type, tree size); ++tree a68_checked_indirect_ref (NODE_T *p, tree exp, MOID_T *exp_mode); ++tree a68_low_deref (tree exp, NODE_T *p); ++tree a68_low_dup (tree exp, bool use_heap = false); ++tree a68_low_ascription (MOID_T *mode, tree lhs, tree rhs); ++tree a68_low_assignation (NODE_T *p, tree lhs, MOID_T *lhs_mode, tree rhs, MOID_T *rhs_mode); ++tree a68_lower_memcpy (tree dst, tree src, tree size); ++tree a68_lower_tmpvar (const char *name, tree type, tree init); ++tree a68_get_mangled_identifier (const char *name, ++ const char *mname = NULL, bool internal = false, ++ bool numbered = false); ++tree a68_get_mangled_indicant (const char *name, ++ const char *mname = NULL, bool internal = false, ++ bool numbered = false); ++char *a68_demangle_symbol (const char *mname, const char *symbol, ++ bool is_operator = false); ++tree a68_low_toplevel_func_decl (const char *name, tree fntype); ++tree a68_low_func_param (tree fndecl, const char *name, tree type); ++ ++/* a68-low-builtins.cc */ ++ ++void a68_install_builtins (); ++ ++/* a68-low-unions.c */ ++ ++int a68_united_mode_index (MOID_T *p, MOID_T *q); ++tree a68_get_union_skip_tree (MOID_T *m); ++tree a68_union_overhead (tree exp); ++tree a68_union_set_overhead (tree exp, tree overhead); ++tree a68_union_cunion (tree exp); ++tree a68_union_alternative (tree exp, int index); ++tree a68_union_value (MOID_T *mode, tree exp, MOID_T *exp_mode); ++tree a68_union_translate_overhead (MOID_T *from, tree from_overhead, MOID_T *to); ++bool a68_union_contains_mode (MOID_T *p, MOID_T *q); ++ ++/* a68-low-units.cc */ ++ ++tree a68_lower_identifier (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_denotation (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_denotation (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_skip (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_nihil (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_empty (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_identity_relation (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_logic_function (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_primary (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_cast (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_secondary (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_slice (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_selection (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_formula (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_monadic_formula (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_tertiary (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_assignation (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_routine_text (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_generator (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_call (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_unit (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-low-generator.c */ ++ ++tree a68_low_generator (NODE_T *declarer, MOID_T *mode, ++ bool heap, LOW_CTX_T ctx); ++tree a68_low_gen (MOID_T *m, size_t nbuonds, tree *bounds, ++ bool use_heap); ++ ++/* a68-low-prelude.c */ ++ ++tree a68_lower_unimplemented (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_assert (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_intabs2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_realabs2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_boolabs2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_charabs2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_not2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_and3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_or3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_xor3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_confirm2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_negate2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_sign2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_realsign2 (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_plus_int (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_plus_real (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_minus_int (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_minus_real (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_mult_int (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_mult_real (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_multab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_div3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_divab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_rdiv3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_over3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_mod3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_lt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_le3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_gt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_ge3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_lt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_le3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_gt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_ge3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_lt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_le3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_gt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_ge3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bool_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bool_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_plusab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_minusab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_overab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_modab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_upb2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_upb3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_lwb2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_lwb3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_elems2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_elems3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_entier2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_round2 (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_pow_int (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_pow_real (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_odd2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_lt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_le3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_gt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_ge3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_plus3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_plus3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_plusab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_mult3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_mult3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_multab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_plusto3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_repr2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitelem3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bin2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitabs2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitleng2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitshorten2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitnot2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitand3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitior3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitxor3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shl3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shr3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_le3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_ge3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_maxint (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_minint (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_maxbits (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_maxreal (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_minreal (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_smallreal (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitswidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longbitswidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongbitswidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortbitswidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortshortbitswidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_intwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longintwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongintwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortintwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortshortintwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_realwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longrealwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongrealwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_expwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longexpwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongexpwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_pi (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_nullcharacter (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_flip (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_flop (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_errorchar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_blank (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_eofchar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_replacementchar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_intlengths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_intshorths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitslengths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitsshorths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_reallengths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_realshorths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_infinity (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_minusinfinity (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_maxabschar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_sqrt (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_sqrt (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_sqrt (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_tan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_tan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_tan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_sin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_sin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_sin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_cos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_cos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_cos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_acos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_acos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_acos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_asin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_asin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_asin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_atan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_atan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_atan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_ln (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_ln (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_ln (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_log (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_log (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_log (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_exp (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_exp (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_exp (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_reali (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longreali (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongreali (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_inti (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longinti (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlonginti (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_re2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_im2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_conj2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortenint2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_lengint2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_lengreal2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortenreal2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_random (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longrandom (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongrandom (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_setexitstatus (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixargc (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixargv (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixputchar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixputs (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfputc (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfputs (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixgetenv (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfconnect (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfopen (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfcreate (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfclose (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfsize (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixlseek (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixseekcur (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixseekend (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixseekset (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixstdinfiledes (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixstdoutfiledes (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixstderrfiledes (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfileodefault (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfileordwr (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfileordonly (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfileowronly (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfileotrunc (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixerrno (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixperror (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixstrerror (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixgetchar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfgetc (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixgets (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfgets (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-exports.cc */ ++ ++MOIF_T *a68_moif_new (const char *module_name); ++void a68_moif_free (MOIF_T *moif); ++void a68_do_exports (NODE_T *p); ++ ++/* a68-imports.cc */ ++ ++MOIF_T *a68_open_packet (const char *module); ++ ++/* a68-parser-debug.cc */ ++ ++void a68_dump_parse_tree (NODE_T *p, bool tables = false, bool levels = false); ++void a68_dump_modes (MOID_T *m); ++void a68_dump_moif (MOIF_T *moif); ++ ++#endif /* ! __A68_H__ */ +--- /dev/null ++++ b/src/gcc/algol68/a68spec.cc +@@ -0,0 +1,222 @@ ++/* a68spec.c -- Specific flags and argument handling of the Algol 68 front end. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ You should have received a copy of the GNU General Public License along with ++ GCC; see the file COPYING3. If not see . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "opt-suggestions.h" ++#include "gcc.h" ++#include "tm.h" ++#include "opts.h" ++ ++/* satisfy intellisense */ ++#include "options.h" ++ ++/* How to link with libga68. */ ++enum libga68_link_mode ++{ ++ LIBGA68_NOLINK, ++ LIBGA68_STATIC, ++ LIBGA68_DYNAMIC ++}; ++ ++static enum libga68_link_mode libga68_link = LIBGA68_STATIC; ++ ++/* This bit is set if we saw a `-xfoo' language specification. */ ++#define LANGSPEC (1 << 1) ++/* This bit is set if they did `-lc'. */ ++#define WITHLIBC (1 << 2) ++/* Skip this option. */ ++#define SKIPOPT (1 << 3) ++ ++void ++lang_specific_driver (struct cl_decoded_option **in_decoded_options, ++ unsigned int *in_decoded_options_count, ++ int *in_added_libraries) ++{ ++ unsigned int i, j; ++ ++ /* The new argument list will be contained in this. */ ++ struct cl_decoded_option *new_decoded_options; ++ ++ /* "-lc" if it appears on the command line. */ ++ const struct cl_decoded_option *saw_libc = 0; ++ ++ /* An array used to flag each argument that needs a bit set for ++ LANGSPEC or WITHLIBC. */ ++ int *args; ++ ++ /* True if we saw -static. */ ++ int static_link = 0; ++ ++ /* True if we should add -shared-libgcc to the command-line. */ ++ int shared_libgcc = 1; ++ ++ /* The total number of arguments with the new stuff. */ ++ unsigned int argc; ++ ++ /* The argument list. */ ++ struct cl_decoded_option *decoded_options; ++ ++ /* The number of libraries added in. */ ++ int added_libraries; ++ ++ /* The total number of arguments with the new stuff. */ ++ int num_args = 1; ++ ++ /* Whether the -o option was used. */ ++ // bool saw_opt_o = false; ++ ++ argc = *in_decoded_options_count; ++ decoded_options = *in_decoded_options; ++ added_libraries = *in_added_libraries; ++ ++ args = XCNEWVEC (int, argc); ++ ++ for (i = 1; i < argc; i++) ++ { ++ const char *arg = decoded_options[i].arg; ++ ++ switch (decoded_options[i].opt_index) ++ { ++ case OPT__help: ++ case OPT__help_: ++ /* Let gcc.cc handle this. */ ++ *in_added_libraries = 0; ++ return; ++ case OPT_c: ++ case OPT_E: ++ case OPT_M: ++ case OPT_MM: ++ case OPT_fsyntax_only: ++ case OPT_S: ++ libga68_link = LIBGA68_NOLINK; ++ break; ++ ++ case OPT_l: ++ if (strcmp (arg, "c") == 0) ++ args[i] |= WITHLIBC; ++ break; ++ ++ case OPT_o: ++ //saw_opt_o = true; ++ break; ++ ++ case OPT_static: ++ static_link = 1; ++ break; ++ ++ case OPT_static_libgcc: ++ shared_libgcc = 0; ++ break; ++ ++ case OPT_static_libga68: ++ libga68_link = LIBGA68_STATIC; ++#ifdef HAVE_LD_STATIC_DYNAMIC ++ /* Remove -static-libga68 from the command only if target supports ++ LD_STATIC_DYNAMIC. When not supported, it is left in so that a ++ back-end target can use outfile substitution. */ ++ args[i] |= SKIPOPT; ++#endif ++ break; ++ ++ case OPT_shared_libga68: ++ libga68_link = LIBGA68_DYNAMIC; ++ args[i] |= SKIPOPT; ++ break; ++ ++ case OPT_SPECIAL_input_file: ++ break; ++ } ++ } ++ ++ /* There's no point adding -shared-libgcc if we don't have a shared ++ libgcc. */ ++#ifndef ENABLE_SHARED_LIBGCC ++ shared_libgcc = 0; ++#endif ++ ++ /* Make sure to have room for the trailing NULL argument. ++ - libga68 adds `-Bstatic -lga68 -Bdynamic' */ ++ num_args = argc + shared_libgcc + 1 * 5 + 10; ++ new_decoded_options = XNEWVEC (struct cl_decoded_option, num_args); ++ ++ i = 0; ++ j = 0; ++ ++ /* Copy the 0th argument, i.e., the name of the program itself. */ ++ new_decoded_options[j++] = decoded_options[i++]; ++ ++ /* NOTE: We start at 1 now, not 0. */ ++ while (i < argc) ++ { ++ new_decoded_options[j] = decoded_options[i]; ++ ++ if (!saw_libc && (args[i] & WITHLIBC)) ++ { ++ --j; ++ saw_libc = &decoded_options[i]; ++ } ++ ++ if ((args[i] & SKIPOPT) != 0) ++ --j; ++ ++ i++; ++ j++; ++ } ++ ++ if (saw_libc) ++ new_decoded_options[j++] = *saw_libc; ++ if (shared_libgcc && !static_link) ++ generate_option (OPT_shared_libgcc, NULL, 1, CL_DRIVER, ++ &new_decoded_options[j++]); ++ ++ /* Add `-lga68 -lm' if we haven't already done so. */ ++#ifdef HAVE_LD_STATIC_DYNAMIC ++ if (libga68_link == LIBGA68_STATIC && !static_link) ++ { ++ generate_option (OPT_Wl_, LD_STATIC_OPTION, 1, CL_DRIVER, ++ &new_decoded_options[j++]); ++ added_libraries++; /* The driver calls add_infile while handling -Wl */ ++ } ++#endif ++ generate_option (OPT_l, ++ "ga68", 1, ++ CL_DRIVER, &new_decoded_options[j++]); ++ added_libraries++; ++#ifdef HAVE_LD_STATIC_DYNAMIC ++ if (libga68_link == LIBGA68_STATIC && !static_link) ++ { ++ generate_option (OPT_Wl_, LD_DYNAMIC_OPTION, 1, CL_DRIVER, ++ &new_decoded_options[j++]); ++ added_libraries++; /* The driver calls add_infile while handling -Wl */ ++ } ++#endif ++ *in_decoded_options_count = j; ++ *in_decoded_options = new_decoded_options; ++ *in_added_libraries = added_libraries; ++} ++ ++/* Called before linking. Returns 0 on success and -1 on failure. */ ++int ++lang_specific_pre_link (void) ++{ ++ if (libga68_link != LIBGA68_NOLINK) ++ do_spec ("%:include(libga68.spec)"); ++ return 0; ++} ++ ++/* Number of extra output files that lang_specific_pre_link may generate. */ ++int lang_specific_extra_outfiles = 0; /* Not used for Algol68. */ +--- /dev/null ++++ b/src/gcc/algol68/algol68-target.def +@@ -0,0 +1,52 @@ ++/* Target hook definitions for the Algol68 front end. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ This program is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by the ++ Free Software Foundation; either version 3, or (at your option) any ++ later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; see the file COPYING3. If not see ++ . */ ++ ++/* See target-hooks-macros.h for details of macros that should be ++ provided by the including file, and how to use them here. */ ++ ++#include "target-hooks-macros.h" ++ ++#undef HOOK_TYPE ++#define HOOK_TYPE "Algol68 Target Hook" ++ ++HOOK_VECTOR (TARGETALGOL68M_INITIALIZER, gcc_targetalgol68m) ++ ++#undef HOOK_PREFIX ++#define HOOK_PREFIX "TARGET_" ++ ++/* Environmental CPU info and features (e.g. endianness, pointer size) relating ++ to the target CPU. */ ++DEFHOOK ++(algol68_cpu_info, ++ "Declare all environmental CPU info and features relating to the target CPU\n\ ++using the function @code{algol68_add_target_info}, which takes a string\n\ ++representing the feature key and a string representing the feature value.\n\ ++Configuration pairs predefined by this hook apply to all files that are being\n\ ++compiled.", ++ void, (void), ++ hook_void_void) ++ ++/* Environmental OS info relating to the target OS. */ ++DEFHOOK ++(algol68_os_info, ++ "Similar to @code{TARGET_ALGOL68_CPU_INFO}, but is used for configuration info\n\ ++relating to the target operating system.", ++ void, (void), ++ hook_void_void) ++ ++/* Close the 'struct gcc_targetalgol68m' definition. */ ++HOOK_VECTOR_END (C90_EMPTY_HACK) +--- /dev/null ++++ b/src/gcc/algol68/config-lang.in +@@ -0,0 +1,32 @@ ++# config-lang.in -- Top level configure fragment for gcc Algol 68 frontend. ++ ++# Copyright (C) 2025 Free Software Foundation, Inc. ++ ++# GCC is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3, or (at your option) ++# any later version. ++ ++# GCC is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++ ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Configure looks for the existence of this file to auto-config each language. ++# We define several parameters used by configure: ++# ++# language - name of language as it would appear in $(LANGUAGES) ++# compilers - value to add to $(COMPILERS) ++ ++language="algol68" ++compilers="a681\$(exeext)" ++gtfiles="\$(srcdir)/algol68/a68-types.h \$(srcdir)/algol68/a68.h \$(srcdir)/algol68/a68-lang.cc \$(srcdir)/algol68/a68-low-ranges.cc" ++ ++target_libs="target-libga68" ++ ++# Do not build by default. ++build_by_default="no" +--- /dev/null ++++ b/src/gcc/algol68/ga68-exports.pk +@@ -0,0 +1,297 @@ ++/* ga68-exports.pk - GCC Algol 68 exports format. ++ ++ Copyright (C) 2025 Jose E. Marchesi ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* GNU Algol 68 source files (compilation units, or "packets") may ++ contain either a single particular-program or a set of one or more ++ module definitions. ++ ++ When compiling a compilation unit containing module definitions, ++ the ga68 compiler emits an ELF section called .a68_exports along ++ with the usual compiled object code. This section contains ++ information that reflects the PUBlicized identifiers exported by ++ module definitions: modes, operators, procedures, identifiers, ++ other module definitions, etc. This interface is complete enough ++ to allow other compilation units to access these declarations. ++ ++ The information that is in a module interface is defined in the MR ++ document using a sort of grammar. It is: ++ ++ module interface : ++ unique code & external symbol & hole description option & ++ mode table & definition summary. ++ ++ definition summary : ++ set of definition groups. ++ ++ definition group : ++ module identity & set of definition extracts. ++ ++ definition extract : ++ mode extract ; ++ operation extract ; ++ priority extract ; ++ identifier extract ; ++ definition module extract ; ++ invocation extract. ++ ++ mode extract : ++ mode marker & mode indication & mode & mdextra. ++ ++ operation extract : ++ operation marker & operator & mode & mdextra. ++ ++ priority extract : ++ priority marker & operator & integer priority & mdextra. ++ ++ identifier extract : ++ identifier marker & identifier & mode & mdextra. ++ ++ definition module extract : ++ definition module marker & definition module indication & ++ definition summary & mdextra. ++ ++ invocation extract : ++ module identity. ++ ++ mdextra : ++ extra machine-dependent information. ++ ++ This pickle precisely describes how the module interfaces are ++ encoded in the .a68_exports ELF section, which are of type PROGBITS ++ and thus are concatenated by ELF linkers. This works well because ++ each compilation unit may contain several module definitions, but a ++ module definition cannot be splitted among several compilation ++ units. */ ++ ++/* The exports format is versioned. A bump in the format version ++ number indicates the presence of a backward incompatibility. This ++ is important because .ga68_exports section may contain module ++ definition interfaces having different versions, so compilers and ++ tools designed to operate on version "n" must ignore, or error on, ++ modules definition interfaces with later versions. */ ++ ++var ga68_exports_ver = 1; ++ ++/* References other sections and the .ga68_export section itself are ++ realized via link-time relocations: ++ ++ References to code addresses are relative to some text section. ++ References to data in .ga68_export are relative to the start of the ++ section. */ ++ ++load elf; ++ ++type ga68_text_reloc = Elf64_Addr; ++type ga68_data_reloc = Elf64_Addr; ++ ++/* Strings are encoded in-place and are both pre-sized and ++ NULL-terminated. This is to ease reading them quickly and ++ efficiently. Note that the size includes the final NULL ++ character. */ ++ ++type ga68_str = ++ struct ++ { ++ offset,B> len; ++ string s: s'size == len; ++ }; ++ ++/* Each module definition interface includes a table of modes, that ++ contains not only the modes for which mode extracts exist, but also ++ the indirectly referred modes: since Algol 68 used structural ++ equivalence of modes, each mode has to be defined fully. The ++ encoding therefore tries to be as compact as possible while ++ allowing being read with a reasonable level of performance and ++ convenience. */ ++ ++var GA68_MODE_UNKNOWN = 0UB, ++ GA68_MODE_VOID = 1UB, ++ GA68_MODE_INT = 2UB, ++ GA68_MODE_REAL = 3UB, ++ GA68_MODE_BITS = 4UB, ++ GA68_MODE_BYTES = 5UB, ++ GA68_MODE_CHAR = 6UB, ++ GA68_MODE_BOOL = 7UB, ++ GA68_MODE_CMPL = 8UB, ++ GA68_MODE_ROW = 9UB, ++ GA68_MODE_STRUCT = 10UB, ++ GA68_MODE_UNION = 11UB, ++ GA68_MODE_NAME = 12UB, ++ GA68_MODE_PROC = 13UB, ++ GA68_MODE_STRING = 14UB, ++ GA68_MODE_FLEX = 15UB; ++ ++type ga68_mode = ++ struct ++ { ++ uint<8> kind : kind in [GA68_MODE_VOID, GA68_MODE_INT, ++ GA68_MODE_REAL, GA68_MODE_BITS, ++ GA68_MODE_BYTES, GA68_MODE_CHAR, ++ GA68_MODE_CMPL, GA68_MODE_ROW, ++ GA68_MODE_STRUCT, GA68_MODE_UNION, ++ GA68_MODE_NAME, GA68_MODE_PROC, ++ GA68_MODE_FLEX]; ++ ++ union ++ { ++ int<8> sizety : kind in [GA68_MODE_INT, GA68_MODE_REAL, ++ GA68_MODE_CMPL, GA68_MODE_BITS, ++ GA68_MODE_BYTES]; ++ struct ++ { ++ ga68_data_reloc mode; ++ } name : kind == GA68_MODE_NAME || kind == GA68_MODE_FLEX; ++ ++ struct ++ { ++ type triplet = struct { ga68_text_reloc lb; ga68_text_reloc ub; }; ++ ++ uint<8> ndims; ++ triplet[ndims] dims; ++ ga68_data_reloc row_of; ++ } row : kind == GA68_MODE_ROW; ++ ++ struct ++ { ++ type field = struct { ga68_data_reloc mode; ga68_str name; }; ++ ++ uint<16> nfields; ++ field[nfields] fields; ++ } sct : kind == GA68_MODE_STRUCT; ++ ++ struct ++ { ++ uint<8> nmodes; ++ ga68_data_reloc[nmodes] modes; ++ } uni : kind == GA68_MODE_UNION; ++ ++ struct ++ { ++ type arg = struct { ga68_data_reloc mode; ga68_str name; }; ++ ++ ga68_data_reloc ret_mode; ++ uint<8> nargs; ++ arg[nargs] args; ++ } routine : kind == GA68_MODE_PROC; ++ ++ struct { } _ : kind in [GA68_MODE_UNKNOWN, GA68_MODE_VOID, ++ GA68_MODE_CHAR, GA68_MODE_BOOL, ++ GA68_MODE_STRING]; ++ ++ } data; ++ }; ++ ++/* Each module definition interface includes a table of "extracts", ++ one per identifier PUBlicized by the module definition. ++ ++ Mode extracts represent declarations of mode indications, like for ++ example `mode Foo = struct (int i, real r)'. ++ ++ Identifier extracts represent declarations of constans, variables, ++ procedures and operators. Examples are `real pi = 3.14', `int ++ counter', `proc double = (int a) int : a * 2' and `op // = (int a, ++ b) int: a % b'. ++ ++ Priority extracts represent declarations of priorities for dyadic ++ operators, like for example `prio // = 9'. ++ ++ Finally, module extracts represent the PUBlication of some other ++ module definition. For example, the module definition `mode Foo = ++ access A, B def ... fed' will include module extracts for both "A" ++ and "B" in its interface. ++ ++ Some of the extracts may need some additional compiler-specific or ++ machine-specific information, whose contents are not specified ++ here. */ ++ ++var GA68_EXTRACT_MODU = 0UB, ++ GA68_EXTRACT_IDEN = 1UB, ++ GA68_EXTRACT_MODE = 2UB, ++ GA68_EXTRACT_PRIO = 3UB, ++ GA68_EXTRACT_OPER = 4UB; ++ ++type ga68_extract = ++ struct ++ { ++ Elf64_Off extract_size; ++ union ++ { ++ struct ++ { ++ uint<8> mark : mark == GA68_EXTRACT_MODU; ++ ga68_str module_indication; ++ } module; ++ ++ struct ++ { ++ uint<8> mark : mark == GA68_EXTRACT_IDEN; ++ ga68_str name; ++ ga68_data_reloc mode; ++ } identifier; ++ ++ struct ++ { ++ uint<8> mark : mark == GA68_EXTRACT_MODE; ++ ga68_str mode_indication; ++ ga68_data_reloc mode; ++ } mode; ++ ++ struct ++ { ++ uint<8> mark : mark == GA68_EXTRACT_PRIO; ++ ga68_str opname; ++ uint<8> prio; ++ } prio; ++ ++ struct ++ { ++ uint<8> mark : mark == GA68_EXTRACT_OPER; ++ ga68_str opname; ++ ga68_mode mode; ++ } oper; ++ ++ } extract : extract'size == extract_size; ++ ++ Elf64_Off mdextra_size; ++ uint<8>[mdextra_size] data; ++ }; ++ ++/* The contents of the .ga68_exports section can be mapped as a ++ ga68_module[sec.sh_size] */ ++ ++type ga68_module = ++ struct ++ { ++ uint<8>[2] magic : magic == [0x0aUB, 0xadUB]; ++ uint<16> version : version == ga68_exports_ver; ++ ++ /* Module identification. ++ Add a hash or UUID? */ ++ ga68_str name; ++ ++ /* Entry points. */ ++ ga68_str prelude; ++ ga68_str poslude; ++ ++ /* Table of modes. */ ++ Elf64_Off modes_size; ++ ga68_mode[modes_size] modes; ++ ++ /* Table of extracts. */ ++ Elf64_Off extracts_size; ++ ga68_extract[extracts_size] extracts; ++ }; +--- /dev/null ++++ b/src/gcc/algol68/ga68-internals.texi +@@ -0,0 +1,383 @@ ++\input texinfo @c -*-texinfo-*- ++@c %**start of header ++@setfilename ga68-internals.info ++ ++@include gcc-common.texi ++ ++@synindex tp cp ++ ++@settitle GNU Algol 68 Compiler Internals ++ ++@c %**end of header ++ ++@c %** start of document ++ ++@copying ++Copyright @copyright{} 2025 Jose E. Marchesi. ++ ++Permission is granted to copy, distribute and/or modify this document ++under the terms of the GNU Free Documentation License, Version 1.3 or ++any later version published by the Free Software Foundation; with no ++Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A ++copy of the license is included in the section entitled ``GNU Free ++Documentation License''. ++@end copying ++ ++@ifinfo ++@dircategory Software development ++@direntry ++* ga68-internals: (ga68-internals). The GNU Algol 68 Compiler Internals. ++@end direntry ++This file documents the internals of the GNU Algol 68 ++compiler, (@command{ga68}). ++ ++@insertcopying ++@end ifinfo ++ ++@c Macro for bold-tags. In TeX and HTML they expand to proper bold words, ++@c in other formats it resorts to upper stropping. ++@iftex ++@macro B{tag} ++@strong{\tag\} ++@end macro ++@end iftex ++ ++@ifhtml ++@macro B{tag} ++@strong{\tag\} ++@end macro ++@end ifhtml ++ ++@ifnottex ++@ifnothtml ++@macro B{tag} ++@sc{\tag\} ++@end macro ++@end ifnothtml ++@end ifnottex ++ ++@setchapternewpage odd ++@titlepage ++@title GNU Algol 68 Internals ++@versionsubtitle ++@author Jose E. Marchesi ++@page ++@vskip 0pt plus 1filll ++@sp 1 ++@insertcopying ++@end titlepage ++ ++@summarycontents ++@contents ++ ++@page ++ ++@ifnottex ++@node Top ++@top Introduction ++@cindex Introduction ++ ++This manual documents (some of) the internals of @command{ga68}, the ++GNU Algol 68 compiler. ++ ++@menu ++* Scope Checking:: Scope checking in assignation. ++* Storage Management:: Management of run-time storage. ++* Lowering Declarations:: Mapping external objects to internal objects. ++* Lowering Assignations:: Superceding the value referred by a name. ++* GNU Free Documentation License:: ++ How you can copy and share this manual. ++* Index:: Index of this documentation. ++@end menu ++@end ifnottex ++ ++@c --------------------------------------------------------------------- ++@c Scope Checking ++@c --------------------------------------------------------------------- ++ ++@node Scope Checking ++@chapter Scope Checking ++ ++Static scope checking: pass. ++Dynamic scope checking: run-time call. ++ ++@c --------------------------------------------------------------------- ++@c Storage Management ++@c --------------------------------------------------------------------- ++ ++@node Storage Management ++@chapter Storage Management ++ ++This chapter discusses the run-time management of internal objects in ++Algol 68. ++ ++First, a conceptual model is presented that describes the restrictions ++as mandated by the Report. The storage implied by the lowered GENERIC ++entities, as described in the previous chapter, shall match the ++storage of the conceptual model. ++ ++@menu ++* Storage Structure of Objects:: ++* Copying of Objects:: ++* The Stack:: ++* The Heap:: ++@end menu ++ ++@node Storage Structure of Objects ++@section Storage Structure of Objects ++ ++The internal objects which are the values in an Algol 68 program may ++consist on a hierarchy of memory locations, which may not be ++contiguous. This hierarchy of memory locations is the storage ++structure of the object, and is not concerned by the particular ++bit-patterns stored. ++ ++Simple values. ++ ++Names. ++ ++Multiple values. ++ ++Structured values. ++ ++Values of united modes. ++ ++@node Copying of Objects ++@section Copying of Objects ++ ++@node The Stack ++@section The Stack ++ ++XXX ++ ++@node The Heap ++@section The Heap ++ ++@itemize @minus ++@item ++A value that has rows and gets returned by a procedure shall be ++allocated on the stack. ++@item ++A copy of the right hand side is made before assigning it to the left ++hand side. This copy is always allocated in the heap, because the ++scope of the left hand side may be older than the scope of the right ++hand side. This happens when assigning to a global variable. ++@item ++A trimmer of a name. This is because the trimmed multiple may be ++allocated on the heap, and the trim shall have the same scope than the ++trimmed multiple. ++@end itemize ++ ++@c --------------------------------------------------------------------- ++@c Internal Objects ++@c --------------------------------------------------------------------- ++ ++@node Lowering Declarations ++@chapter Lowering Declarations ++ ++This chapter describes the mapping between external objects declared ++in identity and variable declarations and the internal objects that ++are the result of lowering the external objects in the parse tree into ++GENERIC entities. ++ ++@menu ++* Identity Declarations:: @code{@B{amode} xxx = init value} ++* Variable Declarations:: @code{@B{amode} xxx [:= init value]} ++* Procedure Identity Declarations:: @code{@B{proc} xxx = routine text} ++* Procedure Variable Declarations:: @code{@B{proc} xxx := routine text} ++* Operator Brief Declarations:: @code{@B{op} @B{xxx} = routine text} ++* Operator Declarations:: @code{@B{op}(...)@B{amode} @B{xxx} = routine text} ++* Applied Identifiers:: ++@end menu ++ ++@node Identity Declarations ++@section Identity Declarations ++ ++An identity declaration with the form: ++ ++@example ++@B{c} part 1 @B{c} ++@B{amode} defining_identifier = unit; ++@B{c} part 2 @B{c} ++@end example ++ ++@noindent ++Introduces the identifier @code{defining_identifier} in the current ++range and ascribes a copy of the value yielded by @code{unit} to it. ++Once established, the relationship between an identifier and the value ++ascribed to it is constant and it cannot change during the reach of ++the identifier. The ascribed unit can be any unitary clause, and its ++elaboration can be arbitrarily complicated. In particular, it is not ++required to be a compile-time constant. @code{@B{amode}} determines ++the mode of the value yielded by the unit, and the unit is elaborated ++in a strong context. ++ ++An identity declaration like the above, where @code{@B{amode}} is not ++a procedure mode (@xref{Procedure Identity Declarations}) is lowered ++into: ++ ++@itemize @bullet ++@item ++A @code{VAR_DECL} with name @code{defining_identifier}, type ++@code{CTYPE (@B{amode})} and initial value @code{@B{amode}(@B{skip})} ++that gets chained into the declarations list of the current block. ++@item ++A @code{DECL_EXPR} that gets prepended in the current statement's list. ++@item ++A @code{MODIFY_EXPR} setting the @code{VAR_DECL} to a copy of the ++lowering of @code{unit}, @code{a68_low_dup (unit)}. ++@end itemize ++ ++@noindent ++Schematically: ++ ++@example ++ BIND_EXPR (BLOCK (DECLS: ... -> VAR_DECL (defining_identifier, INITIAL=SKIP))) ++ STMT_LIST ++ | ++ +-- DECL_EXPR (defining_identifier) ++ | ++ | @B{c} part 1 @B{c} ++ | ++ +-- MODIFY_EXPR (defining_identifier, unit) ++ | ++ | @B{c} part 2 @B{c} ++ | ++@end example ++ ++The reason why the @code{VAR_DECL} is initialized to @code{@B{skip}} ++and then set to the initial @code{unit} specified in the source line ++is that the Report specifies that Algol 68 identifiers can be used ++before they are defined provided we are in the right range, but in ++that case the value ascribed to the identifier is ``undefined''. ++Accessing an ``undefined'' value in traditional Algol 68 ++implementations would lead to a run-time error (these implementations ++used a special value to denote undefined, such as @code{F00L}) but in ++GNU Algol 68 the ``undefined'' value is always @code{@B{skip}} which, ++if not terribly useful in most cases, is at least well defined in this ++implementation and doesn't lead to an error. ++ ++Identity declarations are the Algol 68 way of defining constants, and ++one may wonder why we are not using @code{CONST_DECL} instead of ++@code{VAR_DECL}. The reason is that @code{CONST_DECL} is really only ++intended for integral values in C enums, and the @code{@B{amode}} in ++the identity declaration can really be any mode, from simple integers ++or characters to fairly complicated structured modes, which may ++involve also rows and united modes. Whether the @code{VAR_DECL} will ++lead to allocating storage on the stack depends on the nature of the ++mode and the way the identifier is used in the program: whether its ++address is taken, etc. ++ ++@node Variable Declarations ++@section Variable Declarations ++ ++A variable declaration with the form: ++ ++@example ++[@B{loc}|@B{heap}] @B{amode} defining identifier [:= unit]; ++@end example ++ ++@noindent ++Is in principle equivalent to the identity declaration: ++ ++@example ++@B{ref} @B{amode} defining identifier = [@B{loc}|@B{heap}] @B{amode}; ++@end example ++ ++@noindent ++In both cases the object ascribed to the defining identifier is of ++mode @code{@B{ref} @B{amode}}. The ascribed object is a name which is ++created by a generator implied in the actual declarer in the variable ++declaration case, and an explicit generator in the initialization ++expression in the identity declaration case. ++ ++However, in this compiler these two cases are handled differently in ++order to reduce the amount of both indirect addressing and of storage: ++ ++@itemize @bullet ++@item ++The variable declaration @code{[@B{loc}|@B{heap}] @B{amode} foo} ++lowers into a @code{VAR_DECL} with type @code{CTYPE (amode)} provided ++that the generator is @code{@B{loc}} and that the type contains no ++rows. Accessing the variable will then involve direct addressing, and ++when its address is required an @code{ADDR_EXPR} shall be used. ++@item ++The identity declaration @code{@B{ref} @B{amode} foo = @B{loc} ++@B{amode}} lowers into a @code{VAR_DECL} with type @code{*CTYPE ++(amode)}. Accessing the variable will then involve indirect ++addressing: it is effectively a pointer. ++@end itemize ++ ++This optimization introduces the complication that an expression (the ++@code{VAR_DECL}) whose type is TYPE can appear in a place where *TYPE ++is expected, depending on the context and the r-value and l-value ++interpretation of the @code{VAR_DECL}. The function ++@code{a68_consolidate_ref} is used in several parts of the lowering ++pass to guarantee a given name is an address regardless of how it was ++initialized. ++ ++@node Procedure Identity Declarations ++@section Procedure Identity Declarations ++ ++XXX ++ ++@node Procedure Variable Declarations ++@section Procedure Variable Declarations ++ ++XXX ++ ++@node Operator Brief Declarations ++@section Operator Brief Declarations ++ ++XXX ++ ++@node Operator Declarations ++@section Operator Declarations ++ ++XXX ++ ++@node Applied Identifiers ++@section Applied Identifiers ++ ++XXX ++ ++@c --------------------------------------------------------------------- ++@c Lowering Assignations ++@c --------------------------------------------------------------------- ++ ++@node Lowering Assignations ++@chapter Lowering Assignations ++ ++Scope checking: ++ ++@itemize @bullet ++@item ++If static scope checking is relevant and OK, then just perform assignation. ++@item ++If static scope checking is relevant and not OK, a compile-time error ++will have already being emitted. ++@item ++If static scope checking is not relevant, perform dynamic scope ++checking: each time a name, a routine or a format of the data ++structure is assigned, its dynamic scope (scope%_si) is compared with ++the one of the destination (scope%_d). A run-time error message is ++provided in case scope%_d < scope%_si. ++@end itemize ++ ++@c --------------------------------------------------------------------- ++@c GNU Free Documentation License ++@c --------------------------------------------------------------------- ++ ++@include fdl.texi ++ ++ ++@c --------------------------------------------------------------------- ++@c Index ++@c --------------------------------------------------------------------- ++ ++@node Index ++@unnumbered Index ++ ++@printindex cp ++ ++@bye +--- /dev/null ++++ b/src/gcc/algol68/ga68.texi +@@ -0,0 +1,3169 @@ ++\input texinfo @c -*-texinfo-*- ++@setfilename ga68.info ++@settitle The GNU Algol 68 Compiler ++ ++@c Macro for bold-tags. In TeX and HTML they expand to proper bold words, ++@c in other formats it resorts to upper stropping. ++@iftex ++@macro B{tag} ++@strong{\tag\} ++@end macro ++@end iftex ++ ++@ifhtml ++@macro B{tag} ++@strong{\tag\} ++@end macro ++@end ifhtml ++ ++@ifnottex ++@ifnothtml ++@macro B{tag} ++\tag\ ++@end macro ++@end ifnothtml ++@end ifnottex ++ ++@c Create a separate index for command line options ++@defcodeindex op ++@c Merge the standard indexes into a single one. ++@syncodeindex fn cp ++@syncodeindex vr cp ++@syncodeindex ky cp ++@syncodeindex pg cp ++@syncodeindex tp cp ++ ++@include gcc-common.texi ++ ++@c Copyright years for this manual. ++@set copyrights-ga68 2025 ++ ++@copying ++@c man begin COPYRIGHT ++Copyright @copyright{} @value{copyrights-ga68} Free Software Foundation, Inc. ++ ++Permission is granted to copy, distribute and/or modify this document ++under the terms of the GNU Free Documentation License, Version 1.3 or ++any later version published by the Free Software Foundation; with no ++Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. ++A copy of the license is included in the ++@c man end ++section entitled ``GNU Free Documentation License''. ++@ignore ++@c man begin COPYRIGHT ++man page gfdl(7). ++@c man end ++@end ignore ++@end copying ++ ++@ifinfo ++@format ++@dircategory Software development ++@direntry ++* ga68: (ga68). A GCC-based compiler for Algol 68 ++@end direntry ++@end format ++ ++@insertcopying ++@end ifinfo ++ ++@titlepage ++@title The GNU Algol 68 Compiler ++@versionsubtitle ++@author Jose E. Marchesi ++ ++@page ++@vskip 0pt plus 1filll ++@sp 1 ++@insertcopying ++@end titlepage ++@summarycontents ++@contents ++@page ++ ++@node Top ++@top Introduction ++ ++This manual describes how to use @command{ga68}, the GNU compiler for ++Algol 68. This manual is specifically about how to invoke ++@command{ga68}, as well as its features. For more information about ++the Algol 68 language in general, the reader is referred to the ++bibliography. ++ ++Note that the particular way of representing Algol 68 code snippets in ++this manual will depend on the media. If you are reading this manual ++in a printed support or a PDF file rendered for publication then the ++bold words in programs will be rendered in actual bold typography and ++tags may have spaces within them. If you are reading this manual in a ++terminal or other media not supporting rich typography the code ++examples will follow the modern stropping regime with is the default ++in ga68. ++ ++Note also that we are making use of @dfn{pseudo-comments} in code ++examples, as it is traditional in Algol 68 related documentation. ++These appear surrounded by @code{@B{C}} marks and act as placeholders ++of some Algol 68 code. For example, @code{@B{C} frob the input ++variable @B{C}} is a pseudo-comment. ++ ++@menu ++* Invoking ga68:: How to run the compiler. ++* Composing programs:: Packets, modules, holes, particular programs. ++* Comments and pragmats:: Comments and pragmas. ++* Hardware representation:: Representation of programs. ++* Standard prelude:: Standard modes, operators, etc. ++* Extended prelude:: GNU extensions to the standard prelude. ++* POSIX prelude:: Simple I/O and system interaction facilities. ++* Language extensions:: GNU extensions to the Algol 68 language. ++* Copying:: The GNU General Public License. ++* GNU Free Documentation License:: ++ How you can share and copy this manual. ++* Option Index:: Index of command line options. ++* General Index:: General index. ++@end menu ++ ++@node Invoking ga68 ++@chapter Invoking ga68 ++ ++@c man title ga68 A GCC-based compiler for Algol 68 ++ ++@ignore ++@c man begin SYNOPSIS ga68 ++ga68 [@option{-c}|@option{-S}] [@option{-g}] [@option{-pg}] ++ [@option{-O}@var{level}] [@option{-W}@var{warn}@dots{}] ++ [@option{-I}@var{dir}@dots{}] [@option{-L}@var{dir}@dots{}] ++ [@option{-f}@var{option}@dots{}] [@option{-m}@var{machine-option}@dots{}] ++ [@option{-o} @var{outfile}] [@@@var{file}] @var{infile}@dots{} ++ ++Only the most useful options are listed here; see below for the ++remainder. ++@c man end ++@c man begin SEEALSO ++gpl(7), gfdl(7), fsf-funding(7), gcc(1) ++and the Info entries for @file{ga68} and @file{gcc}. ++@c man end ++@end ignore ++ ++@c man begin DESCRIPTION ga68 ++ ++The @command{ga68} command is the GNU compiler for the Algol 68 language and ++supports many of the same options as @command{gcc}. @xref{Option Summary, , ++Option Summary, gcc, Using the GNU Compiler Collection (GCC)}. ++This manual only documents the options specific to @command{ga68}. ++ ++@c man end ++ ++@menu ++* Dialect options:: Options controlling the accepted language. ++* Directory options:: Options influencing where to find source files. ++* Warnings options:: Options controlling warnings specific to ga68 ++* Runtime options:: Options controlling runtime behavior ++* Linking options:: Options influencing the linking step ++* Developer options:: Options useful for developers of ga68 ++@end menu ++ ++@node Dialect options ++@section Dialect options ++@cindex options, dialect ++ ++The following options control how the compiler handles certain dialect ++variations of the language. ++ ++@table @gcctabopt ++@opindex std=@var{std} ++@item -std=@var{std} ++Specify the standard to which the program is expected to conform, ++which may be one of @samp{algol68} or @samp{gnu68}. The default value ++for @var{std} is @samp{gnu68}, which specifies a strict super language ++of Algol 68 allowing GNU extensions. The @samp{algol68} value ++specifies that the program strictly conform to the Revised Report. ++@opindex fstropping=@var{stropping_regime} ++@item -fstropping=@var{stropping_regime} ++Specify the stropping regime to expect in the input programs. The ++default value for @var{stropping_regime} is @samp{supper}, which ++specifies the modern SUPPER stropping which is a GNU extension. The ++@samp{upper} value specifies the classic UPPER stropping of Algol 68 ++programs. @xref{Stropping regimes}. ++@opindex fbrackets ++@opindex fno-brackets ++@item -fbrackets ++This option controls whether @code{[ .. ]} and @code{@{ .. @}} are ++considered equivalent to @code{( .. )}. This syntactic variation is ++blessed by the Revised Report and is still strict Algol 68. ++ ++This option is disabled by default. ++@end table ++ ++@node Directory options ++@section Options for Directory Search ++@cindex directory options ++@cindex options, directory search ++@cindex search path ++ ++These options specify directories to search for files, libraries, and ++other parts of the compiler: ++ ++@table @gcctabopt ++ ++@opindex I ++@item -I@var{dir} ++Add the directory @var{dir} to the list of directories to be searched ++for files when processing the @ref{pragmat include}. Multiple ++@option{-I} options can be used, and the directories specified are ++scanned in left-to-right order, as with @command{gcc}. ++ ++@end table ++ ++@node Warnings options ++@section Warnings options ++@cindex options, warnings ++@cindex options, errors ++@cindex warnings, suppressing ++@cindex messages, error ++@cindex messages, warning ++@cindex suppressing warnings ++ ++Warnings are diagnostic messages that report constructions that ++are not inherently erroneous but that are risky or suggest there ++is likely to be a bug in the program. Unless @option{-Werror} is ++specified, they do not prevent compilation of the program. ++ ++@table @gcctabopt ++@opindex Wvoiding ++@opindex Wno-voiding ++@item -Wvoiding ++Warn on non-void units being voided due to a strong context. ++@opindex Wscope ++@opindex Wno-scope ++@item -Wscope ++Warn when a potential name scope violation is found. ++@opindex Whidden-declarations ++@opindex Wno-hidden-declarations ++@item -Whidden-declarations=@var{level} ++Warn when a declaration hides another declaration in a larger reach. ++This includes operators that hide firmly related operators defined in ++larger reach. ++ ++@table @gcctabopt ++@item -Whidden-declarations=none ++At this level no warning is issued for any hidden declaration on an ++outer scope. ++ ++@item -Whidden-declarations=prelude ++At this level, warnings are issued for hidden declarations defined in ++the standard prelude. This is the default warning level of ++@option{-Whidden-declarations}. ++ ++@item -Whidden-declarations=all ++At this level, warnings are issued for any and all hidden ++declarations. ++@end table ++ ++@opindex Wextensions ++@opindex Wno-extensions ++@item -Wextensions ++Warn when a non-portable Algol 68 construct is used, like GNU ++extensions to Algol 68. ++@end table ++ ++@node Runtime options ++@section Runtime options ++@cindex options, runtime ++ ++These options affect the runtime behavior of programs compiled with ++@command{ga68}. ++ ++@table @gcctabopt ++@opindex fassert ++@opindex fno-assert ++@item -fno-assert ++Turn off code generation for @code{ASSERT} contracts. ++ ++@opindex fcheck ++@item -fcheck=@var{} ++Enable the generation of run-time checks; the argument shall be a ++comma-delimited list of the following keywords. Prefixing a check ++with @option{no-} disables it if it was activated by a previous ++specification. ++ ++@table @asis ++@item @samp{all} ++Enable all run-time test of @option{-fcheck}. ++ ++@item @samp{none} ++Disable all run-time test of @option{-fcheck}. ++ ++@item @samp{nil} ++Check for nil while dereferencing. ++ ++@item @samp{bounds} ++Enable generation of run-time checks when indexing and trimming ++multiple values. ++@end table ++@end table ++ ++@node Linking options ++@section Linking options ++@cindex options, linking ++@cindex linking, static ++ ++These options come into play when the compiler links object files into ++an executable output file. They are meaningless if the compiler is ++not doing a link step. ++ ++@table @gcctabopt ++ ++@opindex shared-libga68 ++@item -shared-libga68 ++On systems that provide @file{libga68} as a shared and a static ++library, this option forces the use of the shared version. If no ++shared version was built when the compiler was configured, this option ++has no effect. ++ ++@opindex static-libga68 ++@item -static-libga68 ++On systems that provide @file{libga68} as a shared and a static ++library, this option forces the use of the static version. If no ++static version was built when the compiler was configured, this option ++has no effect. This is the default. ++@end table ++ ++@node Developer options ++@section Developer options ++@cindex developer options ++@cindex debug dump options ++@cindex dump options ++ ++This section describes command-line options that are primarily of ++interest to developers. ++ ++@table @gcctabopt ++@opindex fa68-dump-modes ++@item -fa68-dump-modes ++Output a list of all the modes parsed by the front-end. ++ ++@opindex fa68-dump-ast ++@item -fa68-dump-ast ++Dump a textual representation of the parse tree. ++ ++@opindex fa68-dump-module-interfaces ++@item -fa68-dump-module-interfaces ++Dump the interfaces of module definitions in the compiled packet. ++@end table ++ ++@node Composing programs ++@chapter Composing programs ++@cindex program ++@cindex separated compilation ++ ++This chapter documents how to compose full Algol 68 programs using the ++modules and separated compilation support provided by this compiler. ++ ++@menu ++* Packets:: Compilation units. ++* Modules:: Facilities for bottom-up programming. ++* Holes:: Facilities for top-down programming. ++* Particular programs:: The main program. ++* The standard environment:: Environment conforming a full program. ++@end menu ++ ++@node Packets ++@section Packets ++@cindex packet ++@cindex compilation unit ++ ++Each Algol 68 source file contains a @dfn{packet}. Packets therefore ++play the role of @dfn{compilation units}, and each packet can be ++compiled separately to an object file. A set of compiled object files ++can then be linked in the usual fashion into an executable, archive or ++shared object by the system linker, without the need of any ++language-specific link editor or build system. ++ ++@noindent ++This compiler supports three different kind of packets: ++ ++@itemize @minus ++@item ++@dfn{Particular programs} constitute the entry point of a program. ++They correspond to the @code{main} function of other languages like C. ++ ++@xref{Particular programs}. ++ ++@item ++@dfn{Prelude packets} contain the definition of one or more modules, ++which @dfn{publicize} definitions of modes, procedures, variables, ++operators and even the publicized definitions of other modules. The ++modules defined at the top-level of a prelude packet can be accessed ++by other packets via an @code{@B{access}} construct. Prelude packets ++are so-called because their contents get stuffed in the ++@dfn{user-prelude} in the case of user-defined modules, or the ++@dfn{library-prelude} in the case of module packets provided by the ++compiler. They are usually used to compose libraries that can be used ++in a bottom-up fashion. ++ ++@xref{Modules}. ++ ++@item ++@dfn{Stuffing packets} contain the definition of an @dfn{actual hole}, ++an @code{@B{egg}} construct, that can be stuffed in a matching ++@dfn{formal hole} in another package via a @code{@B{nest}} construct. ++Formal holes are used in order to achieve separated compilation in a ++top-bottom fashion, and also to invoke procedures written in other ++languages, such as C functions or Fortran subroutines. ++ ++@xref{Holes}. ++@end itemize ++ ++A @dfn{collection of packets}, all of which must be compatible with ++each other, constitutes either a @dfn{program} or a @dfn{library}. ++Exactly one of the packets constituting a program shall be a ++particular program. In libraries at least one packet must be a ++prelude packet. ++ ++@node Modules ++@section Modules ++@cindex module ++ ++@dfn{Definition modules}, often referred as just @dfn{modules} in the ++sequel, fulfill two different but related purposes. On one side, they ++provide some degree of @dfn{protection} by preventing accessing ++indicators defined within the module but not explicitly publicized. ++On the other, they allow to define @dfn{interfaces}, allow separated ++compilation based on these interfaces, and conform libraries. ++ ++Modules are usually associated with bottom-up development strategies, ++where several already written components are grouped and combined to ++conform bigger components. ++ ++@menu ++* Writing modules:: Writing modules. ++* Accessing modules:: Using the definitions of a module. ++* Module activation:: How and when modules execute. ++* Modules and libraries:: Using modules to conform libraries. ++* Modules and protection:: When block structure is not enough. ++@end menu ++ ++@node Writing modules ++@subsection Writing modules ++ ++A @dfn{definition module} is a construct that provides access to a set ++of publicized definitions. They can appear anywhere, but are ++typically found in the outer reach and compiled separately, in which ++case they conform a prelude packet (@pxref{Packets}). They are ++composed of a prelude and a postlude. The publicized definitions ++appear in the module's prelude. ++ ++Consider for example the following definition module, which implements ++a very simple logging facility: ++ ++@example ++@B{module} @B{Logger} = ++ @B{def} @B{int} fd = stderr; ++ @B{pub} @B{string} originator; ++ @B{pub} @B{proc} log = (@B{string} msg) @B{void}: ++ fputs (fd, (originator /= "" | ": ") + msg + "\n"); ++ ++ log ("beginning of log\n"); ++ @B{postlude} ++ log ("end of log\n"); ++ @B{fed} ++@end example ++ ++@noindent ++The @dfn{module text} delimited by @code{@B{def}} and @code{@B{fed}} ++gets ascribed to the module indicator @code{@B{Logger}}. Module ++indicators are bold tags. Once defined, the module @code{@B{Logger}} ++is accessible anywhere within its reach. ++ ++The @dfn{prelude} of the module spans from @code{@B{def}} to either ++@code{@B{postlude}}, or to @code{@B{fed}} in case of modules not ++featuring a postlude. It consists on a restricted serial clause in a ++void strong context, which can contain units and declarations, but no ++labels or completers. The declarations in the prelude may be either ++publicized or no publicized. As we shall see, publicized indicators ++are accessible within the reach of the defining module publicizing ++them. Publicized declarations are marked by preceding them with ++@code{@B{pub}}. ++ ++In our example the module prelude consists on three declarations and ++one unit. The indicator @code{fd} is not publicized and is to be used ++internally by the module. The indicators @code{originator} and ++@code{log}, on the other hand, are publicized and conform the ++interface of the module. Note how the range of the prelude also ++covers the postlude: the @code{log} procedure is reachable there, as ++it would be @code{fd} as well. ++ ++The @dfn{postlude} of the module is optional and spans from ++@code{@B{postlude}} to @code{@B{fed}}. It consists on a serial clause ++in a @code{@B{void}} strong context, where definitions, labels and ++module accesses are not allowed, just units. ++ ++@node Accessing modules ++@subsection Accessing modules ++ ++Once a module is defined (@pxref{Writing modules}) it can be accessed, ++provided it is within reach, using an @dfn{access clause}. The access ++clause identifies the modules to access and then makes the publicized ++definitions of these modules visible within a @dfn{control clause}. ++ ++For example, this is how we could use the logger definition module ++defined in a previous section to log the progress of some program that ++reads an input file and writes some output file: ++ ++@example ++@B{access} @B{Logger} ++@B{begin} # Identify ourselves with the program name # ++ originator := argv (1); ++ ++ # Read input file. # ++ @B{if} @B{NOT} parse_input (argv (2)) ++ @B{then} log ("error parsing input file"); stop @B{fi}; ++ ++ # Write output file. # ++ @B{if} @B{NOT} write_output (argv (3)) ++ @B{then} log ("error writing output file"); stop @B{fi}; ++ ++ log ("success") ++@B{end} ++@end example ++ ++@noindent ++In this case the controlled clause is the closed clause conforming the ++particular program, and the definitions publicized by the logger ++module, in this case @code{originator} and @code{log}, can be used ++within it. ++ ++@subsubsection Accessing several modules ++ ++An access clause is not restricted to just provide access to a single ++module: any number of module indicators can be specified in an access ++clause. Suppose that our example processing program has to read and ++write the data in JSON format, and that a suitable JSON library is ++available in the form of a reachable module. We could then make both ++logger and json modules accessible like this: ++ ++@example ++@B{access} @B{Logger}, @B{JSON} ++@B{begin} # Identify ourselves with the program name # ++ originator := argv (1); ++ ++ @B{JSONVal} data; ++ ++ # Read input file. # ++ @B{if} data := json_from_file (argv (2)); ++ data = json no val ++ @B{then} log ("error parsing input file"); stop @B{fi}; ++ ++ # Write output file. # ++ @B{if} @B{not} json_to_file (argv (3), data) ++ @B{then} log ("error writing output file"); stop @B{fi}; ++ ++ log ("success") ++@B{end} ++@end example ++ ++@noindent ++In this version of the program the access clause includes the module ++indicator @code{@B{json}}, and that makes the mode indicator ++@code{@B{jsonval}} and the tags @code{@B{json no val}}, @code{json ++from file} and @code{json to file} visible within the program's ++closed clause. ++ ++Note that the following two access clauses are not equivalent: ++ ++@example ++@B{access} @B{Logger}, @B{JSON} @B{C} ... @B{C}; ++@B{access} @B{Logger} @B{access} @B{JSON} @B{C} ... @B{C}; ++@end example ++ ++@noindent ++In the first case, a compilation time error is emitted if there is a ++conflict among the publicized definitions of both modules; for ++example, if both modules were to publicize a procedure called ++@code{log}. In the second case, the declaration of @code{log} ++publicized by @code{@B{Logger}} would hide the declaration of ++@code{log} publicized by @code{@B{JSON}}. This also has implications ++related to activation, that we will be discussing in a later section. ++ ++@subsubsection The controlled clause ++ ++The controlled clause in an access clause doesn't have to be a serial ++clause, like in the examples above. It can be any enclosed clause, ++like for example a loop clause: ++ ++@example ++@B{proc} frobnicate frobs = ([]@B{Frob} frobs) @B{void}: ++ @B{access} @B{Logger} @B{to} @B{UPB} frobs ++ @B{do} log ("frobnicating " + name @B{of} frob); ++ frobnicate (frob) ++ @B{od} ++@end example ++ ++@subsubsection The value yielded by an access clause ++ ++The elaboration of an access clause yields a value, which is the value ++yielded by the elaboration of the controlled clause. Since the later ++is an enclosed clause, coercions get passed into them whenever ++required, the usual fashion. ++ ++We can see an example of this in the following procedure, whose body ++is a controlled closed clause that yields a @code{@B{real}} value: ++ ++@example ++@B{proc} incr factor = (@B{ref}[]@B{real} factors, @B{int} idx) @B{real}: ++ @B{access} @B{logger} (log ("factor increased"); factors[idx] +:= 1.0) ++@end example ++ ++@noindent ++Note how the access clause above is in a strong context requiring a ++value of mode @code{@B{real}}. The value yielded by the access clause ++is the value yielded by the controlled enclosed clause, which in this ++case is a closed clause. The strong context and required mode gets ++passed to the last unit of the closed clause (the assignation) which ++in this case yields a value of mode @code{@B{ref} @B{real}}. The unit ++is coerced to @code{@B{real}} by dereferencing, and the resulting ++value becomes the value yielded by the access clause. ++ ++@subsubsection Modules accessing other modules ++ ++A definition module may itself access other modules. This is done by ++placing the module text as a controlled clause of an access clause. ++Suppose we rewrite our logger module so it uses JSON internally to log ++JSON objects rather than raw strings. We could do it this way: ++ ++@example ++@B{module} @B{logger} = ++ @B{access} @B{json} ++ @B{def} @B{int} fd = stderr; ++ @B{pub} @B{string} originator; ++ @B{pub} @B{proc} log = (@B{string} msg) @B{void}: ++ fputs (fd, json array (json string (originator), ++ json string (msg))); ++ ++ log (json string ("beginning of log\n")); ++ @B{postlude} ++ log (json string ("end of log\n")); ++ @B{fed} ++@end example ++ ++@noindent ++Note how this version of @code{@B{logger}} uses a few definitions ++publicized by the @code{@B{json}} module. ++ ++A program accessing @code{@B{logger}} will not see the definitions ++publicized by the @code{@B{json}} module. If that is what we ++intended, for example to allow the users of the logger to tweak their ++own JSON, we would need to specify it this way: ++ ++@example ++@B{module} @B{logger} = ++ @B{access} @B{pub} @B{json} ++ @B{def} @B{c} ...as before... @B{c} @B{fed} ++@end example ++ ++@noindent ++In this version the definitions publicized by @code{@B{json}} become ++visible to programs accessing @code{@B{logger}}. ++ ++@node Module activation ++@subsection Module activation ++ ++In all the examples seen so far the modules were accessed just once. ++In these cases, accessing the module via an access-clause caused the ++@dfn{activation} of the module. ++ ++Activating a module involves elaborating all the declarations and ++units that conform its prelude. Depending on the particular module ++definition that gets activated, this may involve all sort of side ++effects, such as allocating space for values and initializing them, ++opening files, @i{etc}. Once the modules specified in the access ++clause are successfully activated, the controlled clause gets ++elaborated itself, within the reach of all the publicized definitions ++by the activated modules as we saw in the last section. Finally, once ++the controlled clause has been elaborated, the module gets ++@dfn{revoked} by elaborating the serial clause in its postlude. ++ ++However, nothing prevents some given definition module to be accessed ++more than once in the same program. The following program, that makes ++use of the @code{@B{logger}} module, exemplifies this: ++ ++@example ++@B{access} @B{logger} ++@B{begin} originator := argv (1); ++ log ("executing program"); ++ @B{c} ... @B{c} ++ @B{access} @B{logger} (originator := argv (1) + ":subtask"; ++ log ("doing subtask") ++ @B{c} ... @B{c}) ++@B{end} ++@end example ++ ++@noindent ++In this program the module @code{@B{logger}} is accessed twice. The ++code is obviously written assuming that the inner access clause ++triggers a new activation of the @code{@B{logger}} module, allocating ++new storage and executing its prelude. This would result in the ++following log contents: ++ ++@example ++a.out: beginning of log ++a.out: executing program ++a.out:subtask: beginning of log ++a.out:subtask: doing subtask ++a.out:subtask: end of log ++a.out: end of log ++@end example ++ ++@noindent ++However, this is not what happens. The module gets only activated ++once, as the result of the outer access clause. The inner access ++clause just makes the publicized indicators visible in its controlled ++clause. The actual resulting log output is: ++ ++@example ++a.out: beginning of log ++a.out: executing program ++a.out:subtask: doing subtask ++a.out:subtask: end of log ++@end example ++ ++@noindent ++Which is not what we intended. Modules are not classes. If we wanted ++the logger to support several originators that can be nested, we would ++need to add support for it in the definition module. Something like: ++ ++@example ++@B{module} @B{logger} = ++ @B{def} @B{int} fd = stderr, max originators = 10; ++ @B{int} orig := 0; ++ [max originators]@B{string} originators; ++ ++ @B{pub} @B{proc} push originator = (@B{string} str) @B{void}: ++ (@B{assert} (orig < max originators); ++ orig +:= 1; ++ originators[orig] := str); ++ @B{pub} @B{proc} pop originator = @B{void}: ++ (@B{assert} (max originators > 0); ++ orig -:= 1); ++ @B{pub} @B{proc} log = (@B{string} msg) @B{void}: ++ fputs (fd, (originator[orig] /= "" | ": ") + msg + "\n"); ++ ++ log ("beginning of log\n"); ++ @B{postlude} ++ log ("end of log\n"); ++ @B{fed} ++@end example ++ ++@noindent ++Note how in this version of @code{@B{logger}} @code{originators} acts ++as a stack of originator strings, and it is not publicized. The ++management of the stack is done via a pair of publicized procedures ++@code{push originator} and @code{pop originator}. Our program will ++now look like: ++ ++@example ++@B{access} @B{logger} ++@B{begin} push originator (argv (1)); ++ log ("executing program"); ++ @B{c} ... @B{c} ++ @B{access} @B{logger} (push originator ("subtask"); ++ log ("doing subtask") ++ @B{c} ... @B{c}; ++ pop originator) ++@B{end} ++@end example ++ ++@noindent ++And the log output is: ++ ++@example ++a.out: beginning of log ++a.out: executing program ++a.out:subtask: doing subtask ++a.out: end of log ++@end example ++ ++ ++-------------------------------------------------------------- ++ ++module-indications are used to find interface-definitions of modules: ++ ++ ACCESS FOO SKIP ++ ++Looks for (in order): ++ ++ foo.m68 ++ foo.o ++ libfoo.so ++ ++Should we use instead: ++ ++ ACCESS "foo" SKIP ++ ++That would use for module indicators the same syntax than hole ++indicators. ++ ++Modules get accessed, invoked and revoked. ++ ++Access clauses: ++ ++: ACCESS A, B ++ ++Where A and B are ``revelations''. ++ ++In ++ ++: MODULE A = ACCESS B DEF ... FED ++ ++Doesn't reveals any contents of B. Whereas in: ++ ++: MODULE A = ACCESS PUB B DEF .. FED ++ ++The module A is also revealing B's public declarations. So accessing ++A provides access to B. ++ ++User-defined preludes go to the user-prelude. ++ ++Invocation and revocation:: How modules are executed. ++ ++It is possible for a definition module to not publicize any ++definition. Such modules would be used only for the side effects ++produced from executing the prelude and postlude when the module gets ++invoked and revoked. XXX: provide an example? ++ ++XXX ++ ++@node Modules and libraries ++@subsection Modules and libraries ++@cindex library ++@cindex prelude packet ++ ++XXX ++ ++@node Modules and protection ++@subsection Modules and protection ++@cindex protection ++@cindex publicized definition ++ ++XXX ++ ++@node Holes ++@section Holes ++@cindex hole ++ ++XXX ++ ++@node Particular programs ++@section Particular programs ++@cindex particular program ++ ++An Algol 68 @dfn{particular program} consists on an enclosed clause in ++a strong context with target mode @code{@B{void}}, possibly preceded ++by a set of zero or more labels. For example: ++ ++@example ++hello: ++@B{begin} puts ("Hello, world!\n") ++@B{end} ++@end example ++ ++@noindent ++Note that the enclosed clause conforming the particular program ++doesn't have to be a closed clause. Consider for example the ++following program, that prints out its command line arguments: ++ ++@example ++@B{for} i @B{to} argc ++@B{do} puts (argv (i) + "\n") @B{od} ++@end example ++ ++@menu ++* Exit status:: How do programs communicate success or failure. ++* The @code{stop} label:: How to terminate a program at any time. ++@end menu ++ ++@node Exit status ++@subsection Exit status ++@cindex exit status ++ ++Some operating systems have the notion of @dfn{exit status} of a ++process. In such systems, by default the execution of the particular ++program results in an exit status of success. It is possible for the ++program to specify an explicit exit status by using the standard ++procedure @code{set exit status}, like: ++ ++@example ++@b{begin} # ... program code ... # ++ @B{if} error found; ++ @B{then} set exit status (1) @B{fi} ++@b{end} ++@end example ++ ++In POSIX systems the status is an integer, and the system interprets a ++value other than zero as a run-time error. In other systems the ++status may be of some other type. To support this, the @code{set ++error status} procedure accepts as an argument an united value that ++accommodates all the supported systems. ++ ++The following example shows a very simple program that prints ``Hello ++world'' on the standard output and then returns to the operating ++system with a success status: ++ ++@example ++@B{begin} puts ("Hello world\n") ++@B{end} ++@end example ++ ++@node The @code{stop} label ++@subsection The @code{stop} label ++@cindex @code{stop} ++ ++A predefined label named @code{stop} is defined in the standard ++postlude. This label can be jumped to at any time by a program and it ++will cause it to terminate and exit. For example: ++ ++@example ++@B{begin} @B{if} argc /= 2 ++ @B{then} puts ("Program requires exactly two arguments."); ++ goto stop ++ @B{fi} ++ @B{C} ... @B{C} ++@B{end} ++@end example ++ ++@node The standard environment ++@section The standard environment ++@cindex standard environment ++ ++The environment in which particular programs run is expressed here in ++the form of pseudo code: ++ ++@example ++(@B{c} standard-prelude @B{c}; ++ @B{c} library-prelude @B{c}; ++ @B{c} system-prelude @B{c}; ++ @B{par} @B{begin} @B{c} system-task-1 @B{c}, ++ @B{c} system-task-2 @B{c}, ++ @B{c} system-task-n @B{c}, ++ @B{c} user-task-1 @B{c}, ++ @B{c} user-task-2 @B{c}, ++ @B{c} user-task-m @B{c} ++ @B{end}) ++@end example ++ ++@noindent ++Where each user task consists on: ++ ++@example ++(@B{c} particular-prelude @B{c}; ++ @B{c} user-prelude @B{c}; ++ @B{c} particular-program @B{c}; ++ @B{c} particular-postlude @B{c}) ++@end example ++ ++The only standard system task described in the report is expressed in ++pseudo-code as: ++ ++@example ++@B{do} @B{down} gremlins; undefined; @B{up} bfileprotect @B{od} ++@end example ++ ++@noindent ++Which denotes that, once a book (file) is closed, anything may happen. ++Other system tasks may exist, depending on the operating system. In ++general these tasks in the parallel clause denote the fact that the ++operating system is running in parallel (intercalated) with the user's ++particular programs. ++ ++@itemize @bullet ++@item ++The library-prelude contains, among other things, the prelude parts of ++the defining modules provided by library. ++ ++@item ++The particular-prelude and particular-postlude are common to all the ++particular programs. ++ ++@item ++The user-prelude is where the prelude parts of the defining modules ++involved in the compilation get stuffed. If no defining module is ++involved then the user-prelude is empty. ++@end itemize ++ ++Subsequent sections in this manual include a detailed description of ++the contents of these preludes. ++ ++@node Comments and pragmats ++@chapter Comments and pragmats ++ ++Comments and pragmats, also known collectively as @dfn{pragments}, can ++appear almost anywhere in an Algol 68 program. Comments are usually ++used for documentation purposes, and pragmats contain annotations for ++the compiler. Both are handled at the lexical level. ++ ++@menu ++* Comments:: Your typical friendly comments. ++* Pragmats:: In-source directives for the compiler. ++@end menu ++ ++@node Comments ++@section Comments ++ ++In the default modern stropping regime supported by GCC comments are ++written between @code{@{} and @code{@}} delimiters, and can be nested ++to arbitrary depth. For example: ++ ++@example ++foo +:= 1; @{ Increment foo. @} ++@end example ++ ++If UPPER stropping is selected, this compiler additionally supports ++three classical Algol 68 comment styles, in which the symbols marking ++the beginning of comments are the same than the symbols marking the ++end of comments and therefore can't be nested: @code{@B{comment} ++... @B{comment}}, @code{@B{co} ... @B{co}} and @code{# .. #}. For ++example: ++ ++@example ++@B{comment} ++ This is a comment. ++@B{comment} ++ ++foo := 10; @B{co} this is also a comment @B{co} ++foo +:= 1; # and so is this. # ++@end example ++ ++Unless @option{-std=algol68} is specified in the command line, two ++styles of nestable comments can be also used with UPPER stropping: the ++already explained @code{@{ ... @}} and a ``bold'' style that uses ++@code{@B{code} ... @B{edoc}}. For example: ++ ++@example ++foo := 10; @{ this is a nestable comment in brief style. @} ++foo +:= 1; @B{note} this is a nestable comment in bold style. @B{eton}. ++@end example ++ ++@example ++@B{note} ++ "Bold" nestable comments. ++@B{eton} ++ ++@{ "Brief" nestable comments. @} ++@end example ++ ++In UPPER stropping all comment styles are available, both classic and ++nestable. In modern SUPPER stropping, which is based on reserved ++words, only @code{@{ ... @}} is available. ++ ++@node Pragmats ++@section Pragmats ++ ++@cindex pragmat ++@dfn{Pragmats} (also known as @dfn{pragmas} in other programming ++languages) are directives and annotations for the compiler, and their ++usage impacts the compilation process in several ways. A pragmat ++starts with either @code{@B{pragmat}} or @code{@B{pr}} and finished ++with either @code{@B{pragmat}} or @code{@B{pr}} respectively. ++Pragmats cannot be nested. For example: ++ ++@example ++@B{pr} include "foo.a68" @B{pr} ++@end example ++ ++The interpretation of pragmats is compiler-specific. This chapter ++documents the pragmats supported by GCC. ++ ++@menu ++* pragmat include:: Include another source file. ++@end menu ++ ++@node pragmat include ++@subsection pragmat include ++@cindex include ++ ++An @dfn{include pragmat} has the form: ++ ++@example ++@B{pr} include "PATH" @B{pr} ++@end example ++ ++@noindent ++Where @code{PATH} is the path of the file whose contents are to be ++included at the location of the pragmat. If the provided path is ++relative then it is interpreted as relative to the directory ++containing the source file that contains the pragmat. ++ ++The @option{-I} command line option can be used in order to add ++additional search paths for @code{include}. ++ ++@node Hardware representation ++@chapter Hardware representation ++ ++The @dfn{reference language} specified by the Revised Report describes ++Algol 68 particular programs as composed by @dfn{symbols}. However, ++the Report leaves the matter of the concrete representation of these ++symbols, the @dfn{representation language}, open to the several ++implementations. This was motivated by the very heterogeneous ++computer systems in existence at the time the Report was written, ++which made flexibility in terms of representation a crucial matter. ++ ++This flexibility was indeed exploited by the early implementations, ++and there was a price to pay for it. A few years after the ++publication of the Revised Report the different implementations had ++already given rise to a plethora of many related languages that, ++albeit being strict Algol 68, differed considerably in appearance. ++This, and the fact that people were already engrossed in writing ++programs other than compilers that needed to process Algol 68 ++programs, such as code formatters and macro processors, prompted the ++WG 2.1 to develop and publish a @dfn{Report on the Standard Hardware ++Representation for ALGOL 68}, which came out in 1975. ++ ++This compiler generally follows the Standard Hardware Representation, ++but deviates from it in a few aspects. This chapter provides an ++overview of the hardware representation and documents any deviation. ++ ++@menu ++* Representation languages:: From symbols to syntactic marks. ++* Worthy characters:: Marks that can appear in a program. ++* Base characters:: Mapping of worthy characters to code points. ++* Stropping regimes:: Representation of bold words. ++* Monads and Nomads:: Characters that can appear in operator names. ++* String breaks:: String literals and escape sequences. ++@end menu ++ ++@node Representation languages ++@section Representation languages ++ ++A program in the strict Algol 68 language is composed by a series of ++symbols. These symbols have names such as @code{letter-a-symbol} and ++@code{assigns-to-symbol} which are, well, purely symbolic. In fact, ++these are notions in the two-level grammar that defines the strict ++language. ++ ++A @dfn{representation language} provides a mapping between symbols in ++the strict language and the representation of these symbols. Each ++representation is a sequence of syntactic marks. For example, the ++@code{completion symbol} may be represented by @strong{exit}, where ++the marks are the bold letters. The @code{tilde symbol} may be ++represented by @code{~}, which is a single mark. The representation of ++@code{assigns to symbol} is @code{:=}, which is composed by the two ++marks @code{:} and @code{=}. The representation of @code{letter-a} ++is, not surprising, the single mark @code{a}. ++ ++The section 9.4 of the Report describes the recommended representation ++for all the symbols of the language. The set of all recommendations ++constitutes the so-called @dfn{reference language}. Algol 68 ++implementations are strongly encouraged to use representation ++languages which are similar enough to the reference language, ++recognizable ``without further elucidation'', but this is not ++strictly required. ++ ++A representation language may specify more than one representation for ++a given symbol. For example, in the reference language the @code{is ++not symbol} is represented by @strong{isnt}, @code{:/=:} and a variant ++of the later where the slash sign is superimposed on the equal sign. ++In this case, an implementation can choose to implement any number of ++the representations. ++ ++Spaces, tabs and newlines are @dfn{typographical display features} ++that, when they appear between symbols, are of no significance and do ++not alter the meaning of the program. However, when a space or a tab ++appear in string or character denotations, they represent the ++@code{space symbol} and the @code{tab symbol} ++respectively@footnote{The @code{tab symbol} is a GNU extension}. ++ ++@node Worthy characters ++@section Worthy characters ++@cindex worthy characters ++ ++The syntactic marks of a representation language, both symbols and ++typographical display features, are realized as a set of @dfn{worthy ++characters} and the newline. Effectively, an Algol 68 program is a ++sequence of @dfn{worthy characters} and newlines. The worthy ++characters are: ++ ++@example ++a b c d e f g h i j k l m n o p q r s t u v w x y z ++A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ++0 1 2 3 4 5 6 7 8 9 ++space tab " # $ % & ' ( ) * + , - . / : ; < = > @ [ \ ] ++^ _ | @ ! ? ~ @{ @} ++@end example ++ ++Some of the characters above were considered unworthy by the original ++Standard Hardware Representation: ++ ++@table @code ++@item ! ++It was considered unworthy because many installations didn't have a ++vertical bar base character, and @code{!} was used as a base character ++for @code{|}. Today every computer system features a vertical bar ++character, so @code{!} can qualify as a worthy character. ++@item & ++The Revised Report specifies that @code{&} is a monad, used as a ++symbol for the dyadic @code{@B{and}} operator. The Standard Hardware ++representation decided to turn it into an unworthy character, ++motivated by the fact that no nomads existed for the other logical ++operators @code{@B{not}} and @code{@B{or}}, and also with the goal of ++maintaining the set of worthy characters as small as possible to ++improve portability. Recognizing that the first motivation still ++holds, but not the second, this compiler re-instates @code{&} as a ++monad but doesn't use it as an alternative representation of the ++@code{@B{and}} operator. ++@item ~ ++The Standard Hardware Representation vaguely cites some ``severe ++difficulties'' with the hardware representation of the tilde ++character. Whatever these difficulties were at the time, they surely ++don't exist anymore. This compiler therefore recognizes @code{~} as a ++worthy character, and is used as a monad. ++@item ? ++The question mark character was omitted as a worthy character to limit ++the size of the worthy set. This compiler recognizes @code{?} as a ++worthy character, and is used as a monad. ++@item \ ++Back-slash wasn't included as a worthy character because back in 1975 ++it wasn't supported in EBCDIC (it is now). This compiler recognizes ++@code{\} as a worthy character. ++@item tab ++This compiler recognizes the tabulator character as a worthy ++character, and it is used as a typographical display feature. ++@end table ++ ++@node Base characters ++@section Base characters ++@cindex base characters ++ ++The worthy characters described in the previous section are to be ++interpreted symbolically rather than visually. The worthy character ++@code{|}, for example, is the vertical line character and generally ++looks the same in every system. The worthy character @code{space} is ++obviously referred by a symbolic name. ++ ++The actual visually distinguishable characters available in an ++installation are known as @dfn{base characters}. The Standard ++Hardware Representation allows implementations the possibility of ++using two or more base characters to represent a single worthy ++character. This was the case of the @code{|} character, which was ++represented in many implementations by either @code{|} or @code{!}. ++ ++This compiler uses the set of base characters corresponding to the ++subset of the Unicode character set that maps one to one to the set of ++worthy characters described in the previous section: ++ ++@example ++A-Z 65-90 ++a-z 97-122 ++space 32 ++tab 9 ++! 33 ++" 34 ++# 35 ++$ 36 ++% 37 ++& 38 ++' 39 ++( 40 ++) 41 ++* 42 +++ 43 ++, 44 ++- 45 ++. 46 ++/ 47 ++: 58 ++; 59 ++< 60 ++= 61 ++> 62 ++? 63 ++@@ 64 ++[ 91 ++\ 92 ++] 93 ++^ 94 ++_ 95 ++| 124 ++~ 126 ++@end example ++ ++@node Stropping regimes ++@section Stropping regimes ++ ++The Algol 68 reference language establishes that certain source ++constructs, namely mode indications and operator indications, consist ++in a sequence of @dfn{bold letters} and @dfn{bold digits}, known as a ++@dfn{bold word}. In contrast, other constructs like identifiers, ++field selectors and labels, collectively known as @dfn{tags}, are ++composed of regular, non-bold letters and digits. ++ ++What is precisely a bold letter or digit, and how they differ from ++non-bold letters and digits, is not specified by the Report. This is ++no negligence, but a conscious effort at abstracting the definition of ++the so-called @dfn{strict language} from its representation. This ++allows different representations of the same language. ++ ++Some representations of Algol 68 are intended to be published in ++books, be it paper or electronic devices, and be consumed by persons. ++These are called @dfn{publication languages}. In publication ++languages bold letters and digits are typically represented by actual ++bold alphanumeric typographic marks. An Algol 68 program hand written ++on a napkin or a sheet of paper would typically represent bold letters ++and digits underlined, or stroked using a different color ink. ++ ++Other representations of Algol 68 are intended to be automatically ++processed by a computer. These representations are called ++@dfn{hardware languages}. Sometimes the hardware languages are also ++intended to be written and read by programmers; these are called ++@dfn{programming languages}. ++ ++Unfortunately, computer systems today usually do not yet provide ++readily usable and ergonomic bold or underline alphanumeric marks, ++despite the existence of Unicode and modern and sophisticated editing ++environments. The lack of appropriate input methods surely plays a ++role to explain this. Thus, the programming representation languages ++of Algol 68 should resort to a technique known as @dfn{stropping} in ++order to differentiate bold letters and digits from non-bold letters ++and digits. The set of rules specifying the representation of these ++characters is called a @dfn{stropping regime}. ++ ++There are three classical stropping regimes for Algol 68, which are ++standardized and specified in the Standard Hardware Representation ++normative document. These are @dfn{POINT stropping}, @dfn{RES ++stropping} and @dfn{UPPER stropping}. The following sections do a ++cursory tour over them; for more details the reader is referred to the ++Standard Hardware Representation. ++ ++This compiler implements UPPER stropping and SUPPER stropping. ++ ++@menu ++* POINT stropping:: ++* RES stropping:: ++* UPPER stropping:: ++* SUPPER stropping:: ++@end menu ++ ++@node POINT stropping ++@subsection POINT stropping ++ ++POINT stropping is in a way the most fundamental of the three standard ++regimes. It was designed to work in installations with limited ++character sets that provide only one alphabet, one set of digits, and ++a very restricted set of other symbols. ++ ++In POINT stropping a bold word is represented by its constituent ++letters and digits preceded by a point character. For example, the ++symbol @code{bold begin symbol} in the strict language, which is ++represented as @strong{begin} in bold face in the reference language, ++would be represented as @code{.BEGIN} in POINT stropping. ++ ++More examples are summarized in the following table. ++ ++@multitable @columnfractions .33 .33 .33 ++@headitem Strict language @tab Reference language @tab POINT stropping ++@item @code{true symbol} @tab @strong{true} @tab @code{.TRUE} ++@item @code{false symbol} @tab @strong{false} @tab @code{.FALSE} ++@item @code{integral symbol} @tab @strong{int} @tab @code{.INT} ++@item @code{completion symbol} @tab @strong{exit} @tab @code{.EXIT} ++@item @code{bold-letter-c-...} @tab @strong{crc32} @tab @code{.CRC32} ++@end multitable ++ ++In POINT stropping a tag is represented by writing its constituent ++non-bold letters and digits in order. But they are organized in ++several @dfn{taggles}. ++ ++Each taggle is a sequence of one or more letters and digits, ++optionally followed by an underscore character. For example, the tag ++@code{PRINT} is composed of a single taggle, but the tag ++@code{PRINT_TABLE} is composed of a first taggle @code{PRINT_} ++followed by a second taggle @code{TABLE}. ++ ++To improve readability it is possible to insert zero or more white ++space characters between the taggles in a tag. Therefore, the tag ++@code{PRINT_TABLE} could have been written @code{PRINT TABLE}, or even ++@code{PRINT_ TABLE}. This is the reason why Algol 68 identifiers, ++labels and field selectors can and do usually feature white spaces in ++them. ++ ++It is important to note that both the trailing underscore characters ++in taggles and the white spaces in a tag do not contribute anything to ++the denoted tag: these are just stropping artifacts aimed to improve ++readability. Therefore @code{FOOBAR} @code{FOO BAR}, @code{FOO_BAR} ++and @code{FOO_BAR_} are all representations of the same tag, that ++represents the ++@code{letter-f-letter-o-letter-o-letter-b-letter-a-letter-r} language ++construct. ++ ++Below is the text of an example Algol 68 procedure encoded in POINT ++stropping. ++ ++@example ++.PROC RECSEL OUTPUT RECORDS = .VOID: ++.BEGIN .BITS FLAGS ++ := (INCLUDE DESCRIPTORS | REC F DESCRIPTOR | REC F NONE); ++ .RECRSET RES = REC DB QUERY (DB, RECUTL TYPE, ++ RECUTL QUICK, FLAGS); ++ .RECWRITER WRITER := REC WRITER FILE NEW (STDOUT); ++ ++ SKIP COMMENTS .OF WRITER := .TRUE; ++ .IF RECUTL PRINT SEXPS ++ .THEN MODE .OF WRITER := REC WRITER SEXP .FI; ++ REC WRITE (WRITER, RES) ++.END ++@end example ++ ++@node RES stropping ++@subsection RES stropping ++ ++The early installations where Algol 68 ran not only featured a very ++restricted character set, but also suffered from limited storage and ++complex to use and time consuming input methods such as card punchers ++and readers. It was important for the representation of programs to ++be as compact as possible. ++ ++It is likely that is what motivated the introduction of the RES ++stropping regime. As its name implies, it removes the need of ++stropping many bold words by introducing @dfn{reserved words}. ++ ++A @dfn{reserved word} is one of the bold words specified in the ++section 9.4.1 of the Report as a representation of some symbol. ++Examples are @strong{at}, @strong{begin}, @strong{if}, @strong{int} ++and @strong{real}. ++ ++RES stropping encodes bold words and tags like POINT stropping, but if ++a bold word is a reserved word then it can then be written without a ++preceding point, achieving this way a more compact, and easier to ++read, representation for programs. ++ ++Introducing reserved words has the obvious disadvantage that some tags ++cannot be written the obvious way due to the possibility of conflicts. ++For example, to represent a tag @code{if} it is not possible to just ++write @code{IF}, because it conflicts with a reserved word, but this ++can be overcome easily (if not elegantly) by writing @code{IF_} ++instead. ++ ++Below is the @code{recsel output records} procedure again, this time ++encoded in RES stropping. ++ ++@example ++PROC RECSEL OUTPUT RECORDS = VOID: ++BEGIN BITS FLAGS ++ := (INCLUDE DESCRIPTORS | REC F DESCRIPTOR | REC F NONE); ++ .RECRSET RES = REC DB QUERY (DB, RECUTL TYPE, ++ RECUTL QUICK, FLAGS); ++ .RECWRITER WRITER := REC WRITER FILE NEW (STDOUT); ++ ++ SKIP COMMENTS OF WRITER := TRUE; ++ IF RECUTL PRINT SEXPS ++ THEN MODE .OF WRITER := REC WRITER SEXP FI; ++ REC WRITE (WRITER, RES) ++END ++@end example ++ ++Note how user-defined mode an operator indications still require ++explicit stropping. ++ ++@node UPPER stropping ++@subsection UPPER stropping ++ ++In time computers added support for more than one alphabet by ++introducing character sets with both upper and lower case letters, ++along with convenient ways to both input and display these. ++ ++In UPPER stropping the bold letters in bold word are represented by ++upper-case letters, whereas the letters in tags are represented by ++lower-case letters. ++ ++The notions of upper- and lower-case are not applicable to digits, but ++since the language syntax assures that it is not possible to have a ++bold word that starts with a digit, digits are considered to be bold ++if they follow a bold letter or another bold digit. ++ ++Below is the @code{recsel output records} procedure again, this time ++encoded in UPPER stropping. ++ ++@example ++PROC recsel output records = VOID: ++BEGIN BITS flags ++ := (include descriptors | rec f descriptor | rec f none); ++ RECRSET res = rec db query (db, recutl type, ++ recutl quick, flags); ++ RECWRITER writer := rec writer file new (stdout); ++ ++ skip comments of writer := TRUE; ++ IF recutl print sexps ++ THEN mode OF writer := rec writer sexp FI; ++ rec write (writer, res) ++END ++@end example ++ ++Note how in this regime it is almost never necessary to introduce bold ++tags with points. All in all, it looks much more natural to ++contemporary readers. UPPER stropping is in fact the stropping regime ++of choice today. It is difficult to think of any reason why anyone ++would resort to use POINT or RES stropping. ++ ++@node SUPPER stropping ++@subsection SUPPER stropping ++ ++In the SUPPER stropping regime bold words are written by writing a ++sequence of one or more @dfn{taggles}. Each taggle is written by ++writing a letter followed by zero or more other letters and digits and ++is optionally followed by a trailing underscore character. The first ++letter in a bold word shall be an upper-case letter. The rest of the ++letters in the bold word may be either upper- or lower-case. ++ ++For example, @code{RecRset}, @code{Rec_Rset} and @code{RECRset} are ++all different ways to represent the same mode indication. This allows ++to recreate popular naming conventions such as @code{CamelCase}. ++ ++As in the other stropping regimes, the casing of the letters and the ++underscore characters are not really part of the mode or operator ++indication. ++ ++Operator indications are also bold words and are written in exactly ++the same way than mode indications, but it is usually better to always ++use upper-case letters in operator indications. On one side, it looks ++better, especially in the case of dyadic operators where the asymmetry ++of, for example @code{Equal} would look odd, consider @code{m1 Equal ++m2} as opposed to @code{m1 EQUAL m2}. On the other side, tools like ++editors can make use of this convention in order to highlight operator ++indications differently than mode indications. ++ ++In the SUPPER stropping regime tags are written by writing a sequence ++of one or more @dfn{taggles}. Each taggle is written by writing a ++letter followed by zero or more other letters and digits and is ++optionally followed by a trailing underscore character. All letters ++in a tag shall be lower-case letters. ++ ++For example, the identifier @code{list} is represented by a single ++taggle, and it is composed by the letters @code{l}, @code{i}, @code{s} ++and @code{t}, in order. In the jargon of the strict language we would ++spell the tag as @code{letter-l-letter-i-letter-s-letter-t}. ++ ++The label @code{found_zero} is represented by two taggles, ++@code{found_} and @code{zero}, and it is composed by the letters ++@code{f}, @code{o}, @code{u}, @code{n}, @code{d}, @code{z}, @code{e}, ++@code{r} and @code{o}, in order. In the jargon of the strict language ++we would spell the tag as @code{letter-f-letter-o-letter-u-letter-n ++-letter-d-letter-z-letter-e-letter-r-letter-o}. ++ ++The identifier @code{crc_32} is likewise represented by two taggles, ++@code{crc_} and @code{32}. Note how the second taggle contains only ++digits. In the jargon of the strict language we would spell the tag ++as @code{letter-c-letter-r-letter-c-digit-three-digit-two}. ++ ++The underscore characters are not really part of the tag, but part of ++the stropping. For example, both @code{goto found_zero} and ++@code{goto foundzero} jump to the same label. ++ ++The @code{recsel output records} procedure, encoded in SUPPER ++stropping, looks like below. ++ ++@example ++proc recsel_output_records = void: ++begin bits flags ++ := (include_descriptors | rec_f_descriptor | rec_f_none); ++ RecRset res = rec_db_query (db, recutl_type, ++ recutl_uick, flags); ++ RecWriter writer := rec_writer_file_new (stdout); ++ ++ skip_comments of writer := true; ++ if recutl_print_sexps ++ then mode_ of writer := rec_writer_sexp fi; ++ rec_write (writer, res) ++end ++@end example ++ ++@node Monads and Nomads ++@section Monads and Nomads ++@cindex monads ++@cindex nomads ++ ++Algol68 operators, be them predefined or defined by the programmer, ++can be referred via either bold tags or sequences of certain ++non-alphabetic symbols. For example, the dyadic operator @code{+} is ++defined for many modes to perform addition, the monadic operator ++@code{@B{entier}} gets a real value and rounds it to an integral ++value, and the operator @code{:=:} is the identity relation. Many ++operators provide both bold tag names and symbols names, like in the ++case of @code{:/=:} that can also be written as @code{@B{isnt}}. ++ ++Bold tags are lexically well delimited, and if the same tag is used to ++refer to a monadic operator and to a dyadic operator, no ambiguity can ++arise. For example, in the following program it is clear that the ++second instance of @code{@B{plus}} refers to the monadic operator, and ++the first instance refers to the dyadic operator@footnote{If one would ++write @code{@B{plusplus}}, it would be a third different bold tag.}. ++ ++@example ++@B{op} @B{PLUS} = (@B{int} a, b) @B{int}: a + b, ++ @B{PLUS} = (@B{int} a): a; ++@B{int} val = 2 @B{PLUS} @B{PLUS} 3; ++@end example ++ ++On the other hand, symbols are not lexically delimited as words, and ++one symbol can appear immediately following another symbol. This can ++lead to ambiguities. For example, if we were to define a C-like ++monadic operator @code{++} like: ++ ++@example ++@B{op} ++ = (@B{ref} @B{int} a) @B{int}: (@B{int} t = a; a +:=1; t); ++@end example ++ ++@noindent ++Then the expression @code{++a} would be ambiguous: is it @code{++a} or ++@code{+(+a)}?. In a similar way, if we would use @code{++} as the ++name of a dyadic operator, an expression like @code{a++b} could be ++also interpreted as both @code{a++b} and @code{a+(+b)}. ++ ++To avoid these problems Algol 68 divides the symbols which are ++suitable to appear in the name of an operator into two classes: monads ++and nomads. @dfn{Monads} are symbols that can be used as monadic ++operators. @dfn{Nomads} are symbols which can be used as both monadic ++or dyadic operators. Given these two sets, the rules to conform a ++valid operator are: ++ ++@itemize @minus ++@item A bold tag. ++@item Any monad. ++@item A monad followed by a nomad. ++@item A monad optionally followed by a nomad followed by either @code{:=} or @code{=:}, but not by both. ++@end itemize ++ ++@noindent ++In the GNU Algol 68 compiler: ++ ++@itemize @minus ++@item The set of monads is @code{%^&+-~!?}. ++@item The set of nomads is @code{> 1} and ++@code{1 - small real < 1}. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bits lengths} ++1 plus the number of extra widths of bits which are meaningful. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bits shorths} ++1 plus the number of extra shorths of bits which are meaningful. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bits width} ++@deftypevrx Constant @B{int} {long bits width} ++@deftypevrx Constant @B{int} {long long bits width} ++The number of bits in a @code{@B{bits}} value. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bytes lengths} ++1 plus the number of extra widths of bytes which are meaningful. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bytes shorths} ++1 plus the number of extra shorths of bytes which are meaningful. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bytes width} ++@deftypevrx Constant @B{int} {long bytes width} ++@deftypevrx Constant @B{int} {long long bytes width} ++The number of chars in a @code{@B{bytes}} value. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {max abs char} ++The largest value which @code{@B{abs}} of a @code{@B{char}} can yield. ++@end deftypevr ++ ++@deftypevr Constant @B{char} {null character} ++Some character. ++@end deftypevr ++ ++@deftypevr Constant @B{char} flip ++@deftypevrx Constant @B{char} flop ++Characters used to represent @code{@B{true}} and @code{@B{false}} ++boolean values in textual transput. ++@end deftypevr ++ ++@deftypevr Constant @B{char} {error char} ++Character used to represent the digit of a value resulting from a ++conversion error in textual transput. ++@end deftypevr ++ ++@deftypevr Constant @B{char} blank ++The space character. ++@end deftypevr ++ ++@deftypevr Constant {@B{l} @B{real}} {L pi} ++The number pi. ++@end deftypevr ++ ++@node Standard modes ++@section Standard modes ++ ++@deftp Mode @B{void} ++The only value of this mode is @code{@B{empty}}. ++@end deftp ++ ++@deftp Mode @B{bool} ++Mode for the boolean truth values @code{@B{true}} and @code{@B{false}}. ++@end deftp ++ ++@deftp Mode {@B{l} @B{int}} ++Modes for signed integral values. Each @code{@B{long}} or ++@code{@B{short}} may increase or decrease the range of the domain, ++depending on the characteristics of the current target. Further ++@code{@B{long}}s and @code{@B{short}}s may be specified with no ++effect. ++@end deftp ++ ++@deftp Mode {@B{l} @B{real}} ++Modes for signed real values. Each @code{@B{long}} may increase the ++upper range of the domain, depending on the characteristics of the ++current target. Further @code{@B{long}}s may be specified but with no ++effect. ++@end deftp ++ ++@deftp Mode @B{char} ++Mode for character values. The character values are mapped one-to-one ++to code points in the 21-bit space of Unicode. ++@end deftp ++ ++@deftp Mode @B{string} {= @B{flex}[1:0]@B{char}} ++Mode for sequences of characters. This is implemented as a flexible ++row of @code{@B{char}} values. ++@end deftp ++ ++@deftp Mode {@B{l} @B{compl}} {= @B{struct} (@B{real} re,im)} ++Modes for complex values. Each @code{@B{long}} may increase the ++precision of both the real and imaginary parts of the numbers, ++depending on the characteristics of the current target. Further ++@code{@B{long}}s may be specified with no effect. ++@end deftp ++ ++@deftp Mode {@B{l} @B{bits}} ++Compact and efficient representation of a row of boolean values. Each ++@code{@B{long}} may increase the number of booleans that can be packed ++in a bits, depending on the characteristics of the current target. ++@end deftp ++ ++@deftp Mode {@B{l} @B{bytes}} ++Compact and efficient representation of a row of character values. ++Each @code{@B{long}} may increase the number of characters that can be ++packed in a bytes, depending on the characteristics of the current ++target. ++@end deftp ++ ++@node Standard priorities ++@section Standard priorities ++ ++@table @code ++@item 1 ++@itemize @bullet ++@item @code{plusab}, @code{+:=} ++@item @code{minusab}, @code{-:=} ++@item @code{timesab}, @code{*:=} ++@item @code{divab}, @code{/:=} ++@item @code{overab}, @code{%:=} ++@item @code{modab}, @code{%*:=} ++@item @code{plusto}, @code{+=:} ++@end itemize ++ ++@item 2 ++@itemize @bullet ++@item @code{or} ++@end itemize ++ ++@item 3 ++@itemize @bullet ++@item @code{and} ++@item @code{xor} ++@end itemize ++ ++@item 4 ++@itemize @bullet ++@item @code{@B{eq}}, @code{=} ++@item @code{@B{ne}}, @code{/=} ++@end itemize ++ ++@item 5 ++@itemize @bullet ++@item @code{@B{lt}}, @code{<}, ++@item @code{@B{le}}, @code{<=} ++@item @code{@B{gt}}, @code{>} ++@item @code{@B{ge}}, @code{>=} ++@end itemize ++ ++@item 6 ++@itemize @bullet ++@item @code{+} ++@item @code{-} ++@end itemize ++ ++@item 7 ++@itemize @bullet ++@item @code{*} ++@item @code{/} ++@item @code{@B{over}}, @code{%} ++@item @code{@B{mod}}, @code{%*} ++@item @code{@B{elem}} ++@end itemize ++ ++@item 8 ++@itemize @bullet ++@item @code{**} ++@item @code{@B{shl}}, @code{@B{up}} ++@item @code{@B{shr}}, @code{@B{down}} ++@item @code{@B{up}}, @code{@B{down}} ++@item @code{^} ++@item @code{@B{lwb}} ++@item @code{@B{upb}} ++@end itemize ++ ++@item 9 ++@itemize @bullet ++@item @code{@B{i}} ++@item @code{+*} ++@end itemize ++@end table ++ ++@node Rows operators ++@section Rows operators ++ ++The following operators work on any row mode, denoted below using the ++pseudo-mode @code{@B{rows}}. ++ ++@deftypefn Operator {} {@B{lwb}} {= (@B{rows} a) @B{int}} ++Monadic operator that yields the lower bound of the first bound pair ++of the descriptor of the value of @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{upb}} {= (@B{rows} a) @B{int}} ++Monadic operator that yields the upper bound of the first bound pair ++of the descriptor of the value of @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lwb}} {= (@B{int} n, @B{rows} a) @B{int}} ++Dyadic operator that yields the lower bound in the n-th bound pair of ++the descriptor of the value of @code{a}, if that bound pair exists. ++Attempting to access a non-existing bound pair results in a run-time ++error. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{upb}} {= (@B{int} n, @B{rows} a) @B{int}} ++Dyadic operator that yields the upper bound in the n-th bound pair of ++the descriptor of the value of @code{a}, if that bound pair exists. ++Attempting to access a non-existing bound pair results in a run-time ++error. ++@end deftypefn ++ ++@node Boolean operators ++@section Boolean operators ++ ++@deftypefn Operator {} {@B{not}} {= (@B{bool} a) @B{bool}} ++@deftypefnx Operator {} {~} {= (@B{bool} a) @B{bool}} ++Monadic operator that yields the logical negation of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{or}} {= (@B{bool} a, b) @B{bool}} ++Dyadic operator that yields the logical ``or'' of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{and}} {= (@B{bool} a, b) @B{bool}} ++@deftypefnx Operator {} {@B{&}} {= (@B{bool} a, b) @B{bool}} ++Dyadic operator that yields the logical ``and'' of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{bool} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{bool} a, b) @B{bool}} ++Dyadic operator that yields @code{@B{true}} if its operands are the ++same truth value, @code{@B{false}} otherwise. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{bool} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{bool} a, b) @B{bool}} ++Dyadic operator that yields @code{@B{false}} if its operands are the ++same truth value, @code{@B{true}} otherwise. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{abs}} {= (@B{bool} a) @B{int}} ++Monadic operator that yields 1 if its operand is @code{@B{true}}, and ++0 if its operand is @code{@B{false}}. ++@end deftypefn ++ ++@node Integral operators ++@section Integral operators ++ ++@subsection Arithmetic ++ ++@deftypefn Operator {} {+} {= (@B{l} @B{int} a) @B{l} @B{int}} ++Monadic operator that yields the affirmation of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {-} {= (@B{l} @B{int} a) @B{l} @B{int}} ++Monadic operator that yields the negative of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{abs}} {= (@B{l} @B{int} a) @B{l} @B{int}} ++Monadic operator that yields the absolute value of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{sign}} {= (@B{l} @B{int} a) @B{int}} ++Monadic operator that yields -1 if @code{a} if negative, 0 if @code{a} ++is zero and 1 if @code{a} is positive. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{odd}} {= (@B{l} @B{int} a) @B{bool}} ++Monadic operator that yields @code{@B{true}} if its operand is odd, ++@code{@B{false}} otherwise. ++@end deftypefn ++ ++@deftypefn Operator {} {+} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields the addition of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {-} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields @code{b} subtracted from @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {*} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields the multiplication of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{over}} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++@deftypefnx Operator {} {%} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields the integer division of @code{a} by ++@code{b}, rounding the quotient toward zero. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{mod}} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++@deftypefnx Operator {} {%*} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields the remainder of the division of @code{a} ++by @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {/} {= (@B{l} @B{int} a, b) @B{l} @B{real}} ++Dyadic operator that yields the integer division with real result of ++@code{a} by @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {**} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++@deftypefnx Operator {} {^} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields @code{a} raised to the exponent @code{b}. ++@end deftypefn ++ ++@subsection Arithmetic combined with assignation ++ ++@deftypefn Operator {} {@B{plusab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@deftypefnx Operator {} {+:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@dfn{Plus and become}. Dyadic operator that calculates @code{a + b}, ++assigns the result of the operation to the name @code{a} and then ++yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{minusab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@deftypefnx Operator {} {-:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++Dyadic operator that calculates @code{a - b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{timesab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@deftypefnx Operator {} {*:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++Dyadic operator that calculates @code{a * b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{overab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@deftypefnx Operator {} {%:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++Dyadic operator that calculates @code{a % b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{modab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@deftypefnx Operator {} {%*:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++Dyadic operator that calculates @code{a %* b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@subsection Relational ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are not equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lt}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {<} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{le}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {<=} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than, or equal to ++@code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{gt}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {>} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than ++@code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ge}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {>=} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than, or equal ++to @code{b}. ++@end deftypefn ++ ++@subsection Conversion ++ ++@deftypefn Operator {} {@B{shorten}} {= (@B{short} @B{int} a) @B{short} @B{short} @B{int}} ++@deftypefnx Operator {} {@B{shorten}} {= (@B{int} a) @B{short} @B{int}} ++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{int} a) @B{int}} ++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{long} @B{int} a) @B{long} @B{int}} ++Monadic operator that yields, if it exists, the integral value that ++can be lengthened to the value of @code{a}. If the value doesn't ++exist then the operator yields either the most positive integral value ++in the destination mode, if @code{a} is bigger than that value, or the ++most negative integral value in the destination mode, if @code{a} is ++smaller than that value. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{leng}} {= (@B{short} @B{short} @B{int} a) @B{short} @B{int}} ++@deftypefnx Operator {} {@B{leng}} {= (@B{short} @B{int} a) @B{int}} ++@deftypefnx Operator {} {@B{leng}} {= (@B{int} a) @B{long} @B{int}} ++@deftypefnx Operator {} {@B{leng}} {= (@B{long} @B{int} a) @B{long} @B{long} @B{int}} ++Monadic operator that yields the integral value lengthened from the ++value of @code{a}. ++@end deftypefn ++ ++@node Real operators ++@section Real operators ++ ++@subsection Arithmetic ++ ++@deftypefn Operator {} {+} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Monadic operator that yields the affirmation of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {-} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Monadic operator that yields the negative of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{abs}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Monadic operator that yields the absolute value of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{sign}} {= (@B{l} @B{real} a) @B{int}} ++Monadic operator that yields -1 if @code{a} if negative, 0 if @code{a} ++is zero and 1 if @code{a} is positive. ++@end deftypefn ++ ++@deftypefn Operator {} {+} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Dyadic operator that yields the addition of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {-} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Dyadic operator that yields @code{b} subtracted from @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {*} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Dyadic operator that yields the multiplication of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {/} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Dyadic operator that yields the realeger division with real result of ++@code{a} by @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {**} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++@deftypefnx Operator {} {^} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Dyadic operator that yields @code{a} raised to the real exponent @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {**} {= (@B{l} @B{real} a, @B{int} b) @B{l} @B{real}} ++@deftypefnx Operator {} {^} {= (@B{l} @B{real} a, @B{int} b) @B{l} @B{real}} ++Dyadic operator that yields @code{a} raised to the integral exponent ++@code{b}. ++@end deftypefn ++ ++@subsection Arithmetic combined with assignation ++ ++@deftypefn Operator {} {@B{plusab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++@deftypefnx Operator {} {+:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++@dfn{Plus and become}. Dyadic operator that calculates @code{a + b}, ++assigns the result of the operation to the name @code{a} and then ++yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{minusab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++@deftypefnx Operator {} {-:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++Dyadic operator that calculates @code{a - b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{timesab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++@deftypefnx Operator {} {*:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++Dyadic operator that calculates @code{a * b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{divab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++@deftypefnx Operator {} {/:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++Dyadic operator that calculates @code{a / b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@subsection Relational ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are not equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lt}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {<} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{le}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {<=} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than, or equal to ++@code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{gt}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {>} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than ++@code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ge}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {>=} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than, or equal ++to @code{b}. ++@end deftypefn ++ ++@subsection Conversions ++ ++@deftypefn Operator {} {@B{round}} {= (@B{l} @B{real} a) @B{int}} ++Monadic operator that yields the nearest integer to its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{entier}} {= (@B{l} @B{real} a) @B{int}} ++Monadic operator that yields the integer equal to @code{a}, or the ++next integer below (more negative than) @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{shorten}} {= (@B{long} @B{real} a) @B{real}} ++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{long} @B{real} a) @B{long} @B{real}} ++Monadic operator that yields, if it exists, the real value that ++can be lengthened to the value of @code{a}. If the value doesn't ++exist then the operator yields either the most positive real value ++in the destination mode, if @code{a} is bigger than that value, or the ++most negative real value in the destination mode, if @code{a} is ++smaller than that value. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{leng}} {= (@B{real} a) @B{long} @B{real}} ++@deftypefnx Operator {} {@B{leng}} {= (@B{long} @B{real} a) @B{long} @B{long} @B{real}} ++Monadic operator that yields the real value lengthened from the ++value of @code{a}. ++@end deftypefn ++ ++@node Character operators ++@section Character operators ++ ++@subsection Relational ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are not equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lt}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {<} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{le}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {<=} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than, or equal to ++@code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{gt}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {>} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ge}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {>=} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than, or equal ++to @code{b}. ++@end deftypefn ++ ++@subsection Conversions ++ ++@deftypefn Operator {} {@B{ABS}} {= (@B{char} a) @B{int}} ++Monadic operator that yields an unique integer for each permissable ++value of @code{@B{char}}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{REPR}} {= (@B{int} a) @B{char}} ++The opposite of @code{@B{abs}} of a character. ++@end deftypefn ++ ++@node String operators ++@section String operators ++ ++@subsection Relational ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are equal. Two ++strings are equal if they contain the same sequence of characters. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are not equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lt}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {<} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether the string @code{a} is less than ++the string @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{le}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {<=} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether the string @code{a} is less than, ++or equal to string @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{gt}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {>} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether the string @code{a} is greater ++than the string @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ge}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {>=} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether the string @code{a} is greater ++than, or equal to the string @code{b}. ++@end deftypefn ++ ++@subsection Composition ++ ++@deftypefn Operator {} {+} {= (@B{string} a, b) @B{string}} ++Dyadic operator that yields the concatenation of the two given ++strings as a new string. ++@end deftypefn ++ ++@deftypefn Operator {} {+} {= (@B{string} a, @B{char} b) @B{string}} ++Dyadic operator that yields the concatenation of the given string ++@code{a} and a string whose contents are the character @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {*} (= (@B{int} a, @B{string} b) @B{string}) ++@deftypefnx Operator {} {*} (= (@B{string} b, @B{int} a) @B{string}) ++Dyadic operator that yields the string @code{a} concatenated @code{a} ++times to itself. If @code{a} is less than zero then it is interpreted ++to be zero. ++@end deftypefn ++ ++@subsection Composition combined with assignation ++ ++@deftypefn Operator {} {@B{plusab}} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{string}} ++@deftypefnx Operator {} {+:=} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{string}} ++@dfn{Plus and become}. Dyadic operator that calculates @code{a + b}, ++assigns the result of the operation to the name @code{a} and then ++yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{plusto}} {= (@B{string} b, @B{ref} @B{string} a) @B{ref} @B{string}} ++@deftypefnx Operator {} {+=:} {= (@B{string} b, @B{ref} @B{string} b) @B{ref} @B{string}} ++Dyadic operator that calculates @code{a + b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{timesab}} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{string}} ++@deftypefnx Operator {} {*:=} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{stringl}} ++@dfn{Plus and become}. Dyadic operator that calculates @code{a * b}, ++assigns the result of the operation to the name @code{a} and then ++yields @code{a}. ++@end deftypefn ++ ++@node Complex operators ++@section Complex operators ++ ++@node Bits operators ++@section Bits operators ++ ++@subsection Logical ++ ++@deftypefn Operator {} {@B{NOT}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++@deftypefnx Operator {} {~} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++Monadic operator that yields the element-wise not logical operation in ++the elements of the given bits operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{AND}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++@deftypefnx Operator {} {&} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++Dyadic operator that yields the element-wise and logical operation in ++the elements of the given bits operands. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{OR}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++Dyadic operator that yields the element-wise ``or'' logical operation ++in the elements of the given bits operands. ++@end deftypefn ++ ++@subsection Shifting ++ ++@deftypefn Operator {} {@B{SHL}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} ++@deftypefnx Operator {} {@B{UP}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} ++Dyadic operator that yields the given bits operand shifted @code{n} ++positions to the left. Extra elements introduced on the right are ++initialized to @code{@B{false}}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{SHR}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} ++@deftypefnx Operator {} {@B{DOWN}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} ++Dyadic operator that yields the given bits operand shifted @code{n} ++positions to the right. Extra elements introduced on the left are ++initialized to @code{@B{false}}. ++@end deftypefn ++ ++@subsection Relational ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are equal. Two ++bits are equal if they contain the same sequence of booleans. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are not equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lt}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {<} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether the bits @code{a} is less than ++the bits @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{le}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {<=} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether the bits @code{a} is less than, ++or equal to bits @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{gt}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {>} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether the bits @code{a} is greater than ++the bits @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ge}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {>=} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether the bits @code{a} is greater ++than, or equal to the bits @code{b}. ++@end deftypefn ++ ++@subsection Conversions ++ ++@deftypefn Operator {} {@B{abs}} {= (@B{l} @B{bits} a) @B{l} @B{int}} ++Monadic operator that yields the integral value whose constituent bits ++correspond to the booleans stored in @code{a}. @xref{@code{@B{bin}} ++and @code{@B{abs}} of negative integral values}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{bin}} {= (@B{l} @B{int} a) @B{l} @B{bits}} ++Monadic operator that yields the bits value whose boolean elements map ++the bits in the given integral operand. @xref{@code{@B{bin}} and ++@code{@B{abs}} of negative integral values}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{shorten}} {= (@B{long} @B{bits} a) @B{bits}} ++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{long} @B{bits} a) @B{long} @B{bits}} ++Monadic operator that yields the bits value that can be lengthened to ++the value of @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{leng}} {= (@B{bits} a) @B{long} @B{bits}} ++@deftypefnx Operator {} {@B{leng}} {= (@B{long} @B{bits} a) @B{long} @B{long} @B{bits}} ++Monadic operator that yields the bits value lengthened from the value ++of @code{a}. The lengthened value features @code{@B{false}} in the ++extra left positions added to match the lengthened size. ++@end deftypefn ++ ++@node Bytes operators ++@section Bytes operators ++ ++@node Semaphore operators ++@section Semaphore operators ++ ++@node Math procedures ++@section Math procedures ++ ++@subsection Arithmetic ++ ++@deftypefn Procedure {} {@B{sqrt}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the square root of the given real argument. ++@end deftypefn ++ ++@subsection Logarithms ++ ++@deftypefn Procedure {} {@B{ln}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the base @code{e} logarithm of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{exp}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the exponential function of the given real ++argument. This is the inverse of @code{@B{ln}}. ++@end deftypefn ++ ++@subsection Trigonometric ++ ++@deftypefn Procedure {} {@B{sin}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the sin trigonometric function of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{arcsin}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the arc-sin trigonometric function of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{cos}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the cos trigonometric function of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{arccos}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the arc-cos trigonometric function of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{tan}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the tan trigonometric function of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{arctan}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the arc-tan trigonometric function of the given ++real argument. ++@end deftypefn ++ ++@node Extended prelude ++@chapter Extended prelude ++@cindex prelude, extended ++ ++This chapter documents the GNU extensions to the standard prelude. ++The facilities documented below are available to Algol 68 programs ++only if the @option{gnu68} language dialect is selected, which is the ++default. ++ ++The extended prelude is available to Algol 68 programs without needing ++to import any module, provided they are compiled as @code{gnu68} code, ++which is the default. ++ ++@menu ++* Extended priorities:: Priorities of extended operators. ++* Extended environment enquiries:: Information about the implementation. ++* Extended rows operators:: Rows and associated operations. ++* Extended boolean operators:: Operations on boolean operands. ++* Extended bits operators:: Bits and associated operations. ++* Extended math procedures:: Mathematical constants and functions. ++@end menu ++ ++@node Extended priorities ++@section Extended priorities ++ ++@table @code ++@item 3 ++@itemize @bullet ++@item @code{@B{xor}} ++@end itemize ++ ++@item 8 ++@itemize @bullet ++@item @code{@B{elems}} ++@end itemize ++@end table ++ ++@node Extended environment enquiries ++@section Extended environment enquiries ++ ++An @dfn{environment enquiry} is a constant, whose value may be useful ++to the programmer, that reflects some characteristic of the particular ++implementation. The values of these enquiries are also determined by ++the architecture and operating system targeted by the compiler. ++ ++@deftypevr Constant {@B{l} @B{int}} {L min int} ++The most negative integral value. ++@end deftypevr ++ ++@deftypevr Constant {@B{l} @B{real}} {L min real} ++The most negative real value. ++@end deftypevr ++ ++@deftypevr Constant {@B{l} @B{real}} {L infinity} ++Positive infinity expressed in a real value. ++@end deftypevr ++ ++@deftypevr Constant {@B{l} @B{real}} {L minus infinity} ++Negative infinity expressed in a real value. ++@end deftypevr ++ ++@deftypevr Constant @B{char} {replacement char} ++A character that is unknown, unrecognizable or unrepresentable in ++Unicode. ++@end deftypevr ++ ++@deftypevr Constant @B{char} {eof char} ++@B{char} value that doesn't denote an actual char, but an end-of-file ++situation. ++@end deftypevr ++ ++@node Extended rows operators ++@section Extended rows operators ++ ++The following operators work on any row mode, denoted below using the ++pseudo-mode @code{@B{rows}}. ++ ++@deftypefn Operator {} {@B{elems}} {= (@B{rows} a) @B{int}} ++Monadic operator that yields the number of elements implied by the ++first bound pair of the descriptor of the value of @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{elems}} {= (@B{int} n, @B{rows} a) @B{int}} ++Dyadic operator that yields the number of elements implied by the n-th ++bound pair of the descriptor of the value of @code{a}. ++@end deftypefn ++ ++@node Extended boolean operators ++@section Extended boolean operators ++ ++@deftypefn Operator {} {@B{xor}} {= (@B{bool} a, b) @B{bool}} ++Dyadic operator that yields the exclusive-or operation of the given ++boolean arguments. ++@end deftypefn ++ ++@node Extended bits operators ++@section Extended bits operators ++ ++@deftypefn Operator {} {@B{xor}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++Dyadic operator that yields the bit exclusive-or operation of the ++given bits arguments. ++@end deftypefn ++ ++@node Extended math procedures ++@section Extended math procedures ++ ++@subsection Logarithms ++ ++@deftypefn Procedure {} {@B{log}} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Procedure that calculates the base ten logarithm of the given arguments. ++@end deftypefn ++ ++@node POSIX prelude ++@chapter POSIX prelude ++ ++The POSIX prelude provides facilities to perform simple transput (I/O) ++based on POSIX file descriptors, accessing the file system, ++command-line arguments, environment variables, etc. ++ ++This prelude is available to Algol 68 programs without needing to ++import any module, provided they are compiled as @code{gnu68} code, ++which is the default. ++ ++@menu ++* POSIX process:: Process exit status. ++* POSIX command line:: Parsing command-line arguments. ++* POSIX environment:: Environment variables. ++* POSIX errors:: Error handling and error descriptions. ++* POSIX files:: Creating, opening and closing files. ++* POSIX sockets:: Communication endpoints. ++* POSIX string transput:: Reading and writing characters and strings. ++@end menu ++ ++@node POSIX process ++@section POSIX process ++ ++The Algol 68 program can report an exit status to the operating system ++once they stop running. The exit status reported by default is zero, ++which corresponds to success. ++ ++@deftypefn Procedure {} {set exit status} {= (@B{int} status)} ++Procedure that sets the exit status to report to the operating system ++once the program stop executing. The default exit status is 0 which, ++by convention, is interpreted by POSIX systems as success. A value ++different to zero is interpreted as an error status. This procedure ++can be invoked more than one, the previous exit status being ++overwritten. ++@end deftypefn ++ ++@node POSIX command line ++@section POSIX command line ++ ++Algol 68 programs can access the command-line arguments passed to them ++by using the following procedures. ++ ++@deftypefn Procedure {} {argc} {= @B{int}} ++Procedure that yields the number of arguments passed in the command ++line, including the name of the program. ++@end deftypefn ++ ++@deftypefn Procedure {} {argv} {= (@B{int} n) @B{string}} ++Procedure that yields the @code{n}th argument passed in the command ++line. The first argument is always the name used to invoke the ++program. If @code{n} is out of range then this procedure returns the ++empty string. ++@end deftypefn ++ ++@node POSIX environment ++@section POSIX environment ++ ++@deftypefn Procedure {} {getenv} {= (@B{string} varname) @B{string}} ++Procedure that yields the value of the environment variable ++@code{varname} as a string. If the specified environmental variable ++is not defined the this procedure returns an empty string. ++@end deftypefn ++ ++@node POSIX errors ++@section POSIX errors ++ ++When a call to a procedure in this prelude results in an error, the ++called procedure signals the error in some particular way and also ++sets a global @code{errno} to a code describing the error. For ++example, trying to opening a file that doesn't exist will result in ++@code{fopen} returning -1, which signals an error. The caller can ++then inspect the global @code{errno} to see what particular error ++prevented the operation to be completed: in this case, @code{errno} ++will contain the error code corresponding to ``file doesn't exist''. ++ ++@deftypefn Procedure {} {errno} {= @B{int}} ++This procedure yields the current value of the global @code{errno}. ++The yielded value reflects the error status of the last executed POSIX ++prelude operation. ++@end deftypefn ++ ++@deftypefn Procedure {} {strerror} {= (@B{int} ecode) @B{string}} ++This procedure gets an error code and yields a string containing an ++explanatory short description of the error. It is typical to pass the ++output of @code{errno} to this procedure. ++@end deftypefn ++ ++@deftypefn Procedure {} {perror} {= (@B{string} msg) @B{void}} ++This procedure prints the given string @code{msg} in the standard ++error output, followed by a colon character, a space character and ++finally the string error of the current value of @code{errno}. ++@end deftypefn ++ ++@node POSIX files ++@section POSIX files ++ ++File descriptors are @code{@B{int}} values that identify open files ++that can be accessed by the program. The @code{fopen} procedure ++allocates file descriptors as it opens files, and the descriptor is ++used in subsequent transput calls to perform operations on the files. ++ ++@subsection Standard file descriptors ++ ++There are three descriptors, however, which are automatically opened ++when the program starts executing and automatically closed when the ++program finishes. These are: ++ ++@deftypevr Constant {@B{int}} {stdin} ++File descriptor associated with the standard input. Its value is @code{0}. ++@end deftypevr ++ ++@deftypevr Constant {@B{int}} {stdout} ++File descriptor associated with the standard output. Its value is @code{1}. ++@end deftypevr ++ ++@deftypevr Constant {@B{int}} {stderr} ++File descriptor associated with the standard error. Its value is @code{2}. ++@end deftypevr ++ ++@subsection Opening and closing files ++ ++@deftypefn Procedure {} {fopen} {= (@B{string} pathname, @B{bits} flags) @B{int}} ++Open the file specified by @code{pathname}. The argument @code{flags} ++is a combination of @code{file o} flags as defined below. If the ++specified file is successfully opened while satisfying the constraints ++implied by @code{flags} then this procedure yields a file descriptor ++that is used in subsequent I/O calls to refer to the open ++file. Otherwise, this procedure yields -1. The particular error can ++be inspected by calling the @code{errno} procedure. ++@end deftypefn ++ ++@deftypefn Procedure {} {fclose} {= (@B{int} fd) @B{int}} ++Close the given file descriptor, which no longer refers to any file. ++This procedure yields zero on success, and -1 on error. In the later ++case, the program can look at the particular error by calling the ++@code{errno} procedure. ++@end deftypefn ++ ++@subsection Creating files ++ ++@deftypefn Procedure {} {fcreate} {= (@B{string} pathname, @B{bits} mode) @B{int}} ++Create a file with name @code{pathname}. The argument @code{mode} is ++a @code{@B{bits}} value containing a bit pattern that determines the ++permissions on the created file. The bit pattern has the form ++@code{8rUGO}, where @code{U} reflects the permissions of the user who ++owns the file, @code{U} reflects the permissions of the users ++pertaining to the file's group, and @code{O} reflects the permissions ++of all other users. The permission bits are 1 for execute, 2 for ++write and 4 for read. If the file is successfully created then this ++procedure yields a file descriptor that is used in subsequent I/O ++calls to refer to the newly created file. Otherwise, this procedure ++yields -1. The particular error can be inspected by calling the ++@code{errno} procedure. ++@end deftypefn ++ ++@subsection Flags for @code{fopen} ++ ++The following flags can be combined using bit-wise operators. Note ++that in POSIX systems the effective mode of the created file is the ++mode specified by the programmer masked with the process's ++@dfn{umask}. ++ ++@deftypevr Constant {@B{bits}} {file o default} ++Flag for @code{fopen} indicating that the file shall be opened with ++whatever capabilities allowed by its permissions. ++@end deftypevr ++ ++@deftypevr Constant {@B{bits}} {file o rdwr} ++Flag for @code{fopen} indicating that the file shall be opened for ++both reading and writing. ++@end deftypevr ++ ++@deftypevr Constant {@B{bits}} {file o rdonly} ++Flag for @code{fopen} indicating that the file shall be opened for ++reading only. This flag is not compatible with @code{file o rdwr} nor ++with @code{file o wronly}. ++@end deftypevr ++ ++@deftypevr Constant {@B{bits}} {file o wronly} ++Flag for @code{fopen} indicating that the file shall be opened for ++write only. This flag is not compatible with @code{file o rdwr} nor ++with @code{file o rdonly}. ++@end deftypevr ++ ++@deftypevr Constant {@B{bits}} {file o trunc} ++Flag for @code{fopen} indicating that the opened file shall be ++truncated upon opening it. The file must allow writing for this flag ++to take effect. The effect of combining @code{file o trunc} and ++@code{file o rdonly} is undefined and varies among implementations. ++@end deftypevr ++ ++@subsection Getting file properties ++ ++@deftypefn Procedure {} {fsize} {= (@B{int} fd) @B{long} @B{long} @B{int}} ++Return the size in bytes of the file characterized by the file ++descriptor @code{fd}. If the system entity characterized by the given ++file descriptor doesn't have a size, if the size of the file cannot be ++stored in a @code{@B{long} @B{long} @B{int}}, or if there is any other ++error condition, this procedure yields -1 and @code{errno} is set ++appropriately. ++@end deftypefn ++ ++@deftypefn Procedure {} {lseek} {= (@B{int} fd, @B{long int} offset, @B{int} whence) @B{long long int}} ++Set the file offset of the file characterized by the file descriptor @code{fd} ++depending on the values of @code{offset} and @code{whence}. On success, the ++resulting offset, as measured in bytes from the beginning of the file, is ++returned. Otherwise, -1 is returned, @code{errno} is set to indicate the error, ++and the file offset remains unchanged. The effects of @code{offset} and ++@code{whence} are: ++@itemize ++@item ++If @code{whence} is @code{seek set}, the file offset is set to @code{offset} ++bytes. ++@item ++If @code{whence} is @code{seek cur}, the file offset is set to its current ++location plus @code{offset}. ++@item ++If @code{whence} is @code{seek end}, the file offset is set to the size of the ++file plus @code{offset}. ++@end itemize ++@end deftypefn ++ ++@node POSIX sockets ++@section POSIX sockets ++ ++A program can communicate with other computers, or with other ++processes running in the same computer, via sockets. The sockets are ++identified by file descriptors. ++ ++@deftypefn Procedure {} {fconnect} {= (@B{string} host, @B{int} port) @B{int}} ++This procedure creates a stream socket and connects it to the given ++@code{host} using port @code{port}. The established communication is ++full-duplex, and allows sending and receiving data using transput ++until it gets closed. On success this procedure yields a file ++descriptor. On error this procedure yields -1 and @code{errno} is set ++appropriately. ++@end deftypefn ++ ++@node POSIX string transput ++@section POSIX string transput ++ ++The following procedures read or write characters and strings from and ++to open files. The external encoding of the files is assumed to be ++UTF-8. Since Algol 68 @code{@B{char}}s are UCS-4, this means that ++reading or writing a character may involve reading or writing more ++than one byte, depending on the particular Unicode code points ++involved. ++ ++@subsection Output of strings and chars ++ ++@deftypefn Procedure {} {putchar} {= (@B{char} c) @B{char}} ++Write the given character to the standard output. This procedure ++yields @code{c} in case the character got successfully written, or ++@code{eof char} otherwise. ++@end deftypefn ++ ++@deftypefn Procedure {} {puts} {= (@B{string} str) @B{void}} ++Write the given string to the standard output. ++@end deftypefn ++ ++@deftypefn Procedure {} {fputc} {= (@B{int} fd, @B{char} c) @B{int}} ++Write given character @code{c} to the file with descriptor @code{fd}. ++This procedure yields @code{c} on success, or @code{eof char} on ++error. ++@end deftypefn ++ ++@deftypefn Procedure {} {fputs} {= (@B{int} fd, @B{string} str) @B{int}} ++Write the given string @code{str} to the file with descriptor ++@code{fd}. This procedure yields the number of bytes written on ++success, or 0 on error. ++@end deftypefn ++ ++@subsection Input of strings and chars ++ ++@deftypefn Procedure {} {getchar} {= @B{char}} ++Read a character from the standard input. This procedure yields the ++read character in case the character got successfully read, or ++@code{eof char} otherwise. ++@end deftypefn ++ ++@deftypefn Procedure {} {gets} {= (@B{int} n) @B{ref} @B{string}} ++Read a string composed of @code{n} characters from the standard input ++and yield a reference to it. If @code{n} is bigger than zero then ++characters get read until either @code{n} characters have been read or ++the end of line is reached. If @code{n} is zero or negative then ++characters get read until either a new line character is read or the ++end of line is reached. ++@end deftypefn ++ ++@deftypefn Procedure {} {fgetc} {= (@B{int} fd) @B{int}} ++Read a character from the file with descriptor @code{fd}. This ++procedure yields the read character in case a valid Unicode character ++got successfully read. If an unrecognizable or unknown character is ++found then this procedure yields @code{replacement char}. In case of ++end of file this procedure yields @code{eof char}. ++@end deftypefn ++ ++@deftypefn Procedure {} {fgets} {= (@B{int} fd, @B{int} n) @B{ref} @B{string}} ++Read a string from the file with descriptor @code{fd} and yield a ++reference to it. If @code{n} is bigger than zero then characters get ++read until either @code{n} characters have been read or the end of ++line is reached. If @code{n} is zero or negative then characters get ++read until either a new line character is read or the end of line is ++reached. ++@end deftypefn ++ ++@node Language extensions ++@chapter Language extensions ++ ++This chapter documents the GNU extensions implemented by this compiler ++on top of the Algol 68 programming language. These extensions ++collectively conform a strict @dfn{superlanguage} of Algol 68, and are ++enabled by default. To disable them the user can select the strict ++Algol 68 standard by passing the option @option{-std=algol68} when ++invoking the compiler. ++ ++@menu ++* @code{@B{bin}} and @code{@B{abs}} of negative integral values:: ++* Bold taggles:: Using underscores in mode and operator indications. ++@end menu ++ ++@node @code{@B{bin}} and @code{@B{abs}} of negative integral values ++@section @code{@B{bin}} and @code{@B{abs}} of negative integral values ++ ++The @code{@B{bin}} operator gets an integral value and yields a ++@code{@B{bits}} value that reflects the internal bits of the integral ++value. The semantics of this operator, as defined in the Algol 68 ++standard prelude, are: ++ ++@example ++@B{op} @B{bin} = (L @B{int} a) L @B{bits}: ++ @B{if} a >= L 0 ++ @B{then} L @B{int} b := a; L @B{bits}; ++ @B{for} i @B{from} L bits width @B{by} -1 @B{to} 1 ++ @B{do} (L F @B{of} c)[i] := @B{odd} b; b := b % L 2 @B{od}; ++ c ++ @B{fi}; ++@end example ++ ++The @code{@B{abs}} operator performs the inverse operation of ++@code{@B{bits}}. Given a @code{L @B{bits}} value, it yields the ++@code{L @B{int}} value whose bits representation is the bits value. ++The semantics of this operator, as defined in the Algol 68 prelude, ++are: ++ ++@example ++@B{op} @B{abs} = (L @B{bits} a) L @B{int}: ++@B{begin} L @B{int} c := L 0; ++ @B{for} i @B{to} L bits width ++ @B{do} c := L 2 * c + K @B{abs} (L F @B{of} a)[i] @B{od}; ++ c ++@B{end} ++@end example ++ ++@noindent ++Note how the @code{@B{bin}} of a negative integral value is not ++defined: the implicit else-part of the conditional yields ++@code{@B{skip}}, which is defined as any bits value in that context. ++Note also how @code{@B{abs}} doesn't make any provision to check ++whether the resulting value is positive: it assumes it is so. ++ ++The GNU Algol 68 compiler, when working in strict Algol 68 mode ++(@option{-std=algol68}), makes @code{@B{bin}} to always yield @code{L ++@B{bits} (@B{skip})} when given a negative value, as mandated by the ++report. But the skip value is always the bits representation of zero, ++@i{i.e.} 2r0. Strict Algol 68 programs, however, must not rely on ++this. ++ ++When GNU extensions are enabled (@option{-std=gnu68}) the ++@code{@B{bin}} of a negative value yields the two's complement bit ++pattern of the value rather than zero. Therefore, @code{@B{bin} - ++@B{short} @B{short} 2} yields @code{2r11111110}. And @code{@B{abs} ++@B{short} @B{short} 2r11111110} yields -2. ++ ++@node Bold taggles ++@section Bold taggles ++ ++This compiler supports the stropping regimes known as UPPER and ++SUPPER. In both regimes bold words are written by writing their ++constituent bold letters and digits, in order. In UPPER regime all ++the letters of a bold word are to be written using upper-case. In ++SUPPER regime, only the first bold letter is required to be written ++using upper-case, and this only when the bold word is not a reserved ++word. ++ ++When a bold word comprises several natural words, it may be a little ++difficult to distinguish them at first sight. Consider for example ++the following code, written fist in UPPER stropping: ++ ++@example ++MODE TREENODE = STRUCT (TREENODEPAYLOAD data, REF TREENODE next), ++ TREENODEPAYLOAD = STRUCT (INT code, REAL average, mean); ++@end example ++ ++@noindent ++Then written in SUPPER stropping: ++ ++@example ++mode TreeNode = struct (TreeNodePayload data, REF TreeNode next), ++ TreeNodePayload = struct (int code, real average, mean); ++@end example ++ ++Particularly in UPPER stropping, it may be difficult to distinguish ++the constituent natural words at first sight. ++ ++In order to improve this, this compiler implements a GNU extension ++called @dfn{bold taggles} that allows to use underscore characters ++(@code{_}) within mode and operator indications as a visual aid to ++improve readability. When this extension is enabled, mode indications ++and operator indications consist in a sequence of the so-called ++@dfn{bold taggles}, which are themselves sequences of one or more bold ++letters or digits optionally terminated by an underscore character. ++ ++With bold taggles enabled the program above could have been written ++using UPPER stropping as: ++ ++@example ++MODE TREE_NODE = STRUCT (TREE_NODE_PAYLOAD data, REF TREE_NODE next), ++ TREE_NODE_PAYLOAD = STRUCT (INT code, REAL average, mean); ++@end example ++ ++@noindent ++And using SUPPER stropping as: ++ ++@example ++mode Tree_Node = struct (Tree_Node_Payload data, ref Tree_Node next), ++ Tree_Node_Payload = struct (int code, real average, mean); ++@end example ++ ++@noindent ++Which is perhaps more readable for most people. Note that the ++underscore characters are not really part of the mode or operator ++indication. Both @code{TREE_NODE} and @code{TREENODE} denote the same ++mode indication. Note also that, following the definition, constructs ++like @code{Foo__bar} and @code{_Baz} are not valid indications. ++ ++Bold taggles are available when the gnu68 dialect of the language is ++selected. @xref{Dialect options}. ++ ++@include gpl_v3.texi ++@include fdl.texi ++ ++@node Option Index ++@unnumbered Option Index ++ ++@command{ga68}'s command line options are indexed here without any initial ++@samp{-} or @samp{--}. Where an option has both positive and negative forms ++(such as @option{-f@var{option}} and @option{-fno-@var{option}}), relevant ++entries in the manual are indexed under the most appropriate form; it may ++sometimes be useful to look up both forms. ++ ++@printindex op ++ ++@node General Index ++@unnumbered Index ++ ++@printindex cp ++ ++@bye +--- /dev/null ++++ b/src/gcc/algol68/ga68.vw +@@ -0,0 +1,1845 @@ ++{ ga68.vw - The GNU Algol 68 strict language -*- vw -*- ++ ++ Copyright (C) 2025 Jose E. Marchesi ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. } ++ ++{ This file contains an annotated description of the syntax of the GNU ++ Algol 68 strict language. GNU Algol 68 aims to be a super-language ++ of Algol 68. ++ ++ Extension to the strict Revised Report incorporated into GNU Algol ++ 68 are: ++ ++ [US] This is the GNU68-2025-001-unsafe GNU extension. It adds an ++ unsafe clause that marks a controlled clause as containing ++ unsafe constructs which are known by the programmer, and makes ++ the compiler to avoid certain diagnostics. See the GNU Algol ++ 68 Compiler manual for more information. ++ ++ [SC] This is the GNU68-2025-003-andth-orel GNU extension. It adds ++ two units that act as pseudo-operators providing logical AND ++ and OR functions with short-circuited elaboration. See the GNU ++ Algol 68 Compiler manual for more information. ++ ++ [MR] A modules and separated compilation system based on the modules ++ system recomended by IFIP Working Group 2.1 Standing ++ Subcommittee on Algol 68 Support, described in: ++ ++ A Modules and Separate Compilation Facility for Algol 68 by ++ Lindsey and Boom. ++ ++ [NC] This is the GNU68-2025-005-nestable-comments GNU extension. It ++ adds support for nestable block comments. ++ ++ The metaproduction rules, hyper-rules and hyper-alternatives ++ introduced by each extension are clearly marked in the sections ++ below. You can easily search for them using the extensions tags in ++ the list above. For example, to look for the extensions introduced ++ by the modules and separated compilation system, search for [MR]. ++ ++ The few deviations to the RR Algol 68 are clearly marked as well in ++ this specification. ++ ++ A complete description of the semantics of the Algol 68 subset of ++ the described language and the extensions is not included in this ++ file. The reader is referred to the Revised Report and other ++ documentation corresponding to the extensions, like the GNU Algol 68 ++ compiler manual. ++ ++ The sectioning and the enumeration of metaproduction rules and of ++ hyper-rules, including cross-references, are the same than in the ++ Report. The annotations and pragmatics added between curly brackets ++ explain the meaning of the rules and how they describe the syntax of ++ the language. Note that thanks to the expressive power of VW ++ grammars the syntax expressed by this description covers much more ++ than what is usually expressed by context-free grammars in the ++ descriptions of other languages that typically use some variant of ++ the BNF notation. ++ ++ Sample code in examples and pragmatics is expressed using the UPPER ++ stropping regime. ++ ++ This file is better browsed using the Emacs vw-mode, which provides ++ automatic indentation, font-lock, and other facilities like the ++ hiding of annotations an the following of cross-references. See the ++ vw-mode manual for more information, including a primer on VW ++ grammars and the formal description used in both the original Report ++ and this file. } ++ ++1 Language and metalanguage ++ ++1.2 General metaproduction rules ++ ++1.2.1 Metaproduction rules of modes ++ ++A) MODE :: PLAIN ; STOWED ; REF to MODE ; PROCEDURE ; ++ UNITED ; MU definition of MODE ; MU application. ++B) PLAIN :: INTREAL ; boolean ; character. ++C) INTREAL :: SIZETY integral ; SIZETY real. ++D) SIZETY :: long LONGSETY ; short SHORTSETY ; EMPTY. ++E) LONGSETY :: long LONGSETY ; EMPTY. ++F) SHORTSETY :: short SHORTSETY ; EMPTY. ++G) EMPTY :: . ++H) STOWED :: structured with FIELDS mode ; ++ FLEXETY ROWS of MODE. ++I) FIELDS :: FIELD ; FIELDS FIELD. ++J) FIELD :: MODE field TAG{942A}. ++K) FLEXETY :: flexible ; EMPTY. ++L) ROWS :: row ; ROWS row. ++M) REF :: reference ; transient reference. ++N) PROCEDURE :: procedure PARAMETY yielding MOID. ++O) PARAMETY :: with PARAMETERS ; EMPTY. ++P) PARAMETERS :: PARAMETER ; PARAMETERS PARAMETER. ++Q) PARAMETER :: MODE parameter. ++R) MOID :: MODE ; void. ++S) UNITED :: union of MOODS mode. ++T) MOODS :: MOOD ; MOODS MOOD. ++U) MOOD :: PLAIN ; STOWED ; reference to MODE ; PROCEDURE ; void. ++V) MU :: muTALLY. ++W) TALLY :: i ; TALLY i. ++ ++1.2.2 Metaproduction rules associated with phrases and coercion ++ ++{ Extensions: ++ [MR] access ++ [US] unsafe } ++ ++A) ENCLOSED :: closed ; collateral ; parallel ; CHOICE{34A} ; ++ loop ; access ; unsafe. ++B) SOME :: SORT MOID NEST. ++C) SORT :: strong ; firm ; meek ; weak ; soft. ++ ++{ Modules are activated by means of access-clauses. } ++ ++1.2.3 Metaproduction rules associated with nests ++ ++{ Extensions: ++ [MR] MODSETY, MOD, MODS, REVSETY, REVS, REV, ++ TAU, INKSETY, INKS, INK } ++ ++A) NEST :: LAYER ; NEST LAYER. ++B) LAYER :: new DECSETY LABSETY INKSETY. ++C) DECSETY :: DECS ; EMPTY. ++D) DECS :: DEC ; DECS DEC. ++E) DEC :: MODE TAG{942A} ; priority PRIO TAD{942F} ; ++ MOID TALLY TAB{942D} ; DUO TAD{942F} MONO TAM{492K} ; ++ MOD. ++F) PRIO :: i ; ii ; iii ; ++ iii i ; iii ii ; iii iii ; ++ iii iii i ; iii iii ii ; iii iii iii. ++G) MONO :: procedure with PARAMETER yielding MOID. ++H) DUO :: procedure with PARAMETER1 PARAMETER2 yielding MOID. ++I) LABSETY :: LABS ; EMPTY. ++J) LABS :: LAB ; LABS LAB. ++K) LAB :: label TAG{942A}. ++L) MODSETY :: MODS ; EMPTY. ++M) MODS :: MOD ; MODS MOD. ++N) MOD :: module REVS TAB. ++O) REVSETY :: REVS ; EMPTY. ++P) REVS :: REV ; REVS REV. ++Q) REV :: TAU reveals DECSETY INKS. ++R) TAU :: MU. ++S) INKSETY :: INKS ; EMPTY. ++T) INKS :: INK ; INKS INK. ++U) INK :: invoked TAU. ++ ++{ The primal environment is just 'new'. } ++ ++1.3 General hyper-rules ++ ++1.3.1 Syntax of general predicates ++ ++A) NOTION :: ALPHA ; NOTION ALPHA. ++B) ALPHA :: a ; b ; c ; d ; e ; f ; g ; h ; i ; j; ++ k ; l ; m ; n ; o ; p ; q ; r ; s ; t; ++ u ; v ; w ; x ; y ; z. ++C) NOTETY :: NOTION ; EMPTY. ++D) THING :: NOTION ; ++ (NOTETY1) NOTETY2 ; ++ THING (NOTETY1) NOTETY2. ++E) WHETHER :: where ; unless. ++ ++a) where true : EMPTY. ++b) unless false : EMPTY. ++c) where THING1 and THING2 : where THING1, where THING2. ++d) where THING1 or THING2 : where THING1 ; where THING2. ++e) unless THING1 and THING2 : unless THING1; unless THING2. ++f) unless THING1 or THING2 : unless THING1, unless THING2. ++g) WHETHER (NOTETY1) is (NOTETY2) : ++ WHETHER (NOTETY1) begins with (NOTETY2){h,i,j} ++ and (NOTETY2) begins with (NOTETY1){h,i,j}. ++h) WHETHER (EMPTY) begins with (NOTION){g,j} : ++ WHETHER false{b,-}. ++i) WHETHER (NOTETY1) begins with (EMPTY){g,j} : ++ WHETHER true{a,-}. ++j) WHETHER (ALPHA1 NOTETY1) begins with ++ (ALPHA2 NOTETY2){g,j,m} : ++ WHETHER (ALPHA1) coincides with (ALPHA2) in ++ (abcdefghijklmnopqrstuvwxyz){k,l,-} ++ and (NOTETY1) begins with (NOTETY2){h,i,j}. ++k) where (ALPHA) coincides with (ALPHA) in (NOTION){j} : ++ where true{a}. ++l) unless (ALPHA1) coincides with (ALPHA2) in (NOTION){j} : ++ where (NOTION) contains (ALPHA1 NOTETY ALPHA2){m} ++ or (NOTION) contains (ALPHA2 NOTETY ALPHA1){m}. ++m) WHETHER (ALPHA NOTETY) contains (NOTION){l,m} : ++ WHETHER (ALPHA NOTETY) begins with (NOTION){j} ++ or (NOTETY) contains (NOTION){m,n}. ++n) WHETHER (EMPTY) contains (NOTION){m} : WHETHER false{b,-}. ++ ++1.3.3 Syntax of general constructions ++ ++A) STYLE :: brief ; bold ; style TALLY. ++ ++a) NOTION option : NOTION ; EMPTY. ++b) NOTION sequence{b} : NOTION ; NOTION, NOTION sequence{b}. ++c) NOTION list{c} : ++ NOTION ; NOTION, and also{94f} token, NOTION list{c}. ++d) NOTETY STYLE pack : ++ STYLE begin{94f,-} token, NOTETY, STYLE end{94f,-} token. ++e) NOTION STYLE bracket : ++ STYLE sub{94f,-} token, NOTION, STYLE bus{94f,-} token. ++f) THING1 or alternatively THING2 : THING1 ; THING2. ++ ++2 The computer and the program ++ ++2.2 The program ++ ++2.2.1 Syntax ++ ++a) program : program token, strong integral new closed clause{31a}. ++ ++{ The value yielded by the elaboration of the program is the exit ++ status returned by the process to the operating system upon ++ termination. This is a slight deviation from the Report, which ++ instead specifies: ++ ++ a) program : strong void new closed clause. ++ ++ and mandates that the production tree of a particular program should ++ be akin to the production of the program in the strict language. } ++ ++3 Clauses ++ ++3.0.1 Syntax ++ ++{ Extensions: ++ [MR] "NEST module text publishing REVS defining LAYER", ++ "NEST LAYER1 LAYER2 module series with DECSETY ++ without DECSETY", ++ "SOID NEST access clause" } ++ ++a) *phrase : SOME unit{32d} ; NEST declaration of DECS{41a}. ++b) *SORT MODE expression : SORT MODE NEST UNIT{5A}. ++c) *statement : strong void NEST UNIT{5A}. ++d) *MOID constant : MOID NEST DEFIED identifier with TAG{48a,b} ; ++ MOID NEST denoter{80a}. ++e) *MODE variable : ++ reference to MODE NEST DEFIED identifier with TAG{48a,b}. ++f) *NEST range : ++ SOID NEST serial clause defining LAYER{32a} ; ++ SOID NEST chooser CHOICE STYLE clause{34b} ; ++ SOID NEST case part of choice using UNITED{34i} ; ++ NEST STYLE repeating part with DEC{35e} ; ++ NEST STYLE while do part{35f} ; ++ PROCEDURE NEST routine text{541a,b} ; ++ NEST module text publishing REVS defining LAYER{49c,-} ; ++ NEST LAYER1 LAYER2 module series ++ with DECSETY without DECSETY1{49d} ; ++ SOID NEST access clause{36a}. ++ ++{ The rules b and c establish a precise definition of "expressions" ++ and "statements". The former are units yielding values of a mode ++ other than VOID in any context. The later are units in a strong ++ context with a-posteriori mode of VOID, that get voided. } ++ ++{ The rules d and e establish a precise definition of "constants" and ++ "variables". The former are either a denotation or an identifier of ++ some mode. The second are identifiers of a "reference to" mode. } ++ ++{ The rule f introduces a paranotion for all the constructs that ++ introduce new ranges. } ++ ++3.1 Closed clauses ++ ++3.1.1 Syntax ++ ++A) SOID :: SORT MOID. ++B) PACK :: STYLE pack. ++ ++a) SOID NEST closed clause{22a,5D,551a,A341h,A349a} : ++ SOID NEST serial clause defining LAYER{32a} PACK. ++ ++{ Examples: ++ a) BEGIN x := 1; y := 2 END } ++ ++3.2 Serial clauses ++ ++3.2.1 Syntax ++ ++{ Extensions: ++ [MR] "establishing clause" } ++ ++a) SOID NEST serial clause defining new PROPSETY{31a,34f,1,35h} : ++ SOID NEST new PROPSETY series with PROPSETY{b}. ++b) SOID NEST series with PROPSETY{a,b,35c} : ++ strong void NEST unit{d}, go on{94f} token, ++ SOID NEST series with PROPSETY{b} ; ++ where (PROPSETY) is (DECS DECSETY LABSETY), ++ NEST declaration of DECS{41a}, go on{94f} token, ++ SOID NEST series with DECSETY LABSETY{b} ; ++ where (PROPSETY) is (LAB LABSETY), ++ NEST label definition of LAB{c}, ++ SOID NEST series with LABSETY{b} ; ++ where (PROPSETY) is (LAB LABSETY) ++ and SOID balances SOID1 and SOID2{3}, SOID1 NEST unit{d}, ++ completion{94f} token, NEST label definition of LAB{c}, ++ SOID2 NEST series with LABSETY{b} ; ++ where (PROPSETY) is (EMPTY), ++ SOID NEST unit{d}. ++c) NEST label definition of label TAG{b} : ++ label NEST defining identifier with TAG{48a}, label{94f} token. ++d) SOME unit{b,33b,g,34i,35d,46m,n,521c,532e,541a,b,543c,A34Ab,c,d} : ++ SOME UNIT{5A,-}. ++e) WHETHER SORT MOID balances ++ SORT1 MOID1 an SORT2 MOID2{b,33b,34d,h} : ++ WHETHER SORT balances SORT1 and SORT2{f} ++ and MOID balances MOID1 and MOID2{g}. ++f) WHETHER SORT balances SORT1 and SORT2{e,522a} : ++ where (SORT1) is (strong), WHETHER (SORT2) is (SORT) ; ++ where (SORT2) is (strong), WHETHER (SORT1) is (SORT). ++g) WHETHER MOID balances MOID1 and MOID2{3} : ++ where (MOID1) is (MOID2), WHETHER (MOID) is (MOID1) ; ++ where (MOID1) is (transient MOID2), ++ WHETHER (MOID) is (MOID1) ; ++ where (MOID2) is (transient MOID1), ++ WHETHER (MOID) is (MOID2). ++ ++h) *SOID unitary clause : SOID NEST unit{d}. ++i) *establishing clause : ++ SOID NEST serial clause defining LAYER{32a} ; ++ MODE NEST enquiry clause defining LAYER{34c}. ++ ++{ The paranotion establishing-clause encompasses both module-texts and ++ revelations. } ++ ++{ Examples: ++ b) read (x1); REAL s:= 0; ++ sum: FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT ++ nonpos: print (s) ++ ++ REAL s := 0; ++ sum: FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT ++ nonpos: print (s) ++ ++ sum: FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT ++ nonpos: print (s) ++ ++ FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT ++ nonpos: print (s) ++ c) sum: ++ d) print (s) } ++ ++3.3 Collateral and parallel clauses ++ ++3.3.1 Syntax ++ ++a) strong void NEST collateral clause{5D,551a} : ++ strong void NEST joined portrait{b} PACK. ++b) SOID NEST joined portrait{a,b,c,d,34g} : ++ were SOID balances SOID1 and SOID2{32e}, ++ SOID1 NEST unit{32d}, and also{94f} token, ++ SOID2 NEST unit{32d} ++ or alternatively SOID2 NEST joined portrait{b}. ++c) strong void NEST parallel clause{5D,551a} : ++ parallel{94f} token, strong void NEST joined portrait{b} PACK. ++d) strong ROWS of MODE NEST collateral clause{5D,551a} : ++ where (ROWS) is (row), ++ strong MODE NEST joined portrait{b} PACK ; ++ where (ROWS) is (row ROWS1), ++ strong ROWS1 of MODE NEST joined portrait{b} PACK ; ++ EMPTY PACK. ++e) strong structured with ++ FIELDS FIELD mode NEST collateral clause{5D,551a} : ++ NEST FIELDS FIELD portrait{f} PACK. ++f) NEST FIELDS FIELD portrait{3,f} : ++ NEST FIELDS portrait{f,g}, an also{94f} token, ++ NEST FIELD portrait{g}. ++g) NEST MODE field TAG portrait{f} : strong MODE NEST unit{32d}. ++ ++h) *structure display : ++ strong structured with FIELDS FIELD mode NEST collateral clause{e}. ++i) *row display : ++ strong ROWS of MODE NEST collateral clause{d}. ++j) *display : strong STOWED NEST collateral clause{d,e}. ++k) *vacuum : EMPTY PACK. ++ ++3.4 Choice clauses ++ ++3.4.1 Syntax ++ ++A) CHOICE :: choice using boolean ; CASE. ++B) CASE :: choice using intgral ; choice using UNITED. ++ ++a) SOID NEST1 CHOICE clause{5D,551a,A341h,A349a} : ++ CHOICE STYLE start{91a,-}, ++ SOID NEST1 chooser CHOICE STYLE clause{b}, ++ CHOICE STYLE finish{91e,-}. ++b) SOID NEST1 chooser choice using MODE STYLE clause{a,l} : ++ MODE NEST1 enquiry clause defining LAYER2{c,-}, ++ SOID NEST1 LAYER2 alternate choice using MODE STYLE clause{d}. ++c) MODE NEST1 enquiry clause defining new DECSETY2{b,35g} : ++ meek MODE NEST1 new DESETY2 series with DECSETY2{32b}. ++d) SOID NEST2 alternate CHOICE STYLE clause{b} : ++ SOID NEST2 in CHOICE STYLE clause{e} ; ++ where SOID balances SOID1 and SOID2{32e}, ++ SOID1 NEST2 in CHOICE STYLE clause{3}, ++ SOID2 NEST2 out CHOICE STYLE clause{l}. ++e) SOID NEST2 in CHOICE STYLE clause{d} : ++ CHOICE STYLE in{91b,-}, SOID NEST2 in part of CHOICE{f,g,h}. ++f) SOID NEST2 in part of choice using boolean{e} : ++ SOID NEST2 serial clause defining LAYER3{32a}. ++g) SOID NEST2 in part of choice using integral{e} : ++ SOID NEST2 joined portrait{33b}. ++h) SOID NEST2 in part of choice using UNITED{e,h} : ++ SOID NEST2 case part of choice using UNITED{i} ; ++ where SOID balances SOID1 and SOID2{32e}, ++ SOID1 NEST2 case part of choice using UNITED{i}, ++ and also{94f} token, ++ SOID2 NEST2 in part of choice using UNITED{h}. ++i) SOID NEST2 case part of choice using UNITED{h} : ++ MOID NEST2 LAYER3 specification defining LAYER3{jk,-}, ++ where MOID unites to UNITED{64b}, ++ SOID NEST2 LAYER3 unit{32d}. ++j) MODE NEST3 specification defining new MODE TAG3{i} : ++ NEST3 declarative defining new MODE TAG3{541e} brief pack, ++ colon{94f} token. ++k) MOID NEST3 specification defining new EMPTY{i} : ++ formal MOID NEST3 declarer{46b} brief pack, colon{94f} token. ++l) SOID NEST2 out CHOICE STYLE clause{d} : ++ CHOICE STYLE out{91d,-}, ++ SOID NEST2 serial lause defining LAYER3{32a} ; ++ CHOICE STYLE again{91c,-}, ++ SOID NEST2 chooser CHOICE2 STYLE clause{b}, ++ where CHOICE2 may follow CHOICE{m}. ++m) WHETHER choice using MODE2 may follow choice using MODE1{l} : ++ where (MODE1) is (MOOD), WHETHER (MODE2) is (MODE1) ; ++ where (MODE1) begins with (union of), ++ WHETHER (MODE2) begins with (union of). ++ ++n) *SOME choice clause : SOME CHOICE clause{a}. ++o) *SOME conditional clause : SOME choice using boolean clause{a}. ++p) *SOME case clause : SOME choice using integral clause{a}. ++q) *SOME conformity clause : SOME choice using UNITED clause{a}. ++ ++3.5 Loop clauses ++ ++3.5.1 Syntax ++ ++A) FROBYT :: from ; by ; to. ++ ++a) strong void NEST1 loop clause{5D,551a} : ++ NEST1 STYLE for part defining new integral TAG2{b}, ++ NEST1 STYLE intervals{c}, ++ NEST1 STYLE repeating part with integral TAG2{e}. ++b) NEST1 STYLE for part defining new integral TAG2{a} : ++ STYLE for{94g,-} token, ++ integral NEST1 new integral TAG2 defining identifier ++ with TAG2{48a} ; ++ where (TAG2) is (letter aleph), EMPTY. ++c) NEST1 STYLE intervals{a} : ++ NEST1 STYLE from part{d} option, ++ NEST1 STYLE by part{d} option, ++ NEST1 STYLE to part{d} option. ++d) NEST1 STYLE FROBYT part{c} : ++ STYLE FROBYT{94g,-} token, meek integral NEST1 unit{32d}. ++e) NEST1 STYLE repeating part with DEC2{a} : ++ NEST1 new DEC2 STYLE while do part{f} ; ++ NEST1 new DEC2 STYLE do part{h}. ++f) NEST2 STYLE while do part{e} : ++ NEST2 STYLE while part defining LAYER3{g}, ++ NEST2 LAYER3 STYLE do part{h}. ++g) NEST2 STYLE while part defining LAYER3{f} : ++ STYLE while{94g,-} token, ++ boolean NEST2 enquiry clause defining LAYER3{34c,-}. ++h) NEST3 STYLE do part{3,f} : ++ STYLE do{94g,-} token, ++ strong void NEST3 serial clause defining LAYER4{32a}, ++ STYLE od{94g,-} token. ++ ++3.6 Access clauses ++ ++{ Extensions: ++ [MR] GMR } ++ ++{ Access clauses contain a controlled-clause, which is an ++ enclosed-clause. } ++ ++3.6.1 Syntax ++ ++a) SOID NEST access clause{5D,551a,A341h,A349a} : ++ NEST revelation publishing EMPTY defining LAYER{b}, ++ SOID NEST LAYER ENCLOSED clause{a,31a,33a,c,d,e,34a,35a,-}. ++b) NEST revelation publishing REVSETY ++ defining new DECSETY INKSETY{a,49c} : ++ access{94d} token, ++ NEST joined module call publishing REVSETY revealing REVS{c}, ++ where DECSETY INKS revealed by REVS{e,f} ++ and NEST filters INKSETY out of INKS{h}. ++c) NEST joined module call publishing REVSETY revealing RES{b,c} : ++ NEST moule call publishing REVSETY revealing REVS{d,-} ; ++ where (REVSETY) is (REVSETY1 REVSETY2) ++ an (REVS) is (REVS1 REVS2), ++ NEST module call publishing REVSETY1 revealing REVS1{d,-}, ++ and also{94f} token, ++ NEST joined module call publishing REVSETY2 revealing REVS2{c}. ++d) NEST module call publishing REVSETY revealing REVS{c} : ++ where (REVSETY) is (EMPTY), ++ module REVS NEST applied module indication with TAB{48b} ; ++ where (REVSETY) is (REVS), ++ public{94d} token, ++ module REVS NEST applied module indication with TAB{48b}. ++e) WHETHER DECSETY1 DECSETY2 INKS1 INKSETY2 revealed by ++ TAU reveals DECSETY1 INKS1 REVSETY3 ++ TAU reveals DECSETY1 INKS1 REVSETY4{b,e,f} : ++ WHETHER DECSETY DECSETY2 INKS1 INKSETY2 revealed by ++ TAU reveals DECSETY1 INKS1 REVSETY3 REVSETY4{e,f}. ++f) WHETHER DECSETY1 DECSETY2 INKS1 INKSETY2 revealed by ++ TAU reveals DECSETY1 INKS1 REVSETY2{b,e,f} : ++ WHETHER DECSETY2 INKSETY2 revealed by REVSETY2 ++ and DECSETY1 independent DECSETY2{71a,b,c}. ++g) WHETHER EMPTY revealed by EmPTY{e,f} : WHETHER true. ++h) WHETHER NEST filters INKSETY1 out of INKSETY INK{b} : ++ unless INK ientified in NEST{72a}, ++ WHETHER (INKSETY) is (INKSETY2 INK) ++ and NEST INK filers INKSETY2 out of INKSETY{h,i} ; ++ where INK identified in NEST{72a}, ++ WHETHER NEST filters INKSETY1 out of INKSETY{h,i}. ++i) WHETHER NEST filters EMPTY out of EMPTY{h} : WHETHER true. ++ ++{ Examples: ++ a) ACCESS A, B (gets (f, a); puts (a)) ++ b) ACCESS A, B ++ c) A, B ++ d) A ++ PUB B } ++ ++{ In rule b, the 'invoke TAU's enveloped by 'INKS' represent those ++ modules which might need to be invoked at any module-call whose ++ applied-module-indication identified a particular ++ defining-module-indication, whereas those enveloped by 'INKSETY' ++ represent only those which need invocation in the particular ++ context, the remainder having already being elaborated, as can be ++ determined statically from the 'NEST'. The presence of 'INKSETY' in ++ the nest of all descendent constructs of the access-clause ensures ++ that all modules now invoked will never be invoked again within ++ those descendents. } ++ ++{ Rule f ensures the independence of declarations revealed by one ++ revelation; thus ++ ++ MODULE A = DEF PUB REAL x FED, B = DEF PUB REAL x FED; ++ ACCESS A, B (x) ++ ++ is not produced. However, rule e allows a given declaration to be ++ revealed by two public accesses of the same module, as in ++ ++ MODULE A = DEF PUB REAL x FED; ++ MODULE B = ACCESS PUB A DEF REAL y FED, ++ C = ACCESS PUB A DEF REAL z FED; ++ ACCESS B C (x + y + z) ++ ++ in which the module-definitions for both B and C reveal x, by virtue ++ of the PUB A in their constituent revelations. } ++ ++{ Note that a particular-program may now consist of a ++ joined-label-definition followed by an access-clause. The ++ defining-module- indications identified thereby would be in the ++ library-prelude or the user-prelude. } ++ ++3.7 Unsafe clauses ++ ++{ Extensions: [US] } ++ ++{ Unsafe clauses contain a controlled-clause, which is an enclosed-clause. } ++ ++3.7.1 Syntax ++ ++a) SOID NEST unsafe clause : ++ unsafe{94f} token, SOID NEST ENCLOSED clause{a,31a,33a,c,d,e,34a,35a,-}. ++ ++{ Examples: ++ a) UNSAFE (ptr := dst) } ++ ++4 Declarations, declarers and indicators ++ ++4.1 Declarations ++ ++4.1.1 Syntax ++ ++{ Extensions: ++ [MR] module ++ "declaration with DECSETY without DECSETY1" } ++ ++A) COMMON :: mode ; priority ; MODINE identity ; ++ reference to MODINE variable ; MODINE operation ; ++ PARAMETER ; MODE FIELDS ; module. ++ { MODINE :: MODE ; routine. } ++ ++a) NEST declaration of DECS{a,32b} : ++ NEST COMMON declaration of DECS{42a,43a,44a,e,45a,-} ; ++ where (DECS) is (DECS1 DECS2), ++ NEST COMMON declaration of DECS1{42a,43a,44a,e,45a,-}, ++ and also{94f} token, NEST declaration of DECS2{a}. ++b) NEST COMMON joined definition of PROPS PROP{b,42a,43a,44a,e,45a,46e,541e} : ++ NEST COMON joined definition of PROPS{b,c}, ++ and also{94f} token, ++ NEST COMMON joined definition of PROP{c}. ++c) NEST COMMON joined definition of PROP{b,42a,43a,44a,e,45a,46e,541e} : ++ NEST COMMON definition of PROP{42b,43b,44c,f,45c,46f,541f,-}. ++ ++d) *definition of PROP : ++ NEST COMMON definition of PROP{42b,43b,44c,f,45c,46f,541f} ; ++ NEST label definition of PROP{32}. ++e) NEST declaration with DECSETY without DECSETY1{49e} : ++ where (DECSETY without DECSETY1) is (EMPTY without DECS1), ++ NEST COMMON declaration of DECS1{42a,43a,44a,e,45a,49a,-} ; ++ where (DECSETY without DECSETY1) is (DECS without EMPTY), ++ public{94d} token, ++ NEST COMMON declaration of DECS{42a,43a,44a,e,45a,49a,-} ; ++ where (DECSETY without DECSETY1) is ++ (DECSETY without DECS1 DECSETY2), ++ NEST COMMON declaration of DECS1{42a,43a,44a,e,45a,49a,-}, ++ and also{94f} token, ++ NEST declaration with DECSETY without DECSETY2{e} ; ++ where (DECSETY without DECSETY1) is ++ (DECS DECSETY3 without DECSETY1), ++ public{94d} token, ++ NEST COMMON declaration of DECS{42a,43a,44a,e,45a,49a,-}, ++ and also{94f} token, ++ NEST declaration with DECSETY3 without DECSETY1{e}. ++ ++{ Rule e determines how a "NEST declaration with DECSETY without ++ DECSETY1" results into two groups of declarations. The declarations ++ in 'DECSETY' are public and syntactically preceded by PUB. The ++ declarations in 'DECSETY1 are non-public and are not marked by ++ PUB. } ++ ++4.2 Mode declarations ++ ++4.2.1 Syntax ++ ++a) NEST mode declaration of DECS{41a} : ++ mode{94d} token, NEST mode joined definition of DECS{41b,c}. ++b) NEST mode definition of MOID TALLY TAB{41c} : ++ where (TAB) is (bold TAG) or (NEST) is (new LAYER), ++ MOID TALLY NEST defining mode indication with TAB{48a}, ++ is defined as{94d} token, ++ actual MOI TALLY NEST declarer{c}. ++c) actual MOID TALLY1 NEST declarer{b} : ++ where (TALLY1) is (i), ++ actual MOID NEST declarator{46c,d,g,h,o,s,-} ; ++ where (TALLY1) is (TALLY2 i), ++ MOID TALLY2 NEST applied mode indication with TAB2{48b}. ++ ++{ The use of TALLY excludes circular chains of mode-definitions such ++ as `mode a = b, b = a'. } ++ ++4.3 Priority declarations ++ ++4.3.1 Syntax ++ ++a) NEST priority declaration of DECS{41a} : ++ priority{94d} token, NEST priority joined definition of DECS{41b,c}. ++b) NEST priority definition of priority PRIO TAD{41c} : ++ priority PRIO NEST definining operator with TAD{48a}, ++ is defined as{94d} token, DIGIT{94b} token, ++ where DIGIT counts DIGIT{94b} token, ++ where DIGIT counts PRIO{c,d}. ++ {DIGIT :: digit zero ; digit one ; digit two ; digit three ; ++ digit four ; digit five ; digit six ; digit seven ; ++ digit eight ; digit nine.} ++c) WHETHER DIGIT1 counts PRIO i{b,c} : ++ WHETHER DIGIT2 counts PRIO{c,d}, ++ where (digit one igit two digit three digit four ++ digit five digit six digit seven digit eight digit nine) ++ contains (DIGIT2 DIGIT1). ++d) WHETHER digit one counts i{b,c} : WHETHER true. ++ ++4.4 Identifier declarations ++ ++4.4.1 Syntax ++ ++A) MODINE :: MODE ; routine. ++B) LEAP :: local ; heap ; primal. ++ ++a) NEST MODINE identity declaration of DECS{41a} : ++ formal MODINE NEST declarer{b,46b}, ++ NEST MODINE identity joined definition of DECS{41b,c}. ++b) VICTAL routine NEST declarer{a,523b} : procedure{94d} token. ++c) NEST MODINE identity definition of MODE TAG{41c} : ++ MODE NEST defining identifier with TAG{48a}, ++ is defined as{94d} token, MODE NEST source for MODINE{d}. ++d) MODE NEST source for MODINE{c,f,45c} : ++ where (MODINE) is (MODE), MODE NEST source{521c} ; ++ where (MODINE) is (routine), MODE NEST routine text{541a,b,-}. ++e) NEST reference to MODINE variable declaration of DECS{41a} : ++ reference to MODINE NEST LEAP sample generator{523b}, ++ NEST reference to MODINE variable joined definition of DECS{41b,c}. ++f) NEST reference to MODINE variable definition ++ of reference to MODE TAG{41c} : ++ reference to MODE NEST defining identifier with TAG{48a}, ++ becomes{94c} token, MODE NEST soure for MODINE{d} ; ++ where (MODINE) is (MODE), ++ reference to MODE NEST defining identifier with TAG{48a}. ++ ++g) *identifier declaration : ++ NEST MODINE identity declaration of DECS{a} ; ++ NEST reference to MODINE variable declaration of DECS{e}. ++ ++4.5 Operation declarations ++ ++4.5.1 Syntax ++ ++A) PRAM :: DUO ; MONO. ++B) TAO :: TAD ; TAM. ++ ++a) NEST MODINE operation delarations of DECS{41a} : ++ operator{94d} token, formal MODINE NEST plan{b,46p,-}, ++ NEST MODINE operation joined definition of DECS{41b,c}. ++b) formal routine NEST plan{a} : EMPTY. ++c) NEST MODINE operation definition of PRAM TAO{41c} : ++ PRAM NEST defining operator with TAO{48a}, ++ is defined as{94d} token, PRAM NEST source for MODINE{44d}. ++ ++4.6 Declarers ++ ++4.6.1 Syntax ++ ++A) VICTAL :: VIRACT ; formal. ++B) VIRACT :: virtual ; actual. ++C) MOIDS :: MOID ; MOIDS MOID. ++ ++a) VIRACT MOID NEST declarer{c,e,g,h,523a,b} : ++ VIRACT MOID NEST declarator{c,d,g,h,o,s,-} ; ++ MOID TALLY NEST applied mode indication with TAB{48b,-}. ++b) formal MOID NEST declarer{e,h,p,r,u,34k,44a,541a,b,e,551a} : ++ where MOID deflexes to MOID{47a,b,c,-}, ++ formal MOID NEST declarator{c,d,h,o,s,-} ; ++ MOID1 TALLY NEST applied mode indication with TAB{48b,-}, ++ where MOID1 deflexes to MOID{47a,b,c,-}. ++c) VICTAL reference to MODE NEST declarator{a,b,42c} : ++ reference to{94d} token, virtual MODE NEST declarer{a}. ++d) VICTAL structured with FIELDS mode NEST declarator{a,b,42c} : ++ structure{94d} token, ++ VICTAL FIELDS NEST portrayer of FIELDS{e} brief pack. ++e) VICTAL FIELDS NEST portrayer of FIELDS1{d,e} : ++ VICTAL MODE NEST declarer{a,b}, ++ NEST MODE FIELDS joined definition of FIELDS1{41b,c} ; ++ where (FIELDS1) is (FIELDS2 FIELDS3), ++ VICTAL MODE NEST declarer{a,b}, ++ NEST MODE FIELDS joined definition of FIELDS2{41b,c}, ++ and also{94f} token, ++ VICTAL FIELDS NEST portrayer of FIELDS3{e}. ++f) NEST MODE FIELDS definition of MODE field TAG{41c} : ++ MODE field FIELDS defining field selector with TAG{48c}. ++g) VIRACT flexible ROWS of MODE NEST declarator{a,42c} : ++ flexible{94d} token, VIRACT ROWS of MODE NEST declarer{a}. ++h) VICTAL ROWS of MODE NEST declarator{a,b,42c} : ++ VICTAL ROWS NEST rower{i,j,k,l} STYLE bracket, ++ VICTAL MODE NEST declarer{a,b,}. ++i) VICTAL row ROWS NEST rower{h,i} : ++ VICTAL row NEST rower{j,k,l}, and also{94f} token, ++ VICTAL ROWS NEST rower{i,j,k,l}. ++j) actual row NEST rower{h,i} : ++ NEST lower bound{m}, up to{94f} token, NEST upper bound{n} ; ++ NEST upper bound{n}. ++k) virtual row NEST rower{h,i} : up to{94f} token option. ++l) formal row NEST rower{h,i} : up to{94f} token option. ++m) NEST lower bound{j,532f,g} : meek integral NEST unit{32d}. ++n) NEST upper bound{j,532f} : meek integral NEST unit{32d}. ++o) VICTAL PROCEDURE NEST declarator{a,b,42c} : ++ procedure{94d} token, formal PROCEDURE NEST plan{p}. ++p) formal procedure PARAMETY yieling MOID NEST plan{o,45a} : ++ where (PARAMETY) is (EMPTY), formal MOID NEST declarer{b} ; ++ PARAMETERS NEST joined declarer{q,r} brief pack, ++ formal MOID NEST declarer{b}. ++q) PARAMETERS PARAMETER NEST joined declarer{p,q} : ++ PARAMETERS NEST joined declarer{q,r}, and also{94f} token, ++ PARAMETER NEST joined declarer{r}. ++r) MODE parameter NEST joined declarer{p,q} : ++ formal MODE NEST declarer{b}. ++s) VICTAL union of MOODS1 MOOD1 mode NEST declarator{a,b,42c} : ++ unless EMPTY with MOODS1 MOOD1 incestuous{47f}, ++ union of{94d} token, ++ MOIDS NEST joined declarer{t,u} brief pack, ++ where MOIDS ravels to MOODS2{47g} ++ and safe MOODS1 MOOD1 subset of safe MOODS2{73l} ++ and safe MOODS2 subset of safe MOODS1 MOOD1{731,m}. ++t) MOIDS MOID NEST joined declarer{s,t} : ++ MOIDS NEST joined declarer{t,u}, an also{94f} token, ++ MOID NEST joined declarer{u}. ++u) MOID NEST joined declarer{s,t} : formal MOID NEST declarer{b}. ++ ++4.7 Relationships between modes ++ ++4.7.1 Syntax ++ ++A) NONSTOWED :: PLAIN ; REF to MODE ; PROCEDURE ; UNITED ; void. ++B) MOODSETY :: MOODS ; EMPTY. ++C) MOIDSETY :: MOIDS ; EMPTY. ++ ++a) WHETHER NONSTOWED deflexes to NONSTOWED{b,e,46b,521c,62a,71n} : ++ WHETHER true. ++b) WHETHER FLEXETY ROWS of MODE1 deflexes to ROWS of MODE2{b,e,46b,521c,62a,71n} : ++ WHETHER MODE1 deflexes to MODE2{a,b,c,-}. ++c) WHETHER structured with FIELDS1 mode deflexes to ++ structured with FIELDS2 mode{b,e,46b,521c,62a,71n} : ++ WHETHER FIELDS1 deflexes to FIELDS2{d,e,-}. ++d) WHETHER FIELDS1 FIELD1 deflexes to FIELDS2 FIELD2{c,d} : ++ WHETHER FIELDS1 deflexes to FIELDS2{d,e,-} ++ and FIELD1 deflexes to FIELD2{e,-}. ++e) WHETHER MODE1 field TAG deflexes to MODE2 field TAG{c,d} : ++ WHETHER MODE1 deflexes to MODE2{a,b,c,-}. ++ ++f) WHETHER MOODSETY1 with MOODSETY2 inestuous{f,46s} : ++ where (MOODSETY2) is (MOOD MOODSETY3), ++ WHETHER MOODSETY1 MOOD with MOODSETY3 incestuous{f} ++ or MOOD is firm union of MOODSETY1 MOODSETY3 mode{71m} ; ++ where (MOODSETY2) is (EMPTY), WHETHER false. ++ ++g) WHETHER MOIDS ravels to MOODS{g,46s} : ++ where (MOIDS) is (MOODS), WHETHER true ; ++ where (MOIDS) is ++ (MOODSETY union of MOODS1 mode MOIDSETY), ++ WHETHER MOODSETY MOODS1 MOIDSETY ravels to MOODS{g}. ++ ++{ The hyperrules from a) to e) implement a predicate deflexes-to that ++ determines whether a given mode deflexes to another mode. Any ++ non-stowed mode deflexes to any other non-stowed mode. A row mode ++ deflexes to another row mode if the ranks of the modes are the same ++ and the mode of the former's elements deflexes to the mode of the ++ later's elements. A structured mode deflexes to another structured ++ mode if they have the same number of fields with the same tags and ++ their modes deflex. } ++ ++{ The hyperrule f) implements a predicate that determines whether two ++ provided sets of moods are incestuous, i.e. whether they contain ++ modes which are firmly related. } ++ ++{ The hyperrule g) determines whether a set of moods and ++ united modes may be ravelled. } ++ ++4.8 Indicators and field selectors ++ ++4.8.1 Syntax ++ ++{ Extensions: ++ [MR] INK, "module indication", "module REVS", "invoked", TAU } ++ ++A) INDICATOR :: identifier ; mode indication ; operator ; ++ module indication. ++B) DEFIED :: defining ; applied. ++C) PROPSETY :: PROPS ; EMPTY. ++D) PROPS :: PROP ; PROPS PROP. ++E) PROP :: DEC ; LAB ; FIELD ; INK. ++F) QUALITY :: MODE ; MOID TALLY ; DYADIC ; label ; MODE field ; ++ module REVS ; invoked. ++G) TAX :: TAG ; TAB ; TAD ; TAM ; TAU. ++ ++a) QUALITY NEST new PROPSETY1 QUALITY TAX PROPSETY2 ++ defining INDICATOR with TAX{32c,35b,42b,43b,44c,f,45c,541f} : ++ where QUALITY TAX independent PROPSETY1 PROPSETY2{71a,b,c}, ++ TAX{942A,D,F,K} token. ++b) QUALITY NEST applied INDICATOR with TAX{42c,46a,b,5D,542a,b,544a} : ++ where QUALITY TAX identified in NEST{72a}, ++ TAX{942A,D,F,K} token. ++c) MODE field PROPSETY1 MODE field TAG PROPSETY2 defining ++ field selector with TAG{46f} : ++ where MODE field TAG independent PROPSETY1 PrOPSETY2{71a,b,c}, ++ TAX{942A} token. ++d) MODE field FIELDS applied field selector with TAG{531a} : ++ where MODE field TAG resides in FIELDS{72b,c,-}, ++ TAG{942A} token. ++ ++e) *QUALITY NEST DEFIED indicator with TAX : ++ QUALITY NEST DEFIED INDICATOR with TAX{a,b}. ++f) *MODE DEFIED field seletor with TAG : ++ MODE field FIELDS DEFIED field selector with TAG{c,d}. ++ ++{ MODs are introduced into a nest by module-declarations. ++ INKs are introduced into a nest by module-calls. } ++ ++{ Modules are ascribed to module-indications by means of ++ module-declarations. } ++ ++4.9 Module declarations ++ ++4.9.1 Syntax ++ ++a) NEST1 module declaration of MODS{41a,e} : ++ module{94d} token, ++ NEST1 module joined definition of MODS{41b,c}. ++b) NEST1 module definition of module RESETY REV TAB{41c} : ++ where (REV) is (TAU reveals DECSETY invoked TAU) ++ and (TAB) is (bold TAG), ++ where (NEST1) is (NOTION1 invoked TAU NOTETY2), ++ unless (NOTION1 NOTETY2) contains (invoked TAU), ++ module REVSETY REV NEST1 defining module indication with TAB{48a}, ++ is defined as{94d} token, ++ NEST1 module text publishing REVSETY REV defining LAYER{c,-}. ++c) NEST1 module text ++ publishing REVSETY TAU reveals DECSETY INKSETY INK ++ defining new DECSETY1 DECSETY INK{b} : ++ where (INKSETY) is (EMPTY) and (REVSETY) is (EMPTY), ++ def{94d} token, ++ NEST1 new new DECSETY1 DECSETY INK module series ++ with DECSETY without DECSETY1{d}, ++ fed{94d} token ; ++ NEST1 revelation publishing REVSETY defining LAYER{36b}, ++ def{94d} token, ++ NEST1 LAYER new DECSETY1 DECSETY INK module series ++ with DECSETY without DECSETY1{d}, ++ fed{94d} token, ++ where (LAYER) is (new DECSETY2 INKSETY). ++d) NEST3 module series with DECSETY without DECSETY1{c} : ++ NEST3 module prelude with DECSETY without DECSETY1{e}, ++ NEST3 module postlude{f} option. ++e) NEST3 module prelude with DECSETY1 without DECSETY2{d,e} : ++ strong void NEST3 unit{32d}, go on{94f} token, ++ NEST3 module prelude with DECSETY1 without DECSETY2{e} ; ++ where (DECSETY1 without DECSETY2) is ++ (DECSETY3 DECSETY4 without DECSETY5 DECSETY6>, ++ NEST3 declaration with DECSETY3 without DECSETY5{41e}, ++ go on{94f} token, ++ NEST3 module prelude with DECSETY4 without DECSETY6{e} ; ++ where (DECSETY1 without DECSETY2) is (EMPTY without EMPTY), ++ strong void NEST3 unit{32d} ; ++ NEST3 declaration with DECSETY1 without DECSETY2{41e}. ++f) NEST3 module postlude{d} : ++ postlude{94d} token, strong void NEST3 series with EMPTY{32b}. ++ ++g) *module text : ++ NEST module text publishing REVS defining LAYER{c}. ++ ++{ Examples: ++ a) MODULE A = DEF STRING s; gets (s); ++ PUB STRING t = "file"+s, PUB REAL a FED, ++ B = ACCESS A DEF PUB INT fd; ++ fopen (fd, file o rdonly) ++ POSTLUDE close (f) FED ++ ++ b) A = DEF STRING s; gets (s); ++ PUB STRING t = "file"+s, PUB REAL a FED ++ ++ B = ACCESS A DEF PUB FILE f; ++ fopen (fd, file o rdonly) ++ POSTLUDE close (f) FED ++ ++ c) DEF STRING s; gets (s); ++ PUB STRING t = "file"+s, PUB REAL a FED ++ ++ ACCESS A DEF PUB FILE f; ++ fopen (fd, file o rdonly) ++ POSTLUDE close (f) FED ++ ++ d) STRING s; gets (s); PUB STRING t = "file"+s, PUB real a ++ ++ PUB FILE f; fopen (fd, file o rdonly) POSTLUDE close (f) ++ ++ e) STRING s; gets (s); PUB STRING t = "file"+s, PUB real a ++ ++ PUB FILE f; fopen (fd, file o rdonly) ++ ++ f) POSTLUDE close (f) } ++ ++{ Note that the EMPTY (for PROPSETY) in rule f enforces that a module ++ postlude cannot contain declarations, labels or module accesses. ++ Only units are allowed. } ++ ++{ Rule b ensures that a unique 'TAU' is associated with each ++ module-text accessible from any given point in the program. This is ++ used to ensure that an invoke ATU' can be identified in the nest of ++ all descendent constructs of any access-clause or module-text which ++ invokes that module-text. ++ ++ In general, a module-text-publishing-REVS-defining-LAYER T makes ++ 'LAYER' visible within itself, and makes the properties revealed by ++ 'REVS' visible wherever T is accessed. 'LAYER' includes both a ++ 'DECSETY' corresponding to its public declarations and an INK' which ++ links T to its unique associated 'TAU' and signifies in the nest ++ that T is now known to be invoked. REVS' always reveals 'DECSETY ++ INKSETY INK' (but not 'DECSETY1'), where INKSETY' signifies the ++ invocation of any other modules accessed by T. 'REVS' may also ++ reveal the publications of the other modules accessed by T if their ++ module-calls within T contained a public-token. } ++ ++5 Units ++ ++5.1 Syntax ++ ++{ Extensions: ++ [MR] formal hole, virtual hole } ++ ++A) UNIT{32d} :: ++ assignation{521a} coercee ; identity relation{522a} coercee ; ++ routine text{541a,b} coercee ; jump{544a} ; skip{552a} ; ++ and function{57a} ; or function{57b} ; ++ formal hole{561b} ; virtual hole{561a} ; ++ TERTIARY{B}. ++B) TERTIARY{A,521b,522a} :: ++ ADIC formula{542a,b} coercee ; nihil ; ++ SECONDARY{C}. ++C) SECONDARY{B,531a,542c} :: ++ LEAP generator{523a} coercee ; selection{531a} coercee ; ++ PRIMARY{D}. ++D) PRIMARY{C,532a,543a} :: ++ slice{532a} coercee ; call{543a} coercee ; ++ format text{A341a} coercee ; ++ applied identifier with TAG{48b} coercee ; ++ ENCLOSED clause{31a,33a,c,d,e,34a,35a}. ++ ++a) *SOME hip : ++ SOME jump{544a} : SOME skip{552a} ; SOME nihil{524a}. ++ ++5.2 Units associated with names ++ ++5.2.1 Assignations ++ ++5.2.1.1 Syntax ++ ++a) REF to MODE NEST assignation{5A} : ++ REF to MODE NEST destination{b}, becomes{94c} token, ++ MODE NEST source{c}. ++b) REF to MODE NEST destination{a} : ++ soft REF to MODE NEST TERTIARY{5B}. ++c) MODE1 NEST source{a,44d} : ++ strong MODE2 NEST unit{32d}, ++ where MODE1 deflexes to MODE2{47a,b,c,-}. ++ ++5.2.2 Identity relations ++ ++5.2.2.1 Syntax ++ ++a) boolean NEST identity relation{5A} : ++ where soft balances SORT1 and SORT2{32f}, ++ SORT1 reference to MODE NEST TERTIARY1{5B}, ++ identity relator{b}, ++ SORT2 reference to MODE NEST TERTIARY2{5B}. ++b) identity relator{a} : is{94f} token ; is not{94f} token. ++ ++5.2.3 Generators ++ ++5.2.3.1 Syntax ++ ++a) reference to MODE NEST LEAP generator{5C} : ++ LEAP{94d,-} token, actual MODE NEST declarer{46a}. ++b) reference to MODINE NEST LEAP sample generator{44e} : ++ LEAP{94d,-} token, actual MODINE NEST declarer{44b,46a} ; ++ where (LEAP) is (local), actual MODINE NEST declarer{44b,46a}. ++ ++5.2.4 Nihils ++ ++5.2.4.1 Syntax ++ ++a) strong reference to MODE NEST nihil{5B} : ++ nil{94f} token. ++ ++5.3 Units associated with stowed values ++ ++5.3.1 Selections ++ ++5.3.1.1 Syntax ++ ++A) REFETY :: REF to ; EMPTY. ++B) REFLEXETY :: REF to ; REF to flexible ; EMPTY. ++ ++a) REFETY MODE1 NEST selection{5C} : ++ MODE1 field FIELDS applied field selector with TAG{48d}, ++ of{94f} token, weak REFLEXETY ROWS of structured with ++ FIELDS mode NEST SECONDARY{5C}, ++ where (REFETY) is derived from (REFLEXETY){b,c,-}. ++b) WHETHER (transient reference to) is derived from ++ (REF to flexible){a,532,66a} : ++ WHETHER true. ++c) WHETHER (REFETY) is derived from (REFETY){a,532a,66a} : ++ WHETHER true. ++ ++5.3.2 Slices ++ ++5.3.2.1 Syntax ++ ++A) ROWSETY :: ROWS ; EMPTY. ++ ++a) REFETY MODE1 NEST slice{5D} : ++ weak REFLEXETY ROWS1 of MODE1 NEST PRIMARY{5D}, ++ ROWS1 leaving EMPTY NEST indexer{b,c,-} STYLE bracket, ++ where (REFETY) is derived from (REFLEXETY){531b,c,-} ; ++ where (MODE1) is (ROWS2 of MODE2), ++ weak REFLEXETY ROWS1 of MODE2 NEST PRIMARY{5D}, ++ ROWS1 leaving ROWS2 NEST indexer{b,d,-} STYLE bracket, ++ where (REFETY) is derived from (REFLEXETY){531b,c,-}. ++b) row ROWS leaving ROWSETY1 ROWSETY2 NEST indexer{a,b} : ++ row leaing ROWSETY1 NEST indexer{c,d,-}, and also{94f} token, ++ ROWS leaving ROWSETY2 NEST indexer{b,c,d,-}. ++c) row leaving EMPTY NEST indexer{a,b} : NEST subscript{3}. ++d) row leaving row NEST indexer{a,b} : ++ NEST trimmer{f} ; NEST revised lower bound{g} option. ++e) NEST subscript{c} : meek integral NEST unit{32d}. ++f) NEST trimmer{d} : ++ NEST lower bound{46m} option, up to{94f} token, ++ NEST upper bound{46n} option, ++ NEST revised lower bound{g} option. ++g) NEST revised lower bound{d,f} : ++ at{94f} token, NEST lower bound{46m}. ++ ++h) *trimscript : ++ NEST subscript{e} ; NEST trimmer{f}; ++ NEST revised lower bound{g} option. ++i) *indexer : ++ ROWS leaving ROWSETY NEST indexer{b,c,d}. ++j) *boundscript : ++ NEST subscript{e} ; NEST lower bound{46m} ; ++ NEST upper bound{46n} ; NEST revised lowe bound{g}. ++ ++5.4 Units associated with routines ++ ++5.4.1 Routine texts ++ ++5.4.1.1 Syntax ++ ++a) procedure yielding MOID NEST1 routine text{44d,5A} : ++ formal MOID NEST1 declarer{46b}, routine{94f} token, ++ strong MOID NEST1 unit{32d}. ++b) procedure with PARAMETERS yielding ++ MOID NEST1 routine text{44d,5A} : ++ NEST1 new DECS2 declarative defining ++ new DECS2{e} brief pack, ++ where DECS2 like PARAMETERS{c,d,-}, ++ formal MOID NEST1 declarer{46b}, routine{94f} token, ++ strong MOID NEST1 new DECS2 unit{32d}. ++c) WHETHER DECS DEC like PARAMETERS PARAMETER{b,c} : ++ WHETHER DECS like PARAMETERS{c,d-} ++ and DEC like PARAMETER{d,-}. ++d) WHETHER MODE TAG like MODE parameters{b,c} : ++ WHETHER true. ++e) NEST2 declarative defining new DECS2{b,e,34j} : ++ formal MODE NEST2 declarer{46b}, ++ NEST2 MODE parameter joined definition of DECS2{41b,c} ; ++ where (DECS2) is (DECS3 DECS4), ++ formal MODE NEST2 declarer{46b}, ++ NEST2 MODE parameter joind definition of DECS3{41b,c}, ++ and also{94f} token, NEST2 declarative defining new DECS4{3}. ++f) NEST2 MODE parameter efinition of MODE TAG2{41c} : ++ MDOE NEST2 defining identifier with TAG2{48a}. ++ ++g) *formal MODE parameter : ++ NEST MODE parameter definition of MODE TAG{f}. ++ ++5.4.2 Formulas ++ ++5.4.2.1 Syntax ++ ++A) DYADIC :: priority PRIO. ++B) MONADIC :: priority iii iii iii i. ++C) ADIC :: DYADIC ; MONADIC. ++D) TALLETY :: TALLY ; EMPTY. ++ ++a) MOID NEST DYADIC formula{c,5B} : ++ MODE1 NEST DYADIC TALLETY operand{c,-}, ++ procedure with MODE1 parameter MODE2 parameter ++ yielding MOID NEST applied operator with TAD{48b}, ++ where DYADIC TAD identified in NEST{72a}, ++ MODE2 NEST DYADIC TALLY operand{c,-}. ++b) MOID NEST MONADIC formula{c,5B} : ++ procedure with MODE parameter yielding MOID ++ NEST applied operator ith TAM{48b}, ++ MODE NEST MONADIC operand{c}. ++c) MODE NEST ADIC operand{a,b} : ++ firm MODE NEST ADIC formula{a,b} coercee{61b} ; ++ where (ADIC) is (MONADIC), firm MODE NEST SECONDARY{5C}. ++ ++d) *MOID formula : MOID NEST ADIC formula{a,b}. ++e) *DUO dyadic operator with TAD : ++ DUO NEST DEFIED operator with TAD{48a,b}. ++f) *MONO monadic operator with TAM : ++ MONO NEST DEFIED operator with TAM{48a,b}. ++g) *MODE operand : MODE NEST ADIC operand{c}. ++ ++5.4.3 Calls ++ ++5.4.3.1 Syntax ++ ++a) MOID NEST call{5D} : ++ meek procedure with PARAMETERS yielding MOID NEST PRIMARY{5D}, ++ actual NEST PARAMETERS{b,c} brief pack. ++b) actual NEST PARAMETERS PARAMETER{a,b} : ++ actual NEST PARAMETERS{b,c}, and also{94f} token, ++ actual NEST PARAMETER{c}. ++c) actual NEST MODE parameter{a,b} : strong MODE NEST unit{32d}. ++ ++5.4.4 Jumps ++ ++5.4.4.1 Syntax ++ ++a) strong MOID NEST jump{5A} : ++ go to{b} option, ++ label NEST applied identifier with TAG{48b}. ++b) go to{a} : STYLE go to{94f,-} token ; ++ STYLE go{94f,-} token, STYLE to symbol{94g,-}. ++ ++5.5 Units associated with values of any mode ++ ++5.5.1 Casts ++ ++5.5.1.1 Syntax ++ ++a) MOID NEST cast{5D} : ++ formal MOID NEST declarer{46b}, ++ strong MOID NEST ENCLOSED clause{31a,33c,d,e,34a,35a,-}. ++ ++5.5.2 Skips ++ ++5.5.2.1 Syntax ++ ++a) strong MOID NEST skip{5A} : skip{94f} token. ++ ++5.6 Holes ++ ++5.6.1 Syntax ++ ++A) LANGUAGE :: algol sixty eight ; fortran ; c language ; cpp language. ++B) ALGOL68 :: algol sixty eight. ++C) FORTRAM :: fortran. ++D) CLANG :: c language. ++E) CPPLANG :: cpp language. ++F) DLANG :: d language. ++ ++a) strong MOID NEST virtual hole{5A} : ++ virtual nest symbol, strong MOID NEST closed clause{31a}. ++b) strong MOID NEST formal hole{5A} : ++ formal nest{94d} token, MOID LANGUAGE indication{e,f,-}, ++ hole indication{d}. ++c) MOID NEST actual hole{A6a} : ++ strong MOID NEST ENCLOSED clause{31a,33a,c,34a,35a,36a,-}. ++d) hole indication{b} : ++ character denotation{814a} ; row of character denotation{83a}. ++e) MOID ALGOL68 indication{b} : EMPTY. ++f) MOID FORTRAN indication{b} : bold letter f letter o letter r letter t ++ letter r letter a letter n token. ++g) MOID CLANG indication{b} : bold letter c letter l letter a letter n ++ letter g. ++e) MOID CPPLANG indication{b} : bold letter c letter p letter p letter l ++ letter a letter n letter g. ++f) MOID DLANG indication{b} : bold letter d letter l letter a letter n ++ letter g. ++ ++{ Since no representation is provided for the virtual-nest-symbol, the ++ user is unable to construct virtual-holes for himself, but a ++ mechanism is provided (10.6.2.a) for constructing them out of ++ formal- and actual-holes. } ++ ++5.7 Short-circuit logical functions ++ ++{ Extensions: [SC] } ++ ++{ The short-circuit logical functions are pseudo-operators providing ++ logical AND and OR functions with short-circuited elaboration. } ++ ++5.7.1 Syntax ++ ++a) boolean NEST and function{5A} : ++ meek boolean NEST TERTIARY1, andth{94c} token, meek boolean NEST TERTIARY2. ++ ++b) boolean NEST or function{5A} : ++ meek boolean NEST TERTIARY1, orel{94c} token, meek boolean NEST TERTIARY2. ++ ++c) *boolean NEST short circuit function : ++ boolean NEST and function{a} ; boolean NEST or function{b}. ++ ++{ Examples: ++ a) UPB str > 2 ANDTH str[3] /= "x" ++ b) error = 0 OREL (print ("error"); stop; SKIP) } ++ ++6 Coercion ++ ++6.1 Coercees ++ ++6.1.1 Syntax ++ ++A) STRONG{a,66a} :: ++ FIRM{B} ; widened to{65a,b,c,d} ; rowed to{66a} ; ++ voided for{67a,b}. ++B) FIRM{A,b} :: MEEK{C} ; united to{64a}. ++C) MEEK{B,c,d,64a,63a,64a,65a,b,c,d} :: ++ unchanged from{f} ; dereferenced to{62a} ; deprocedured to{63a}. ++D) SOFT{e,63b} :: ++ unchanged from{f} ; softly deprocedured to{63b}. ++E) FORM :: MORF ; COMORF. ++F) MORF :: ++ NEST selection ; NEST slice ; NEST routine text ; ++ NEST ADIC formula ; NEST call ; ++ NEST applied identifier with TAG. ++G) COMORF :: ++ NEST assignation ; NEST identity relation ; ++ NEST LEAP generator ; NEST cast ; NEST denoter ; ++ NEST format text. ++ ++a) strong MOID FORM coercee{5A,B,C,D,A341i} : ++ where (FORM) is (MORF), STRONG{A} MOID MORF ; ++ where (FORM) is (COMORF), STRONG{A} MOID COMORF, ++ unless (STRONG MOID) is (deprocedured to void). ++b) firm MODE FORM coercee{5A,B,C,D,542c} : FIRM{B} MODE FORM. ++c) meek MODE FORM coercee{5A,B,C,D} : MEEK{C} MOID FORM. ++d) weak REFETY STOWED FORM coercee{5A,B,C,D} : ++ MEEK{C} REFETY STOWED FORM, ++ unless (MEEK) is (dereferenced to) ++ and (REFETY) is (EMPTY). ++e) soft MODE FORM coercee{5A,B,C,D} : SOFT{D} MODE FORM. ++f) unchanged from MOID FORM{C,D,67a,b} : MOID FORM. ++ ++g) *SORT MOID coercee : SORT MOID FORM coercee{a,b,c,d,e}. ++h) *MOID coercend : MOID FORM. ++ ++{ Examples: ++ a) 3.14 (in x := 3.14) ++ b) 3.14 (in x + 3.14) ++ c) sin (in sin (x)) ++ d) x1 (in x1[2] := 3.14) ++ e) x (in x := 3.14) } ++ ++6.2 Dereferencing ++ ++6.2.1 Syntax ++ ++a) dereferenced to{61C} MODE1 FORM : ++ MEEK{61C} REF to MODE2 FORM, ++ where MODE2 deflexes to MODE1{47a,b,c,-}. ++ ++{ Examples: ++ a) x in (real (x)) } ++ ++6.3 Deproceduring ++ ++6.3.1 Syntax ++ ++a) deprocedured to{61C,67a} MOID FORM : ++ MEEK{61C} procedure yielding MOID FORM. ++b) softly deprocedured to{61D} MODE FORM : ++ SOFT{61D} procedure yielding MODE FORM. ++ ++{ Examples: ++ a) random (in real (random)) ++ b) x or y (in x or y := 3.14, given ++ PROC x or y = REF REAL: (random < .5 | x | y)) } ++ ++6.4 Uniting ++ ++6.4.1 Syntax ++ ++a) united to{64B} UNITED FORM : ++ MEEK{61C} MOID FORM, ++ where MOID unites to UNITED{b}. ++b) WHETHER MOID1 unites to MOID2{a,34i,71m} : ++ where MOID1 equivalent MOID2{73a}, WHETHER false ; ++ unless MOID1 equivalent MOID2{73a}, ++ WHETHER safe MOODS1 subset of safe MOODS2{73l,m,n}, ++ where (MOODS1) is (MOID1) ++ or (union of MOODS1 mode) is (MOID1), ++ where (MOODS2) is (MOIDS2) ++ or (union of MOODS2 mode) is (MOIDS2). ++ ++{ Examples: ++ a) x (in uir := x) ++ u (in UNION(CHAR,INT,VOID)(u), in a reach containing ++ UNION(INt,VOID) u := EMPTY) } ++ ++6.5 Widening ++ ++6.5.1 Syntax ++ ++A) BITS :: structured with ++ row of boolean field SITHETY letter aleph mode. ++B) BYTES :: structured with ++ row of character field SITHETY letter aleph mode. ++C) SITHETY :: LENGTH LENGTHETY ; SHORT SHORTHETY ; EMPTY. ++D) LENGTH :: letter l letter o letter n letter g. ++E) SHORT :: letter s letter h letter o letter r letter t. ++F) LENGTHETY :: LENGTH LENGTHETY ; EMPTY. ++G) SHORTHETY :: SHORT SHORTHETY ; EMPTY. ++ ++a) widened to{b,61A} SIZETY real FORM : ++ MEEK{61C} SIZETY integral FORM. ++b) widened to{61A} structured with SIZETY real field letter r letter e ++ SIZETY real field letter i letter m mode FORM : ++ MEEK{61C} SIZETY real FORM ; ++ widened to{a} SIZETY real FORM. ++c) widened to{61A} row of boolean FORM : MEEK{61C} BIT FORM. ++d) widened to{61A} row of character FORM : MEEK{61C} BYTES FORM. ++ ++{ Examples: ++ a) 1 (in x := 1) ++ b) 1.0 (in z := 1.0) ++ 1 (in z := 1) ++ c) 2r101 (in []BOOL(2r101)) ++ d) r (in []CHAR(r)) } ++ ++6.6 Rowing ++ ++6.6.1 Syntax ++ ++a) rowed to{61A} REFETY ROWS1 of MODE FORM : ++ where (ROWS1) is (row), ++ STRONG{61A} REFLEXETY MODE FORM, ++ where (REFETY) is derived from (REFLEXETY){531b,c,-} ; ++ where (ROWS1) is (row ROWS2), ++ STRONG{61A} REFLEXETY ROWS2 of MODE FORM, ++ where (REFETY) is derived from (REFLEXETY){531b,c,-}. ++ ++{ Examples: ++ a) 4.13 (in [1:1]REAL b1 := 4.13) ++ x1 (in [1:1,1:n]REAL b2 := x1) } ++ ++6.7 Voiding ++ ++6.7.1 Syntax ++ ++A) NONPROC :: PLAIN ; STOWED ; REF to NONPROC ; ++ procedure with PARAMETERS yielding MOID ; UNITED. ++ ++a) voided to{61A} void MORF : ++ deprocedured to{63a} NONPROC MORF ; ++ unchanged from{61f} NONPROC MORF. ++b) voided to{61A} void COMORF : ++ unchanged from{61f} MODE COMORF. ++ ++{ Examples: ++ a) random (in SKIP; random;) ++ next random (last random) ++ (in SKIP; next random (lat random);) ++ b) PROC VOID (pp) (in PROC PROC VOID pp = PROC VOID : (print (1); ++ VOID : print (2)); PROC VOID (pp);) } ++ ++8 Denotations ++ ++8.1 Plain denotations ++ ++8.1.0.1 Syntax ++ ++A) SIZE:: long ; short. ++B) *NUMERAL :: fixed point numeral ; variable point numeral ; ++ floating point numeral. ++ ++a) SIZE INTREAL denotation{a,80a} : ++ SIZE symbol{94d}, INTREAL, denotation{a,811a,812a}. ++ ++b) *plain denotation : ++ PLAIN denotation{a,811a,812a,813a,814a} ; void denotation{815a}. ++ ++{ Example: ++ a) LONG 0 } ++ ++8.1.1 Integral denotations ++ ++8.1.1.1 Syntax ++ ++a) integral denotation{80a,810a} : fixed point numeral{b}. ++b) fixed point numeral{a,812c,d,f,i,A341h} : digit cypher{c} sequence. ++c) digit cypher{b} : DIGIT symbol{94b}. ++ ++{ Examples: ++ a) 4096 ++ b) 4096 ++ c) 4 } ++ ++8.1.2 Real denotations ++ ++8.1.2.1 Syntax ++ ++a) real denotation{80a,810a} : ++ variable point numeral{b} ; floating point numeral{e}. ++b) variable point numeral{a,f} : ++ integral part{c} option, fractional part{d}. ++c) integral part{b} : fixed point numeral{811b}. ++d) fractional part{b} : point symbol{94b}, fixed point numeral{811b}. ++e) floating point numeral{a} : stagnant part{f}, exponent part{g}. ++f) stagnant part{e} : ++ fixed point numeral{811b} : variable point numeral{b}. ++g) exponent part{e} : ++ times ten to the power choice{h}, power of then{i}. ++h) times ten to the power choice{g} : ++ times ten to the power symbol{94b} ; letter e symbol{94a}. ++i) power of ten{g}: plusminus{j} option, fixed point numeral{811b}. ++j) plusminus{i} : plus symbol{94c} ; mius symbol{94c}. ++ ++{ Examples: ++ a) 0.00123 ++ 1.23e-3 ++ b) 0.00123 ++ c) 0 ++ d) .00123 ++ e) 1.23e-3 ++ f) 123 ++ 1.23 ++ g) E-3 ++ h) E ++ i) -3 ++ j) + ++ - } ++ ++8.1.3 Boolean denotations ++ ++8.1.3.1 Syntax ++ ++a) boolean denotation{80a} : true{94b} symbol ; false{94b} smbol. ++ ++{ Examples: ++ a) TRUE ++ FALSE } ++ ++8.1.4 Character denotations ++ ++8.1.4.1 Syntax ++ ++a) character denotation{80a} : ++ quote{94b} symbol, string item{b}, quote sybol{94b}. ++b) string item{a,83b} : ++ character glyph{c} ; quote image symbol{94f} ; other string item{d}. ++c) character glyph{b,92c} : ++ LETTER symbol{94a} ; DIGIT symbol{94b} ; ++ point sybol{94b} ; open symbol{94f} ; close symbol{94f} ; ++ comma symbol{94b} ; space symbol{94b} ; ++ plus symbol{94c} ; minus symbol{94c}. ++ ++{ A production rule may be added for the notion 'other string item' ++ each of whose alternatives is a symbol 1.1.3.1.f which is different ++ from any terminal production of 'character glyph' and which is not ++ 'quote symbol' } ++ ++{ Examples: ++ a) "a" ++ b) a ++ "" ++ ? ++ c) a 1 . ( ) , . space + - } ++ ++8.1.5 Void denotation ++ ++5.1.5.1 Syntax ++ ++a) void denotation{80a} : empty{94b} symbol. ++ ++{ Example: ++ a) EMPTY } ++ ++8.2 Bits denotations ++ ++8.2.1 Syntax ++ ++A) RADIX :: radix two ; radix four ; radix eight ; radix sixteen. ++ ++a) structured with row of boolean field ++ LENGTH LENGTHETY letter aleph mode denotation{a,80a} : ++ long{94d} symbol, structured with row of boolean field ++ LENGTHETY letter aleph mode denotation{a,c}. ++b) structured with row of boolean field ++ SHORT SHORTHTETY letter aleph mode denotation{b,80a} : ++ short{94d} symbol, ++ structured with row of boolean field SHORTHETY letter aleph mode denotation{b,c}. ++c) structured wih row of boolean field ++ letter aleph mode denotation{a,b,80a} : ++ RADIX{d,e,f,g}, letter r symbol{94a}, RADIX digit{h,i,j,k} sequence. ++d) radix two{c,A347b} : digit two{94b} symbol. ++e) radix four{c,A347b} : digit four{94b} symbol. ++f) radix eight{c,A347b} : digit eight{94b} symbol. ++g) radix sixteen{c,A347b} : digit one symbol{94b}, digit six symbol{94b}. ++h) radix two digit{c,i} : digit zero symbol{94b} ; digit one symbol{94b}. ++i) radix four digit{c,j} : ++ radix two digit{h} ; digit two symbol{94b} ; ++ digit three symbol{94b}. ++j) raidx eight digit{c,k} : ++ radix four digit{i} ; digit four symbol{94b} ; ++ digit five symbol{94b} ; digit six symbol{94b} ; ++ digit seven symbol{94b}. ++k) radix sixteen digit{c} : ++ radix eight digit{j} ; digit eight symbol{94b} ; ++ digit nine symbol{94b} ; letter a symbol{94a} ; ++ letter b symbol{94a} ; letter e symbol{94a} ; letter d symbol{94a} ; ++ letter e symbol{94a} ; letter f symbol{94a}. ++ ++l) *bits denotation : BITS denotation{a,b,c}. ++m) *radix digit : RADIX digit{h,i,j,k}. ++ ++{ Examples: ++ a) LONG 2r101 ++ b) SHORT 16rffff ++ c) 8r231 } ++ ++8.3 String denotations ++ ++8.3.1 Syntax ++ ++a) row of character denotation{80a} : ++ quote{94b} symbol, string{b} option, quote symbol{94b}. ++b) string{a} : string item{814b}, string item{814b} sequence. ++ ++c) *string denotation : row of charater denotation{a}. ++ ++{ Examples: ++ a) "abc" ++ b) abc } ++ ++9 Tokens and symbols ++ ++9.1 Tokens ++ ++{ Tokens are symbols possibly preceded by pragments. } ++ ++9.1.1 Syntax ++ ++a) CHOICE STYLE start{34a} : ++ where (CHOICE) is (choice using boolean), ++ STYLE if{94f,-} token ; ++ where (CHOICE) is (CASE), STYLE case{94f,-} token. ++b) CHOICE STYLE in{34e} : ++ where (CHOICE) is (choice using boolean), ++ STYLE then{94f,-} token ; ++ where (CHOICE) is (CASE), STYLE in{94f,-} token. ++c) CHOICE STYLE again{34l} : ++ where (CHOICE) is (choice using boolean), ++ STYLE else if{94f,-} token ; ++ where (CHOICE) is (CASE), STYLE ouse{94f,-} token. ++d) CHOICE STYLE out{34l} : ++ where (CHOICE) is (choice using boolean), ++ STYLE else{94f,-} token ; ++ where (CHOICE) is (CASE), STYLE out{94f,-} token. ++e) CHOICE STYLE finish{34a} : ++ whre (CHOICE) is (choice using boolean), ++ STYLE fi{94f,-} token ; ++ where (CHOICE) is (CASE), STYLE esac{94f,-} token. ++f) NOTION token : ++ pragment{92a} sequence option, ++ NOTION symbol{94a,b,c,d,e,f,g,h}. ++ ++g) *token : NOTION token{f}. ++h) *symbol : NOTION symbol{94a,b,c,d,e,f,g,h}. ++ ++9.2 Comments and pragmats ++ ++9.2.1 Syntax ++ ++{ Extensions: ++ [NC] nestable comments. } ++ ++A) PRAGMENT :: pragmat ; comment. ++ ++a) pragment{80a,91f,A341b,h,A348a,b,c,A349a,A34Ab} : PRAGMENT{b}. ++b) PRAGMENT{a} : ++ STYLE PRAGMENT symbol{94h,-}, ++ STYLE PRAGMENT item{c} sequence option, ++ STYLE PRAGMENT symbol{94h,-} ; ++ STYLE nestable comment{d}. ++c) STYLE PRAGMENT item{b} : ++ character glyph{814c} ; STYLE other PRAGMENT item{d}. ++d) STYLE nestable comment{b} : ++ STYLE comment begin symbol{94h,-}, ++ STYLE nestable comment contents{e} sequence, ++ STYLE comment end symbol{94h,-}. ++e) STYLE nestable comment contents{d} : ++ STYLE nestable comment item{c} sequence option, ++ STYLE nestable comment{d} option. ++f) STYLE nestable comment item{e} : ++ character glyph{814c} ; STYLE other nestable comment item{d}. ++ ++{ A production rule may be added for each notion designated by 'STYLE ++ other PRAGMENT item' each of whose alternatives is a symbol ++ different from any terminal production of 'character glyph', and ++ such that no terminal production of any 'STYLE other PRAGMENT item' ++ is the corresponding 'STYLE PRAGMENT symbol'. This allows to nest ++ different comment or pragmat for example. } ++ ++9.4 The reference language ++ ++9.4.1 Representations of symbols ++ ++{ Extensions: ++ [CS] andth symbol, orel symbol ++ [MR] access symbol, module symbol, def symbol, public symbol, ++ postlude symbol, formal nest symbol, egg symbol ++ [US] unsafe symbol } ++ ++{ This section of the Report doesn't describe syntax, but lists all ++ the different symbols along with their representation in the ++ reference language. We only include here symbols corresponding to ++ the GNU extensions implemented by this compiler. } ++ ++ symbol representation ++ ++c) andth symbol{57a} ANDTH ++ orel symbol{57b} OREL ++d) module symbol{49a} MODULE ++ access symbol{36b} ACCESS ++ def symbol{49c} DEF ++ fed symbol{49c} FED ++ public symbol{36d,41e} PUB ++ postlude symbol{49f} POSTLUDE ++ formal nest symbol{56b} NEST ++ egg symbol{A6a,c} EGG ++f) unsafe symbol{37a} UNSAFE ++h) bold comment begin symbol{92a} NOTE ++ bold comment end symbol{92a} ETON ++ brief comment begin symbol{92a} { ++ brief comment end symbol{92a} } ++ ++10.1.1 Syntax ++ ++{ Extensions: ++ [MR] user, user task } ++ ++A) EXTERNAL :: user. ++ ++f) NEST1 user task{d} : ++ NEST2 particular prelude with DECS{c}, ++ NEST2 user prelude with MODSETY{c}, ++ NEST2 particular program{g} PACK, go on{94f} token, ++ NEST2 particualr poslude{i}, ++ where (NEST2) is (NEST1 new DECS MODSETY STOP). ++ ++10.6 Packets ++ ++10.6.1 Syntax ++ ++a) MOID NEST new MODSETY ALGOL68 stuffing packet{A7a} : ++ egg{94d} token, hole indication{56d}, is defined as{94d} token, ++ MOID NEST new MODSETY actual hole{56c}. ++ ++{ b) Note that the rules for "MOID NEST new MODSETY LANGUAGE stuffing ++ packets" for other languages are not explicitly included in the ++ syntax. These rules conceptually transform all such ++ LANGUAGE-stuffing-packets into ALGOL68-stuffing-packets with the ++ same meaning. } ++ ++c) NEST new MODSETY1 MODS definition module packet of MODS{A7a} : ++ egg{94d} token, hole indication{56d}, is defined as{94d} token, ++ NEST new MODSETY1 MODS module declaration of MODS{49a}, ++ where MODS absent from NEST{e}. ++d) new LAYER1 new DECS MODSETY1 MODS STOP ++ prelude packet of MODS{A7a} : ++ new LAYER1 new DECS MODSETY1 MODS STOP ++ module declaration of MODS{4a}, ++ where MODS absent from new LAYER1{e}. ++e) WHETHER MODSETY MOD absent from NEST{c,d} : ++ WHETEHR MODSETY absent from NEST{e,f} ++ and MOD independent PROPSETY{71a,b,c}, ++ where PROPSETY collected properties from NEST{g,h}. ++f) WHETHER EMPTY absent from NEST{e} : ++ WHETHER true. ++g) WHETHER PROPSETY1 PROPSETY2 collected properties from ++ NEST new PROPSETY2{e,g} : ++ WHETHER PROPSETY1 collected properties from NEST {g,h}. ++h) WHETHER EMPTY collected properties from new EMPTY{e,g} : ++ WHETHER true. ++ ++i) *NEST new PROPSETY packet : ++ MOID NEST new PROPSETY LANGUAGE stuffing packet{a,b} ; ++ NEST new PROPSETY definition module packet of MODS{c} ; ++ NEST new PROPSETY particular program{A1g} ; ++ NEST new PROPSETY prelude packet of MODS{d}. ++j) *letter symbol : LETTER symbol{94a}. ++k) *digit symbol : DIGIT symbol{94b}. ++ ++{ Examples: ++ ++ a) EGG "abc" = ACCESS A,B (x := 1; y := 2; print (x+y)) ++ c) EGG "abc" = MODULE A = DEF PUB REAL x FED ++ d) MODULE B = DEF PUB REAL y FED ++ ++ The thre examples above would form a compatible collection of ++ packets when taken in conjunction with the particular-program BEGIN ++ NEST "abc" END } ++ ++{ In rule a above, 'MODSETY' envelops the 'MOD's defined by al the ++ definition-module-packets that are being stuffed along with the ++ stuffing-packet. ++ ++ In rules c and d, 'MODSETY1' need only envelop the 'MOD's for those ++ modules actually accessed from within that packet. ++ ++ The semantics related to packets are only defined if, for a ++ collection of packets being stuffed together, all the 'MOD's ++ enveloped by the various 'MODSETY1's are enveloped by 'MODSETY'. } ++ ++{ A stuffing packet contains the definition of an actual-hole. For ++ Algol 68 this consists on an enclosed-clause. For other values of ++ the metanotion 'LANGUAGE' it is different, and it is expected to be ++ translated somehow to an equivalent Algol 68 definition, ++ conceptually naturally. ++ ++ A definition module packet contains the definition of an actual-hole ++ which consists in one or more joined module declarations, with the ++ restriction that none of the declared modules shall exist in the ++ static environment at the formal-hole. ++ ++ A prelude packet contains one or more joined module declarations. } ++ ++10.7 Compilation systems ++ ++{ An implementtion of Algol 68 in which packets of a collection are ++ compiled into a collection of object-modules should conform to the ++ provisions of this section. } ++ ++10.7.1 Syntax ++ ++{ Note that we use the notion "compilation unit" rather than the ++ original "compilation input" used in the IFIP modules definition. } ++ ++A) *LAYERS :: LAYER ; LAYERS LAYER. ++ ++a) compilation unit : ++ MOID NEST new MODSETY LANGUAGE stuffing packet{A6a,b}, ++ MOID NEST hole interface{d}, ++ joined module interface with MODSETY{b,c} ; ++ NEST new MODSETY1 MODS definition module packet of MODS{A6c}, ++ MOID NEST hole interface{d}, ++ joined module interface with MODSETY1{b,c}, ++ module interface with MODS{d} option ; ++ new LAYER1 new DECS MODSETY STOP particular program{A1g}, ++ { void new LAYER1 new DECS STOP hole interface,} ++ unless (DECS) contains (MODULE), ++ joined module interface with MODSETY{b,c} ; ++ new LAYER1 new DECS MODSETY1 MODS STOP ++ prelude packet of MODS{A6d}, ++ { void new LAYER1 new DECS STOP hole interface,} ++ unless (DECS) contains (module), ++ joined module interface with MODSETY1{b,c}, ++ module interface with MODS{d} option. ++b) joined module interface with MODS MODSETY{a,b} : ++ module interface with MODS{d}, ++ joined module interface with MODSETY{b,c}. ++c) joined module inteface with EMPTY{a,b} : EMPTY. ++ ++{ A compilation-unit is either a stuffing packet, a definition module ++ packet, a particular program, or a prelude packet. The packets ++ shall be accompanied by the required hole and module interface ++ information. } ++ ++{ d) Hyper-rules for "MOID NEST hole interface", "module interface ++ with MODS" and "MOID NEST object module". The terminal ++ productions will most likely be in some cryptic notation ++ understood only by the compiler, i.e. the interface data. } ++ ++{ The inclusion of the hypernotions "void new LAYER1 new DECS STOP ++ hole interface" within pragmatic remarks in rule a is intended to ++ signify that this information (which describes the standard ++ environment) must clearly be available to the compiler, but that it ++ may well not be provided in the form of an explicit ++ hole-interface. } +--- /dev/null ++++ b/src/gcc/algol68/lang-specs.h +@@ -0,0 +1,24 @@ ++/* lang-specs.h -- gcc driver specs for Algol 68 frontend. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under ++ the terms of the GNU General Public License as published by the Free ++ Software Foundation; either version 3, or (at your option) any later ++ version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* This is the contribution to the `default_compilers' array in gcc.cc for the ++ Algol 68 language. */ ++ ++{".a68", "@algol68", 0, 1, 0}, ++ {"@algol68", ++ "a681 %i %(cc1_options) %{I*} %{L*} %D %{!fsyntax-only:%(invoke_as)}", 0, 1, ++ 0}, +--- /dev/null ++++ b/src/gcc/algol68/lang.opt +@@ -0,0 +1,122 @@ ++; Options for the Algol 68 front end. ++; Copyright (C) 2025 Free Software Foundation, Inc. ++; ++; GCC is free software; you can redistribute it and/or modify it under ++; the terms of the GNU General Public License as published by the Free ++; Software Foundation; either version 3, or (at your option) any later ++; version. ++; ++; GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++; WARRANTY; without even the implied warranty of MERCHANTABILITY or ++; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++; for more details. ++; ++; You should have received a copy of the GNU General Public License ++; along with GCC; see the file COPYING3. If not see ++; . ++ ++; See the GCC internals manual for a description of this file's format. ++ ++; Please try to keep this file in ASCII collating order. ++ ++; Describes command-line options used by this frontend ++ ++Language ++Algol68 ++ ++I ++Algol68 Joined Separate ++; Documented in c-family/c.opt ++ ++Wextensions ++Algol68 Warning Var(warn_algol68_extensions) LangEnabledBy(Algol68, Wextra) ++Warn for usage of non-portable extensions of Algol 68. ++ ++Wvoiding ++Algol68 Warning Var(warn_algol68_voiding) LangEnabledBy(Algol68, Wextra) ++Warn when voiding occurs. ++ ++Wextra ++Algol68 Warning ++; Documented in common.opt ++ ++Wscope ++Algol68 Warning Var(warn_algol68_scope) ++Warn for potential name scope violations. ++ ++Enum ++Name(warn_hidden_declarations_level) Type(int) UnknownError(argument %qs to %<-Whidden-declaration%> not recognized) ++ ++EnumValue ++Enum(warn_hidden_declarations_level) String(none) Value(0) ++ ++EnumValue ++Enum(warn_hidden_declarations_level) String(prelude) Value(1) ++ ++EnumValue ++Enum(warn_hidden_declarations_level) String(all) Value(2) ++ ++Whidden-declarations ++Algol68 Alias(Whidden-declarations=,prelude,none) ++Warn about hidden declarations in inner scopes. ++ ++Whidden-declarations= ++Algol68 Warning Var(warn_algol68_hidden_declarations) Enum(warn_hidden_declarations_level) Joined RejectNegative LangEnabledBy(Algol68,Wall) ++-Whidden-declarations=[none|prelude|all] Warn about declarations hidden in inner scopes. ++ ++fbrackets ++Algol68 Var(flag_brackets) ++-fbrackets Consider [ .. ] and { .. } as being equivalent to ( .. ). ++ ++fassert ++Algol68 Var(flag_assert) ++Generate code for assert contracts. ++ ++fcheck= ++Algol68 RejectNegative JoinedOrMissing ++-fcheck=[...] Specify which runtime checks are to be performed. ++ ++fa68-dump-modes ++Algol68 Var(flag_a68_dump_modes) ++Dump Algol 68 modes after parsing. ++ ++fa68-dump-ast ++Algol68 Var(flag_a68_dump_ast) ++Dump Algol 68 parse tree after parsing. ++ ++fa68-dump-module-interfaces ++Algol68 Var(flag_a68_dump_moif) ++Dump the interfaces of module definitions in the compiled packet. ++ ++static-libga68 ++Driver ++Link the GNU Algol run-time library statically in the compilation. ++ ++shared-libga68 ++Driver ++Link the GNU Algol 68 run-time library dynamically in the compilation. ++ ++std=algol68 ++Algol68 ++Compile strict Algol 68 as defined by the Revised Report ++ ++std=gnu68 ++Algol68 ++Accept GNU extensions to Algol 68 ++ ++; Stropping regimes. ++ ++fstropping= ++Algol68 Joined RejectNegative Enum(stropping_regime) Var(flag_stropping_regime) ++-fstropping=[upper|supper] Stropping regime to expect in Algol 68 programs. ++ ++Enum ++Name(stropping_regime) Type(int) UnknownError(unknown stropping_regime setting %qs) ++ ++EnumValue ++Enum(stropping_regime) String(upper) Value(0) ++ ++EnumValue ++Enum(stropping_regime) String(supper) Value(1) ++ ++; This comment is to ensure we retain the blank line above. +--- /dev/null ++++ b/src/gcc/algol68/lang.opt.urls +@@ -0,0 +1,41 @@ ++; Autogenerated by regenerate-opt-urls.py from gcc/algol68/lang.opt and generated HTML ++ ++I ++UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I) LangUrlSuffix_Algol68(ga68/Directory-options.html#index-I) ++ ++Wextensions ++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wextensions) ++ ++Wvoiding ++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wno-voiding) ++ ++Wextra ++UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra) LangUrlSuffix_Fortran(gfortran/Error-and-Warning-Options.html#index-Wextra) ++ ++Wscope ++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wno-scope) ++ ++Whidden-declarations ++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Whidden-declarations) ++ ++fbrackets ++LangUrlSuffix_Algol68(ga68/Dialect-options.html#index-fbrackets) ++ ++fassert ++LangUrlSuffix_D(gdc/Runtime-Options.html#index-fassert) LangUrlSuffix_Algol68(ga68/Runtime-options.html#index-fassert) ++ ++fcheck= ++LangUrlSuffix_Fortran(gfortran/Code-Gen-Options.html#index-fcheck) LangUrlSuffix_Algol68(ga68/Runtime-options.html#index-fcheck) ++ ++fa68-dump-modes ++LangUrlSuffix_Algol68(ga68/Developer-options.html#index-fa68-dump-modes) ++ ++fa68-dump-ast ++LangUrlSuffix_Algol68(ga68/Developer-options.html#index-fa68-dump-ast) ++ ++static-libga68 ++LangUrlSuffix_Algol68(ga68/Linking-options.html#index-static-libga68) ++ ++shared-libga68 ++LangUrlSuffix_Algol68(ga68/Linking-options.html#index-shared-libga68) ++ +--- a/src/gcc/common.opt ++++ b/src/gcc/common.opt +@@ -3914,6 +3914,9 @@ Driver Joined + static + Driver + ++static-libga68 ++Driver ++ + static-libgcc + Driver + +--- a/src/gcc/common.opt.urls ++++ b/src/gcc/common.opt.urls +@@ -1895,6 +1895,9 @@ UrlSuffix(gcc/Overall-Options.html#index-specs) + ; duplicate: 'gcc/Darwin-Options.html#index-static-1' + ; duplicate: 'gcc/Link-Options.html#index-static' + ++static-libga68 ++LangUrlSuffix_Algol68(ga68/Linking-options.html#index-static-libga68) ++ + static-libgcc + UrlSuffix(gcc/Link-Options.html#index-static-libgcc) + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -93,6 +93,9 @@ + # tm_rust_file list of headers with definitions of target hook + # macros for the Rust compiler. + # ++# tm_algol68_file list of headers with definitions of target hook ++# macros for the Algol68 compiler. ++# + # out_file The name of the machine description C support + # file, if different from "$cpu_type/$cpu_type.c". + # +@@ -155,6 +158,9 @@ + # rust_target_objs List of extra target-dependent objects that be + # linked into the Rust compiler only. + # ++# algol68_target_objs List of extra target-dependent objects that be ++# linked into the Algol68 compiler only. ++# + # target_gtfiles List of extra source files with type information. + # + # xm_defines List of macros to define when compiling for the +@@ -210,6 +216,9 @@ + # + # target_has_targetrustm Set to yes or no depending on whether the target + # has its own definition of targetrustm. ++# target_has_targetalgol68m ++# Set to yes or no depending on whether the target ++# has its own definition of targetalgol68m. + + out_file= + common_out_file= +@@ -228,10 +237,12 @@ cxx_target_objs= + d_target_objs= + fortran_target_objs= + rust_target_objs= ++algol68_target_objs= + target_has_targetcm=no + target_has_targetm_common=yes + target_has_targetdm=no + target_has_targetrustm=no ++target_has_targetalgol68m=no + tm_defines= + xm_defines= + # Set this to force installation and use of collect2. +@@ -621,6 +632,16 @@ then + rust_target_objs="${rust_target_objs} ${cpu_type}-rust.o" + fi + ++tm_algol68_file= ++if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-algol68.h ++then ++ tm_algol68_file="${cpu_type}/${cpu_type}-algol68.h" ++fi ++if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-algol68.cc ++then ++ algol68_target_objs="${algol68_target_objs} ${cpu_type}-algol68.o" ++fi ++ + extra_modes= + if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def + then +@@ -790,9 +811,11 @@ case ${target} in + d_target_objs="${d_target_objs} darwin-d.o" + fortran_target_objs="darwin-f.o" + rust_target_objs="${rust_target_objs} darwin-rust.o" ++ algol68_target_objs="${algol68_target_objs} darwin-algol68.o" + target_has_targetcm=yes + target_has_targetdm=yes + target_has_targetrustm=yes ++ target_has_targetalgol68m=no + extra_objs="${extra_objs} darwin.o" + extra_gcc_objs="darwin-driver.o" + default_use_cxa_atexit=yes +@@ -825,6 +848,8 @@ case ${target} in + target_has_targetdm=yes + rust_target_objs="${rust_target_objs} dragonfly-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} dragonfly-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-freebsd*) + # This is the generic ELF configuration of FreeBSD. Later +@@ -878,12 +903,16 @@ case ${target} in + target_has_targetdm=yes + rust_target_objs="${rust_target_objs} freebsd-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} freebsd-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-fuchsia*) + native_system_header_dir=/include + tmake_file="t-fuchsia" + rust_target_objs="${rust_target_objs} fuchsia-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} fuchsia-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi) + extra_options="$extra_options gnu-user.opt" +@@ -992,6 +1021,8 @@ case ${target} in + esac + rust_target_objs="${rust_target_objs} netbsd-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} netbsd-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-openbsd*) + tmake_file="t-openbsd" +@@ -1009,6 +1040,8 @@ case ${target} in + target_has_targetdm=yes + rust_target_objs="${rust_target_objs} openbsd-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} openbsd-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-phoenix*) + gas=yes +@@ -1071,6 +1104,8 @@ case ${target} in + target_has_targetdm=yes + rust_target_objs="${rust_target_objs} sol2-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} sol2-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-*vms*) + extra_options="${extra_options} vms/vms.opt" +@@ -1106,6 +1141,9 @@ case ${target} in + rust_target_objs="${rust_target_objs} vxworks-rust.o" + target_has_targetrustm=yes + ++ algol68_target_objs="${algol68_target_objs} vxworks-algol68.o" ++ target_has_targetalgol68m=yes ++ + extra_gcc_objs="vxworks-driver.o" + + # This private header exposes a consistent interface for checks on +@@ -2232,6 +2270,8 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) + target_has_targetdm="yes" + rust_target_objs="${rust_target_objs} winnt-rust.o" + target_has_targetrustm="yes" ++ algol68_target_objs="${algol68_target_objs} winnt-algol68.o" ++ target_has_targetalgol68m=yes + case ${target} in + x86_64-*-* | *-w64-*) + need_64bit_isa=yes +@@ -3702,6 +3742,10 @@ if [ "$target_has_targetrustm" = "no" ]; then + rust_target_objs="$rust_target_objs default-rust.o" + fi + ++if [ "$target_has_targetalgol68" = "no" ]; then ++ algol68_target_objs="$algol68_target_objs default-algol68.o" ++fi ++ + # Support for --with-cpu and related options (and a few unrelated options, + # too). + case ${with_cpu} in +--- a/src/gcc/config/darwin.h ++++ b/src/gcc/config/darwin.h +@@ -507,6 +507,7 @@ extern GTY(()) int darwin_ms_struct; + %{static|static-libgcc|static-libgcobol:%:replace-outfile(-lgcobol libgcobol.a%s)}\ + %{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\ + %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\ ++ %{static|static-libga68:%:replace-outfile(-lga68 libga68.a%s)}\ + %{static|static-libgm2:%:replace-outfile(-lm2pim libm2pim.a%s)}\ + %{static|static-libgm2:%:replace-outfile(-lm2iso libm2iso.a%s)}\ + %{static|static-libgm2:%:replace-outfile(-lm2min libm2min.a%s)}\ +@@ -1285,4 +1286,8 @@ extern void darwin_driver_init (unsigned int *,struct cl_decoded_option **); + #undef BTF_INFO_SECTION_NAME + #define BTF_INFO_SECTION_NAME "__CTF_BTF,__btf,regular,debug" + ++/* Algol68 */ ++#undef A68_EXPORT_SECTION_NAME ++#define A68_EXPORT_SECTION_NAME "__a68_exports" ++ + #endif /* CONFIG_DARWIN_H */ +--- a/src/gcc/config/rs6000/rs6000-logue.cc ++++ b/src/gcc/config/rs6000/rs6000-logue.cc +@@ -5332,18 +5332,18 @@ rs6000_output_function_epilogue (FILE *file) + /* Tbtab format type. Use format type 0. */ + fputs ("\t.byte 0,", file); + +- /* Language type. Unfortunately, there does not seem to be any +- official way to discover the language being compiled, so we +- use language_string. +- C is 0. Fortran is 1. Ada is 3. Modula-2 is 8. C++ is 9. +- Java is 13. Objective-C is 14. Objective-C++ isn't assigned +- a number, so for now use 9. LTO, Go, D, and JIT aren't assigned +- numbers either, so for now use 0. */ ++ /* Language type. Unfortunately, there does not seem to be any official ++ way to discover the language being compiled, so we use ++ language_string. C is 0. Fortran is 1. Ada is 3. Modula-2 is 8. ++ C++ is 9. Java is 13. Objective-C is 14. Objective-C++ isn't ++ assigned a number, so for now use 9. LTO, Go, D, Algol 68 and JIT ++ aren't assigned numbers either, so for now use 0. */ + if (lang_GNU_C () + || ! strcmp (language_string, "GNU GIMPLE") + || ! strcmp (language_string, "GNU Go") + || ! strcmp (language_string, "GNU D") + || ! strcmp (language_string, "GNU Rust") ++ || ! strcmp (language_string, "GNU Algol 68") + || ! strcmp (language_string, "libgccjit")) + i = 0; + else if (! strcmp (language_string, "GNU F77") +--- a/src/gcc/configure ++++ b/src/gcc/configure +@@ -649,6 +649,7 @@ ISLLIBS + GMPINC + GMPLIBS + target_cpu_default ++algol68_target_objs + rust_target_objs + d_target_objs + fortran_target_objs +@@ -658,6 +659,8 @@ use_gcc_stdint + xm_defines + xm_include_list + xm_file_list ++tm_algol68_include_list ++tm_algol68_file_list + tm_rust_include_list + tm_rust_file_list + tm_d_include_list +@@ -15149,6 +15152,17 @@ for f in $tm_rust_file; do + esac + done + ++tm_algol68_file_list= ++tm_algol68_include_list= ++for f in $tm_algol68_file; do ++ case $f in ++ * ) ++ tm_algol68_file_list="${tm_algol68_file_list} \$(srcdir)/config/$f" ++ tm_algol68_include_list="${tm_algol68_include_list} config/$f" ++ ;; ++ esac ++done ++ + xm_file_list= + xm_include_list= + for f in $xm_file; do +@@ -21520,7 +21534,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 21523 "configure" ++#line 21537 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -21626,7 +21640,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 21629 "configure" ++#line 21643 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -34096,6 +34110,9 @@ fi + + + ++ ++ ++ + + + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -2472,6 +2472,17 @@ for f in $tm_rust_file; do + esac + done + ++tm_algol68_file_list= ++tm_algol68_include_list= ++for f in $tm_algol68_file; do ++ case $f in ++ * ) ++ tm_algol68_file_list="${tm_algol68_file_list} \$(srcdir)/config/$f" ++ tm_algol68_include_list="${tm_algol68_include_list} config/$f" ++ ;; ++ esac ++done ++ + xm_file_list= + xm_include_list= + for f in $xm_file; do +@@ -7562,6 +7573,8 @@ AC_SUBST(tm_d_file_list) + AC_SUBST(tm_d_include_list) + AC_SUBST(tm_rust_file_list) + AC_SUBST(tm_rust_include_list) ++AC_SUBST(tm_algol68_file_list) ++AC_SUBST(tm_algol68_include_list) + AC_SUBST(xm_file_list) + AC_SUBST(xm_include_list) + AC_SUBST(xm_defines) +@@ -7571,6 +7584,7 @@ AC_SUBST(cxx_target_objs) + AC_SUBST(fortran_target_objs) + AC_SUBST(d_target_objs) + AC_SUBST(rust_target_objs) ++AC_SUBST(algol68_target_objs) + AC_SUBST(target_cpu_default) + + AC_SUBST_FILE(language_hooks) +--- a/src/gcc/dwarf2out.cc ++++ b/src/gcc/dwarf2out.cc +@@ -25480,6 +25480,14 @@ gen_compile_unit_die (const char *filename) + else if (strcmp (language_string, "GNU Rust") == 0) + language = DW_LANG_Rust; + } ++ else if (!dwarf_strict) ++ { ++ if (strcmp (language_string, "GNU Algol 68") == 0) ++ { ++ language = DW_LANG_Algol68; ++ lname = DW_LNAME_Algol68; ++ } ++ } + } + /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works. */ + else if (startswith (language_string, "GNU Fortran")) +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -4666,11 +4666,13 @@ driver_handle_option (struct gcc_options *opts, + case OPT_static_libgfortran: + case OPT_static_libquadmath: + case OPT_static_libphobos: ++ case OPT_static_libga68: + case OPT_static_libgm2: + case OPT_static_libstdc__: + /* These are always valid; gcc.cc itself understands the first two + gfortranspec.cc understands -static-libgfortran, + libgfortran.spec handles -static-libquadmath, ++ a68spec.cc understands -static-libga68, + d-spec.cc understands -static-libphobos, + gm2spec.cc understands -static-libgm2, + and g++spec.cc understands -static-libstdc++. */ +--- a/src/gcc/genhooks.cc ++++ b/src/gcc/genhooks.cc +@@ -36,6 +36,7 @@ static struct hook_desc hook_array[] = { + #include "common/common-target.def" + #include "d/d-target.def" + #include "rust/rust-target.def" ++#include "algol68/algol68-target.def" + #undef DEFHOOK + }; + +--- a/src/gcc/regenerate-opt-urls.py ++++ b/src/gcc/regenerate-opt-urls.py +@@ -361,7 +361,8 @@ def write_url_file(index, optfile, dstfile): + PER_LANGUAGE_OPTION_INDEXES = [ + ('gcc/Option-Index.html', None), + ('gdc/Option-Index.html', 'D'), +- ('gfortran/Option-Index.html', 'Fortran') ++ ('gfortran/Option-Index.html', 'Fortran'), ++ ('ga68/Option-Index.html', 'Algol68'), + ] + + def main(args): +--- /dev/null ++++ b/src/gcc/testsuite/algol68/README.mcts +@@ -0,0 +1,37 @@ ++The tests in compile/mcts and execute/mcts have been adapted from: ++ ++ The Revised MC Algol 68 Test Set, version 3 ++ ++edited by Dick Grüne in 1973 and originally published by the ++Mathematisch Centrum in Amsterdam, a non-profit institution founded in ++1946 aiming at the promotion of pure mathematics and its applications. ++ ++The WG 2.1 blessed the test set with this authorized statement: ++ ++ "This ALGOL68 Test Set has been reviewed by the IFIP Working Group ++ 2.1, which considers it as a valuable means of testing ++ implementations of ALGOL68." ++ ++The test set explores all odd corners of Algol 68. ++ ++The tests have been modified in order to accommodate the GNU Algol 68 ++implementation. Some general adaptations are: ++ ++- Many tests in the original MC test set print out expected results so ++ they can be verified visually. We check for them programmatically ++ instead making use of the ASSERT construct. ++ ++Additional particular modifications are explained and justified in the ++source files of the corresponding tests. ++ ++The tests fall in the following categories: ++ ++Null programs (nullNN.a68) ++ Various forms of empty enclosed-clauses. ++ ++Simple tests (simpNN.a68) ++ Contains almost all language features of the language used in ++ simple ways. ++ ++Declarers tests (declNN.a68) ++ Declarers and their well-formedness. +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/a68includes/goodbye-supper.a68 +@@ -0,0 +1,4 @@ ++proc goodbye = (string name) string: ++begin string msg := "Goodbye " + name; ++ msg ++end; +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/a68includes/goodbye.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# PR UPPER PR # ++ ++PROC goodbye = (STRING name) STRING: ++BEGIN ++ STRING msg := "Goodbye " + name; ++ msg ++END; +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/a68includes/hello-supper.a68 +@@ -0,0 +1,5 @@ ++proc hello = (string name) string: ++begin string msg := "Hello " + name; ++ msg ++end; ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/a68includes/hello.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# PR UPPER PR # ++ ++PROC hello = (STRING name) STRING: ++BEGIN ++ STRING msg := "Hello " + name; ++ msg ++END; +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/actual-bounds-expected-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT a := (1,2,3); # { dg-error "actual bounds expected" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/actual-bounds-expected-2.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN LOC[]INT a := (1,2,3); # { dg-error "actual bounds expected" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/actual-bounds-expected-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN LOC[]INT a := (1,2,3), # { dg-error "actual bounds expected" } # ++ b := (4); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/balancing-1.a68 +@@ -0,0 +1,7 @@ ++mode Word = union (void,real), ++ Rules = union (void,string); ++ ++op LEN = (Word w) int: skip, ++LEN = (Rules r) int: skip; ++ ++skip +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/bold-nestable-comment-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options {-fstropping=upper} } # ++# pr UPPER pr # ++BEGIN NOTE This is a ++ NOTE nestable ETON comment in bold style. ++ ETON ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/bold-taggle-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options {-std=gnu68 -fstropping=upper} } # ++ ++BEGIN MODE FOO_BAR = INT; ++ FOO_BAR foo_bar = 10; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/brief-nestable-comment-1.a68 +@@ -0,0 +1,4 @@ ++begin { This is a ++ { nestable } comment in brief style. } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/brief-nestable-comment-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN NOTE This is a ++ { nestable } comment in brief style. ++ ETON ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/char-break-1.a68 +@@ -0,0 +1,11 @@ ++{ Make sure char denotations with string breaks work. } ++begin prio % = 9; ++ op % = (char a) char: a; ++ assert (ABS %"'n" = 10); ++ assert (ABS %"'f" = 12); ++ assert (ABS %"'t" = 9); ++ assert (ABS %"'r" = 13); ++ assert (%"'( u0061)" = "a"); ++ assert (%"'(U00000061 )" = "a"); ++ assert (%"'(u1234)" = replacement_char) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/compile.exp +@@ -0,0 +1,34 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Compile tests, no torture testing. ++# ++# These tests raise errors in the front end; torture testing doesn't apply. ++ ++load_lib algol68-dg.exp ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++set saved-dg-do-what-default ${dg-do-what-default} ++ ++set dg-do-what-default "compile" ++algol68-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] "" "" ++set dg-do-what-default ${saved-dg-do-what-default} ++ ++# All done. ++dg-finish +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/conditional-clause-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT i := 26; ++ IF INT ii = i * 2; ii > 50 THEN ++ ii ++ ELIF i = 10 THEN ++ 100 ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-bold-taggle-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options {-std=algol68 -fstropping=upper} } # ++ ++BEGIN MODE FOO_BAR = INT; # { dg-error "unworthy" } # ++ FOO_BAR foo_bar = 10; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-coercion-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT a; ++ a := "foo" # { dg-error "cannot be coerced" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-coercion-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# This is Example 4.2.6c in McGETTRICK[78]. # ++BEGIN []STRUCT([]INT a) r = (1,2,3); # { dg-error "cannot be coerced" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-coercion-flex-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Coercing from REF FLEX[]REAL to REF[]REAL is not allowed, since ++ flexibility shall match # ++BEGIN FLEX[1:0] REAL rowvar := SKIP; ++ REF [] REAL xlm = rowvar; # { dg-error "FLEX.*cannot be coerced" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-compile-unknown-tag-1.a68 +@@ -0,0 +1,8 @@ ++module Foo = def pub int idpublic = 10; ++ int idprivate = 20; ++ skip ++ fed, ++ Bar = def pub int idpublic = 30; ++ int idprivate = 40; ++ xxx { dg-error "" } ++ fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-conformance-clause-1.a68 +@@ -0,0 +1,8 @@ ++{ This is an invalid program. } ++begin case ++ if true then "foo" else 10 fi { dg-error "not a united mode" } ++ in (string): skip, ++ (int): skip ++ esac ++end ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-contraction-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Contracting mixed collateral variable and constant declarations is ++ not allowed. ++# ++(INT foo = 100, bar := 200) # { dg-error "mixed" } # +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-contraction-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Contracting mixed collateral variable and constant declarations is ++ not allowed. # ++BEGIN PROC x = VOID: SKIP, ++ y := VOID: SKIP; # { dg-error "mixed" } # ++ x ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-def-1.a68 +@@ -0,0 +1,3 @@ ++module Foo = ++def skip; { dg-error "fed" } ++ skip +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-incestuous-union-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Union modes shall not contain modes which are firmly related, i.e. ++ it shall not be possible to coerce from one mode to another in a ++ firm context. # ++BEGIN UNION(INT, REF INT) incestuous; # { dg-error "has firmly related components" } # ++ incestuous ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-label-after-decl-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN GOTO end; ++ ASSERT(FALSE); ++end: 0; ++ INT i = 10; # { dg-error "declaration cannot follow" } # ++ i ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-1.a68 +@@ -0,0 +1,3 @@ ++begin struct (int i, real r) j; ++ j := "joo" { dg-error "char.*struct \\(int i, real r\\)" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-10.a68 +@@ -0,0 +1,3 @@ ++begin long long int j; ++ j := "joo" { dg-error "char.*long long int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-11.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN LONG LONG INT j; ++ j := "joo" { dg-error "CHAR.*LONG LONG INT" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-12.a68 +@@ -0,0 +1,3 @@ ++begin short int j; ++ j := "joo" { dg-error "char.*short int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-13.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN SHORT INT j; ++ j := "joo" { dg-error "CHAR.*SHORT INT" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-14.a68 +@@ -0,0 +1,3 @@ ++begin short short int j; ++ j := "joo" { dg-error "char.*short short int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-15.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN SHORT SHORT INT j; ++ j := "joo" { dg-error "CHAR.*SHORT SHORT INT" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-16.a68 +@@ -0,0 +1,3 @@ ++begin flex[1:0]int j; ++ j := "joo" { dg-error "char.*flex.*int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-17.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN FLEX[1:0]INT j; ++ j := "joo" { dg-error "CHAR.*FLEX.*INT" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-2.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRUCT (INT i, REAL r) j; ++ j := "joo" # { dg-error "CHAR.*STRUCT \\(INT i, REAL r\\)" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-3.a68 +@@ -0,0 +1,3 @@ ++begin union (int,real) j; ++ j := "joo" { dg-error "char.*union \\( *real *, *int *\\)" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-4.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION (INT,REAL) j; ++ j := "joo" { dg-error "CHAR.*UNION \\( *REAL *, *INT *\\)" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-5.a68 +@@ -0,0 +1,3 @@ ++begin proc union (int,real) j; ++ j := "joo" { dg-error "char.*proc union \\( *real *, *int *\\)" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-6.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC UNION (INT,REAL) j; ++ j := "joo" { dg-error "CHAR.*PROC UNION \\( *REAL *, *INT *\\)" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-8.a68 +@@ -0,0 +1,3 @@ ++begin long int j; ++ j := "joo" { dg-error "char.*long int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-9.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN LONG INT j; ++ j := "joo" { dg-error "CHAR.*LONG INT" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-module-coercions-1.a68 +@@ -0,0 +1,15 @@ ++{ This test makes sure mode checks are carried ++ over the inside of module texts. } ++module Foo = def ++ skip ++ postlude ++ int i = "foo"; { dg-error "coerced" } ++ skip ++ fed, ++ Bar = def ++ int i = 3.14; { dg-error "coerced" } ++ skip ++ postlude ++ skip ++ fed, ++ Baz = def skip fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-module-not-found-1.a68 +@@ -0,0 +1,4 @@ ++access ++ Foo { dg-error "cannot find module" } ++begin skip end ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-module-ranges-1.a68 +@@ -0,0 +1,13 @@ ++{ Definitions in the def-part of a module text are visible in the ++ postlude-part, but not the other way around. } ++ ++module Foo = def int i; ++ x := 20 { dg-error "" } ++ postlude ++ i := 10 { this is ok } ++ fed, ++ Bar = def int x; ++ skip ++ postlude ++ x := 20 { this is ok } ++ fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-nestable-comments-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# pr UPPER pr # ++BEGIN NOTE This is a ++ NOTE nestable ETON comment in brief style. ++ ETON ++ { Another { comment }. } ++ NOTE invalid { nesting ETON of comments } # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-nested-comment-1.a68 +@@ -0,0 +1,6 @@ ++{ The string in nested comment is in one logical line. } ++begin ++ { puts ("{'n { dg-error {} } ++"); { this prints foo }} ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-no-bounds-allowed-1.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN [1:10]INT i, ++ [1:10]STRUCT(REF[]INT i, BOOL j) k, ++ [1:10]STRUCT([1:10]INT i, BOOL j) l, ++ [1:10]REF[]INT p; ++ # formal, so no bounds allowed: # ++ [1:10]PROC[1:10]INT q, # { dg-error "formal bounds expected" } # ++ STRUCT(REF[1:10]INT i, BOOLj) m, # { dg-error "virtual bounds expected" } # ++ [1:10]REF[1:10]INT mn, # { dg-error "virtual bounds expected" } # ++ PROC([1:10]INT)VOID pp, # { dg-error "formal bounds expected" } # ++ UNION([1:10] INT, BOOL) nm, # { dg-error "formal bounds expected" } # ++ [1:10]INT u = (1); # { dg-error "formal bounds expected" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pragmat-1.a68 +@@ -0,0 +1,8 @@ ++{ dg-error "unrecognized pragmat" } pr invalid Foo in "module" pr ++ ++begin prio // = 8; ++ op (int,int)int // = lala; ++ proc lala = (int a, b) int: a + b; ++ proc void jeje = skip; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pragmat-access-1.a68 +@@ -0,0 +1,8 @@ ++pr access Foo in pr { dg-error "expected string" } ++ ++begin prio // = 8; ++ op (int,int)int // = lala; ++ proc lala = (int a, b) int: a + b; ++ proc void jeje = skip; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pragmat-access-2.a68 +@@ -0,0 +1,9 @@ ++pr access Foo in "lala" pr ++pr access Foo in "lele" pr { dg-error "multiple" } ++ ++begin prio // = 8; ++ op (int,int)int // = lala; ++ proc lala = (int a, b) int: a + b; ++ proc void jeje = skip; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pub-loc-1.a68 +@@ -0,0 +1,10 @@ ++{ Publicized varifables cannot go on the stack, for obvious reasons. } ++ ++module Foo = ++def ++ pub string xx; ++ pub heap string yy; ++ pub loc string zz; { dg-error "" } ++ loc string vv; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pub-out-of-def-1.a68 +@@ -0,0 +1,13 @@ ++module Foo = ++def pub mode JORL = int; ++ pub proc plus = (int a, b) int: a + b; ++ pub proc vplus := (int a, b) int: a + b; ++ pub loc proc lvplus := (int a, b) int: a + b; ++ pub heap proc hvplus := (int a, b) int: a + b; ++ pub prio // = 8; ++ pub op // = (int a, b) int: a % b; ++ proc invalid = void: ++ (pub mode JI = void; { dg-error "" } ++ skip); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pub-out-of-def-2.a68 +@@ -0,0 +1,9 @@ ++begin pub mode Jorl = void; { dg-error "" } ++ pub proc lala = void: skip; { dg-error "" } ++ pub proc lele := void: skip; { dg-error "" } ++ begin pub prio + = 4; { dg-error "" } ++ skip ++ end; ++ pub op // = (int a, b) int: a % b; { dg-error "" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN puts ("hello '_ world") # { dg-error "invalid string break sequence" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-2.a68 +@@ -0,0 +1,2 @@ ++begin puts ("hello '(U0000) world") # { dg-error "eight" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-3.a68 +@@ -0,0 +1,2 @@ ++begin puts ("hello '(u00) world") # { dg-error "four" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-4.a68 +@@ -0,0 +1,2 @@ ++begin puts ("hello '(u) world") # { dg-error "four" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-5.a68 +@@ -0,0 +1,2 @@ ++begin puts ("hello '(u0010u0020) world") # { dg-error "" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-6.a68 +@@ -0,0 +1,2 @@ ++begin puts ("hello '(u0010'/) world") # { dg-error "" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-7.a68 +@@ -0,0 +1,2 @@ ++begin puts ("'") # { dg-error "" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-8.a68 +@@ -0,0 +1,4 @@ ++begin string s = ++ "'(Uf09f94a5)"; { dg-error "Unicode" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-5.a68 +@@ -0,0 +1,3 @@ ++begin int j; ++ j := "joo" { dg-error "char.*int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-6.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT j; ++ j := "joo" # { dg-error "CHAR.*INT" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-1.a68 +@@ -0,0 +1,2 @@ ++begin for i to 10 skip od { dg-error "do" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-2.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN FOR i TO 10 SKIP OD # { dg-error "DO" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-3.a68 +@@ -0,0 +1,2 @@ ++begin if then 10 else 20 fi { dg-error "if" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-4.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN IF THEN 10 ELSE 20 FI # { dg-error "IF" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options {-fstropping=upper} } # ++ ++begin ~ end # { dg-error "" } # +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options {-fstropping=supper} } # ++ ++begin int foo__bar = 10; # { dg-error "unworthy" } # ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options {-fstropping=supper} } # ++ ++begin int _bar = 10; # { dg-error "unworthy" } # ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-4.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin int foo bar = 10; { dg-error "" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options {-fstropping=supper} } # ++ ++begin int foo__ = 10; # { dg-error "unworthy" } # ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-6.a68 +@@ -0,0 +1,6 @@ ++# { dg-options {-fstropping=supper} } # ++ ++begin mode foo_Invalid = int; # { dg-error "Invalid" } # ++ foo_Invalid some_int = 10; # { dg-error "Invalid" } # ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-underscore-in-mode-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Underscores are unworthy characters if they are not trailing ++ either a taggle or, in UPPER stropping, a bold word. # ++BEGIN INT invalid_tag__; # { dg-error "unworthy character" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-underscore-in-tag-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Underscores are unworthy characters if they are not trailing a ++ taggle or, in UPPER stropping, a bold word.. # ++BEGIN MODE INVALID_BOLD_WORD__; # { dg-error "unworthy character" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-upper-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options {-fstropping=supper} } # ++ ++BEGIN ~ END # { dg-error "" } # +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-vacuum-1.a68 +@@ -0,0 +1,2 @@ ++begin { dg-error "" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-vacuum-2.a68 +@@ -0,0 +1,2 @@ ++( { dg-error "" } ++) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-vacuum-3.a68 +@@ -0,0 +1,3 @@ ++begin struct(int i, real r) foo = (); { dg-error "" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT a := 10; ++ LONG REAL l := a; # { dg-error "coerced" } # ++ l ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT a := 10; ++ LONG INT l := a; # { dg-error "coerced" } # ++ l ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-3.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT d := 0; ++ INT y := 10; ++ LONG REAL x; ++ 2 ++ + (d > 0 | x | # { dg-error "" } # ++ y ++ ) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-4.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ INT d := 0; ++ LONG REAL x; ++ 2 ++ + (d > 0 | x | # { dg-error "" } # ++ 10 ++ ) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-5.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ LONG INT d := 0; # { dg-error "coerced" } # ++ d ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-6.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ LONG LONG INT d := LONG 0; # { dg-error "coerced" } # ++ d ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-7.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ LONG REAL d := 3.14; # { dg-error "coerced" } # ++ d ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-8.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ LONG LONG REAL d := LONG 3.14; # { dg-error "coerced" } # ++ d ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-9.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ INT d := 0; ++ LONG LONG REAL x; ++ 2 ++ + (d > 0 | x | # { dg-error "" } # ++ 10 ++ ) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/hidden-operators-1.a68 +@@ -0,0 +1,11 @@ ++{ dg-options {-Whidden-declarations} } ++ ++begin mode Trilean = union (void,bool); ++ ++ Trilean unknown = empty; ++ op NOT = (Trilean a) Trilean: { dg-warning "hides" } ++ skip; ++ op AND = (Trilean a,b) Trilean: { dg-warning "hides" } ++ skip; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/implicit-widening-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-Wextensions -fstropping=upper" } # ++ ++# This program shall compile without warning, because ++ widening from INT to REAL is legal in the strict language, ++ since they have the same size. # ++ ++BEGIN BOOL cond; ++ REAL x, y; ++ y + (cond | x | 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/include-supper.a68 +@@ -0,0 +1,16 @@ ++{ dg-options "-I$srcdir/algol68/compile/a68includes" } ++{ dg-additional-files "$srcdir/algol68/compile/a68includes/hello-supper.a68 $srcdir/algol68/compile/a68includes/goodbye-supper.a68" } ++ ++begin string name := "Algol68 with supper!"; ++ { Both files are in `./a68includes'. ++ The first one will be included because we uwed `-I. ++ The second one will be included because of the relative path. } ++ pr include "hello-supper.a68" pr ++ pr include "a68includes/goodbye-supper.a68" pr ++ ++ string bye := goodbye(name); ++ string hi := hello(name); ++ ++ puts(hi + "\n"); ++ puts(bye + "\n") ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/include.a68 +@@ -0,0 +1,19 @@ ++# { dg-options "-I$srcdir/algol68/compile/a68includes -fstropping=upper" } # ++# { dg-additional-files "$srcdir/algol68/compile/a68includes/hello.a68 $srcdir/algol68/compile/a68includes/goodbye.a68" } # ++ ++# PR UPPER PR # ++ ++BEGIN STRING name := "Algol68!"; ++ # Both files are in `./a68includes'. ++ The first one will be included because we used `-I'. ++ The second one will be included because of the relative path. ++ # ++ PR include "hello.a68" PR ++ PR include "a68includes/goodbye.a68" PR ++ ++ STRING bye := goodbye(name); ++ STRING hi := hello(name); ++ ++ puts(hi + "\n"); ++ puts(bye + "\n") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/labeled-unit-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# This tests that the mode of the value yielded by a labeled unit is ++ the mode of the unit. # ++BEGIN 10; ++jorl: 20 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcgt-1.3b.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN REAL r := 10.0, circum, area; ++ circum := 2 * pi * r; area := pi * r * r ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcgt-7.1.3a-bis.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Transient references and declarations. # ++BEGIN FLEX[4,6]INT p; ++ # Illegal, cannot remember transient name. # ++ REF[]INT q2 = p[3,]; # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcgt-7.1.3a.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Transient references and declarations. # ++BEGIN FLEX[4,6]INT p; ++ # Illegal. p cannot be deflexed since it is a REF FLEX. # ++ REF[,]INT q3 = p; # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/compile.exp +@@ -0,0 +1,34 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Compile tests, no torture testing. ++# ++# These tests raise errors in the front end; torture testing doesn't apply. ++ ++load_lib algol68-dg.exp ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++set saved-dg-do-what-default ${dg-do-what-default} ++ ++set dg-do-what-default "compile" ++algol68-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] "" "" ++set dg-do-what-default ${saved-dg-do-what-default} ++ ++# All done. ++dg-finish +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/decl06.a68 +@@ -0,0 +1,258 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN # 1. Actual declaration. # ++ # 1.a Without bounds. # ++ ++ # primitive # ++ BEGIN INT x1, ++ INT x2, x3, ++ INT x4, x5, x6, ++ REAL x7, x8, x9, x10, x11, x12, ++ LONG INT x13, ++ LONG REAL x14, ++ BOOL x15, ++ CHAR x16; ++ SKIP ++ END; ++ ++ # ref + primitive # ++ BEGIN REF INT x1, ++ REF REF REF REAL x2, ++ REF REF REF REF LONG REAL x3, ++ REF REF REF REF REF BOOL x4, ++ REF REF REF REF REF REF CHAR x5, ++ REF REF PROC VOID x6; ++ SKIP ++ END; ++ ++ # proc # ++ BEGIN PROC VOID x1, ++ PROC PROC REAL x2, ++ PROC PROC PROC PROC LONG REAL x3, ++ PROC PROC PROC PROC PROC BOOL x4, ++ PROC PROC PROC PROC PROC PROC CHAR x5, ++ PROC PROC PROC VOID x6; ++ SKIP ++ END; ++ ++ # ref + proc # ++ BEGIN REF REF REF REF REF REF PROC VOID x1, ++ PROC REF REAL x2, ++ PROC REF PROC REF LONG REAL x3, ++ PROC REF PROC REF PROC BOOL x4, ++ REF PROC REF PROC REF PROC CHAR x5, ++ PROC REF PROC VOID x6; ++ SKIP ++ END; ++ ++ # proc with one parameter which is primitive or ref + primitive # ++ BEGIN PROC(INT)VOID x1, ++ PROC(REF REF REF LONG INT)VOID x2, ++ PROC(BOOL)VOID x3, ++ PROC(REF CHAR)VOID x4, ++ PROC(LONG REAL)VOID x5, ++ PROC(REF REF REF BOOL)VOID x6, ++ PROC(PROC VOID)VOID x7, ++ PROC(REF REF PROC VOID)VOID x8; ++ SKIP ++ END; ++ ++ # ref + proc with one parameter which is primitive or ref + primitive # ++ BEGIN REF PROC(INT)VOID x1, ++ REF REF PROC(LONG REAL)VOID x2, x3, ++ REF REF REF REF PROC(REF CHAR)VOID x4, ++ REF PROC(PROC VOID)VOID x5, ++ REF REF PROC(REF PROC VOID)VOID x6; ++ SKIP ++ END; ++ ++ # ref * proc with more than one parameter which are ref * primitive # ++ BEGIN PROC(INT,LONG INT)VOID x1, ++ PROC(REAL,REF LONG REAL,REF REF BOOL)VOID x2, ++ PROC(REF REF REF CHAR,INT,LONG INT,REAL,REAL,INT)VOID x3, ++ REF PROC(INT,INT,INT,REF CHAR)VOID x4, ++ REF REF REF PROC(PROC VOID,REF REF PROC VOID,INT)VOID x5; ++ SKIP ++ END; ++ ++ # ref + row of * ref * primitive # ++ BEGIN REF[]INT x1, ++ REF[,]REAL x2, ++ REF REF[,,,]LONG REAL x3, ++ REF REF REF[,,,,,]REF BOOL x4, ++ REF[]REF REF REF LONG INT x5, ++ REF REF[,,,,]REF REF CHAR x6, ++ REF[]PROC VOID x7, ++ REF[,]REF REF PROC VOID x8; ++ SKIP ++ END; ++ ++ # ref + row of * ref * proc # ++ BEGIN REF[] PROC VOID x1, ++ REF REF[,] PROC(REF INT)VOID x2, ++ REF REF REF[]PROC(INT, REF REF INT)VOID x3, ++ REF[]REF PROC(REF LONG REAL, REF REF REF CHAR, REF LONG LONG REAL)VOID x4, ++ REF REF[,,,]REF REF REF PROC(REF INT, LONG LONG LONG INT)VOID x5; ++ REF[]PROC(PROC VOID,REF PROC VOID)VOID x6; ++ SKIP ++ END; ++ ++ # ref * proc with row of parameters # ++ BEGIN PROC([]REAL)VOID x1, ++ REF PROC(INT, []LONG REAL)VOID x2, ++ REF REF PROC([,]INT, []REF REF BOOL)VOID x3, ++ REF REF REF REF PROC(REF[]INT, REF REF[]REF REF LONG REAL)VOID x4, ++ PROC(REF REF[,,,]REF REF REF REAL)VOID x5, ++ PROC([]REF REAL, [,,,]REF CHAR, REF[,]BOOL)VOID x6, ++ PROC([]REF PROC VOID, REF[,,]PROC VOID, REF REF[,]REF REF PROC VOID)VOID x7; ++ SKIP ++ END; ++ ++ # nested rows # ++ BEGIN REF[,,,]REF[,]INT x1, ++ REF[]REF[]PROC VOID x2, ++ REF[]REF REF[]REF BOOL x3, ++ REF[,,,]REF[,,,]REF REF REF PROC VOID x4, ++ REF REF[]REF[]INT x5, ++ REF[]REF[]REF[]REF[]REF[]LONG REAL x6; ++ SKIP ++ END; ++ ++ # nested procs # ++ BEGIN PROC(PROC(PROC (PROC VOID)VOID)VOID)VOID x1, ++ PROC(INT, ++ PROC(REF REF PROC VOID, ++ REAL, ++ REF PROC(REF LONG INT, PROC VOID)VOID, ++ INT) VOID)VOID x2, ++ PROC(INT, ++ PROC VOID, ++ PROC (INT, ++ PROC VOID, ++ REF REAL, ++ REF PROC VOID)VOID)VOID x3, ++ PROC(INT, ++ PROC (INT,INT) VOID, ++ PROC (INT) VOID, ++ REAL)VOID x4; ++ SKIP ++ END; ++ ++ # mixed rows and procs # ++ BEGIN REF[]PROC([,]INT,PROC([]PROC VOID) VOID, ++ [,] PROC(PROC VOID, INT) VOID, ++ REF[]PROC VOID)VOID x1; ++ SKIP ++ END; ++ ++ # 1.b. With bounds. # ++ BEGIN [1:1]INT x1, ++ [1:1,1:1]REF LONG REAL x2, ++ [1:1,1:1,1:1]REF REF PROC VOID x3, ++ [1:1]PROC VOID x4, ++ [1:1]PROC(INT)VOID x5, ++ [1:1]PROC(INT,REAL,REF PROC VOID)VOID x6, ++ [1:1,1:1,1:1,1:1]REF REF PROC(INT)VOID x7, ++ [1:1]REF[]INT x8, ++ [1:1]REF[,,,]REF PROC VOID x9, ++ [1:1]REF PROC([]INT)VOID x10, ++ [1:1]PROC([]REF PROC VOID, REF[,,]PROC VOID, ++ REF REF REF REF[,]REF REF REF PROC VOID)VOID x11, ++ [1:1]REF[]REF[,,]REF REF[]LONG REAL x12, ++ [1:1]PROC(REF[]PROC VOID, []PROC VOID, []REF INT)VOID x13; ++ SKIP ++ END; ++ ++ # 2. Variable and constant declarations. # ++ ++ BEGIN PROC VOID a; PROC(INT)VOID b; ++ PROC VOID c, d; REAL e; REAL f, g; ++ SKIP; SKIP; SKIP; SKIP ++ END; ++ ++ # 3. Declarations of routines. # ++ ++ BEGIN INT i; ++ PROC a = VOID: SKIP; ++ PROC(INT)VOID b = (INT c) VOID: SKIP; ++ PROC(INT,REAL)VOID c = (INT e, REAL f) VOID: SKIP; ++ BEGIN PROC c = VOID: a; # no error # SKIP END ++ END; ++ ++ # 4. Call without parameters. # ++ ++ BEGIN PROC VOID a = VOID: SKIP; ++ PROC VOID b := a; ++ REF PROC VOID c := b; ++ REF REF PROC VOID d = c; ++ ++ a; # without deref # ++ b; # with deref # ++ c; # with deref # ++ d; # with deref # ++ ++ SKIP ++ END; ++ ++ # 5. Call with parameters. # ++ BEGIN INT int; REAL real; ++ PROC(INT)VOID dcs1, ++ PROC(INT,REAL)VOID dcs2; ++ PROC(INT)VOID a = (INT a) VOID: SKIP; ++ PROC(INT)VOID b; ++ REF PROC(INT)VOID c = b; ++ REF PROC(INT)VOID d; ++ PROC(INT,REAL)VOID e = (INT a, REAL b) VOID: SKIP; ++ ++ a (int); ++ dcs1 (int); ++ dcs2 (int, real); ++ e (int, real); ++ b (int); ++ c (int); ++ d (int); ++ BEGIN REF REF REF REF REF REF REF REF REF REF ++ REF REF REF REF REF REF REF REF REF REF ++ PROC(INT)VOID a; a (int); SKIP ++ END; ++ BEGIN # No error # ++ PROC(REF INT, REF REAL)VOID a; ++ a (int, real) ++ END; ++ ++ BEGIN PROC(INT)VOID a; a (int) END; ++ BEGIN PROC(INT)VOID a; a (int); SKIP END ++ END; ++ ++ # 6. Assignation with an identifier as destination. # ++ ++ BEGIN INT a; REF INT b = a; PROC(REAL)REAL c; ++ a := 1; ++ b := a; ++ CO c := sin; XXX CO ++ SKIP ++ END; ++ ++ # 7. Assignation with a slice as destination. # ++ ++ BEGIN INT i, j, k, l; ++ [i:i]REAL a1; ++ [i:i,j:j]REAL a2; ++ REF[]REAL a3 = a1; ++ REF[,]REAL a4; ++ REF[,,]REAL a5 = a4; ++ [,,,]REF REAL a6 = a3[i]; ++ ++ a1[i] := 3; ++ a2[i,j] := 3; ++ a3[i] := 3; ++ a4[i,j] := 3; ++ a5[i,j,k] := 3; ++ a6[i,j,k,l] := 3; ++ BEGIN REF REF REF REF REF REF REF REF REF REF ++ REF REF REF REF REF REF REF REF REF REF ++ []REAL x; ++ x[i] := 3.0 ++ END ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/idef10.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT count := 0; ++ FOR i FROM 1 BY i DO count +:= 1 OD; # { dg-error "" } # ++ ASSERT (count = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq01.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Mode equivalencing. # ++BEGIN MODE N = UNION(STRUCT(REAL re, im), COMPL); # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq03.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Mode equivalencing. # ++BEGIN MODE M = PROC(M)M, ++ N = PROC(N)N, ++ O = UNION(N,M); # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq05.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Mode equivalencing. # ++BEGIN MODE N = UNION (BYTES, BITS, REF BITS); # { dg-error "" } # ++ MODE SZEREDI = UNION (INT,REAL,REF UNION (INT, REAL)); # { dg-error "" } # ++ # Szeredi - ambiguity. # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq06.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Some equivalencing. # ++BEGIN MODE A = STRUCT (REF A l, REF A r), ++ B = STRUCT (REF B l, REF B r), ++ C = STRUCT (REF D l, REF E r), ++ D = STRUCT (REF E l, REF C r), ++ E = STRUCT (REF C l, REF D r), ++ F = STRUCT (REF STRUCT (REF A l, REF B r) l, ++ REF STRUCT (REF STRUCT (REF C l, REF D r) l, ++ REF STRUCT (REF E l, REF F r) r ++ ) r ++ ); ++ ++ # error - all modes are the same # ++ MODE M = UNION (A,B,C,D,E,F); # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/oper05.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Operator test, mutual recursion. # ++BEGIN PRIO +>=1, +<=1; ++ OP +> = (INT a, b) INT: a+b; ++ 1+>2 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/oper06.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN OP + = (REAL a, b) REAL: a - b; # { dg-error "" } # ++ OP + = (REF REAL a, b) REAL: a - b; # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/oper12.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Operator test, illegal operator. # ++BEGIN OP += = (INT a) INT: -a; ++ OP +:= = (INT a) INT: -a; ++ OP -/:= = (INT a) INT: -a; ++ OP +==: = (INT a) INT: -a; ++ ++ # Correct version. # ++ +=+:=-/:=+==:+==:+=+:=+==:1; ++ # Bad version. # ++ +=+:=-/:=+==:+==+=+:=+==:=1 # { dg-error "" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/oper15.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Incorrect, since not all declarers are of the mode row-of # ++BEGIN UPB UNION ([]INT,BOOL) ([]INT (1)); # { dg-error "" } # ++ LWB UNION (REF[,]STRING,STRING) ("ab"); # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-1.a68 +@@ -0,0 +1,69 @@ ++module Argp = ++def mode ArgOpt = struct (char name, string long_name, ++ bool arg_required, proc(string)bool handler); ++ ++ proc argp = (int p, [][]ArgOpt opts, ++ proc(int,string)bool no_opt_handler, ++ proc(string)void error_handler) void: ++ begin ++ proc getopt = (string prefix, string arg) ArgOpt: ++ begin ArgOpt res, bool found := false; ++ for i to UPB opts while NOT found ++ do for j to UPB opts[i] while NOT found ++ do if arg = long_name of opts[i][j] ++ OR (arg /= " " AND arg = name of opts[i][j]) ++ then res := opts[i][j]; found := true ++ fi ++ od ++ od; ++ (NOT found | error_handler ("unknown option " + prefix + arg)); ++ res ++ end; ++ ++ bool found_dash_dash := false, ++ skip_next_opt := false, ++ continue := true; ++ ++ for i from p to argc while continue ++ do string arg = argv (i); ++ if skip_next_opt ++ then skip_next_opt := false ++ elif arg = "--" AND NOT found_dash_dash ++ then found_dash_dash := true ++ elif found_dash_dash OR (UPB arg >= 1 andth arg[1] /= "-") ++ then continue := no_opt_handler (i + 1, arg) ++ elif UPB arg > 1 andth arg[2] = "-" ++ then { Long option. It may have an argument. } ++ int eqidx = char_in_string (arg, "="); ++ string optname = (eqidx > 0 | arg[3:eqidx - 1] | arg[3:]), ++ optarg = (eqidx > 0 AND UPB arg >= (eqidx + 1) | arg[eqidx + 1:]); ++ ArgOpt opt = getopt ("--", optname); ++ ++ if (arg_required of opt) AND optarg = "" ++ then error_handler ("option --" + arg + " requires an argument") fi; ++ continue := (handler of opt) (optarg) ++ else { This is one or more short options. } ++ for j to UPB arg[2:] ++ do ArgOpt opt = getopt ("-", arg[j + 1]); ++ if arg_required of opt ++ then if i = argc orel (ELEMS argv (i + 1) > 1 andth argv (i + 1)[1] = "-") ++ then error_handler ("option -" + arg[2+j] + " requires an argument") ++ fi; ++ (handler of opt) (argv (i + 1)); ++ skip_next_opt := true ++ else continue := (handler of opt) ("") ++ fi ++ od ++ fi ++ od ++ end; ++ ++ proc char_in_string = (string s, char c) int: ++ begin int res := 0, bool found := false; ++ for i to UPB s while NOT found ++ do (s[i] = c | res := i; found := true) od; ++ res ++ end; ++ ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-2.a68 +@@ -0,0 +1,16 @@ ++module Foo = def pub int idpublic = 10; ++ int idprivate = 20; ++ pub int varpublic := 100; ++ real varprivate := 3.14; ++ pub proc lala = (int a, b) int: a + b; ++ pub proc lele := (int a, b) int: a - b; ++ skip ++ fed, ++ Bar = def pub int idpublic = 30; ++ int idprivate = 40; ++ pub int varpublic := 100; ++ real varprivate := 3.14; ++ pub proc lala = (int a, b) int: a + b; ++ pub proc lele := (int a, b) int: a - b; ++ skip ++ fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-extracts-1.a68 +@@ -0,0 +1,29 @@ ++{ dg-options "-O0 -dA" } ++ ++module Foo = ++def pub mode JURL = union (void,int,real); ++ { dg-final { scan-assembler "mode extract FOO_JURL" } } ++ pub proc plus = (int a, b) int: a + b; ++ { dg-final { scan-assembler "identifier extract FOO_plus" } } ++ pub proc vplus := (int a, b) int: a + b; ++ { dg-final { scan-assembler "identifier extract FOO_vplus" } } ++ pub proc lvplus := (int a, b) int: a + b; ++ { dg-final { scan-assembler "identifier extract FOO_lvplus" } } ++ pub heap proc hvplus := (int a, b) int: a + b; ++ { dg-final { scan-assembler "identifier extract FOO_hvplus" } } ++ pub proc(int,int)int vplus2 = vplus; ++ { dg-final { scan-assembler "identifier extract FOO_vplus2" } } ++ pub proc(int,int)int lvplus2 := lvplus; ++ { dg-final { scan-assembler "identifier extract FOO_lvplus2" } } ++ pub heap proc(int,int)int hvplus2 := hvplus; ++ { dg-final { scan-assembler "identifier extract FOO_hvplus2" } } ++ pub int i; ++ { dg-final { scan-assembler "identifier extract FOO_i" } } ++ int k = 10; ++ { dg-final { scan-assembler-not "identifier extract FOO_k" } } ++ pub prio // = 8; ++ { dg-final { scan-assembler "operator extract FOO_s_s_\[0-9\]+" } } ++ pub op // = (int a, b) int: a % b; ++ { dg-final { scan-assembler "operator extract FOO_s_s_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-1.a68 +@@ -0,0 +1,21 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyInt = int; ++ pub mode MyLongInt = long int; ++ pub mode MyLongLongInt = long long int; ++ pub mode MyShortInt = short int; ++ pub mode MyShortShortInt = short short int; ++ skip ++fed ++ ++{ GA68_MODE_INT = 2UB } ++ ++{ dg-final { scan-assembler-times "2\[\t ]+\[^0-9\]+int" 5 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0xff\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0xfe\[\t \]+\[^\n\]*sizety" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-2.a68 +@@ -0,0 +1,17 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyReal = real; ++ pub mode MyLongReal = long real; ++ pub mode MyLongLongReal = long long real; ++ skip ++fed ++ ++{ GA68_MODE_REAL = 3UB } ++ ++{ dg-final { scan-assembler-times "\[\t \]+0x3\[\t \]+\[^\n\]*real" 3 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-3.a68 +@@ -0,0 +1,12 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyString = string; ++ skip ++fed ++ ++{ GA68_MODE_STRING = 14UB } ++ ++{ dg-final { scan-assembler-times "\[\t \]+0xe\[\t \]+\[^\n\]*string" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-4.a68 +@@ -0,0 +1,12 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyChar = char; ++ skip ++fed ++ ++{ GA68_MODE_CHAR = 6UB } ++ ++{ dg-final { scan-assembler-times "\[\t \]+0x6\[\t \]+\[^\n\]*char" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-5.a68 +@@ -0,0 +1,21 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyBits = bits; ++ pub mode MyLongBits = long bits; ++ pub mode MyLongLongBits = long long bits; ++ pub mode MyShortBits = short bits; ++ pub mode MyShortShortBits = short short bits; ++ skip ++fed ++ ++{ GA68_MODE_BITS = 4UB } ++ ++{ dg-final { scan-assembler-times "4\[\t ]+\[^0-9\]+bits" 5 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0xff\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0xfe\[\t \]+\[^\n\]*sizety" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-6.a68 +@@ -0,0 +1,15 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyBool = bool; ++ pub mode MyVoid = void; ++ skip ++fed ++ ++{ GA68_MODE_BOOL = 7UB ++ GA68_MODE_VOID = 1UB } ++ ++{ dg-final { scan-assembler-times "7\[\t ]+\[^0-9\]+bool" 1 } } ++{ dg-final { scan-assembler-times "1\[\t ]+\[^0-9\]+void" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-7.a68 +@@ -0,0 +1,13 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyName = ref int; ++ skip ++fed ++ ++{ GA68_MODE_NAME = 12UB } ++ ++{ dg-final { scan-assembler-times "0xc\[\t ]+\[^0-9\]+ref" 1 } } ++{ dg-final { scan-assembler-times "0x2\[\t ]+\[^0-9\]+int" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-8.a68 +@@ -0,0 +1,17 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyCompl = compl; ++ pub mode MyLongCompl = long compl; ++ pub mode MyLongLongCompl = long long compl; ++ skip ++fed ++ ++{ GA68_MODE_CMPL = 8UB } ++ ++{ dg-final { scan-assembler-times "0x8\[\t ]+\[^0-9\]+compl" 3 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-9.a68 +@@ -0,0 +1,12 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyProc = proc void; ++ skip ++fed ++ ++{ GA68_MODE_CMPL = 8UB } ++ ++{ dg-final { scan-assembler-times "0xd\[\t ]+\[^0-9\]+proc" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-1.a68 +@@ -0,0 +1,16 @@ ++module Foo = ++def pub mode JORL = int, JURL = union (void,int,real); ++ pub proc plus = (int a, b) int: a + b; ++ pub proc vplus := (int a, b) int: a + b; ++ pub proc lvplus := (int a, b) int: a + b; ++ pub heap proc hvplus := (int a, b) int: a + b; ++ pub proc(int,int)int vplus2 = vplus; ++ pub proc(int,int)int lvplus2 := lvplus; ++ pub heap proc(int,int)int hvplus2 := hvplus; ++ pub int i, x, y; ++ pub int k = 10; ++ pub int j := 20; ++ pub prio // = 8; ++ pub op // = (int a, b) int: a % b; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-1.a68 +@@ -0,0 +1,15 @@ ++{ dg-options "-O0" } ++ ++module Foo = def pub int foo; { dg-final { scan-assembler "FOO_foo" } } ++ int bar; { dg-final { scan-assembler "FOO_bar" } } ++ skip ++ fed, ++ Bar = def pub int foo; { dg-final { scan-assembler "BAR_foo" } } ++ int bar; { dg-final { scan-assembler "BAR_bar" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-10.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio + = 9; ++ op + = (int a, b) int: skip; { dg-final { scan-assembler "FOO_u_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-11.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio - = 9; ++ op - = (int a, b) int: skip; { dg-final { scan-assembler "FOO_m_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-12.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio % = 9; ++ op % = (int a, b) int: skip; { dg-final { scan-assembler "FOO_p_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-13.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio ^ = 9; ++ op ^ = (int a, b) int: skip; { dg-final { scan-assembler "FOO_c_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-14.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio & = 9; ++ op & = (int a, b) int: skip; { dg-final { scan-assembler "FOO_a_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-15.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio ~ = 9; ++ op ~ = (int a, b) int: skip; { dg-final { scan-assembler "FOO_t_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-16.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio ! = 9; ++ op ! = (int a, b) int: skip; { dg-final { scan-assembler "FOO_b_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-17.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio ? = 9; ++ op ? = (int a, b) int: skip; { dg-final { scan-assembler "FOO_q_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-18.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio > = 9; ++ op > = (int a, b) int: skip; { dg-final { scan-assembler "FOO_g_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-19.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio < = 9; ++ op < = (int a, b) int: skip; { dg-final { scan-assembler "FOO_l_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-2.a68 +@@ -0,0 +1,15 @@ ++{ dg-options "-O0" } ++ ++module Foo = def pub struct (int i, real r) foo;{ dg-final { scan-assembler "FOO_foo" } } ++ struct (int i, real r) bar; { dg-final { scan-assembler "FOO_bar" } } ++ skip ++ fed, ++ Bar = def pub struct (int i, real r) foo;{ dg-final { scan-assembler "BAR_foo" } } ++ struct (int i, real r) bar; { dg-final { scan-assembler "BAR_bar" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-20.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio / = 9; ++ op / = (int a, b) int: skip; { dg-final { scan-assembler "FOO_s_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-21.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio = = 9; ++ op = = (int a, b) int: skip; { dg-final { scan-assembler "FOO_e_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-22.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio +:= = 9; ++ op +:= = (int a, b) int: skip; { dg-final { scan-assembler "FOO_u_o_e_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-3.a68 +@@ -0,0 +1,15 @@ ++{ dg-options "-O0" } ++ ++module Foo = def pub int foo = 10; { dg-final { scan-assembler "FOO_foo" } } ++ int bar = 20; { dg-final { scan-assembler "FOO_bar" } } ++ skip ++ fed, ++ Bar = def pub int foo = 30; { dg-final { scan-assembler "BAR_foo" } } ++ int bar = 40; { dg-final { scan-assembler "BAR_bar" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-4.a68 +@@ -0,0 +1,17 @@ ++{ dg-options "-O0" } ++ ++{ Procedure variable declarations. } ++ ++module Foo = def pub proc int foo; { dg-final { scan-assembler "FOO_foo" } } ++ proc int bar := int: skip; { dg-final { scan-assembler "FOO_bar" } } ++ skip ++ fed, ++ Bar = def pub proc int foo; { dg-final { scan-assembler "BAR_foo" } } ++ proc int bar := foo; { dg-final { scan-assembler "BAR_bar" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-5.a68 +@@ -0,0 +1,17 @@ ++{ dg-options "-O0" } ++ ++{ Procedure identity declarations. } ++ ++module Foo = def pub proc foo = int: skip; { dg-final { scan-assembler "FOO_foo" } } ++ proc bar = int: skip; { dg-final { scan-assembler "FOO_bar" } } ++ skip ++ fed, ++ Bar = def pub proc foo = int: skip; { dg-final { scan-assembler "BAR_foo" } } ++ proc bar = int: skip; { dg-final { scan-assembler "BAR_bar" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-6.a68 +@@ -0,0 +1,21 @@ ++{ dg-options "-O0" } ++ ++{ Operator brief identity declarations. } ++ ++module Foo = def pub op + = (int a, b) int: a + b; ++ { dg-final { scan-assembler "FOO_u_" } } ++ op - = (int a, b) int: a - b; ++ { dg-final { scan-assembler "FOO_m_" } } ++ skip ++ fed, ++ Bar = def pub op + = (int a, b) int: a + b; ++ { dg-final { scan-assembler "BAR_u_" } } ++ op - = (int a, b) int: a - b; ++ { dg-final { scan-assembler "BAR_m_" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-7.a68 +@@ -0,0 +1,19 @@ ++{ dg-options "-O0" } ++ ++{ Operator identity declarations. } ++ ++module Foo = ++def prio // = 8; ++ pub op(int,int)int // = lala; ++ { dg-final { scan-assembler "FOO_s_s_" } } ++ proc lala = (int a, b) int: a + b; ++ prio JORL = 8, JURL = 9; ++ pub op(int,int)int JORL = lala; ++ { dg-final { scan-assembler "FOO_JORL" } } ++ op(int,int)int JURL = (int a, b) int: a - b; ++ { dg-final { scan-assembler "FOO_JORL" } } ++ skip ++fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-8.a68 +@@ -0,0 +1,18 @@ ++{ dg-options "-O0" } ++ ++{ Symbols that should _not_ include the module name. } ++ ++module Foo = ++def begin string foo = "foo'n"; { dg-final { scan-assembler-not "FOO_foo" } } ++ proc printfoo = void: puts (foo); { dg-final { scan-assembler-not "FOO_printfoo" } } ++ printfoo ++ end; ++ skip ++postlude ++ int lala; ++ proc incrlala = void: lala +:= 1; { dg-final { scan-assembler-not "FOO_incrlala" } } ++ incrlala ++fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-9.a68 +@@ -0,0 +1,14 @@ ++{ dg-options "-O0" } ++ ++{ Operator symbols are numbered so having overloaded symbols in the ++ module's public range works. } ++ ++module Foo = ++def prio // =9; ++ op // = (int a, b) int: a + b; { dg-final { scan-assembler "FOO_s_s_\[0-9\]+" } } ++ op // = (real a, b) real: a + b; { dg-final { scan-assembler "FOO_s_s_\[0-9\]+" } } ++ skip ++fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-top-down-1.a68 +@@ -0,0 +1,14 @@ ++{ This test is to check that serial clauses and ++ enquiry clauses are properly skipped in module texts. } ++module Foo = ++def int i; ++ int j = 20; ++ string ss; ++ prio // = 8; ++ op // = (int a, b) int: a + b; ++ proc ticks = void: to i do puts ("tick'n") od; ++ i := 5 ++postlude ++ if j > 5 then ticks fi; ++ (j < 0 | puts ("error'n") | puts ("success'n")) ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/compile.exp +@@ -0,0 +1,40 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Compile tests, no torture testing. ++# ++# These tests raise errors in the front end; torture testing doesn't apply. ++ ++load_lib algol68-dg.exp ++ ++# Initialize `dg'. ++dg-init ++ ++# The programs need to be able to find the built modules, which are ++# left in objdir. ++ ++global MODULES_OPTIONS ++set MODULES_OPTIONS "-I $objdir" ++ ++# Main loop. ++set saved-dg-do-what-default ${dg-do-what-default} ++ ++set dg-do-what-default "compile" ++algol68-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/program*.a68]] "" "" ++set dg-do-what-default ${saved-dg-do-what-default} ++ ++# All done. ++dg-finish +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module1.a68 +@@ -0,0 +1,9 @@ ++module Module1 = ++def ++ pub mode MyInt = int; ++ pub int beast_number := 666; ++ pub string who = "jemarch"; ++ puts ("Hello from module'n") ++postlude ++ puts ("Bye from module'n") ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module2.a68 +@@ -0,0 +1,5 @@ ++module Module2 = ++def prio // = 9; { Note priority is not publicized. } ++ pub op // = (int a, b) int: a + b; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module3.a68 +@@ -0,0 +1,6 @@ ++module Module_3 = ++def pub proc foo = (int i, string s) void: skip; ++ pub mode Jorl = struct (int i, string s); ++ pub mode Jurl = union (int, string, real); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module4.a68 +@@ -0,0 +1,4 @@ ++module Module_4 = ++def access Module_3 (foo (10, "foo")); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module5.a68 +@@ -0,0 +1,6 @@ ++module Module_5 = ++def ++ pub mode JSON_Val = union (ref JSON_Elm,int), ++ JSON_Elm = struct (int lala); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module6.a68 +@@ -0,0 +1,5 @@ ++module Module6 = ++ access Module5 ++def pub proc getval = JSON_VAl: skip; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module7.a68 +@@ -0,0 +1,5 @@ ++module Module7 = ++access Module5, Module6 ++def pub JSON_Val val = getval; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module8.a68 +@@ -0,0 +1,5 @@ ++module Module_8 = ++def ++ pub proc lala = ([]struct (string n, v) arg) void: skip; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module9.a68 +@@ -0,0 +1,6 @@ ++module Module_9 = ++def ++ pub mode Foo = struct (flex[1:0]Event events); ++ pub mode Event = int; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-7.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module5 module6 module7" } ++ ++access Module7 (skip) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-8.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module8" } ++ ++access Module_8 ( lala ((("foo", "bar"), ("baz", "quux"))) ) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-9.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module9" } ++ ++access Module_9 (skip) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-error-no-prio-1.a68 +@@ -0,0 +1,6 @@ ++{ dg-modules "module2" } ++ ++access Module_2 ++begin assert (2 // 3 = 5); { dg-error "no priority" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-error-outside-access-1.a68 +@@ -0,0 +1,6 @@ ++{ dg-modules "module1" } ++ ++begin int x = access Module1 ( beast_number ), ++ y = beast_number; { dg-error "declared" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-module-accesses-module-1.a68 +@@ -0,0 +1,5 @@ ++{ dg-modules "module3 module4" } ++{ This test accesses a Module4 that itself accesses a Module3. } ++ ++access Module_4 (skip) ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-proc-arg-order-1.a68 +@@ -0,0 +1,8 @@ ++{ dg-modules "module3" } ++ ++access Module_3 ++begin foo (10, "foo"); ++ Jorl x = (10, "foo"); ++ Jurl y = 3.14; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/nested-comment-1.a68 +@@ -0,0 +1,4 @@ ++{ Comment delimiters within strings get ignored. } ++begin { puts { ("{""'n"); } } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/nested-comment-2.a68 +@@ -0,0 +1,6 @@ ++{ The string in nested comment is in one logical line. } ++begin ++ { puts ("{'n\ ++"); { this prints foo }} ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/operators-firmly-related.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN PRIO MIN = 6; ++ OP MIN = (REF REAL a, b) REF REAL: (a < b | a | b), # { dg-error "firmly related" } # ++ MIN = (REAL a, b) REAL: (a < b | a | b); # { dg-error "firmly related" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/recursive-modes-1.a68 +@@ -0,0 +1,33 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# This program triggered a bug related to incomplete modes. # ++BEGIN MODE REC_MSET = STRUCT (REF REC_MSET_ELM head, tail, ++ INT num elems, ++ PROC(REC_MSET_DATA)BOOL gate), ++ REC_MSET_ELM = STRUCT (REC_MSET_DATA data, BOOL mark, REF REC_MSET_ELM next), ++ REC_MSET_DATA = UNION (REC_RSET,REC_RECORD,REC_FIELD,REC_CMNT), ++ REC_RSET = STRUCT (REC_MSET mset, ++ INT min size, max size, ++ REF REC_RECORD descriptor), ++ REC_RECORD = STRUCT (REC_LOC loc, REC_MSET mset, INT foo), ++ REC_CMNT = STRUCT (REC_LOC loc, STRING content), ++ REC_FIELD = STRUCT (REC_LOC loc, STRING name, value), ++ REC_LOC = STRUCT (STRING source, INT line, char); ++ ++ PROC rec loc unknown = REC_LOC: ++ ("unknown", 0, 0); ++ PROC rec record gate = (REC_MSET_DATA d) BOOL: ++ (d | (REC_FIELD): TRUE, (REC_CMNT): TRUE | FALSE); ++ REF REC_MSET_ELM rec no mset elm = NIL; ++ ++ PROC rec mset new = (PROC(REC_MSET_DATA)BOOL gate) REC_MSET: ++ (HEAP REC_MSET := (rec no mset elm, rec no mset elm, ++ 0, gate)); ++ ++ REF REC_RECORD rec no record = NIL; ++ ++ PROC rec record new = REF REC_RECORD: ++ HEAP REC_RECORD := (rec loc unknown, rec mset new (rec record gate), 0); ++ ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/recursive-modes-2.a68 +@@ -0,0 +1,7 @@ ++begin mode Word = union (int, struct (ref Word w)), ++ Value = union (void,Word), ++ Stack = struct (ref Stack prev, Value val); ++ ++ struct (Word a) qs; { type_2 has no size! } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/serial-clause-jump-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# This is an infinite loop, but it should compile just fine an yield ++ an integer after infinite time. # ++ ++BEGIN foo: foo ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/snobol.a68 +@@ -0,0 +1,1100 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# This is Frank Pagan's SNOBOL4 Interpreter in ALGOL 68 (1976), ++ fetched from Dick Grune's page https://dickgrune.com/CS/Algol68/ ++ ++ The interpreter described in "Algol 68 as an Implementation Language\ ++ for Portable Interpreters", ACM SIGPLAN Notices - Proceedings of the ++ Strathclyde ALGOL 68 conference, Volume 12 Issue 6, June 1977, ++ pp. 54 - 62, and "A Highly-Structured Interpreter for a SNOBOL4 ++ Subset", Software: Practice and Experience, Vol. 9, 4, ++ pp. 281-312, April 1979. ++ ++ Modifications by Jose E. Marchesi: ++ - Use the simple POSIX-like transput provided by GCC. ++ - Read programs from lines rather than from cards. ++ - Add command-line option -l (listing). ++# ++ ++BEGIN PROC itoa = (INT i) STRING: ++ BEGIN IF i = 0 ++ THEN "0" ++ ELSE INT n := ABS i; ++ STRING res; ++ WHILE n /= 0 ++ DO INT rem = n %* 10; ++ res := REPR (rem > 9 | (rem - 10) + ABS "a" | rem + ABS "0") + res; ++ n %:= 10 ++ OD; ++ (i < 0 | "-" + res | res) ++ FI ++ END; ++ ++ CHAR sharp = REPR 35; # Sharp character, ++ to avoid confusing Emacs. # ++ ++ # Input file. # ++ INT filein; ++ ++ # IMPLEMENTATION RESTRICTIONS # ++ INT spoolsize = 400, ++ stlim = 50, ++ arglim = 5, ++ rslim = 80, ++ pslim = 20, ++ ftlim = 10; ++ ++ # ABSTRACT MACHINE # ++ MODE ITEM = UNION (INT, REF STRINGITEM, PATTERN), ++ STRINGITEM = STRUCT (STRING val, REF ITEM ref), ++ PATTERN = REF[]COMPONENT, ++ COMPONENT = STRUCT (INT routine, subsequent, alternate, extra, ++ REF ITEM arg), ++ PSENTRY = STRUCT (INT cursor, alternate), ++ RSENTRY = REF ITEM, ++ FTENTRY = STRUCT (REF ITEM fnname, entry name, ++ REF[]REF ITEM params, locals); ++ ++ [1:spoolsize] REF ITEM spool; ++ [1:pslim] PSENTRY pattern stack; ++ [1:rslim] RSENTRY run stack; ++ [1:ftlim] FTENTRY function table; ++ ++ BOOL failed := FALSE; ++ INT nin, psp, rsp := 0, ftp := 0; ++ INT mstr = 1, mlen = 2, mbrk = 3, mspn = 4, many = 5, mnul = 6, ++ miv1 = 7, miv2 = 8, m1 = 9, mat = 10, mpos = 11, mtab = 12, ++ mrpos = 13, mrtab = 14, mnty = 15; ++ ++ # INTERNAL FORM OF PROGRAMS # ++ ++ MODE STMT = STRUCT (REF IDR label, ++ UNION (REF ASMT, REF MATCH, ++ REF REPL, REF EXPR) stmt core, ++ REF GOTOFIELD goto), ++ IDR = STRUCT (REF ITEM idr addr), ++ NUM = STRUCT (REF ITEM num addr), ++ LSTR = STRUCT (REF ITEM lstr addr), ++ ASMT = STRUCT (REF EXPR subject, object), ++ MATCH = STRUCT (REF EXPR subject, pattern), ++ REPL = STRUCT (REF EXPR subject, pattern, object), ++ EXPR = UNION (REF UNARYEXPR, REF BINARYEXPR, IDR, NUM, ++ LSTR, REF CALL), ++ GOTOFIELD = STRUCT (REF DEST upart, spart, fpart), ++ DEST = UNION (REF EXPR, CHAR), ++ UNARYEXPR = STRUCT (REF EXPR operand, CHAR operator), ++ BINARYEXPR = STRUCT (REF EXPR operand1, operand2, ++ CHAR operator), ++ CALL = STRUCT (IDR fnname, REF[]REF EXPR args); ++ ++ REF[]STMT t; ++ REF ITEM prog entry := NIL; ++ ++ PROC error = (STRING mess) VOID: ++ (puts ("error: " + mess + "'n"); stop); ++ ++ # TRANSLATION PHASE # ++ ++ BEGIN # DECLARATIONS FOR SCANNER # ++ STRING card, INT cp, # SOURCE LINE AND POINTER # ++ CHAR ch, # SOURCE CHARACTER # ++ [1:80]CHAR str, INT sp, # STRING BUFFER AND POINTER # ++ CHAR tok, # TOKEN CODE # ++ REF ITEM psn, # POSITION OF A CREATED VALUE # ++ INT nv, # NUMERIC VALUE OF CONSTANT # ++ INT stn, # SOURCE STATEMENT NUMBER # ++ BOOL listing, # FLAG FOR SOURCE LISTING # ++ CHAR c; # TEMPORARY # ++ ++ # TOKEN MNEMONICS # ++ CHAR doll = "$", bdoll = "D", ++ plus = "+", bplus = "P", ++ minus = "-", bminus = "M", ++ at = "@", bbar = "!", ++ bstar = "*", bslash = "/", ++ lpar = "(", rpar = ")", ++ comma = ",", colon = ":", ++ equal = "=", blank = " ", ++ eos = ";", name = "A", ++ lstring = "L", number = "U", ++ endt = "E", ret = "R", ++ fret = "F", stok = "Y", ++ ftok = "Z"; ++ ++ PROC get card = VOID: ++ BEGIN cp := 0; ++ WHILE card := fgets (filein, 80); ++ IF UPB card = 0 THEN exit FI; ++ c := card[1]; ++ IF c /= "." AND c /= "+" AND c /= "-" AND c /= "*" ++ THEN stn := stn + 1 FI; ++ IF listing THEN puts (itoa (stn) + " " + card + "'n") FI; ++ IF c = "-" ++ THEN IF card[2:5] = "LIST" ++ THEN listing := TRUE ++ ELIF card[2:7] = "UNLIST" ++ THEN listing := FALSE ++ FI ++ FI; ++ c = "-" OR c = "*" ++ DO SKIP OD; ++ exit: SKIP ++ END; ++ ++ PROC next ch = VOID: ++ IF cp = UPB card ++ THEN get card; ++ IF c = "." OR c = "+" ++ THEN ch := " "; cp := 1 ++ ELSE ch := sharp # END OF LINE AND STATEMENT # ++ FI ++ ELSE ch := card[cp +:= 1] ++ FI; ++ ++ PROC lookup = (STRING sv) REF ITEM : ( ++ INT i := 0, BOOL nf := TRUE; ++ WHILE IF (i +:= 1) <= nin ++ THEN nf := sv /= val OF (spool[i] | (REF STRINGITEM s) : s) ++ ELSE FALSE ++ FI ++ DO SKIP OD; ++ IF nf ++ THEN IF nin = spoolsize THEN error ("too many strings") FI; ++ spool[nin +:= 1] := HEAP ITEM := HEAP STRINGITEM := ++ (sv, NIL) ++ FI; ++ spool[i]); ++ ++ PROC scan = VOID: ++ IF ch = " " # BLANKS AND BINARY OPERATORS # ++ THEN WHILE next ch; ch = " " DO SKIP OD; ++ # IGNORE TRAILING BLANKS IN A STATEMENT # ++ IF ch = ";" THEN next ch; stn := stn + 1; tok := eos ++ ELIF ch = sharp THEN next ch; tok := eos ++ ELIF ch = "!" OR ch = "$" OR ch = "+" OR ch = "-" ++ OR ch = "*" OR ch = "/" ++ THEN IF card[cp+1] = " " ++ THEN c := ch; ++ WHILE next ch; ch = " " DO SKIP OD ; ++ tok := (c = "!" | bbar ++ |: c = "$" | bdoll ++ |: c = "-" | bminus ++ |: c = "+" | bplus ++ |: c = "*" | bstar ++ | bslash) ++ ELSE tok := blank ++ FI ++ ELSE tok := blank ++ FI ++ ELIF ch = "''" OR ch = """" # LITERAL STRINGS # ++ THEN c := ch; sp := 0; ++ WHILE next ch; ++ IF ch = sharp THEN error ("UNTERMINATED LITERAL") FI; ++ (str[sp +:= 1] := ch) /= c ++ DO SKIP OD ; ++ next ch; ++ tok := lstring; ++ IF sp = 1 ++ THEN psn := NIL ++ ELSE STRING s = str[1:sp-1] ; ++ psn := lookup (s) ++ FI ++ ELIF ch >= "0" AND ch <= "9" # NUMBERS # ++ THEN nv := 0 ; ++ WHILE nv := nv * 10 + ABS ch - ABS "0"; ++ next ch; ++ ch >= "0" AND ch <= "9" ++ DO SKIP OD ; ++ tok := number; ++ psn := HEAP ITEM := nv ++ ELIF ch >= "A" AND ch <= "Z" # NAMES # ++ THEN sp := 0; ++ WHILE str[sp +:= 1] := ch; ++ next ch; ++ ch = "." OR ch >= "A" AND ch <= "Z" ++ OR ch >= "0" AND ch <= "9" ++ DO SKIP OD ; ++ STRING s = str[1:sp]; ++ tok := (s = "S" | stok ++ |: s = "F" | ftok ++ |: s = "END" | endt ++ |: s = "RETURN" | ret ++ |: s = "FRETURN" | fret ++ | psn := lookup (s); name) ++ ELIF ch = ";" ++ THEN next ch; stn := stn + 1; tok := eos ++ ELIF ch = sharp ++ THEN next ch; tok := eos ++ ELSE # ( ) , : = @ $ + - # ++ tok := ch; next ch ++ FI; ++ ++ PROC init = VOID: ++ BEGIN stn := 0; ++ spool[nin := 1] := HEAP ITEM := HEAP STRINGITEM := ++ ("ARB", HEAP ITEM := HEAP[1:3]COMPONENT := ++ ((mnul, 2, 0, SKIP, NIL), ++ (mnul, 0, 3, SKIP, NIL), ++ (m1, 2, 0, SKIP, NIL))); ++ get card; ++ next ch; ++ scan ++ END; ++ ++ PROC verify = (CHAR token) VOID: ++ IF tok = token THEN scan ++ ELSE STRING s := "TOKEN "" "" DOES NOT OCCUR WHERE EXPECTED"; ++ s[8] := token; ++ error (s) ++ FI; ++ ++ PROC translate = VOID: ++ BEGIN HEAP[1:stlim]STMT ss, INT ssc := 0; ++ WHILE IF ssc = stlim THEN error ("TOO MANY STATEMENTS") FI; ++ tok /= endt ++ DO ss[ssc +:= 1] := trans stmt OD; ++ scan; ++ IF tok = blank ++ THEN scan; ++ IF tok = name THEN prog entry := psn FI ++ FI; ++ t := ss[1:ssc] ++ END; ++ ++ PROC trans stmt = STMT: ++ BEGIN ++ REF IDR lab := NIL; ++ REF EXPR subj, pat, obj := NIL; ++ REF GOTOFIELD go := NIL; ++ BOOL asgn; ++ ++ PROC move to obj = STMT: ++ BEGIN ++ IF tok = blank ++ THEN scan; ++ IF tok = colon ++ THEN go := trans gofield ++ ELSE obj := trans expr; ++ IF tok = colon ++ THEN go := trans gofield ++ ELSE verify (eos) ++ FI ++ FI ++ ELSE verify (eos) ++ FI ; ++ IF asgn ++ THEN STMT (lab, HEAP ASMT := (subj, obj), go) ++ ELSE STMT (lab, HEAP REPL := (subj, pat, obj), go) ++ FI ++ END; ++ ++ PROC move to subj = STMT: ++ BEGIN scan; ++ IF tok = colon ++ THEN STMT (lab, REF EXPR (NIL), trans gofield) ++ ELSE subj := trans elem; ++ IF tok = blank ++ THEN scan; ++ IF tok = colon ++ THEN STMT (lab, REF EXPR (subj), trans gofield) ++ ELIF tok = equal ++ THEN asgn := TRUE; scan; move to obj ++ ELSE pat := trans expr; ++ IF tok = colon ++ THEN STMT (lab, HEAP MATCH := (subj, pat), trans gofield) ++ ELIF tok = equal ++ THEN asgn := FALSE; scan; move to obj ++ ELSE verify (eos); ++ STMT (lab, HEAP MATCH := (subj, pat), NIL) ++ FI ++ FI ++ ELSE verify (eos); ++ STMT (lab, REF EXPR (subj), NIL) ++ FI ++ FI ++ END; ++ ++ # Body of trans stmt. # ++ IF tok = name ++ THEN lab := HEAP IDR; idr addr OF lab := psn; scan; ++ IF tok = blank ++ THEN move to subj ++ ELSE verify (eos); ++ STMT (lab, REF EXPR (NIL), NIL) ++ FI ++ ELIF tok = blank ++ THEN move to subj ++ ELSE verify (eos); ++ STMT (lab, REF EXPR (NIL), NIL) ++ FI ++ END; ++ ++ PROC trans gofield = REF GOTOFIELD: ++ BEGIN PROC where = REF DEST: ++ BEGIN HEAP DEST d; ++ verify (lpar); ++ IF tok = blank THEN scan FI; ++ d := (tok = endt | scan; "E" ++ |: tok = ret | scan; "R" ++ |: tok = fret | scan; "F" ++ | trans expr); ++ verify (rpar); ++ d ++ END; ++ ++ REF DEST uncond := NIL, succ := NIL, fail := NIL; ++ scan; IF tok = blank THEN scan FI; ++ IF tok = stok ++ THEN scan; succ := where; ++ IF tok = blank THEN scan FI; ++ IF tok = ftok THEN scan; fail := where FI; ++ verify (eos) ++ ELIF tok = ftok ++ THEN scan; fail := where; ++ IF tok = blank THEN scan FI; ++ IF tok = stok THEN scan; succ := where FI; ++ verify (eos) ++ ELSE uncond := where; verify (eos) ++ FI; ++ HEAP GOTOFIELD := (uncond, succ, fail) ++ END; ++ ++ PROC trans expr = REF EXPR: ++ BEGIN REF EXPR e := trans expr1; ++ WHILE tok = bbar ++ DO scan; ++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans expr1, "!") ++ OD; ++ e ++ END; ++ ++ PROC trans expr1 = REF EXPR: ++ BEGIN REF EXPR e := trans expr2; ++ WHILE tok = blank ++ DO scan; ++ IF tok /= colon AND tok /= rpar AND tok /= comma AND tok /= equal ++ THEN e := HEAP EXPR := HEAP BINARYEXPR := (e, trans expr2, "C") ++ FI ++ OD; ++ e ++ END; ++ ++ PROC trans expr2 = REF EXPR: ++ BEGIN REF EXPR e := trans term; ++ CHAR opr; ++ WHILE tok = bplus OR tok = bminus ++ DO opr := (tok = bplus | "+" | "-"); ++ scan; ++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans term, opr) ++ OD; ++ e ++ END; ++ ++ PROC trans term = REF EXPR: ++ BEGIN REF EXPR e := trans term1; ++ WHILE tok = bslash ++ DO scan; ++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans term1, "/") ++ OD; ++ e ++ END; ++ ++ PROC trans term1 = REF EXPR: ++ BEGIN REF EXPR e := trans term2; ++ WHILE tok = bstar ++ DO scan; ++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans term2, "*") ++ OD; ++ e ++ END; ++ ++ PROC trans term2 = REF EXPR: ++ BEGIN REF EXPR e := trans elem; ++ WHILE tok = bdoll ++ DO scan; ++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans elem, "$") ++ OD; ++ e ++ END; ++ ++ PROC trans elem = REF EXPR: ++ IF tok = doll OR tok = plus OR tok = minus OR tok = at ++ THEN CHAR opr = tok; ++ scan; ++ HEAP EXPR := HEAP UNARYEXPR := (trans element, opr) ++ ELSE trans element ++ FI; ++ ++ PROC trans element = REF EXPR: ++ IF tok = name ++ THEN IDR n; ++ idr addr OF n := psn; ++ scan; ++ IF tok /= lpar ++ THEN HEAP EXPR := n ++ ELSE HEAP[1:arglim]REF EXPR a, INT ac := 0; ++ WHILE scan; ++ IF tok = blank THEN scan FI; ++ IF ac = arglim ++ THEN error ("TOO MANY ARGUMENTS IN FUNCTION CALL") ++ FI; ++ IF NOT (ac = 0 AND tok = rpar) ++ THEN a[ac +:= 1] := (tok = comma OR tok = rpar | NIL | trans expr) ++ FI; ++ IF tok /= comma AND tok /= rpar ++ THEN error ("ERROR IN ARGUMENT LIST") ++ FI; ++ tok = comma ++ DO SKIP OD; ++ scan; ++ HEAP EXPR := HEAP CALL := (n, a[1:ac]) ++ FI ++ ELIF tok = lstring ++ THEN LSTR ls; ++ lstr addr OF ls := psn; ++ scan; ++ HEAP EXPR := ls ++ ELIF tok = number ++ THEN NUM nu; num addr OF nu := psn; ++ scan; ++ HEAP EXPR := nu ++ ELSE verify (lpar); ++ IF tok = blank THEN scan FI; ++ REF EXPR e = trans expr; ++ verify (rpar); ++ e ++ FI; ++ ++ PROC usage = VOID: ++ BEGIN puts ("Usage: snobol [-l] FILE'n"); ++ stop ++ END; ++ ++ listing := FALSE; ++ IF argc < 2 THEN usage FI; ++ FOR i FROM 2 TO argc ++ DO IF argv (i) = "-l" THEN listing := TRUE ++ ELIF filein = 0 ++ THEN filein := fopen (argv (i), file o rdonly); ++ IF (filein = -1) ++ THEN error ("opening " + argv (i) + ": " + strerror (errno)) FI ++ ELSE usage ++ FI ++ OD; ++ init; ++ translate ++ END; # TRANSLATION PHASE # ++ ++ BEGIN # INTERPRETATION PHASE # ++ ++ OP INTG = (REF ITEM a) INT: (a | (INT i) : i), ++ STR = (REF ITEM a) REF STRINGITEM: (a | (REF STRINGITEM s): s), ++ PAT = (REF ITEM a) PATTERN: (a | (PATTERN p) : p); ++ BOOL fn success; ++ ++ PROC interpret = (INT stmt no) VOID: ++ BEGIN INT sn := stmt no; BOOL cycling := TRUE; ++ ++ PROC jump = (REF DEST dest) VOID: ++ BEGIN failed := FALSE; ++ CASE dest ++ IN (REF EXPR e): sn := find label (eval softly (e)), ++ (CHAR c): IF c = "E" THEN sn := UPB t + 1 ++ ELIF c = "R" THEN fn success := TRUE; ++ cycling := FALSE ++ ELSE # c = "F" # fn success := cycling := FALSE ++ FI ++ ESAC ++ END; ++ ++ WHILE cycling ++ DO IF sn > UPB t THEN stop FI; ++ failed := FALSE; ++ ++ # EXECUTE STATEMENT CORE # ++ CASE stmt core OF t[sn] ++ IN (REF ASMT a): ++ (REF ITEM sp = eval softly (subject OF a); ++ assign (sp, eval strongly (object OF a))), ++ (REF MATCH m): ++ (REF ITEM svp = eval strongly (subject OF m); ++ match (convert to str (svp), ++ convert to pat (eval strongly (pattern OF m)))), ++ (REF REPL r): ++ (REF ITEM sp = eval softly (subject OF r); ++ REF ITEM pp = convert to pat (eval strongly (pattern OF r)); ++ REF ITEM svp = convert to str (ref OF (STR sp)); ++ INT c = match (svp, pp); ++ REF ITEM b = (svp IS NIL | NIL | make str ((val OF (STR svp))[c+1:])); ++ REF ITEM obp = eval strongly (object OF r); ++ assign (sp, concatenate (obp, b))), ++ (REF EXPR e): ++ eval strongly (e) ++ ESAC; ++ ++ # PROCESS GOTO FIELD # ++ REF GOTOFIELD go = goto OF t[sn]; ++ IF go IS NIL THEN sn := sn + 1 ++ ELIF REF DEST (upart OF go) ISNT NIL ++ THEN jump (upart OF go) ++ ELIF NOT failed AND (REF DEST (spart OF go) ISNT NIL) ++ THEN jump (spart OF go) ++ ELIF failed AND (REF DEST (fpart OF go) ISNT NIL) ++ THEN jump (fpart OF go) ++ ELSE sn := sn + 1 ++ FI ++ OD ++ END; # END OF INTERPRET # ++ ++ PROC find label = (REF ITEM label ptr) INT: ++ BEGIN INT stmt no := 0; ++ IF failed THEN error ("FAILURE IN GOTO FIELD") FI; ++ FOR i TO UPB t WHILE stmt no = 0 ++ DO IF (REF IDR (label OF t[i]) IS NIL ++ | FALSE ++ | label ptr IS idr addr OF label OF t[i]) ++ THEN stmt no := i ++ FI ++ OD; ++ IF stmt no = 0 THEN error ("UNDEFINED LABEL") FI; ++ stmt no ++ END; ++ ++ PROC match = (REF ITEM subject ptr, pattern ptr) INT: ++ IF failed ++ THEN 0 ++ ELSE PATTERN p = PAT pattern ptr; ++ STRING subj = (subject ptr IS NIL | "" | val OF (STR subject ptr)); ++ INT u = UPB subj; ++ INT iarg, # INTEGER COMPONENT ARGUMENT # ++ STRING sarg, # STRING COMPONENT ARGUMENT # ++ INT l; # LENGTH OF SARG # ++ INT cn := 1, # COMPONENT NUMBER # ++ c := 0, # CURSOR # ++ code; # NEW CURSOR OR -1 IF COMPONENT NO-MATCH # ++ BOOL matching := TRUE; ++ ++ psp := 0; # CLEAR PATTERN STACK # ++ WHILE matching ++ DO IF alternate OF p[cn] /= 0 ++ THEN # PUSH PATTERN STACK # ++ pattern stack[psp +:= 1] := (c, alternate OF p[cn]) ++ FI; ++ IF REF ITEM (arg OF p[cn]) ISNT NIL ++ THEN CASE arg OF p[cn] ++ IN (INT i) : iarg := i, ++ (REF STRINGITEM s): ++ (sarg := val OF s; l := UPB sarg) ++ ESAC ++ FI; ++ ++ # EXECUTE INDICATED MATCHING ROUTINE # ++ CASE routine OF p[cn] ++ IN # MSTR # ++ IF REF ITEM (arg OF p[cn]) IS NIL ++ THEN code := c ++ ELIF c + l > u THEN code := -1 ++ ELSE code := (sarg = subj[c+1:c+l] | c + l | -1) ++ FI, ++ # MLEN # ++ code := (iarg <= u - c | c + iarg | -1), ++ # MBRK # ++ IF c >= u THEN code := -1 ++ ELSE INT n = break scan (subj[c+1:], sarg); ++ code := (n < u - c | c + n | -1) ++ FI, ++ # MSPN # ++ IF c >= u THEN code := -1 ++ ELIF any (sarg, subj[c+1]) ++ THEN INT j := c + 1; ++ FOR i FROM c + 2 TO u WHILE any (sarg, subj[i]) ++ DO j := i OD; ++ code := j ++ ELSE code := -1 ++ FI, ++ # MANY # ++ IF c >= u ++ THEN code := -1 ++ ELSE code := (any (sarg, subj[c+1]) | c + 1 | -1) ++ FI, ++ # MNUL # ++ code := c, ++ # MIV1 # ++ code := extra OF p[cn] := c, ++ # MIV2 # ++ (INT m = extra OF p[cn - extra OF p[cn]] + 1; ++ assign (arg OF p[cn], make str (subj[m:c])); ++ code := c), ++ # M1 # ++ code := (1 <= u - c | c + 1 | -1), ++ # MAT # ++ (assign (arg OF p[cn], make int (c)); ++ code := c), ++ # MPOS # ++ code := (c = iarg | c | -1), ++ # MTAB # ++ code := (c <= iarg AND iarg <= u | iarg | -1), ++ # MRPOS # ++ code := (u - c = iarg | c | -1), ++ # MRTAB # ++ code := (u - c >= iarg | u - iarg | -1), ++ # MNTY # ++ IF c >= u ++ THEN code := -1 ++ ELSE code := (any (sarg, subj[c+1]) | -1 | c + 1) ++ FI ++ ESAC; ++ ++ # DECIDE WHAT TO DO NEXT # ++ IF code >= 0 ++ THEN IF subsequent OF p[cn] = 0 ++ THEN matching := FALSE #SUCCESSFUL TERMINATION # ++ ELSE cn := subsequent OF p[cn]; ++ c := code # CONTINUE # ++ FI ++ ELIF psp = 0 ++ THEN failed := TRUE; ++ matching := FALSE # STMT FAILURE # ++ ELSE # POP PATTERN STACK TO BACKTRACK # ++ cn := alternate OF pattern stack[psp]; ++ c := cursor OF pattern stack[psp]; ++ psp := psp - 1 ++ FI ++ OD; ++ (failed | 0 | code) ++ FI; # END OF MATCH PROCEDURE # ++ ++ PROC assign = (REF ITEM subject ptr, object ptr) VOID: ++ IF failed THEN SKIP ++ ELSE REF STRINGITEM s = STR subject ptr; ++ ref OF s := object ptr; ++ IF val OF s = "OUTPUT" ++ THEN IF object ptr IS NIL ++ THEN puts ("'n") ++ ELSE CASE object ptr ++ IN (REF STRINGITEM r): puts ((val OF r) + "'n"), ++ (INT i): puts (itoa (i) + "'n"), ++ (PATTERN): (error ("ATTEMPT TO OUTPUT PATTERN"); SKIP) ++ ESAC ++ FI ++ FI ++ FI; ++ ++ PROC eval softly = (REF EXPR expression) REF ITEM: ++ IF failed THEN SKIP ++ ELSE CASE expression # CAN NEVER BE NIL # ++ IN (IDR id): idr addr OF id, ++ (REF UNARYEXPR ue): ++ IF operator OF ue = "$" ++ THEN REF ITEM r = convert to str (eval strongly (operand OF ue)); ++ IF r IS NIL ++ THEN error ("NULL RESULT WHERE VAR REQUIRED"); ++ SKIP ++ ELSE r ++ FI ++ ELSE error ("INAPPROPRIATE UNARY EXPR WHERE VAR REQUIRED"); ++ SKIP ++ FI ++ OUT error ("INAPPROPRIATE EXPR WHERE VAR REQUIRED"); ++ SKIP ++ ESAC ++ FI; ++ ++ PROC eval strongly = (REF EXPR expression) REF ITEM: ++ IF failed THEN SKIP ++ ELIF expression IS NIL THEN NIL ++ ELSE CASE expression ++ IN (IDR id): ++ (REF STRINGITEM s = STR (idr addr OF id); ++ IF val OF s = "INPUT" ++ THEN STRING line; ++ # SNOBOL programs read data from stdin. # ++ line := gets (80); ++ IF (line = "") THEN failed := TRUE; eof FI; ++ assign (idr addr OF id, make str (line)); ++ eof: SKIP ++ FI; ++ ref OF s), ++ (NUM nbr): ++ num addr OF nbr, ++ (LSTR ls): ++ lstr addr OF ls, ++ (REF UNARYEXPR ue): ++ (REF ITEM arg ptr = (operator OF ue = "@" ++ | eval softly (operand OF ue) ++ | eval strongly (operand OF ue)); ++ eval unary (arg ptr, operator OF ue)), ++ (REF BINARYEXPR be): ++ (REF ITEM arg1 ptr = eval strongly (operand1 OF be); ++ REF ITEM arg2 ptr = (operator OF be = "$" ++ | eval softly (operand2 OF be) ++ | eval strongly (operand2 OF be)); ++ eval binary (arg1 ptr, arg2 ptr, operator OF be)), ++ (REF CALL cl): ++ (INT n = UPB args OF cl; ++ [1:n]REF ITEM arglist; ++ FOR i TO n ++ DO arglist[i] := eval strongly ((args OF cl)[i]) OD; ++ eval call (idr addr OF fnname OF cl, arglist)) ++ ESAC ++ FI; ++ ++ PROC eval unary = (REF ITEM arg ptr, CHAR opr) REF ITEM: ++ IF failed THEN SKIP ++ ELSE IF opr = "$" ++ THEN IF arg ptr IS NIL ++ THEN error ("INDIRECTION APPLIED TO NULL STRING"); ++ SKIP ++ ELSE ref OF (STR convert to str (arg ptr)) ++ FI ++ ELIF opr = "+" ++ THEN convert to int (arg ptr) ++ ELIF opr = "-" ++ THEN INT k = INTG convert to int (arg ptr); ++ make int (-k) ++ ELSE # OPR = "@" # ++ make pat comp (mat, arg ptr) ++ FI ++ FI; ++ ++ PROC eval binary = (REF ITEM arg1 ptr, arg2 ptr, CHAR opr) REF ITEM: ++ IF failed THEN SKIP ++ ELSE IF opr = "$" ++ THEN REF ITEM c = concatenate (make pat comp (miv1, NIL), ++ arg1 ptr); ++ concatenate (c, make pat comp (miv2, arg2 ptr)) ++ ELIF opr = "*" OR opr = "/" OR opr = "+" OR opr = "-" ++ THEN INT m = INTG convert to int (arg1 ptr), ++ n = INTG convert to int (arg2 ptr); ++ make int ((opr = "*" | m * n ++ |: opr = "/" | m OVER n ++ |: opr = "+" | m + n | m - n)) ++ ELIF opr = "C" ++ THEN concatenate (arg1 ptr, arg2 ptr) ++ ELSE # OPR = "!" # ++ PATTERN p1 = PAT convert to pat (arg1 ptr), ++ p2 = PAT convert to pat (arg2 ptr); ++ INT u1 = UPB p1, u2 = UPB p2; ++ PATTERN p = HEAP[u1 + u2]COMPONENT, ++ INT offset = u1 + 1, INT j := 1; ++ p[1:u1] := p1[1:u1]; ++ WHILE alternate OF p[j] /= 0 ++ DO j := alternate OF p[j] OD; ++ alternate OF p[j] := offset; ++ FOR i FROM offset TO u1 + u2 ++ DO p[i] := p2 [i - u1]; ++ IF subsequent OF p[i] /= 0 ++ THEN subsequent OF p[i] +:= u1 ++ FI; ++ IF alternate OF p[i] /= 0 ++ THEN alternate OF p[i] +:= u1 ++ FI ++ OD; ++ HEAP ITEM := p ++ FI ++ FI; ++ ++ PROC eval call = (REF ITEM name ptr, REF[]REF ITEM arglist) REF ITEM: ++ IF failed THEN SKIP ++ ELSE # SEARCH FUNCTION TABLE FOR NAME # ++ BOOL not found := TRUE, INT j; ++ FOR i TO ftp WHILE not found ++ DO IF name ptr IS fnname OF function table[i] ++ THEN j := i; not found := FALSE ++ FI ++ OD; ++ IF not found ++ THEN exec prim fn (name ptr, arglist) ++ ELSE #PROGRAMMER-DEFINED FUNCTION # ++ ++ PROC stack = (REF ITEM a) VOID: ++ (IF rsp = rslim THEN error ("RUN STACK OVERFLOW") FI; ++ run stack [rsp +:= 1] := a); ++ ++ PROC unstack = REF ITEM: ++ (IF rsp = 0 THEN error ("RETURN FROM LEVEL 0") FI; ++ run stack [(rsp -:= 1) + 1]); ++ ++ REF STRINGITEM name = STR name ptr; ++ ++ # ENTRY PROTOCOL # ++ stack (ref OF name); ++ assign (name ptr, NIL); ++ REF[]REF ITEM params = params OF function table[j], ++ INT n = UPB arglist; ++ IF UPB params /= n ++ THEN error ("WRONG NUMBER OF ARGUMENTS IN CALL") ++ FI; ++ FOR i TO n ++ DO stack (ref OF (STR params[i])); ++ assign (params[i], arglist[i]) ++ OD; ++ REF[]REF ITEM locals = locals OF function table[j]; ++ FOR i TO UPB locals ++ DO stack (ref OF (STR locals[i])); ++ assign (locals[i], NIL) ++ OD; ++ ++ interpret (find label (entry name OF function table[j])); ++ ++ # RETURN PROTOCOL # ++ FOR i FROM UPB locals BY -1 TO 1 ++ DO assign (locals[i], unstack) OD; ++ FOR i FROM n BY -1 TO 1 ++ DO assign (params[i], unstack) OD; ++ REF ITEM result = ref OF name; ++ assign (name ptr, unstack); ++ (fn success | result | failed := TRUE ; SKIP) ++ FI ++ FI; ++ ++ PROC exec prim fn = (REF ITEM name ptr, ++ REF[]REF ITEM arglist) REF ITEM: ++ BEGIN ++ PROC gen1 = (INT routine) REF ITEM: ++ BEGIN # CREATE PATTERN COMPONENT WITH STRING ARGUMENT # ++ REF ITEM arg = convert to str (arglist[1]); ++ IF arg IS NIL ++ THEN error ("NULL ARG FOR PATTERN-VALUED PRIMITIVE FUNCTION" ) ++ FI; ++ make pat comp (routine, arg) ++ END; ++ ++ PROC gen2 = (INT routine) REF ITEM: ++ BEGIN # CREATE PATTERN COMPONENT WITH INTEGER ARGUMENT # ++ REF ITEM arg = convert to int (arglist[1]); ++ IF INTG arg < 0 ++ THEN error ("NEGATIVE ARG FOR PATTERN-VALUED PRIMITIVE FUNCTION") ++ FI; ++ make pat comp (routine, arg) ++ END; ++ ++ STRING fn = val OF (STR name ptr), INT n = UPB arglist; ++ IF fn = "LE" AND n = 2 ++ THEN IF INTG convert to int (arglist[1]) ++ <= INTG convert to int (arglist[2]) ++ THEN NIL ++ ELSE failed := TRUE; ++ SKIP ++ FI ++ ELIF fn = "EQ" AND n = 2 ++ THEN IF INTG convert to int (arglist[1]) ++ = INTG convert to int (arglist[2]) ++ THEN NIL ++ ELSE failed := TRUE; ++ SKIP ++ FI ++ ELIF fn = "NE" AND n = 2 ++ THEN IF INTG convert to int (arglist[1]) ++ /= INTG convert to int (arglist[2]) ++ THEN NIL ++ ELSE failed := TRUE; ++ SKIP ++ FI ++ ELIF fn = "IDENT" AND n = 2 ++ THEN IF REF ITEM (arglist[1]) IS arglist[2] ++ THEN NIL ++ ELSE failed := TRUE; ++ SKIP ++ FI ++ ELIF fn = "DIFFER" AND n = 2 ++ THEN IF REF ITEM (arglist[1]) ISNT arglist[2] ++ THEN NIL ++ ELSE failed := TRUE; ++ SKIP ++ FI ++ ELIF fn = "ANY" AND n = 1 THEN gen1 (many) ++ ELIF fn = "LEN" AND n = 1 THEN gen2 (mlen) ++ ELIF fn = "POS" AND n = 1 THEN gen2 (mpos) ++ ELIF fn = "TAB" AND n = 1 THEN gen2 (mtab) ++ ELIF fn = "SPAN" AND n = 1 THEN gen1 (mspn) ++ ELIF fn = "RPOS" AND n = 1 THEN gen2 (mrpos) ++ ELIF fn = "RTAB" AND n = 1 THEN gen2 (mrtab) ++ ELIF fn = "BREAK" AND n = 1 THEN gen1 (mbrk) ++ ELIF fn = "NOTANY" AND n = 1 THEN gen1 (mnty) ++ ELIF fn = "SIZE" AND n = 1 ++ THEN make int (UPB val OF (STR convert to str (arglist[1]))) ++ ELIF fn = "DEFINE" AND n = 2 ++ THEN IF REF ITEM (arglist[1]) IS NIL ++ THEN error ("NULL PROTOTYPE") FI; ++ STRING prototype = val OF (STR convert to str (arglist[1])); ++ REF ITEM entry = convert to str (arglist[2]); ++ IF entry IS NIL THEN error ("NULL ENTRY LABEL") FI; ++ ++ PROC check and find = (STRING str) REF ITEM: ++ BEGIN IF UPB str = 0 THEN error ("ILLEGAL PROTOTYPE") FI; ++ STRING an = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789."; ++ IF NOT any (an[:26], str[1]) ++ THEN error ("ILLEGAL PROTOTYPE") FI; ++ FOR i FROM 2 TO UPB str ++ DO IF NOT any (an, str[i]) ++ THEN error ("ILLEGAL PROTOTYPE") ++ FI ++ OD; ++ make str (str) ++ END; ++ ++ PROC breakup = (STRING str) REF[]REF ITEM: ++ BEGIN #ANALYZE A LIST OF IDENTIFIERS # ++ [1:arglim]REF ITEM r, INT p := 0, a := 1, b; ++ WHILE a <= UPB str ++ DO b := break scan (str[a:], ","); ++ IF p >= arglim ++ THEN error ("TOO MANY PARAMETERS OR LOCALS IN PROTOTYPE") FI; ++ r[p +:= 1] := check and find (str[a:a+b-1]); ++ a := a + b + 1 ++ OD; ++ HEAP[1:p]REF ITEM := r[:p] ++ END; ++ ++ INT lp = UPB prototype; ++ INT a = break scan (prototype, "("); ++ IF a >= lp THEN error ("ILLEGAL PROTOTYPE") FI; ++ REF ITEM name ptr = check and find (prototype[:a]); ++ INT b = break scan (prototype[a+2:], ")"); ++ IF b >= lp - a - 1 THEN error ("ILLEGAL PROTOTYPE") FI; ++ REF[]REF ITEM params = breakup (prototype[a+2:a+1+b]); ++ REF[]REF ITEM locals = breakup (prototype[a+b+3:]); ++ ++ BOOL not found := TRUE; ++ FOR i TO ftp WHILE not found ++ DO IF name ptr IS fnname OF function table[i] ++ THEN not found := FALSE; ++ function table[i] := (name ptr, entry, params, locals) ++ FI ++ OD; ++ IF not found ++ THEN IF ftp = ftlim ++ THEN error ("FUNCTION TABLE OVERFLOW") FI; ++ function table [ftp +:= 1] := (name ptr, entry, params, locals) ++ FI; ++ NIL # RESULT OF DEFINE(...) # ++ ELSE error ("ILLEGAL FUNCTION CALL"); ++ SKIP ++ FI ++ END; ++ ++ PROC concatenate = (REF ITEM ptr1, ptr2) REF ITEM: ++ BEGIN ++ ++ PROC concat patterns = (PATTERN p1, p2) REF ITEM: ++ BEGIN INT u1 = UPB p1, u2 = UPB p2; ++ PATTERN p = HEAP[u1 + u2]COMPONENT; ++ INT offset = u1 + 1; ++ FOR i TO u1 ++ DO p[i] := p1[i]; ++ IF subsequent OF p[i] = 0 ++ THEN subsequent OF p[i] := offset FI ++ OD; ++ FOR i FROM offset TO u1 + u2 ++ DO p[i] := p2[i - u1]; ++ IF subsequent OF p[i] /= 0 ++ THEN subsequent OF p[i] +:= u1 FI; ++ IF alternate OF p[i] /= 0 ++ THEN alternate OF p[i] +:= u1 FI ++ OD; ++ IF u2 = 1 AND routine OF p[offset] = miv2 ++ THEN extra OF p[offset] := u1 FI; ++ HEAP ITEM := p ++ END; ++ ++ IF failed THEN SKIP ++ ELSE IF ptr1 IS NIL THEN ptr2 ++ ELIF ptr2 IS NIL THEN ptr1 ++ ELSE CASE ptr1 ++ IN (PATTERN p1): ++ concat patterns (p1, PAT convert to pat (ptr2)) ++ OUSE ptr2 ++ IN (PATTERN p2): ++ concat patterns (PAT convert to pat (ptr1), p2) ++ OUT STRING s1 = val OF (STR convert to str (ptr1)); ++ make str (s1 + val OF (STR convert to str (ptr2))) ++ ESAC ++ FI ++ FI ++ END; ++ ++ PROC convert to int = (REF ITEM ptr) REF ITEM: ++ IF failed THEN SKIP ++ ELSE IF ptr IS NIL THEN make int (0) ++ ELSE CASE ptr ++ IN (INT): ptr, ++ (PATTERN): (error ("PATTERN VALUE WHERE INTEGER REQUIRED"); SKIP), ++ (REF STRINGITEM s): ++ (INT n := 0, d, z := ABS "0"; ++ FOR i TO UPB val OF s ++ DO d := ABS (val OF s)[i] - z; ++ IF d < 0 OR d > 9 ++ THEN error ("STRING NOT CONVERTIBLE TO INTEGER") FI; ++ n := n * 10 + d ++ OD; ++ make int (n)) ++ ESAC ++ FI ++ FI; ++ ++ PROC convert to pat = (REF ITEM ptr) REF ITEM: ++ IF failed THEN SKIP ++ ELSE IF ptr IS NIL ++ THEN make pat comp (mstr, NIL) ++ ELSE CASE ptr ++ IN (PATTERN): ptr ++ OUT make pat comp (mstr, convert to str (ptr)) ++ ESAC ++ FI ++ FI; ++ ++ PROC convert to str = (REF ITEM ptr) REF ITEM: ++ IF failed THEN SKIP ++ ELSE IF ptr IS NIL THEN ptr ++ ELSE CASE ptr ++ IN (REF STRINGITEM): ptr, ++ (PATTERN): (error ("PATTERN VALUE WHERE STRING REQUIRED"); SKIP), ++ (INT i): make str (itoa (i)) ++ ESAC ++ FI ++ FI; ++ ++ PROC make int = (INT val) REF ITEM: ++ IF failed THEN SKIP ++ ELSE HEAP ITEM := val ++ FI; ++ ++ PROC make pat comp = (INT routine, REF ITEM arg) REF ITEM: ++ IF failed THEN SKIP ++ ELSE HEAP ITEM := HEAP[1:1]COMPONENT := COMPONENT (routine, 0, 0, SKIP, arg) ++ FI; ++ ++ PROC make str = (STRING val) REF ITEM: ++ IF failed THEN SKIP ++ ELIF UPB val = 0 THEN NIL ++ ELSE INT i := 0, BOOL nf := TRUE; ++ WHILE IF (i +:= 1) <= nin ++ THEN nf := val /= val OF (STR spool [i]) ++ ELSE FALSE ++ FI ++ DO SKIP OD; ++ IF nf ++ THEN IF nin = spoolsize THEN error ("TOO MANY STRINGS") FI; ++ spool[nin +:= 1] := HEAP ITEM := HEAP STRINGITEM := (val, NIL) ++ FI; ++ spool[i] ++ FI; ++ ++ PROC break scan = (STRING str, arg) INT: ++ BEGIN # RESULT = UPB STR IF NO BREAK CHAR, LESS OTHERWISE # ++ INT j := 0; ++ FOR i TO UPB str WHILE NOT any (arg, str[i]) ++ DO j := i OD; ++ j ++ END; ++ ++ PROC any = (STRING str, CHAR ch) BOOL: ++ BEGIN BOOL nf; ++ FOR i TO UPB str WHILE nf := ch /= str[i] DO SKIP OD; ++ NOT nf ++ END; ++ ++ interpret ((REF ITEM (prog entry) IS NIL | 1 | find label (prog entry))) ++ END # INTERPRETATION PHASE # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-1.a68 +@@ -0,0 +1,11 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode Some_Mode = real; ++ Some_Mode some_real := random; ++ ++ puts ("Hello time for SUPPER!\n"); ++ if some_real > 0.5 ++ then puts ("YES\n") ++ else puts ("NO\n") ++ fi ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-10.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode BEGIN = int; ++ BEGIN some_int = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-11.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode BEGIN = int; ++ BEGIN some_int = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-12.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin for i while i < 10 ++ do puts ("lala\n") ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-13.a68 +@@ -0,0 +1,7 @@ ++{ dg-options "-fstropping=supper" } ++ ++{ mode_ should not be recognized as a symbol. } ++ ++begin int mode_ = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-2.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin int foo_bar = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-3.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin int foo_bar_ = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-4.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin int foo_ = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-5.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode Foo_bar = int; ++ Foo_bar some_int = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-6.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin go to done; ++done: skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-7.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin goto done; ++done: skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-8.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode Int = int; ++ Int some_int = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-9.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode BEGIN = int; ++ BEGIN some_int = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/uniting-1.a68 +@@ -0,0 +1,8 @@ ++{ dg-options {-fstropping=supper} } ++begin mode JSON_Val = union (int,ref JSON_Obj), ++ JSON_Obj = struct (int je), ++ ++ proc json_new_obj = JSON_Val: ++ (JSON_Obj o; o); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/upper-1.a68 +@@ -0,0 +1,11 @@ ++# { dg-options {-fstropping=upper} } # ++ ++BEGIN MODE SOME_MODE = REAL; ++ SOME_MODE some_real := random; ++ ++ puts ("Hello time for SUPPER!\n"); ++ IF some_real > 0.5 ++ THEN puts ("YES\n") ++ ELSE puts ("NO\n") ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-1.a68 +@@ -0,0 +1,6 @@ ++{ dg-options "-Whidden-declarations" } ++begin ++ op UPB = (union (int,string) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-2.a68 +@@ -0,0 +1,6 @@ ++{ dg-options "-Whidden-declarations" } ++begin ++ op UPB = (union ([]int,string) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-3.a68 +@@ -0,0 +1,5 @@ ++{ dg-options "-Whidden-declarations" } ++begin op UPB = (union (int,union(string,real)) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-4.a68 +@@ -0,0 +1,6 @@ ++{ dg-options "-Whidden-declarations" } ++begin ++ op UPB = (int i, union (int,string) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-5.a68 +@@ -0,0 +1,9 @@ ++{ dg-options "-Whidden-declarations=none" } ++begin real b; ++ begin int getchar = 10; ++ int b; ++ op UPB = (int i, union (int,string) v) int: ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++ end ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-6.a68 +@@ -0,0 +1,9 @@ ++{ dg-options "-Whidden-declarations=prelude" } ++begin real b; ++ begin int getchar = 10; { dg-warning "hides" } ++ int b; ++ op UPB = (int i, union (int,string) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++ end ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-7.a68 +@@ -0,0 +1,9 @@ ++{ dg-options "-Whidden-declarations=all" } ++begin real b; ++ begin int getchar = 10; { dg-warning "hides" } ++ int b; { dg-warning "hides" } ++ op UPB = (int i, union (int,string) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++ end ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-module-hidding-1.a68 +@@ -0,0 +1,6 @@ ++{ dg-options "-Whidden-declarations=all" } ++ ++module Foo = def int i; i := 10 postlude puts ("bye foo'n") fed, ++ Bar = def int j; j := 20 ++ postlude int j; puts ("bye bar'n") fed, { dg-warning "hidden" } ++ Baz = def skip fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-pub-loc-1.a68 +@@ -0,0 +1,7 @@ ++module Foo = ++def pub ref int xx = loc int := 777; { dg-warning "" } ++ pub ref int yy; ++ pub ref int zz = heap int := 888; ++ ref int vv = loc int := 999; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Potential scope violation warnings are disabled by default. # ++BEGIN PROC increase = (REF INT i) REF INT: ++ BEGIN INT j := i; ++ j # Inhibited warning. # ++ END; ++ increase (LOC INT) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++BEGIN PROC increase = (REF INT i) REF INT: ++ BEGIN ++ INT j := i; ++ j # { dg-warning "scope violation" } # ++ END; ++ increase (LOC INT) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-3.a68 +@@ -0,0 +1,3 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++(REF INT xx; ++ xx := (INT x; x := 3)) # { dg-warning "scope violation" } # +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-4.a68 +@@ -0,0 +1,3 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++(REF INT xx; ++ (INT x; xx:= x; x := 3)) # { dg-warning "scope violation" } # +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-5.a68 +@@ -0,0 +1,8 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++# The scope violation here is due to the routine text, which is copied ++ to P, referring to a value whose range doesn't exist anymore: X # ++BEGIN (PROC REAL p; ++ (REAL x; ++ p := REAL: x * 2); # { dg-warning "scope violation" } # ++ p) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-6.a68 +@@ -0,0 +1,6 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++BEGIN (PROC REAL p; REAL mypi := 3.14; ++ (REAL x; ++ p := REAL: mypi * 2); # No scope violation here. # ++ p) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-7.a68 +@@ -0,0 +1,12 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++# N,M below represent pairs of insc, outsc # ++BEGIN (INT x; ++ REF INT xx; ++ (REF INT yy; ++ INT y; ++ xx := yy; # 0,0 := 1,0. Dynamic check. # ++ yy := y; # 1,1 := 1,1. OK # ++ xx := y # 0,0 := 1,1. { dg-warning "scope violation" } # ++ ) ++ ) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-voiding-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options {-Wvoiding -fstropping=upper} } # ++BEGIN PROC sum = (INT a, INT b) INT: ++ ( a + b ); ++ sum (10, 20) # { dg-warning "will be voided" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-voiding-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN PROC sum = (INT a, INT b) INT: ++ ( a + b ); ++ sum (10, 20) # Voiding warning won't be emitted by default. # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-bits-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# ABS for SIZETY BITS # ++BEGIN ASSERT (255 = ABS 16rff); ++ ASSERT (LONG 255 = ABS LONG 16rff); ++ ASSERT (LONG LONG 255 = ABS LONG LONG 16rff) ++ # XXX test ABS of negative numbers (extension). # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-bool-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (ABS TRUE /= 0); ++ ASSERT (ABS FALSE = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-char-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (ABS "a" = 97) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (ABS 10 = 10); ++ ASSERT (ABS -10 = 10); ++ ASSERT (ABS SHORT 10 = SHORT 10); ++ ASSERT (ABS - SHORT 10 = SHORT 10); ++ ASSERT (ABS - SHORT SHORT 10 = SHORT SHORT 10); ++ ASSERT (ABS LONG 10 = LONG 10); ++ ASSERT (ABS - LONG 10 = LONG 10); ++ ASSERT (ABS - LONG LONG 10 = LONG LONG 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-int-negative-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper -std=algol68" } # ++BEGIN SHORT SHORT BITS b = BIN - SHORT SHORT 2; ++ ASSERT (ABS b = SHORT SHORT INT (SKIP)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-int-negative-gnu-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper -std=gnu68" } # ++BEGIN SHORT SHORT BITS b = BIN - SHORT SHORT 2; ++ ASSERT (ABS b = - SHORT SHORT 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/acos-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 1.0; ++ LONG REAL rr = LONG 45.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (arccos (r) = 0.0); ++ long arccos (rr); ++ long long arccos (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/affirm-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (+i = 10); ++ ASSERT (+ii = LONG 10); ++ ASSERT (+iii = LONG LONG 10); ++ ASSERT (+ss = SHORT 10); ++ ASSERT (+sss = SHORT SHORT 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/and-bits-1.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++# AND for SIZETY BITS. # ++BEGIN BITS b = 16r0f0f0; ++ ASSERT ((b AND 16r0f0f) = 16r0); ++ ASSERT ((b AND 16r00ff) = 16rf0); ++ LONG BITS bb = LONG 16r0f0f0; ++ ASSERT ((bb AND LONG 16r0f0f) = LONG 16r0); ++ ASSERT ((bb AND LONG 16r00ff) = LONG 16rf0); ++ LONG LONG BITS bbb = LONG LONG 16r0f0f0; ++ ASSERT ((bbb AND LONG LONG 16r0f0f) = LONG LONG 16r0); ++ ASSERT ((bbb AND LONG LONG 16r00ff) = LONG LONG 16rf0); ++ SHORT BITS ss = SHORT 16r0f0f0; ++ ASSERT ((ss AND SHORT 16r0f0f) = SHORT 16r0); ++ ASSERT ((ss AND SHORT 16r00ff) = SHORT 16rf0); ++ SHORT SHORT BITS sss = SHORT SHORT 16r0f0f0; ++ ASSERT ((sss AND SHORT SHORT 16r0f0f) = SHORT SHORT 16r0); ++ ASSERT ((sss AND SHORT SHORT 16r00ff) = SHORT SHORT 16rf0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/andf-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ ASSERT (i /= 0 ANDTH i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ascription-1.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Make sure structs are copied when ascribed. # ++BEGIN MODE BAR = STRUCT (INT j, REAL r); ++ MODE FOO = STRUCT (INT i, BAR bar); ++ ++ FOO f1 := (10, (20, 3.14)); ++ FOO f2 = f1; ++ ++ j OF bar OF f1 := 200; ++ ASSERT (j OF bar OF f1 = 200); ++ ASSERT (j OF bar OF f2 = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/asin-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 0.0; ++ LONG REAL rr = LONG 45.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (arcsin (r) = 0.0); ++ long arcsin (rr); ++ long long arcsin (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assert-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (TRUE) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-char-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN CHAR c; ++ c := "x"; ++ ASSERT (c = "x") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-int-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i; ++ i := 20; ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-int-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN x := 100; ++ INT x; ++ ASSERT (x = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-int-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF INT j = LOC INT; ++ INT i; ++ i := j := 20; ++ ASSERT (i + j = 40) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-int-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF INT xx; ++ INT x := 10; ++ ASSERT ((xx := (x)) = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-int-5.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := x; ++ x := 20; ++ ASSERT ((xx := (INT j; x)) = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-multiple-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRUCT ([2:3]INT m, [1:5]REAL g) s; ++ g OF s:= (1.0, 2.0, 3.0, 4.0, 5.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-multiple-2.a68 +@@ -0,0 +1,15 @@ ++begin [5]struct(char i, real r) foo; ++ ++ { The stride in the single dimension of the multiple resulting ++ from the selection is not the size of a 'char'. } ++ i of foo := ("a","b","c","d","e"); ++ puts ((i of foo) + "'n"); ++ { Via indexing then selection. } ++ assert (i of foo[1] = "a"); ++ assert (i of foo[2] = "b"); ++ assert (i of foo[3] = "c"); ++ assert (i of foo[4] = "d"); ++ assert (i of foo[5] = "e"); ++ { Via selection of multiple. } ++ assert (i of foo = "abcde"); ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-struct-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT one, two, three); ++ NODE top; ++ top := (10,20,30); ++ ASSERT (two OF top = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-struct-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Struct containing a multiple, which must be copied when ++ the struct value is assigned. # ++BEGIN MODE FOO = STRUCT (STRING s, INT i); ++ FOO f1; ++ f1 := ("foo", 10); ++ ASSERT (i OF f1 = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/atan-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 0.0; ++ LONG REAL rr = LONG 45.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (arctan (r) = 0.0); ++ long arctan (rr); ++ long long arctan (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/balancing-1.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL x, y; ++ REF REAL xx, yy; ++ xx := yy := x; ++ ++ ASSERT (xx :=: x); ++ ASSERT (x :=: xx); ++ ASSERT (xx :/=: yy); ++ ASSERT (REF REAL (xx) :=: yy); ++ ASSERT (xx :=: REF REAL (yy)); ++ ASSERT (REF REAL (xx) :=: REF REAL (yy)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/balancing-rows-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (UPB IF FALSE THEN []INT (1) ELSE [,]REAL (1) FI = 1); ++ ASSERT (2 UPB CASE 2 IN []INT (1), [,]REAL (1) ESAC = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/bin-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# BIN for SIZETY INTs # ++BEGIN ASSERT (BIN 255 = 16rff); ++ ASSERT (BIN LONG 255 = LONG 16rff); ++ ASSERT (BIN LONG LONG 255 = LONG LONG 16rff) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/bin-negative-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper -std=algol68" } # ++BEGIN ASSERT (BIN - SHORT SHORT 2 = SHORT SHORT 2r0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/bin-negative-gnu-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper -std=gnu68" } # ++BEGIN ASSERT (BIN - SHORT SHORT 2 = SHORT SHORT 2r11111110) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/boolops-1.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BOOL t := TRUE; ++ BOOL f := FALSE; ++ ASSERT (NOT t = FALSE); ++ ASSERT (~t = FALSE); ++ ASSERT ((t AND t) = TRUE); ++ ASSERT ((t AND f) = FALSE); ++ ASSERT ((f AND f) = FALSE); ++ ASSERT ((f AND t) = FALSE); ++ ASSERT ((t OR t) = TRUE); ++ ASSERT ((t OR f) = TRUE); ++ ASSERT ((f OR f) = FALSE); ++ ASSERT ((f OR t) = TRUE); ++ ASSERT ((t XOR t) = FALSE); ++ ASSERT ((t XOR f) = TRUE); ++ ASSERT ((f XOR f) = FALSE); ++ ASSERT ((f XOR t) = TRUE) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/call-1.a68 +@@ -0,0 +1,19 @@ ++# { dg-options "-fstropping=upper" } # ++# Calling a procedure that gets a row of united values. # ++BEGIN INT num ints := 0, num reals := 0, num strings := 0; ++ PROC foo = ([]UNION(INT,REAL,STRING) d) VOID: ++ BEGIN FOR i TO UPB d ++ DO CASE d[i] ++ IN (STRING): num strings +:= 1, ++ (INT): num ints +:= 1, ++ (REAL): num reals +:= 1 ++ ESAC ++ OD ++ END; ++ foo (()); ++ foo (10); ++ ASSERT (num ints = 1 AND num reals = 0 AND num strings = 0); ++ num ints := 0; ++ foo (("baz", 1, 3.14, 2, 0.0, "foo")); ++ ASSERT (num ints = 2 AND num reals = 2 AND num strings = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/call-2.a68 +@@ -0,0 +1,21 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT control := 0; ++ PROC set control = (PROC(INT)VOID p) VOID: p (100); ++ PROC setter = (INT i) VOID: control := i; ++ PROC(INT)VOID setter 2 = (INT i) VOID: control := i + 1; ++ PROC(INT)VOID setter 3 := setter 2; ++ PROC(INT)VOID setter 4 := (INT i) VOID: control := i + 2; ++ REF PROC(INT)VOID setter 5 := setter 4; ++ set control (setter); ++ ASSERT (control = 100); ++ set control (setter 2); ++ ASSERT (control = 101); ++ control := 0; ++ set control (setter 3); ++ ASSERT (control = 101); ++ set control (setter 4); ++ ASSERT (control = 102); ++ control := 0; ++ set control (setter 5); ++ ASSERT (control = 102) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/case-clause-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT j := 1; ++ ASSERT ((j|10,20,30|40) = 10); ++ j := 2; ++ ASSERT ((j|10,20,30|40) = 20); ++ j := 3; ++ ASSERT ((j|10,20,30|40) = 30); ++ j := 100; ++ ASSERT ((j|10,20,30|40) = 40) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/case-clause-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 2; ++ ASSERT (CASE INT x = 10; i ++ IN x + 1, ++ x + 2, ++ x + 3 ++ ESAC = 12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/case-clause-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT days, INT month = 2, year = 2024; ++ days := CASE month ++ IN 31, (year MOD 4 = 0 AND year MOD 100 /= 0 OR year MOD 400 = 0 | 29 | 28), ++ 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ESAC; ++ ASSERT (days = 29) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/case-clause-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT day = 3; ++ STRING day name = (day | "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"); ++ ASSERT (day name[1] = "W") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/closed-clause-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL pie, my small real := 0.001; ++ PROC my sqrt = (REAL r) REAL: r; ++ BEGIN REAL w := 0, INT i := 1, REAL z = my sqrt (my small real / 2); ++ loop: w := w + 2 / (i * (i + 2)); ++ i := i + 4; ++ IF 1/i > z THEN GO TO loop FI; ++ pie := 4 * w ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/closed-clause-2.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL my small real := 0.001; ++ PROC my sqrt = (REAL r) REAL: r; ++ REAL res = 4 * (REAL w := 0, INT i := 1; REAL z = my sqrt (my small real / 2); ++ loop: w := w + 2/(i * (i + 2)); i := i + 4; ++ IF 1/i > z THEN loop FI; ++ w); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ (i, i + 1, i + 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-2.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ ( ++ BEGIN ++ (i + 1, i +:= 1, i + 2) ++ END ++ ); ++ ASSERT (i = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-3.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ ( ++ i +:= 1; ++ BEGIN ++ (i + 1, (i +:= 1, i + 10, i + 11, SKIP), i + 2) ++ END; ++ i +:= i ++ ); ++ ASSERT (i = 24) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-4.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN (SKIP,SKIP) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x, y, z; ++ (x := 1, y := 2, z := 3); ++ ASSERT (x = 1 AND y = 2 AND z = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-6.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i; ++ PROC side = INT: (i := 1; i := 2; i); ++ PROC add = (INT ii, INT jj) INT: ii + jj; ++ INT res = add (side, side); ++ # can be 3 or 4 due to collateral evaluation of arguments. # ++ ASSERT (res = 3 OR res = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i; ++ BEGIN (i := 20 EXIT ++cont: i := 30 ++ ); ++ i +:= 1 ++ END; ++ ASSERT (i = 21) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-10.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 20; ++ REF INT xx := x; ++ REF REF INT xxx; ++ REF INT i := (x := 10; xxx := xx EXIT foo: xxx EXIT bar: xxx := xx); ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = (foo; ++ 10 EXIT ++foo: 20 EXIT ++bar: 30); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-3.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = ((((foo; 10 EXIT foo: 20 EXIT bar: 30)))); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-4.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := (foo; 10 EXIT foo: 20 EXIT bar: 30); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x; ++ REF INT i := (foo; x := 10 EXIT foo: x := 20 EXIT bar: x := 30); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-6.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 20; ++ REF INT i := (foo; x := 10 EXIT foo: x EXIT bar: x := 30); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-7.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 20; ++ REF INT i := (x := 10 EXIT foo: x EXIT bar: x := 30); ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-8.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 20; ++ REF INT i := (x EXIT foo: x EXIT bar: x := 30); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-9.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 20; ++ REF INT xx := x; ++ REF INT i := (xx EXIT foo: xx EXIT bar: xx := x); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10, x; ++ IF i > 5 THEN x := i FI; ++ ASSERT (x = i) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10, x; ++ IF i < 5 THEN x = i FI; ++ ASSERT (x /= i) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 5; ++ IF i = 5 ++ THEN 0 ++ ELSE ASSERT (FALSE); 1 ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-4.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++# Declarations in enquiry clause. # ++(INT i; i := 3 ; i := 2; i /= i | ASSERT (FALSE); 1 | 0) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-5.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++# Closed clauses in enquiry clause. # ++((INT i; (i := 3 ; i := 2); ((i /= i))) | ASSERT (FALSE); 1 | 0) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-6.a68 +@@ -0,0 +1,23 @@ ++# { dg-options "-fstropping=upper" } # ++# Nested conditional clauses # ++BEGIN ++ INT i = 10; ++ IF i > 5 THEN ++ IF i < 15 THEN ++ IF i > 11 THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ 0 ++ FI ++ FI ++ ELSE ++ IF i > 100 THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ ASSERT (FALSE); ++ 1 ++ FI ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-7.a68 +@@ -0,0 +1,23 @@ ++# { dg-options "-fstropping=upper" } # ++# Nested conditional clauses # ++BEGIN ++ INT i = 12; ++ IF i > 5 THEN ++ IF i < 15 THEN ++ IF i > 11 THEN ++ 0 ++ ELSE ++ ASSERT (FALSE); ++ 1 ++ FI ++ FI ++ ELSE ++ IF i > 100 THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ ASSERT (FALSE); ++ 1 ++ FI ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-8.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++# ELIF # ++BEGIN ++ INT i = 12; ++ IF i > 20 THEN ++ 1 ++ ELIF i > 5 THEN ++ BEGIN ++ IF FALSE THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ 0 ++ FI ++ END ++ ELIF i < 10 THEN ++ ASSERT (FALSE); ++ 1 ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-9.a68 +@@ -0,0 +1,23 @@ ++# { dg-options "-fstropping=upper" } # ++# ELIF with ELSE # ++BEGIN ++ INT i = 12; ++ IF i > 20 THEN ++ 1 ++ ELIF i > 12 THEN ++ BEGIN ++ IF FALSE THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ ASSERT (FALSE); ++ 1 ++ FI ++ END ++ ELIF i < 10 THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ 0 ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE DATUM = UNION(INT,REAL,CHAR); ++ DATUM datum := 10; ++ INT i = CASE datum ++ IN (REAL): 2, ++ (INT i): i + 1, ++ (CHAR): 3 ++ ESAC; ++ ASSERT (i = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-2.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE DATUM = UNION(INT,REAL,CHAR); ++ DATUM datum := "X"; ++ INT i = CASE datum ++ IN (REAL): 2, ++ (INT val): val + 1 ++ OUT INT x = 100; ++ x + 10 ++ ESAC; ++ ASSERT (i = 110) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-3.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE DATUM = UNION(INT,REAL,CHAR); ++ DATUM datum := 20; ++ INT i = CASE INT i = 10; datum ++ IN (REAL): 2, ++ (INT val): val + i ++ OUT INT x = 100; ++ x + 10 ++ ESAC; ++ ASSERT (i = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-4.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []UNION(INT,STRING,REAL) datum = (10, 3.14, "foo", 200); ++ ASSERT (CASE datum[1] IN (INT): 100 ESAC = 100); ++ ASSERT (CASE datum[2] IN (REAL): 200 ESAC = 200); ++ ASSERT (CASE datum[3] IN (STRING): 300 ESAC = 300); ++ ASSERT (CASE datum[4] IN (INT): 400 ESAC = 400) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-5.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION(CHAR,BOOL,INT,REAL) cbira := "X"; ++ IF CASE cbira ++ IN (BOOL b): b, ++ (INT i): i > 0, ++ (REAL r): r > 0 ++ OUT FALSE ++ ESAC ++ THEN # We get here if cbira was not a CHAR and was otherwise ++ TRUE or >0, as the case may be. ++ # ++ ASSERT (FALSE) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-6.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION (CHAR,BOOL,REAL) cbra = 3.14, UNION (INT,REAL) ira = 10; ++ IF (cbra | (CHAR): FALSE, (BOOL b): b ++ |: ira | (INT i): i > 0, (REAL r): r > 0) ++ THEN SKIP ++ ELSE ASSERT (FALSE) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-7.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION (CHAR,BOOL,REAL) cbra = 3.14, UNION (INT,REAL) ira = -10; ++ IF (cbra | (CHAR): FALSE, (BOOL b): b ++ |: ira | (INT i): i > 0, (REAL r): r > 0) ++ THEN ASSERT (FALSE) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-8.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE JORL = STRUCT (UNION(INT,REAL) i, REF JORL next); ++ REF JORL p := HEAP JORL := (10, HEAP JORL := (20.0, NIL)); ++ p := HEAP JORL := (30, p); ++ INT num ints := 0, num reals := 0; ++ WHILE REF JORL (p) ISNT NIL ++ DO CASE i OF p IN (INT): num ints +:= 1, (REAL): num reals +:= 1 ESAC; ++ p := next OF p ++ OD; ++ ASSERT (num ints = 2 AND num reals = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-9.a68 +@@ -0,0 +1,10 @@ ++begin union (int, bool, string) foo = 666; ++ case foo ++ in (union(int,string) bar): ++ case bar ++ in (int i): assert (i = 666), ++ (string s): assert (false) ++ esac, ++ (bool baz): assert (false) ++ esac ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conj-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN COMPL z = 4.0I5.0; ++ CONJ z; ++ LONG COMPL zz = LONG 4.0 I LONG 6.0; ++ CONJ zz; ++ LONG LONG COMPL zzz = LONG LONG 4.0 I LONG LONG 7.0; ++ CONJ zzz; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cos-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 0.0; ++ LONG REAL rr = LONG 45.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (cos (r) = 1.0); ++ long cos (rr); ++ long long cos (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/declarer-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Tests a jump out of the elaboration of a declarer. # ++BEGIN STRING month = CASE 13 ++ IN "Jan", "Feb","March","April","May","June", ++ "July","Aug","Sept", "Oct", "Nov","Dec", ++ stop ++ ESAC; ++ ASSERT (FALSE) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/declarer-2.a68 +@@ -0,0 +1,6 @@ ++begin int n := 1; ++ { The actual-declarer below should be ++ elaborated only once. } ++ [1: n +:= 1]real a, b; ++ assert (n = 2) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deprocedure-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x = 100; ++ PROC foo = INT: (INT i = 10, j = 20; PROC bar = INT: 100; i + j + bar); ++ ASSERT (foo = 130) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deprocedure-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Procedure variables. # ++BEGIN INT x = 100; ++ PROC foo := INT: (INT i = 10, j = 20; PROC bar := INT: 100; i + j + bar); ++ ASSERT (foo = 130) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ INT res := (REF INT xx := x; xx); ++ ASSERT (res = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := x; ++ x := 20; ++ ASSERT (xx = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-3.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ INT y := 20; ++ REF INT xx := x; ++ CO This makes xx to refer to y ++ REF REF INT := REF INT ++ CO ++ xx := y; ++ y := 30; ++ ASSERT (xx = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-4.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ INT y := 20; ++ REF INT xx := x; ++ # This sets x to the current value of y # ++ REF INT (xx) := y; ++ ASSERT (x = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-5.a68 +@@ -0,0 +1,42 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := x; ++ REF REF INT xxx := xx; ++ ASSERT (x = 10); ++ ASSERT (xx = 10); ++ ASSERT (xxx = 10); ++ ASSERT ((x) = 10); ++ ASSERT ((xx) = 10); ++ ASSERT ((xxx) = 10); ++ ASSERT (x + 1 = 11); ++ ASSERT (xx + 1 = 11); ++ ASSERT (xxx + 1 = 11); ++ ASSERT ((x + 1) = 11); ++ ASSERT ((xx + 1) = 11); ++ ASSERT ((xxx + 1) = 11); ++ ASSERT ((x := x) = 10); ++ ASSERT ((xx := x) = 10); ++ ASSERT ((xxx := xx) = 10); ++ ASSERT ((x := x) + 1 = 11); ++ ASSERT ((xx := x) + 1 = 11); ++ ASSERT ((xxx := xx) + 1 = 11); ++ x := 20; ++ ASSERT (x = 20); ++ ASSERT (xx = 20); ++ ASSERT (xxx = 20); ++ ASSERT ((x) = 20); ++ ASSERT ((xx) = 20); ++ ASSERT ((xxx) = 20); ++ ASSERT (x + 1 = 21); ++ ASSERT (xx + 1 = 21); ++ ASSERT (xxx + 1 = 21); ++ ASSERT ((x + 1) = 21); ++ ASSERT ((xx + 1) = 21); ++ ASSERT ((xxx + 1) = 21); ++ ASSERT ((x := x) = 20); ++ ASSERT ((xx := x) = 20); ++ ASSERT ((xxx := xx) = 20); ++ ASSERT ((x := x) + 1 = 21); ++ ASSERT ((xx := x) + 1 = 21); ++ ASSERT ((xxx := xx) + 1 = 21) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-6.a68 +@@ -0,0 +1,48 @@ ++# { dg-options "-fstropping=upper" } # ++# Dereferencing of struct fields. # ++BEGIN MODE S = STRUCT (REF INT x, REF REF INT xx, REF REF REF INT xxx); ++ ++ INT x := 10; ++ REF INT xx := x; ++ REF REF INT xxx := xx; ++ ++ S s = (x, xx, xxx); ++ ++ ASSERT (x OF s = 10); ++ ASSERT (xx OF s = 10); ++ ASSERT (xxx OF s = 10); ++ ASSERT ((x) = 10); ++ ASSERT ((xx) = 10); ++ ASSERT ((xxx) = 10); ++ ASSERT (x OF s + 1 = 11); ++ ASSERT (xx OF s + 1 = 11); ++ ASSERT (xxx OF s + 1 = 11); ++ ASSERT ((x OF s + 1) = 11); ++ ASSERT ((xx OF s + 1) = 11); ++ ASSERT ((xxx OF s + 1) = 11); ++ ASSERT ((x OF s := x) = 10); ++ ASSERT ((xx OF s := x) = 10); ++ ASSERT ((xxx OF s := xx) = 10); ++ ASSERT ((x OF s := x) + 1 = 11); ++ ASSERT ((xx OF s := x) + 1 = 11); ++ ASSERT ((xxx OF s := xx) + 1 = 11); ++ x OF s := 20; ++ ASSERT (x OF s = 20); ++ ASSERT (xx OF s = 20); ++ ASSERT (xxx OF s = 20); ++ ASSERT ((x) = 20); ++ ASSERT ((xx) = 20); ++ ASSERT ((xxx) = 20); ++ ASSERT (x OF s + 1 = 21); ++ ASSERT (xx OF s + 1 = 21); ++ ASSERT (xxx OF s + 1 = 21); ++ ASSERT ((x OF s + 1) = 21); ++ ASSERT ((xx OF s + 1) = 21); ++ ASSERT ((xxx OF s + 1) = 21); ++ ASSERT ((x OF s := x) = 20); ++ ASSERT ((xx OF s := x) = 20); ++ ASSERT ((xxx OF s := xx) = 20); ++ ASSERT ((x OF s := x) + 1 = 21); ++ ASSERT ((xx OF s := x) + 1 = 21); ++ ASSERT ((xxx OF s := xx) + 1 = 21) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-7.a68 +@@ -0,0 +1,48 @@ ++# { dg-options "-fstropping=upper" } # ++# Dereferencing of struct fields. Version with sub-names. # ++BEGIN MODE S = STRUCT (INT x, REF INT xx, REF REF INT xxx); ++ ++ INT x := 10; ++ REF INT xx := x; ++ REF REF INT xxx := xx; ++ ++ S s := (x, xx, xxx); ++ ++ ASSERT (x OF s = 10); ++ ASSERT (xx OF s = 10); ++ ASSERT (xxx OF s = 10); ++ ASSERT ((x) = 10); ++ ASSERT ((xx) = 10); ++ ASSERT ((xxx) = 10); ++ ASSERT (x OF s + 1 = 11); ++ ASSERT (xx OF s + 1 = 11); ++ ASSERT (xxx OF s + 1 = 11); ++ ASSERT ((x OF s + 1) = 11); ++ ASSERT ((xx OF s + 1) = 11); ++ ASSERT ((xxx OF s + 1) = 11); ++ ASSERT ((x OF s := x) = 10); ++ ASSERT ((xx OF s := xx) = 10); ++ ASSERT ((xxx OF s := xxx) = 10); ++ ASSERT ((x OF s := x) + 1 = 11); ++ ASSERT ((xx OF s := xx) + 1 = 11); ++ ASSERT ((xxx OF s := xxx) + 1 = 11); ++ x := 20; ++ ASSERT (x OF s = 10); ++ ASSERT (xx OF s = 20); ++ ASSERT (xxx OF s = 20); ++ ASSERT ((x) = 20); ++ ASSERT ((xx) = 20); ++ ASSERT ((xxx) = 20); ++ ASSERT (x OF s + 1 = 11); ++ ASSERT (xx OF s + 1 = 21); ++ ASSERT (xxx OF s + 1 = 21); ++ ASSERT ((x OF s + 1) = 11); ++ ASSERT ((xx OF s + 1) = 21); ++ ASSERT ((xxx OF s + 1) = 21); ++ ASSERT ((x OF s := x) = 20); ++ ASSERT ((xx OF s := xx) = 20); ++ ASSERT ((xxx OF s := xxx) = 20); ++ ASSERT ((x OF s := x) + 1 = 21); ++ ASSERT ((xx OF s := xx) + 1 = 21); ++ ASSERT ((xxx OF s := xxx) + 1 = 21) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-8.a68 +@@ -0,0 +1,53 @@ ++# { dg-options "-fstropping=upper" } # ++# Dereferencing of struct fields. Version with sub-names and ++ explicit assignations instead of initialization in variable declaration. # ++BEGIN MODE S = STRUCT (INT x, REF INT xx, REF REF INT xxx); ++ ++ INT x := 10; ++ REF INT xx := x; ++ REF REF INT xxx := xx; ++ ++ S s; ++ ++ x OF s := x; ++ xx OF s := xx; ++ xxx OF s := xxx; ++ ++ ASSERT (x OF s = 10); ++ ASSERT (xx OF s = 10); ++ ASSERT (xxx OF s = 10); ++ ASSERT ((x) = 10); ++ ASSERT ((xx) = 10); ++ ASSERT ((xxx) = 10); ++ ASSERT (x OF s + 1 = 11); ++ ASSERT (xx OF s + 1 = 11); ++ ASSERT (xxx OF s + 1 = 11); ++ ASSERT ((x OF s + 1) = 11); ++ ASSERT ((xx OF s + 1) = 11); ++ ASSERT ((xxx OF s + 1) = 11); ++ ASSERT ((x OF s := x) = 10); ++ ASSERT ((xx OF s := xx) = 10); ++ ASSERT ((xxx OF s := xxx) = 10); ++ ASSERT ((x OF s := x) + 1 = 11); ++ ASSERT ((xx OF s := xx) + 1 = 11); ++ ASSERT ((xxx OF s := xxx) + 1 = 11); ++ x := 20; ++ ASSERT (x OF s = 10); ++ ASSERT (xx OF s = 20); ++ ASSERT (xxx OF s = 20); ++ ASSERT ((x) = 20); ++ ASSERT ((xx) = 20); ++ ASSERT ((xxx) = 20); ++ ASSERT (x OF s + 1 = 11); ++ ASSERT (xx OF s + 1 = 21); ++ ASSERT (xxx OF s + 1 = 21); ++ ASSERT ((x OF s + 1) = 11); ++ ASSERT ((xx OF s + 1) = 21); ++ ASSERT ((xxx OF s + 1) = 21); ++ ASSERT ((x OF s := x) = 20); ++ ASSERT ((xx OF s := xx) = 20); ++ ASSERT ((xxx OF s := xxx) = 20); ++ ASSERT ((x OF s := x) + 1 = 21); ++ ASSERT ((xx OF s := xx) + 1 = 21); ++ ASSERT ((xxx OF s := xxx) + 1 = 21) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/div-int-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ ASSERT (i / 2 = 5.0); ++ ASSERT (ii / LONG 2 = LONG 5.0); ++ ASSERT (iii / LONG LONG 2 = LONG LONG 5.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/divab-real-1.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r := 3.14; ++ r DIVAB 2.0; ++ r /:= 2.0; ++ LONG REAL rr := LONG 3.14; ++ rr DIVAB LONG 2.0; ++ rr /:= LONG 2.0; ++ LONG LONG REAL rrr := LONG LONG 3.14; ++ rrr DIVAB LONG LONG 2.0; ++ rrr /:= LONG LONG 2.0 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/elem-bits-1.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++# ELEM for SIZETY BITS # ++BEGIN BITS b = 2r1010; ++ ASSERT ((bits width - 1) ELEM b); ++ ASSERT (NOT ((bits width - 2) ELEM b)); ++ LONG BITS bb = LONG 2r1010; ++ ASSERT ((long bits width - 1) ELEM bb); ++ ASSERT (NOT ((long bits width - 2) ELEM bb)); ++ LONG LONG BITS bbb = LONG LONG 2r1010; ++ ASSERT ((long long bits width - 1) ELEM bbb); ++ ASSERT (NOT ((long long bits width - 2) ELEM bbb)); ++ SHORT BITS ss = SHORT 2r1010; ++ ASSERT ((short bits width - 1) ELEM ss); ++ ASSERT (NOT ((short bits width - 2) ELEM ss)); ++ SHORT SHORT BITS sss = SHORT SHORT 2r1010; ++ ASSERT ((short short bits width - 1) ELEM sss); ++ ASSERT (NOT ((short short bits width - 2) ELEM sss)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/elems-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (ELEMS "foo" = 3); ++ ASSERT (ELEMS "" = 0); ++ ASSERT (1 ELEMS "foo" = 3); ++ ASSERT (1 ELEMS "" = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/elems-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Flat and ultra-flat multiples. # ++BEGIN [3,10:3]INT arr; ++ ASSERT (2 ELEMS arr = 0); ++ [1:0]INT arr2; ++ ASSERT (ELEMS arr2 = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/entier-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL x = 3.14, y = 3.80; ++ LONG REAL xx = LONG 3.14, yy = LONG 3.80; ++ LONG LONG REAL xxx = LONG LONG 3.14, yyy = LONG LONG 3.80; ++ ASSERT (ENTIER x = 3 AND ENTIER y = 3); ++ ASSERT (ENTIER xx = LONG 3 AND ENTIER yy = LONG 3); ++ ASSERT (ENTIER xxx = LONG LONG 3 AND ENTIER yyy = LONG LONG 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY INTs # ++BEGIN ASSERT (max int /= 0); ++ (INT max int = 10; ASSERT (max int = 10)); ++ ASSERT (long max int >= LENG max int); ++ ASSERT (long long max int >= LENG long max int); ++ ASSERT (min int /= 0); ++ ASSERT (long min int <= LENG min int); ++ ASSERT (long long min int <= LENG long min int) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-2.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY REALs # ++BEGIN ASSERT (max real /= 0.0); ++ ASSERT (long max real >= LENG max real); ++ ASSERT (long long max real >= LENG long max real); ++ ASSERT (min real /= 0.0); ++ ASSERT (long min real <= LENG min real); ++ ASSERT (long long min real <= LENG long min real); ++ ASSERT (small real > 0.0); ++ ASSERT (long small real > LONG 0.0); ++ ASSERT (long long small real > LONG LONG 0.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-3.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY BITS # ++BEGIN ASSERT (bits width > 0); ++ ASSERT (long bits width >= bits width); ++ ASSERT (long long bits width >= long bits width); ++ ASSERT (short bits width <= bits width); ++ ASSERT (short short bits width <= short bits width) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-4.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for pi constants. # ++BEGIN ASSERT (pi > 3.0 AND pi < 4.0); ++ ASSERT (long pi > LONG 3.0 AND long pi < LONG 4.0); ++ ASSERT (long long pi > LONG LONG 3.0 AND long long pi < LONG LONG 4.0) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for certain particular characters. # ++BEGIN ASSERT (null character /= blank); ++ ASSERT (max abs char = ABS 16r10ffff) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-6.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY BITs # ++BEGIN ASSERT (max bits /= 10r0); ++ # XXX use LENG max bits below # ++ ASSERT (long max bits >= LONG 10r0); ++ ASSERT (long long max bits >= LONG LONG 10r0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-7.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for widths # ++BEGIN ASSERT (int width > 0); ++ ASSERT (long int width > 0); ++ ASSERT (long long int width > 0); ++ ASSERT (short int width > 0); ++ ASSERT (short short int width > 0); ++ ASSERT (real width > 0); ++ ASSERT (long real width > 0); ++ ASSERT (long long real width > 0) ++CO exp width; ++ long exp width; ++ long long exp width; ++CO ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-8.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (flip = "T"); ++ ASSERT (flop = "F"); ++ ASSERT (error char = "*"); ++ ASSERT (ABS replacement char = ABS 16rfffd) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/eq-bits-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BITS b, LONG BITS bb = LONG 16rff, LONG LONG BITS bbb; ++ SHORT BITS ss = SHORT 16rff, SHORT SHORT BITS sss; ++ ASSERT (b = 2r0); ++ ASSERT (bb EQ LONG 8r377); ++ ASSERT (bbb = LONG LONG 8r0); ++ ASSERT (ss EQ SHORT 8r377); ++ ASSERT (sss = SHORT SHORT 8r0) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/eq-char-char-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ("a" = "a") ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/eq-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (12 = i); ++ ASSERT (ii = LONG 12); ++ ASSERT (iii = LONG LONG 12); ++ ASSERT (s = SHORT 12); ++ ASSERT (ss = SHORT SHORT 12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/eq-string-1.a68 +@@ -0,0 +1,16 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "foo", bar = "bar", quux = "quux"; ++ # = # ++ ASSERT ("" = ""); ++ ASSERT ("foo" = foo); ++ ASSERT (NOT (foo = bar)); ++ ASSERT (NOT (foo = quux)); ++ ASSERT (NOT (quux = foo)); ++ # EQ # ++ ASSERT ("" EQ ""); ++ ASSERT ("foo" EQ foo); ++ ASSERT (NOT (foo EQ bar)); ++ ASSERT (NOT (foo EQ quux)); ++ ASSERT (NOT (quux EQ foo)) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/eq-string-stride-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1", "2", "3"), ++ ("4", "5", "6"), ++ ("7", "8", "9")); ++ ASSERT (matrix[1:3,2] = "258") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/execute.exp +@@ -0,0 +1,37 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Execute tests, torture testing. ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++load_lib algol68-torture.exp ++load_lib torture-options.exp ++ ++torture-init ++set-torture-options $TORTURE_OPTIONS ++ ++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] { ++ # If we're only testing specific files and this isn't one of them, skip it. ++ if ![runtest_file_p $runtests $testcase] then { ++ continue ++ } ++ algol68-torture-execute $testcase ++ set algol68_compile_args "" ++} ++ ++torture-finish +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/factorial-1.a68 +@@ -0,0 +1,170 @@ ++# { dg-options "-fstropping=upper" } # ++# The Most Contrived Factorial Program ++ By John P. Baker ++ University of Bristol. ++ ++ Published in the Algol Bulletin 42. ++ http://jemarch.net/algol-bulletin-42.pdf ++ ++ Version adapted for GCC. ++# ++ ++BEGIN INT one = 1, two = 2, three = 3, four = 4, five = 5, ++ six = 6, seven = 7, eight = 8, nine = 9, ten = 10, ++ eleven = 11, twelve = 12; ++ INT a = one; ++ PRIO ME=5, LOVE=7, MY=7, LORDS=7, LADIES=7, ++ PIPERS=7, DRUMMERS=7, MAIDS=7, SWANS=7, GEESE=7, ++ GOLD=7, COLLY=7, FRENCH=7, TURTLE=7, PARTRIDGE=6; ++ BOOL sent to := TRUE; ++ OP THE = (BOOL a) BOOL: a, ++ TWELFTH = (INT a) BOOL: a = twelve, ++ ELEVENTH = (INT a) BOOL: a = eleven, ++ TENTH = (INT a) BOOL: a = ten, ++ NINTH = (INT a) BOOL: a = nine, ++ EIGHTH = (INT a) BOOL: a = eight, ++ SEVENTH = (INT a) BOOL: a = seven, ++ SIXTH = (INT a) BOOL: a = six, ++ FIFTH = (INT a) BOOL: a = five, ++ FOURTH = (INT a) BOOL: a = four, ++ THIRD = (INT a) BOOL: a = three, ++ SECOND = (INT a) BOOL: a = two, ++ FIRST = (INT a) BOOL: a = one; ++ OP ME = (BOOL a, INT b) VOID: SKIP; # XXX when transput done (a|print(b)) # ++ OP LOVE = (BOOL a, b) BOOL: (a|b|FALSE), ++ MY = (BOOL a, b) BOOL: a LOVE b; ++ OP AND = (INT a) INT: a; ++ MODE DATE = STRUCT (INT day, month); ++ LOC DATE christmas := (25, 12); ++ OP LORDS = (INT a, b) INT: a * b, ++ LADIES = (INT a, b) INT: a * b, ++ PIPERS = (INT a, b) INT: a * b, ++ DRUMMERS = (INT a, b) INT: a * b, ++ MAIDS = (INT a, b) INT: a * b, ++ SWANS = (INT a, b) INT: a * b, ++ GEESE = (INT a, b) INT: a * b, ++ GOLD = (INT a, b) INT: a * b, ++ COLLY = (INT a, b) INT: a * b, ++ FRENCH = (INT a, b) INT: a * b, ++ TURTLE = (INT a, b) INT: a * b; ++ OP LEAPING = (INT a) INT: a, ++ DANCING = (INT a) INT: a, ++ PIPING = (INT a) INT: a, ++ DRUMMING = (INT a) INT: a, ++ MILKING = (INT a) INT: a, ++ SWIMMING = (INT a) INT: a, ++ LAYING = (INT a) INT: a, ++ RINGS = (INT a) INT: a, ++ BIRDS = (INT a) INT: a, ++ HENS = (INT a) INT: a, ++ DOVES = (INT a) INT: a; ++ OP PARTRIDGE = (INT a, b) INT: a + b; ++ INT in a pear tree = 0; ++ ++ # Now we are ready... # ++ ++ THE FIRST day OF christmas MY TRUE LOVE sent to ME ++ a PARTRIDGE in a pear tree; ++ ++ THE SECOND day OF christmas MY TRUE LOVE sent to ME ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE THIRD day OF christmas MY TRUE LOVE sent to ME ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE FOURTH day OF christmas MY TRUE LOVE sent to ME ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE FIFTH day OF christmas MY TRUE LOVE sent to ME ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE SIXTH day OF christmas MY TRUE LOVE sent to ME ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE SEVENTH day OF christmas MY TRUE LOVE sent to ME ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE EIGHTH day OF christmas MY TRUE LOVE sent to ME ++ eight MAIDS MILKING ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE NINTH day OF christmas MY TRUE LOVE sent to ME ++ nine DRUMMERS DRUMMING ++ eight MAIDS MILKING ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE TENTH day OF christmas MY TRUE LOVE sent to ME ++ ten PIPERS PIPING ++ nine DRUMMERS DRUMMING ++ eight MAIDS MILKING ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE ELEVENTH day OF christmas MY TRUE LOVE sent to ME ++ eleven LADIES DANCING ++ ten PIPERS PIPING ++ nine DRUMMERS DRUMMING ++ eight MAIDS MILKING ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE TWELFTH day OF christmas MY TRUE LOVE sent to ME ++ twelve LORDS LEAPING ++ eleven LADIES DANCING ++ ten PIPERS PIPING ++ nine DRUMMERS DRUMMING ++ eight MAIDS MILKING ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ SKIP ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flat-assignation-1.a68 +@@ -0,0 +1,7 @@ ++{ Assigning to the flexible name replaces the descriptor ++ as well as the elements. } ++begin [10:0]int flat1; ++ flex[10:-10]int flat2; ++ flat2 := flat1; ++ assert (UPB flat2 = 0 AND LWB flat2 = 10) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flat-assignation-2.a68 +@@ -0,0 +1,8 @@ ++{ Assigning to the flexible name replaces the descriptor ++ as well as the elements. } ++begin [1:20,10:0]int flat1; ++ flex[100:200,10:-10]int flat2; ++ flat2 := flat1; ++ assert (1 UPB flat2 = 20 AND 1 LWB flat2 = 1); ++ assert (2 UPB flat2 = 0 AND 2 LWB flat2 = 10) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flex-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN FLEX[3]INT list := (1,2,3); ++ list[2] := 20; ++ ASSERT (list[2] = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flex-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing to flexible rows. # ++BEGIN FLEX[]INT list = 10; ++ ASSERT (list[1] = 10); ++ FLEX[,]INT table = 10; ++ ASSERT (table[1,1] = 10) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flex-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Slicing flexible names. # ++BEGIN FLEX[]INT list = (1,2,3); ++ FLEX[]INT sliced = list[2:3]; ++ ASSERT (LWB sliced = 1 AND UPB sliced = 2); ++ ASSERT (sliced[1] = 2 AND sliced[2] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flex-4.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing to flexible rows. # ++BEGIN FLEX[3]INT list := (1,2,3); ++ list := (10,20,30,40); ++ ASSERT (list[4] = 40) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flex-5.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN FLEX[1:0]INT a; ++ ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0); ++ a := (1,2,3); ++ ASSERT (LWB a = 1 AND UPB a = 3 AND a[1] = 1 AND a[2] = 2 AND a[3] = 3); ++ a := (10,a[2],a[3]); ++ ASSERT (LWB a = 1 AND UPB a = 3 AND a[1] = 10 AND a[2] = 2 AND a[3] = 3); ++ a := 100; ++ ASSERT (LWB a = 1 AND UPB a = 1 AND a[1] = 100); ++ a := (); ++ ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/formula-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN OP JORL = (INT a, b) INT: a + b; ++ OP JORL = (REAL a, b) REAL: a + b; ++ OP JORL = ([]CHAR s) INT: ELEMS s; ++ PRIO JORL = 6; ++ ASSERT (10 JORL 20 = 30); ++ ASSERT (REAL r = 3.14 JORL REAL (1); r > 4.13 AND r < 4.15); ++ ASSERT (JORL "foo" = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/formula-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i; ++ PROC side = INT: (i := 1; i := 2; i); ++ INT res = side + side; ++ # Can be either due to collateral elaboration in the formula above. # ++ ASSERT (res = 3 OR res = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/fsize-1.a68 +@@ -0,0 +1,2 @@ ++begin assert (fsize (-1) = - long long 1) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ge-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (i >= 10); ++ ASSERT (ii GE LONG 10); ++ ASSERT (iii >= LONG LONG 12); ++ ASSERT (s >= SHORT 12); ++ ASSERT (ss >= SHORT SHORT 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ge-string-stride-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1", "0", "1"), ++ ("4", "0", "4"), ++ ("7", "0", "7")); ++ ASSERT (matrix[1:3,1] >= matrix[1:3,3]); ++ ASSERT (("1","4","7") >= matrix[1:3,3]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-flex-1.a68 +@@ -0,0 +1,10 @@ ++begin flex[10:-10]int je; ++ int num_fields = 3; ++ assert (UPB je = -10 AND LWB je = 10 AND ELEMS je = 0); ++ ++ [1:num_fields][1:num_fields]string fields; ++ for i to num_fields ++ do for j to num_fields ++ do assert (fields[i][j] = "") od ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ REF INT var = HEAP INT; ++ var := jorl := 10; ++ ASSERT (var = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ REF INT var := HEAP INT; ++ var := jorl := 10; ++ ASSERT (var = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ INT var := HEAP INT := 15; # The generated name goes away # ++ ASSERT (var = 15) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-bool-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF BOOL x = HEAP BOOL; ++ ASSERT (x = FALSE); ++ x := TRUE; ++ ASSERT (x = TRUE) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-int-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF INT x = HEAP INT := 4; ++ ASSERT (x = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-real-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF REAL x = HEAP REAL := 4; ++ ASSERT (x > 3.9 AND x < 4.1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-struct-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN HEAP STRUCT(INT i, REAL r) foo; ++ ASSERT (i OF foo = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-struct-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN HEAP STRUCT([10]INT i, REAL r) foo; ++ FOR i FROM LWB i OF foo TO UPB i OF foo ++ DO ASSERT ((i OF foo)[i] = 0) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-struct-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN HEAP STRUCT([10]INT i, STRING s) foo; ++ FOR i FROM LWB i OF foo TO UPB i OF foo ++ DO ASSERT ((i OF foo)[i] = 0) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-loc-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ REF INT var = LOC INT; ++ var := jorl := 10; ++ ASSERT (var = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-loc-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ REF INT var := LOC INT; ++ var := jorl := 10; ++ ASSERT (var = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-loc-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ INT var := LOC INT := 15; # The generated name goes away # ++ ASSERT (var = 15) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-loc-4.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); ++ ++ NODE top := (10, NIL); ++ next OF top := LOC NODE := (20, NIL); ++ ASSERT (code OF top = 10); ++ ASSERT (code OF next OF top = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-multiple-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE JORL = [(INT x; x + 1)]INT; ++ JORL xx; ++ ASSERT (ELEMS xx = 1 AND xx[1] = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-union-1.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION(INT,REAL,[]INT,CHAR) datux; ++ ASSERT (CASE datux ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR): 30, ++ ([]INT): 40 ++ ESAC = 0); ++ []INT ja = (1,2,3); ++ datux := ja; ++ ASSERT (CASE datux ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR): 30, ++ ([]INT): 40 ++ ESAC = 40) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-union-2.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++# pr UPPER pr # ++BEGIN [10]UNION(INT,REAL,[]INT,CHAR) datux; ++ FOR i FROM LWB datux TO UPB datux ++ DO ASSERT (CASE datux[i] ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR): 30, ++ ([]INT): 40 ++ ESAC = 0); ++ []INT ja = (1,2,3); ++ datux[i] := ja; ++ ASSERT (CASE datux[i] ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR): 30, ++ ([]INT): 40 ++ ESAC = 40) ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-union-3.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# An union generated from SKIP has -1 as overhead. # ++BEGIN MODE JSONVAL = UNION (JSONOBJ,JSONSTR), ++ JSONSTR = STRING, ++ JSONOBJ = STRUCT (REF JSONFLD fields), ++ JSONFLD = STRUCT (JSONVAL value, REF JSONFLD next); ++ ++ JSONFLD fields; ++ ASSERT (CASE value OF fields ++ IN (JSONSTR s): "string", ++ (JSONOBJ o): "object" ++ OUT "fuckyou" ++ ESAC = "fuckyou") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/goto-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0; ++beg: IF (i < 5) ++ THEN i +:= 1; ++ GOTO beg ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/goto-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN GOTO end; ++ ASSERT(FALSE); ++end: SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/goto-3.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ++ INT i := 0; ++ beginning: ++ IF (i < 5) THEN ++ i +:= 1; ++ GO TO beginning ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/goto-4.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ++ INT i := 0; ++ beginning: ++ IF (i < 5) THEN ++ i +:= 1; ++ beginning ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/goto-5.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is prime = (INT m) BOOL: ++ BEGIN IF m < 2 ++ THEN puts ("program terminated because m is less than 2\n"); ++ GOTO stop ++ FI; ++ ++ BOOL factor found := NOT (ODD m OR m = 2); ++ FOR i FROM 3 BY 2 TO m - 1 WHILE NOT factor found ++ DO factor found := m MOD i = 0 OD; ++ factor found ++ END; ++ ++ ASSERT (is prime (1)); ++ ASSERT (is prime (3)); ++ ASSERT (is prime (71)); ++ ASSERT (is prime (97)); ++ is prime (0); ++ ASSERT (FALSE) # Should jump to stop in the standard postlude. # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gt-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (i > 10); ++ ASSERT (ii GT LONG 10); ++ ASSERT (iii > LONG LONG 10); ++ ASSERT (s > SHORT 10); ++ ASSERT (ss > SHORT SHORT 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gt-string-stride-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1", "0", "1"), ++ ("4", "0", "4"), ++ ("7", "0", "6")); ++ ASSERT (matrix[1:3,1] > matrix[1:3,3]); ++ ASSERT (("1","4","7") > matrix[1:3,3]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/i-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN COMPL z = 4I5; ++ LONG COMPL zz = LONG 4 I LONG 6; ++ LONG LONG COMPL zzz = LONG LONG 4 I LONG LONG7; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/i-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN COMPL z = 4.0I5.0; ++ LONG COMPL zz = LONG 4.0 I LONG 6.0; ++ LONG LONG COMPL zzz = LONG LONG 4.0 I LONG LONG 7.0; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identification-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC a = REAL: b := c; ++ REAL b := 1, c := 2; ++ REAL x := a; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identification-2.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# The identification of c in the assignation marked with XXX works. ++ In some Algol 68 systems the assignation may fail or result in UB, ++ because the storage of the REF REAL c doesn't exist yet. In GNU ++ Algol 68 this works and the value yielded by c is guaranteed to be ++ zero. ++# ++ ++BEGIN REAL b; ++ b := c; # XXX # ++ ASSERT (b = 0); ++ REAL c; ++ c := b ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx = x := 20; ++ ASSERT (xx = 20); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx = x; ++ ASSERT (xx = 10); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx = (x := 20); ++ ASSERT (xx = 20); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx = ((x)); ++ ASSERT (xx = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (STRING s, INT i); ++ FOO f1 = ("foo", 10); ++ ASSERT (i OF f1 = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT foo = (1,2,3); ++ ASSERT (ELEMS foo = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-2.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [][]INT foo = ((1,2,3),(4,5,6)); ++ ASSERT (ELEMS foo = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [3]INT a := (1,2,3); ++ REF[]INT nn = a; # No copy happens here. # ++ nn[1] := 200; ++ ASSERT (a[1] = 200) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-5.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [:]INT foo = (1,2,3); ++ ASSERT (ELEMS foo = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT a = (); ++ ASSERT (UPB a = 0); ++ ASSERT (LWB a = 1); ++ ASSERT (ELEMS a = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-2.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,,]INT a = (); ++ ASSERT (1 UPB a = 0); ++ ASSERT (1 LWB a = 1); ++ ASSERT (1 ELEMS a = 0); ++ ASSERT (2 UPB a = 0); ++ ASSERT (2 LWB a = 1); ++ ASSERT (2 ELEMS a = 0); ++ ASSERT (3 UPB a = 0); ++ ASSERT (3 LWB a = 1); ++ ASSERT (3 ELEMS a = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-3.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = ([]INT a) VOID: (ASSERT (ELEMS a = 0)); ++ foo ([]INT()) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-4.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = ([]INT a) VOID: (ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0)); ++ foo (()) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-struct-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++# An identity declaration shall make a copy of the struct value being ++ ascribed. # ++BEGIN MODE FOO = STRUCT (STRING s, INT n); ++ FOO f1 := ("foo", 10); ++ FOO f2 = f1; ++ f1 := ("bar", 20); ++ ASSERT (n OF f1 = 20); ++ ASSERT (n OF f2 = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/infinity-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN infinity; ++ minus infinity ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/le-ge-bits-1.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++# <= and => for SIZETY BITS # ++BEGIN ASSERT (16rff <= 16rffff); ++ ASSERT (2r101 LE 2r111); ++ ASSERT (2r111 >= 2r101); ++ ASSERT (16rffff GE 16rff); ++ ++ ASSERT (LONG 16rff <= LONG 16rffff); ++ ASSERT (LONG 2r101 LE LONG 2r111); ++ ASSERT (LONG 2r111 >= LONG 2r101); ++ ASSERT (LONG 16rffff GE LONG 16rff); ++ ++ ASSERT (LONG LONG 16rff <= LONG LONG 16rffff); ++ ASSERT (LONG LONG 2r101 LE LONG LONG 2r111); ++ ASSERT (LONG LONG 2r111 >= LONG LONG 2r101); ++ ASSERT (LONG LONG 16rffff GE LONG LONG 16rff) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/le-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (i <= 13); ++ ASSERT (ii LE LONG 13); ++ ASSERT (iii <= LONG LONG 13); ++ ASSERT (s <= SHORT 12); ++ ASSERT (ss <= SHORT SHORT 13) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/le-string-stride-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1", "Z", "1"), ++ ("4", "Y", "4"), ++ ("7", "X", "9")); ++ ASSERT (matrix[1:3,1] <= matrix[1:3,3]); ++ ASSERT (("1","4","9") <= matrix[1:3,3]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/leng-shorten-bits-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# SHORTEN and LENG on SIZETY BITS # ++BEGIN ASSERT (LENG 16rff = LONG 16rff); ++ ASSERT (SHORTEN LONG 16rffff = 16rffff); ++ ASSERT (LENG LONG 16rffff = LONG LONG 16rffff); ++ ASSERT (SHORTEN LONG LONG 16rffff = LONG 16rffff) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/leng-shorten-ints-1.a68 +@@ -0,0 +1,27 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY INTs # ++BEGIN # LENG # ++ (SHORT SHORT INT iii = short short max int; ASSERT (LENG iii = LENG short short max int)); ++ (SHORT INT ii = short max int; ASSERT (LENG ii = LENG short max int)); ++ (INT i = max int; ASSERT (LENG i = LENG max int)); ++ (LONG INT ii = long max int; ASSERT (LENG ii = LENG long max int)); ++ # SHORTEN # ++ (SHORT INT i = SHORT 10; SHORT SHORT INT ii = SHORT SHORT 100; ASSERT (ii + SHORTEN i = SHORT SHORT 110)); ++ IF int shorths > 2 ++ THEN (SHORT INT ii = LENG short short max int - SHORT 2; ++ ASSERT (SHORTEN ii = short short max int - SHORT SHORT 2)); ++ (SHORT INT ii = LENG short short max int + SHORT 1; ASSERT (SHORTEN ii = short short max int)); ++ (SHORT INT ii = LENG short short min int - SHORT 1; ASSERT (SHORTEN ii = short short min int)) ++ FI; ++ (INT i = LENG short max int - 2; ASSERT (SHORTEN i = SHORTEN max int - SHORT 2)); ++ (INT i = LENG short max int + 1; ASSERT (SHORTEN i = SHORTEN max int)); ++ (INT i = LENG short min int - 1; ASSERT (SHORTEN i = SHORTEN min int)); ++ (LONG INT ii = LENG max int - LONG 2; ASSERT (SHORTEN ii = max int - 2)); ++ (LONG INT ii = LENG max int + LONG 1; ASSERT (SHORTEN ii = max int)); ++ (LONG INT ii = LENG min int - LONG 1; ASSERT (SHORTEN ii = min int)); ++ IF int lengths > 2 ++ THEN (LONG LONG INT ii = LENG long max int - LONG LONG 2; ASSERT (SHORTEN ii = long max int - LONG 2)); ++ (LONG LONG INT ii = LENG long max int + LONG LONG 1; ASSERT (SHORTEN ii = long max int)); ++ (LONG LONG INT ii = LENG long min int - LONG LONG 1; ASSERT (SHORTEN ii = long min int)) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/leng-shorten-reals-1.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY REALs # ++BEGIN # LENG # ++ (REAL i = max real; ASSERT (LENG i = LENG max real)); ++ (LONG REAL ii = long max real; ASSERT (LENG ii = LENG long max real)); ++ ++ # SHORTEN # ++ (LONG REAL ii = LENG max real - LONG 2.0; ASSERT (SHORTEN ii = max real - 2.0)); ++ (LONG REAL ii = LENG max real + LONG 1.0; ASSERT (SHORTEN ii = max real)); ++ (LONG REAL ii = LENG min real - LONG 1.0; ASSERT (SHORTEN ii = min real)); ++ IF (long long max real > LENG long max real) ++ THEN (LONG LONG REAL ii = LENG long max real - LONG LONG 2.0; ++ ASSERT (SHORTEN ii = long max real - LONG 2.0)); ++ (LONG LONG REAL ii = LENG long max real + LONG LONG 1.0; ASSERT (SHORTEN ii = long max real)); ++ (LONG LONG REAL ii = LENG long min real - LONG LONG 1.0; ASSERT (SHORTEN ii = long min real)) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lengths-shorths-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (int lengths > 0); ++ ASSERT (int shorths > 0); ++ ASSERT (bits lengths > 0); ++ ASSERT (bits shorths > 0); ++ ASSERT (real lengths > 0); ++ ASSERT (real shorths > 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lisp-1.a68 +@@ -0,0 +1,25 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT num ints := 0, num chars := 0; ++ PROC collect stats = (REF CONS tree) VOID: ++ BEGIN REF CONS e := tree; ++ WHILE REF CONS (e) ISNT NIL ++ DO CASE car OF e ++ IN (CHAR c): num chars +:= 1, ++ (INT): num ints +:= 1, ++ (REF CONS s): collect stats (s) ++ ESAC; ++ e := cdr OF e ++ OD ++ END; ++ MODE ATOM = UNION (CHAR, INT); ++ MODE CONS = STRUCT (UNION (ATOM, REF CONS) car, REF CONS cdr); ++ PROC list = ([]UNION (ATOM, REF CONS) item) REF CONS: ++ BEGIN REF CONS a := NIL; ++ FOR i FROM UPB item BY -1 TO 1 ++ DO a := HEAP CONS := (item[i], a) OD; ++ a ++ END; ++ REF CONS expression := list (("X", "+", list (("Y", "x", 2)))); ++ collect stats (expression); ++ ASSERT (num ints = 1 AND num chars = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lisp-2.a68 +@@ -0,0 +1,21 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT num constants := 0, num vars := 0, num operators := 0; ++ PROC collect stats = (REF EXPRESSION expr) VOID: ++ BEGIN CASE left OF expr ++ IN (INT): num constants +:= 1, ++ (CHAR): num vars +:= 1, ++ (REF EXPRESSION s): collect stats (s) ++ ESAC; ++ num operators +:= 1; ++ CASE right OF expr ++ IN (INT): num constants +:= 1, ++ (CHAR): num vars +:= 1, ++ (REF EXPRESSION s): collect stats (s) ++ ESAC ++ END; ++ MODE OPERAND = UNION (CHAR,INT,REF EXPRESSION), ++ EXPRESSION = STRUCT (OPERAND left, CHAR operator, OPERAND right); ++ REF EXPRESSION expression := HEAP EXPRESSION := ("X", "+", HEAP EXPRESSION := ("Y", "x", 2)); ++ collect stats (expression); ++ ASSERT (num constants = 1 AND num vars = 2 AND num operators = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ln-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 1.0; ++ LONG REAL rr = LONG 2.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (ln (r) = 0.0); ++ long ln (rr); ++ long long ln (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/log-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 1.0; ++ LONG REAL rr = LONG 2.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (log (r) = 0.0); ++ long log (rr); ++ long long log (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0; ++ DO i +:= 1; IF i = 5 THEN exit FI ++ OD; ++exit: ASSERT (i = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-10.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0, n := 2; ++ FOR a FROM n BY 2 TO n + 2 DO i +:= a OD; ++ ASSERT (i = 2 + 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-11.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Negative steps towards minus infinity. # ++BEGIN INT i := 0, n := -5; ++ BY -1 TO n - 1 DO i -:= 1 OD; ++ ASSERT (i = -8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-12.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0, n := 5; ++ FOR a TO n WHILE a < 3 DO i +:= 1 OD; ++ ASSERT (i = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-13.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0; ++ FOR a FROM 2 BY 1 WHILE a <= 10 ++ DO i +:= 1 OD; ++ ASSERT (i = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-14.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# The while-part shall not be elaborated if the iterator is exhausted. # ++BEGIN STRING s = "abc", INT j := 0; ++ FOR i TO UPB s WHILE s[i] /= "x" ++ DO j +:= 1 OD; ++ ASSERT (j = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# While loop. # ++BEGIN INT i := 0; ++ WHILE INT j = 5; i < j ++ DO i +:= 1 OD; ++ ASSERT (i = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-3.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# Nested loops. # ++BEGIN INT i := 10, res := 0; ++ WHILE i > 0 ++ DO INT j := 10; ++ WHILE j > 0 ++ DO res +:= 1; ++ j -:= 1 ++ OD; ++ ASSERT (j = 0); ++ i -:= 1; ++ OD; ++ ASSERT (i = 0 AND res = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-4.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# Nested loops and j on outside range. # ++BEGIN INT i := 10, j := 10, res := 0; ++ WHILE i > 0 ++ DO j := 10; ++ WHILE j > 0 ++ DO res +:= 1; ++ j -:= 1 ++ OD; ++ i -:= 1 ++ OD; ++ ASSERT (i = 0 AND j = 0 AND res = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-5.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Skip in loop. # ++BEGIN INT i := 0; ++ WHILE i +:= 1; i < 10 ++ DO SKIP OD; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-6.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# The range of the while-part shall cover the do-part. # ++BEGIN INT i := 0; ++ WHILE INT incr = 2; i < 10 ++ DO i +:= incr OD; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-7.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0, n := 5; ++ TO n + 1 DO i +:= 1 OD; ++ ASSERT (i = 6) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-8.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0, n := 2; ++ FOR a TO n + 1 DO i +:= a OD; ++ ASSERT (i = 1 + 2 + 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-9.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0, n := 2; ++ FOR a FROM n TO n + 2 DO i +:= a OD; ++ ASSERT (i = 2 + 3 + 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-overflow-underflow.a68 +@@ -0,0 +1,55 @@ ++{ Test for overflow/underflow in loops with implicit and explicit ++ iterators. } ++ ++begin int count; ++ ++ { Overflow. } ++ count := 0; ++ by 1 while true do count +:= 1 od; ++ assert (count = max_int); ++ ++ count := 0; ++ from max_int do count +:= 1 od; ++ assert (count = 1); ++ count := 0; ++ ++ by max_int do count +:= 1 od; ++ assert (count = 1); ++ ++ count := 0; ++ for i by max_int do count +:= 1 od; ++ assert (count = 1); ++ ++ count := 0; ++ by max_int % 2 do count +:= 1 od; ++ assert (count = 3); ++ ++ count := 0; ++ by max_int - 1 do count +:= 1 od; ++ assert (count = 2); ++ ++ { Underflow. } ++ count := 0; ++ by -1 while true do count +:= 1 od; ++ assert (count = -min_int + 2); ++ ++ count := 0; ++ from min_int by -1 do count +:= 1 od; ++ assert (count = 1); ++ count := 0; ++ ++ by min_int do count +:= 1 od; ++ assert (count = 2); ++ ++ count := 0; ++ for i by min_int do count +:= 1 od; ++ assert (count = 2); ++ ++ count := 0; ++ by min_int % 2 do count +:= 1 od; ++ assert (count = 3); ++ ++ count := 0; ++ by min_int + 1 do count +:= 1 od; ++ assert (count = 2) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lt-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (i < 13); ++ ASSERT (ii LT LONG 13); ++ ASSERT (iii < LONG LONG 13); ++ ASSERT (s < SHORT 13); ++ ASSERT (ss < SHORT SHORT 13) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lt-string-stride-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1", "Z", "1"), ++ ("4", "Y", "4"), ++ ("7", "X", "9")); ++ ASSERT (matrix[1:3,1] < matrix[1:3,3]); ++ ASSERT (("1","4","0") < matrix[1:3,3]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lwb-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (LWB "foo" = 1); ++ ASSERT (LWB "" = 1); ++ ASSERT (1 LWB "foo" = 1); ++ ASSERT (1 LWB "" = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/execute.exp +@@ -0,0 +1,29 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++load_lib algol68-torture.exp ++ ++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] { ++ # If we're only testing specific files and this isn't one of them, skip it. ++ if ![runtest_file_p $runtests $testcase] then { ++ continue ++ } ++ algol68-torture-execute $testcase ++} +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-1.3a.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL e = 2.7182818284; REAL circum; ++ circum := 2 * pi * e ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-1.3c.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 10, result; ++ result := n * (n + 1) * (2 * n + 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.2.1a.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++# Integer denotations. # ++BEGIN 000; 43; 456; 0 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.2.2a.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Real denotations. # ++BEGIN .5; 0.5; 2.0; .001; ++ 2.3e1; 2e0; 2e+0; 2e-0 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.2.3a.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++# Character denotations. # ++BEGIN "X"; "a"; "1"; "."; " " ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3a.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Identifiers. # ++BEGIN INT circum, r, ibm, a1, log2, begin; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3b.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Identity declarations. # ++BEGIN REAL e = 2.7182818284, log2 = 0.618, INT ten = 10, g = 32; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3c.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Equivalent declarations. # ++BEGIN REAL x = 2.34; ++ REF INT n = LOC INT, REF INT m = LOC INT; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3e.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Initialisation. # ++BEGIN CHAR firstchar := "A", lastchar := "Z", currentchar; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.2a.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Ordinary division. # ++BEGIN ASSERT (4/2 = 2.0); ++ INT a = 4, b = 7; ++ a/b # Yields a value of mode REAL. # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.2b.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Integer division. The operator OVER (%) performs integer ++ division with truncation. # ++BEGIN ASSERT (4 % 2 = 2); ++ ASSERT (4 OVER 2 = 2); ++ ASSERT (5 % 3 = 1); ++ ASSERT (5 OVER 3 = 1); ++ INT n = -5, m = -3; ++ ASSERT (n % 3 = -1); ++ ASSERT (n % m = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.2c.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Integer modulus. The operator MOD (%*) performs integer modulus ++ with truncation. # ++BEGIN ASSERT (0 MOD 4 = 0); ++ ASSERT (0 %* 4 = 0); ++ ASSERT (5 %* 3 = 2); ++ INT m = 5, n = -3; ++ ASSERT (m MOD n = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.3a.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++# Exponentiation. # ++BEGIN ASSERT (2 ** 3 = 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.6a.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Comparison operators. # ++BEGIN REAL x = 2.7, y = 3.6, z = 4.7; ++ ASSERT (x < y); ++ ASSERT ("B" /= "C") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.6b.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Comparison operators and boolean operators. # ++BEGIN INT a = 4, b = 5, c = 9, REAL x = 4.7, y = 5.7, z = 6.7; ++ ASSERT (NOT (x + y < z) AND a + b = c) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.7d.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Widening. # ++BEGIN REAL x := 4, y := 7, z := 2.7; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.7e.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Dereferencing and widening. # ++BEGIN INT n, REAL x = n; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.8a.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Examples of assignations. # ++BEGIN REAL pi = 3.14, e = 2.71, INT n = 10, REAL circum, INT result; ++ circum := 2 * pi * e; ++ result := n * (n + 1) * ( 2 * n + 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.8b.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Coercions and assignations. # ++BEGIN REAL y, INT n, m := 1; ++ y := n % m ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.9.1a.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Arithmetical assignment operators. # ++BEGIN INT m, n := 4; ++ n PLUSAB 1; ++ ASSERT (n = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.5.1a.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++# Equivalence. # ++BEGIN INT m := 3; REF INT p = m; ++ ASSERT (m = 3 AND p = 3); ++ BEGIN INT m := 100; ++ ASSERT (m = 100 AND p = 3); ++ m -:= 1; p +:= 1 ++ END; ++ ASSERT (m = 4 AND p = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.5d.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# On the availability and accessibility of space. # ++BEGIN INT m := 3, INT five = 5; ++ ASSERT (m = 3); ++ BEGIN INT m := 100; CHAR five = "5"; ++ m +:= 1 ++ END; ++ ASSERT (m = 3 AND five = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.7.2a.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT p := 10, q := 12; ++ FROM p TO q DO (p +:= 1, q +:= 1) OD; ++ ASSERT (p = 13 AND q = 15) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.8.2a.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# Using case clauses. # ++BEGIN PROC is divisible = (INT m) BOOL: ++ BEGIN BOOL divisible := FALSE; ++ FOR i TO 4 WHILE NOT divisible ++ DO INT k = (i|3, 5, 7, 11); ++ divisible := m MOD k = 0 ++ OD; ++ divisible ++ END; ++ ASSERT (is divisible (50)); ++ ASSERT (is divisible (253)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.9.1b.a68 +@@ -0,0 +1,16 @@ ++# { dg-options "-fstropping=upper" } # ++# Using jumps. # ++BEGIN INT a, INT b = 0, c = 2, d = 10, BOOL e = TRUE; ++ CO The following program using jumps is equivalent to: ++ FOR a FROM b BY c TO d WHILE e DO SKIP OD ++ CO ++ BEGIN INT j := b, INT k = c, m = d; ++ next: IF (k > 0 AND j <= m) OR (k < 0 AND j >= m) OR k = 0 ++ THEN INT i = j; ++ IF e ++ THEN SKIP; j +:= k; GOTO next ++ FI ++ FI; ++ ASSERT (j = 12) ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.2a.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Monadic lwb and upb. # ++BEGIN INT n := 4; [n]INT a; ++ ASSERT (UPB a = 4); ++ n := 6; ++ ASSERT (UPB a = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.3a.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Dyadic lwb an upb. # ++BEGIN [0:10,-4:100]REAL xx; ++ ASSERT (1 LWB xx = 0); ++ ASSERT (1 UPB xx = 10); ++ ASSERT (1 UPB xx = UPB xx); ++ ASSERT (2 LWB xx = -4); ++ ASSERT (2 UPB xx = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.6a.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [4]REAL x2 := (6, 7, 8, 9); ++ ASSERT (x2[2] > 6.9); ++ ASSERT (x2[2] < 7.1); ++ x2 := (1, 1, 1, 1); ++ ASSERT(x2[2] > 0.9); ++ ASSERT(x2[2] < 1.1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.6b.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Multi-dimensional row displays. # ++BEGIN [2,3]INT aa := ((1,2,3),(4,5,6)); ++ [2,3,4]REAL bb := (((1,2,3,4), (5,6,7,8), (9,10,11,12)), ++ ((13,14,15,16),(17,18,19,20),(21,22,2,24))); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.6c.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Further row displays. # ++BEGIN [4]INT a, b; ++ [4]INT c := a, d := (1,2,3,0); ++ [2,4]INT ab := (a,b), cd := ((0,0,0,0), b); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.2.6a.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRUCT (INT day, month, year) indep day = (4, 7, 1776); ++ ASSERT (day OF indep day = 4); ++ ASSERT (month OF indep day = 7); ++ ASSERT (year OF indep day = 1776); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.2.6b.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []STRUCT(CHAR letter, INT integer) roman ++ = (("I",1),("V",5),("X",10),("L",50),("C",100)); ++ # XXX letter OF roman should be ("I","V","X","L","C") # ++ # XXX integer OF roman whould be (1,5,10,50,100) # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.2.6d.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Multiple values and structures. ++ ++ Having strings of different lenghts would not be valid in a variable ++ declaration, but is acceptable in an identity declaration. ++# ++BEGIN []STRUCT ([]CHAR name, INT age) family = ++ (("JOHN", 3), ("ROBERT", 1), ("CATHERINE", 4)); ++ SKIP ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.3.1a.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Simple mode declarations. # ++BEGIN MODE INTEGER = INT; ++ MODE Z = INT, R = REAL, B = BOOL, V = VOID; ++ MODE ARRAYA = [100]INT, ARRAYB = [10,2:9]REAL; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.3.1b.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++# Dynamic arrays revisited. # ++BEGIN INT p := 2, q := 10; ++ MODE M = [p:q]INT; ++ M a; ++ ASSERT (LWB a = 2 AND UPB a = 10); ++ q := 4; ++ M b; ++ ASSERT (LWB a = 2 AND UPB a = 10); ++ ASSERT (LWB b = 2 AND UPB b = 4); ++ M c = (1,2,3,4); # M is interpreted as formal declarer. ++ Bounds are ignored. ++ # ++ ASSERT (LWB c = 1 AND UPB c = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.3.2a.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Rows of integers. # ++BEGIN [][]INT g = ((1,2,3),(4,5),(6,7,8,9)); ++ ASSERT (UPB g[1] = 3 AND UPB g[2] = 2 AND UPB g[3] = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.2a.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++# Procedure declarations I. # ++BEGIN INT x = 10, y = 20, i = 2; ++ PROC xxx = (INT arg) INT: 10; ++ PROC yyy = (INT arg) INT: 20; ++ PROC zzz = (INT arg) INT: 30; ++ PROC(INT)INT f = IF x > y THEN xxx ELSE zzz FI, ++ g = CASE i IN xxx, yyy, zzz ESAC; ++ PROC(INT)INT h := IF x < y THEN xxx ELSE yyy FI; ++ ASSERT (f (100) = 30); ++ ASSERT (g (200) = 20); ++ ASSERT (h (300) = 10); ++ h := yyy; ++ ASSERT (h (300) = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.3a.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Using the factorial function in a program # ++BEGIN PROC f = (INT n) INT: ++ BEGIN INT product := 1; ++ FOR i TO n DO product *:= i OD; ++ product ++ END; ++ ASSERT (f(0) = 1); ++ ASSERT (f(1) = 1); ++ ASSERT (f(2) = 2); ++ ASSERT (f(3) = 6) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.3c.a68 +@@ -0,0 +1,29 @@ ++# { dg-options "-fstropping=upper" } # ++# Procedure declarations III # ++BEGIN # From the ALGOL68 Revised Report. # ++ PROC my char in string = (CHAR c, REF INT i, []CHAR s) BOOL: ++ BEGIN BOOL found := FALSE; ++ FOR k FROM LWB s TO UPB s WHILE NOT found ++ DO (c = s[k] | i := k; found := TRUE) OD; ++ found ++ END; ++ ASSERT ((INT idx := 0; ++ my char in string ("o", idx, "foo") ++ ANDTH idx = 2)); ++ ASSERT (my char in string ("x", LOC INT, "foo") = FALSE); ++ # Swapping function. # ++ PROC swap = (REF INT a, b) VOID: ++ (INT r = a; a := b; b := r); ++ ASSERT ((INT x := 1, y := 2; ++ swap (x, y); ++ x = 2 AND y = 1)); ++ # Euclid's algorithm. # ++ PROC hcf = (INT m, n) INT: ++ BEGIN INT a := m, b := n; ++ IF a < b THEN swap (a, b) FI; ++ WHILE b /= 0 ++ DO INT c = b; b := a MOD b; a := c OD; ++ a ++ END; ++ ASSERT (hcf (10, 20) = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.5a.a68 +@@ -0,0 +1,19 @@ ++# { dg-options "-fstropping=upper" } # ++# Recursive procedures. # ++BEGIN PROC f = (INT m, n) INT: ++ IF n = 0 ++ THEN m ++ ELIF m < n ++ THEN f (n, m) ++ ELSE m * f (m % n, n - 1) + n * f (m - 1, n) ++ FI; ++ f (10, 20); ++ PROC a = (INT m, n) INT: ++ IF m = 0 ++ THEN + 1 ++ ELIF n = 0 ++ THEN a (m - 1, 1) ++ ELSE a (m - 1, a (m, n - 1)) ++ FI; ++ a (10, 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-6.2.2a.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Using AND and OR # ++BEGIN ASSERT ((2r111 AND 2r101) = 2r101); ++ ASSERT ((16rff AND 2r111) = 16r7) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-6.2.2b.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Comparing objects of mode BITS # ++BEGIN ASSERT (2r1010 <= 2r1110); ++ ASSERT (4r331 >= 8r74); ++ ASSERT (NOT (2r100 >= 2r011)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-6.2.2c.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Using BIN # ++BEGIN ASSERT (BIN 7 = 2r111); ++ INT i = 22; ++ ASSERT ((BITS b = BIN i; ABS (b SHL 3) + ABS (b SHL 1)) = 220) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.1.1a.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Declarations of flexible names. # ++BEGIN FLEX[1:0]INT n; ++ ASSERT (LWB n = 1 AND UPB n = 0 AND ELEMS n = 0); ++ FLEX[4,6]INT p; ++ ASSERT (1 LWB p = 1 AND 1 UPB p = 4 AND 1 ELEMS p = 4 ++ AND 2 LWB p = 1 AND 2 UPB p = 6 AND 2 ELEMS p = 6) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.1.1b.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Null row displays an string denotations. # ++BEGIN FLEX[4]INT a, FLEX[4,6]INT b, FLEX[10]CHAR c; ++ a := (); ++ ASSERT (LWB a = 1 AND UPB a = 0); ++ b := ((),()); ++ ASSERT (1 LWB b = 1 AND 1 UPB b = 2 ++ AND 2 LWB b = 1 AND 2 UPB b = 0); ++ c := (); ++ c := "" ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.1.3a.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Transient references and declarations. # ++BEGIN FLEX[4,6]INT p; ++ []INT q1 = p[3,]; # Transient name is dereferenced giving []INT # ++ REF FLEX[,]INT q5 = p; # p and q5 are different ways of accessing ++ the same name. # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.3.2a.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Virtual declarers. # ++BEGIN REF[]INT s; ++ STRUCT ([10]INT a, [4]REF[]INT b) c; ++ UNION (REF FLEX[]INT, PROC(INT)INT) f; ++ FLEX[4][3]INT a; ++ REF FLEX[][]INT aa = LOC FLEX[4][3]INT; ++ [4]FLEX[3]INT b; ++ REF[]FLEX[]INT bb = LOC[4]FLEX[3]INT; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.3.6a.a68 +@@ -0,0 +1,23 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 3, m := 3; ++ REF INT w := n, z := n, REF INT y = n; ++ # Delivers TRUE since y and n deliver the same variable of mode REF ++ INT. No coercions take place. ++ # ++ ASSERT (y :=: n); ++ # Delivers TRUE. here w is dereferenced to yield n. The right ++ hand side is taken to be strong since dereferencing cannot ++ occur in a soft position. ++ # ++ ASSERT (n :=: w); ++ # Similarly delivers TRUE. Strong position is lhs. # ++ ASSERT (w :=: n); ++ # Delivers TRUE. No coercions take place. # ++ ASSERT (y ISNT m); ++ # Delivers true. w gets coerced to REF INT due to the strong ++ context introduced by the cast. No further coercions take place. ++ # ++ ASSERT (REF INT (w) :=: z); ++ # Delives true. No coercions take place. # ++ ASSERT (w :/=: z) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.3.6b.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ++ [3]INT a := (1,2,3); ++ ++ CO Comparing transient or flex names using an identity relation is ++ undefined. Therefore, a[2:3] :=: a[2:3] is undefined. ++ CO ++ ++ # But the following are defined. # ++ ASSERT (a[1] :=: a[1]); ++ ASSERT (a[1] :/=: a[2]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.5.3a.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Declarations involving global generators. # ++BEGIN REF REAL xx; ++ BEGIN REF REAL x = HEAP REAL := 4; ++ xx := x ++ END; ++ ASSERT (xx = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau02.a68 +@@ -0,0 +1,23 @@ ++{ Case conformity. } ++begin mode M = union ([]int, bool, string); ++ proc prpm = ref proc M: heap proc M := M: "aap "; ++ ++ int control := 0; ++ for n to 4 ++ do case case n ++ in true, ++ if false then "aa" else "b " fi, ++ prpm { Gets deprocedured twice to yield a string. } ++ out loc[1:1]int := 1 { Gets dereferenced then copied. } ++ esac ++ in (union(string, bool) sb): ++ (control +:= 1; ++ (sb | (bool b): assert (b), (string s): assert (s = "b " OR s = "aap "))), ++ ([]int i): ++ (control +:= 1; ++ assert (i[1] = 1)) ++ out assert (false) ++ esac ++ od; ++ assert (control = 4) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau04.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Vacuum. # ++BEGIN ASSERT (LWB []INT BEGIN END = 1); ++ ASSERT (UPB []INT() = 0); ++ CO XXX trimmer ASSERT (UPB([]INT())[1:0] = 0); CO ++ ASSERT (2UPB[,]INT([]INT(puts("here");())) = 0); ++ ASSERT (1UPB[,]INT([]INT(puts("there");())) = 1); ++ ASSERT (2UPB[,]INT(()) = 0); ++ CO runtime error: wrong length CO ++ CO 2UPB[,]INT((),(1)) CO ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau05.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Test vaccum as string. # ++BEGIN PROC p = (STRING s) VOID: ++ BEGIN ASSERT (LWB s = 1); ++ ASSERT (UPB s = 0) ++ END; ++ ++ p (""); ++ p (()); ++ p (BEGIN END) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau07.a68 +@@ -0,0 +1,21 @@ ++# { dg-options "-fstropping=upper" } # ++# If-, case- and ucase-clauses. # ++BEGIN FOR i ++ DO (i = 1 | 1 |: i = 2 | 2 |: i = 3 | 3 | eo if) OD; ++eo if: ++ ++ FOR i ++ DO (i | 4, 5 |: i - 2 | 6, 7 | eo case) OD; ++eo case: ++ ++ FOR i ++ DO ( (UNION (INT,REAL,CHAR,STRING,BOOL) ++ (i | 1, 1.0, "a", "", TRUE) ++ | (INT): 8, (REAL): 9 ++ |: UNION (CHAR,STRING,BOOL) (i - 2 | "a", "", TRUE) ++ | (CHAR): 10, (STRING): 11 ++ | eo ucase) ) ++ OD; ++eo ucase: ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau08.a68 +@@ -0,0 +1,159 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN stop; # no errors, but loops if not stopped here # ++ ++# A: Statements in the context of a BEGIN block # ++ ++BEGIN label : SKIP; ++ l1:BEGIN SKIP; SKIP END; ++ ++ BEGIN GOTO label; GO TO label END; ++ ++ BEGIN INT a1, a2, a3; ++ l4:FOR i FROM a1BY a2TO a3 DO SKIP OD; ++ FOR i FROM a1BY a2TO a3 DO SKIP OD ++ END; ++ ++ l2:BEGIN BOOL a; ++ IF a THEN SKIP FI; ++ l5:IF a THEN SKIP FI ++ END; ++ ++ BEGIN PROC VOID a; l6: a; a END; ++ ++ l3 : BEGIN PROC (INT) VOID a; INT b; ++ a(b); l7 : a(b) ++ END; ++ ++ BEGIN REAL a; a:= a; a:= a END; ++ ++ BEGIN REF[]REAL a; INT i; ++ l8 : a[i]:=i; a[i]:=i ++ END; ++ ++ BEGIN BEGIN SKIP END; ++ BEGIN SKIP END ++ END ++END; ++ ++# B: Statements in the context of a ( block # ++ ++( label : SKIP; ++ l1:( SKIP; SKIP ); ++ ++ ( GOTO label; GO TO label ); ++ ++ ( INT a1, a2, a3; ++ l4:FOR i FROM a1BY a2TO a3 DO SKIP OD; ++ FOR i FROM a1BY a2TO a3 DO SKIP OD ++ ); ++ ++ l2:( BOOL a; ++ IF a THEN SKIP FI; ++ l5:IF a THEN SKIP FI ++ ); ++ ++ ( PROC VOID a; l6: a; a ); ++ ++ l3 : ( PROC (INT) VOID a; INT b; ++ a(b); l7 : a(b) ++ ); ++ ++ ( REAL a; a:= a; a:= a ); ++ ++ ( REF[]REAL a; INT i; ++ l8 : a[i]:=i; a[i]:=i ++ ); ++ ++ ( ( SKIP ); ++ ( SKIP ) ++ ) ++); ++ ++# C: Statements in the context of IF statement # ++ ++BEGIN BOOL true; ++ ++ IF true THEN SKIP; SKIP FI; ++ ++ IF true THEN SKIP ELSE SKIP; SKIP FI; ++ ++ IF true THEN IF true THEN SKIP FI ++ FI; ++ ++ IF true THEN IF true THEN SKIP FI ++ ELSE SKIP FI; ++ ++ IF true THEN IF true THEN SKIP ELSE SKIP FI ++ FI; ++ ++ IF true THEN IF true THEN SKIP ELSE SKIP FI ++ ELSE SKIP FI; ++ ++ IF true THEN SKIP ++ ELSE IF true THEN SKIP FI ++ FI; ++ ++ IF true THEN SKIP ++ ELSE IF true THEN SKIP ELSE SKIP FI; ++ IF true THEN SKIP FI; SKIP ++ FI ++ ++END; ++ ++# D: Statements in the context of a FOR statement # ++ ++BEGIN INT a1, a2, a3; BOOL true; ++ PROC VOID proc1; PROC (INT) VOID proc2; ++ REAL aa; REF[]REAL bb; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO SKIP; SKIP OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO GOTO stop; GOTO stop OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO IF true THEN SKIP FI; ++ IF true THEN SKIP FI OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO FOR i FROM a1 BY a2 TO a3 ++ DO SKIP OD; ++ FOR i FROM a1 BY a2 TO a3 ++ DO SKIP OD OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO proc1; proc1 OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO proc2(a1); proc2(a1) OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO aa := aa; aa := aa OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO bb [i] := a1; bb[i] := a1 OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO BEGIN SKIP END; ++ BEGIN SKIP END OD ++ ++END; ++ ++# E: Statements in the context of a routine declaration # ++ ++BEGIN BOOL true; INT a1, a2, a3; ++ REF[]INT a4 = a1; REAL a5; ++ PROC a = VOID:SKIP; ++ PROC b = VOID: IF TRUE THEN SKIP FI; ++ PROC c = VOID: FOR i FROM a1 BY a2 TO a3 DO SKIP ++ OD; ++ PROC d = VOID: d; ++ PROC (INT) VOID e = (INT f) VOID: e(f); ++ PROC f = VOID: a5:=a5; ++ PROC g = VOID: a4[a1] := a1; ++ PROC h = VOID: BEGIN SKIP END; ++ ++ SKIP ++END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau09.a68 +@@ -0,0 +1,82 @@ ++# { dg-options "-fstropping=upper" } # ++# Optimisation correct? # ++BEGIN ++ PROC itoa = (INT i) STRING: ++ BEGIN IF i = 0 ++ THEN "0" ++ ELSE INT n := i; ++ STRING res := (i < 0 | n := -n; "-"); ++ WHILE n /= 0 ++ DO INT rem = n %* 10; ++ res +:= REPR (rem > 9 | (rem - 10) + ABS "a" | rem + ABS "0"); ++ n %:= 10 ++ OD; ++ res ++ FI ++ END; ++ ++ puts("\nPrints errors only\n"); ++ ++ PROC puti = (INT i, INT p, q) VOID: ++ IF p /= q THEN puts (itoa (i) + "," + itoa (p) + "," + itoa (q)) FI; ++ ++ PROC putr = (INT i, REAL p, q) VOID: ++ IF p /= q THEN puts (itoa (i) + ", p /= q") FI; ++ ++BEGIN ++ [1:3]INT a; ++ a[1]:=2; a[2]:=3; a[3]:=1; ++ putr(1, 44.9104, ++ (-1.0+(-2.0+(-3.0+(-4.0+2)))) ++ +( ++ (-5.0+(-2.0-(-5.0+(-2.0-7)))) ++ -( ++ a[a[a[a[a[2]]]]] ++ +( ++ a[a[a[a[a[1]]]]] ++ -( ++ a[a[a[a[a[3]]]]] ++ + ( ++ (-1.0*(-2.0*(-3.0*(-4.0*2)))) ++ - ( ++ (-5.0*(-2.0*(-5.0*(-2.0*7)))) ++ * ( ++ 128*(-1.0/(-2.0/(-4.0/(-4.0/2)))) ++ / ( ++ (-10.0/(-5.0/(-5.0/(-2.0/2)))) ++ ** ++ a[a[a[a[a[2]]]]] ++ ** ++ a[a[a[a[a[1]]]]] ++ ** ++ a[a[a[a[a[3]]]]] ++ )))))))) ++ ) ++END; ++ ++BEGIN REAL x; [1:20]REAL a; ++ FOR i FROM 1 BY 1 TO 20 ++ DO a[i] := i-10 OD; ++ x := a[1]+(a[2]+(a[3]+(a[4]+(a[5]+(a[6]+(a[7]+(a[8]+(a[9]+ ++ (a[10]+(a[11]+(a[12]+(a[13]+(a[14]+(a[15]+(a[16]+ ++ (a[17]+(a[18]+(a[19]+(a[20])))))))))))))))))))-9.0; ++ putr(2, 1.0, x) ++END; ++ ++BEGIN ++ ++ [1:10]INT a; ++ ++ FOR i FROM 1 BY 1 TO 9 DO a[i]:=i+1 OD; ++ a[10]:=1; ++ ++ FOR i FROM 1 BY 1 TO 10 ++ DO puti(3, i, a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[i ++ ]]]]]]]]]]]]]]]]]]]] ++ ) ++ OD ++END; ++ ++ puts ("\nEnd of tests\n"); ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer01.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ((REAL x := 0; REF[]REAL (x) := 1; x) = 1.0); ++ ASSERT ((INT n := 0; n +:= 1 := 5) = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer02.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++# Widening # ++BEGIN ++ FOR i TO 2 DO ++ ASSERT ( ++ CASE i IN TRUE, 2r1 OUT []BOOL(TRUE) ESAC ++ [CASE i IN 1 , bits width OUT SKIP ESAC] ++ ) OD; # TT # ++ ++ INT n := 1; ++ ASSERT ((re OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 1.0); ++ ASSERT ((im OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 0.0); ++ n := 2; ++ ASSERT ((re OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 2.0); ++ ASSERT ((im OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 0.0); ++ n := 3; ++ ASSERT ((re OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 3.0); ++ ASSERT ((im OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 5.0) ++ # 1.0 0.0, 2.0 0.0, 3.0 5.0 # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer03.a68 +@@ -0,0 +1,53 @@ ++# { dg-options "-fstropping=upper" } # ++# Morf versus comorf. # ++BEGIN BOOL canary := FALSE; ++ PROC right = VOID: canary := TRUE, ++ wrong = VOID: (ASSERT (FALSE)), ++ check = VOID: (ASSERT (canary); canary := FALSE); ++ ++ PROC deproc = (STRING mcm) VOID: ++ (puts (mcm); puts ("deproc:")); ++ PROC nodeproc = (STRING mcm) VOID: ++ (puts (mcm); puts ("nodeproc:")); ++ ++ deproc ("selection"); ++ proc OF STRUCT(PROC VOID proc, INT d)(right, SKIP); ++ check; ++ ++ deproc ("slice"); ++ []PROC VOID(right)[1]; ++ check; ++ ++ deproc ("routine text"); ++ PROC VOID: right; ++ check; ++ ++ deproc ("formula"); ++ OP + = (INT i) PROC VOID: right; +1; ++ check; ++ ++ deproc ("call"); ++ ((INT i) PROC VOID: right)(1); ++ check; ++ ++ deproc ("identifier"); ++ right; ++ check; ++ ++ nodeproc ("assignation"); ++ LOC PROC VOID := wrong; ++ ++ nodeproc ("cast"); ++ PROC VOID (wrong); ++ ++ nodeproc ("generator"); ++ LOC PROC VOID; ++ ++ FOR i TO 2 ++ DO IF i = 1 ++ THEN deproc ("balance"); right ++ ELSE nodeproc ("balance"); PROC VOID(wrong) ++ FI; ++ IF i = 1 THEN check FI ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer07.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# Weak balance. # ++BEGIN COMPL c := (COMPL x:=1; ++ CASE 2 ++ IN NIL, ++ IF [] BOOL (TRUE, FALSE)[2] ++ THEN REF REF [] COMPL: NIL ++ ELSE x ++ FI, ++ LOC PROC REF [] STRUCT (REAL re,im) ++ ESAC # REF [] COMPL = x # [1]:=3; x); ++ ASSERT (re OF c = 3.0); ++ ASSERT (im OF c = 0.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer08.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Soft balance. # ++BEGIN ASSERT ((HEAP INT x := 314; ++ CASE 3 ++ IN SKIP, ++ IF x < 0 THEN GOTO stop ELSE REF[]INT: NIL FI, ++ IF x > 0 THEN x ELSE x +:= 1 FI ++ ESAC := 200)[1] = 200) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer09.a68 +@@ -0,0 +1,16 @@ ++# { dg-options "-fstropping=upper" } # ++# Soft balance. # ++BEGIN ASSERT (CASE 2 ++ IN SKIP, ++ NIL, ++ IF BOOL (SKIP) ++ THEN GOTO stop ++ ELSE PROC REF[]INT (SKIP) ++ FI ++ ESAC :=: CASE 3 ++ IN LOC REF REF []INT, ++ LOC INT, ++ NIL ++ ESAC) ++ # TRUE, would you believe. # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer10.a68 +@@ -0,0 +1,62 @@ ++# { dg-options "-fstropping=upper" } # ++# Union with VOID # ++BEGIN OP TOPROCINT = (INT i) PROC INT : INT : 1; ++ OP TOVOID = (INT i) VOID : 1; ++ ++ STRING proc int = "proc int", void = "void", ++ before = "before ", after = " after", ++ newline = "\n"; ++ ++ puts ("Results must be:" + newline + ++ void + newline + ++ proc int + after + " 1 " + newline + ++ before + void + newline + ++ before + void + newline + ++ before + void + newline + ++ proc int + " 1 " + newline + ++ void + newline + ++ proc int + " 1 " + newline + ++ proc int + after + " 1 " + newline + ++ before + void + newline + ++ newline + "Results are:" + newline); ++ ++ UNION(PROC INT, VOID) upiv := EMPTY; ++ PROC pupiv = VOID: ++ (upiv ++ |(PROC INT pi) : (puts (proc int + " pi " + newline)) ++ | puts (void + newline)); ++ ++ pupiv; ++ upiv:= INT : (puts(after); 1); ++ pupiv; ++ ++ upiv:= VOID : (puts(before); 1); ++ pupiv; ++ ++ upiv:= VOID ((puts(before); 1)); ++ pupiv; ++ ++ # firm void position # ++ upiv:= puts(before); ++ pupiv; ++ ++ upiv:= TOPROCINT 1; ++ pupiv; ++ ++ upiv:= TOVOID 1; ++ pupiv; ++ ++ upiv:= INT : 1; ++ upiv:= label # must jump before assigning #; puts("Error 1"); ++label: ++ pupiv; ++ ++ FOR i TO 2 ++ DO upiv:= ++ CASE i IN ++ INT : (puts(after); 1), ++ VOID : (puts(before); 1) ++ ESAC; ++ pupiv ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer11.a68 +@@ -0,0 +1,37 @@ ++# { dg-options "-fstropping=upper" } # ++# Contains all possible two-member coercion sequences. # ++BEGIN UNION(INT, BOOL) ib:= 1; ++ ++ []REAL(1); ++ []REAL(INT : 1); ++ []REAL(REAL : 1); ++ ++ [,]COMPL (1); ++ [] [,]COMPL (LOC INT:= 1); ++ [] [,]COMPL ([]COMPL(1, 2)); ++ ++ [,,] [] BOOL (16 r f); ++ [,,] [] [,] BOOL (16 r f); ++ [,,] [] BOOL (BITS : 16 r f); ++ [,,] [] [,] BOOL (BITS : 16 r f); ++ ++COMMENT XXX bytes pack not supported yet ++ [,] [] CHAR (bytes pack ("ab")); ++ [,] [] [,] CHAR (bytes pack ("ab")); ++ [,] [] CHAR (LOC BYTES:= bytes pack("ab")); ++ [,] [] [,] CHAR(LOC BYTES:= bytes pack("ab")); ++COMMENT ++ ++ REF[]INT(REF INT : HEAP INT:= 1); ++ REF[,]INT(REF[]INT : HEAP[1]INT:= 1); ++ ++ UNION(INT, REAL, BOOL) (ib); ++ [] REF [] [,] [] [] INT ++ (LOC PROC REF INT:= REF INT : HEAP INT:= 1) [1]; ++ ++ []UNION(INT, REAL) (LOC INT:= 1) [1]; ++ []UNION(INT, REAL) (REAL : 1) [1]; ++ []UNION(INT, REAL, BOOL) (ib) [1]; ++ ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer13.a68 +@@ -0,0 +1,19 @@ ++# { dg-options "-fstropping=upper" } # ++# Soft balance with EXIT's. # ++BEGIN INT i; [ 1 : 1 ]INT ri, rj; ++ PROC pri = REF[]INT : rj; ++ ++ FOR c TO 3 ++ DO ++ ([]PROC VOID switch = ( lrri, li, lpri); ++ switch[c]; SKIP # hip # ++ EXIT lrri: LOC REF[]INT := ri # deref # ++ EXIT li: i # row # ++ EXIT lpri: pri # deproc # ++ ) := c ++ OD; ++ ++ ASSERT (ri[1] = 1); ++ ASSERT (i = 2); ++ ASSERT (pri[1] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer14.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing of NIL yields NIL. # ++BEGIN ASSERT (REF[]INT(NIL) :=: REF INT(NIL)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/decl01.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Some declarers. # ++BEGIN [1:10]INT i, ++ [1:10]STRUCT(REF[]INT i, BOOL j) k, ++ [1:10]STRUCT([1:10]INT i, BOOL j) l, ++ [1:10]REF[]INT p; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/decl03.a68 +@@ -0,0 +1,40 @@ ++# { dg-options "-fstropping=upper" } # ++# P.G. Hibbard, Proc. Int. Conf. A68 III, Winnipeg, June 1974: ++ applied occurrence of mode-indication in actual-bounds ++ of its actual-declarer ++# ++BEGIN PROC itoa = (INT i) STRING: ++ BEGIN IF i = 0 ++ THEN "0" ++ ELSE INT n := i; ++ STRING res := (i < 0 | n := -n; "-"); ++ WHILE n /= 0 ++ DO INT rem = n %* 10; ++ res +:= REPR (rem > 9 | (rem - 10) + ABS "a" | rem + ABS "0"); ++ n %:= 10 ++ OD; ++ res ++ FI ++ END; ++ ++ INT n := 4; ++ CHAR a := "a", b := "b", c := "c", d; ++ ++ PROC swap = (REF CHAR c1, c2) VOID: ++ (d := c1; c1 := c2; c2 := d); ++ ++ MODE HANOI = ++ [IF n > 0 ++ THEN n -:= 1; ++ swap (b, c); ++ HANOI h1; ++ swap (b, c); ++ puts ("move " + itoa (LWB h1 + 1) + " from " + a + " to " + c); ++ swap (a, b); ++ HANOI h2; ++ swap (a, b); ++ n +:= 1 ++ ELSE 0 ++ FI : 1] INT; ++ LOC HANOI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/decl04.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++(MODE U = UNION(INT,REAL); ++ LOC UNION(U) # no list needed # u := 1; SKIP) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/decl05.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Application of a virtually useless mode. # ++BEGIN puts ("Result should be ppp"); ++ MODE P = PROC (P) P; ++ P p = (P p) P: (puts ("p"); p); ++ (p(p(p(p)))) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/execute.exp +@@ -0,0 +1,29 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++load_lib algol68-torture.exp ++ ++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] { ++ # If we're only testing specific files and this isn't one of them, skip it. ++ if ![runtest_file_p $runtests $testcase] then { ++ continue ++ } ++ algol68-torture-execute $testcase ++} +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/flex01.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE S = FLEX[1:0]CHAR, T = [1:0]CHAR; ++ REF STRING n = LOC STRING := "Next line will be empty, then a"; ++ UNION (REF S, REF T) f = LOC T := ""; ++ UNION (STRING, CHAR) u = UNION (S,CHAR) ("a"); ++ ++ puts (n); ++ puts ((f | (REF S s): s, (REF T t): t)); ++ puts ((u | (STRING s): s, (CHAR c): c)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/flex02.a68 +@@ -0,0 +1,11 @@ ++{ Transiency tests. } ++begin bool b = true, y = false; ++ ++ assert ((if b then loc char else (loc string)[1] fi := "a") ++ = "a"); ++ assert ((if b then loc[1:3]char else (loc string)[] fi := "bcd") ++ = "bcd"); ++ { XXX original says loc string but parser doesn't like it. ++ probably parser bug } ++ if y then loc char else loc[1:1,1:3]char fi := "efg" ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef01.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN IF INT i := 1; FALSE ++ THEN INT i := 2; ASSERT (i = 2) ++ ELSE ASSERT (i = 1) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef02.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN IF INT i := 1; TRUE ++ THEN INT i := 2; ASSERT (i = 2) ++ ELSE ASSERT (i = 1) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef03.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 1; ++ ++ PROC a = INT: (INT i = 2; b); ++ PROC b = INT: i; ++ ASSERT (a = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef04.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 1, j := -1; ++ ++ PROC a = VOID: (INT i = 2, j = -2; b); ++ PROC b = VOID: (INT j = -3; ++ PROC c = VOID: (ASSERT (i + j = -2)); ++ d (c)); ++ PROC d = (PROC VOID e) VOID: ++ (INT i = 4, j = -4; e); ++ a ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef05.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 2; ++ (INT i = i; ASSERT (i = 0)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef06.a68 +@@ -0,0 +1,23 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING int = "INT", real = "REAL", rreal = "[]REAL"; ++ ++ OP AA = (UNION(INT,REAL,[]REAL) p) UNION(REAL,[]REAL): ++ CASE p ++ IN (INT i): AA REAL (i), ++ (REAL r): AA []REAL (r) ++ OUSE p ++ IN ([]REAL rr): CASE ROUND rr[1] IN 3.0, rr OUT 4.0 ESAC ++ OUT error ++ ESAC; ++ ++ FOR i TO 3 ++ DO AA AA CASE i ++ IN UNION(REAL,INT)(1), ++ UNION(INT,[]REAL)([]REAL(2)), ++ AA 3 ++ ESAC ++ OD; ++ 0 EXIT ++error: ++ puts ("Error in united-case clause"); ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef07.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Redeclaring LWB. # ++BEGIN OP LWB = ([]INT a) REAL: a[1] + a[2]; ++ OP LWB = ([]REAL a) REAL: a[1] - a[2]; ++ ++ ASSERT (LWB (1| (8, 2), 3, []INT: SKIP) = 10); ++ ASSERT (LWB (1| (8, 2), 3, []REAL: SKIP) = 6.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef11.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++# More operators and uniting. # ++BEGIN MODE UN = UNION (INT, REAL); ++ OP + = (UNION (REF UN, REF CHAR) a) VOID: ++ BEGIN CASE a ++ IN (REF UN ru): (ru | ++ (INT i): (puts ("integer"); SKIP), ++ (REAL r): (puts ("real"); SKIP) ++ ), ++ (REF CHAR ch): (puts ("char"); SKIP) ++ ESAC ++ END; ++ ++ +(HEAP UN := 1); ++ +(HEAP UN := 2.0); ++ +(HEAP CHAR := "3") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef12.a68 +@@ -0,0 +1,52 @@ ++# { dg-options "-fstropping=upper" } # ++# Priorities and weird constructions # ++BEGIN ++WHILE INT n:= 0; ++ OP + = (REF INT i, CHAR c) STRING: "ab"; ++ ( WHILE DO GOTO skip OD; TRUE DO SKIP OD; ++ PRIO + = 1; SKIP ++ EXIT skid: ++ (HEAP INT +:= 1 + "1" +=: (HEAP STRING := "c")) = "abc" ++ EXIT skip: GOTO skid ++ ) ++DO DO ++ # The implicit structure of the formulas is ++ ( a O1 ( b + ( c O2 d))) ++ which is only achieved if pr(O1) < pr(+) < pr(O2) ++ # ++ ++ PRIO + = 2; ++ ++ OP + = (INT i, BOOL b) STRING: (puts("corr"); "ect,"); ++ OP + = (REAL x, BOOL b) BOOL: (puts("Line "); FALSE); ++ OP + = (CHAR c, BOOL b) BOOL: (puts("two "); FALSE); ++ OP + = (BITS b, INT i) STRING: (puts("one "); "Nope "); ++ OP + = (REF BYTES b, REAL x) INT: (puts("is "); -(n+:=1)); ++ OP + = (STRING s, COMPL c) BITS: (puts("sho"); drop); ++ ++ puts((HEAP STRING +:= ++ ABS ++ IF PRIO + = 3; ++ ODD n OR 2.0 + "a" = "b" ++ THEN PRIO + = 4; ++ TRUE AND "a" + 2 < 3 ++ ELSE PRIO + = 5; ++ "prio" = 2r1 + 2 - 3 ++ FI ++ ++ + # prio 2 # ++ ++ CASE PRIO + = 7; ++ 0 - LOC BYTES + 3.0 ** 5 ++ IN TRUE, FALSE ++ OUT PRIO + = 8; ++ 3 ELEM "prio" + 2.0 I 3.0 ++ ESAC ++ ++ AND random < .5) + "\n") ++ OD ++ EXIT drop: ++ puts("rter than line three." + "\n" + "End of test"); ++ stop ++OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idrl01.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Identity relations. # ++BEGIN REAL x; REF REAL y := x; ++ ASSERT ((x :=: y) AND (y :=: x)); ++ ASSERT (x :=: REF[]REAL(x)[1]); ++ ASSERT (x :/=: REF[]REAL(x)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/jump01.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Simple jumps and EXITs. # ++BEGIN INT control := 0; ++ FOR i TO 2 ++ DO IF i = 2 THEN GOTO l FI; control +:= 10 EXIT ++ l: control +:= 3 ++ OD; ++ ASSERT (control = 13) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/jump02.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL a; ++ GOTO l; ++ INT i := 1; ++ # The declaration of `i' has not been elaborated. # ++l: ASSERT (i = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/jump03.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 1, j := 2; ++ i := j := (GOTO l; 3); ++l: ASSERT (i = 1 AND j = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/jump04.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Jump out of procedure. # ++BEGIN # Directly # ++ (PROC jump = VOID: (GOTO l; ASSERT (FALSE)); ++ jump; ASSERT (FALSE); ++ l: SKIP); ++ # Indirectly # ++ (MODE HIDE = PROC VOID; ++ HIDE p = (TRUE | GOTO m); ++ p; ASSERT (FALSE); m: SKIP) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/mdeq02.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Mode equivalencing. # ++BEGIN MODE N = PROC(M)M, M = PROC(N)N; ++ # Both okay, since M and N are the same. # ++ PROC M(PROC N(SKIP)); ++ PROC N(PROC M(SKIP)); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/mdeq04.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++# Unions. # ++BEGIN MODE N = UNION (REAL, UNION (BOOL, INT)), ++ M = UNION (UNION (REAL, BOOL), INT); ++ # Both okay, since M and N are the same. # ++ PROC M (PROC N (SKIP)); ++ PROC N (PROC M (SKIP)); ++ ++ MODE U = UNION (INT, PROC(U)INT), ++ V = UNION (U, PROC(V)INT); ++ # Both okay, since U and V are the same. # ++ PROC U (PROC V (SKIP)); ++ PROC V (PROC U (SKIP)); ++ ++ SKIP ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/misc07.a68 +@@ -0,0 +1,207 @@ ++# { dg-options "-fstropping=upper" } # ++# 100 nested proc declarations; prints 100 100 # ++(INT i := 0; INT j := (INT a = ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++a); ++ASSERT (i = j); ++ASSERT (i = 100 AND j = 100) ++) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null01.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# The original test uses just SKIP, but this compiler requires an ++ enclosed clause. # ++ ++(SKIP) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null02.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++(0) ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null03.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN DO stop OD ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null04.a68 +@@ -0,0 +1,2 @@ ++# { dg-options "-fstropping=upper" } # ++((SKIP,SKIP)) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null05.a68 +@@ -0,0 +1,2 @@ ++# { dg-options "-fstropping=upper" } # ++(PAR (SKIP,SKIP)) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null06.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BY 0 DO stop OD ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null07.a68 +@@ -0,0 +1,2 @@ ++# { dg-options "-fstropping=upper" } # ++IF BOOL (SKIP) THEN SKIP FI +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null08.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++CASE INT(SKIP) IN SKIP, SKIP ESAC ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null09.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++CASE UNION(BOOL, VOID)(SKIP) IN (VOID): SKIP ESAC ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/numr07.a68 +@@ -0,0 +1,81 @@ ++# { dg-options "-fstropping=upper" } # ++#JKok, 730612, test Choleski decomposition# ++BEGIN OP * = ([]REAL a, b) REAL : ++ (REAL s:= 0; FOR i TO UPB a DO s +:= a[i] * b[i] OD;s); ++ ++ PROC decsym= (REF [,] REAL a, REF [] INT p, REAL aux) ++ INT : ++ IF INT n = 1 UPB a; ++ 2 UPB a /= n OR UPB p /= n THEN 0 ++ ELSE REAL max:= 0, epsnorm, ukk, uki, aii, INT pk:= 1, r:= 0; ++ ++ PROC ichvec= (REF [] REAL a, b) VOID : ++ IF INT n= UPB a; n > 0 THEN ++ [] REAL h= a; a:= b; b:= h ++ FI # interchange two vectors#; ++ ++ FOR k TO n ++ DO IF a[k,k] > max THEN max:= a[k,k]; pk:= k FI OD; ++ epsnorm:= aux * max; ++ FOR k TO n WHILE max > epsnorm ++ DO INT k1 = k + 1; ++ p[k]:= pk; r:= k; ++ IF pk /= k ++ THEN ichvec(a[ :k-1,k], a[ :k-1,pk]); ++ ichvec(a[k,k1:pk - 1], a[k1:pk - 1,pk]); ++ ichvec(a[k,pk + 1: ], a[pk,pk + 1: ]); ++ a[pk,pk]:= a[k,k] ++ FI; ++ ukk:= a[k,k]:= sqrt(max); max:= 0; pk:= k1; ++ FOR i FROM k1 TO n ++ DO uki:= a[k,i]:= (a[k,i] - a[ :k-1,k]*a[ :k-1,i]) / ukk; ++ aii:= a[i,i] -:= uki * uki; ++ IF aii > max THEN max:= aii; pk:= i FI ++ OD ++ OD; ++ r ++ FI # Choleski decomposition with diagonal pivoting#, ++ ++ PROC solsym= ([,] REAL a,[] INT p,REF [] REAL b) VOID: ++ IF INT n = 1 UPB a; ++ 2 UPBa = n AND UPB p = n AND UPB b = n ++ THEN INT pk, REAL r; ++ FOR k TO n ++ DO r:= b[k]; pk:= p[k]; ++ b[k]:= (b[pk] - a[ :k - 1,k] * b[ :k - 1]) / a[k,k]; ++ IF pk /= k THEN b[pk]:= r FI ++ OD; ++ FOR k FROM n BY - 1 TO 1 ++ DO b[k]:= (b[k] - a[k,k+1: ] * b[k+1: ]) / a[k,k] OD; ++ FOR k FROM n BY - 1 TO 1 ++ DO IF pk:= p[k]; pk /= k ++ THEN r:= b[k]; b[k]:= b[pk]; b[pk]:= r FI ++ OD ++ FI # solution of Choleski decomposed system #; ++ ++ puts ("Value, expected, difference\n\n"); ++ ++ FOR n TO 8 ++ DO [1:n, 1:n] REAL a, aa, [1:n]REAL b, c, [1:n]INT piv; ++ FOR i TO n DO FOR j TO n ++ DO a[i,j]:= aa[i,j]:= 1 / (2 * n + 1 - i - j) OD OD; ++ FOR i TO n DO b[i]:= 2 ** (n - i) OD; ++ IF decsym (a, piv, 1e-13) = n ++ THEN solsym(a, piv, b); ++ FOR i TO n ++ DO ++ CO puts (aa[i,] * b, REAL(2 ** (n - i)), ++ aa[i,] * b - 2 ** (n - i)); ++ CO ++ puts ("term\n") ++ OD ++ ELSE puts ("Coefficients matrix is not positive definite") ++ FI; ++ puts ("\n") ++ OD ++ #Output approximately: 1 ++ 2 1 ++ 4 2 1 ++ . . . ++ 128 64 . . . 1 # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper01.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator test. # ++BEGIN OP +:= = (INT a, b) INT: a + b; ++ OP +:= = (INT a, REAL b) INT: ROUND (a - b); ++ ++ ASSERT ((2+:=1) = 3); ++ ASSERT ((2+:=1.0) = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper02.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator and balancing. # ++BEGIN OP + = (UNION(INT,BOOL) a) INT: (a|(BOOL):1,(INT):2); ++ ASSERT (+IF TRUE THEN TRUE ELSE 0 FI = 1); ++ ASSERT (+IF FALSE THEN TRUE ELSE 0 FI = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper03.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator priorities. # ++BEGIN PRIO + = 7; ++ ASSERT ((1+2*3) = 9); ++ BEGIN PRIO + = 6; ++ ASSERT ((1+2*3) = 7); ++ FOR i TO 1 WHILE PRIO + = 7; TRUE ++ DO ASSERT ((1+2*3) = 9); OD; ++ ASSERT ((1+2*3) = 7) ++ END; ++ ASSERT ((1+2*3) = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper04.a68 +@@ -0,0 +1,21 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator identification. # ++BEGIN MODE M = UNION ([]INT, BOOL, STRING); ++ ++ OP + = (REAL a) INT: 2; ++ OP + = (CHAR a) INT: 3; ++ OP + = (M a) INT: 1; ++ ++ PROC prpm = REF PROC M: HEAP PROC M := M : "aap"; ++ UNION (BOOL, STRING) b = "b "; ++ ++ FOR n TO 5 ++ DO ASSERT ((+ CASE n ++ IN SKIP, ++ TRUE, ++ IF FALSE THEN "aa" ELSE b FI, ++ prpm ++ OUT LOC[1:1]INT := 1 ++ ESAC) = 1) ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper05.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator test, mutual recursion. # ++BEGIN PRIO +> = 1, +< = 1; ++ INT cnt := 0; ++ OP +> = (INT a, b) INT: IF (cnt +:= 1) = 10 THEN stop ELSE a +< b FI; ++ OP +< = (INT a, b) INT: IF (cnt +:= 1) = 10 THEN stop ELSE a +> b FI; ++ 1 +> 2 # loop # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper07.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator declarations. # ++BEGIN OP SQ = (REAL x) REAL: x * x, ++ RD = (INT x) REAL: random, ++ OP (REAL)REAL SIN = (puts ("Print ten times 1\n"); sin), ++ COS = cos; ++ ++ puts ("\n"); ++ TO 10 ++ DO REAL x = RD 1; SQ SIN x + SQ COS x OD; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper08.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++# A complicated formula relying totally on priorities. # ++( ++ OP I= (INT i, j) COMPL : (i, j); ++ OP ** = (INT i, COMPL z) INT : ROUND(i + RE z + IM z); ++ OP < = (INT i, j) INT : (i - j) * 2; ++ OP = = (INT i, j) INT : (i + j) * 2; ++ OP AND= (INT i, j) INT : (i + i - j) * 3; ++ OP OR= (INT i, j) INT : (i - j - j) * 3; ++ ++ INT loc int; ++ # Note: all operators are followed by their priorities # ++ ASSERT (((loc int := 0) -:= 1 OR 2 AND 3 = 4 < 5 + 6 * 7 ** 8 I 9 ++ -:= 1 ** 8 OR 2 * 7 AND 3 + 6 = 4 < 5) EQ 10650) ++ # The implied parenthesis structure is : ++ (1(2(3(4(5(6(7(8(9)))))))))1((8)2((7)3((6)4(5)))) ++ and it yields 10650 # ++) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper09.a68 +@@ -0,0 +1,65 @@ ++# { dg-options "-fstropping=upper" } # ++# Monadic operators, non-bold monads. # ++BEGIN INT decls := 0; ++ OP += (INT a) INT: a + 1; decls +:= 1; ++ OP +<= (INT a) INT: a + 1; decls +:= 1; ++ OP +>= (INT a) INT: a + 1; decls +:= 1; ++ OP +/= (INT a) INT: a + 1; decls +:= 1; ++ OP +== (INT a) INT: a + 1; decls +:= 1; ++ OP +*= (INT a) INT: a + 1; decls +:= 1; ++ OP +:== (INT a) INT: a + 1; decls +:= 1; ++ OP +<:== (INT a) INT: a + 1; decls +:= 1; ++ OP +>:== (INT a) INT: a + 1; decls +:= 1; ++ OP +/:== (INT a) INT: a + 1; decls +:= 1; ++ OP +=:== (INT a) INT: a + 1; decls +:= 1; ++ OP +*:== (INT a) INT: a + 1; decls +:= 1; ++ OP +=:= (INT a) INT: a + 1; decls +:= 1; ++ OP +<=:= (INT a) INT: a + 1; decls +:= 1; ++ OP +>=:= (INT a) INT: a + 1; decls +:= 1; ++ OP +/=:= (INT a) INT: a + 1; decls +:= 1; ++ OP +==:= (INT a) INT: a + 1; decls +:= 1; ++ OP +*=:= (INT a) INT: a + 1; decls +:= 1; ++ ++ OP -= (INT a) INT: a + 1; decls +:= 1; ++ OP -<= (INT a) INT: a + 1; decls +:= 1; ++ OP ->= (INT a) INT: a + 1; decls +:= 1; ++ OP -/= (INT a) INT: a + 1; decls +:= 1; ++ OP -== (INT a) INT: a + 1; decls +:= 1; ++ OP -*= (INT a) INT: a + 1; decls +:= 1; ++ OP -:== (INT a) INT: a + 1; decls +:= 1; ++ OP -<:== (INT a) INT: a + 1; decls +:= 1; ++ OP ->:== (INT a) INT: a + 1; decls +:= 1; ++ OP -/:== (INT a) INT: a + 1; decls +:= 1; ++ OP -=:== (INT a) INT: a + 1; decls +:= 1; ++ OP -*:== (INT a) INT: a + 1; decls +:= 1; ++ OP -=:= (INT a) INT: a + 1; decls +:= 1; ++ OP -<=:= (INT a) INT: a + 1; decls +:= 1; ++ OP ->=:= (INT a) INT: a + 1; decls +:= 1; ++ OP -/=:= (INT a) INT: a + 1; decls +:= 1; ++ OP -==:= (INT a) INT: a + 1; decls +:= 1; ++ OP -*=:= (INT a) INT: a + 1; decls +:= 1; ++ ++ OP %= (INT a) INT: a + 1; decls +:= 1; ++ OP %<= (INT a) INT: a + 1; decls +:= 1; ++ OP %>= (INT a) INT: a + 1; decls +:= 1; ++ OP %/= (INT a) INT: a + 1; decls +:= 1; ++ OP %== (INT a) INT: a + 1; decls +:= 1; ++ OP %*= (INT a) INT: a + 1; decls +:= 1; ++ OP %:== (INT a) INT: a + 1; decls +:= 1; ++ OP %<:== (INT a) INT: a + 1; decls +:= 1; ++ OP %>:== (INT a) INT: a + 1; decls +:= 1; ++ OP %/:== (INT a) INT: a + 1; decls +:= 1; ++ OP %=:== (INT a) INT: a + 1; decls +:= 1; ++ OP %*:== (INT a) INT: a + 1; decls +:= 1; ++ OP %=:= (INT a) INT: a + 1; decls +:= 1; ++ OP %<=:= (INT a) INT: a + 1; decls +:= 1; ++ OP %>=:= (INT a) INT: a + 1; decls +:= 1; ++ OP %/=:= (INT a) INT: a + 1; decls +:= 1; ++ OP %==:= (INT a) INT: a + 1; decls +:= 1; ++ OP %*=:= (INT a) INT: a + 1; decls +:= 1; ++ ++ ASSERT (++<+>+/+=+*+:=+<:=+>:=+/:=+=:=+*:=+=:+<=:+>=:+/=:+==:+*=: ++ --<->-/-=-*-:=-<:=->:=-/:=-=:=-*:=-=:-<=:->=:-/=:-==:-*=: ++ %%<%>%/%=%*%:=%<:=%>:=%/:=%=:=%*:=%=:%<=:%>=:%/=:%==:%*=: 0 = decls) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper10.a68 +@@ -0,0 +1,87 @@ ++# { dg-options "-fstropping=upper" } # ++# Dyadic operators, non-bold monads # ++BEGIN # the first declaration is different to avoid a recursive loop # ++ INT decls := 0; ++ OP += (INT a, b) INT: (INT c:= a; c PLUSAB b); ++ decls PLUSAB 1; ++ OP +<= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +>= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +/= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +*= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +<:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +>:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +/:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +=:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +*:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +<=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +>=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +/=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +==:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +*=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ ++ OP -= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -<= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP ->= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -/= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -*= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -<:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP ->:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -/:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -=:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -*:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -<=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP ->=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -/=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -==:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -*=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ ++ OP %= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %<= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %>= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %/= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %*= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %<:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %>:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %/:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %=:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %*:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %<=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %>=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %/=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %==:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %*=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ ++ PRIO ++ +=1, +<=1, +>=1, +/=1, +==1, +*=1, ++ +:==1, +<:==1, +>:==1, +/:==1, +=:==1, +*:==1, ++ +=:=1, +<=:=1, +>=:=1, +/=:=1, +==:=1, +*=:=1, ++ ++ -=1, -<=1, ->=1, -/=1, -==1, -*=1, ++ -:==1, -<:==1, ->:==1, -/:==1, -=:==1, -*:==1, ++ -=:=1, -<=:=1, ->=:=1, -/=:=1, -==:=1, -*=:=1, ++ ++ %=1, %<=1, %>=1, %/=1, %==1, %*=1, ++ %:==1, %<:==1, %>:==1, %/:==1, %=:==1, %*:==1, ++ %=:=1, %<=:=1, %>=:=1, %/=:=1, %==:=1, %*=:=1; ++ ++ ASSERT ((+ 1 +< 1 +> 1 +/ 1 += 1 +* 1 ++ +:= 1 +<:= 1 +>:= 1 +/:= 1 +=:= 1 +*:= 1 ++ +=: 1 +<=: 1 +>=: 1 +/=: 1 +==: 1 +*=: 1 ++ ++ - 1 -< 1 -> 1 -/ 1 -= 1 -* 1 ++ -:= 1 -<:= 1 ->:= 1 -/:= 1 -=:= 1 -*:= 1 ++ -=: 1 -<=: 1 ->=: 1 -/=: 1 -==: 1 -*=: 1 ++ ++ % 1 %< 1 %> 1 %/ 1 %= 1 %* 1 ++ %:= 1 %<:= 1 %>:= 1 %/:= 1 %=:= 1 %*:= 1 ++ %=: 1 %<=: 1 %>=: 1 %/=: 1 %==: 1 %*=: 1) EQ decls) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper11.a68 +@@ -0,0 +1,141 @@ ++# { dg-options "-fstropping=upper" } # ++# Dyadic operators, non-bold nomads # ++BEGIN INT decls := 0; ++ ++ OP <= (INT a, b) INT: a + b; decls +:= 1; ++ OP <<= (INT a, b) INT: a + b; decls +:= 1; ++ OP <>= (INT a, b) INT: a + b; decls +:= 1; ++ OP :== (INT a, b) INT: a + b; decls +:= 1; ++ OP =:= (INT a, b) INT: a + b; decls +:= 1; ++ OP = (INT a, b) INT: a + b; decls +:= 1; ++ OP ><= (INT a, b) INT: a + b; decls +:= 1; ++ OP >>= (INT a, b) INT: a + b; decls +:= 1; ++ OP >/= (INT a, b) INT: a + b; decls +:= 1; ++ OP >== (INT a, b) INT: a + b; decls +:= 1; ++ OP >*= (INT a, b) INT: a + b; decls +:= 1; ++ OP >:== (INT a, b) INT: a + b; decls +:= 1; ++ OP ><:== (INT a, b) INT: a + b; decls +:= 1; ++ OP >>:== (INT a, b) INT: a + b; decls +:= 1; ++ OP >/:== (INT a, b) INT: a + b; decls +:= 1; ++ OP >=:== (INT a, b) INT: a + b; decls +:= 1; ++ OP >*:== (INT a, b) INT: a + b; decls +:= 1; ++ OP >=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP ><=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP >>=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP >/=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP >==:= (INT a, b) INT: a + b; decls +:= 1; ++ OP >*=:= (INT a, b) INT: a + b; decls +:= 1; ++ ++ OP /= (INT a, b) INT: a + b; decls +:= 1; ++ OP /<= (INT a, b) INT: a + b; decls +:= 1; ++ OP />= (INT a, b) INT: a + b; decls +:= 1; ++ OP //= (INT a, b) INT: a + b; decls +:= 1; ++ OP /== (INT a, b) INT: a + b; decls +:= 1; ++ OP /*= (INT a, b) INT: a + b; decls +:= 1; ++ OP /:== (INT a, b) INT: a + b; decls +:= 1; ++ OP /<:== (INT a, b) INT: a + b; decls +:= 1; ++ OP />:== (INT a, b) INT: a + b; decls +:= 1; ++ OP //:== (INT a, b) INT: a + b; decls +:= 1; ++ OP /=:== (INT a, b) INT: a + b; decls +:= 1; ++ OP /*:== (INT a, b) INT: a + b; decls +:= 1; ++ OP /=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP /<=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP />=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP //=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP /==:= (INT a, b) INT: a + b; decls +:= 1; ++ OP /*=:= (INT a, b) INT: a + b; decls +:= 1; ++ ++ OP == (INT a, b) INT: a + b; decls +:= 1; ++ OP =<= (INT a, b) INT: a + b; decls +:= 1; ++ OP =>= (INT a, b) INT: a + b; decls +:= 1; ++ OP =/= (INT a, b) INT: a + b; decls +:= 1; ++ OP === (INT a, b) INT: a + b; decls +:= 1; ++ OP =*= (INT a, b) INT: a + b; decls +:= 1; ++ OP =:== (INT a, b) INT: a + b; decls +:= 1; ++ OP =<:== (INT a, b) INT: a + b; decls +:= 1; ++ OP =>:== (INT a, b) INT: a + b; decls +:= 1; ++ OP =/:== (INT a, b) INT: a + b; decls +:= 1; ++ OP ==:== (INT a, b) INT: a + b; decls +:= 1; ++ OP =*:== (INT a, b) INT: a + b; decls +:= 1; ++ OP ==:= (INT a, b) INT: a + b; decls +:= 1; ++ OP =<=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP =>=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP =/=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP ===:= (INT a, b) INT: a + b; decls +:= 1; ++ OP =*=:= (INT a, b) INT: a + b; decls +:= 1; ++ ++ OP *= (INT a, b) INT: a + b; decls +:= 1; ++ OP *<= (INT a, b) INT: a + b; decls +:= 1; ++ OP *>= (INT a, b) INT: a + b; decls +:= 1; ++ OP */= (INT a, b) INT: a + b; decls +:= 1; ++ OP *== (INT a, b) INT: a + b; decls +:= 1; ++ OP **= (INT a, b) INT: a + b; decls +:= 1; ++ OP *:== (INT a, b) INT: a + b; decls +:= 1; ++ OP *<:== (INT a, b) INT: a + b; decls +:= 1; ++ OP *>:== (INT a, b) INT: a + b; decls +:= 1; ++ OP */:== (INT a, b) INT: a + b; decls +:= 1; ++ OP *=:== (INT a, b) INT: a + b; decls +:= 1; ++ OP **:== (INT a, b) INT: a + b; decls +:= 1; ++ OP *=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP *<=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP *>=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP */=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP *==:= (INT a, b) INT: a + b; decls +:= 1; ++ OP **=:= (INT a, b) INT: a + b; decls +:= 1; ++ ++ PRIO ++ <=1, <<=1, <>=1, :==1, =:=1, =1, ><=1, >>=1, >/=1, >==1, >*=1, ++ >:==1, ><:==1, >>:==1, >/:==1, >=:==1, >*:==1, ++ >=:=1, ><=:=1, >>=:=1, >/=:=1, >==:=1, >*=:=1, ++ ++ /=1, /<=1, />=1, //=1, /==1, /*=1, ++ /:==1, /<:==1, />:==1, //:==1, /=:==1, /*:==1, ++ /=:=1, /<=:=1, />=:=1, //=:=1, /==:=1, /*=:=1, ++ ++ ==1, =<=1, =>=1, =/=1, ===1, =*=1, ++ =:==1, =<:==1, =>:==1, =/:==1, ==:==1, =*:==1, ++ ==:=1, =<=:=1, =>=:=1, =/=:=1, ===:=1, =*=:=1, ++ ++ *=1, *<=1, *>=1, */=1, *==1, **=1, ++ *:==1, *<:==1, *>:==1, */:==1, *=:==1, **:==1, ++ *=:=1, *<=:=1, *>=:=1, */=:=1, *==:=1, **=:=1; ++ ++ ASSERT ((0 ++ < 1 << 1 <> 1 := 1 =: 1 1 >< 1 >> 1 >/ 1 >= 1 >* 1 ++ >:= 1 ><:= 1 >>:= 1 >/:= 1 >=:= 1 >*:= 1 ++ >=: 1 ><=: 1 >>=: 1 >/=: 1 >==: 1 >*=: 1 ++ ++ / 1 /< 1 /> 1 // 1 /= 1 /* 1 ++ /:= 1 /<:= 1 />:= 1 //:= 1 /=:= 1 /*:= 1 ++ /=: 1 /<=: 1 />=: 1 //=: 1 /==: 1 /*=: 1 ++ ++ = 1 =< 1 => 1 =/ 1 == 1 =* 1 ++ =:= 1 =<:= 1 =>:= 1 =/:= 1 ==:= 1 =*:= 1 ++ ==: 1 =<=: 1 =>=: 1 =/=: 1 ===: 1 =*=: 1 ++ ++ * 1 *< 1 *> 1 */ 1 *= 1 ** 1 ++ *:= 1 *<:= 1 *>:= 1 */:= 1 *=:= 1 **:= 1 ++ *=: 1 *<=: 1 *>=: 1 */=: 1 *==: 1 **=: 1) EQ decls) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper14.a68 +@@ -0,0 +1,32 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (UPB []INT(1,2,3,4) = 4); ++ ASSERT (UPB "abcde" = 5); ++ ASSERT (UPB []INT(SKIP,SKIP)[1:1@5] = 5); ++ ASSERT (2 UPB [,]INT(1,2)[,@4] = 4); ++ ++ # All declarers are of the mode row-of, so UPB/LWB ++ should work. ++ # ++ ASSERT (UPB UNION([]INT,[,]INT)([]INT (1)) = 1); ++ ASSERT (UPB UNION([]INT,[,]INT)([,]INT (1,1)) = 2); ++ ASSERT (UPB UNION([]STRING,STRING)("ab") = 2); ++ ASSERT (LWB UNION([]INT,[,]INT)([]INT (1)) = 1); ++ ASSERT (LWB UNION([]INT,[,]INT)([,]INT (1,1)) = 1); ++ ASSERT (LWB UNION([]STRING,STRING)("ab") = 1); ++ ++ ASSERT (1 UPB [,,]CHAR ("abc", "def") = 2); ++ ASSERT (2 UPB [,,]CHAR ("abc", "def") = 1); ++ ASSERT (3 UPB [,,]CHAR ("abc", "def") = 3); ++ ++ ASSERT (LWB LOC STRING LWB LOC STRING = 1); ++ ++ # Balance. # ++ FOR n TO 4 ++ DO n UPB CASE n ++ IN []INT (1), ++ [,]REAL (1), ++ UNION([]INT,[,,]BOOL) ([,,]BOOL (TRUE)), ++ UNION([]INT,UNION([,]REAL,[,,,]CHAR))([,,,]CHAR ("a")) ++ ESAC ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper16.a68 +@@ -0,0 +1,866 @@ ++# { dg-options "-fstropping=upper" } # ++# Tests on operators. # ++BEGIN ++ PROC itoa = (INT i) STRING: ++ BEGIN IF i = 0 ++ THEN "0" ++ ELSE INT n := ABS i; ++ STRING res; ++ WHILE n /= 0 ++ DO INT rem = n %* 10; ++ res := REPR (rem > 9 ++ | (rem - 10) + ABS "a" ++ | rem + ABS "0") + res; ++ n %:= 10 ++ OD; ++ (i < 0 | "-" + res | res) ++ FI ++ END; ++ ++ INT errors := 0; ++ PROC error = (INT i) VOID: ++ (puts("Error in test " + itoa (i)); errors +:= 1); ++ ++ PROC tste = (INT i) VOID: ++ BEGIN error(i); ++ puts ("; wrong branch taken\n") ++ END; ++ ++ PROC tsti = (INT i, INT p, q) VOID: ++ IF p = q THEN SKIP ++ ELSE error(i); ++ puts ("; value is: " + itoa (q) + ", must be: " + itoa (p) + "\n") ++ FI; ++ ++ PROC tstr = (INT i, REAL p, q) VOID: ++ # two reals are considered equal if their difference is negligible ++ compared to one of them ++ # ++ IF p + (p-q)/8 = p THEN SKIP ++ ELSE error(i); ++ errors -:= 1; # XXX Optimizations make comparisons to fail. # ++ puts ("; real values are not equal\n") ++ FI; ++ ++ PROC tstb = (INT i, BOOL p, q) VOID: ++ BEGIN ++ IF p THEN IF q THEN SKIP ELSE GOTO bad FI ++ ELSE IF q THEN GOTO bad ELSE SKIP FI ++ FI ++ EXIT bad: ++ error(i); ++ puts ("; boolean values are not equal\n") ++ END; ++ ++ PROC tstc = (INT i, CHAR p, q) VOID: ++ IF p = q THEN SKIP ++ ELSE error(i); ++ puts ("; value is: " + q + ", must be: " + p + "\n") ++ FI; ++ ++ PROC tstli = (INT i, LONG INT p, q) VOID: ++ IF p = q THEN SKIP ++ ELSE error(i); ++ puts ("; long int values are not equal\n") ++ FI; ++ ++ PROC tstlr = (INT i, LONG REAL p, q) VOID: ++ IF p + (p-q)/LONG 8 = p THEN SKIP ++ ELSE error(i); ++ errors -:= 1; # XXX Optimizations make comparisons to fail. # ++ puts ("; long real values are not equal\n") ++ FI; ++ ++puts("Test: REPR, ABS\n"); ++BEGIN ++ INT b1; LONG INT b2; ++ INT b0 = 44; ++ [1:2]CHAR a; ++ a[2]:="a"; ++ tstc(1, "a", REPR ABS"a"); ++ tstc(2, "a", REPR ABS a[2]); ++ tsti(3, +43, ABS(REPR 43)); ++ tsti(4, +44, ABS(REPR b0)); ++ b1:=45; ++ tsti(5, +45, ABS(REPR b1)); ++ tsti(6, +46, ABS(REPR (46+0))); ++ b2:=LONG 43; ++ tsti(7, +43, ABS(REPR SHORTEN b2)); ++ tsti(8, +46, ABS REPR SHORTEN LONG 46) ++END; ++ ++puts("Test: LWB, UPB\n"); ++BEGIN ++ REF[]CHAR b; ++ [-5:-3, -1:3]REF[ , ]REAL a; ++ tsti(9, -5, 1 LWB a); ++ tsti(10, -5, LWB a); ++ tsti(11, -1, 2 LWB a); ++ tsti(12, -3, 1 UPB a); ++ tsti(13, -3, UPB a); ++ tsti(14, +3, 2 UPB a); ++ FOR i FROM LWB a BY 1 TO UPB a DO ++ FOR j FROM 2 LWB a BY 1 TO 2 UPB a DO ++ BEGIN ++ [i:j, -j:-i]REAL b; ++ a[i, j] := b; ++ tsti(15, i, 1 LWB a[i, j]); ++ tsti(16, j, UPB a[i, j]); ++ tsti(17, -j, 2 LWB a[i, j]); ++ tsti(18, -i, 2 UPB a[i, j]) ++ END ++ OD OD ++END; ++ ++BEGIN ++ [1:3, 2:4, 3:5]INT a aaaaa; ++ INT jjjjjj; ++ FOR i FROM 1 BY 1 TO 3 ++ DO tsti(19, i, i LWB aaaaaa); ++ tsti(20, i+2, i UPB aaaaaa) ++ OD; ++ FOR i FROM-3BY 1 TO-1 ++ DO tsti(21, -i, -i LWB aaaaaa); ++ tsti(22, 2-i, -i UPB aaaaaa) ++ OD; ++ jjjjjj:=2; tsti(23, +2, jjjjjj LWB aaaaaa); ++ tsti(24, +4, jjjjjj UPB aaaaaa); ++ tsti(25, +1, LWB"abc"); ++ tsti(26, +3, UPB"cde"); ++ tsti(27, +1, (1+0) LWB"abc"); ++ tsti(28, +3, 1 UPB"efg") ++END; ++ ++puts("Test: OR, AND\n"); ++BEGIN ++ BOOL t = TRUE; BOOL f = FALSE; ++ BOOL a; ++ a:=t OR t; tstb(29, TRUE, a); ++ a:=t OR f; tstb(30, TRUE, a); ++ a:=f OR t; tstb(31, TRUE, a); ++ a:=f OR f; tstb(32, FALSE, a); ++ a:=t AND t; tstb(33, TRUE, a); ++ a:=t AND f; tstb(34, FALSE, a); ++ a:=f AND t; tstb(35, FALSE, a); ++ a:=f AND f; tstb(36, FALSE, a); ++ a:=NOT t AND t; tstb(37, FALSE, a); ++ a:=NOT f AND t; tstb(38, TRUE, a); ++ a:=NOT t AND f; tstb(39, FALSE, a); ++ a:=NOT f AND f; tstb(40, FALSE, a); ++ a:=NOT t OR t; tstb(41, TRUE, a); ++ a:=NOT f OR t; tstb(42, TRUE, a); ++ a:=NOT t OR f; tstb(43, FALSE, a); ++ a:=NOT f OR f; tstb(44, TRUE, a); ++ a:=t AND NOT t; tstb(45, FALSE, a); ++ a:=t AND NOT f; tstb(46, TRUE, a); ++ a:=f AND NOT t; tstb(47, FALSE, a); ++ a:=f AND NOT f; tstb(48, FALSE, a); ++ a:=t OR NOT t; tstb(49, TRUE, a); ++ a:=t OR NOT f; tstb(50, TRUE, a); ++ a:=f OR NOT t; tstb(51, FALSE, a); ++ a:=f OR NOT f; tstb(52, TRUE, a); ++ a:=NOT t AND NOT t; tstb(53, FALSE, a); ++ a:=NOT t AND NOT f; tstb(54, FALSE, a); ++ a:=NOT f AND NOT t; tstb(55, FALSE, a); ++ a:=NOT f AND NOT f; tstb(56, TRUE, a); ++ a:=NOT t OR NOT t; tstb(57, FALSE, a); ++ a:=NOT t OR NOT f; tstb(58, TRUE, a); ++ a:=NOT f OR NOT t; tstb(59, TRUE, a); ++ a:=NOT f OR NOT f; tstb(60, TRUE, a); ++ ++ a:=t; tstb(61, TRUE, a); ++ a:=a AND t; tstb(62, TRUE, a); ++ a:=a OR t; tstb(63, TRUE, a); ++ a:=a OR f; tstb(64, TRUE, a); ++ a:=a AND f; tstb(65, FALSE, a); ++ a:=a AND f; tstb(66, FALSE, a); ++ a:=a AND t; tstb(67, FALSE, a); ++ a:=a OR f; tstb(68, FALSE, a); ++ a:=a OR t; tstb(69, TRUE, a); ++ a:=t; tstb(70, TRUE, a); ++ a:=t AND a; tstb(71, TRUE, a); ++ a:=t OR a; tstb(72, TRUE, a); ++ a:=f OR a; tstb(73, TRUE, a); ++ a:=f AND a; tstb(74, FALSE, a); ++ a:=f AND a; tstb(75, FALSE, a); ++ a:=t AND a; tstb(76, FALSE, a); ++ a:=f OR a; tstb(77, FALSE, a); ++ a:=t OR a; tstb(78, TRUE, a); ++ SKIP ++END; ++ ++BEGIN ++ BOOL t = TRUE; BOOL f = FALSE; ++ tstb(79, TRUE, t OR f); ++ tstb(80, TRUE, t OR t); ++ tstb(81, TRUE, f OR t); ++ tstb(82, FALSE, f OR f); ++ tstb(83, TRUE, NOT (f OR f)); ++ tstb(84, TRUE, NOT (f AND f)); ++ tstb(85, TRUE, t AND t); ++ tstb(86, FALSE, t AND f); ++ tstb(87, FALSE, f AND t); ++ tstb(88, FALSE, f AND f); ++ tstb(89, TRUE, (t OR t) OR (f OR f)); ++ tstb(90, FALSE, (t OR t) AND (f OR f)); ++ tstb(91, TRUE, t OR (f OR f)); ++ tstb(92, TRUE, NOT (t AND (f OR f))); ++ tstb(93, FALSE, NOT NOT ((f OR f) OR f)); ++ tstb(94, TRUE, NOT NOT NOT ((f OR f) AND f)); ++ IF t OR f THEN SKIP ELSE tste(95) FI; ++ IF t OR t THEN SKIP ELSE tste(96) FI; ++ IF f OR t THEN SKIP ELSE tste(97) FI; ++ IF f OR f THEN tste(98) FI; ++ IF NOT (f OR f) THEN SKIP ELSE tste(99) FI; ++ IF NOT (f AND f) THEN SKIP ELSE tste(100) FI; ++ IF t AND t THEN SKIP ELSE tste(101) FI; ++ IF t AND f THEN tste(102) FI; ++ IF f AND t THEN tste(103) FI; ++ IF f AND f THEN tste(104) FI; ++ IF (t OR t) AND (t OR t) THEN SKIP ELSE tste(105) FI; ++ IF (t OR t) OR (t OR t) THEN SKIP ELSE tste(106) FI; ++ IF (t OR t) OR f THEN SKIP ELSE tste(107) FI; ++ IF (t OR t) AND t THEN SKIP ELSE tste(108) FI; ++ IF t OR (t OR t) THEN SKIP ELSE tste(109) FI; ++ IF t AND (t OR f) THEN SKIP ELSE tste(110) FI; ++ BOOL a1; a1:=t AND f; tstb(111, FALSE, a1); ++ BOOL a2; a2:=NOT (t OR f); tstb(112, FALSE, a2); ++ BEGIN ++ BOOL t; t := TRUE; ++ BOOL f; f:=FALSE; ++ IF (NOT (NOT ((t OR t) AND (t OR t)) OR ++ ((f OR f) OR f) AND (t OR f AND f)) AND f) ++ OR NOT t ++ THEN tste(113) ELSE SKIP FI; ++ BOOL x; x:= ++ (NOT (NOT ((t OR t) AND (t OR t)) OR ++ ((f OR f) OR f) AND (t OR (f AND f))) AND f) ++ OR NOT t; ++ tstb(114, FALSE, x); ++ BOOL y = ++ (NOT (NOT ((t OR t) AND (t OR t)) OR ++ ((f OR f) OR f) AND (t OR (f AND f))) AND f) ++ OR NOT t; ++ tstb(115, FALSE, y) ++ END ++END; ++ ++puts("Test: NE, EQ for booleans\n"); ++BEGIN ++ BOOL t = TRUE; BOOL f = FALSE; ++ tstb(116, TRUE, t NE f); ++ tstb(117, FALSE, t NE t); ++ tstb(118, TRUE, f NE t); ++ tstb(119, FALSE, f NE f); ++ tstb(120, TRUE, NOT (f NE f)); ++ tstb(121, FALSE, NOT (f EQ f)); ++ tstb(122, TRUE, t EQ t); ++ tstb(123, FALSE, t EQ f); ++ tstb(124, FALSE, f EQ t); ++ tstb(125, TRUE, f EQ f); ++ tstb(126, FALSE, (t NE t) NE (f NE f)); ++ tstb(127, TRUE, (t NE t) EQ (f NE f)); ++ tstb(128, TRUE, t NE (f NE f)); ++ tstb(129, TRUE, NOT (t EQ (f NE f))); ++ tstb(130, FALSE, NOT NOT ((f NE f) NE f)); ++ tstb(131, FALSE, NOT NOT NOT ((f NE f) EQ f)); ++ IF t NE f THEN SKIP ELSE tste(132) FI; ++ IF t NE t THEN tste(133) FI; ++ IF f NE t THEN SKIP ELSE tste(134) FI; ++ IF f NE f THEN tste(135) FI; ++ IF NOT (f NE f) THEN SKIP ELSE tste(136) FI; ++ IF NOT (f EQ f) THEN tste(137) FI; ++ IF t EQ t THEN SKIP ELSE tste(138) FI; ++ IF t EQ f THEN tste(139) FI; ++ IF f EQ t THEN tste(140) FI; ++ IF f EQ f THEN SKIP ELSE tste(141) FI; ++ IF (t NE t) EQ (t NE t) THEN SKIP ELSE tste(142) FI; ++ IF (t NE t) NE (t NE t) THEN tste(143) FI; ++ IF (t NE t) NE f THEN tste(144) FI; ++ IF (t NE t) EQ t THEN tste(145) FI; ++ IF t NE (t NE t) THEN SKIP ELSE tste(146) FI; ++ IF t EQ (t NE f) THEN SKIP ELSE tste(147) FI; ++ BOOL a1; a1:=t EQ f; tstb(148, FALSE, a1); ++ BOOL a2; a2:=NOT (t NE f); tstb(149, FALSE, a2); ++ BEGIN ++ BOOL t; t := TRUE; ++ BOOL f; f:=FALSE; ++ IF (NOT (NOT ((t NE t) EQ (t NE t)) NE ++ ((f NE f) NE f) EQ (t NE f EQ f)) EQ f) ++ NE NOT t ++ THEN SKIP ELSE tste(150) FI; ++ BOOL x; x:= ++ (NOT (NOT ((t NE t) EQ (t NE t)) NE ++ ((f NE f) NE f) EQ (t NE (f EQ f))) EQ f) ++ NE NOT t; ++ tstb(151, TRUE, x); ++ BOOL y = ++ (NOT (NOT ((t NE t) EQ (t NE t)) NE ++ ((f NE f) NE f) EQ (t NE (f EQ f))) EQ f) ++ NE NOT t; ++ tstb(152, TRUE, y) ++ END ++END; ++ ++puts("Test: NOT\n"); ++BEGIN ++ BOOL a1, a2, a3, b1, b2, b3; ++ BOOL a4=NOT FALSE; BOOL a5=NOT NOT FALSE; ++ BOOL a6=NOT NOT NOT FALSE; ++ BOOL a7=NOT a6; BOOL a8=NOT a7; BOOL a9=NOT NOT a8; ++ BOOL a10=NOT NOT NOT a9; ++ IF NOT TRUE THEN tste(153) FI; ++ IF NOT NOT TRUE THEN SKIP ELSE tste(154) FI; ++ IF NOT NOT NOT TRUE THEN tste(155) FI; ++ a1:=NOT TRUE; a2:=NOT NOT FALSE; ++ a3:=NOT NOT NOT TRUE; ++ b1:=NOT TRUE AND FALSE; ++ b2:=NOT NOT TRUE AND FALSE; ++ b3:=TRUE OR NOT NOT NOT TRUE OR FALSE; ++ tstb(156, FALSE, a1); ++ tstb(157, FALSE, a2); ++ tstb(158, FALSE, a3); ++ tstb(159, TRUE, a4); ++ tstb(160, FALSE, a5); ++ tstb(161, TRUE, a6); ++ tstb(162, FALSE, a7); ++ tstb(163, TRUE, a8); ++ tstb(164, TRUE, a9); ++ tstb(165, FALSE, a10); ++ tstb(166, FALSE, b1); ++ tstb(167, FALSE, b2); ++ tstb(168, TRUE, b3) ++END; ++ ++puts("Test: EQ, NE, LT, LE, GT, GE\n"); ++BEGIN ++ IF -1=-1 THEN SKIP ELSE tste(169) FI; ++ tstb(170, TRUE, -LONG 1=-LONG 1); ++ IF -1/=1 THEN SKIP ELSE tste(171) FI; ++ tstb(172, TRUE, -LONG 1/=LONG 1); ++ IF 1 /= -1 THEN SKIP ELSE tste(173) FI; ++ tstb(174, TRUE, LONG 1/=-LONG 1); ++ IF 1 =1 THEN SKIP ELSE tste(175) FI; ++ tstb(176, TRUE, LONG 1=LONG 1); ++ IF 0=0.0 THEN SKIP ELSE tste(177) FI; ++ tstb(178, TRUE, LONG 0=LONG 0.0); ++ IF 1.0=1 THEN SKIP ELSE tste(179) FI; ++ tstb(180, TRUE, LONG 1.0=LONG 1); ++ IF -1.0=-1.0 THEN SKIP ELSE tste(181) FI; ++ tstb(182, TRUE, -LONG 1.0=-LONG 1.0); ++ IF -1.0/=1.0 THEN SKIP ELSE tste(183) FI; ++ tstb(184, TRUE, LENG-1.0/=LONG 1.0); ++ IF 1.0/= -1.0 THEN SKIP ELSE tste(185) FI; ++ tstb(186, TRUE, LONG 1.0/=LENG-1.0); ++ BOOL ++ a1=1=1, a2=1/=1, a3=1>1, ++ a4=1<1, a5=1<= 1, a6=1>=0, ++ a7=1.0=2.0, a8=1.0/=2.0, a9=1.0<2.0, ++ a10=1.0>0.0, a11=1.0<=1.0, ++ a12=1.0>=-1.0; ++ tstb(187, TRUE, a1); ++ tstb(188, FALSE, a2); ++ tstb(189, FALSE, a3); ++ tstb(190, FALSE, a4); ++ tstb(191, TRUE, a5); ++ tstb(192, TRUE, a6); ++ tstb(193, FALSE, a7); ++ tstb(194, TRUE, a8); ++ tstb(195, TRUE, a9); ++ tstb(196, TRUE, a10); ++ tstb(197, TRUE, a11); ++ tstb(198, TRUE, a12); ++ IF 1 = 1 THEN SKIP ELSE tste(199) FI; ++ tstb(200, TRUE, 1=1); ++ IF NOT (1/=1) THEN SKIP ELSE tste(201) FI; ++ tstb(202, TRUE, NOT NOT NOT (1/=1)); ++ IF 1/=2 AND 2/=3 AND 4/=5 THEN SKIP ELSE tste(203) FI ++END; ++ ++BEGIN ++ REAL j; ++ [-3 : 3] BOOL lt0; ++ lt0[-3]:= lt0[-2]:= lt0[-1]:= TRUE; ++ lt0[0]:= lt0[1]:= lt0[2]:= lt0[3]:= FALSE; ++ FOR i FROM -3 BY 1 TO 3 ++ DO ++ tstb(204, NOT(lt0[i] OR lt0[-i]), i=0); ++ tstb(205, lt0[i] OR lt0[-i], i/=0); ++ tstb(206, lt0[-i], i>0); ++ tstb(207, NOT lt0[i], i>=0); ++ tstb(208, lt0[i], i<0); ++ tstb(209, NOT lt0[-i], i<=0); ++ j:=i; ++ tstb(210, NOT(lt0[i] OR lt0[-i]), j=0); ++ tstb(211, lt0[i] OR lt0[-i], j/=0); ++ tstb(212, lt0[-i], j>0); ++ tstb(213, NOT lt0[i], j>=0); ++ tstb(214, lt0[i], j<0); ++ tstb(215, NOT lt0[-i], j<=0) ++ OD ++END; ++ ++puts("Test: monadic -\n"); ++BEGIN ++ INT x0, x1, x2, x3; LONG INT z0, z1, z2, z3; ++ REAL y0, y1, y2, y3; LONG REAL t0, t1, t2, t3; ++ INT x4 = 10; LONG INT z4 = LONG 10; ++ REAL y4 = x4; LONG REAL t4 = z4; ++ z0 := --LONG 38; z1 := -LONG 1000000000; z2 := -z1; ++ x0:=--79; x1 := -1; x2 := -x1; x3 := -SHORTEN z0; ++ t0 := --LONG 8.7; t1 := -LONG 79.99e-2; t2 := -t1; ++ y0 := --6.7e-4; y1 := -39.47e-2; y2 := -y1; y3 := -SHORTEN t2; ++ tsti(216, +79, x0); ++ tsti(217, -1, x1); ++ tsti(218, +1, x2); ++ tsti(219, -38, x3); ++ tsti(220, +10, x4); ++ tstli(221, +LONG 38, z0); ++ tstli(222, -LONG 1000000000, z1); ++ tstli(223, +LONG 1000000000, z2); ++ tstli(224, +LONG 10, z4); ++ tstr(225, +6.7e-4, y0); ++ tstr(226, -3.947e-1, y1); ++ tstr(227, +3.947e-1, y2); ++ tstr(228, -7.999e-1, y3); ++ tstr(229, +1e+1, y4); ++ tstlr(230, +LONG 8.7e+0, t0); ++ tstlr(231, -LONG 7.999e-1, t1); ++ tstlr(232, +LONG 7.999e-1, t2); ++ tstlr(233, +LONG 10e+0, t4) ++END; ++ ++puts("Test: dyadic -\n"); ++BEGIN ++ tsti(234, -2, 1-3); ++ tstli(235, +LONG 4, LONG 7-LONG 3); ++ tsti(236, -4, -1-3); ++ tstli(237, -LONG 13, -LONG 8-LONG 5); ++ tsti(238, +4, 1--3); ++ tstli(239, +LONG 7, LONG 4--LONG 3); ++ tsti(240, +2, -1--3); ++ tstli(241, -LONG 10, -LONG 5--LENG-5); ++ ++ tstr(242, -6.4e+0, 1-7.4); ++ tstlr(243, +LONG 8e+0, LONG 4-LENG-4.0); ++ tstr(244, +6.4e+0, 7.4-1); ++ tstlr(245, -LONG 1.2e+1, -LONG 6.0-LONG 6); ++ tstr(246, +1.22e+1, 6.1--6.1); ++ tstlr(247, +LONG 8.6e+0, LONG 4.3--LONG 4.3); ++ ++ tsti(248, +29999, 30000-1); ++ tstli(249, +LONG 999999998, LONG 1000000000-LONG 2); ++ ++ tstr(250, +1e+0, -1.0-(-1.0-(-1.0-(-1.0-1)))); ++ tstlr(251, +LONG 0e+0, ++ -LONG 1.0-(-LONG 1.0-(-LONG 1.0-(-LONG 1.0 ++ -(LONG 1-LONG 1.0))))) ++END; ++ ++puts("Test: dyadic +\n"); ++BEGIN ++ tsti(252, +4, 1+3); ++ tstli(253, +LONG 10, LONG 7+LONG 3); ++ tsti(254, +2, -1+3); ++ tstli(255, -LONG 3, -LONG 8+LONG 5); ++ tsti(256, -2, 1+-3); ++ tstli(257, +LONG 1, LONG 4+-LONG 3); ++ tsti(258, -4, -1+-3); ++ tstli(259, +LONG 0, -LONG 5+-LENG-5); ++ ++ tstr(260, +8.4e+0, 1+7.4); ++ tstlr(261, +LONG 0e+0, LONG 4+LENG-4.0); ++ tstr(262, +8.4e+0, 7.4+1); ++ tstlr(263, +LONG 0e+0, -LONG 6.0+LONG 6); ++ tstr(264, +0e+0, 6.1+-6.1); ++ tstlr(265, +LONG 0e+0, LONG 4.3+-LONG 4.3); ++ ++ tsti(266, -29999, -30000+1); ++ tstli(267, -LONG 999999998, -LONG 1000000000+LONG 2); ++ ++ tstr(268, -3e+0, -1.0+(-1.0+(-1.0+(-1.0+1)))); ++ tstlr(269, -LONG 2e+0, ++ -LONG 1.0+(-LONG 1.0+(-LONG 1.0+(-LONG 1.0 ++ +(LONG 1+LONG 1.0))))) ++END; ++ ++puts("Test: ABS\n"); ++BEGIN ++ tsti(270, +19, ABS 19); ++ tsti(271, +19, ABS-19); ++ tsti(272, +0, ABS 0); ++ tsti(273, +32, SHORTEN ABS LONG 32); ++ tsti(274, +43, SHORTEN ABS-LONG 43); ++ tsti(275, +0, SHORTEN ABS LONG 0); ++ tstr(276, +1.97e+2, ABS 197.0); ++ tstr(277, +4.97e+1, ABS-49.7); ++ tstr(278, +0e+0, ABS .0); ++ tstr(279, +1e+0, SHORTEN ABS LONG 1.0); ++ tstr(280, +0e+0, SHORTEN ABS LONG 0.0e+7); ++ tstr(281, +1.9e+0, SHORTEN ABS-LONG 1.9) ++END; ++ ++puts("Test: * for integers\n"); ++BEGIN ++ tsti(282, +6, 2*3); ++ tsti(283, -6, -2*3); ++ tsti(284, -6, 2*-3); ++ tsti(285, +6, -2*-3); ++ tsti(286, +6, SHORTEN(-LONG 2*-LONG 3)); ++ tsti(287, -6, SHORTEN(LONG 2*-LONG 3)); ++ tsti(288, -6, SHORTEN(-LONG 2*LONG 3)); ++ tsti(289, +6, SHORTEN(LONG 2*LONG 3)); ++ tsti(290, +0, 0*10); ++ tstli(291, +LONG 0, LONG 0*-LONG 10); ++ tsti(292, +0, 10*0); ++ tstli(293, +LONG 0, -LONG 10*LENG 0); ++ tsti(294, +3, 1*3); ++ tstli(295, +LONG 3, LONG 3*LONG 1); ++ tsti (296, +16384, 2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2 ++ )))))))))))))) ++END; ++ ++puts("Test: * mixed\n"); ++BEGIN ++ REAL a1=1.0; LONG REAL a2=-LONG 1.0; ++ REAL a3; LONG REAL a4; ++ tstr(297, +4.2e+1, 6.0*7.0); ++ tstlr(298, +LONG 2.6e+1, LONG 13.0*LONG 2.0); ++ tstr(299, -4.2e+1, -6.0*7.0); ++ tstlr(300, -LONG 6e+0, -LONG 2.0*LONG 3.0); ++ tstr(301, -5.6e+1, 7.0*-8.0); ++ tstlr(302, -LONG 4.8e+1, LONG 16.0*-LENG 3.0); ++ tstr(303, +5.6e+1, -8.0*-7.0); ++ tstlr(304, +LONG 2.5e+1, -LENG 5.0*-LONG 5.0); ++ ++ tstr(305, +4.2e+1, 7*6.0); ++ tstlr(306, +LONG 2.1e+1, LONG 3*LONG 7.0); ++ tstr(307, +4.2e+1, 6.0*7); ++ tstlr(308, +LONG 3.6e+1, LONG 6.0*LONG 6); ++ tstr(309, +4.2e+1, -7*-6.0); ++ tstlr(310, +LONG 2.25e+2, -LONG 15*-LONG 15.0); ++ tstr(311, +4.2e+1, -6.0*-7); ++ tstlr(312, +LONG 1.9e+1, -LONG 19.0*-LONG 1); ++ ++ a3:=14.0; a4:=LENG-13.0; ++ tstr(313, +1.4e+1, a3*a1); ++ tstlr(314, +LONG 1.3e+1, a2*a4); ++ tstr(315, +10e-43, 1.0e-20*1.0e-22); ++ tstlr(316, +LONG 10e+39, LONG 1.0e+20*LONG 1.0e+20) ++END; ++ ++puts("Test: OVER, MOD\n"); ++BEGIN ++ tsti(317, +2, 12 OVER 6); ++ tsti(318, -5, -20 OVER 4); ++ tsti(319, -25, 100 OVER -4); ++ tsti(320, +10, -10 OVER -1); ++ tsti(321, +2, 7 OVER 3); ++ tsti(322, -2, -8 OVER 3); ++ tsti(323, -1, 10 OVER -7); ++ tsti(324, +1, -49 OVER -27); ++ tsti(325, +3, SHORTEN(LONG 10 OVER LONG 3)); ++ tsti(326, -1, SHORTEN(-LONG 50 OVER LONG 50)); ++ tsti(327, -1, -12 OVER 7); ++ tsti(328, -1, 12 OVER -7); ++ tsti(329, -1, SHORTEN(-LONG 50 OVER LONG 50)); ++ tsti(330, +0, SHORTEN(LONG 0 OVER -LONG 25)); ++ tsti(331, +0, 12 MOD 6); ++ tsti(332, +0, -20 MOD 4); ++ tsti(333, +0, 100 MOD -4); ++ tsti(334, +0, -10 MOD -1); ++ tsti(335, +1, 7 MOD 3); ++ tsti(336, +1, -8 MOD 3); ++ tsti(337, +3, 10 MOD -7); ++ tsti(338, +5, -49 MOD -27); ++ tsti(339, +1, SHORTEN(LONG 10 MOD LONG 3)); ++ tsti(340, +0, SHORTEN(-LONG 50 MOD LONG 50)); ++ tsti(341, +2, -12 MOD 7); ++ tsti(342, +5, 12 MOD -7); ++ tsti(343, +0, SHORTEN(-LONG 50 MOD LONG 50)); ++ tsti(344, +0, SHORTEN(LONG 0 MOD -LONG 25)) ++END; ++ ++puts("Test: /\n"); ++BEGIN ++ REAL a, b; LONG REAL c, d; REAL x = 127.0; ++ FOR i FROM -3 BY 1 TO 3 DO ++ FOR j FROM -3 BY 1 TO 3 DO ++ IF j /= 0 THEN ++ a:=i/j; ++ tstr(345, i, a*j); ++ a:=i; a:=a/j; ++ tstr(346, i, a*j); ++ a:=j; a :=i/a; ++ tstr(347, i, a*j); ++ a := i; b := j; a := a/b; ++ tstr(348, i, a*j); ++ c := LENG i/LENG j; ++ tstlr(349, LENG i, c*LENG j); ++ c := LENG i; c := c/LENG j; ++ tstlr(350, LENG i, c*LENG j); ++ c := LENG j; c :=LENG i/c; ++ tstlr(351, LENG i, c*LENG j); ++ c := LENG i; d:=LENG j; c:=c/d; ++ tstlr(352, LENG i, c*LENG j) ++ FI ++ OD OD; ++ tstr(353, -1e+0, 1.9e-7/-1.9e-7); ++ a:=19.74e+2; ++ tstr(354, +1e+0, 19.74e+2/a); ++ tstr(355, +10e-5, 19.74e-2/19.74e+2); ++ tstr(356, +1e+3, 127000.0/x); ++ tstr(357, +1e+2, x/1.27); ++ tstr(358, -1e+1, x/-12.7); ++ tstr(359, +1e+0, x/x); ++ a:=1270.0; ++ tstr(360, +10e-2, x/a); ++ a:=0.0149; tstr(361, +1e+0, a/149e-4); ++ tstr(362, +1e+0, a/a); ++ tstr(363, +1.173228346456693e-4, a/x); ++ tstr(364, -1e-2, a/-1.49); ++ tstr(365, +1.27e+2, -x/-1.0); ++ tstr(366, -1e+0, -x/x); ++ tstr(367, -8.523489932885906e+3, -x/a); ++ tstr(368, +1e+0, -x/-x) ++END; ++ ++puts("Test: **\n"); ++BEGIN ++ INT a; ++ tsti(369, +1, 1**0); ++ tsti(370, +1, 10**0); ++ tsti(371, +1, -20**0); ++ tsti(372, +1, 1**1); ++ tsti(373, +10, 10**1); ++ tsti(374, -10, -10**1); ++ tsti(375, +0, 0**1); ++ tsti(376, +0, 0**30000); ++ tsti(377, +1, 0**0); ++ tsti(378, +49, 7**2); ++ tsti(379, +1, 1**2); ++ tsti(380, +9, -3**2); ++ tsti(381, -27, -3**3); ++ tsti(382, +32, 2**5); ++ tsti(383, +81, SHORTEN(LONG 9**2)); ++ tsti(384, -19683, SHORTEN(-LONG 27**3)); ++ tstr(385, +2.7e+1, 3.0**3); ++ tstr(386, +6.5536e+4, 2.0**16); ++ tstr(387, -3.2768e+4, -2.0**15); ++ tstr(388, +3.6e+1, -6.0**2); ++ tstr(389, +2.5e-1, 2.0**-2); ++ tstr(390, -10e-4, -10.0**-3); ++ tstr(391, +1e+0, 3.0**-0); ++ tstr(392, +1e+0, 3.0**-0); ++ tstr(393, +4.9e+1, SHORTEN(LONG 7.0**2)); ++ tstr(394, +3.969e+1, SHORTEN(-LONG 6.3**2)); ++ tstr(395, +1.385019350059107e-8, SHORTEN(LONG 37.3**-5)); ++ a:= 1; ++ FOR i FROM 1 BY 1 TO 10 ++ DO tsti(396, a, (-1)**(i-1)); a:= -a OD; ++ a:= 0; ++ FOR i FROM 1 BY 1 TO 10 ++ DO a := a + 1**30000 OD; ++ tsti(397, +10, a) ++END; ++ ++puts("Test: SHORTEN, LENG\n"); ++BEGIN ++ LONG INT a1 = LONG 128; LONG INT a2; ++ LONG REAL a3 = LONG 1.9999999999; LONG REAL a4; ++ REAL a6; ++ INT a5; a5 := 30000; ++ a6 := 2/3; ++ tstli(398, +LONG 179, LENG 179); ++ tsti(399, +19, SHORTEN LONG 19); ++ tsti(400, +30000, SHORTEN LONG 30000); ++ tsti(401, -27, SHORTEN-LONG 27); ++ tsti(402, -30000, SHORTEN-LONG 30000); ++ tsti(403, +128, SHORTEN a1); ++ a2:=LONG 0; ++ tsti(404, +0, SHORTEN a2); ++ tsti(405, +30000, SHORTEN LENG a5); ++ tstr(406, +1.234566666e-1, SHORTEN LONG .1234566666); ++ tstr(407, +1.9999999999e+0, SHORTEN a3); ++ a4:=LONG .1111111111; tstr(408, +1.111111111e-1, SHORTEN a4); ++ tstr(409, -3.333333333333333e-1, SHORTEN-LENG (1/3)); ++ tstr(410, +6.666666666666667e-1, SHORTEN LENG a6) ++END; ++ ++puts("Test: ODD\n"); ++BEGIN ++ IF ODD-1 THEN SKIP ELSE tste(411) FI; ++ tstb(412, FALSE, ODD 2); ++ IF NOT ODD-LONG 2 THEN SKIP ELSE tste(413) FI; ++ tstb(414, TRUE, ODD LONG 1); ++ BOOL a1, a2; ++ a1:= FALSE; ++ FOR i FROM -10 BY 1 TO 10 ++ DO tstb(415, a1, ODD i); a1:= NOT a1 OD; ++ a1:=ODD-3; ++ a2:=ODD-LONG 0; ++ BOOL b1 = NOT ODD -13; ++ BOOL b2 = NOT NOT ODD -LONG 16; ++ tstb(416, TRUE, a1); ++ tstb(417, FALSE, a2); ++ tstb(418, FALSE, b1); ++ tstb(419, FALSE, b2); ++ tstb(420, FALSE, NOT NOT NOT ODD 55); ++ tstb(421, FALSE, NOT NOT NOT ODD LONG 1) ++END; ++ ++puts("Test: SIGN\n"); ++BEGIN ++ tsti(422, +1, SIGN 7); ++ tsti(423, +0, SIGN 0); ++ tsti(424, -1, SIGN-7); ++ tsti(425, +1, SIGN LONG 1000000000); ++ tsti(426, +0, SIGN LONG 0); ++ tsti(427, -1, SIGN-LONG 8); ++ tsti(428, +1, SIGN 1.9); ++ tsti(429, +0, SIGN 0.0); ++ tsti(430, -1, SIGN-3.6); ++ tsti(431, +1, SIGN LONG 67.0); ++ tsti(432, +0, SIGN LONG 0.0); ++ tsti(433, -1, SIGN-LONG 37.0) ++END; ++ ++puts("Test: ROUND, ENTIER\n"); ++BEGIN ++ REAL a1 = 1.7; LONG REAL a2 = LONG 27.7; ++ REAL a3; LONG REAL a4; ++ tstli(434, -LONG 28, LENG ROUND-27.7); ++ tstli(435, -LONG 28, LENG ENTIER-27.7); ++ tstli(436, +LONG 2, LENG ROUND a1); ++ tstli(437, +LONG 1, LENG ENTIER a1); ++ tstli(438, +LONG 13, LENG ROUND 12.9); ++ tstli(439, +LONG 12, LENG ENTIER 12.994); ++ a3:=134e+2; a4:=LONG 135.1e-1; ++ tstli(440, +LONG 13400, LENG ROUND a3); ++ tstli(441, +LONG 13400, LENG ENTIER a3); ++ tstli(442, +LONG 14, LENG ROUND SHORTEN a4); ++ tstli(443, +LONG 13, LENG ENTIER SHORTEN a4); ++ tstli(444, -LONG 1, ROUND-LENG 127e-2); ++ tstli(445, +LONG 1, ENTIER--LONG 127e-2); ++ tstli(446, +LONG 28, ROUND a2); ++ tstli(447, +LONG 27, ENTIER a2); ++ tstli(448, +LONG 13, ROUND LONG 12.87); ++ tstli(449, +LONG 12, ENTIER LONG 12.87); ++ tstli(450, +LONG 14, ROUND a4); ++ tstli(451, +LONG 13, ENTIER a4); ++ tstli(452, -LONG 2, ROUND-LONG 1.5001); ++ tstli(453, -LONG 2, ENTIER-LENG 1.5001); ++ tstli(454, +LONG 6, LENG ROUND 6.499) ++END; ++ ++puts("Test: EQ, NE, LT, LE, GT, GE for chars\n"); ++BEGIN ++ CHAR a = "1"; CHAR b = "2"; CHAR c; c := "1"; ++ [1:1]CHAR d; d[1]:="$"; ++ INT abs0 = ABS"0", abs1 = ABS"1", abs2 = ABS"2"; ++ ++ tstb(455, TRUE, "1"="1"); ++ tstb(456, FALSE, "1"/="1"); ++ tstb(457, TRUE, "1"<="1"); ++ tstb(458, FALSE, "1"<"1"); ++ tstb(459, TRUE, "1">="1"); ++ tstb(460, FALSE, "1">"1"); ++ tstb(461, FALSE, "1"="2"); ++ tstb(462, TRUE, "1"/="2"); ++ tstb(463, TRUE, "1"<="2"); ++ tstb(464, TRUE, "1"<"2"); ++ tstb(465, FALSE, "1">="2"); ++ tstb(466, FALSE, "1">"2"); ++ tstb(467, FALSE, "2"="1"); ++ tstb(468, TRUE, "2"/="1"); ++ tstb(469, FALSE, "2"<="1"); ++ tstb(470, FALSE, "2"<"1"); ++ tstb(471, TRUE, "2">="1"); ++ tstb(472, TRUE, "2">"1"); ++ ++ tstb(473, TRUE, a=a); ++ tstb(474, FALSE, a/=a); ++ tstb(475, TRUE, a<=a); ++ tstb(476, FALSE, a=a); ++ tstb(478, FALSE, a>a); ++ tstb(479, FALSE, a=b); ++ tstb(480, TRUE, a/=b); ++ tstb(481, TRUE, a<=b); ++ tstb(482, TRUE, a=b); ++ tstb(484, FALSE, a>b); ++ tstb(485, FALSE, b=a); ++ tstb(486, TRUE, b/=a); ++ tstb(487, FALSE, b<=a); ++ tstb(488, FALSE, b=a); ++ tstb(490, TRUE, b>a); ++ ++ tstb(491, TRUE, REPR abs1=REPR abs1); ++ tstb(492, FALSE, REPR abs1/=REPR abs1); ++ tstb(493, TRUE, REPR abs1<=REPR abs1); ++ tstb(494, FALSE, REPR abs1=REPR abs1); ++ tstb(496, FALSE, REPR abs1>REPR abs1); ++ tstb(497, FALSE, REPR abs1=REPR abs2); ++ tstb(498, TRUE, REPR abs1/=REPR abs2); ++ tstb(499, TRUE, REPR abs1<=REPR abs2); ++ tstb(500, TRUE, REPR abs1=REPR abs2); ++ tstb(502, FALSE, REPR abs1>REPR abs2); ++ tstb(503, FALSE, REPR abs2=REPR abs1); ++ tstb(504, TRUE, REPR abs2/=REPR abs1); ++ tstb(505, FALSE, REPR abs2<=REPR abs1); ++ tstb(506, FALSE, REPR abs2=REPR abs1); ++ tstb(508, TRUE, REPR abs2>REPR abs1); ++ ++ tstb(509, TRUE, REPR abs1=c); ++ tstb(510, FALSE, REPR abs1/=c); ++ tstb(511, TRUE, REPR abs1<=c); ++ tstb(512, FALSE, REPR abs1=c); ++ tstb(514, FALSE, REPR abs1>c); ++ tstb(515, FALSE, REPR abs0=c); ++ tstb(516, TRUE, REPR abs0/=c); ++ tstb(517, TRUE, REPR abs0<=c); ++ tstb(518, TRUE, REPR abs0=c); ++ tstb(520, FALSE, REPR abs0>c); ++ tstb(521, FALSE, REPR abs2=c); ++ tstb(522, TRUE, REPR abs2/=c); ++ tstb(523, FALSE, REPR abs2<=c); ++ tstb(524, FALSE, REPR abs2=c); ++ tstb(526, TRUE, REPR abs2>c); ++ ++ tstb(527, TRUE, c=REPR abs1); ++ tstb(528, FALSE, c/=REPR abs1); ++ tstb(529, TRUE, c<=REPR abs1); ++ tstb(530, FALSE, c=REPR abs1); ++ tstb(532, FALSE, c>REPR abs1); ++ tstb(533, FALSE, c=REPR abs0); ++ tstb(534, TRUE, c/=REPR abs0); ++ tstb(535, FALSE, c<=REPR abs0); ++ tstb(536, FALSE, c=REPR abs0); ++ tstb(538, TRUE, c>REPR abs0); ++ tstb(539, FALSE, c=REPR abs2); ++ tstb(540, TRUE, c/=REPR abs2); ++ tstb(541, TRUE, c<=REPR abs2); ++ tstb(542, TRUE, c=REPR abs2); ++ tstb(544, FALSE, c>REPR abs2); ++ ++ tstb(545, TRUE, "$"=d[1]); ++ tstb(546, FALSE, "$"/=d[1]); ++ tstb(547, TRUE, "$"<=d[1]); ++ tstb(548, FALSE, "$"=d[1]); ++ tstb(550, FALSE, "$">d[1]); ++ tstb(551, TRUE, "$"=d[1]) ++END; ++ ASSERT (errors = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp01.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# ALGOL68 test to see if the compiler exists # ++BEGIN INT i, j, k; ++ INT s := 17, INT t := 3; ++ i := 0; ++ FOR l FROM 0 BY 2 TO 13 DO i +:= l OD; ++ ASSERT (i = 42) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp02.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# Test that ranges are correct # ++range_of_variables: ++BEGIN INT i, j; ++ i := 3; j := 4; ++ BEGIN INT i, k; ++ i := 2; k := 5; ++ ASSERT (i = 2); ++ ASSERT (k = 5) ++ END; ++ ASSERT (i = 3); ++ ASSERT (j = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp03.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Referencing and dereferencing. # ++BEGIN INT i1 := 1; ++ INT i2 := 2; ++ INT i3 := 3; ++ INT ii1 := i1; ++ INT ii2 := i2; ++ REF INT iii1 := ii1; ++ ASSERT (iii1 = 1); ++ iii1 := ii2; ++ ASSERT (iii1 = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp04.a68 +@@ -0,0 +1,46 @@ ++# { dg-options "-fstropping=upper" } # ++# Multiple values. # ++multiples: ++structures: ++BEGIN [1:100]INT i, j, k; ++ FOR l TO 100 DO i[l] := j[l] := k[l] := l OD; ++ FOR l TO 100 ++ DO IF i[l] /= l OR j[l] /= l OR k[l] /= l ++ THEN ASSERT (FALSE) ++ FI ++ OD; ++ [1:100]REAL p; ++ p[1] := 1.0; ++ p[1:5] := (2.0, 3.0, 4.0, 5.0, 6.0); ++ FOR i FROM 1 TO 5 DO ASSERT (p[i] = REAL(i) + 1.0) OD; ++ # Test the @ workings # ++ p[2:6 # Implicit @1 #] := (2.0, 3.0, 4.0, 5.0, 6.0); ++ FOR i FROM 2 TO 6 DO ASSERT (p[i] = REAL(i)) OD; ++ p[2:3@8] := p[3:4@8]; ++ ASSERT (UPB p[1:3@9] = 11 AND UPB p[1:0@5] = 4); ++ [1:10,1:10] INT l; ++ FOR i TO 10 DO FOR j TO 10 DO l[i,j] := 10 OD OD; ++ FOR i TO 2 DO FOR j TO 10 DO l[1:2,1:10][i,j] := 11 OD OD; ++ FOR i TO 10 DO FOR j TO 10 ++ DO IF i >= 1 AND i <= 2 ++ THEN ASSERT (l[i,j] = 11) ++ ELSE ASSERT (l[i,j] = 10) ++ FI ++ OD ++ OD; ++ # Structures. # ++ STRUCT ([1:2] INT m, ++ [1:i[5] # Whose value is 5 from above. #]REAL g, ++ BOOL t) s1, s2; ++ t OF s1 := t OF s2 := l[1,1] = l[1:1,1:2][1,1]; ++ ASSERT (t OF s1 AND t OF s2); ++ FOR m TO UPB m OF s1 ++ DO (m OF s1)[m] := ((m OF s2)[3-m] := 50) + 1 OD; ++ g OF s1 := (g OF s2)[] := (1.0, 2.0, 3.0, 4.0, 5.0); ++ ASSERT ((m OF s1)[1] = 51 AND (m OF s1)[2] = 51); ++ # REF STRUCT's # ++ [1:2]REF STRUCT ([]INT m, []REAL g, BOOL t) ss1 := (s1, s2); ++ t OF ss1[2] := FALSE; ++ ASSERT (t OF s1 = TRUE); ++ ASSERT (t OF s2 = FALSE) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp05.a68 +@@ -0,0 +1,28 @@ ++# { dg-options "-fstropping=upper" } # ++# Simple jumps. # ++(INT j:= 0, i; ++ k: i:= j; ++ IF i >= 2 THEN GOTO l FI; ++ puts ("0"); ++ m: IF i >= 1 THEN n FI; ++ puts ("0"); ++ o: GOTO p; ++ l: puts ("1"); i := i - 2; m; ++ n: puts ("1"); o; ++ p: puts (""); ++ j := j + 1; ++ IF j <= 3 THEN k FI) ++CO ++Result: ++ 0 ++ 0 ++ ++ 0 ++ 1 ++ ++ 1 ++ 0 ++ ++ 1 ++ 1 ++CO +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp07.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# loops. # ++BEGIN INT i = 5, INT c := 0; ++ FOR i TO i DO c +:= 1 OD; ++ ASSERT (c = 5); ++ INT s = 8; ++ FOR a FROM s BY 1 WHILE INT b = a - s + 1; a <= 2 * s ++ DO INT q := 0, r := a; ++ WHILE r >= b DO (q +:= 1, r -:= b) OD; ++ IF a /= b * q + r OR r >= b ++ THEN ASSERT (FALSE) ++ FI ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp08.a68 +@@ -0,0 +1,35 @@ ++# { dg-options "-fstropping=upper" } # ++# Simple coercions. # ++BEGIN [1:3]INT ia := (1, 2, 3); ++ PROC get ia = REF[]INT: ia; ++ # Dereferencing. # ++ INT i := LOC REF INT := ia[1]; # Twice dereferenced, at the right moment. # ++ ASSERT (i = 1); ++ REF INT ri := ia[2]; # No deref # ++ REF INT (ri) := -2; ++ ASSERT (ia[1] = 1 AND ia[2] = -2 AND ia[3] = 3); ++ # Deproceduring. # ++ PROC pri = REF INT: ia[3]; pri := -3; # Soft deproc. # ++ ASSERT (ia[1] = 1 AND ia[2] = -2 AND ia[3] = -3); ++ PROC pria = REF[]INT: ia; pria[1] := pria[2]; ++ ASSERT (ia[1] = -2 AND ia[2] = -2 AND ia[3] = -3); ++ # Uniting. # ++ UNION(REAL,[]INT,[,]INT) unia = # some uniting # ++ UNION(REAL,[]INT) # cast # # one uniting # (ia); # deref # ++ ia := (3,2,1); # spoil ia # ++ CASE unia ++ IN ([]INT ia): (ASSERT (ia[1] = -2 AND ia[2] = -2 AND ia[3] = -3); ++ ASSERT (get ia[1] = 3 AND get ia[2] = 2 AND get ia[3] = 1)) ++ OUT SKIP ++ ESAC; ++ # Widening. # ++ REAL x = ia[1]; ++ ASSERT (x > 2.9 AND x < 3.1); ++ # Rowing. # ++ [1:1,1:3] INT iaa; FOR i TO 3 DO iaa[1,i] := 5 + i OD; ++ # Hipping. # ++ REF INT p = NIL, q = NIL; ++ ASSERT (p :=: q); ++ ia := (5, SKIP, 7); ia[2] := 6; ++ ASSERT (ia[1] = 5 AND ia[2] = 6 AND ia[3] = 7) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp09.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++# In "situ" permutation # ++BEGIN PROC permvec = (REF[]INT vec, []INT p) VOID: ++ FOR j TO UPB p ++ DO INT k := p[j]; ++ WHILE k > j DO k := p[k] OD; ++ IF k = j ++ THEN INT h = vec[j], INT l := p[k]; ++ WHILE l NE j ++ DO vec[k] := vec[l]; k := l; l := p[k] OD; ++ vec[k] := h ++ FI ++ OD, ++ [1:5]INT x := (4, 5, 1, 3, 2); ++ permvec (x, (3,5,4,1,2)); ++ ASSERT (x[1] = 1 AND x[2] = 2 AND x[3] = 3 AND x[4] = 4 AND x[5] = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp10.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++(INT i := 1; ++ PROC a = (INT j) INT: i + j; ++ (INT i := 2; ASSERT (a(10) = 11) ++ ) ++ ) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp11.a68 +@@ -0,0 +1,36 @@ ++# { dg-options "-fstropping=upper" } # ++# Translation decimal number to Roman notation and vice versa # ++BEGIN PROC roman = (INT number) STRING: ++ BEGIN INT n := number, STRING result; ++ []STRUCT(INT value, STRING r) table = ++ ((1000, "M"), (900, "CM"), (500, "D"), (400, "DC"), ++ (100, "C"), (90, "XC"), (50, "L"), (40, "XL"), ++ (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I")); ++ FOR i TO UPB table ++ DO INT v = value OF table[i], STRING r = r OF table[i]; ++ WHILE v LE n DO (result +:= r, n -:= v) OD ++ OD; ++ result ++ END; ++ ++ PROC value of roman = (STRING text) INT: ++ IF text = "" ++ THEN 0 ++ ELSE OP ABS = (CHAR s) INT: ++ CASE INT p; char in string (s, p, "IVXLCDM"); p ++ IN 1, 5, 10, 50, 100, 500, 1000 ++ ESAC, ++ PROC char in string = (CHAR c, REF INT i, STRING s) BOOL: ++ (FOR k TO UPB s DO (c = s[k] | i := k; l) OD; FALSE EXIT l: TRUE); ++ INT v, maxv := 0, maxp; ++ FOR p TO UPB text ++ DO IF (v := ABS text[p]) > maxv ++ THEN maxp := p; maxv := v ++ FI ++ OD; ++ maxv - value of roman (text[: maxp-1])+ value of roman (text[maxp + 1:]) ++ FI; ++ ++ ASSERT (roman (1968) = "MCMLXVIII"); ++ ASSERT (value of roman ("MCMLXXIII") = 1973) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp13.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# Continued fraction. # ++BEGIN OP / = ([]REAL a, b) REAL: ++ (UPB a = 0 | 0 | a[1]/(b[1] + a[2:]/b[2:])), ++ [1:20]REAL x,y; ++ ++ FOR i TO 20 ++ DO x[i] := (i-1)**2; y[i] := 2*i-1 OD; ++ x[1] := 1; ++ FOR i TO 20 ++ DO 4 * (x[1:i]/y[1:i]) # Approximations of PI # ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/stow02.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++# Some slices # ++BEGIN [0:7][0:15] INT a; ++ INT n:= 0; ++ ++ FOR i TO 8 DO FOR j TO 16 DO a[i-1][j-1]:= n+:=1OD OD; ++ ASSERT (a[0][15] = 16); ++ ASSERT (a[0:0 AT 0][0][15] = 16); ++ ASSERT (a[0:0 AT 0][0:0 AT 0][0][3:15][11:13 AT 2][4] = 16); ++CO XXX run-time error ++ []INT k = a[0:0][15] # wrong, a[0:0] has bounds [1:1][0:15], ++ so there occurs overflow #; ++CO ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/stow06.a68 +@@ -0,0 +1,30 @@ ++# { dg-options "-fstropping=upper" } # ++# Against over-optimization of string comparison. # ++BEGIN ++ STRING newline = "'n"; ++ STRING str = "string with step > 1"; STRING ref str:= str; ++ [1:UPB str] STRUCT(REAL flub, CHAR c) rst; ++ ++ puts ("Result must be:" ++ + newline + str + "." + newline + str + "." + newline ++ + "First test OK" + newline + "Second test OK" + newline ++ + newline + "Result is:" + newline); ++ ++ FOR i TO UPB str DO c OF rst[i]:= ref str[i] OD; ++ puts (c OF rst + "." + newline + ref str + "." + newline); ++ ++ IF c OF rst = str AND c OF rst = ref str ++ THEN puts ("First test OK" + newline) ++ ELSE puts ("Erroneous string, is: " + c OF rst ++ + " , must be: " + str + newline); ++ ASSERT (FALSE) ++ FI; ++ ++ c OF rst:= str; ++ IF c OF rst /= str OR c OF rst /= ref str ++ THEN puts ("Erroneous string, is: " + c OF rst ++ + " , must be: " + str + newline); ++ ASSERT (FALSE) ++ ELSE puts ("Second test OK" + newline) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/minus-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (i - 2 = 8); ++ ASSERT (ii - LONG 2 = LONG 8); ++ ASSERT (iii - LONG LONG 2 = LONG LONG 8); ++ ASSERT (ss - SHORT 2 = SHORT 8); ++ ASSERT (sss - SHORT SHORT 2 = SHORT SHORT 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/minusab-1.a68 +@@ -0,0 +1,32 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN INT i := 10; ++ i -:= 2; ++ ASSERT (i = 8); ++ i MINUSAB 2; ++ ASSERT (i = 6) ++ END; ++ BEGIN LONG INT i := LONG 1000; ++ i -:= LONG 100; ++ ASSERT (i = LONG 900); ++ i MINUSAB LONG 100; ++ ASSERT (i = LONG 800) ++ END; ++ BEGIN LONG LONG INT i := LONG LONG 10000; ++ i -:= LONG LONG 1000; ++ ASSERT (i = LONG LONG 9000); ++ i MINUSAB LONG LONG 1000; ++ ASSERT (i = LONG LONG 8000) ++ END; ++ BEGIN SHORT INT i := SHORT 100; ++ i -:= SHORT 10; ++ ASSERT (i = SHORT 90); ++ i MINUSAB SHORT 10; ++ ASSERT (i = SHORT 80) ++ END; ++ BEGIN SHORT SHORT INT i := SHORT SHORT 10; ++ i -:= SHORT SHORT 1; ++ ASSERT (i = SHORT SHORT 9); ++ i MINUSAB SHORT SHORT 2; ++ ASSERT (i = SHORT SHORT 7) ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/minusab-2.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN REAL i := 10.0; ++ i -:= 2.0; ++ ASSERT (i = 8.0); ++ i MINUSAB 2.0; ++ ASSERT (i = 6.0) ++ END; ++ BEGIN LONG REAL i := LONG 1000.0; ++ i -:= LONG 100.0; ++ ASSERT (i = LONG 900.0); ++ i MINUSAB LONG 100.0; ++ ASSERT (i = LONG 800.0) ++ END; ++ BEGIN LONG LONG REAL i := LONG LONG 10000.0; ++ i -:= LONG LONG 1000.0; ++ ASSERT (i = LONG LONG 9000.0); ++ i MINUSAB LONG LONG 1000.0; ++ ASSERT (i = LONG LONG 8000.0) ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/minusab-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 10; ++ (((n -:= 1))) := 5; ++ ASSERT (n = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/minusab-4.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT num ints := 10; ++ num ints -:= 1; ++ ASSERT (num ints = 9); ++ ASSERT ((LOC INT -:= 12) = -12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mod-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (i %* 3 = 1); ++ ASSERT (ii %* LONG 3 = LONG 1); ++ ASSERT (iii %* LONG LONG 3 = LONG LONG 1); ++ ASSERT (ss %* SHORT 3 = SHORT 1); ++ ASSERT (sss MOD SHORT SHORT 3 = SHORT SHORT 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modab-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN (SHORT SHORT INT i := SHORT SHORT 11; i MODAB SHORT SHORT 2; ASSERT (i = SHORT SHORT 1)); ++ (SHORT INT i := SHORT 11; i MODAB SHORT 2; ASSERT (i = SHORT 1)); ++ (INT i := 11; i MODAB 2; ASSERT (i = 1)); ++ (INT i := 11; i %*:= 2; ASSERT (i = 1)); ++ (LONG INT i := LONG 11; i MODAB LONG 2; ASSERT (i = LONG 1)); ++ (LONG INT i := LONG 11; i %*:= LONG 2; ASSERT (i = LONG 1)); ++ (LONG LONG INT i := LONG LONG 11; i MODAB LONG LONG 2; ASSERT (i = LONG LONG 1)); ++ (LONG LONG INT i := LONG LONG 11; i %*:= LONG LONG 2; ASSERT (i = LONG LONG 1)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modab-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 10; ++ (((n MODAB 1))) := 5; ++ ASSERT (n = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mode-indication-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT j; REAL y; ++ MODE R = REAL; ++ BEGIN MODE R = INT; ++ R i := j; ++ SKIP ++ END; ++ R x := y; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/README +@@ -0,0 +1,7 @@ ++This directory contains tests that require using several packets. ++ ++Files named module*.a68 contain prelude packets, i.e. the definitions ++of one or more modules. These are to be referred within test programs ++using dg-modules. ++ ++Each program*.a68 file is a testcase. +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/execute.exp +@@ -0,0 +1,44 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Execute tests, torture testing. ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++load_lib algol68-torture.exp ++load_lib torture-options.exp ++ ++torture-init ++set-torture-options $TORTURE_OPTIONS ++ ++# The programs need to be able to find the built modules, which are ++# left in objdir. ++global BUILT_MODULES_DIR ++set BUILT_MODULES_DIR "$objdir" ++ ++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/program-*.a68]] { ++ # If we're only testing specific files and this isn't one of them, skip it. ++ if ![runtest_file_p $runtests $testcase] then { ++ continue ++ } ++ algol68-torture-execute $testcase ++ set algol68_compile_args "" ++ global module_objects ++ set module_objects "" ++} ++ ++torture-finish +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module1.a68 +@@ -0,0 +1,9 @@ ++module Module1 = ++def ++ pub mode MyInt = int; ++ pub int beast_number := 666; ++ pub string who = "jemarch"; ++ puts ("Hello from module'n") ++postlude ++ puts ("Bye from module'n") ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module10.a68 +@@ -0,0 +1,7 @@ ++module Module10 = ++access Module9, Module3 ++def int je = foo; ++ prio QUUX = 9; ++ pub Lala bar = (bump; getcounter); {11} ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module11.a68 +@@ -0,0 +1,11 @@ ++{ Mixing module texts with revelations and without revelations. } ++ ++module Module11 = ++ access Module1, Module3 ++ def pub proc someproc = (int a, b) int: a + b; ++ skip ++ postlude ++ skip ++ fed, ++ Foo = def skip postlude skip fed, ++ Bar = def skip fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module12.a68 +@@ -0,0 +1,5 @@ ++module Module_12 = ++def pub proc foo = (proc(int,string)void cb, int a) void: cb (a, "Foo"); ++ pub proc bar = (real r) void: skip; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module13.a68 +@@ -0,0 +1,5 @@ ++module Module_13 = ++def ++ pub mode JSON_Val = struct (int i); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module14.a68 +@@ -0,0 +1,5 @@ ++module Module14 = ++access Module13 ++def pub proc getval = JSON_Val: skip; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module15.a68 +@@ -0,0 +1,8 @@ ++module Module15 = ++access Module13, Module14 ++def pub proc foo = int: ++ begin JSON_Val val = getval; ++ i of val ++ end; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module16.a68 +@@ -0,0 +1,8 @@ ++module Module_16 = ++def ++ pub int counter; ++ skip ++postlude ++ assert (counter = 666); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module17.a68 +@@ -0,0 +1,13 @@ ++module Module = ++def ++ pub int ce_port; ++ pub string ce_host; ++ ++ pub proc ce_connect = void: ++ myconnect (ce_host, ce_port); ++ ++ proc myconnect = (string host, int port) void: ++ skip; ++ ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module3.a68 +@@ -0,0 +1,11 @@ ++module Module_3 = ++def ++ { variable = 0 in_proc = 1 } pub proc bump = void: counter +:= 1; ++ { variable = 0 in_proc = 1 } pub proc bumptimes = (int n) void: to n do bump od; ++ { variable = 1 in_proc = 0 } pub proc vbump := void: counter +:= 1; ++ { variable = 1 in_proc = 0 } pub proc vbumptimes := (int n) void: to n do vbump od; ++ { variable = 0 in_proc = 1 } pub proc getcounter = int: counter; ++ { variable = 0 in_proc = 0 } pub proc int anothergetcounter = getcounter; ++ int counter := 10; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module4.a68 +@@ -0,0 +1,4 @@ ++module Module_4 = ++def pub int ten = 10; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module5.a68 +@@ -0,0 +1,7 @@ ++module Module_5 = ++def pub prio // = 9; ++ pub op // = (int a, b) int: a + b; ++ pub prio LALA = 9; ++ pub op LALA = (int a, b) int: a - b; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module6.a68 +@@ -0,0 +1,5 @@ ++module Module_6 = ++def prio // = 9; { Note priority is not publicized. } ++ pub op // = (int a, b) int: a + b; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module7.a68 +@@ -0,0 +1,10 @@ ++{ This module exports an operator defined in a non-brief operator ++ declaration. This means the exported symbol is a pointer to a ++ function and shall be indirected on the accessing side. } ++ ++module Module_7 = ++def pub prio MINUS = 9; ++ pub op (int,int)int MINUS = minus; ++ proc minus = (int a, b) int: a - b; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module8.a68 +@@ -0,0 +1,9 @@ ++module Module_8 = ++access Module_1, Module_4 ++def ++ pub proc checks = void: ++ begin assert (ten = 10); ++ assert (beast_number = 666) ++ end; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module9.a68 +@@ -0,0 +1,8 @@ ++module Module9 = ++def pub int foo = 10; ++ pub prio // = 9; ++ pub op QUUX = (int a, b) int: a + b; ++ prio QUUX = 9; ++ pub mode Lala = int; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-1.a68 +@@ -0,0 +1,20 @@ ++{ dg-modules "module1" } ++ ++begin string je = access Module1 begin who end; ++ string ju = access Module1 ( who ); ++ string ji = access Module1 if true then who else who fi; ++ string ja = access Module1 (true | who | who); ++ string aa = access Module1 case 1 in who, "no" esac; ++ mode United = union (void,int); ++ string bb = access Module1 case United (10) in (int): who esac; ++ string cc = access Module1 (1 | who, "no"); ++ assert (je = "jemarch"); ++ assert (ju = "jemarch"); ++ assert (ji = "jemarch"); ++ assert (ja = "jemarch"); ++ assert (aa = "jemarch"); ++ assert (bb = "jemarch"); ++ assert (cc = "jemarch"); ++ access Module1 to 1 do assert (who = "jemarch") od; ++ access Module1 (assert (beast_number = 666)) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-10.a68 +@@ -0,0 +1,6 @@ ++{ dg-modules "module3 module9 module10" } ++ ++access Module10 ++begin int x = 11; ++ assert (x = bar) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-11.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module1 module3 module11" } ++ ++access Module11 ( assert (someproc (2, 3) = 5)) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-12.a68 +@@ -0,0 +1,6 @@ ++{ dg-modules "module12" } ++ ++access Module_12 ++begin proc lala = (int n, string s) void: skip; ++ foo (lala, 10) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-15.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module13 module14 module15" } ++ ++access Module15 (assert (foo = 0)) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-16.a68 +@@ -0,0 +1,8 @@ ++{ dg-modules module16 } ++ ++access Module_16 ++begin assert (counter = 0); ++ counter := 20; ++ access Module_16 (assert (counter = 20)); ++ counter := 666 ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-17.a68 +@@ -0,0 +1,7 @@ ++{ dg-modules module17 } ++ ++access Module17 ++begin ce_port := 8888; ++ ce_host := "localhost"; ++ ce_connect ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-2.a68 +@@ -0,0 +1,15 @@ ++{ dg-modules "module1" } ++ ++begin int x = 1 + access Module1 ( beast_number); ++ int i = access Module1 ( beast_number ) + 1; ++ int z = 1 + access Module1 if true then beast_number fi; ++ int v = access Module1 if true then beast_number fi + 1; ++ int w = access Module1 if true then beast_number fi ++ + access Module1 if true then beast_number fi; ++ assert (i = 667); ++ assert (x = 667); ++ assert (z = 667); ++ assert (v = 667); ++ assert (w = 666 * 2); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-3.a68 +@@ -0,0 +1,16 @@ ++{ dg-modules "module3" } ++ ++access Module_3 ++begin assert (getcounter = 10); ++ bump; ++ assert (getcounter = 11); ++ bumptimes (3); ++ assert (getcounter = 14) ++ { vbump and vbumptimes are set to non-publicized routines ++ that are local to the module, so it is a scope violation ++ to call them. } ++{ vbump; ++ assert (getcounter = 15); ++ vbumptimes (10); ++ assert (anothergetcounter = 25) } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-4.a68 +@@ -0,0 +1,7 @@ ++{ dg-modules "module4" } ++ ++{ The widening coercion "jumps" inside the controlled xclause. } ++ ++begin real realten = access Module_4 (ten); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-5.a68 +@@ -0,0 +1,7 @@ ++{ dg-modules "module5" } ++ ++access Module_5 ++begin assert (2 // 3 = 5); ++ assert (2 LALA 3 = -1); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-6.a68 +@@ -0,0 +1,9 @@ ++{ dg-modules "module6" } ++ ++{ New priority is given to an importe operator. } ++ ++access Module_6 ++begin assert (2 // 3 = 5); ++ prio // = 9; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-7.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module7" } ++ ++access Module_7 ( assert (2 MINUS 3 = -1) ) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-8.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module1 module4 module8" } ++ ++access Module_8 (checks) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-char-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ("a" * 3 = "aaa"); ++ ASSERT ("" * 1 = ""); ++ ASSERT ("x" * 0 = "x") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (i * 2 = 20); ++ ASSERT (ii * LONG 2 = LONG 20); ++ ASSERT (iii * LONG LONG 2 = LONG LONG 20); ++ ASSERT (ss * SHORT 2 = SHORT 20); ++ ASSERT (sss * SHORT SHORT 2 = SHORT SHORT 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-string-1.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "foo"; ++ ASSERT (foo * -10 = "foo"); ++ ASSERT (-10 * foo = "foo"); ++ ASSERT (foo * 0 = "foo"); ++ ASSERT (0 * foo = "foo"); ++ ASSERT (foo * 1 = "foo"); ++ ASSERT (1 * foo = "foo"); ++ ASSERT (foo * 2 = "foofoo"); ++ ASSERT (2 * foo = "foofoo"); ++ ASSERT (foo * 3 = "foofoofoo"); ++ ASSERT (3 * foo = "foofoofoo") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-string-2.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []CHAR foo = ("f","o","o"); ++ ASSERT (foo * -10 = "foo"); ++ ASSERT (-10 * foo = "foo"); ++ ASSERT (foo * 0 = "foo"); ++ ASSERT (0 * foo = "foo"); ++ ASSERT (foo * 1 = "foo"); ++ ASSERT (1 * foo = "foo"); ++ ASSERT (foo * 2 = "foofoo"); ++ ASSERT (2 * foo = "foofoo"); ++ ASSERT (foo * 3 = "foofoofoo"); ++ ASSERT (3 * foo = "foofoofoo") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-string-3.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN FLEX[3]CHAR foo := ("f","o","o"); ++ ASSERT (foo * -10 = "foo"); ++ ASSERT (-10 * foo = "foo"); ++ ASSERT (foo * 0 = "foo"); ++ ASSERT (0 * foo = "foo"); ++ ASSERT (foo * 1 = "foo"); ++ ASSERT (1 * foo = "foo"); ++ ASSERT (foo * 2 = "foofoo"); ++ ASSERT (2 * foo = "foofoo"); ++ ASSERT (foo * 3 = "foofoofoo"); ++ ASSERT (3 * foo = "foofoofoo") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-string-4.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "abc"; ++ ASSERT (foo[] * 2 = "abcabc") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/multab-1.a68 +@@ -0,0 +1,31 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 2; ++ i *:= 2; ++ ASSERT (i = 4); ++ i *:= 2; ++ ASSERT (i = 8); ++ ++ SHORT INT s := SHORT 2; ++ s *:= SHORT 2; ++ ASSERT (s = SHORT 4); ++ s *:= SHORT 3; ++ ASSERT (s = SHORT 12); ++ ++ SHORT SHORT INT ss := SHORT SHORT 2; ++ ss *:= SHORT SHORT 2; ++ ASSERT (ss = SHORT SHORT 4); ++ ss *:= SHORT SHORT 3; ++ ASSERT (ss = SHORT SHORT 12); ++ ++ REF LONG INT ii = HEAP LONG INT := LONG 2; ++ ii *:= LONG 2; ++ ASSERT (ii = LONG 4); ++ ii *:= LONG 2; ++ ASSERT (ii = LONG 8); ++ ++ LONG LONG INT iii := LONG LONG 2; ++ iii *:= LONG LONG 2; ++ ASSERT (iii = LONG LONG 4); ++ iii *:= LONG LONG 2; ++ ASSERT (iii = LONG LONG 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/multab-2.a68 +@@ -0,0 +1,31 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 2; ++ i TIMESAB 2; ++ ASSERT (i = 4); ++ i TIMESAB 2; ++ ASSERT (i = 8); ++ ++ REF SHORT INT ss = HEAP SHORT INT := SHORT 2; ++ ss TIMESAB SHORT 2; ++ ASSERT (ss = SHORT 4); ++ ss TIMESAB SHORT 2; ++ ASSERT (ss = SHORT 8); ++ ++ SHORT SHORT INT sss := SHORT SHORT 2; ++ sss TIMESAB SHORT SHORT 2; ++ ASSERT (sss = SHORT SHORT 4); ++ sss TIMESAB SHORT SHORT 2; ++ ASSERT (sss = SHORT SHORT 8); ++ ++ REF LONG INT ii = HEAP LONG INT := LONG 2; ++ ii TIMESAB LONG 2; ++ ASSERT (ii = LONG 4); ++ ii TIMESAB LONG 2; ++ ASSERT (ii = LONG 8); ++ ++ LONG LONG INT iii := LONG LONG 2; ++ iii TIMESAB LONG LONG 2; ++ ASSERT (iii = LONG LONG 4); ++ iii TIMESAB LONG LONG 2; ++ ASSERT (iii = LONG LONG 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/multab-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT num ints := 10; ++ num ints *:= 2; ++ ASSERT (num ints = 20); ++ ASSERT ((LOC INT *:= 12) = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mutual-recursion-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is even = (INT n) BOOL: (n = 0 | TRUE | is odd (n - 1)); ++ PROC is odd = (INT n) BOOL: (n = 0 | FALSE | is even (n - 1)); ++ ASSERT (is even (20)); ++ ASSERT (is odd (13)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ne-bits-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BITS b, LONG BITS bb = LONG 16rff, LONG LONG BITS bbb; ++ SHORT BITS ss = SHORT 16rff, SHORT SHORT BITS sss; ++ ASSERT (b /= 2r1); ++ ASSERT (bb NE LONG 8r477); ++ ASSERT (bbb /= LONG LONG 8r2); ++ ASSERT (ss NE SHORT 8r477); ++ ASSERT (sss /= SHORT SHORT 8r2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ne-char-char-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ("x" /= "a") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ne-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (13 /= i); ++ ASSERT (ii NE LONG 13); ++ ASSERT (iii /= LONG LONG 13); ++ ASSERT (s /= SHORT 13); ++ ASSERT (ss /= SHORT SHORT 13) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ne-string-1.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "foo", bar = "bar", quux = "quux"; ++ # /= # ++ ASSERT (NOT ("" /= "")); ++ ASSERT (NOT ("foo" /= foo)); ++ ASSERT (foo /= bar); ++ ASSERT (foo /= quux); ++ ASSERT (quux /= foo); ++ # NE # ++ ASSERT (NOT ("" NE "")); ++ ASSERT (NOT ("foo" NE foo)); ++ ASSERT (foo NE bar); ++ ASSERT (foo NE quux); ++ ASSERT (quux NE foo) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/neg-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (-i = -10); ++ ASSERT (-ii = - LONG 10); ++ ASSERT (-iii = - LONG LONG 10); ++ ASSERT (-ss = - SHORT 10); ++ ASSERT (-sss = - SHORT SHORT 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/not-bits-1.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# NOT for SIZETY BITS. # ++BEGIN BITS b = 16rf0f0; ++ ASSERT ((NOT b AND 16rffff) = 16r0f0f); ++ LONG BITS bb = LONG 16rf0f0; ++ ASSERT ((NOT bb AND LONG 16rffff) = LONG 16r0f0f); ++ LONG LONG BITS bbb = LONG LONG 16rf0f0; ++ ASSERT ((NOT bbb AND LONG LONG 16rffff) = LONG LONG 16r0f0f); ++ SHORT BITS ss = SHORT 16rf0f0; ++ ASSERT ((NOT ss AND SHORT 16rffff) = SHORT 16r0f0f); ++ SHORT SHORT BITS sss = SHORT SHORT 16rf0f0; ++ ASSERT ((NOT sss AND SHORT SHORT 16rffff) = SHORT SHORT 16r0f0f) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/odd-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT a = 1; ++ ASSERT (ODD a); ++ ASSERT (ODD LONG 3); ++ ASSERT (NOT ODD LONG LONG 4); ++ ASSERT (ODD SHORT 3); ++ ASSERT (NOT ODD SHORT SHORT 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/op-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN OP ONEOVER = (REAL a) REAL: 1/a; ++ REAL x; ++ x := ONEOVER 3.14 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/op-2.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN OP + = (INT a, b) INT: a - -b; ++ ASSERT (10 + 30 = 40) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/op-3.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN OP MIN = (REAL a, b) REAL: (a < b | a | b), ++ MIN = (INT a, REAL b) REAL: (a < b | a | b), ++ MIN = (REAL a, INT b) REAL: a MIN REAL (b); ++ PRIO MIN = 6; ++ ASSERT (10.0 MIN 20.0 > 9.9 AND 10.0 MIN 20.0 < 10.1); ++ ASSERT (10.0 MIN 100 > 9.9 AND 10.0 MIN 100 < 10.1); ++ ASSERT (100.0 MIN 10 > 9.9 AND 100.0 MIN 10 < 10.1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/operator-declaration-1.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n = 10; ++ # Note that the priority for the monadic operators gets ignored. # ++ PRIO JORL = 6, JURL = 6, XXX = 6, YYY = 6; ++ OP(INT)INT JORL = (n > 10 | (INT a) INT: a + 1 | (INT a) INT: a - 1), ++ JURL = (n <= 10 | (INT a) INT: a + 1 | (INT a) INT: a - 1); ++ OP(INT,INT)INT XXX = (INT a, b) INT: a + b, ++ YYY = (n > 10 | (INT a,b) INT: a * b | (INT a,b) INT: a - b); ++ ASSERT (JORL 10 = 9); ++ ASSERT (JURL 10 = 11); ++ ASSERT (2 XXX 3 = 5); ++ ASSERT (2 YYY 3 = -1); ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/or-bits-1.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++# OR for SIZETY BITS. # ++BEGIN BITS b = 16rf0f0; ++ ASSERT ((b OR 16r0f0f) = 16rffff); ++ ASSERT ((b OR 16r00ff) = 16rf0ff); ++ LONG BITS bb = LONG 16rf0f0; ++ ASSERT ((bb OR LONG 16r0f0f) = LONG 16rffff); ++ ASSERT ((bb OR LONG 16r00ff) = LONG 16rf0ff); ++ LONG LONG BITS bbb = LONG LONG 16rf0f0; ++ ASSERT ((bbb OR LONG LONG 16r0f0f) = LONG LONG 16rffff); ++ ASSERT ((bbb OR LONG LONG 16r00ff) = LONG LONG 16rf0ff); ++ SHORT BITS ss = SHORT 16rf0f0; ++ ASSERT ((ss OR SHORT 16r0f0f) = SHORT 16rffff); ++ ASSERT ((ss OR SHORT 16r00ff) = SHORT 16rf0ff); ++ SHORT SHORT BITS sss = SHORT SHORT 16rf0f0; ++ ASSERT ((sss OR SHORT SHORT 16r0f0f) = SHORT SHORT 16rffff); ++ ASSERT ((sss OR SHORT SHORT 16r00ff) = SHORT SHORT 16rf0ff) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/orf-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ ASSERT (i = 0 OREL i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/over-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (i % 2 = 5); ++ ASSERT (ii % LONG 2 = LONG 5); ++ ASSERT (iii % LONG LONG 2 = LONG LONG 5); ++ ASSERT (ss % SHORT 2 = SHORT 5); ++ ASSERT (sss % SHORT SHORT 2 = SHORT SHORT 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/overab-1.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN (INT i := 11; i OVERAB 2; ASSERT (i = 5)); ++ (INT i := 11; i %:= 2; ASSERT (i = 5)); ++ (SHORT INT i := SHORT 11; i OVERAB SHORT 2; ASSERT (i = SHORT 5)); ++ (SHORT INT i := SHORT 11; i %:= SHORT 2; ASSERT (i = SHORT 5)); ++ (SHORT SHORT INT i := SHORT SHORT 11; i OVERAB SHORT SHORT 2; ASSERT (i = SHORT SHORT 5)); ++ (SHORT SHORT INT i := SHORT SHORT 11; i %:= SHORT SHORT 2; ASSERT (i = SHORT SHORT 5)); ++ (LONG INT i := LONG 11; i OVERAB LONG 2; ASSERT (i = LONG 5)); ++ (LONG INT i := LONG 11; i %:= LONG 2; ASSERT (i = LONG 5)); ++ (LONG LONG INT i := LONG LONG 11; i OVERAB LONG LONG 2; ASSERT (i = LONG LONG 5)); ++ (LONG LONG INT i := LONG LONG 11; i %:= LONG LONG 2; ASSERT (i = LONG LONG 5)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/overab-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 10; ++ (((n OVERAB 1))) := 5; ++ ASSERT (n = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/particular-program-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++# Particular program with preceding labels. # ++jo: ju: ++BEGIN SKIP END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plus-char-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ("a" + "b" = "ab"); ++ ASSERT ("" + "x" = "x") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plus-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (i + 2 = 12); ++ ASSERT (ii + LONG 2 = LONG 12); ++ ASSERT (iii + LONG LONG 2 = LONG LONG 12); ++ ASSERT (ss + SHORT 2 = SHORT 12); ++ ASSERT (sss + SHORT SHORT 2 = SHORT SHORT 12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plus-string-1.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "foo", bar = "bar", quux = "quux"; ++ ASSERT ("" + "" = ""); ++ ASSERT ("" + foo = "foo"); ++ ASSERT (bar + "" = "bar"); ++ ASSERT (foo + bar = "foobar"); ++ STRING res = foo + bar; ++ ASSERT (LWB res = 1 AND UPB res = 6); ++ STRING empty = "" + ""; ++ ASSERT (LWB empty = 1 AND UPB empty = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plus-string-2.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC rec parse comment = VOID: ++ BEGIN STRING content; ++ done; ++ 100; ++ done: ++ ASSERT (content + "x" = "x") ++ END; ++ ++ rec parse comment ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plus-string-stride-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1","H","3"), ++ ("4","O","6"), ++ ("7","M","9"), ++ ("8","E","2")); ++ ASSERT (matrix[1:2,1] + matrix[3:4,3] = "1492") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusab-1.a68 +@@ -0,0 +1,34 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN INT i := 10; ++ i +:= 2; ++ ASSERT (i = 12); ++ i PLUSAB 2; ++ ASSERT (i = 14) ++ END; ++ ++ BEGIN SHORT INT i := SHORT 1000; ++ i +:= SHORT 100; ++ ASSERT (i = SHORT 1100); ++ i PLUSAB SHORT 100; ++ ASSERT (i = SHORT 1200) ++ END; ++ BEGIN SHORT SHORT INT i := SHORT SHORT 10000; ++ i +:= SHORT SHORT 1000; ++ ASSERT (i = SHORT SHORT 11000); ++ i PLUSAB SHORT SHORT 1000; ++ ASSERT (i = SHORT SHORT 12000) ++ END; ++ ++ BEGIN LONG INT i := LONG 1000; ++ i +:= LONG 100; ++ ASSERT (i = LONG 1100); ++ i PLUSAB LONG 100; ++ ASSERT (i = LONG 1200) ++ END; ++ BEGIN LONG LONG INT i := LONG LONG 10000; ++ i +:= LONG LONG 1000; ++ ASSERT (i = LONG LONG 11000); ++ i PLUSAB LONG LONG 1000; ++ ASSERT (i = LONG LONG 12000) ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusab-2.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN REAL i := 10.0; ++ i +:= 2.0; ++ ASSERT (i > 11.9); ++ i PLUSAB 2.0; ++ ASSERT (i > 13.9) ++ END; ++ BEGIN LONG REAL i := LONG 1000.0; ++ i +:= LONG 100.0; ++ ASSERT (i > LONG 1099.9); ++ i PLUSAB LONG 100.0; ++ ASSERT (i > LONG 1199.9) ++ END; ++ BEGIN LONG LONG REAL i := LONG LONG 10000.0; ++ i +:= LONG LONG 1000.0; ++ ASSERT (i > LONG LONG 10999.9); ++ i PLUSAB LONG LONG 1000.0; ++ ASSERT (i > LONG LONG 11999.9) ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusab-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 0; ++ (((n +:= 1))) := 5; ++ ASSERT (n = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusab-4.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT num ints := 0; ++ num ints +:= 1; ++ ASSERT (num ints = 1); ++ ASSERT ((LOC INT +:= 12) = 12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusab-string-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo := ""; ++ foo +:= "foo"; ++ ASSERT (LWB foo = 1 AND UPB foo = 3 AND foo = "foo"); ++ foo PLUSAB "bar"; ++ ASSERT (LWB foo = 1 AND UPB foo = 6 AND foo = "foobar") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusto-char-1.a68 +@@ -0,0 +1,7 @@ ++begin string foo := "foo"; ++ char c := "x"; ++ c PLUSTO foo; ++ assert (foo = "xfoo"); ++ c +=: foo; ++ assert (foo = "xxfoo") ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusto-string-1.a68 +@@ -0,0 +1,6 @@ ++begin string foo := "foo"; ++ "bar" PLUSTO foo; ++ assert (foo = "barfoo"); ++ "quux" +=: foo; ++ assert (foo = "quuxbarfoo") ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-argc-argv-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (argc >= 1); ++ ASSERT (argv (1000) = ""); ++ ASSERT (argv (-1) = ""); ++ FOR i TO argc ++ DO puts (argv (i)) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-fopen-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT fd = fopen ("doesn''t exist", file o default); ++ ASSERT (fd = -1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-fputc-fputs-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN fputc (stdout, "X"); ++ ASSERT (fputs (stdout, "foo") = 3); ++ fputs (stdout, fputc (stdout, "Y") + "T"); ++ fputc (stdout, "Z"); ++ ASSERT (fputs (stdout, "") = 0); ++ puts ("") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-getenv-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (getenv ("") = ""); ++ ASSERT (getenv ("DOESNT EXIST FOR SURE") = "") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-lseek.a68 +@@ -0,0 +1,17 @@ ++begin int fd = fopen ("../../ga68", file_o_rdonly); ++ assert (fd /= -1); ++ assert (errno = 0); ++ long long int offset; ++ offset := lseek (fd, long long 0, seek_cur); ++ assert (offset = long long 0); ++ assert (errno = 0); ++ offset := lseek (fd, long long 0, seek_set); ++ assert (offset = long long 0); ++ assert (errno = 0); ++ offset := lseek (fd, long long 0, seek_end); ++ long long int offset2 = lseek (fd, offset, seek_set); ++ assert (offset = offset2); ++ long long int file_size = fsize (fd); ++ assert (errno = 0); ++ assert (offset = file_size) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-perror-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# { dg-output "^something unique: " } # ++BEGIN INT fd = fopen ("doesn''t exist", file o default); ++ IF fd = -1 THEN ++ ASSERT (strerror (errno) /= ""); ++ perror ("something unique") ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-putchar-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN putchar ("X"); ++ putchar ("Y"); ++ putchar ("Z"); ++ puts ("\n") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-stdinouterr-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (stdin = 0); ++ ASSERT (stdout = 1); ++ ASSERT (stderr = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-strerror-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT fd = fopen ("doesn''t exist", file o default); ++ IF fd = -1 THEN ASSERT (strerror (errno) /= "") FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-stride-1.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1","H","3"), ++ ("4","O","6"), ++ ("7","M","9"), ++ ("8","E","0")); ++ []CHAR column = matrix[1:4,2]; ++ puts (column); ++ fputs (stdout, matrix[3,2:3]); ++ puts ("\n"); ++ fputs (stdout, matrix[1:3,1]); ++ puts ("\n"); ++ puts (getenv (matrix[,2])); ++ perror (matrix[,3]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/pow-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 2; ++ LONG INT ii = LONG 2, LONG LONG INT iii = LONG LONG 2; ++ SHORT INT ss = SHORT 2, SHORT SHORT INT sss = SHORT SHORT 2; ++ ASSERT (i ** 2 = 4); ++ ASSERT (ii ** 2 = LONG 4); ++ ASSERT (iii ** 2 = LONG LONG 4); ++ ASSERT (ss ** 2 = SHORT 4); ++ ASSERT (sss ** 2 = SHORT SHORT 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/pow-real-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r0 = 2.0; LONG REAL rr0 = LONG 2.0; LONG LONG REAL rrr0 = LONG LONG 2.0; ++ REAL r1 = r0 ^ 2; REAL r2 = r0 ^ 3.0; ++ LONG REAL rr1 = rr0 ^ LONG 2; LONG REAL rr2 = rr0 ^ LONG 3.0; ++ LONG LONG REAL rrr1 = rrr0 ^ LONG LONG 2; LONG LONG REAL rrr2 = rrr0 ^ LONG LONG 3.0; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = INT: 100; ++ ASSERT (foo = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-10.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC(INT,INT)INT foo = (INT i, j) INT: i + j; ++ ASSERT (foo (10, 20) = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-12.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC(INT)INT foo = baz; ++ PROC bar = (INT i) INT: i + 1; ++ PROC baz = (INT i) INT: i - 1; ++ ASSERT (foo (10) = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-13.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is even := (INT n) BOOL: n %* 2 = 0; ++ ASSERT (is even (40)); ++ PROC no args := BOOL: TRUE; ++ ASSERT (no args) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-14.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is even := (INT n) BOOL: n %* 2 = 0; ++ PROC is odd := (INT n) BOOL: n %* 2 /= 0; ++ PROC(INT)BOOL f = is even; ++ PROC(INT)BOOL g = is odd; ++ ASSERT (f (40)); ++ ASSERT (g (3)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-15.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Nested procedures. # ++BEGIN PROC foo = (INT i) INT: ++ BEGIN PROC bar = (INT i) INT: i - 1; ++ bar (i) * 10 ++ END; ++ ASSERT (foo (10) = 90) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-16.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC bar = (INT i) INT: i - 1; ++ PROC foo = (INT i) INT: ++ BEGIN ++ bar (i) * 10 ++ END; ++ ASSERT (foo (10) = 90) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-17.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Identity declarations and procedures. # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ ASSERT (foo (10) = 11); ++ PROC(INT)INT bar = (INT i) INT: i + 1; ++ ASSERT (bar (10) = 11); ++ PROC(INT)INT baz = foo; ++ ASSERT (baz (10) = 11); ++ PROC(INT)INT quux = IF 10 > 1 THEN baz ELSE foo FI; ++ ASSERT (quux (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-18.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ PROC(INT)INT bar; ++ bar := foo; ++ ASSERT (bar (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-19.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ PROC(INT)INT bar := foo; ++ ASSERT (bar (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Call a non-variable procedure before declaration. # ++BEGIN ASSERT (foo = 100); ++ PROC foo = INT: 100; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-20.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo := (INT i) INT: i + 1; ++ PROC(INT)INT bar := foo; ++ ASSERT (bar (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-21.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# REF REF PROC # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ PROC(INT)INT bar := foo; ++ REF PROC(INT)INT baz; ++ baz := bar; ++ ASSERT (baz (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-22.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# REF REF PROC # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ PROC(INT)INT bar := foo; ++ REF PROC(INT)INT baz := bar; ++ ASSERT (baz (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-23.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC increment = (INT a) INT: a + 1; ++ PROC getproc = PROC(INT)INT: ++ BEGIN increment ++ END; ++ # getproc below gets deprocedured to yield increment. # ++ ASSERT (getproc (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-25.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC increment := (INT a) INT: a + 1; ++ PROC getproc := PROC(INT)INT: ++ BEGIN increment ++ END; ++ # getproc below gets deprocedured to yield increment. # ++ ASSERT (getproc (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-26.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC sum = (INT a, b) INT: a + b, ++ minus = (INT a, b) INT: a - b; ++ ASSERT (sum (1, 2) = 3); ++ ASSERT (minus (1, 2) = -1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-27.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC reciprocal = (REAL a) REAL: 1/a; ++ REAL x; ++ x := reciprocal (3.14) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-28.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC hcf = (INT m, n) INT: ++ IF m < n ++ THEN hcf (n, m) ++ ELIF n = 0 ++ THEN m ++ ELSE hcf (n, m MOD n) ++ FI; ++ ASSERT (hcf (10, 20) = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-29.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# A heap proc variable. # ++BEGIN HEAP PROC foo := INT: 666; ++ ASSERT (foo = 666) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-3.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = (INT i, j) INT: i + j + 1; ++ ASSERT (foo (10, 11) = 22) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (foo (10, 11) = 22); ++ PROC foo = (INT i, j) INT: i + j + 1; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Recursive function. # ++BEGIN PROC foo = (INT i) INT: (i > 0 | i + foo (i - 1) | 0); ++ ASSERT (foo (10) = 55) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-6.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Recursive function, used before declared. # ++BEGIN ASSERT (foo (10) = 55); ++ PROC foo = (INT i) INT: BEGIN (i > 0 | i + foo (i - 1) | 0) END; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-7.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ PROC(INT)INT bar = foo; ++ ASSERT (bar (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-8.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC INT foo = INT: 100; ++ ASSERT (foo = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/procedured-goto-1.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 4; ++beg: WHILE i > 0 ++ DO []PROC VOID table = (l3,l1,l2,end); ++ table[i]; ++l1: puts ("uno\n"); i -:= 1; beg; ++l2: puts ("dos\n"); i -:= 1; beg; ++l3: puts ("tres\n"); i -:= 1; beg; ++end: puts ("cuatro\n"); i -:= 1; beg ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/quine.a68 +@@ -0,0 +1,2 @@ ++# { dg-options "-fstropping=upper" } # ++(STRING a="(STRING a="";puts(2*a[:19]+2*a[19:]);0)";puts(2*a[:19]+2*a[19:])) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/random-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN IF random > 0.5 THEN puts ("yes\n") ELSE puts ("no\n") FI; ++ LONG REAL rr = long random; ++ IF rr > LONG 0.5 THEN puts ("long yes\n") ELSE puts ("long no\n") FI; ++ LONG LONG REAL rrr = long long random; ++ IF rrr > LONG LONG 0.5 THEN puts ("long long yes\n") ELSE puts ("long long no\n") FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/re-im-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN COMPL z = 4.0I5.0; ++ ASSERT (RE z = 4.0 AND IM z = 5.0); ++ LONG COMPL zz = LONG 4.0 I LONG 6.0; ++ ASSERT (RE zz = LONG 4.0 AND IM zz = LONG 6.0); ++ LONG LONG COMPL zzz = LONG LONG 4.0 I LONG LONG 7.0; ++ ASSERT (RE zzz = LONG LONG 4.0 AND IM zzz = LONG LONG 7.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rela-string-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ("" >= ""); ++ ASSERT ("" <= ""); ++ ASSERT ("zzz" > "aaa"); ++ ASSERT ("zzz" >= "aaa"); ++ ASSERT ("HelloA" < "HelloB") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/repr-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (REPR ABS "x" = "x") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/round-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL x = 3.14, y = 3.80; ++ LONG REAL xx = LONG 3.14, yy = LONG 3.80; ++ LONG LONG REAL xxx = LONG LONG 3.14, yyy = LONG LONG 3.80; ++ ASSERT (ROUND x = 3 AND ROUND y = 4); ++ ASSERT (ROUND xx = LONG 3 AND ROUND yy = LONG 4); ++ ASSERT (ROUND xxx = LONG LONG 3 AND ROUND yyy = LONG LONG 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/row-display-1.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT foo = (7,8,9); ++ [,]INT bar = ((1,2,3),(4,5,6),foo); ++ ASSERT (bar[1,1] = 1); ++ ASSERT (bar[1,2] = 2); ++ ASSERT (bar[1,3] = 3); ++ ASSERT (bar[2,1] = 4); ++ ASSERT (bar[2,2] = 5); ++ ASSERT (bar[2,3] = 6); ++ ASSERT (bar[3,1] = 7); ++ ASSERT (bar[3,2] = 8); ++ ASSERT (bar[3,3] = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/row-display-2.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT foo = (7,8,9); ++ [3,3]INT bar := ((1,2,3),(4,5,6),foo); ++ ASSERT (bar[1,1] = 1); ++ ASSERT (bar[1,2] = 2); ++ ASSERT (bar[1,3] = 3); ++ ASSERT (bar[2,1] = 4); ++ ASSERT (bar[2,2] = 5); ++ ASSERT (bar[2,3] = 6); ++ ASSERT (bar[3,1] = 7); ++ ASSERT (bar[3,2] = 8); ++ ASSERT (bar[3,3] = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/row-display-3.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (INT i, STRING s); ++ [,]FOO matrix = (((10, "foo"), (20, "bar"), (30, "baz")), ++ ((40, "uno"), (50, "dos"), (60, "tres")), ++ ((70, "cuatro"), (80, "cinco"), (90, "seis"))); ++ ASSERT (i OF matrix[1,1] = 10); ++ ASSERT (i OF matrix[1,2] = 20); ++ ASSERT (i OF matrix[1,3] = 30); ++ ASSERT (i OF matrix[2,1] = 40); ++ ASSERT (i OF matrix[2,2] = 50); ++ ASSERT (i OF matrix[2,3] = 60); ++ ASSERT (i OF matrix[3,1] = 70); ++ ASSERT (i OF matrix[3,2] = 80); ++ ASSERT (i OF matrix[3,3] = 90) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/row-display-4.a68 +@@ -0,0 +1,16 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,][]INT duples = (((1,2), (3,4), (5,6)), ++ ((7,8), (9,10), (11,12))); ++ ASSERT (duples[1,1][1] = 1); ++ ASSERT (duples[1,1][2] = 2); ++ ASSERT (duples[1,2][1] = 3); ++ ASSERT (duples[1,2][2] = 4); ++ ASSERT (duples[1,3][1] = 5); ++ ASSERT (duples[1,3][2] = 6); ++ ASSERT (duples[2,1][1] = 7); ++ ASSERT (duples[2,1][2] = 8); ++ ASSERT (duples[2,2][1] = 9); ++ ASSERT (duples[2,2][2] = 10); ++ ASSERT (duples[2,3][1] = 11); ++ ASSERT (duples[2,3][2] = 12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/row-display-5.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT list1 = (1,2,3), ++ list2 = (4,5,6), ++ list3 = (7,8,9); ++ [,]INT matrix = (list1, list2, list3); ++ [,,]INT cube = (matrix, matrix, matrix); ++ ASSERT (cube[1,1,1] = 1); ++ ASSERT (cube[2,2,2] = 5); ++ ASSERT (cube[3,3,3] = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT a = 10; ++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); ++ ASSERT (a[1] = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-10.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ REF[,]INT a = i; ++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); ++ ASSERT (2 LWB a = 1 AND 2 UPB a = 1 AND 2 ELEMS a = 1); ++ a[1,1] := a[1,1] + 1; ++ ASSERT (a[1,1] = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-11.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ REF[,,]INT a = i; ++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); ++ ASSERT (2 LWB a = 1 AND 2 UPB a = 1 AND 2 ELEMS a = 1); ++ ASSERT (3 LWB a = 1 AND 3 UPB a = 1 AND 3 ELEMS a = 1); ++ a[1,1,1] := a[1,1,1] + 1; ++ ASSERT (a[1,1,1] = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-12.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing of NIL yields NIL. # ++BEGIN REF INT i = NIL; ++ REF[]INT a = i; ++ ASSERT (a :=: NIL) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-13.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing of NIL yields NIL. # ++BEGIN REF INT i = (NIL); ++ REF[,,]INT a = (i); ++ ASSERT (a :=: NIL) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [][]INT a = 10; ++ ASSERT (a[1][1] = 10); ++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); ++ ASSERT (LWB a[1] = 1 AND UPB a[1] = 1 AND ELEMS a[1] = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [][][]INT a = 10; ++ ASSERT (a[1][1][1] = 10); ++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); ++ ASSERT (LWB a[1] = 1 AND UPB a[1] = 1 AND ELEMS a[1] = 1); ++ ASSERT (LWB a[1][1] = 1 AND UPB a[1][1] = 1 AND ELEMS a[1][1] = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-4.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (INT i, REAL r); ++ FOO foo = (10, 3.14); ++ [][]FOO a = foo; ++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); ++ ASSERT (LWB a[1] = 1 AND UPB a[1] = 1 AND ELEMS a[1] = 1); ++ ASSERT (i OF a[1][1] = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-5.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing of a name. # ++BEGIN INT i := 10; ++ REF[]INT a = i; ++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); ++ a[1] := a[1] + 1; ++ ASSERT (a[1] = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-6.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing of NIL yields NIL. # ++BEGIN REF[]INT a = REF INT(NIL); ++ ASSERT (a :=: NIL) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-7.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT a = 10; ++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); ++ ASSERT (2 LWB a = 1 AND 2 UPB a = 1 AND 2 ELEMS a = 1); ++ ASSERT (a[1,1] = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-8.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT a = 10; ++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); ++ [,]INT aa = a; ++ ASSERT (1 LWB aa = 1 AND 1 UPB aa = 1 AND 1 ELEMS aa = 1); ++ ASSERT (2 LWB aa = 1 AND 2 UPB aa = 1 AND 2 ELEMS aa = 1); ++ [,,]INT aaa = aa; ++ ASSERT (1 LWB aaa = 1 AND 1 UPB aaa = 1 AND 1 ELEMS aaa = 1); ++ ASSERT (2 LWB aaa = 1 AND 2 UPB aaa = 1 AND 2 ELEMS aaa = 1); ++ ASSERT (3 LWB aaa = 1 AND 3 UPB aaa = 1 AND 3 ELEMS aaa = 1); ++ ASSERT (aaa[1,1,1] = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-9.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,,]INT aaa = 10; ++ ASSERT (1 LWB aaa = 1 AND 1 UPB aaa = 1 AND 1 ELEMS aaa = 1); ++ ASSERT (2 LWB aaa = 1 AND 2 UPB aaa = 1 AND 2 ELEMS aaa = 1); ++ ASSERT (3 LWB aaa = 1 AND 3 UPB aaa = 1 AND 3 ELEMS aaa = 1); ++ ASSERT (aaa[1,1,1] = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Selecting a struct results in a sub-value. # ++BEGIN MODE PERSON = STRUCT (INT age, REAL income, INT num children); ++ PERSON person = (44, 999.99, 0); ++ ASSERT (age OF person = 44); ++ ASSERT (num children OF person = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-2.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# Selecting a struct name results in sub-names. # ++BEGIN MODE PERSON = STRUCT (INT age, REAL income, INT num children); ++ PERSON person; ++ age OF person := 44; ++ income OF person := 999.99; ++ num children OF person := 0; ++ ASSERT (age OF person = 44); ++ ASSERT (num children OF person = 0); ++ REF INT ptr to age := age OF person; ++ ASSERT (ptr to age = 44); ++ age OF person := 55; ++ ASSERT (ptr to age = 55) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-3.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Structs can be nested in other structs. # ++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT code); ++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); ++ ++ PERSON person = (44, (999.99, 0.0, 10), 3); ++ ++ ASSERT (age OF person = 44); ++ ASSERT (code OF income OF person = 10); ++ ASSERT (num children OF person = 3); ++ ASSERT (num children OF person * code OF income OF person = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-4.a68 +@@ -0,0 +1,19 @@ ++# { dg-options "-fstropping=upper" } # ++# Structs can be nested in other structs. Version with subnames. # ++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT code); ++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); ++ ++ PERSON person; ++ ++ age OF person := 44; ++ salary OF income OF person := 999.99; ++ stock OF income OF person := 0.0; ++ num children OF person := 3; ++ code OF income OF person := num children OF person; ++ ++ ASSERT (age OF person = 44); ++ ASSERT (code OF income OF person = num children OF person); ++ ASSERT (code OF income OF person = 3); ++ ASSERT (num children OF person = 3); ++ ASSERT (num children OF person * code OF income OF person = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-5.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# pr UPPER pr # ++BEGIN MODE JORL = STRUCT (INT i, REAL r); ++ REF JORL jorl = LOC JORL := (10, 3.14); ++ ASSERT (i OF jorl = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-multiple-1.a68 +@@ -0,0 +1,12 @@ ++begin [10]struct (int age, string name) persons; ++ ++ for i to UPB persons ++ do age of persons[i] := 20 + i; ++ name of persons[i] := "x" * i ++ od; ++ ++ for i to UPB name of persons ++ do assert ((age of persons)[i] = 20 + i); ++ assert ((name of persons)[i] = "x" * i) ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-multiple-2.a68 +@@ -0,0 +1,18 @@ ++begin [10,5]struct (int age, string name) persons; ++ ++ for i to 1 UPB persons ++ do for j to 2 UPB persons ++ do age of persons[i,j] := 20 + i + j; ++ name of persons[i,j] := "x" * (i + j) ++ od ++ od; ++ ++ assert (1 UPB name of persons = 10); ++ assert (2 UPB name of persons = 5); ++ for i to 1 UPB name of persons ++ do for j to 2 UPB name of persons ++ do assert ((age of persons)[i,j] = 20 + i + j); ++ assert ((name of persons)[i,j] = "x" * (i + j)) ++ od ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ BEGIN INT i = 20; # { dg-warning "hides" } # ++ ASSERT (i = 20); ++ i ++ END; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-10.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# NIL is not voided and can appear in a context requiring VOID. # ++BEGIN (NIL); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN ASSERT (i = 0); ++ i ++ END; ++ INT i = 10; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (i = 0); ++ INT i = 10; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-4.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ BEGIN ASSERT (i = 10); ++ i +:= 1 ++ END; ++ ASSERT (i = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-5.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN ASSERT (i = 0); ++ i ++ END; ++ INT i := 10; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-6.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ((INT y := 10; ++ INT x := 20; ++ REF INT yy; ++ (REF INT xx := x; ++ yy := y; ++ xx := yy ++ ) ++ ) = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-7.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ((INT y := 10; ++ INT x := 20; ++ REF INT yy; ++ (REF INT xx := x; ++ yy := y; ++ xx + yy ++ ) ++ ) = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-8.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ((INT y := 10; ++ INT x := 20; ++ REF INT yy; ++ (REF INT xx := x; ++ yy := y; ++ xx ++ ) ++ ) = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-9.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Serial clause with jump at the end. # ++ ++BEGIN INT i := BEGIN BOOL cont := TRUE; ++ back: cont := FALSE; ++ IF cont THEN GOTO back FI ++ END; ++ ASSERT (i = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-1.a68 +@@ -0,0 +1,18 @@ ++{ This tests stack management for DSA serial clauses. ++ If it fails a stack overflow happens. } ++begin { DSA due to stack allocated multiple. } ++ to 10000 ++ do [10000]int foo; ++ skip ++ od; ++ { DSA due to stack allocated multiple. Explicit loc. } ++ to 10000 ++ do loc[10000]int foo; ++ skip ++ od; ++ { DSA due to loc generator. } ++ to 10000 ++ do ref[]int jorl = loc [10000]int; ++ skip ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-2.a68 +@@ -0,0 +1,6 @@ ++{ Check value yielding of DSA serial clauses. } ++begin assert ((ref int foo = loc int := 100; ++ foo) = 100); ++ []int a = ([10000]int foo; foo[10] := 666; foo); ++ assert (a[10] = 666) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-3.a68 +@@ -0,0 +1,12 @@ ++{ The jump to leak should not leak stack. } ++begin by 10000 ++ do ++ by 10000 ++ do [10000]int foo; ++ skip; ++ goto leak ++ od; ++ leak: ++ skip ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-4.a68 +@@ -0,0 +1,4 @@ ++begin (ref int a = loc int := 10; goto leak; a); ++leak: ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-5.a68 +@@ -0,0 +1,3 @@ ++begin assert ((ref int a = loc int := 10; a) + 1 = 11); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-6.a68 +@@ -0,0 +1,4 @@ ++{ DSA and completers in a serial clause. } ++begin assert ((ref int a = loc int := 10; a exit foo: a +:= 1) + 1 = 11); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/sign-int-1.a68 +@@ -0,0 +1,28 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT zero = 0; ++ SHORT INT short zero = SHORT 0; ++ SHORT SHORT INT short short zero = SHORT SHORT 0; ++ LONG INT long zero = LONG 0; ++ LONG LONG INT long long zero = LONG LONG 0; ++ INT ten = 10; ++ SHORT INT short ten = SHORT 10; ++ SHORT SHORT INT short short ten = SHORT SHORT 10; ++ LONG INT long ten = LONG 10; ++ LONG LONG INT long long ten = LONG LONG 10; ++ ASSERT (SIGN zero = 0); ++ ASSERT (SIGN short zero = 0); ++ ASSERT (SIGN short short zero = 0); ++ ASSERT (SIGN long zero = 0); ++ ASSERT (SIGN long long zero = 0); ++ ASSERT (SIGN ten = 1); ++ ASSERT (SIGN short ten = 1); ++ ASSERT (SIGN short short ten = 1); ++ ASSERT (SIGN long ten = 1); ++ ASSERT (SIGN long long ten = 1); ++ ASSERT (SIGN -ten = -1); ++ ASSERT (SIGN -short ten = -1); ++ ASSERT (SIGN -short short ten = -1); ++ ASSERT (SIGN -long ten = -1); ++ ASSERT (SIGN -long long ten = -1) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/sign-real-1.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL zero = 0.0; ++ LONG REAL long zero = LONG 0.0; ++ LONG LONG REAL long long zero = LONG LONG 0.0; ++ REAL ten = 10.0; ++ LONG REAL long ten = LONG 10.0; ++ LONG LONG REAL long long ten = LONG LONG 10.0; ++ ASSERT (SIGN zero = 0); ++ ASSERT (SIGN long zero = 0); ++ ASSERT (SIGN long long zero = 0); ++ ASSERT (SIGN ten = 1); ++ ASSERT (SIGN long ten = 1); ++ ASSERT (SIGN long long ten = 1); ++ ASSERT (SIGN -ten = -1); ++ ASSERT (SIGN -long ten = -1); ++ ASSERT (SIGN -long long ten = -1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/sin-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 0.0; ++ LONG REAL rr = LONG 45.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (sin (r) = 0.0); ++ long sin (rr); ++ long long sin (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/skip-1.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# Check SKIPs for INT modes # ++BEGIN INT int skip = SKIP; ++ ASSERT (int skip = 0); ++ SHORT INT short int skip = SKIP; ++ ASSERT (short int skip = SHORT 0); ++ SHORT SHORT INT short short int skip = SKIP; ++ ASSERT (short short int skip = SHORT SHORT 0); ++ LONG INT long int skip = SKIP; ++ ASSERT (long int skip = LONG 0); ++ LONG LONG INT long long int skip = SKIP; ++ ASSERT (long long int skip = LONG LONG 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/skip-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Check SKIP values for BOOL and CHAR. # ++BEGIN BOOL bool skip = SKIP; ++ ASSERT (bool skip = FALSE); ++ CHAR char skip = SKIP; ++ ASSERT (char skip = " ") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/skip-struct-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT jorl); ++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); ++ PERSON person = SKIP; ++ ASSERT (age OF person = 0); ++ ASSERT (jorl OF income OF person = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "foo"; ++ ASSERT (foo[1] = "f"); ++ ASSERT (foo[2] = "o"); ++ ASSERT (foo[3] = "o"); ++ STRING bar := "foo"; ++ ASSERT (bar[1] = "f"); ++ ASSERT (bar[2] = "o"); ++ ASSERT (bar[3] = "o") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-2.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT foo = (1,2,3); ++ ASSERT (foo[1] = 1); ++ ASSERT (foo[2] = 2); ++ ASSERT (foo[3] = 3); ++ [3]INT bar := (1,2,3); ++ ASSERT (bar[1] = 1); ++ ASSERT (bar[2] = 2); ++ ASSERT (bar[3] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-3.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT foo = (10,20,30); ++ ASSERT (foo[1] = 10); ++ ASSERT (foo[2] = 20); ++ ASSERT (foo[3] = 30); ++ [3]INT bar := (100,200,300); ++ ASSERT (bar[1] = 100); ++ ASSERT (bar[2] = 200); ++ ASSERT (bar[3] = 300) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-4.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE PERSON = STRUCT (INT i, STRING s); ++ []PERSON persons = ((10, "foo"), (20, "barbar"), (30, "baz")); ++ puts (s OF persons[1]); ++ puts (s OF persons[2]); ++ puts (s OF persons[3]); ++ ASSERT (i OF persons[1] = 10); ++ ASSERT (i OF persons[2] = 20); ++ ASSERT (i OF persons[3] = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-5.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRUCT([]INT i, REAL r) s = ((1,2,3), 3.14); ++ ASSERT ((i OF s)[1] = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-6.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT rsp := 5; ++ [10]INT run stack; ++ run stack [(rsp -:= 1) + 1] ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-7.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING s := "foo"; ++ s[2] := "x" ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/sqrt-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 100.0; ++ LONG REAL rr = LONG 25.0; ++ LONG LONG REAL rrr = LONG LONG 25.0; ++ ASSERT (sqrt (r) = 10.0); ++ ASSERT (long sqrt (rr) = LONG 5.0); ++ ASSERT (long long sqrt (rrr) = LONG LONG 5.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/string-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING s = ""; ++ ASSERT (LWB s = 1 AND UPB s = 0); ++ STRING t = (); ++ ASSERT (LWB t = 1 AND UPB t = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/string-2.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING s; ++ ASSERT (LWB s = 1 AND UPB s = 0 AND ELEMS s = 0); ++ s := "foo"; ++ puts (s); ++ ASSERT (LWB s = 1 AND UPB s = 3 AND s[1] = "f" AND s[2] = "o" AND s[3] = "o"); ++ s := "bar"; ++ puts (s); ++ ASSERT (LWB s = 1 AND UPB s = 3 AND s[1] = "b" AND s[2] = "a" AND s[3] = "r"); ++ s := "x"; ++ ASSERT (LWB s = 1 AND UPB s = 1 AND s[1] = "x"); ++ puts (s) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/string-4.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING s; ++ ASSERT (LWB s = 1 AND UPB s = 0 AND ELEMS s = 0); ++ s +:= "foo"; ++ ASSERT (LWB s = 1 AND UPB s = 3 AND ELEMS s = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/string-break-1.a68 +@@ -0,0 +1,8 @@ ++begin assert (UPB "foo'nbar" = 7 AND "foo'nbar"[4] = REPR 10); ++ assert (UPB "foo'tbar" = 7 AND "foo'tbar"[4] = REPR 9); ++ assert (UPB "foo'rbar" = 7 AND "foo'rbar"[4] = REPR 13); ++ assert (UPB "foo'fbar" = 7 AND "foo'fbar"[4] = REPR 12); ++ assert (UPB "foo''bar" = 7 AND "foo''bar"[4] = REPR 39); ++ assert ("'(u0048,u0065,U0000006c,u006c,U0000006f)" = "Hello"); ++ assert ("'( u0048, u0065, U0000006c,u006c, U0000006f )" = "Hello") ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/struct-self-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); ++ NODE top; ++ ASSERT (next OF top :=: REF NODE (NIL)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/struct-self-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); ++ NODE top = (20, NIL); ++ ASSERT (code OF top = 20); ++ ASSERT (next OF top :=: NIL) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/struct-self-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); ++ NODE top := (10, NIL); ++ NODE next := (20, NIL); ++ next OF top := next; ++ ASSERT (code OF next OF top = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/structure-display-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT code); ++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); ++ INCOME income = (100.0, 200.0, 300); ++ ASSERT (code OF income = 300); ++ PERSON person := (24, (1000.0, 2000.0, 3000), 3); ++ ASSERT (code OF income OF person = 3000); ++ ASSERT (num children OF person = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/structure-display-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT code, REF INT next); ++ INT val := 20; ++ NODE top = (10, val); ++ ASSERT (val = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/structure-display-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (INT i, REF INT j); ++ INT x := 10; ++ FOO foo; ++ foo := (10, x); ++ ASSERT (j OF foo = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/structure-display-4.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (INT i, REF INT j); ++ INT x := 10; ++ REF INT xx; ++ FOO foo; ++ foo := (10, xx := x); ++ ASSERT (j OF foo = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/structure-display-5.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE VEC = STRUCT (REAL xcoord, ycoord, zcoord); ++ VEC v1, v2, v3; ++ v1 := (1,1,1); ++ ASSERT (xcoord OF v1 = 1); ++ ASSERT (ycoord OF v1 = 1); ++ ASSERT (zcoord OF v1 = 1); ++ REAL x = 3.14, i = 3; ++ v2 := (x + 2, 3.4, i - 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/tan-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 0.0; ++ LONG REAL rr = LONG 50.0; ++ LONG LONG REAL rrr = LONG LONG 50.0; ++ ASSERT (tan (r) = 0.0); ++ long tan (rr); ++ long long tan (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/timesab-string-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo := "foo"; ++ foo TIMESAB 1; ++ ASSERT (foo = "foo"); ++ foo *:= 3; ++ ASSERT (foo = "foofoofoo") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[2:3@20]; ++ ASSERT (LWB jorl = 20 AND UPB jorl = 21); ++ ASSERT (jorl[20] = 1 AND jorl [21] = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-10.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# Trimming with flat descriptors should lead to flat multiples. # ++BEGIN []INT a = (1,2,3); ++ ++ ASSERT (UPB a[2:1] < LWB a[2:1]); ++ ASSERT (UPB a[20:2] < LWB a[20:2]); ++ ++ [,]INT aa = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ ++ ASSERT ((1 UPB aa[1,2:1]) < ((1 LWB aa[1,2:1]))); ++ ASSERT ((1 UPB aa[1,20:]) < ((1 LWB aa[1,20:]))) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[2:3]; ++ ASSERT (LWB jorl = 1 AND UPB jorl = 2); ++ ASSERT (jorl[1] = 1 AND jorl [2] = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[:@20]; ++ ASSERT (LWB jorl = 20 AND UPB jorl = 22); ++ ASSERT (jorl[20] = 1 AND jorl[21] = 2 AND jorl[22] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-4.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[3:]; ++ ASSERT (LWB jorl = 1 AND UPB jorl = 2); ++ ASSERT (jorl[1] = 2 AND jorl[2] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-5.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[:3 AT 10]; ++ ASSERT (LWB jorl = 10 AND UPB jorl = 11); ++ ASSERT (jorl[10] = 1 AND jorl[11] = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-6.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[:3@10]; ++ ASSERT (LWB jorl = 10 AND UPB jorl = 11); ++ ASSERT (jorl[10] = 1 AND jorl[11] = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-7.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT arr = (1,2,3); ++ ASSERT (arr[2] = 2 AND arr[3] = 3); ++ []INT jorl = arr[2:3@20]; ++ ASSERT (LWB jorl = 20 AND UPB jorl = 21); ++ ASSERT (jorl[20] = 2 AND jorl [21] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-8.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ [10:11]INT jorl := arr[:3 AT 10]; ++ ASSERT (LWB jorl = 10 AND UPB jorl = 11); ++ ASSERT (jorl[10] = 1 AND jorl[11] = 2); ++ jorl[10] := 100; ++ ASSERT (jorl[10] = 100 AND jorl[11] = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-9.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT arr = (1,2,3); ++ ASSERT (arr[2] = 2 AND arr[3] = 3); ++ []INT jorl = arr[@20]; ++ ASSERT (LWB jorl = 20 AND UPB jorl = 22); ++ ASSERT (jorl[20] = 1 AND jorl [21] = 2 AND jorl [22] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ [2]INT column := matrix[3,2:3]; ++ ASSERT (column[1] = 8); ++ ASSERT (column[2] = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ [2]INT column := matrix[2,1:2]; ++ ASSERT (column[1] = 4); ++ ASSERT (column[2] = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-3.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ [3]INT column := matrix[2,1:3]; ++ ASSERT (column[1] = 4); ++ ASSERT (column[2] = 5); ++ ASSERT (column[3] = 6) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-4.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ []INT column = matrix[1:3,2]; ++ ASSERT (LWB column = 1); ++ ASSERT (UPB column = 3); ++ ASSERT (column[1] = 2 AND column[2] = 5 AND column[3] = 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-5.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ []INT column = matrix[2:3,2]; ++ ASSERT (LWB column = 1); ++ ASSERT (UPB column = 2); ++ ASSERT (column[1] = 5 AND column[2] = 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-6.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ []INT row = matrix[3,1:3]; ++ ASSERT (LWB row = 1); ++ ASSERT (UPB row = 3); ++ ASSERT (row[1] = 7 AND row[2] = 8 AND row[3] = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-name-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF[]CHAR t; ++ PROC foo = VOID: (HEAP[3]CHAR ss := ("1","2","3"); t := ss[1:3]); ++ foo; ++ ASSERT (LWB t = 1 AND UPB t = 3); ++ ASSERT (t[1] = "1" AND t[2] = "2" AND t[3] = "3") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/undefined-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++# j's value is undefined (defined to be 0 in GNU Algol) # ++BEGIN INT x := 0; ++ FOR i TO 5 ++ DO ASSERT (j = 0); ++ IF j > 20 THEN stop FI; ++ INT j = x + i; ++ x +:= 1 ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/undefined-2.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# The undefined value of the multiple `a' is an empty multiple. # ++BEGIN ASSERT (i = 0); ++ ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0); ++ []INT a = (1, 2, 3); ++ INT i = 10; ++ ASSERT (i = 10); ++ ASSERT (LWB a = 1 AND UPB a = 3 AND ELEMS a = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/undefined-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (sum = 1); ++ PROC sum = INT: i + 1; ++ INT i = 10; ++ ASSERT (sum = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/undefined-4.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is even = (INT n) BOOL: (n = zero | TRUE | is odd (n - 1)); ++ PROC is odd = (INT n) BOOL: (n = zero | FALSE | is even (n - 1)); ++ ASSERT (is even (20)); ++ ASSERT (is odd (13)); ++ INT zero := 0; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/undefined-5.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is even = (INT n) BOOL: (n = zero | TRUE | is odd (DECR n)); ++ PROC is odd = (INT n) BOOL: (n = zero | FALSE | is even (DECR n)); ++ OP DECR = (INT a) INT: a - 1; ++ ASSERT (is even (20)); ++ ASSERT (is odd (13)); ++ INT zero := 0; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/uniting-1.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION(INT,REAL,CHAR) datum := 3.14; ++ UNION(INT,REAL,[]INT,CHAR) datux; ++ datux := datum; ++ ASSERT (CASE datux ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR c): 30 ++ ESAC = 20); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/uniting-2.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION(INT,REAL,CHAR) datum := "X"; ++ UNION(INT,REAL,[]INT,CHAR) datux; ++ datux := datum; ++ ASSERT (CASE datux ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR c): 30 ++ ESAC = 30); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/uniting-3.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION(INT,REAL,CHAR) datum := 10; ++ UNION(INT,REAL,[]INT,CHAR) datux; ++ datux := datum; ++ ASSERT (CASE datux ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR c): 30 ++ ESAC = 10); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/uniting-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Uniting STRING to ROWS. # ++BEGIN PROC strlen = (STRING s) INT: ELEMS s; ++ ASSERT (strlen ("foo") = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/up-down-bits-1.a68 +@@ -0,0 +1,33 @@ ++# { dg-options "-fstropping=upper" } # ++# SHORTEN and LENG on SIZETY BITS # ++BEGIN BITS b = 16rff; ++ ASSERT (b UP 4 = 16rff0); ++ ASSERT (b SHL 4 = 16rff0); ++ ASSERT (b DOWN 4 = 16r0f); ++ ASSERT (b SHR 4 = 16r0f); ++ ++ LONG BITS bb = LONG 16rff; ++ ASSERT (bb UP 4 = LONG 16rff0); ++ ASSERT (bb SHL 4 = LONG 16rff0); ++ ASSERT (bb DOWN 4 = LONG 16r0f); ++ ASSERT (bb SHR 4 = LONG 16r0f); ++ ++ LONG LONG BITS bbb = LONG LONG 16rff; ++ ASSERT (bbb UP 4 = LONG LONG 16rff0); ++ ASSERT (bbb SHL 4 = LONG LONG 16rff0); ++ ASSERT (bbb DOWN 4 = LONG LONG 16r0f); ++ ASSERT (bbb SHR 4 = LONG LONG 16r0f); ++ ++ SHORT BITS ss = SHORT 16rff; ++ ASSERT (ss UP 4 = SHORT 16rff0); ++ ASSERT (ss SHL 4 = SHORT 16rff0); ++ ASSERT (ss DOWN 4 = SHORT 16r0f); ++ ASSERT (ss SHR 4 = SHORT 16r0f); ++ ++ SHORT SHORT BITS sss = SHORT SHORT 16r0f; ++ ASSERT (sss UP 4 = SHORT SHORT 16rf0); ++ ASSERT (sss SHL 4 = SHORT SHORT 16rf0); ++ ASSERT (sss DOWN 2 = SHORT SHORT 16r03); ++ ASSERT (sss SHR 2 = SHORT SHORT 16r03) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/upb-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (UPB "foo" = 3); ++ ASSERT (1 UPB "foo" = 3); ++ ASSERT (UPB "" = 0); ++ ASSERT ((INT i = 1; UPB "") = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/vacuum-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT a = (); ++ ASSERT (LWB a = 1 AND UPB a = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := x := 20; ++ ASSERT (xx = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := x; ++ ASSERT (xx = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := (x := 20); ++ ASSERT (xx = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := ((x)); ++ ASSERT (xx = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF REF INT xx := LOC REF INT := x := 20; ++ ASSERT (xx = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-6.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (STRING s, INT i); ++ FOO f1 := ("foo", 10); ++ ASSERT (i OF f1 = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-heap-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN HEAP INT a := 10; ++ ASSERT (a = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-heap-2.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN HEAP INT x, y; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [10,3]INT arr; ++ ASSERT (1 LWB arr = 1 AND 1 UPB arr = 10 AND 1 ELEMS arr = 10); ++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 3 AND 2 ELEMS arr = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n = 10; ++ [n,3]INT arr; ++ ASSERT (1 LWB arr = 1 AND 1 UPB arr = 10 AND 1 ELEMS arr = 10); ++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 3 AND 2 ELEMS arr = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 10, m := 3; ++ [n,m]INT arr; ++ ASSERT (1 LWB arr = 1 AND 1 UPB arr = 10 AND 1 ELEMS arr = 10); ++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 3 AND 2 ELEMS arr = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-4.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := -4, m := 0; ++ [n:m,2]INT arr; ++ ASSERT (1 LWB arr = -4 AND 1 UPB arr = 0 AND 1 ELEMS arr = 5); ++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 2 AND 2 ELEMS arr = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-5.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := -4, m := 0; ++ [n:m,2]INT arr; ++ FOR i FROM 1 LWB arr TO 1 UPB arr ++ DO FOR j FROM 2 LWB arr TO 2 UPB arr ++ DO ASSERT (arr[i,j] = INT(SKIP)) OD ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-6.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := -4, m := 0; ++ [n:m,2]REF INT arr; ++ FOR i FROM 1 LWB arr TO 1 UPB arr ++ DO FOR j FROM 2 LWB arr TO 2 UPB arr ++ DO ASSERT (REF INT (arr[i,j]) :=: REF INT(SKIP)) OD ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-7.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 2, m := 3; ++ [n][m]INT arr; ++ FOR i FROM LWB arr TO UPB arr ++ DO FOR j FROM LWB arr[i] TO UPB arr[i] ++ DO ASSERT (arr[i][j] = INT(SKIP)) OD ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-8.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := -4, m := 0; ++ [10][n:m,2]INT arr; ++ FOR k FROM LWB arr TO UPB arr ++ DO FOR i FROM 1 LWB arr[k] TO 1 UPB arr[k] ++ DO FOR j FROM 2 LWB arr[k] TO 2 UPB arr[k] ++ DO ASSERT (arr[k][i,j] = INT(SKIP)) OD ++ OD ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-9.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [4]INT x, y; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/voiding-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i; ++ 2 = i ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/widening-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ REAL foo = i; ++ ASSERT (foo > 9.9); ++ ASSERT (foo < 10.1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/widening-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN LONG INT i = LONG 10; ++ LONG REAL foo = i; ++ ASSERT (foo > LONG 9.9); ++ ASSERT (foo < LONG 10.1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/widening-bits-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# XXX use environment enquiry for actual size of BITS # ++BEGIN []BOOL foo = 16rffff; ++ ASSERT (LWB foo = 1 AND UPB foo = 32); ++ FOR i TO 16 DO ASSERT (foo[i] = FALSE) OD; ++ FOR i FROM 17 TO 32 DO ASSERT (foo[i] = TRUE) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/widening-bits-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# XXX use environment enquiry for actual size of LONG BITS # ++BEGIN []BOOL foo = LONG 16rffffffff; ++ ASSERT (LWB foo = 1 AND UPB foo = 64); ++ FOR i TO 32 DO ASSERT (foo[i] = FALSE) OD; ++ FOR i FROM 33 TO 64 DO ASSERT (foo[i] = TRUE) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/widening-bits-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# XXX use environment enquiry for actual size of LONG LONG BITS # ++BEGIN []BOOL foo = LONG LONG 16rffffffff; ++ ASSERT (LWB foo = 1 AND UPB foo = 64); ++ FOR i TO 32 DO ASSERT (foo[i] = FALSE) OD; ++ FOR i FROM 33 TO 64 DO ASSERT (foo[i] = TRUE) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/xor-bits-1.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++# XOR for SIZETY BITS. # ++BEGIN BITS b = 16rf0f0; ++ ASSERT ((b XOR 16r0f0f) = 16rffff); ++ ASSERT ((b XOR 16r00ff) = 16rf00f); ++ LONG BITS bb = LONG 16rf0f0; ++ ASSERT ((bb XOR LONG 16r0f0f) = LONG 16rffff); ++ ASSERT ((bb XOR LONG 16r00ff) = LONG 16rf00f); ++ LONG LONG BITS bbb = LONG LONG 16rf0f0; ++ ASSERT ((bbb XOR LONG LONG 16r0f0f) = LONG LONG 16rffff); ++ ASSERT ((bbb XOR LONG LONG 16r00ff) = LONG LONG 16rf00f); ++ SHORT BITS ss = SHORT 16rf0f0; ++ ASSERT ((ss XOR SHORT 16r0f0f) = SHORT 16rffff); ++ ASSERT ((ss XOR SHORT 16r00ff) = SHORT 16rf00f); ++ SHORT SHORT BITS sss = SHORT SHORT 16rf0; ++ ASSERT ((sss XOR SHORT SHORT 16r0f) = SHORT SHORT 16rff); ++ ASSERT ((sss XOR SHORT SHORT 16rff) = SHORT SHORT 16r0f) ++END +--- /dev/null ++++ b/src/gcc/testsuite/lib/algol68-dg.exp +@@ -0,0 +1,96 @@ ++# Copyright (C) 1997-2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++load_lib gcc-dg.exp ++ ++# Define ALGOL68 callbacks for dg.exp. ++ ++proc algol68-dg-test { prog do_what extra_tool_flags } { ++ return [gcc-dg-test-1 algol68_target_compile $prog $do_what $extra_tool_flags] ++} ++ ++proc algol68-dg-prune { system text } { ++ return [gcc-dg-prune $system $text] ++} ++ ++# Global modules options ++set MODULES_OPTIONS "" ++ ++# Modified dg-runtest that can cycle through a list of optimization options ++# as c-torture does. ++proc algol68-dg-runtest { testcases flags default-extra-flags } { ++ global runtests ++ global TORTURE_OPTIONS ++ global MODULES_OPTIONS ++ ++ foreach test $testcases { ++ # If we're only testing specific files and this isn't one of ++ # them, skip it. ++ if ![runtest_file_p $runtests $test] { ++ continue ++ } ++ ++ # look if this is dg-do-run test, in which case ++ # we cycle through the option list, otherwise we don't ++ if [expr [search_for $test "dg-do run"]] { ++ set option_list $TORTURE_OPTIONS ++ } else { ++ set option_list [list { -O2 } ] ++ } ++ ++ set nshort [file tail [file dirname $test]]/[file tail $test] ++ ++ foreach flags_t $option_list { ++ verbose "Testing $nshort, $flags $flags_t" 1 ++ dg-test $test "$MODULES_OPTIONS $flags $flags_t" ${default-extra-flags} ++ } ++ } ++} ++ ++# Build a series of modules ACCESSed by this test. ++# ++# The first to dg-modules is a list of module names. The source file ++# for a given module MODULE is assumed to be MODULE.a68, and that file ++# must reside in the current directory. ++# ++# The second option to dg-modules, which is optional, can be used to ++# specify additional options to be passed to ga68 when it compiles the ++# modules. ++ ++proc dg-modules { args } { ++ ++ global objdir ++ global srcdir ++ global subdir ++ ++ if { [llength $args] != 2 && [llength $args] != 3 } { ++ error "[lindex $args 0]: invalid arguments" ++ } ++ set modules [lindex $args 1] ++ ++ set module_options {} ++ if { [llength $args] == 3 } { ++ set module_options [lindex $args 2] ++ } ++ ++ foreach module $modules { ++ set srcfile "${module}.a68" ++ set objfile "${module}.o" ++ # Compile the module ++ set comp_output [algol68_target_compile $srcdir/$subdir/$srcfile \ ++ $objdir/$objfile object $module_options] ++ } ++} +--- /dev/null ++++ b/src/gcc/testsuite/lib/algol68-torture.exp +@@ -0,0 +1,480 @@ ++# Copyright (C) 2009-2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Please email any bugs, comments, and/or additions to this file to ++# the author. ++ ++load_lib dg.exp ++ ++load_lib target-supports.exp ++ ++load_lib target-utils.exp ++ ++# The default option list can be overridden by ++# TORTURE_OPTIONS="{ { list1 } ... { listN } }" ++ ++if ![info exists TORTURE_OPTIONS] { ++ set TORTURE_OPTIONS [list \ ++ { -O0 } { -O1 } { -O2 } \ ++ { -O2 -fomit-frame-pointer -finline-functions } \ ++ { -O2 -fomit-frame-pointer -finline-functions -funroll-loops } \ ++ { -O2 -fcheck=bounds } \ ++ { -O2 -fcheck=nil } \ ++ { -O3 -g } \ ++ { -Os }] ++ ++ if [check_effective_target_lto] { ++ set TORTURE_OPTIONS \ ++ [concat $TORTURE_OPTIONS [list {-flto}]] ++ } ++} ++ ++# Location of built modules ++set BUILT_MODULES_DIR "" ++ ++# Build a series of modules ACCESSed by this test. ++# ++# The first to dg-modules is a list of module names. The source file ++# for a given module MODULE is assumed to be MODULE.a68, and that file ++# must reside in the current directory. ++# ++# The second option to dg-modules, which is optional, can be used to ++# specify additional options to be passed to ga68 when it compiles the ++# modules. ++ ++set module_objects "" ++ ++proc dg-modules { args } { ++ ++ global objdir ++ global srcdir ++ global subdir ++ global module_objects ++ ++ if { [llength $args] != 2 && [llength $args] != 3 } { ++ error "[lindex $args 0]: invalid arguments" ++ } ++ set modules [lindex $args 1] ++ ++ set module_options {} ++ if { [llength $args] == 3 } { ++ set module_options [lindex $args 2] ++ } ++ ++ foreach module $modules { ++ set srcfile "${module}.a68" ++ set objfile "${module}.o" ++ # Compile the module ++ set comp_output [algol68_target_compile $srcdir/$subdir/$srcfile \ ++ $objdir/$objfile object $module_options] ++ lappend module_objects $objfile ++ } ++} ++ ++# ++# algol68-torture-compile -- compile an algol68/execute/torture testcase. ++# ++# SRC is the full pathname of the testcase. ++# OPTION is the specific compiler flag we're testing (eg: -O2). ++# ++proc algol68-torture-compile { src option } { ++ global output ++ global srcdir tmpdir ++ global host_triplet ++ ++ set output "$tmpdir/[file tail [file rootname $src]].o" ++ ++ regsub "(?q)$srcdir/" $src "" testcase ++ ++ # If we couldn't rip $srcdir out of `src' then just do the best we can. ++ # The point is to reduce the unnecessary noise in the logs. Don't strip ++ # out too much because different testcases with the same name can confuse ++ # `test-tool'. ++ if [string match "/*" $testcase] { ++ set testcase "[file tail [file dirname $src]]/[file tail $src]" ++ } ++ ++ verbose "Testing $testcase, $option" 1 ++ ++ # Run the compiler and get results in comp_output. ++ set options "" ++ lappend options "additional_flags=-w $option" ++ ++ set comp_output [algol68_target_compile "$src" "$output" object $options] ++ ++ # See if we got something bad. ++ set fatal_signal "*algol68*: Internal compiler error: program*got fatal signal" ++ ++ if [string match "$fatal_signal 6" $comp_output] then { ++ algol68_fail $testcase "Got Signal 6, $option" ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ if [string match "$fatal_signal 11" $comp_output] then { ++ algol68_fail $testcase "Got Signal 11, $option" ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ if [regexp -line -- "internal compiler error.*" $comp_output ice] then { ++ algol68_fail $testcase "$option ($ice)" ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ # We shouldn't get these because of -w, but just in case. ++ if [string match "*algol68*:*warning:*" $comp_output] then { ++ warning "$testcase: (with warnings) $option" ++ send_log "$comp_output\n" ++ unresolved "$testcase, $option" ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ # Prune warnings we know are unwanted. ++ set comp_output [prune_warnings $comp_output] ++ ++ # Report if the testcase is not supported. ++ set unsupported_message [algol68_check_unsupported_p $comp_output] ++ if { $unsupported_message != "" } { ++ unsupported "$testcase: $unsupported_message" ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ # remove any leftover LF/CR to make sure any output is legit ++ regsub -all -- "\[\r\n\]*" $comp_output "" comp_output ++ ++ # If any message remains, we fail. ++ if ![string match "" $comp_output] then { ++ algol68_fail $testcase $option ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ algol68_pass $testcase $option ++ catch { remote_file build delete $output } ++} ++ ++ ++# ++# algol68-torture-execute -- compile and execute a testcase. ++# ++# SRC is the full pathname of the testcase. ++# ++# If the testcase has an associated .x file, we source that to run the ++# test instead. We use .x so that we don't lengthen the existing filename ++# to more than 14 chars. ++# ++proc algol68-torture-execute { src } { ++ global output ++ global srcdir tmpdir ++ global tool ++ global compiler_conditional_xfail_data ++ global TORTURE_OPTIONS ++ global BUILT_MODULES_DIR ++ global module_objects ++ global errorCode errorInfo ++ global algol68_compile_args ++ global algol68_execute_args ++ global dg-extra-tool-flags ++ ++ set dg-excess-errors-flag 0 ++ set dg-messages "" ++ set dg-extra-tool-flags "" ++ set dg-final-code "" ++ ++ # `dg-output-text' is a list of two elements: pass/fail and text. ++ # Leave second element off for now (indicates "don't perform test") ++ set dg-output-text "P" ++ ++ set tmp [dg-get-options $src] ++ foreach op $tmp { ++ verbose "Processing option: $op" 3 ++ set status [catch $op errmsg] ++ if { $status != 0 } { ++ if { 0 && [info exists errorInfo] } { ++ # This also prints a backtrace which will just confuse ++ # testcase writers, so it's disabled. ++ perror "$src: $errorInfo\n" ++ } else { ++ perror "$src: $errmsg for \"$op\"\n" ++ } ++ perror "$src: $errmsg for \"$op\"" 0 ++ return ++ } ++ } ++ ++ # Check for alternate driver. ++ set additional_flags "" ++ if [file exists [file rootname $src].x] { ++ verbose "Using alternate driver [file rootname [file tail $src]].x" 2 ++ set done_p 0 ++ catch "set done_p \[source [file rootname $src].x\]" ++ if { $done_p } { ++ return ++ } ++ } ++ ++ # Setup the options for the testcase run. ++ set option_list $TORTURE_OPTIONS ++ set executable $tmpdir/[file tail [file rootname $src].x] ++ regsub "(?q)$srcdir/" $src "" testcase ++ ++ if { ! [info exists algol68_compile_args] } { ++ set algol68_compile_args "" ++ } ++ if { ! [info exists algol68_execute_args] } { ++ set algol68_execute_args "" ++ } ++ ++ # If we couldn't rip $srcdir out of `src' then just do the best we can. ++ # The point is to reduce the unnecessary noise in the logs. Don't strip ++ # out too much because different testcases with the same name can confuse ++ # `test-tool'. ++ if [string match "/*" $testcase] { ++ set testcase "[file tail [file dirname $src]]/[file tail $src]" ++ } ++ ++ # Walk the list of options and compile and run the testcase for all ++ # options that are not explicitly disabled by the .x script (if present). ++ foreach option $option_list { ++ ++ # Torture_{compile,execute}_xfail are set by the .x script. ++ if [info exists torture_compile_xfail] { ++ setup_xfail $torture_compile_xfail ++ } ++ ++ # Torture_execute_before_{compile,execute} can be set by the .x script. ++ if [info exists torture_eval_before_compile] { ++ set ignore_me [eval $torture_eval_before_compile] ++ } ++ ++ # FIXME: We should make sure that the modules required by this testcase ++ # exist. If not, the testcase should XFAIL. ++ ++ # Compile the testcase. ++ catch { remote_file build delete $executable } ++ verbose "Testing $testcase, $option" 1 ++ ++ set options "" ++ lappend options "additional_flags=-w $option" ++ if { ${dg-extra-tool-flags} != "" } { ++ lappend options "additional_flags=${dg-extra-tool-flags}" ++ } ++ if { $additional_flags != "" } { ++ lappend options "additional_flags=$additional_flags" ++ } ++ if { $algol68_compile_args != "" } { ++ lappend options "additional_flags=$algol68_compile_args" ++ } ++ if { $BUILT_MODULES_DIR != "" } { ++ lappend options "additional_flags=-I$BUILT_MODULES_DIR" ++ } ++ if { $module_objects != "" } { ++ lappend options "additional_flags=$module_objects" ++ } ++ set comp_output [algol68_target_compile "$src" "$executable" executable $options] ++ ++ # See if we got something bad. ++ set fatal_signal "*algol68*: Internal compiler error: program*got fatal signal" ++ ++ if [string match "$fatal_signal 6" $comp_output] then { ++ algol68_fail $testcase "Got Signal 6, $option" ++ catch { remote_file build delete $executable } ++ continue ++ } ++ ++ if [string match "$fatal_signal 11" $comp_output] then { ++ algol68_fail $testcase "Got Signal 11, $option" ++ catch { remote_file build delete $executable } ++ continue ++ } ++ ++ if [regexp -line -- "internal compiler error.*" $comp_output ice] then { ++ algol68_fail $testcase "$option ($ice)" ++ catch { remote_file build delete $executable } ++ continue ++ } ++ ++ # We shouldn't get these because of -w, but just in case. ++ if [string match "*algol68*:*warning:*" $comp_output] then { ++ warning "$testcase: (with warnings) $option" ++ send_log "$comp_output\n" ++ unresolved "$testcase, $option" ++ catch { remote_file build delete $executable } ++ continue ++ } ++ ++ # Prune warnings we know are unwanted. ++ set comp_output [prune_warnings $comp_output] ++ ++ # Report if the testcase is not supported. ++ set unsupported_message [algol68_check_unsupported_p $comp_output] ++ if { $unsupported_message != "" } { ++ unsupported "$testcase: $unsupported_message" ++ continue ++ } elseif ![file exists $executable] { ++ if ![is3way] { ++ fail "$testcase compilation, $option" ++ untested "$testcase execution, $option" ++ continue ++ } else { ++ # FIXME: since we can't test for the existence of a remote ++ # file without short of doing an remote file list, we assume ++ # that since we got no output, it must have compiled. ++ pass "$testcase compilation, $option" ++ } ++ } else { ++ pass "$testcase compilation, $option" ++ } ++ ++ if [info exists torture_execute_xfail] { ++ setup_xfail $torture_execute_xfail ++ } ++ ++ if [info exists torture_eval_before_execute] { ++ set ignore_me [eval $torture_eval_before_execute] ++ } ++ ++ # Run the testcase, and analyse the output. ++ set result [algol68_load "$executable" "$algol68_execute_args" ""] ++ set status [lindex $result 0] ++ set output [lindex $result 1] ++ if { $status eq "pass" } { ++ pass "$testcase execution test, $option" ++ verbose "Exec succeeded." 3 ++ if { [llength ${dg-output-text}] > 1 } { ++ if { [lindex ${dg-output-text} 0] eq "F" } { ++ setup_xfail "*-*-*" ++ } ++ set texttmp [lindex ${dg-output-text} 1] ++ if { ![regexp -- $texttmp $output] } { ++ fail "$testcase output pattern test, $option" ++ send_log "Output was:\n${output}\nShould match:\n$texttmp\n" ++ verbose "Failed test for output pattern $texttmp" 3 ++ } else { ++ pass "$testcase output pattern test, $option" ++ verbose "Passed test for output pattern $texttmp" 3 ++ } ++ unset texttmp ++ } ++ } elseif { $status eq "fail" } { ++ if {[info exists errorCode]} { ++ verbose "Exec failed, errorCode: $errorCode" 3 ++ } else { ++ verbose "Exec failed, errorCode not defined!" 3 ++ } ++ fail "$testcase execution test, $option" ++ } else { ++ $status "$testcase execution, $option" ++ } ++ catch { remote_file build delete $executable } ++ } ++} ++ ++ ++# ++# search_for_re -- looks for a string match in a file ++# ++proc search_for_re { file pattern } { ++ set fd [open $file r] ++ while { [gets $fd cur_line]>=0 } { ++ set lower [string tolower $cur_line] ++ if [regexp "$pattern" $lower] then { ++ close $fd ++ return 1 ++ } ++ } ++ close $fd ++ return 0 ++} ++ ++ ++# ++# algol68-torture -- the algol68-torture testcase source file processor ++# ++# This runs compilation only tests (no execute tests). ++# ++# SRC is the full pathname of the testcase, or just a file name in which ++# case we prepend $srcdir/$subdir. ++# ++# If the testcase has an associated .x file, we source that to run the ++# test instead. We use .x so that we don't lengthen the existing filename ++# to more than 14 chars. ++# ++proc algol68-torture { args } { ++ global srcdir subdir ++ global compiler_conditional_xfail_data ++ global TORTURE_OPTIONS ++ ++ set src [lindex $args 0] ++ if { [llength $args] > 1 } { ++ set options [lindex $args 1] ++ } else { ++ set options "" ++ } ++ ++ # Prepend $srdir/$subdir if missing. ++ if ![string match "*/*" $src] { ++ set src "$srcdir/$subdir/$src" ++ } ++ ++ # Check for alternate driver. ++ if [file exists [file rootname $src].x] { ++ verbose "Using alternate driver [file rootname [file tail $src]].x" 2 ++ set done_p 0 ++ catch "set done_p \[source [file rootname $src].x\]" ++ if { $done_p } { ++ return ++ } ++ } ++ ++ # loop through all the options ++ set option_list $TORTURE_OPTIONS ++ foreach option $option_list { ++ ++ # torture_compile_xfail is set by the .x script (if present) ++ if [info exists torture_compile_xfail] { ++ setup_xfail $torture_compile_xfail ++ } ++ ++ # torture_execute_before_compile is set by the .x script (if present) ++ if [info exists torture_eval_before_compile] { ++ set ignore_me [eval $torture_eval_before_compile] ++ } ++ ++ algol68-torture-compile $src "$option $options" ++ } ++} ++ ++# ++# add-ieee-options -- add options necessary for 100% ieee conformance. ++# ++proc add-ieee-options { } { ++ # Ensure that excess precision does not cause problems. ++ if { [istarget i?86-*-*] ++ || [istarget m68k-*-*] } then { ++ uplevel 1 lappend additional_flags "-ffloat-store" ++ } ++ ++ # Enable full IEEE compliance mode. ++ if { [istarget alpha*-*-*] ++ || [istarget sh*-*-*] } then { ++ uplevel 1 lappend additional_flags "-mieee" ++ } ++} +--- /dev/null ++++ b/src/gcc/testsuite/lib/algol68.exp +@@ -0,0 +1,219 @@ ++# Copyright (C) 2012-2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# ++# ALGOL68 support library routines ++# ++ ++load_lib prune.exp ++load_lib gcc-defs.exp ++load_lib timeout.exp ++load_lib target-libpath.exp ++ ++# ++# ALGOL68_UNDER_TEST is the compiler under test. ++# ++ ++set algol68_compile_options "" ++ ++ ++# ++# algol68_include_flags -- include flags for the gcc tree structure ++# ++ ++proc algol68_include_flags { paths } { ++ global srcdir ++ global TESTING_IN_BUILD_TREE ++ ++ set flags "" ++ ++ if { [is_remote host] || ![info exists TESTING_IN_BUILD_TREE] } { ++ return "${flags}" ++ } ++ ++ set gccpath ${paths} ++ ++ return "$flags" ++} ++ ++# ++# algol68_link_flags -- linker flags for the gcc tree structure ++# ++ ++proc algol68_link_flags { paths } { ++ global srcdir ++ global ld_library_path ++ global shlib_ext ++ global SHARED_OPTION ++ global ALGOL68_UNDER_TEST ++ ++ set gccpath ${paths} ++ set libio_dir "" ++ set flags "" ++ set ld_library_path "." ++ set shlib_ext [get_shlib_extension] ++ set SHARED_OPTION "" ++ verbose "shared lib extension: $shlib_ext" ++ ++ # We need to add options to locate libga68. ++ set target_wants_B_option 0 ++ if { [istarget *-*-darwin9* ] || [istarget *-*-darwin\[12\]* ] } { ++ set target_wants_B_option 1 ++ } ++ ++ if { $gccpath != "" } { ++ # Path to libga68.spec. ++ append flags "-B${gccpath}/libga68 " ++ if { [file exists "${gccpath}/libga68/.libs/libga68.a"] \ ++ || [file exists "${gccpath}/libga68/.libs/libga68.${shlib_ext}"] } { ++ if { $target_wants_B_option } { ++ append flags "-B${gccpath}/libga68/.libs " ++ } else { ++ append flags "-L${gccpath}/libga68/.libs " ++ } ++ append ld_library_path ":${gccpath}/libga68/.libs" ++ } ++ # Static linking is default. If only the shared lib is available adjust ++ # flags to always use it. If both are available, set SHARED_OPTION which ++ # will be added to PERMUTE_ARGS ++ if { [file exists "${gccpath}/libga68/src/.libs/libga68.${shlib_ext}"] } { ++ if { [file exists "${gccpath}/libga68/src/.libs/libga68.a"] } { ++ set SHARED_OPTION "-shared-libga68" ++ } else { ++# append flags "-shared-libga68 " ++ } ++ } ++ if [file exists "${gccpath}/libiberty/libiberty.a"] { ++ append flags "-L${gccpath}/libiberty " ++ } ++ append ld_library_path [gcc-set-multilib-library-path $ALGOL68_UNDER_TEST] ++ } ++ ++ set_ld_library_path_env_vars ++ ++ return "$flags" ++} ++ ++# ++# algol68_init -- called at the start of each subdir of tests ++# ++ ++proc algol68_init { args } { ++ global subdir ++ global algol68_initialized ++ global base_dir ++ global tmpdir ++ global libdir ++ global gluefile wrap_flags ++ global objdir srcdir ++ global ALWAYS_ALGOL68FLAGS ++ global TOOL_EXECUTABLE TOOL_OPTIONS ++ global ALGOL68_UNDER_TEST ++ global TESTING_IN_BUILD_TREE ++ global gcc_warning_prefix ++ global gcc_error_prefix ++ ++ # We set LC_ALL and LANG to C so that we get the same error messages as expected. ++ setenv LC_ALL C ++ setenv LANG C ++ ++ if ![info exists ALGOL68_UNDER_TEST] then { ++ if [info exists TOOL_EXECUTABLE] { ++ set ALGOL68_UNDER_TEST $TOOL_EXECUTABLE ++ } else { ++ if { [is_remote host] || ! [info exists TESTING_IN_BUILD_TREE] } { ++ set ALGOL68_UNDER_TEST [transform ga68] ++ } else { ++ set ALGOL68_UNDER_TEST [findfile $base_dir/../../ga68 "$base_dir/../../ga68 -B$base_dir/../../" [findfile $base_dir/ga68 "$base_dir/ga68 -B$base_dir/" [transform ga68]]] ++ } ++ } ++ } ++ ++ if ![is_remote host] { ++ if { [which $ALGOL68_UNDER_TEST] == 0 } then { ++ perror "ALGOL68_UNDER_TEST ($ALGOL68_UNDER_TEST) does not exist" ++ exit 1 ++ } ++ } ++ ++ if ![info exists tmpdir] { ++ set tmpdir "/tmp" ++ } ++ ++ if [info exists gluefile] { ++ unset gluefile ++ } ++ ++ set gcc_warning_prefix "warning:" ++ set gcc_error_prefix "(fatal )?error:" ++ ++ verbose "algol68 is initialized" 3 ++} ++ ++# ++# algol68_target_compile -- compile a source file ++# ++ ++proc algol68_target_compile { source dest type options } { ++ global tmpdir ++ global gluefile wrap_flags ++ global ALWAYS_ALGOL68FLAGS ++ global ALGOL68_UNDER_TEST ++ global individual_timeout ++ global TEST_ALWAYS_FLAGS ++ ++ # HACK: guard against infinite loops in the compiler ++ set individual_timeout 20 ++ ++ if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { ++ lappend options "libs=${gluefile}" ++ lappend options "ldflags=${wrap_flags}" ++ } ++ ++ set ALWAYS_ALGOL68FLAGS "" ++ ++ # TEST_ALWAYS_FLAGS are flags that should be passed to every ++ # compilation. They are passed first to allow individual ++ # tests to override them. ++ if [info exists TEST_ALWAYS_FLAGS] { ++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=$TEST_ALWAYS_FLAGS" ++ } ++ ++ if ![is_remote host] { ++ if [info exists TOOL_OPTIONS] { ++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=[algol68_include_flags [get_multilibs ${TOOL_OPTIONS}] ]" ++ lappend ALWAYS_ALGOL68FLAGS "ldflags=[algol68_link_flags [get_multilibs ${TOOL_OPTIONS}] ]" ++ } else { ++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=[algol68_include_flags [get_multilibs] ]" ++ lappend ALWAYS_ALGOL68FLAGS "ldflags=[algol68_link_flags [get_multilibs] ]" ++ } ++ } ++ ++ if [info exists TOOL_OPTIONS] { ++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=$TOOL_OPTIONS" ++ } ++ ++ verbose -log "ALWAYS_ALGOL68FLAGS set to $ALWAYS_ALGOL68FLAGS" ++ ++ lappend options "timeout=[timeout_value]" ++ lappend options "compiler=$ALGOL68_UNDER_TEST" ++ ++ set options [concat "$ALWAYS_ALGOL68FLAGS" $options] ++ set options [dg-additional-files-options $options $source $dest $type] ++ set ret [target_compile $source $dest $type $options] ++ unset individual_timeout ++ return $ret ++} +--- a/src/include/dwarf2.h ++++ b/src/include/dwarf2.h +@@ -409,6 +409,7 @@ enum dwarf_source_language + DW_LANG_Ruby = 0x0040, + DW_LANG_Move = 0x0041, + DW_LANG_Hylo = 0x0042, ++ DW_LANG_Algol68 = 0x0044, + + DW_LANG_lo_user = 0x8000, /* Implementation-defined range start. */ + DW_LANG_hi_user = 0xffff, /* Implementation-defined range end. */ +@@ -476,6 +477,7 @@ enum dwarf_source_language_name + DW_LNAME_Odin = 0x002a, + DW_LNAME_P4 = 0x002b, + DW_LNAME_Metal = 0x002c, ++ DW_LNAME_Algol68 = 0x002e, + + DW_LNAME_lo_user = 0x8000, /* Implementation-defined range start. */ + DW_LNAME_hi_user = 0xffff /* Implementation-defined range end. */ +--- /dev/null ++++ b/src/libga68/Makefile.am +@@ -0,0 +1,122 @@ ++# Makefile for libga68. ++# Copyright (C) 2025 Jose E. Marchesi. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++# ++# ++# if this file is changed then you need to run ++# ++# autoreconf2.69 ++ ++AUTOMAKE_OPTIONS = 1.8 foreign ++ACLOCAL_AMFLAGS = -I .. -I ../config ++# Multilib support. ++MAKEOVERRIDES= ++ ++gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd) ++ ++GCC_DIR = $(TOP_GCCDIR)/gcc ++A68_SRC = $(GCC_DIR)/algol68 ++ ++toolexeclibdir=@toolexeclibdir@ ++toolexecdir=@toolexecdir@ ++A68_FOR_TARGET=@A68_FOR_TARGET@ ++ ++extra_darwin_ldflags_libga68=@extra_darwin_ldflags_libga68@ ++ ++if ENABLE_DARWIN_AT_RPATH ++extra_darwin_ldflags_libga68 += -Wc,-nodefaultrpaths ++extra_darwin_ldflags_libga68 += -Wl,-rpath,@loader_path ++endif ++ ++A68_BUILDDIR := $(shell pwd) ++ ++# Work around what appears to be a GNU make bug handling MAKEFLAGS ++# values defined in terms of make variables, as is the case for CC and ++# friends when we are called from the top level Makefile. ++AM_MAKEFLAGS = \ ++ "GCC_DIR=$(GCC_DIR)" \ ++ "A68_SRC=$(A68_SRC)" \ ++ "AR_FLAGS=$(AR_FLAGS)" \ ++ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ ++ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ ++ "A68_FOR_TARGET=$(A68_FOR_TARGET)" \ ++ "CFLAGS=$(CFLAGS)" \ ++ "CXXFLAGS=$(CXXFLAGS)" \ ++ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ ++ "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ ++ "CFLAGS_LONGDOUBLE=$(CFLAGS_LONGDOUBLE)" \ ++ "EXPECT=$(EXPECT)" \ ++ "INSTALL=$(INSTALL)" \ ++ "INSTALL_DATA=$(INSTALL_DATA)" \ ++ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ ++ "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ ++ "LDFLAGS=$(LDFLAGS)" \ ++ "LIBCFLAGS=$(LIBCFLAGS)" \ ++ "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ ++ "MAKE=$(MAKE)" \ ++ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ ++ "PICFLAG=$(PICFLAG)" \ ++ "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ ++ "SHELL=$(SHELL)" \ ++ "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ ++ "exec_prefix=$(exec_prefix)" \ ++ "infodir=$(infodir)" \ ++ "libdir=$(libdir)" \ ++ "includedir=$(includedir)" \ ++ "prefix=$(prefix)" \ ++ "tooldir=$(tooldir)" \ ++ "gxx_include_dir=$(gxx_include_dir)" \ ++ "AR=$(AR)" \ ++ "AS=$(AS)" \ ++ "LD=$(LD)" \ ++ "RANLIB=$(RANLIB)" \ ++ "NM=$(NM)" \ ++ "NM_FOR_BUILD=$(NM_FOR_BUILD)" \ ++ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ ++ "DESTDIR=$(DESTDIR)" \ ++ "WERROR=$(WERROR)" \ ++ "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \ ++ "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ ++ "LIBTOOL=$(A68_BUILDDIR)/libtool" \ ++ "DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" ++ ++# Subdir rules rely on $(FLAGS_TO_PASS) ++FLAGS_TO_PASS = $(AM_MAKEFLAGS) ++ ++gcc_objdir = $(MULTIBUILDTOP)../../$(host_subdir)/gcc ++ ++toolexeclib_DATA = libga68.spec ++toolexeclib_LTLIBRARIES = libga68.la ++ ++libga68_la_SOURCES = libga68.c \ ++ ga68-unistr.c \ ++ ga68-posix.c \ ++ ga68-alloc.c \ ++ ga68-error.c \ ++ ga68-standenv.c \ ++ ga68.h ++libga68_la_LIBTOOLFLAGS = ++libga68_la_CFLAGS = $(LIBGA68_GCFLAGS) $(LIBGA68_BOEHM_GC_INCLUDES) ++libga68_la_LDFLAGS = -version-info $(libga68_VERSION) \ ++ $(extra_darwin_ldflags_libga68) ++libga68_la_DEPENDENCIES = libga68.spec ++libga68_la_LIBADD = $(LIBGA68_BOEHM_GC_LIBS) ++ ++# target overrides ++-include $(tmake_file) ++ ++include $(top_srcdir)/../multilib.am +--- /dev/null ++++ b/src/libga68/Makefile.in +@@ -0,0 +1,901 @@ ++# Makefile.in generated by automake 1.15.1 from Makefile.am. ++# @configure_input@ ++ ++# Copyright (C) 1994-2017 Free Software Foundation, Inc. ++ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++@SET_MAKE@ ++ ++# Makefile for libga68. ++# Copyright (C) 2025 Jose E. Marchesi. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++# ++# ++# if this file is changed then you need to run ++# ++# autoreconf2.69 ++ ++ ++VPATH = @srcdir@ ++am__is_gnu_make = { \ ++ if test -z '$(MAKELEVEL)'; then \ ++ false; \ ++ elif test -n '$(MAKE_HOST)'; then \ ++ true; \ ++ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ ++ true; \ ++ else \ ++ false; \ ++ fi; \ ++} ++am__make_running_with_option = \ ++ case $${target_option-} in \ ++ ?) ;; \ ++ *) echo "am__make_running_with_option: internal error: invalid" \ ++ "target option '$${target_option-}' specified" >&2; \ ++ exit 1;; \ ++ esac; \ ++ has_opt=no; \ ++ sane_makeflags=$$MAKEFLAGS; \ ++ if $(am__is_gnu_make); then \ ++ sane_makeflags=$$MFLAGS; \ ++ else \ ++ case $$MAKEFLAGS in \ ++ *\\[\ \ ]*) \ ++ bs=\\; \ ++ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ ++ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ ++ esac; \ ++ fi; \ ++ skip_next=no; \ ++ strip_trailopt () \ ++ { \ ++ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ ++ }; \ ++ for flg in $$sane_makeflags; do \ ++ test $$skip_next = yes && { skip_next=no; continue; }; \ ++ case $$flg in \ ++ *=*|--*) continue;; \ ++ -*I) strip_trailopt 'I'; skip_next=yes;; \ ++ -*I?*) strip_trailopt 'I';; \ ++ -*O) strip_trailopt 'O'; skip_next=yes;; \ ++ -*O?*) strip_trailopt 'O';; \ ++ -*l) strip_trailopt 'l'; skip_next=yes;; \ ++ -*l?*) strip_trailopt 'l';; \ ++ -[dEDm]) skip_next=yes;; \ ++ -[JT]) skip_next=yes;; \ ++ esac; \ ++ case $$flg in \ ++ *$$target_option*) has_opt=yes; break;; \ ++ esac; \ ++ done; \ ++ test $$has_opt = yes ++am__make_dryrun = (target_option=n; $(am__make_running_with_option)) ++am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) ++pkgdatadir = $(datadir)/@PACKAGE@ ++pkgincludedir = $(includedir)/@PACKAGE@ ++pkglibdir = $(libdir)/@PACKAGE@ ++pkglibexecdir = $(libexecdir)/@PACKAGE@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = @build@ ++host_triplet = @host@ ++target_triplet = @target@ ++@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -Wc,-nodefaultrpaths \ ++@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path ++subdir = . ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ ++ $(top_srcdir)/../config/depstand.m4 \ ++ $(top_srcdir)/../config/lead-dot.m4 \ ++ $(top_srcdir)/../config/multi.m4 \ ++ $(top_srcdir)/../config/no-executables.m4 \ ++ $(top_srcdir)/../config/override.m4 \ ++ $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ ++ $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ ++ $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ ++ $(am__configure_deps) ++am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ ++ configure.lineno config.status.lineno ++mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs ++CONFIG_HEADER = config.h ++CONFIG_CLEAN_FILES = libga68.spec ++CONFIG_CLEAN_VPATH_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; ++am__install_max = 40 ++am__nobase_strip_setup = \ ++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` ++am__nobase_strip = \ ++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" ++am__nobase_list = $(am__nobase_strip_setup); \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ ++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ ++ if (++n[$$2] == $(am__install_max)) \ ++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ ++ END { for (dir in files) print dir, files[dir] }' ++am__base_list = \ ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++am__uninstall_files_from_dir = { \ ++ test -z "$$files" \ ++ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ ++ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ ++ $(am__cd) "$$dir" && rm -f $$files; }; \ ++ } ++am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \ ++ "$(DESTDIR)$(toolexeclibdir)" ++LTLIBRARIES = $(toolexeclib_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++am_libga68_la_OBJECTS = libga68_la-libga68.lo \ ++ libga68_la-ga68-unistr.lo libga68_la-ga68-posix.lo \ ++ libga68_la-ga68-alloc.lo libga68_la-ga68-error.lo \ ++ libga68_la-ga68-standenv.lo ++libga68_la_OBJECTS = $(am_libga68_la_OBJECTS) ++AM_V_lt = $(am__v_lt_@AM_V@) ++am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) ++am__v_lt_0 = --silent ++am__v_lt_1 = ++libga68_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ ++ $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ ++ $(libga68_la_CFLAGS) $(CFLAGS) $(libga68_la_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++AM_V_P = $(am__v_P_@AM_V@) ++am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) ++am__v_P_0 = false ++am__v_P_1 = : ++AM_V_GEN = $(am__v_GEN_@AM_V@) ++am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) ++am__v_GEN_0 = @echo " GEN " $@; ++am__v_GEN_1 = ++AM_V_at = $(am__v_at_@AM_V@) ++am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) ++am__v_at_0 = @ ++am__v_at_1 = ++DEFAULT_INCLUDES = -I.@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/../depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ ++ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ ++ $(AM_CFLAGS) $(CFLAGS) ++AM_V_CC = $(am__v_CC_@AM_V@) ++am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) ++am__v_CC_0 = @echo " CC " $@; ++am__v_CC_1 = ++CCLD = $(CC) ++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++AM_V_CCLD = $(am__v_CCLD_@AM_V@) ++am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) ++am__v_CCLD_0 = @echo " CCLD " $@; ++am__v_CCLD_1 = ++SOURCES = $(libga68_la_SOURCES) ++am__can_run_installinfo = \ ++ case $$AM_UPDATE_INFO_DIR in \ ++ n|no|NO) false;; \ ++ *) (install-info --version) >/dev/null 2>&1;; \ ++ esac ++DATA = $(toolexeclib_DATA) ++am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ ++ $(LISP)config.h.in ++# Read a list of newline-separated strings from the standard input, ++# and print each of them once, without duplicates. Input order is ++# *not* preserved. ++am__uniquify_input = $(AWK) '\ ++ BEGIN { nonempty = 0; } \ ++ { items[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in items) print i; }; } \ ++' ++# Make sure the list of sources is unique. This is necessary because, ++# e.g., the same source file might be shared among _SOURCES variables ++# for different programs/libraries. ++am__define_uniq_tagged_files = \ ++ list='$(am__tagged_files)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | $(am__uniquify_input)` ++ETAGS = etags ++CTAGS = ctags ++CSCOPE = cscope ++AM_RECURSIVE_TARGETS = cscope ++ACLOCAL = @ACLOCAL@ ++AMTAR = @AMTAR@ ++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ ++AWK = @AWK@ ++CC = @CC@ ++CCAS = @CCAS@ ++CCASDEPMODE = @CCASDEPMODE@ ++CCASFLAGS = @CCASFLAGS@ ++CCDEPMODE = @CCDEPMODE@ ++CC_FOR_BUILD = @CC_FOR_BUILD@ ++CFLAGS = @CFLAGS@ ++CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ ++DEPDIR = @DEPDIR@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ ++EXEEXT = @EXEEXT@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ ++LDFLAGS = @LDFLAGS@ ++LIBGA68_BOEHM_GC_INCLUDES = @LIBGA68_BOEHM_GC_INCLUDES@ ++LIBGA68_BOEHM_GC_LIBS = @LIBGA68_BOEHM_GC_LIBS@ ++LIBGA68_GCFLAGS = @LIBGA68_GCFLAGS@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ ++LIBTOOL = @LIBTOOL@ ++LIPO = @LIPO@ ++LN_S = @LN_S@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAINT = @MAINT@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ ++OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ ++PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ ++RANLIB = @RANLIB@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++SPEC_LIBGA68_DEPS = @SPEC_LIBGA68_DEPS@ ++STRIP = @STRIP@ ++VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ++am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ ++am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_libsubdir = @build_libsubdir@ ++build_os = @build_os@ ++build_subdir = @build_subdir@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++enable_shared = @enable_shared@ ++enable_static = @enable_static@ ++exec_prefix = @exec_prefix@ ++extra_darwin_ldflags_libga68 = @extra_darwin_ldflags_libga68@ \ ++ $(am__append_1) ++get_gcc_base_ver = @get_gcc_base_ver@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_noncanonical = @host_noncanonical@ ++host_os = @host_os@ ++host_subdir = @host_subdir@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ ++install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++libga68_VERSION = @libga68_VERSION@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++multi_basedir = @multi_basedir@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++slibdir = @slibdir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target = @target@ ++target_alias = @target_alias@ ++target_cpu = @target_cpu@ ++target_noncanonical = @target_noncanonical@ ++target_os = @target_os@ ++target_subdir = @target_subdir@ ++target_vendor = @target_vendor@ ++toolexecdir = @toolexecdir@ ++toolexeclibdir = @toolexeclibdir@ ++top_build_prefix = @top_build_prefix@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ ++AUTOMAKE_OPTIONS = 1.8 foreign ++ACLOCAL_AMFLAGS = -I .. -I ../config ++# Multilib support. ++MAKEOVERRIDES = ++gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd) ++GCC_DIR = $(TOP_GCCDIR)/gcc ++A68_SRC = $(GCC_DIR)/algol68 ++A68_FOR_TARGET = @A68_FOR_TARGET@ ++A68_BUILDDIR := $(shell pwd) ++ ++# Work around what appears to be a GNU make bug handling MAKEFLAGS ++# values defined in terms of make variables, as is the case for CC and ++# friends when we are called from the top level Makefile. ++AM_MAKEFLAGS = \ ++ "GCC_DIR=$(GCC_DIR)" \ ++ "A68_SRC=$(A68_SRC)" \ ++ "AR_FLAGS=$(AR_FLAGS)" \ ++ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ ++ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ ++ "A68_FOR_TARGET=$(A68_FOR_TARGET)" \ ++ "CFLAGS=$(CFLAGS)" \ ++ "CXXFLAGS=$(CXXFLAGS)" \ ++ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ ++ "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ ++ "CFLAGS_LONGDOUBLE=$(CFLAGS_LONGDOUBLE)" \ ++ "EXPECT=$(EXPECT)" \ ++ "INSTALL=$(INSTALL)" \ ++ "INSTALL_DATA=$(INSTALL_DATA)" \ ++ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ ++ "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ ++ "LDFLAGS=$(LDFLAGS)" \ ++ "LIBCFLAGS=$(LIBCFLAGS)" \ ++ "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ ++ "MAKE=$(MAKE)" \ ++ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ ++ "PICFLAG=$(PICFLAG)" \ ++ "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ ++ "SHELL=$(SHELL)" \ ++ "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ ++ "exec_prefix=$(exec_prefix)" \ ++ "infodir=$(infodir)" \ ++ "libdir=$(libdir)" \ ++ "includedir=$(includedir)" \ ++ "prefix=$(prefix)" \ ++ "tooldir=$(tooldir)" \ ++ "gxx_include_dir=$(gxx_include_dir)" \ ++ "AR=$(AR)" \ ++ "AS=$(AS)" \ ++ "LD=$(LD)" \ ++ "RANLIB=$(RANLIB)" \ ++ "NM=$(NM)" \ ++ "NM_FOR_BUILD=$(NM_FOR_BUILD)" \ ++ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ ++ "DESTDIR=$(DESTDIR)" \ ++ "WERROR=$(WERROR)" \ ++ "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \ ++ "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ ++ "LIBTOOL=$(A68_BUILDDIR)/libtool" \ ++ "DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" ++ ++ ++# Subdir rules rely on $(FLAGS_TO_PASS) ++FLAGS_TO_PASS = $(AM_MAKEFLAGS) ++gcc_objdir = $(MULTIBUILDTOP)../../$(host_subdir)/gcc ++toolexeclib_DATA = libga68.spec ++toolexeclib_LTLIBRARIES = libga68.la ++libga68_la_SOURCES = libga68.c \ ++ ga68-unistr.c \ ++ ga68-posix.c \ ++ ga68-alloc.c \ ++ ga68-error.c \ ++ ga68-standenv.c \ ++ ga68.h ++ ++libga68_la_LIBTOOLFLAGS = ++libga68_la_CFLAGS = $(LIBGA68_GCFLAGS) $(LIBGA68_BOEHM_GC_INCLUDES) ++libga68_la_LDFLAGS = -version-info $(libga68_VERSION) \ ++ $(extra_darwin_ldflags_libga68) ++ ++libga68_la_DEPENDENCIES = libga68.spec ++libga68_la_LIBADD = $(LIBGA68_BOEHM_GC_LIBS) ++MULTISRCTOP = ++MULTIBUILDTOP = ++MULTIDIRS = ++MULTISUBDIR = ++MULTIDO = true ++MULTICLEAN = true ++all: config.h ++ $(MAKE) $(AM_MAKEFLAGS) all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++am--refresh: Makefile ++ @: ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ ++ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --foreign Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ echo ' $(SHELL) ./config.status'; \ ++ $(SHELL) ./config.status;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ ++ esac; ++$(top_srcdir)/../multilib.am $(am__empty): ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ $(SHELL) ./config.status --recheck ++ ++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ $(am__cd) $(srcdir) && $(AUTOCONF) ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ++ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) ++$(am__aclocal_m4_deps): ++ ++config.h: stamp-h1 ++ @test -f $@ || rm -f stamp-h1 ++ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 ++ ++stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status ++ @rm -f stamp-h1 ++ cd $(top_builddir) && $(SHELL) ./config.status config.h ++$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) ++ rm -f stamp-h1 ++ touch $@ ++ ++distclean-hdr: ++ -rm -f config.h stamp-h1 ++libga68.spec: $(top_builddir)/config.status $(srcdir)/libga68.spec.in ++ cd $(top_builddir) && $(SHELL) ./config.status $@ ++ ++install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES) ++ @$(NORMAL_INSTALL) ++ @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ ++ list2=; for p in $$list; do \ ++ if test -f $$p; then \ ++ list2="$$list2 $$p"; \ ++ else :; fi; \ ++ done; \ ++ test -z "$$list2" || { \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \ ++ } ++ ++uninstall-toolexeclibLTLIBRARIES: ++ @$(NORMAL_UNINSTALL) ++ @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ ++ for p in $$list; do \ ++ $(am__strip_dir) \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \ ++ done ++ ++clean-toolexeclibLTLIBRARIES: ++ -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES) ++ @list='$(toolexeclib_LTLIBRARIES)'; \ ++ locs=`for p in $$list; do echo $$p; done | \ ++ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ ++ sort -u`; \ ++ test -z "$$locs" || { \ ++ echo rm -f $${locs}; \ ++ rm -f $${locs}; \ ++ } ++ ++libga68.la: $(libga68_la_OBJECTS) $(libga68_la_DEPENDENCIES) $(EXTRA_libga68_la_DEPENDENCIES) ++ $(AM_V_CCLD)$(libga68_la_LINK) -rpath $(toolexeclibdir) $(libga68_la_OBJECTS) $(libga68_la_LIBADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-alloc.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-error.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-posix.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-standenv.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-unistr.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-libga68.Plo@am__quote@ ++ ++.c.o: ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< ++ ++.c.obj: ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ++ ++libga68_la-libga68.lo: libga68.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-libga68.lo -MD -MP -MF $(DEPDIR)/libga68_la-libga68.Tpo -c -o libga68_la-libga68.lo `test -f 'libga68.c' || echo '$(srcdir)/'`libga68.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-libga68.Tpo $(DEPDIR)/libga68_la-libga68.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libga68.c' object='libga68_la-libga68.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-libga68.lo `test -f 'libga68.c' || echo '$(srcdir)/'`libga68.c ++ ++libga68_la-ga68-unistr.lo: ga68-unistr.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-unistr.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-unistr.Tpo -c -o libga68_la-ga68-unistr.lo `test -f 'ga68-unistr.c' || echo '$(srcdir)/'`ga68-unistr.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-unistr.Tpo $(DEPDIR)/libga68_la-ga68-unistr.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-unistr.c' object='libga68_la-ga68-unistr.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-unistr.lo `test -f 'ga68-unistr.c' || echo '$(srcdir)/'`ga68-unistr.c ++ ++libga68_la-ga68-posix.lo: ga68-posix.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-posix.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-posix.Tpo -c -o libga68_la-ga68-posix.lo `test -f 'ga68-posix.c' || echo '$(srcdir)/'`ga68-posix.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-posix.Tpo $(DEPDIR)/libga68_la-ga68-posix.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-posix.c' object='libga68_la-ga68-posix.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-posix.lo `test -f 'ga68-posix.c' || echo '$(srcdir)/'`ga68-posix.c ++ ++libga68_la-ga68-alloc.lo: ga68-alloc.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-alloc.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-alloc.Tpo -c -o libga68_la-ga68-alloc.lo `test -f 'ga68-alloc.c' || echo '$(srcdir)/'`ga68-alloc.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-alloc.Tpo $(DEPDIR)/libga68_la-ga68-alloc.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-alloc.c' object='libga68_la-ga68-alloc.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-alloc.lo `test -f 'ga68-alloc.c' || echo '$(srcdir)/'`ga68-alloc.c ++ ++libga68_la-ga68-error.lo: ga68-error.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-error.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-error.Tpo -c -o libga68_la-ga68-error.lo `test -f 'ga68-error.c' || echo '$(srcdir)/'`ga68-error.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-error.Tpo $(DEPDIR)/libga68_la-ga68-error.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-error.c' object='libga68_la-ga68-error.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-error.lo `test -f 'ga68-error.c' || echo '$(srcdir)/'`ga68-error.c ++ ++libga68_la-ga68-standenv.lo: ga68-standenv.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-standenv.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-standenv.Tpo -c -o libga68_la-ga68-standenv.lo `test -f 'ga68-standenv.c' || echo '$(srcdir)/'`ga68-standenv.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-standenv.Tpo $(DEPDIR)/libga68_la-ga68-standenv.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-standenv.c' object='libga68_la-ga68-standenv.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-standenv.lo `test -f 'ga68-standenv.c' || echo '$(srcdir)/'`ga68-standenv.c ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++distclean-libtool: ++ -rm -f libtool config.lt ++install-toolexeclibDATA: $(toolexeclib_DATA) ++ @$(NORMAL_INSTALL) ++ @list='$(toolexeclib_DATA)'; test -n "$(toolexeclibdir)" || list=; \ ++ if test -n "$$list"; then \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \ ++ fi; \ ++ for p in $$list; do \ ++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ++ echo "$$d$$p"; \ ++ done | $(am__base_list) | \ ++ while read files; do \ ++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibdir)'"; \ ++ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibdir)" || exit $$?; \ ++ done ++ ++uninstall-toolexeclibDATA: ++ @$(NORMAL_UNINSTALL) ++ @list='$(toolexeclib_DATA)'; test -n "$(toolexeclibdir)" || list=; \ ++ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ ++ dir='$(DESTDIR)$(toolexeclibdir)'; $(am__uninstall_files_from_dir) ++ ++ID: $(am__tagged_files) ++ $(am__define_uniq_tagged_files); mkid -fID $$unique ++tags: tags-am ++TAGS: tags ++ ++tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) ++ set x; \ ++ here=`pwd`; \ ++ $(am__define_uniq_tagged_files); \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: ctags-am ++ ++CTAGS: ctags ++ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) ++ $(am__define_uniq_tagged_files); \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++cscope: cscope.files ++ test ! -s cscope.files \ ++ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) ++clean-cscope: ++ -rm -f cscope.files ++cscope.files: clean-cscope cscopelist ++cscopelist: cscopelist-am ++ ++cscopelist-am: $(am__tagged_files) ++ list='$(am__tagged_files)'; \ ++ case "$(srcdir)" in \ ++ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ ++ *) sdir=$(subdir)/$(srcdir) ;; \ ++ esac; \ ++ for i in $$list; do \ ++ if test -f "$$i"; then \ ++ echo "$(subdir)/$$i"; \ ++ else \ ++ echo "$$sdir/$$i"; \ ++ fi; \ ++ done >> $(top_builddir)/cscope.files ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files ++check-am: all-am ++check: check-am ++all-am: Makefile $(LTLIBRARIES) $(DATA) config.h all-local ++installdirs: ++ for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ if test -z '$(STRIP)'; then \ ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ install; \ ++ else \ ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ ++ fi ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-local \ ++ clean-toolexeclibLTLIBRARIES mostlyclean-am ++ ++distclean: distclean-am ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-hdr distclean-libtool distclean-local distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: install-exec-local install-toolexeclibDATA \ ++ install-toolexeclibLTLIBRARIES ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -rf $(top_srcdir)/autom4te.cache ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic \ ++ maintainer-clean-local ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool mostlyclean-local ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-toolexeclibDATA \ ++ uninstall-toolexeclibLTLIBRARIES ++ ++.MAKE: all install-am install-strip ++ ++.PHONY: CTAGS GTAGS TAGS all all-am all-local am--refresh check \ ++ check-am clean clean-cscope clean-generic clean-libtool \ ++ clean-local clean-toolexeclibLTLIBRARIES cscope cscopelist-am \ ++ ctags ctags-am distclean distclean-compile distclean-generic \ ++ distclean-hdr distclean-libtool distclean-local distclean-tags \ ++ dvi dvi-am html html-am info info-am install install-am \ ++ install-data install-data-am install-dvi install-dvi-am \ ++ install-exec install-exec-am install-exec-local install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip install-toolexeclibDATA \ ++ install-toolexeclibLTLIBRARIES installcheck installcheck-am \ ++ installdirs maintainer-clean maintainer-clean-generic \ ++ maintainer-clean-local mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ ++ pdf-am ps ps-am tags tags-am uninstall uninstall-am \ ++ uninstall-toolexeclibDATA uninstall-toolexeclibLTLIBRARIES ++ ++.PRECIOUS: Makefile ++ ++ ++# target overrides ++-include $(tmake_file) ++ ++# GNU Make needs to see an explicit $(MAKE) variable in the command it ++# runs to enable its job server during parallel builds. Hence the ++# comments below. ++all-multi: ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) ++install-multi: ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) ++mostlyclean-multi: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) ++clean-multi: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) ++distclean-multi: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) ++maintainer-clean-multi: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE) ++ ++.MAKE .PHONY: all-multi clean-multi distclean-multi install-am \ ++ install-multi maintainer-clean-multi mostlyclean-multi ++ ++install-exec-local: install-multi ++ ++all-local: all-multi ++mostlyclean-local: mostlyclean-multi ++clean-local: clean-multi ++distclean-local: distclean-multi ++maintainer-clean-local: maintainer-clean-multi ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +--- /dev/null ++++ b/src/libga68/README +@@ -0,0 +1,2 @@ ++This is the GNU Algol 68 run-time library. It provides the run-time ++components needed by programs compiled by the ga68 compiler. +--- /dev/null ++++ b/src/libga68/aclocal.m4 +@@ -0,0 +1,1200 @@ ++# generated automatically by aclocal 1.15.1 -*- Autoconf -*- ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++ ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) ++m4_ifndef([AC_AUTOCONF_VERSION], ++ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl ++m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, ++[m4_warning([this file was generated for autoconf 2.69. ++You have another version of autoconf. It may work, but is not guaranteed to. ++If you have problems, you may need to regenerate the build system entirely. ++To do so, use the procedure documented by the package, typically 'autoreconf'.])]) ++ ++# Copyright (C) 2002-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_AUTOMAKE_VERSION(VERSION) ++# ---------------------------- ++# Automake X.Y traces this macro to ensure aclocal.m4 has been ++# generated from the m4 files accompanying Automake X.Y. ++# (This private macro should not be called outside this file.) ++AC_DEFUN([AM_AUTOMAKE_VERSION], ++[am__api_version='1.15' ++dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to ++dnl require some minimum version. Point them to the right macro. ++m4_if([$1], [1.15.1], [], ++ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ++]) ++ ++# _AM_AUTOCONF_VERSION(VERSION) ++# ----------------------------- ++# aclocal traces this macro to find the Autoconf version. ++# This is a private macro too. Using m4_define simplifies ++# the logic in aclocal, which can simply ignore this definition. ++m4_define([_AM_AUTOCONF_VERSION], []) ++ ++# AM_SET_CURRENT_AUTOMAKE_VERSION ++# ------------------------------- ++# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. ++# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. ++AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], ++[AM_AUTOMAKE_VERSION([1.15.1])dnl ++m4_ifndef([AC_AUTOCONF_VERSION], ++ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl ++_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) ++ ++# Figure out how to run the assembler. -*- Autoconf -*- ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_PROG_AS ++# ---------- ++AC_DEFUN([AM_PROG_AS], ++[# By default we simply use the C compiler to build assembly code. ++AC_REQUIRE([AC_PROG_CC]) ++test "${CCAS+set}" = set || CCAS=$CC ++test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS ++AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) ++AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) ++_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl ++]) ++ ++# AM_AUX_DIR_EXPAND -*- Autoconf -*- ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets ++# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to ++# '$srcdir', '$srcdir/..', or '$srcdir/../..'. ++# ++# Of course, Automake must honor this variable whenever it calls a ++# tool from the auxiliary directory. The problem is that $srcdir (and ++# therefore $ac_aux_dir as well) can be either absolute or relative, ++# depending on how configure is run. This is pretty annoying, since ++# it makes $ac_aux_dir quite unusable in subdirectories: in the top ++# source directory, any form will work fine, but in subdirectories a ++# relative path needs to be adjusted first. ++# ++# $ac_aux_dir/missing ++# fails when called from a subdirectory if $ac_aux_dir is relative ++# $top_srcdir/$ac_aux_dir/missing ++# fails if $ac_aux_dir is absolute, ++# fails when called from a subdirectory in a VPATH build with ++# a relative $ac_aux_dir ++# ++# The reason of the latter failure is that $top_srcdir and $ac_aux_dir ++# are both prefixed by $srcdir. In an in-source build this is usually ++# harmless because $srcdir is '.', but things will broke when you ++# start a VPATH build or use an absolute $srcdir. ++# ++# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, ++# iff we strip the leading $srcdir from $ac_aux_dir. That would be: ++# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` ++# and then we would define $MISSING as ++# MISSING="\${SHELL} $am_aux_dir/missing" ++# This will work as long as MISSING is not called from configure, because ++# unfortunately $(top_srcdir) has no meaning in configure. ++# However there are other variables, like CC, which are often used in ++# configure, and could therefore not use this "fixed" $ac_aux_dir. ++# ++# Another solution, used here, is to always expand $ac_aux_dir to an ++# absolute PATH. The drawback is that using absolute paths prevent a ++# configured tree to be moved without reconfiguration. ++ ++AC_DEFUN([AM_AUX_DIR_EXPAND], ++[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl ++# Expand $ac_aux_dir to an absolute path. ++am_aux_dir=`cd "$ac_aux_dir" && pwd` ++]) ++ ++# AM_CONDITIONAL -*- Autoconf -*- ++ ++# Copyright (C) 1997-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_CONDITIONAL(NAME, SHELL-CONDITION) ++# ------------------------------------- ++# Define a conditional. ++AC_DEFUN([AM_CONDITIONAL], ++[AC_PREREQ([2.52])dnl ++ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], ++ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl ++AC_SUBST([$1_TRUE])dnl ++AC_SUBST([$1_FALSE])dnl ++_AM_SUBST_NOTMAKE([$1_TRUE])dnl ++_AM_SUBST_NOTMAKE([$1_FALSE])dnl ++m4_define([_AM_COND_VALUE_$1], [$2])dnl ++if $2; then ++ $1_TRUE= ++ $1_FALSE='#' ++else ++ $1_TRUE='#' ++ $1_FALSE= ++fi ++AC_CONFIG_COMMANDS_PRE( ++[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then ++ AC_MSG_ERROR([[conditional "$1" was never defined. ++Usually this means the macro was only invoked conditionally.]]) ++fi])]) ++ ++# Copyright (C) 1999-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++ ++# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be ++# written in clear, in which case automake, when reading aclocal.m4, ++# will think it sees a *use*, and therefore will trigger all it's ++# C support machinery. Also note that it means that autoscan, seeing ++# CC etc. in the Makefile, will ask for an AC_PROG_CC use... ++ ++ ++# _AM_DEPENDENCIES(NAME) ++# ---------------------- ++# See how the compiler implements dependency checking. ++# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". ++# We try a few techniques and use that to set a single cache variable. ++# ++# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was ++# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular ++# dependency, and given that the user is not expected to run this macro, ++# just rely on AC_PROG_CC. ++AC_DEFUN([_AM_DEPENDENCIES], ++[AC_REQUIRE([AM_SET_DEPDIR])dnl ++AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl ++AC_REQUIRE([AM_MAKE_INCLUDE])dnl ++AC_REQUIRE([AM_DEP_TRACK])dnl ++ ++m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], ++ [$1], [CXX], [depcc="$CXX" am_compiler_list=], ++ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], ++ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], ++ [$1], [UPC], [depcc="$UPC" am_compiler_list=], ++ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], ++ [depcc="$$1" am_compiler_list=]) ++ ++AC_CACHE_CHECK([dependency style of $depcc], ++ [am_cv_$1_dependencies_compiler_type], ++[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named 'D' -- because '-MD' means "put the output ++ # in D". ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub ++ ++ am_cv_$1_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` ++ fi ++ am__universal=false ++ m4_case([$1], [CC], ++ [case " $depcc " in #( ++ *\ -arch\ *\ -arch\ *) am__universal=true ;; ++ esac], ++ [CXX], ++ [case " $depcc " in #( ++ *\ -arch\ *\ -arch\ *) am__universal=true ;; ++ esac]) ++ ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with ++ # Solaris 10 /bin/sh. ++ echo '/* dummy */' > sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf ++ ++ # We check with '-c' and '-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle '-M -o', and we need to detect this. Also, some Intel ++ # versions had trouble with output in subdirs. ++ am__obj=sub/conftest.${OBJEXT-o} ++ am__minus_obj="-o $am__obj" ++ case $depmode in ++ gcc) ++ # This depmode causes a compiler race in universal mode. ++ test "$am__universal" = false || continue ++ ;; ++ nosideeffect) ++ # After this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested. ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi ++ ;; ++ msvc7 | msvc7msys | msvisualcpp | msvcmsys) ++ # This compiler won't grok '-c -o', but also, the minuso test has ++ # not run yet. These depmodes are late enough in the game, and ++ # so weak that their functioning should not be impacted. ++ am__obj=conftest.${OBJEXT-o} ++ am__minus_obj= ++ ;; ++ none) break ;; ++ esac ++ if depmode=$depmode \ ++ source=sub/conftest.c object=$am__obj \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_$1_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_$1_dependencies_compiler_type=none ++fi ++]) ++AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) ++AM_CONDITIONAL([am__fastdep$1], [ ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ++]) ++ ++ ++# AM_SET_DEPDIR ++# ------------- ++# Choose a directory name for dependency files. ++# This macro is AC_REQUIREd in _AM_DEPENDENCIES. ++AC_DEFUN([AM_SET_DEPDIR], ++[AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ++]) ++ ++ ++# AM_DEP_TRACK ++# ------------ ++AC_DEFUN([AM_DEP_TRACK], ++[AC_ARG_ENABLE([dependency-tracking], [dnl ++AS_HELP_STRING( ++ [--enable-dependency-tracking], ++ [do not reject slow dependency extractors]) ++AS_HELP_STRING( ++ [--disable-dependency-tracking], ++ [speeds up one-time build])]) ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' ++ am__nodep='_no' ++fi ++AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) ++AC_SUBST([AMDEPBACKSLASH])dnl ++_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ++AC_SUBST([am__nodep])dnl ++_AM_SUBST_NOTMAKE([am__nodep])dnl ++]) ++ ++# Generate code to set up dependency tracking. -*- Autoconf -*- ++ ++# Copyright (C) 1999-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++ ++# _AM_OUTPUT_DEPENDENCY_COMMANDS ++# ------------------------------ ++AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], ++[{ ++ # Older Autoconf quotes --file arguments for eval, but not when files ++ # are listed without --file. Let's play safe and only enable the eval ++ # if we detect the quoting. ++ case $CONFIG_FILES in ++ *\'*) eval set x "$CONFIG_FILES" ;; ++ *) set x $CONFIG_FILES ;; ++ esac ++ shift ++ for mf ++ do ++ # Strip MF so we end up with the name of the file. ++ mf=`echo "$mf" | sed -e 's/:.*$//'` ++ # Check whether this is an Automake generated Makefile or not. ++ # We used to match only the files named 'Makefile.in', but ++ # some people rename them; so instead we look at the file content. ++ # Grep'ing the first line is not enough: some people post-process ++ # each Makefile.in and add a new line on top of each file to say so. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then ++ dirpart=`AS_DIRNAME("$mf")` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running 'make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` ++ test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "$am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ ++ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`AS_DIRNAME(["$file"])` ++ AS_MKDIR_P([$dirpart/$fdir]) ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" ++ done ++ done ++} ++])# _AM_OUTPUT_DEPENDENCY_COMMANDS ++ ++ ++# AM_OUTPUT_DEPENDENCY_COMMANDS ++# ----------------------------- ++# This macro should only be invoked once -- use via AC_REQUIRE. ++# ++# This code is only required when automatic dependency tracking ++# is enabled. FIXME. This creates each '.P' file that we will ++# need in order to bootstrap the dependency handling code. ++AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], ++[AC_CONFIG_COMMANDS([depfiles], ++ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], ++ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ++]) ++ ++# Do all the work for Automake. -*- Autoconf -*- ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This macro actually does too much. Some checks are only needed if ++# your package does certain things. But this isn't really a big deal. ++ ++dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. ++m4_define([AC_PROG_CC], ++m4_defn([AC_PROG_CC]) ++[_AM_PROG_CC_C_O ++]) ++ ++# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) ++# AM_INIT_AUTOMAKE([OPTIONS]) ++# ----------------------------------------------- ++# The call with PACKAGE and VERSION arguments is the old style ++# call (pre autoconf-2.50), which is being phased out. PACKAGE ++# and VERSION should now be passed to AC_INIT and removed from ++# the call to AM_INIT_AUTOMAKE. ++# We support both call styles for the transition. After ++# the next Automake release, Autoconf can make the AC_INIT ++# arguments mandatory, and then we can depend on a new Autoconf ++# release and drop the old call support. ++AC_DEFUN([AM_INIT_AUTOMAKE], ++[AC_PREREQ([2.65])dnl ++dnl Autoconf wants to disallow AM_ names. We explicitly allow ++dnl the ones we care about. ++m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ++AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ++AC_REQUIRE([AC_PROG_INSTALL])dnl ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ++ fi ++fi ++ ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi ++fi ++AC_SUBST([CYGPATH_W]) ++ ++# Define the identity of the package. ++dnl Distinguish between old-style and new-style calls. ++m4_ifval([$2], ++[AC_DIAGNOSE([obsolete], ++ [$0: two- and three-arguments forms are deprecated.]) ++m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl ++ AC_SUBST([PACKAGE], [$1])dnl ++ AC_SUBST([VERSION], [$2])], ++[_AM_SET_OPTIONS([$1])dnl ++dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. ++m4_if( ++ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), ++ [ok:ok],, ++ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl ++ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl ++ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl ++ ++_AM_IF_OPTION([no-define],, ++[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) ++ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl ++ ++# Some tools Automake needs. ++AC_REQUIRE([AM_SANITY_CHECK])dnl ++AC_REQUIRE([AC_ARG_PROGRAM])dnl ++AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) ++AM_MISSING_PROG([AUTOCONF], [autoconf]) ++AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) ++AM_MISSING_PROG([AUTOHEADER], [autoheader]) ++AM_MISSING_PROG([MAKEINFO], [makeinfo]) ++AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ++AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl ++AC_REQUIRE([AC_PROG_MKDIR_P])dnl ++# For better backward compatibility. To be removed once Automake 1.9.x ++# dies out for good. For more background, see: ++# ++# ++AC_SUBST([mkdir_p], ['$(MKDIR_P)']) ++# We need awk for the "check" target (and possibly the TAP driver). The ++# system "awk" is bad on some platforms. ++AC_REQUIRE([AC_PROG_AWK])dnl ++AC_REQUIRE([AC_PROG_MAKE_SET])dnl ++AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], ++ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], ++ [_AM_PROG_TAR([v7])])]) ++_AM_IF_OPTION([no-dependencies],, ++[AC_PROVIDE_IFELSE([AC_PROG_CC], ++ [_AM_DEPENDENCIES([CC])], ++ [m4_define([AC_PROG_CC], ++ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [_AM_DEPENDENCIES([CXX])], ++ [m4_define([AC_PROG_CXX], ++ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_OBJC], ++ [_AM_DEPENDENCIES([OBJC])], ++ [m4_define([AC_PROG_OBJC], ++ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], ++ [_AM_DEPENDENCIES([OBJCXX])], ++ [m4_define([AC_PROG_OBJCXX], ++ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ++]) ++AC_REQUIRE([AM_SILENT_RULES])dnl ++dnl The testsuite driver may need to know about EXEEXT, so add the ++dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This ++dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. ++AC_CONFIG_COMMANDS_PRE(dnl ++[m4_provide_if([_AM_COMPILER_EXEEXT], ++ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ++ ++# POSIX will say in a future version that running "rm -f" with no argument ++# is OK; and we want to be able to make that assumption in our Makefile ++# recipes. So use an aggressive probe to check that the usage we want is ++# actually supported "in the wild" to an acceptable degree. ++# See automake bug#10828. ++# To make any issue more visible, cause the running configure to be aborted ++# by default if the 'rm' program in use doesn't match our expectations; the ++# user can still override this though. ++if rm -f && rm -fr && rm -rf; then : OK; else ++ cat >&2 <<'END' ++Oops! ++ ++Your 'rm' program seems unable to run without file operands specified ++on the command line, even when the '-f' option is present. This is contrary ++to the behaviour of most rm programs out there, and not conforming with ++the upcoming POSIX standard: ++ ++Please tell bug-automake@gnu.org about your system, including the value ++of your $PATH and any error possibly output before this message. This ++can help us improve future automake versions. ++ ++END ++ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then ++ echo 'Configuration will proceed anyway, since you have set the' >&2 ++ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 ++ echo >&2 ++ else ++ cat >&2 <<'END' ++Aborting the configuration process, to ensure you take notice of the issue. ++ ++You can download and install GNU coreutils to get an 'rm' implementation ++that behaves properly: . ++ ++If you want to complete the configuration process using your problematic ++'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM ++to "yes", and re-run configure. ++ ++END ++ AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) ++ fi ++fi ++dnl The trailing newline in this macro's definition is deliberate, for ++dnl backward compatibility and to allow trailing 'dnl'-style comments ++dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ++]) ++ ++dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not ++dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further ++dnl mangled by Autoconf and run in a shell conditional statement. ++m4_define([_AC_COMPILER_EXEEXT], ++m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) ++ ++# When config.status generates a header, we must update the stamp-h file. ++# This file resides in the same directory as the config header ++# that is generated. The stamp files are numbered to have different names. ++ ++# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the ++# loop where config.status creates the headers, so we can generate ++# our stamp files there. ++AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], ++[# Compute $1's index in $config_headers. ++_am_arg=$1 ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $_am_arg | $_am_arg:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; ++ esac ++done ++echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_PROG_INSTALL_SH ++# ------------------ ++# Define $install_sh. ++AC_DEFUN([AM_PROG_INSTALL_SH], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++if test x"${install_sh+set}" != xset; then ++ case $am_aux_dir in ++ *\ * | *\ *) ++ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; ++ *) ++ install_sh="\${SHELL} $am_aux_dir/install-sh" ++ esac ++fi ++AC_SUBST([install_sh])]) ++ ++# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- ++# From Jim Meyering ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_MAINTAINER_MODE([DEFAULT-MODE]) ++# ---------------------------------- ++# Control maintainer-specific portions of Makefiles. ++# Default is to disable them, unless 'enable' is passed literally. ++# For symmetry, 'disable' may be passed as well. Anyway, the user ++# can override the default with the --enable/--disable switch. ++AC_DEFUN([AM_MAINTAINER_MODE], ++[m4_case(m4_default([$1], [disable]), ++ [enable], [m4_define([am_maintainer_other], [disable])], ++ [disable], [m4_define([am_maintainer_other], [enable])], ++ [m4_define([am_maintainer_other], [enable]) ++ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) ++AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) ++ dnl maintainer-mode's default is 'disable' unless 'enable' is passed ++ AC_ARG_ENABLE([maintainer-mode], ++ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], ++ am_maintainer_other[ make rules and dependencies not useful ++ (and sometimes confusing) to the casual installer])], ++ [USE_MAINTAINER_MODE=$enableval], ++ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) ++ AC_MSG_RESULT([$USE_MAINTAINER_MODE]) ++ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) ++ MAINT=$MAINTAINER_MODE_TRUE ++ AC_SUBST([MAINT])dnl ++] ++) ++ ++# Check to see how 'make' treats includes. -*- Autoconf -*- ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_MAKE_INCLUDE() ++# ----------------- ++# Check to see how make treats includes. ++AC_DEFUN([AM_MAKE_INCLUDE], ++[am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo this is the am__doit target ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++AC_MSG_CHECKING([for style of include used by $am_make]) ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# Ignore all kinds of additional output from 'make'. ++case `$am_make -s -f confmf 2> /dev/null` in #( ++*the\ am__doit\ target*) ++ am__include=include ++ am__quote= ++ _am_result=GNU ++ ;; ++esac ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ case `$am_make -s -f confmf 2> /dev/null` in #( ++ *the\ am__doit\ target*) ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ ;; ++ esac ++fi ++AC_SUBST([am__include]) ++AC_SUBST([am__quote]) ++AC_MSG_RESULT([$_am_result]) ++rm -f confinc confmf ++]) ++ ++# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- ++ ++# Copyright (C) 1997-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_MISSING_PROG(NAME, PROGRAM) ++# ------------------------------ ++AC_DEFUN([AM_MISSING_PROG], ++[AC_REQUIRE([AM_MISSING_HAS_RUN]) ++$1=${$1-"${am_missing_run}$2"} ++AC_SUBST($1)]) ++ ++# AM_MISSING_HAS_RUN ++# ------------------ ++# Define MISSING if not defined so far and test if it is modern enough. ++# If it is, set am_missing_run to use it, otherwise, to nothing. ++AC_DEFUN([AM_MISSING_HAS_RUN], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++AC_REQUIRE_AUX_FILE([missing])dnl ++if test x"${MISSING+set}" != xset; then ++ case $am_aux_dir in ++ *\ * | *\ *) ++ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; ++ *) ++ MISSING="\${SHELL} $am_aux_dir/missing" ;; ++ esac ++fi ++# Use eval to expand $SHELL ++if eval "$MISSING --is-lightweight"; then ++ am_missing_run="$MISSING " ++else ++ am_missing_run= ++ AC_MSG_WARN(['missing' script is too old or missing]) ++fi ++]) ++ ++# Helper functions for option handling. -*- Autoconf -*- ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_MANGLE_OPTION(NAME) ++# ----------------------- ++AC_DEFUN([_AM_MANGLE_OPTION], ++[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) ++ ++# _AM_SET_OPTION(NAME) ++# -------------------- ++# Set option NAME. Presently that only means defining a flag for this option. ++AC_DEFUN([_AM_SET_OPTION], ++[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) ++ ++# _AM_SET_OPTIONS(OPTIONS) ++# ------------------------ ++# OPTIONS is a space-separated list of Automake options. ++AC_DEFUN([_AM_SET_OPTIONS], ++[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) ++ ++# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) ++# ------------------------------------------- ++# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. ++AC_DEFUN([_AM_IF_OPTION], ++[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) ++ ++# Copyright (C) 1999-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_PROG_CC_C_O ++# --------------- ++# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC ++# to automatically call this. ++AC_DEFUN([_AM_PROG_CC_C_O], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++AC_REQUIRE_AUX_FILE([compile])dnl ++AC_LANG_PUSH([C])dnl ++AC_CACHE_CHECK( ++ [whether $CC understands -c and -o together], ++ [am_cv_prog_cc_c_o], ++ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) ++ # Make sure it works both with $CC and with simple cc. ++ # Following AC_PROG_CC_C_O, we do the test twice because some ++ # compilers refuse to overwrite an existing .o file with -o, ++ # though they will create one. ++ am_cv_prog_cc_c_o=yes ++ for am_i in 1 2; do ++ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ ++ && test -f conftest2.$ac_objext; then ++ : OK ++ else ++ am_cv_prog_cc_c_o=no ++ break ++ fi ++ done ++ rm -f core conftest* ++ unset am_i]) ++if test "$am_cv_prog_cc_c_o" != yes; then ++ # Losing compiler, so override with the script. ++ # FIXME: It is wrong to rewrite CC. ++ # But if we don't then we get into trouble of one sort or another. ++ # A longer-term fix would be to have automake use am__CC in this case, ++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" ++ CC="$am_aux_dir/compile $CC" ++fi ++AC_LANG_POP([C])]) ++ ++# For backward compatibility. ++AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_RUN_LOG(COMMAND) ++# ------------------- ++# Run COMMAND, save the exit status in ac_status, and log it. ++# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) ++AC_DEFUN([AM_RUN_LOG], ++[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ++ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ (exit $ac_status); }]) ++ ++# Check to make sure that the build environment is sane. -*- Autoconf -*- ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_SANITY_CHECK ++# --------------- ++AC_DEFUN([AM_SANITY_CHECK], ++[AC_MSG_CHECKING([whether build environment is sane]) ++# Reject unsafe characters in $srcdir or the absolute working directory ++# name. Accept space and tab only in the latter. ++am_lf=' ++' ++case `pwd` in ++ *[[\\\"\#\$\&\'\`$am_lf]]*) ++ AC_MSG_ERROR([unsafe absolute working directory name]);; ++esac ++case $srcdir in ++ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) ++ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; ++esac ++ ++# Do 'set' in a subshell so we don't clobber the current shell's ++# arguments. Must try -L first in case configure is actually a ++# symlink; some systems play weird games with the mod time of symlinks ++# (eg FreeBSD returns the mod time of the symlink's containing ++# directory). ++if ( ++ am_has_slept=no ++ for am_try in 1 2; do ++ echo "timestamp, slept: $am_has_slept" > conftest.file ++ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` ++ if test "$[*]" = "X"; then ++ # -L didn't work. ++ set X `ls -t "$srcdir/configure" conftest.file` ++ fi ++ if test "$[*]" != "X $srcdir/configure conftest.file" \ ++ && test "$[*]" != "X conftest.file $srcdir/configure"; then ++ ++ # If neither matched, then we have a broken ls. This can happen ++ # if, for instance, CONFIG_SHELL is bash and it inherits a ++ # broken ls alias from the environment. This has actually ++ # happened. Such a system could not be considered "sane". ++ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken ++ alias in your environment]) ++ fi ++ if test "$[2]" = conftest.file || test $am_try -eq 2; then ++ break ++ fi ++ # Just in case. ++ sleep 1 ++ am_has_slept=yes ++ done ++ test "$[2]" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ AC_MSG_ERROR([newly created file is older than distributed files! ++Check your system clock]) ++fi ++AC_MSG_RESULT([yes]) ++# If we didn't sleep, we still need to ensure time stamps of config.status and ++# generated files are strictly newer. ++am_sleep_pid= ++if grep 'slept: no' conftest.file >/dev/null 2>&1; then ++ ( sleep 1 ) & ++ am_sleep_pid=$! ++fi ++AC_CONFIG_COMMANDS_PRE( ++ [AC_MSG_CHECKING([that generated files are newer than configure]) ++ if test -n "$am_sleep_pid"; then ++ # Hide warnings about reused PIDs. ++ wait $am_sleep_pid 2>/dev/null ++ fi ++ AC_MSG_RESULT([done])]) ++rm -f conftest.file ++]) ++ ++# Copyright (C) 2009-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_SILENT_RULES([DEFAULT]) ++# -------------------------- ++# Enable less verbose build rules; with the default set to DEFAULT ++# ("yes" being less verbose, "no" or empty being verbose). ++AC_DEFUN([AM_SILENT_RULES], ++[AC_ARG_ENABLE([silent-rules], [dnl ++AS_HELP_STRING( ++ [--enable-silent-rules], ++ [less verbose build output (undo: "make V=1")]) ++AS_HELP_STRING( ++ [--disable-silent-rules], ++ [verbose build output (undo: "make V=0")])dnl ++]) ++case $enable_silent_rules in @%:@ ((( ++ yes) AM_DEFAULT_VERBOSITY=0;; ++ no) AM_DEFAULT_VERBOSITY=1;; ++ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; ++esac ++dnl ++dnl A few 'make' implementations (e.g., NonStop OS and NextStep) ++dnl do not support nested variable expansions. ++dnl See automake bug#9928 and bug#10237. ++am_make=${MAKE-make} ++AC_CACHE_CHECK([whether $am_make supports nested variables], ++ [am_cv_make_support_nested_variables], ++ [if AS_ECHO([['TRUE=$(BAR$(V)) ++BAR0=false ++BAR1=true ++V=1 ++am__doit: ++ @$(TRUE) ++.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then ++ am_cv_make_support_nested_variables=yes ++else ++ am_cv_make_support_nested_variables=no ++fi]) ++if test $am_cv_make_support_nested_variables = yes; then ++ dnl Using '$V' instead of '$(V)' breaks IRIX make. ++ AM_V='$(V)' ++ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' ++else ++ AM_V=$AM_DEFAULT_VERBOSITY ++ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY ++fi ++AC_SUBST([AM_V])dnl ++AM_SUBST_NOTMAKE([AM_V])dnl ++AC_SUBST([AM_DEFAULT_V])dnl ++AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl ++AC_SUBST([AM_DEFAULT_VERBOSITY])dnl ++AM_BACKSLASH='\' ++AC_SUBST([AM_BACKSLASH])dnl ++_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ++]) ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_PROG_INSTALL_STRIP ++# --------------------- ++# One issue with vendor 'install' (even GNU) is that you can't ++# specify the program used to strip binaries. This is especially ++# annoying in cross-compiling environments, where the build's strip ++# is unlikely to handle the host's binaries. ++# Fortunately install-sh will honor a STRIPPROG variable, so we ++# always use install-sh in "make install-strip", and initialize ++# STRIPPROG with the value of the STRIP variable (set by the user). ++AC_DEFUN([AM_PROG_INSTALL_STRIP], ++[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ++# Installed binaries are usually stripped using 'strip' when the user ++# run "make install-strip". However 'strip' might not be the right ++# tool to use in cross-compilation environments, therefore Automake ++# will honor the 'STRIP' environment variable to overrule this program. ++dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. ++if test "$cross_compiling" != no; then ++ AC_CHECK_TOOL([STRIP], [strip], :) ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++AC_SUBST([INSTALL_STRIP_PROGRAM])]) ++ ++# Copyright (C) 2006-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_SUBST_NOTMAKE(VARIABLE) ++# --------------------------- ++# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. ++# This macro is traced by Automake. ++AC_DEFUN([_AM_SUBST_NOTMAKE]) ++ ++# AM_SUBST_NOTMAKE(VARIABLE) ++# -------------------------- ++# Public sister of _AM_SUBST_NOTMAKE. ++AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) ++ ++# Check how to create a tarball. -*- Autoconf -*- ++ ++# Copyright (C) 2004-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_PROG_TAR(FORMAT) ++# -------------------- ++# Check how to create a tarball in format FORMAT. ++# FORMAT should be one of 'v7', 'ustar', or 'pax'. ++# ++# Substitute a variable $(am__tar) that is a command ++# writing to stdout a FORMAT-tarball containing the directory ++# $tardir. ++# tardir=directory && $(am__tar) > result.tar ++# ++# Substitute a variable $(am__untar) that extract such ++# a tarball read from stdin. ++# $(am__untar) < result.tar ++# ++AC_DEFUN([_AM_PROG_TAR], ++[# Always define AMTAR for backward compatibility. Yes, it's still used ++# in the wild :-( We should find a proper way to deprecate it ... ++AC_SUBST([AMTAR], ['$${TAR-tar}']) ++ ++# We'll loop over all known methods to create a tar archive until one works. ++_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' ++ ++m4_if([$1], [v7], ++ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], ++ ++ [m4_case([$1], ++ [ustar], ++ [# The POSIX 1988 'ustar' format is defined with fixed-size fields. ++ # There is notably a 21 bits limit for the UID and the GID. In fact, ++ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 ++ # and bug#13588). ++ am_max_uid=2097151 # 2^21 - 1 ++ am_max_gid=$am_max_uid ++ # The $UID and $GID variables are not portable, so we need to resort ++ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls ++ # below are definitely unexpected, so allow the users to see them ++ # (that is, avoid stderr redirection). ++ am_uid=`id -u || echo unknown` ++ am_gid=`id -g || echo unknown` ++ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) ++ if test $am_uid -le $am_max_uid; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ _am_tools=none ++ fi ++ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) ++ if test $am_gid -le $am_max_gid; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ _am_tools=none ++ fi], ++ ++ [pax], ++ [], ++ ++ [m4_fatal([Unknown tar format])]) ++ ++ AC_MSG_CHECKING([how to create a $1 tar archive]) ++ ++ # Go ahead even if we have the value already cached. We do so because we ++ # need to set the values for the 'am__tar' and 'am__untar' variables. ++ _am_tools=${am_cv_prog_tar_$1-$_am_tools} ++ ++ for _am_tool in $_am_tools; do ++ case $_am_tool in ++ gnutar) ++ for _am_tar in tar gnutar gtar; do ++ AM_RUN_LOG([$_am_tar --version]) && break ++ done ++ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' ++ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' ++ am__untar="$_am_tar -xf -" ++ ;; ++ plaintar) ++ # Must skip GNU tar: if it does not support --format= it doesn't create ++ # ustar tarball either. ++ (tar --version) >/dev/null 2>&1 && continue ++ am__tar='tar chf - "$$tardir"' ++ am__tar_='tar chf - "$tardir"' ++ am__untar='tar xf -' ++ ;; ++ pax) ++ am__tar='pax -L -x $1 -w "$$tardir"' ++ am__tar_='pax -L -x $1 -w "$tardir"' ++ am__untar='pax -r' ++ ;; ++ cpio) ++ am__tar='find "$$tardir" -print | cpio -o -H $1 -L' ++ am__tar_='find "$tardir" -print | cpio -o -H $1 -L' ++ am__untar='cpio -i -H $1 -d' ++ ;; ++ none) ++ am__tar=false ++ am__tar_=false ++ am__untar=false ++ ;; ++ esac ++ ++ # If the value was cached, stop now. We just wanted to have am__tar ++ # and am__untar set. ++ test -n "${am_cv_prog_tar_$1}" && break ++ ++ # tar/untar a dummy directory, and stop if the command works. ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ echo GrepMe > conftest.dir/file ++ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) ++ rm -rf conftest.dir ++ if test -s conftest.tar; then ++ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break ++ fi ++ done ++ rm -rf conftest.dir ++ ++ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) ++ AC_MSG_RESULT([$am_cv_prog_tar_$1])]) ++ ++AC_SUBST([am__tar]) ++AC_SUBST([am__untar]) ++]) # _AM_PROG_TAR ++ ++m4_include([../config/acx.m4]) ++m4_include([../config/depstand.m4]) ++m4_include([../config/lead-dot.m4]) ++m4_include([../config/multi.m4]) ++m4_include([../config/no-executables.m4]) ++m4_include([../config/override.m4]) ++m4_include([../libtool.m4]) ++m4_include([../ltoptions.m4]) ++m4_include([../ltsugar.m4]) ++m4_include([../ltversion.m4]) ++m4_include([../lt~obsolete.m4]) +--- /dev/null ++++ b/src/libga68/config.h.in +@@ -0,0 +1,105 @@ ++/* config.h.in. Generated from configure.ac by autoheader. */ ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_DLFCN_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_INTTYPES_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_MEMORY_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STDINT_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STDLIB_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STRINGS_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STRING_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_STAT_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_TYPES_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_UNISTD_H ++ ++/* Define to the sub-directory in which libtool stores uninstalled libraries. ++ */ ++#undef LT_OBJDIR ++ ++/* Name of package */ ++#undef PACKAGE ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#undef PACKAGE_BUGREPORT ++ ++/* Define to the full name of this package. */ ++#undef PACKAGE_NAME ++ ++/* Define to the full name and version of this package. */ ++#undef PACKAGE_STRING ++ ++/* Define to the one symbol short name of this package. */ ++#undef PACKAGE_TARNAME ++ ++/* Define to the home page for this package. */ ++#undef PACKAGE_URL ++ ++/* Define to the version of this package. */ ++#undef PACKAGE_VERSION ++ ++/* Define to 1 if you have the ANSI C header files. */ ++#undef STDC_HEADERS ++ ++/* Enable extensions on AIX 3, Interix. */ ++#ifndef _ALL_SOURCE ++# undef _ALL_SOURCE ++#endif ++/* Enable GNU extensions on systems that have them. */ ++#ifndef _GNU_SOURCE ++# undef _GNU_SOURCE ++#endif ++/* Enable threading extensions on Solaris. */ ++#ifndef _POSIX_PTHREAD_SEMANTICS ++# undef _POSIX_PTHREAD_SEMANTICS ++#endif ++/* Enable extensions on HP NonStop. */ ++#ifndef _TANDEM_SOURCE ++# undef _TANDEM_SOURCE ++#endif ++/* Enable general extensions on Solaris. */ ++#ifndef __EXTENSIONS__ ++# undef __EXTENSIONS__ ++#endif ++ ++ ++/* Version number of package */ ++#undef VERSION ++ ++/* Enable large inode numbers on Mac OS X 10.5. */ ++#ifndef _DARWIN_USE_64_BIT_INODE ++# define _DARWIN_USE_64_BIT_INODE 1 ++#endif ++ ++/* Number of bits in a file offset, on hosts where this is settable. */ ++#undef _FILE_OFFSET_BITS ++ ++/* Define for large files, on AIX-style hosts. */ ++#undef _LARGE_FILES ++ ++/* Define to 1 if on MINIX. */ ++#undef _MINIX ++ ++/* Define to 2 if the system does not provide POSIX.1 features except with ++ this defined. */ ++#undef _POSIX_1_SOURCE ++ ++/* Define to 1 if you need to in order for `stat' and other things to work. */ ++#undef _POSIX_SOURCE +--- /dev/null ++++ b/src/libga68/configure +@@ -0,0 +1,15335 @@ ++#! /bin/sh ++# Guess values for system-dependent variables and create Makefiles. ++# Generated by GNU Autoconf 2.69 for package-unused version-unused. ++# ++# ++# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. ++# ++# ++# This configure script is free software; the Free Software Foundation ++# gives unlimited permission to copy, distribute and modify it. ++## -------------------- ## ++## M4sh Initialization. ## ++## -------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : ++ emulate sh ++ NULLCMD=: ++ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; ++esac ++fi ++ ++ ++as_nl=' ++' ++export as_nl ++# Printing a long string crashes Solaris 7 /usr/bin/printf. ++as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo ++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo ++# Prefer a ksh shell builtin over an external printf program on Solaris, ++# but without wasting forks for bash or zsh. ++if test -z "$BASH_VERSION$ZSH_VERSION" \ ++ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='print -r --' ++ as_echo_n='print -rn --' ++elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='printf %s\n' ++ as_echo_n='printf %s' ++else ++ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then ++ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' ++ as_echo_n='/usr/ucb/echo -n' ++ else ++ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' ++ as_echo_n_body='eval ++ arg=$1; ++ case $arg in #( ++ *"$as_nl"*) ++ expr "X$arg" : "X\\(.*\\)$as_nl"; ++ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; ++ esac; ++ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ++ ' ++ export as_echo_n_body ++ as_echo_n='sh -c $as_echo_n_body as_echo' ++ fi ++ export as_echo_body ++ as_echo='sh -c $as_echo_body as_echo' ++fi ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ PATH_SEPARATOR=: ++ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { ++ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || ++ PATH_SEPARATOR=';' ++ } ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++as_myself= ++case $0 in #(( ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ exit 1 ++fi ++ ++# Unset variables that we do not need and which cause bugs (e.g. in ++# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" ++# suppresses any "Segmentation fault" message there. '((' could ++# trigger a bug in pdksh 5.2.14. ++for as_var in BASH_ENV ENV MAIL MAILPATH ++do eval test x\${$as_var+set} = xset \ ++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++LC_ALL=C ++export LC_ALL ++LANGUAGE=C ++export LANGUAGE ++ ++# CDPATH. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++# Use a proper internal environment variable to ensure we don't fall ++ # into an infinite loop, continuously re-executing ourselves. ++ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then ++ _as_can_reexec=no; export _as_can_reexec; ++ # We cannot yet assume a decent shell, so we have to provide a ++# neutralization value for shells without unset; and this also ++# works around shells that cannot unset nonexistent variables. ++# Preserve -v and -x to the replacement shell. ++BASH_ENV=/dev/null ++ENV=/dev/null ++(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV ++case $- in # (((( ++ *v*x* | *x*v* ) as_opts=-vx ;; ++ *v* ) as_opts=-v ;; ++ *x* ) as_opts=-x ;; ++ * ) as_opts= ;; ++esac ++exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} ++# Admittedly, this is quite paranoid, since all the known shells bail ++# out after a failed `exec'. ++$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 ++as_fn_exit 255 ++ fi ++ # We don't want this to propagate to other subprocesses. ++ { _as_can_reexec=; unset _as_can_reexec;} ++if test "x$CONFIG_SHELL" = x; then ++ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : ++ emulate sh ++ NULLCMD=: ++ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '\${1+\"\$@\"}'='\"\$@\"' ++ setopt NO_GLOB_SUBST ++else ++ case \`(set -o) 2>/dev/null\` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; ++esac ++fi ++" ++ as_required="as_fn_return () { (exit \$1); } ++as_fn_success () { as_fn_return 0; } ++as_fn_failure () { as_fn_return 1; } ++as_fn_ret_success () { return 0; } ++as_fn_ret_failure () { return 1; } ++ ++exitcode=0 ++as_fn_success || { exitcode=1; echo as_fn_success failed.; } ++as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } ++as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } ++as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } ++if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : ++ ++else ++ exitcode=1; echo positional parameters were not saved. ++fi ++test x\$exitcode = x0 || exit 1 ++test -x / || exit 1" ++ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO ++ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO ++ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && ++ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 ++test \$(( 1 + 1 )) = 2 || exit 1 ++ ++ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ++ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ++ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ++ PATH=/empty FPATH=/empty; export PATH FPATH ++ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ ++ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" ++ if (eval "$as_required") 2>/dev/null; then : ++ as_have_required=yes ++else ++ as_have_required=no ++fi ++ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : ++ ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++as_found=false ++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ as_found=: ++ case $as_dir in #( ++ /*) ++ for as_base in sh bash ksh sh5; do ++ # Try only shells that exist, to save several forks. ++ as_shell=$as_dir/$as_base ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : ++ CONFIG_SHELL=$as_shell as_have_required=yes ++ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : ++ break 2 ++fi ++fi ++ done;; ++ esac ++ as_found=false ++done ++$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && ++ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : ++ CONFIG_SHELL=$SHELL as_have_required=yes ++fi; } ++IFS=$as_save_IFS ++ ++ ++ if test "x$CONFIG_SHELL" != x; then : ++ export CONFIG_SHELL ++ # We cannot yet assume a decent shell, so we have to provide a ++# neutralization value for shells without unset; and this also ++# works around shells that cannot unset nonexistent variables. ++# Preserve -v and -x to the replacement shell. ++BASH_ENV=/dev/null ++ENV=/dev/null ++(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV ++case $- in # (((( ++ *v*x* | *x*v* ) as_opts=-vx ;; ++ *v* ) as_opts=-v ;; ++ *x* ) as_opts=-x ;; ++ * ) as_opts= ;; ++esac ++exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} ++# Admittedly, this is quite paranoid, since all the known shells bail ++# out after a failed `exec'. ++$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 ++exit 255 ++fi ++ ++ if test x$as_have_required = xno; then : ++ $as_echo "$0: This script requires a shell more modern than all" ++ $as_echo "$0: the shells that I found on your system." ++ if test x${ZSH_VERSION+set} = xset ; then ++ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" ++ $as_echo "$0: be upgraded to zsh 4.3.4 or later." ++ else ++ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, ++$0: including any error possibly output before this ++$0: message. Then install a modern shell, or manually run ++$0: the script under such a shell if you do have one." ++ fi ++ exit 1 ++fi ++fi ++fi ++SHELL=${CONFIG_SHELL-/bin/sh} ++export SHELL ++# Unset more variables known to interfere with behavior of common tools. ++CLICOLOR_FORCE= GREP_OPTIONS= ++unset CLICOLOR_FORCE GREP_OPTIONS ++ ++## --------------------- ## ++## M4sh Shell Functions. ## ++## --------------------- ## ++# as_fn_unset VAR ++# --------------- ++# Portably unset VAR. ++as_fn_unset () ++{ ++ { eval $1=; unset $1;} ++} ++as_unset=as_fn_unset ++ ++# as_fn_set_status STATUS ++# ----------------------- ++# Set $? to STATUS, without forking. ++as_fn_set_status () ++{ ++ return $1 ++} # as_fn_set_status ++ ++# as_fn_exit STATUS ++# ----------------- ++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. ++as_fn_exit () ++{ ++ set +e ++ as_fn_set_status $1 ++ exit $1 ++} # as_fn_exit ++ ++# as_fn_mkdir_p ++# ------------- ++# Create "$as_dir" as a directory, including parents if necessary. ++as_fn_mkdir_p () ++{ ++ ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || eval $as_mkdir_p || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" ++ ++ ++} # as_fn_mkdir_p ++ ++# as_fn_executable_p FILE ++# ----------------------- ++# Test if FILE is an executable regular file. ++as_fn_executable_p () ++{ ++ test -f "$1" && test -x "$1" ++} # as_fn_executable_p ++# as_fn_append VAR VALUE ++# ---------------------- ++# Append the text in VALUE to the end of the definition contained in VAR. Take ++# advantage of any shell optimizations that allow amortized linear growth over ++# repeated appends, instead of the typical quadratic growth present in naive ++# implementations. ++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : ++ eval 'as_fn_append () ++ { ++ eval $1+=\$2 ++ }' ++else ++ as_fn_append () ++ { ++ eval $1=\$$1\$2 ++ } ++fi # as_fn_append ++ ++# as_fn_arith ARG... ++# ------------------ ++# Perform arithmetic evaluation on the ARGs, and store the result in the ++# global $as_val. Take advantage of shells that can avoid forks. The arguments ++# must be portable across $(()) and expr. ++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : ++ eval 'as_fn_arith () ++ { ++ as_val=$(( $* )) ++ }' ++else ++ as_fn_arith () ++ { ++ as_val=`expr "$@" || test $? -eq 1` ++ } ++fi # as_fn_arith ++ ++ ++# as_fn_error STATUS ERROR [LINENO LOG_FD] ++# ---------------------------------------- ++# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are ++# provided, also output the error to LOG_FD, referencing LINENO. Then exit the ++# script with STATUS, using 1 if that was 0. ++as_fn_error () ++{ ++ as_status=$1; test $as_status -eq 0 && as_status=1 ++ if test "$4"; then ++ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 ++ fi ++ $as_echo "$as_me: error: $2" >&2 ++ as_fn_exit $as_status ++} # as_fn_error ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++ ++ as_lineno_1=$LINENO as_lineno_1a=$LINENO ++ as_lineno_2=$LINENO as_lineno_2a=$LINENO ++ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && ++ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { ++ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } ++ ++ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have ++ # already done that, so ensure we don't try to do so again and fall ++ # in an infinite loop. This has already happened in practice. ++ _as_can_reexec=no; export _as_can_reexec ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in #((((( ++-n*) ++ case `echo 'xy\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ xy) ECHO_C='\c';; ++ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ++ ECHO_T=' ';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir 2>/dev/null ++fi ++if (echo >conf$$.file) 2>/dev/null; then ++ if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -pR'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -pR' ++ elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++ else ++ as_ln_s='cp -pR' ++ fi ++else ++ as_ln_s='cp -pR' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p='mkdir -p "$as_dir"' ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++as_test_x='test -x' ++as_executable_p=as_fn_executable_p ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++SHELL=${CONFIG_SHELL-/bin/sh} ++ ++ ++test -n "$DJDIR" || exec 7<&0 &1 ++ ++# Name of the host. ++# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, ++# so uname gets run too. ++ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` ++ ++# ++# Initializations. ++# ++ac_default_prefix=/usr/local ++ac_clean_files= ++ac_config_libobj_dir=. ++LIBOBJS= ++cross_compiling=no ++subdirs= ++MFLAGS= ++MAKEFLAGS= ++ ++# Identity of this package. ++PACKAGE_NAME='package-unused' ++PACKAGE_TARNAME='libga68' ++PACKAGE_VERSION='version-unused' ++PACKAGE_STRING='package-unused version-unused' ++PACKAGE_BUGREPORT='' ++PACKAGE_URL='' ++ ++ac_unique_file="Makefile.am" ++# Factoring default headers for most tests. ++ac_includes_default="\ ++#include ++#ifdef HAVE_SYS_TYPES_H ++# include ++#endif ++#ifdef HAVE_SYS_STAT_H ++# include ++#endif ++#ifdef STDC_HEADERS ++# include ++# include ++#else ++# ifdef HAVE_STDLIB_H ++# include ++# endif ++#endif ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++# include ++# endif ++# include ++#endif ++#ifdef HAVE_STRINGS_H ++# include ++#endif ++#ifdef HAVE_INTTYPES_H ++# include ++#endif ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H ++# include ++#endif" ++ ++ac_unique_file="Makefile.am" ++ac_subst_vars='am__EXEEXT_FALSE ++am__EXEEXT_TRUE ++LTLIBOBJS ++LIBOBJS ++LIBGA68_BOEHM_GC_LIBS ++LIBGA68_BOEHM_GC_INCLUDES ++LIBGA68_GCFLAGS ++extra_darwin_ldflags_libga68 ++libga68_VERSION ++SPEC_LIBGA68_DEPS ++get_gcc_base_ver ++CC_FOR_BUILD ++enable_static ++enable_shared ++ENABLE_DARWIN_AT_RPATH_FALSE ++ENABLE_DARWIN_AT_RPATH_TRUE ++OTOOL64 ++OTOOL ++LIPO ++NMEDIT ++DSYMUTIL ++OBJDUMP ++LN_S ++ac_ct_DUMPBIN ++DUMPBIN ++LD ++FGREP ++SED ++LIBTOOL ++RANLIB ++NM ++AR ++am__fastdepCCAS_FALSE ++am__fastdepCCAS_TRUE ++CCASDEPMODE ++CCASFLAGS ++CCAS ++MAINT ++MAINTAINER_MODE_FALSE ++MAINTAINER_MODE_TRUE ++toolexeclibdir ++toolexecdir ++slibdir ++AM_BACKSLASH ++AM_DEFAULT_VERBOSITY ++AM_DEFAULT_V ++AM_V ++am__fastdepCC_FALSE ++am__fastdepCC_TRUE ++CCDEPMODE ++am__nodep ++AMDEPBACKSLASH ++AMDEP_FALSE ++AMDEP_TRUE ++am__quote ++am__include ++DEPDIR ++am__untar ++am__tar ++AMTAR ++am__leading_dot ++SET_MAKE ++AWK ++mkdir_p ++MKDIR_P ++INSTALL_STRIP_PROGRAM ++STRIP ++install_sh ++MAKEINFO ++AUTOHEADER ++AUTOMAKE ++AUTOCONF ++ACLOCAL ++VERSION ++PACKAGE ++CYGPATH_W ++am__isrc ++INSTALL_DATA ++INSTALL_SCRIPT ++INSTALL_PROGRAM ++target_subdir ++host_subdir ++build_subdir ++build_libsubdir ++target_noncanonical ++host_noncanonical ++target_os ++target_vendor ++target_cpu ++target ++host_os ++host_vendor ++host_cpu ++host ++build_os ++build_vendor ++build_cpu ++build ++EGREP ++GREP ++CPP ++OBJEXT ++EXEEXT ++ac_ct_CC ++CPPFLAGS ++LDFLAGS ++CFLAGS ++CC ++multi_basedir ++target_alias ++host_alias ++build_alias ++LIBS ++ECHO_T ++ECHO_N ++ECHO_C ++DEFS ++mandir ++localedir ++libdir ++psdir ++pdfdir ++dvidir ++htmldir ++infodir ++docdir ++oldincludedir ++includedir ++localstatedir ++sharedstatedir ++sysconfdir ++datadir ++datarootdir ++libexecdir ++sbindir ++bindir ++program_transform_name ++prefix ++exec_prefix ++PACKAGE_URL ++PACKAGE_BUGREPORT ++PACKAGE_STRING ++PACKAGE_VERSION ++PACKAGE_TARNAME ++PACKAGE_NAME ++PATH_SEPARATOR ++SHELL' ++ac_subst_files='' ++ac_user_opts=' ++enable_option_checking ++enable_multilib ++with_build_libsubdir ++enable_dependency_tracking ++enable_silent_rules ++enable_largefile ++with_cross_host ++enable_version_specific_runtime_libs ++with_slibdir ++enable_maintainer_mode ++enable_shared ++enable_static ++with_pic ++enable_fast_install ++with_gnu_ld ++enable_libtool_lock ++enable_darwin_at_rpath ++with_gcc_major_version_only ++enable_algol68_gc ++with_target_bdw_gc ++with_target_bdw_gc_include ++with_target_bdw_gc_lib ++' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CPP' ++ ++ ++# Initialize some variables set by options. ++ac_init_help= ++ac_init_version=false ++ac_unrecognized_opts= ++ac_unrecognized_sep= ++# The variables have the same names as the options, with ++# dashes changed to underlines. ++cache_file=/dev/null ++exec_prefix=NONE ++no_create= ++no_recursion= ++prefix=NONE ++program_prefix=NONE ++program_suffix=NONE ++program_transform_name=s,x,x, ++silent= ++site= ++srcdir= ++verbose= ++x_includes=NONE ++x_libraries=NONE ++ ++# Installation directory options. ++# These are left unexpanded so users can "make install exec_prefix=/foo" ++# and all the variables that are supposed to be based on exec_prefix ++# by default will actually change. ++# Use braces instead of parens because sh, perl, etc. also accept them. ++# (The list follows the same order as the GNU Coding Standards.) ++bindir='${exec_prefix}/bin' ++sbindir='${exec_prefix}/sbin' ++libexecdir='${exec_prefix}/libexec' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' ++sysconfdir='${prefix}/etc' ++sharedstatedir='${prefix}/com' ++localstatedir='${prefix}/var' ++includedir='${prefix}/include' ++oldincludedir='/usr/include' ++docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' ++infodir='${datarootdir}/info' ++htmldir='${docdir}' ++dvidir='${docdir}' ++pdfdir='${docdir}' ++psdir='${docdir}' ++libdir='${exec_prefix}/lib' ++localedir='${datarootdir}/locale' ++mandir='${datarootdir}/man' ++ ++ac_prev= ++ac_dashdash= ++for ac_option ++do ++ # If the previous option needs an argument, assign it. ++ if test -n "$ac_prev"; then ++ eval $ac_prev=\$ac_option ++ ac_prev= ++ continue ++ fi ++ ++ case $ac_option in ++ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *=) ac_optarg= ;; ++ *) ac_optarg=yes ;; ++ esac ++ ++ # Accept the important Cygnus configure options, so we can diagnose typos. ++ ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; ++ ++ -bindir | --bindir | --bindi | --bind | --bin | --bi) ++ ac_prev=bindir ;; ++ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) ++ bindir=$ac_optarg ;; ++ ++ -build | --build | --buil | --bui | --bu) ++ ac_prev=build_alias ;; ++ -build=* | --build=* | --buil=* | --bui=* | --bu=*) ++ build_alias=$ac_optarg ;; ++ ++ -cache-file | --cache-file | --cache-fil | --cache-fi \ ++ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ++ ac_prev=cache_file ;; ++ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ ++ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) ++ cache_file=$ac_optarg ;; ++ ++ --config-cache | -C) ++ cache_file=config.cache ;; ++ ++ -datadir | --datadir | --datadi | --datad) ++ ac_prev=datadir ;; ++ -datadir=* | --datadir=* | --datadi=* | --datad=*) ++ datadir=$ac_optarg ;; ++ ++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ ++ | --dataroo | --dataro | --datar) ++ ac_prev=datarootdir ;; ++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ ++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) ++ datarootdir=$ac_optarg ;; ++ ++ -disable-* | --disable-*) ++ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && ++ as_fn_error $? "invalid feature name: $ac_useropt" ++ ac_useropt_orig=$ac_useropt ++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ case $ac_user_opts in ++ *" ++"enable_$ac_useropt" ++"*) ;; ++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ++ ac_unrecognized_sep=', ';; ++ esac ++ eval enable_$ac_useropt=no ;; ++ ++ -docdir | --docdir | --docdi | --doc | --do) ++ ac_prev=docdir ;; ++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) ++ docdir=$ac_optarg ;; ++ ++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ++ ac_prev=dvidir ;; ++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) ++ dvidir=$ac_optarg ;; ++ ++ -enable-* | --enable-*) ++ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && ++ as_fn_error $? "invalid feature name: $ac_useropt" ++ ac_useropt_orig=$ac_useropt ++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ case $ac_user_opts in ++ *" ++"enable_$ac_useropt" ++"*) ;; ++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ++ ac_unrecognized_sep=', ';; ++ esac ++ eval enable_$ac_useropt=\$ac_optarg ;; ++ ++ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ ++ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ ++ | --exec | --exe | --ex) ++ ac_prev=exec_prefix ;; ++ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ ++ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ ++ | --exec=* | --exe=* | --ex=*) ++ exec_prefix=$ac_optarg ;; ++ ++ -gas | --gas | --ga | --g) ++ # Obsolete; use --with-gas. ++ with_gas=yes ;; ++ ++ -help | --help | --hel | --he | -h) ++ ac_init_help=long ;; ++ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ++ ac_init_help=recursive ;; ++ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ++ ac_init_help=short ;; ++ ++ -host | --host | --hos | --ho) ++ ac_prev=host_alias ;; ++ -host=* | --host=* | --hos=* | --ho=*) ++ host_alias=$ac_optarg ;; ++ ++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ++ ac_prev=htmldir ;; ++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ ++ | --ht=*) ++ htmldir=$ac_optarg ;; ++ ++ -includedir | --includedir | --includedi | --included | --include \ ++ | --includ | --inclu | --incl | --inc) ++ ac_prev=includedir ;; ++ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ ++ | --includ=* | --inclu=* | --incl=* | --inc=*) ++ includedir=$ac_optarg ;; ++ ++ -infodir | --infodir | --infodi | --infod | --info | --inf) ++ ac_prev=infodir ;; ++ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) ++ infodir=$ac_optarg ;; ++ ++ -libdir | --libdir | --libdi | --libd) ++ ac_prev=libdir ;; ++ -libdir=* | --libdir=* | --libdi=* | --libd=*) ++ libdir=$ac_optarg ;; ++ ++ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ ++ | --libexe | --libex | --libe) ++ ac_prev=libexecdir ;; ++ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ ++ | --libexe=* | --libex=* | --libe=*) ++ libexecdir=$ac_optarg ;; ++ ++ -localedir | --localedir | --localedi | --localed | --locale) ++ ac_prev=localedir ;; ++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) ++ localedir=$ac_optarg ;; ++ ++ -localstatedir | --localstatedir | --localstatedi | --localstated \ ++ | --localstate | --localstat | --localsta | --localst | --locals) ++ ac_prev=localstatedir ;; ++ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) ++ localstatedir=$ac_optarg ;; ++ ++ -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ++ ac_prev=mandir ;; ++ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) ++ mandir=$ac_optarg ;; ++ ++ -nfp | --nfp | --nf) ++ # Obsolete; use --without-fp. ++ with_fp=no ;; ++ ++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \ ++ | --no-cr | --no-c | -n) ++ no_create=yes ;; ++ ++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \ ++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ++ no_recursion=yes ;; ++ ++ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ ++ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ ++ | --oldin | --oldi | --old | --ol | --o) ++ ac_prev=oldincludedir ;; ++ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ ++ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ ++ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) ++ oldincludedir=$ac_optarg ;; ++ ++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ++ ac_prev=prefix ;; ++ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ++ prefix=$ac_optarg ;; ++ ++ -program-prefix | --program-prefix | --program-prefi | --program-pref \ ++ | --program-pre | --program-pr | --program-p) ++ ac_prev=program_prefix ;; ++ -program-prefix=* | --program-prefix=* | --program-prefi=* \ ++ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) ++ program_prefix=$ac_optarg ;; ++ ++ -program-suffix | --program-suffix | --program-suffi | --program-suff \ ++ | --program-suf | --program-su | --program-s) ++ ac_prev=program_suffix ;; ++ -program-suffix=* | --program-suffix=* | --program-suffi=* \ ++ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) ++ program_suffix=$ac_optarg ;; ++ ++ -program-transform-name | --program-transform-name \ ++ | --program-transform-nam | --program-transform-na \ ++ | --program-transform-n | --program-transform- \ ++ | --program-transform | --program-transfor \ ++ | --program-transfo | --program-transf \ ++ | --program-trans | --program-tran \ ++ | --progr-tra | --program-tr | --program-t) ++ ac_prev=program_transform_name ;; ++ -program-transform-name=* | --program-transform-name=* \ ++ | --program-transform-nam=* | --program-transform-na=* \ ++ | --program-transform-n=* | --program-transform-=* \ ++ | --program-transform=* | --program-transfor=* \ ++ | --program-transfo=* | --program-transf=* \ ++ | --program-trans=* | --program-tran=* \ ++ | --progr-tra=* | --program-tr=* | --program-t=*) ++ program_transform_name=$ac_optarg ;; ++ ++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ++ ac_prev=pdfdir ;; ++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) ++ pdfdir=$ac_optarg ;; ++ ++ -psdir | --psdir | --psdi | --psd | --ps) ++ ac_prev=psdir ;; ++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) ++ psdir=$ac_optarg ;; ++ ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ silent=yes ;; ++ ++ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ++ ac_prev=sbindir ;; ++ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ ++ | --sbi=* | --sb=*) ++ sbindir=$ac_optarg ;; ++ ++ -sharedstatedir | --sharedstatedir | --sharedstatedi \ ++ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ ++ | --sharedst | --shareds | --shared | --share | --shar \ ++ | --sha | --sh) ++ ac_prev=sharedstatedir ;; ++ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ ++ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ ++ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ ++ | --sha=* | --sh=*) ++ sharedstatedir=$ac_optarg ;; ++ ++ -site | --site | --sit) ++ ac_prev=site ;; ++ -site=* | --site=* | --sit=*) ++ site=$ac_optarg ;; ++ ++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ++ ac_prev=srcdir ;; ++ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ++ srcdir=$ac_optarg ;; ++ ++ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ ++ | --syscon | --sysco | --sysc | --sys | --sy) ++ ac_prev=sysconfdir ;; ++ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ ++ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) ++ sysconfdir=$ac_optarg ;; ++ ++ -target | --target | --targe | --targ | --tar | --ta | --t) ++ ac_prev=target_alias ;; ++ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) ++ target_alias=$ac_optarg ;; ++ ++ -v | -verbose | --verbose | --verbos | --verbo | --verb) ++ verbose=yes ;; ++ ++ -version | --version | --versio | --versi | --vers | -V) ++ ac_init_version=: ;; ++ ++ -with-* | --with-*) ++ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && ++ as_fn_error $? "invalid package name: $ac_useropt" ++ ac_useropt_orig=$ac_useropt ++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ case $ac_user_opts in ++ *" ++"with_$ac_useropt" ++"*) ;; ++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ++ ac_unrecognized_sep=', ';; ++ esac ++ eval with_$ac_useropt=\$ac_optarg ;; ++ ++ -without-* | --without-*) ++ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && ++ as_fn_error $? "invalid package name: $ac_useropt" ++ ac_useropt_orig=$ac_useropt ++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ case $ac_user_opts in ++ *" ++"with_$ac_useropt" ++"*) ;; ++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ++ ac_unrecognized_sep=', ';; ++ esac ++ eval with_$ac_useropt=no ;; ++ ++ --x) ++ # Obsolete; use --with-x. ++ with_x=yes ;; ++ ++ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ ++ | --x-incl | --x-inc | --x-in | --x-i) ++ ac_prev=x_includes ;; ++ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ ++ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) ++ x_includes=$ac_optarg ;; ++ ++ -x-libraries | --x-libraries | --x-librarie | --x-librari \ ++ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ++ ac_prev=x_libraries ;; ++ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ ++ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) ++ x_libraries=$ac_optarg ;; ++ ++ -*) as_fn_error $? "unrecognized option: \`$ac_option' ++Try \`$0 --help' for more information" ++ ;; ++ ++ *=*) ++ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` ++ # Reject names that are not valid shell variable names. ++ case $ac_envvar in #( ++ '' | [0-9]* | *[!_$as_cr_alnum]* ) ++ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; ++ esac ++ eval $ac_envvar=\$ac_optarg ++ export $ac_envvar ;; ++ ++ *) ++ # FIXME: should be removed in autoconf 3.0. ++ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 ++ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 ++ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ++ ;; ++ ++ esac ++done ++ ++if test -n "$ac_prev"; then ++ ac_option=--`echo $ac_prev | sed 's/_/-/g'` ++ as_fn_error $? "missing argument to $ac_option" ++fi ++ ++if test -n "$ac_unrecognized_opts"; then ++ case $enable_option_checking in ++ no) ;; ++ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; ++ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; ++ esac ++fi ++ ++# Check all directory arguments for consistency. ++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ ++ datadir sysconfdir sharedstatedir localstatedir includedir \ ++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ ++ libdir localedir mandir ++do ++ eval ac_val=\$$ac_var ++ # Remove trailing slashes. ++ case $ac_val in ++ */ ) ++ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` ++ eval $ac_var=\$ac_val;; ++ esac ++ # Be sure to have absolute directory names. ++ case $ac_val in ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; ++ esac ++ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" ++done ++ ++# There might be people who depend on the old broken behavior: `$host' ++# used to hold the argument of --host etc. ++# FIXME: To remove some day. ++build=$build_alias ++host=$host_alias ++target=$target_alias ++ ++# FIXME: To remove some day. ++if test "x$host_alias" != x; then ++ if test "x$build_alias" = x; then ++ cross_compiling=maybe ++ elif test "x$build_alias" != "x$host_alias"; then ++ cross_compiling=yes ++ fi ++fi ++ ++ac_tool_prefix= ++test -n "$host_alias" && ac_tool_prefix=$host_alias- ++ ++test "$silent" = yes && exec 6>/dev/null ++ ++ ++ac_pwd=`pwd` && test -n "$ac_pwd" && ++ac_ls_di=`ls -di .` && ++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || ++ as_fn_error $? "working directory cannot be determined" ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ as_fn_error $? "pwd does not report name of working directory" ++ ++ ++# Find the source files, if location was not specified. ++if test -z "$srcdir"; then ++ ac_srcdir_defaulted=yes ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$as_myself" || ++$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_myself" : 'X\(//\)[^/]' \| \ ++ X"$as_myself" : 'X\(//\)$' \| \ ++ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$as_myself" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ srcdir=$ac_confdir ++ if test ! -r "$srcdir/$ac_unique_file"; then ++ srcdir=.. ++ fi ++else ++ ac_srcdir_defaulted=no ++fi ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" ++fi ++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ++ac_abs_confdir=`( ++ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" ++ pwd)` ++# When building in place, set srcdir=. ++if test "$ac_abs_confdir" = "$ac_pwd"; then ++ srcdir=. ++fi ++# Remove unnecessary trailing slashes from srcdir. ++# Double slashes in file names in object file debugging info ++# mess up M-x gdb in Emacs. ++case $srcdir in ++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; ++esac ++for ac_var in $ac_precious_vars; do ++ eval ac_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_env_${ac_var}_value=\$${ac_var} ++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_cv_env_${ac_var}_value=\$${ac_var} ++done ++ ++# ++# Report the --help message. ++# ++if test "$ac_init_help" = "long"; then ++ # Omit some internal or obsolete options to make the list less imposing. ++ # This message is too long to be a string in the A/UX 3.1 sh. ++ cat <<_ACEOF ++\`configure' configures package-unused version-unused to adapt to many kinds of systems. ++ ++Usage: $0 [OPTION]... [VAR=VALUE]... ++ ++To assign environment variables (e.g., CC, CFLAGS...), specify them as ++VAR=VALUE. See below for descriptions of some of the useful variables. ++ ++Defaults for the options are specified in brackets. ++ ++Configuration: ++ -h, --help display this help and exit ++ --help=short display options specific to this package ++ --help=recursive display the short help of all the included packages ++ -V, --version display version information and exit ++ -q, --quiet, --silent do not print \`checking ...' messages ++ --cache-file=FILE cache test results in FILE [disabled] ++ -C, --config-cache alias for \`--cache-file=config.cache' ++ -n, --no-create do not create output files ++ --srcdir=DIR find the sources in DIR [configure dir or \`..'] ++ ++Installation directories: ++ --prefix=PREFIX install architecture-independent files in PREFIX ++ [$ac_default_prefix] ++ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ++ [PREFIX] ++ ++By default, \`make install' will install all the files in ++\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify ++an installation prefix other than \`$ac_default_prefix' using \`--prefix', ++for instance \`--prefix=\$HOME'. ++ ++For better control, use the options below. ++ ++Fine tuning of the installation directories: ++ --bindir=DIR user executables [EPREFIX/bin] ++ --sbindir=DIR system admin executables [EPREFIX/sbin] ++ --libexecdir=DIR program executables [EPREFIX/libexec] ++ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] ++ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] ++ --localstatedir=DIR modifiable single-machine data [PREFIX/var] ++ --libdir=DIR object code libraries [EPREFIX/lib] ++ --includedir=DIR C header files [PREFIX/include] ++ --oldincludedir=DIR C header files for non-gcc [/usr/include] ++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] ++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] ++ --infodir=DIR info documentation [DATAROOTDIR/info] ++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] ++ --mandir=DIR man documentation [DATAROOTDIR/man] ++ --docdir=DIR documentation root [DATAROOTDIR/doc/libga68] ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] ++_ACEOF ++ ++ cat <<\_ACEOF ++ ++Program names: ++ --program-prefix=PREFIX prepend PREFIX to installed program names ++ --program-suffix=SUFFIX append SUFFIX to installed program names ++ --program-transform-name=PROGRAM run sed PROGRAM on installed program names ++ ++System types: ++ --build=BUILD configure for building on BUILD [guessed] ++ --host=HOST cross-compile to build programs to run on HOST [BUILD] ++ --target=TARGET configure for building compilers for TARGET [HOST] ++_ACEOF ++fi ++ ++if test -n "$ac_init_help"; then ++ case $ac_init_help in ++ short | recursive ) echo "Configuration of package-unused version-unused:";; ++ esac ++ cat <<\_ACEOF ++ ++Optional Features: ++ --disable-option-checking ignore unrecognized --enable/--with options ++ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) ++ --enable-FEATURE[=ARG] include FEATURE [ARG=yes] ++ --enable-multilib build many library versions (default) ++ --enable-dependency-tracking ++ do not reject slow dependency extractors ++ --disable-dependency-tracking ++ speeds up one-time build ++ --enable-silent-rules less verbose build output (undo: "make V=1") ++ --disable-silent-rules verbose build output (undo: "make V=0") ++ --disable-largefile omit support for large files ++ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ++ --enable-maintainer-mode ++ enable make rules and dependencies not useful (and ++ sometimes confusing) to the casual installer ++ --enable-shared[=PKGS] build shared libraries [default=yes] ++ --enable-static[=PKGS] build static libraries [default=yes] ++ --enable-fast-install[=PKGS] ++ optimize for fast installation [default=yes] ++ --disable-libtool-lock avoid locking (might break parallel builds) ++ --enable-darwin-at-rpath ++ install libraries with @rpath/library-name, requires ++ rpaths to be added to executables ++ --enable-algol68-gc enable use of Boehm's garbage collector with the GNU ++ Algol runtime ++ ++Optional Packages: ++ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] ++ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-build-libsubdir=DIR Directory where to find libraries for build system ++ --with-cross-host=HOST Configuring with a cross compiler ++ --with-slibdir=DIR shared libraries in DIR LIBDIR ++ --with-pic try to use only PIC/non-PIC objects [default=use ++ both] ++ --with-gnu-ld assume the C compiler uses GNU ld [default=no] ++ --with-gcc-major-version-only ++ use only GCC major number in filesystem paths ++ --with-target-bdw-gc=PATHLIST ++ specify prefix directory for installed bdw-gc ++ package. Equivalent to ++ --with-target-bdw-gc-include=PATH/include plus ++ --with-target-bdw-gc-lib=PATH/lib ++ --with-target-bdw-gc-include=PATHLIST ++ specify directories for installed bdw-gc include ++ files ++ --with-target-bdw-gc-lib=PATHLIST ++ specify directories for installed bdw-gc library ++ ++Some influential environment variables: ++ CC C compiler command ++ CFLAGS C compiler flags ++ LDFLAGS linker flags, e.g. -L if you have libraries in a ++ nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory ++ CPP C preprocessor ++ CCAS assembler compiler command (defaults to CC) ++ CCASFLAGS assembler compiler flags (defaults to CFLAGS) ++ ++Use these variables to override the choices made by `configure' or to help ++it to find libraries and programs with nonstandard names/locations. ++ ++Report bugs to the package provider. ++_ACEOF ++ac_status=$? ++fi ++ ++if test "$ac_init_help" = "recursive"; then ++ # If there are subdirs, report their specific --help. ++ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue ++ test -d "$ac_dir" || ++ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || ++ continue ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ cd "$ac_dir" || { ac_status=$?; continue; } ++ # Check for guested configure. ++ if test -f "$ac_srcdir/configure.gnu"; then ++ echo && ++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive ++ elif test -f "$ac_srcdir/configure"; then ++ echo && ++ $SHELL "$ac_srcdir/configure" --help=recursive ++ else ++ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } ++ done ++fi ++ ++test -n "$ac_init_help" && exit $ac_status ++if $ac_init_version; then ++ cat <<\_ACEOF ++package-unused configure version-unused ++generated by GNU Autoconf 2.69 ++ ++Copyright (C) 2012 Free Software Foundation, Inc. ++This configure script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it. ++_ACEOF ++ exit ++fi ++ ++## ------------------------ ## ++## Autoconf initialization. ## ++## ------------------------ ## ++ ++# ac_fn_c_try_compile LINENO ++# -------------------------- ++# Try to compile conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_compile () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ rm -f conftest.$ac_objext ++ if { { ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compile") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=1 ++fi ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_compile ++ ++# ac_fn_c_try_cpp LINENO ++# ---------------------- ++# Try to preprocess conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_cpp () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if { { ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } > conftest.i && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=1 ++fi ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_cpp ++ ++# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES ++# ------------------------------------------------------- ++# Tests whether HEADER exists, giving a warning if it cannot be compiled using ++# the include files in INCLUDES and setting the cache variable VAR ++# accordingly. ++ac_fn_c_check_header_mongrel () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if eval \${$3+:} false; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval \${$3+:} false; then : ++ $as_echo_n "(cached) " >&6 ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 ++$as_echo_n "checking $2 usability... " >&6; } ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$4 ++#include <$2> ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_header_compiler=yes ++else ++ ac_header_compiler=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 ++$as_echo "$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 ++$as_echo_n "checking $2 presence... " >&6; } ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include <$2> ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : ++ ac_header_preproc=yes ++else ++ ac_header_preproc=no ++fi ++rm -f conftest.err conftest.i conftest.$ac_ext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 ++$as_echo "$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( ++ yes:no: ) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 ++$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 ++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ++ ;; ++ no:yes:* ) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 ++$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 ++$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 ++$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 ++$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 ++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ++ ;; ++esac ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval \${$3+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ eval "$3=\$ac_header_compiler" ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++fi ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ ++} # ac_fn_c_check_header_mongrel ++ ++# ac_fn_c_try_run LINENO ++# ---------------------- ++# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes ++# that executables *can* be run. ++ac_fn_c_try_run () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' ++ { { case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: program exited with status $ac_status" >&5 ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=$ac_status ++fi ++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_run ++ ++# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES ++# ------------------------------------------------------- ++# Tests whether HEADER exists and can be compiled using the include files in ++# INCLUDES, setting the cache variable VAR accordingly. ++ac_fn_c_check_header_compile () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval \${$3+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$4 ++#include <$2> ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ eval "$3=yes" ++else ++ eval "$3=no" ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ ++} # ac_fn_c_check_header_compile ++ ++# ac_fn_c_try_link LINENO ++# ----------------------- ++# Try to link conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_link () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ rm -f conftest.$ac_objext conftest$ac_exeext ++ if { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && { ++ test "$cross_compiling" = yes || ++ test -x conftest$ac_exeext ++ }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=1 ++fi ++ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information ++ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would ++ # interfere with the next link command; also delete a directory that is ++ # left behind by Apple's compiler. We do this before executing the actions. ++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_link ++ ++# ac_fn_c_check_func LINENO FUNC VAR ++# ---------------------------------- ++# Tests whether FUNC exists, setting the cache variable VAR accordingly ++ac_fn_c_check_func () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval \${$3+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++/* Define $2 to an innocuous variant, in case declares $2. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $2 innocuous_$2 ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $2 (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $2 ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $2 (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$2 || defined __stub___$2 ++choke me ++#endif ++ ++int ++main () ++{ ++return $2 (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ eval "$3=yes" ++else ++ eval "$3=no" ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ ++} # ac_fn_c_check_func ++cat >config.log <<_ACEOF ++This file contains any messages produced by compilers while ++running configure, to aid debugging if configure makes a mistake. ++ ++It was created by package-unused $as_me version-unused, which was ++generated by GNU Autoconf 2.69. Invocation command line was ++ ++ $ $0 $@ ++ ++_ACEOF ++exec 5>>config.log ++{ ++cat <<_ASUNAME ++## --------- ## ++## Platform. ## ++## --------- ## ++ ++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` ++uname -m = `(uname -m) 2>/dev/null || echo unknown` ++uname -r = `(uname -r) 2>/dev/null || echo unknown` ++uname -s = `(uname -s) 2>/dev/null || echo unknown` ++uname -v = `(uname -v) 2>/dev/null || echo unknown` ++ ++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` ++/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` ++ ++/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` ++/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` ++/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` ++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` ++/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` ++/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` ++/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` ++ ++_ASUNAME ++ ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ $as_echo "PATH: $as_dir" ++ done ++IFS=$as_save_IFS ++ ++} >&5 ++ ++cat >&5 <<_ACEOF ++ ++ ++## ----------- ## ++## Core tests. ## ++## ----------- ## ++ ++_ACEOF ++ ++ ++# Keep a trace of the command line. ++# Strip out --no-create and --no-recursion so they do not pile up. ++# Strip out --silent because we don't want to record it for future runs. ++# Also quote any args containing shell meta-characters. ++# Make two passes to allow for proper duplicate-argument suppression. ++ac_configure_args= ++ac_configure_args0= ++ac_configure_args1= ++ac_must_keep_next=false ++for ac_pass in 1 2 ++do ++ for ac_arg ++ do ++ case $ac_arg in ++ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ continue ;; ++ *\'*) ++ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ case $ac_pass in ++ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; ++ 2) ++ as_fn_append ac_configure_args1 " '$ac_arg'" ++ if test $ac_must_keep_next = true; then ++ ac_must_keep_next=false # Got value, back to normal. ++ else ++ case $ac_arg in ++ *=* | --config-cache | -C | -disable-* | --disable-* \ ++ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ++ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ++ | -with-* | --with-* | -without-* | --without-* | --x) ++ case "$ac_configure_args0 " in ++ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ++ esac ++ ;; ++ -* ) ac_must_keep_next=true ;; ++ esac ++ fi ++ as_fn_append ac_configure_args " '$ac_arg'" ++ ;; ++ esac ++ done ++done ++{ ac_configure_args0=; unset ac_configure_args0;} ++{ ac_configure_args1=; unset ac_configure_args1;} ++ ++# When interrupted or exit'd, cleanup temporary files, and complete ++# config.log. We remove comments because anyway the quotes in there ++# would cause problems or look ugly. ++# WARNING: Use '\'' to represent an apostrophe within the trap. ++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. ++trap 'exit_status=$? ++ # Save into config.log some information that might help in debugging. ++ { ++ echo ++ ++ $as_echo "## ---------------- ## ++## Cache variables. ## ++## ---------------- ##" ++ echo ++ # The following way of writing the cache mishandles newlines in values, ++( ++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 ++$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( ++ *) { eval $ac_var=; unset $ac_var;} ;; ++ esac ;; ++ esac ++ done ++ (set) 2>&1 | ++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) ++ sed -n \ ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( ++ *) ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ++ ;; ++ esac | ++ sort ++) ++ echo ++ ++ $as_echo "## ----------------- ## ++## Output variables. ## ++## ----------------- ##" ++ echo ++ for ac_var in $ac_subst_vars ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ $as_echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ ++ if test -n "$ac_subst_files"; then ++ $as_echo "## ------------------- ## ++## File substitutions. ## ++## ------------------- ##" ++ echo ++ for ac_var in $ac_subst_files ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ $as_echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ fi ++ ++ if test -s confdefs.h; then ++ $as_echo "## ----------- ## ++## confdefs.h. ## ++## ----------- ##" ++ echo ++ cat confdefs.h ++ echo ++ fi ++ test "$ac_signal" != 0 && ++ $as_echo "$as_me: caught signal $ac_signal" ++ $as_echo "$as_me: exit $exit_status" ++ } >&5 ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && ++ exit $exit_status ++' 0 ++for ac_signal in 1 2 13 15; do ++ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal ++done ++ac_signal=0 ++ ++# confdefs.h avoids OS command line length limits that DEFS can exceed. ++rm -f -r conftest* confdefs.h ++ ++$as_echo "/* confdefs.h */" > confdefs.h ++ ++# Predefined preprocessor variables. ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_NAME "$PACKAGE_NAME" ++_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_TARNAME "$PACKAGE_TARNAME" ++_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_VERSION "$PACKAGE_VERSION" ++_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_STRING "$PACKAGE_STRING" ++_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" ++_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_URL "$PACKAGE_URL" ++_ACEOF ++ ++ ++# Let the site file select an alternate cache file if it wants to. ++# Prefer an explicitly selected file to automatically selected ones. ++ac_site_file1=NONE ++ac_site_file2=NONE ++if test -n "$CONFIG_SITE"; then ++ # We do not want a PATH search for config.site. ++ case $CONFIG_SITE in #(( ++ -*) ac_site_file1=./$CONFIG_SITE;; ++ */*) ac_site_file1=$CONFIG_SITE;; ++ *) ac_site_file1=./$CONFIG_SITE;; ++ esac ++elif test "x$prefix" != xNONE; then ++ ac_site_file1=$prefix/share/config.site ++ ac_site_file2=$prefix/etc/config.site ++else ++ ac_site_file1=$ac_default_prefix/share/config.site ++ ac_site_file2=$ac_default_prefix/etc/config.site ++fi ++for ac_site_file in "$ac_site_file1" "$ac_site_file2" ++do ++ test "x$ac_site_file" = xNONE && continue ++ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 ++$as_echo "$as_me: loading site script $ac_site_file" >&6;} ++ sed 's/^/| /' "$ac_site_file" >&5 ++ . "$ac_site_file" \ ++ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "failed to load site script $ac_site_file ++See \`config.log' for more details" "$LINENO" 5; } ++ fi ++done ++ ++if test -r "$cache_file"; then ++ # Some versions of bash will fail to source /dev/null (special files ++ # actually), so we avoid doing that. DJGPP emulates it as a regular file. ++ if test /dev/null != "$cache_file" && test -f "$cache_file"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 ++$as_echo "$as_me: loading cache $cache_file" >&6;} ++ case $cache_file in ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; ++ esac ++ fi ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 ++$as_echo "$as_me: creating cache $cache_file" >&6;} ++ >$cache_file ++fi ++ ++# Check that the precious variables saved in the cache have kept the same ++# value. ++ac_cache_corrupted=false ++for ac_var in $ac_precious_vars; do ++ eval ac_old_set=\$ac_cv_env_${ac_var}_set ++ eval ac_new_set=\$ac_env_${ac_var}_set ++ eval ac_old_val=\$ac_cv_env_${ac_var}_value ++ eval ac_new_val=\$ac_env_${ac_var}_value ++ case $ac_old_set,$ac_new_set in ++ set,) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ++$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ++ ac_cache_corrupted=: ;; ++ ,set) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 ++$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ++ ac_cache_corrupted=: ;; ++ ,);; ++ *) ++ if test "x$ac_old_val" != "x$ac_new_val"; then ++ # differences in whitespace do not lead to failure. ++ ac_old_val_w=`echo x $ac_old_val` ++ ac_new_val_w=`echo x $ac_new_val` ++ if test "$ac_old_val_w" != "$ac_new_val_w"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 ++$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ++ ac_cache_corrupted=: ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 ++$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} ++ eval $ac_var=\$ac_old_val ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 ++$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 ++$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} ++ fi;; ++ esac ++ # Pass precious variables to config.status. ++ if test "$ac_new_set" = set; then ++ case $ac_new_val in ++ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *) ac_arg=$ac_var=$ac_new_val ;; ++ esac ++ case " $ac_configure_args " in ++ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. ++ *) as_fn_append ac_configure_args " '$ac_arg'" ;; ++ esac ++ fi ++done ++if $ac_cache_corrupted; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 ++$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} ++ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 ++fi ++## -------------------- ## ++## Main body of script. ## ++## -------------------- ## ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++ ++ ++ ++ ++ac_config_headers="$ac_config_headers config.h" ++ ++ ++# Add --enable-multilib to configure, which defaults to enable. ++# Default to --enable-multilib ++# Check whether --enable-multilib was given. ++if test "${enable_multilib+set}" = set; then : ++ enableval=$enable_multilib; case "$enableval" in ++ yes) multilib=yes ;; ++ no) multilib=no ;; ++ *) as_fn_error $? "bad value $enableval for multilib option" "$LINENO" 5 ;; ++ esac ++else ++ multilib=yes ++fi ++ ++ ++# We may get other options which we leave undocumented: ++# --with-target-subdir, --with-multisrctop, --with-multisubdir ++# See config-ml.in if you want the gory details. ++ ++if test "$srcdir" = "."; then ++ if test "$with_target_subdir" != "."; then ++ multi_basedir="$srcdir/$with_multisrctop../.." ++ else ++ multi_basedir="$srcdir/$with_multisrctop.." ++ fi ++else ++ multi_basedir="$srcdir/.." ++fi ++ ++ ++# Even if the default multilib is not a cross compilation, ++# it may be that some of the other multilibs are. ++if test $cross_compiling = no && test $multilib = yes \ ++ && test "x${with_multisubdir}" != x ; then ++ cross_compiling=maybe ++fi ++ ++ac_config_commands="$ac_config_commands default-1" ++ ++ ++if test "${multilib}" = "yes"; then ++ multilib_arg="--enable-multilib" ++else ++ multilib_arg= ++fi ++ ++# Cope with compilers, in subsequent tests, that at this stage may not ++# be able to build executables. ++ ++ ++# Enable extensions to C or POSIX on hosts that normally disable the ++# extensions. This should be called before any macros that run the C ++# compiler. ++ac_aux_dir= ++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do ++ if test -f "$ac_dir/install-sh"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/install-sh -c" ++ break ++ elif test -f "$ac_dir/install.sh"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/install.sh -c" ++ break ++ elif test -f "$ac_dir/shtool"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/shtool install -c" ++ break ++ fi ++done ++if test -z "$ac_aux_dir"; then ++ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 ++fi ++ ++# These three variables are undocumented and unsupported, ++# and are intended to be withdrawn in a future Autoconf release. ++# They can cause serious problems if a builder's source tree is in a directory ++# whose full name contains unusual characters. ++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ++ ++ ++# Expand $ac_aux_dir to an absolute path. ++am_aux_dir=`cd "$ac_aux_dir" && pwd` ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}gcc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="${ac_tool_prefix}gcc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_CC"; then ++ ac_ct_CC=$CC ++ # Extract the first word of "gcc", so it can be a program name with args. ++set dummy gcc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_CC="gcc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 ++$as_echo "$ac_ct_CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++else ++ CC="$ac_cv_prog_CC" ++fi ++ ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}cc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="${ac_tool_prefix}cc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ fi ++fi ++if test -z "$CC"; then ++ # Extract the first word of "cc", so it can be a program name with args. ++set dummy cc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++ ac_prog_rejected=no ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ++ ac_prog_rejected=yes ++ continue ++ fi ++ ac_cv_prog_CC="cc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++if test $ac_prog_rejected = yes; then ++ # We found a bogon in the path, so make sure we never use it. ++ set dummy $ac_cv_prog_CC ++ shift ++ if test $# != 0; then ++ # We chose a different compiler from the bogus one. ++ # However, it has the same basename, so the bogon will be chosen ++ # first if we set CC to just the basename; use the full file name. ++ shift ++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" ++ fi ++fi ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in cl.exe ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$CC" && break ++ done ++fi ++if test -z "$CC"; then ++ ac_ct_CC=$CC ++ for ac_prog in cl.exe ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_CC="$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 ++$as_echo "$ac_ct_CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$ac_ct_CC" && break ++done ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++fi ++ ++fi ++ ++ ++test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "no acceptable C compiler found in \$PATH ++See \`config.log' for more details" "$LINENO" 5; } ++ ++# Provide some information about the compiler. ++$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 ++set X $ac_compile ++ac_compiler=$2 ++for ac_option in --version -v -V -qversion; do ++ { { ac_try="$ac_compiler $ac_option >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compiler $ac_option >&5") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ sed '10a\ ++... rest of stderr output deleted ... ++ 10q' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ fi ++ rm -f conftest.er1 conftest.err ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++done ++ ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++printf ("hello world\n"); ++ ; ++ return 0; ++} ++_ACEOF ++# FIXME: Cleanup? ++if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : ++ gcc_no_link=no ++else ++ gcc_no_link=yes ++fi ++if test x$gcc_no_link = xyes; then ++ # Setting cross_compile will disable run tests; it will ++ # also disable AC_CHECK_FILE but that's generally ++ # correct if we can't link. ++ cross_compiling=yes ++ EXEEXT= ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++ac_clean_files_save=$ac_clean_files ++ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" ++# Try to create an executable without -o first, disregard a.out. ++# It will help us diagnose broken compilers, and finding out an intuition ++# of exeext. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 ++$as_echo_n "checking whether the C compiler works... " >&6; } ++ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` ++ ++# The possible output files: ++ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ++ ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { { ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link_default") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' ++do ++ test -f "$ac_file" || continue ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ++ ;; ++ [ab].out ) ++ # We found the default executable, but exeext='' is most ++ # certainly right. ++ break;; ++ *.* ) ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. ++ break;; ++ * ) ++ break;; ++ esac ++done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ ++else ++ ac_file='' ++fi ++if test -z "$ac_file"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++$as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error 77 "C compiler cannot create executables ++See \`config.log' for more details" "$LINENO" 5; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 ++$as_echo_n "checking for C compiler default output file name... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 ++$as_echo "$ac_file" >&6; } ++ac_exeext=$ac_cv_exeext ++ ++rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ++ac_clean_files=$ac_clean_files_save ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 ++$as_echo_n "checking for suffix of executables... " >&6; } ++if { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : ++ # If both `conftest.exe' and `conftest' are `present' (well, observable) ++# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will ++# work properly (i.e., refer to `conftest.exe'), while it won't with ++# `rm'. ++for ac_file in conftest.exe conftest conftest.*; do ++ test -f "$ac_file" || continue ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; ++ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ break;; ++ * ) break;; ++ esac ++done ++else ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details" "$LINENO" 5; } ++fi ++rm -f conftest conftest$ac_cv_exeext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 ++$as_echo "$ac_cv_exeext" >&6; } ++ ++rm -f conftest.$ac_ext ++EXEEXT=$ac_cv_exeext ++ac_exeext=$EXEEXT ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++FILE *f = fopen ("conftest.out", "w"); ++ return ferror (f) || fclose (f) != 0; ++ ++ ; ++ return 0; ++} ++_ACEOF ++ac_clean_files="$ac_clean_files conftest.out" ++# Check that the compiler produces executables we can run. If not, either ++# the compiler is broken, or we cross compile. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 ++$as_echo_n "checking whether we are cross compiling... " >&6; } ++if test "$cross_compiling" != yes; then ++ { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++ if { ac_try='./conftest$ac_cv_exeext' ++ { { case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; }; then ++ cross_compiling=no ++ else ++ if test "$cross_compiling" = maybe; then ++ cross_compiling=yes ++ else ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "cannot run C compiled programs. ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details" "$LINENO" 5; } ++ fi ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 ++$as_echo "$cross_compiling" >&6; } ++ ++rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ++ac_clean_files=$ac_clean_files_save ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 ++$as_echo_n "checking for suffix of object files... " >&6; } ++if ${ac_cv_objext+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.o conftest.obj ++if { { ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compile") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; ++ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` ++ break;; ++ esac ++done ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "cannot compute suffix of object files: cannot compile ++See \`config.log' for more details" "$LINENO" 5; } ++fi ++rm -f conftest.$ac_cv_objext conftest.$ac_ext ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 ++$as_echo "$ac_cv_objext" >&6; } ++OBJEXT=$ac_cv_objext ++ac_objext=$OBJEXT ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 ++$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } ++if ${ac_cv_c_compiler_gnu+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++#ifndef __GNUC__ ++ choke me ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_compiler_gnu=yes ++else ++ ac_compiler_gnu=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ac_cv_c_compiler_gnu=$ac_compiler_gnu ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 ++$as_echo "$ac_cv_c_compiler_gnu" >&6; } ++if test $ac_compiler_gnu = yes; then ++ GCC=yes ++else ++ GCC= ++fi ++ac_test_CFLAGS=${CFLAGS+set} ++ac_save_CFLAGS=$CFLAGS ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 ++$as_echo_n "checking whether $CC accepts -g... " >&6; } ++if ${ac_cv_prog_cc_g+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_save_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ ac_cv_prog_cc_g=no ++ CFLAGS="-g" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_g=yes ++else ++ CFLAGS="" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ++else ++ ac_c_werror_flag=$ac_save_c_werror_flag ++ CFLAGS="-g" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_g=yes ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 ++$as_echo "$ac_cv_prog_cc_g" >&6; } ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS=$ac_save_CFLAGS ++elif test $ac_cv_prog_cc_g = yes; then ++ if test "$GCC" = yes; then ++ CFLAGS="-g -O2" ++ else ++ CFLAGS="-g" ++ fi ++else ++ if test "$GCC" = yes; then ++ CFLAGS="-O2" ++ else ++ CFLAGS= ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 ++$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } ++if ${ac_cv_prog_cc_c89+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_cv_prog_cc_c89=no ++ac_save_CC=$CC ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++#include ++struct stat; ++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ ++struct buf { int x; }; ++FILE * (*rcsopen) (struct buf *, struct stat *, int); ++static char *e (p, i) ++ char **p; ++ int i; ++{ ++ return p[i]; ++} ++static char *f (char * (*g) (char **, int), char **p, ...) ++{ ++ char *s; ++ va_list v; ++ va_start (v,p); ++ s = g (p, va_arg (v,int)); ++ va_end (v); ++ return s; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); ++int argc; ++char **argv; ++int ++main () ++{ ++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ++ ; ++ return 0; ++} ++_ACEOF ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++do ++ CC="$ac_save_CC $ac_arg" ++ if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_c89=$ac_arg ++fi ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++ ++fi ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 ++$as_echo "none needed" >&6; } ;; ++ xno) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 ++$as_echo "unsupported" >&6; } ;; ++ *) ++ CC="$CC $ac_cv_prog_cc_c89" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 ++$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; ++esac ++if test "x$ac_cv_prog_cc_c89" != xno; then : ++ ++fi ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 ++$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } ++if ${am_cv_prog_cc_c_o+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++ # Make sure it works both with $CC and with simple cc. ++ # Following AC_PROG_CC_C_O, we do the test twice because some ++ # compilers refuse to overwrite an existing .o file with -o, ++ # though they will create one. ++ am_cv_prog_cc_c_o=yes ++ for am_i in 1 2; do ++ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ++ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } \ ++ && test -f conftest2.$ac_objext; then ++ : OK ++ else ++ am_cv_prog_cc_c_o=no ++ break ++ fi ++ done ++ rm -f core conftest* ++ unset am_i ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 ++$as_echo "$am_cv_prog_cc_c_o" >&6; } ++if test "$am_cv_prog_cc_c_o" != yes; then ++ # Losing compiler, so override with the script. ++ # FIXME: It is wrong to rewrite CC. ++ # But if we don't then we get into trouble of one sort or another. ++ # A longer-term fix would be to have automake use am__CC in this case, ++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" ++ CC="$am_aux_dir/compile $CC" ++fi ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 ++$as_echo_n "checking how to run the C preprocessor... " >&6; } ++# On Suns, sometimes $CPP names a directory. ++if test -n "$CPP" && test -d "$CPP"; then ++ CPP= ++fi ++if test -z "$CPP"; then ++ if ${ac_cv_prog_CPP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ # Double quotes because CPP needs to be expanded ++ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" ++ do ++ ac_preproc_ok=false ++for ac_c_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : ++ ++else ++ # Broken: fails on valid input. ++continue ++fi ++rm -f conftest.err conftest.i conftest.$ac_ext ++ ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : ++ # Broken: success on invalid input. ++continue ++else ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi ++rm -f conftest.err conftest.i conftest.$ac_ext ++ ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.i conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then : ++ break ++fi ++ ++ done ++ ac_cv_prog_CPP=$CPP ++ ++fi ++ CPP=$ac_cv_prog_CPP ++else ++ ac_cv_prog_CPP=$CPP ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 ++$as_echo "$CPP" >&6; } ++ac_preproc_ok=false ++for ac_c_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : ++ ++else ++ # Broken: fails on valid input. ++continue ++fi ++rm -f conftest.err conftest.i conftest.$ac_ext ++ ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : ++ # Broken: success on invalid input. ++continue ++else ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi ++rm -f conftest.err conftest.i conftest.$ac_ext ++ ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.i conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then : ++ ++else ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details" "$LINENO" 5; } ++fi ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 ++$as_echo_n "checking for grep that handles long lines and -e... " >&6; } ++if ${ac_cv_path_GREP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -z "$GREP"; then ++ ac_path_GREP_found=false ++ # Loop through the user's path and test for each of PROGNAME-LIST ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ as_fn_executable_p "$ac_path_GREP" || continue ++# Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ $as_echo_n 0123456789 >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ $as_echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ as_fn_arith $ac_count + 1 && ac_count=$as_val ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ $ac_path_GREP_found && break 3 ++ done ++ done ++ done ++IFS=$as_save_IFS ++ if test -z "$ac_cv_path_GREP"; then ++ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 ++ fi ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 ++$as_echo "$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 ++$as_echo_n "checking for egrep... " >&6; } ++if ${ac_cv_path_EGREP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ if test -z "$EGREP"; then ++ ac_path_EGREP_found=false ++ # Loop through the user's path and test for each of PROGNAME-LIST ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ as_fn_executable_p "$ac_path_EGREP" || continue ++# Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ $as_echo_n 0123456789 >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ $as_echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ as_fn_arith $ac_count + 1 && ac_count=$as_val ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ $ac_path_EGREP_found && break 3 ++ done ++ done ++ done ++IFS=$as_save_IFS ++ if test -z "$ac_cv_path_EGREP"; then ++ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 ++ fi ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 ++$as_echo "$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 ++$as_echo_n "checking for ANSI C header files... " >&6; } ++if ${ac_cv_header_stdc+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_header_stdc=yes ++else ++ ac_cv_header_stdc=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "memchr" >/dev/null 2>&1; then : ++ ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "free" >/dev/null 2>&1; then : ++ ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. ++ if test "$cross_compiling" = yes; then : ++ : ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++#include ++#if ((' ' & 0x0FF) == 0x020) ++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) ++#else ++# define ISLOWER(c) \ ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) ++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) ++#endif ++ ++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 256; i++) ++ if (XOR (islower (i), ISLOWER (i)) ++ || toupper (i) != TOUPPER (i)) ++ return 2; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ ++else ++ ac_cv_header_stdc=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 ++$as_echo "$ac_cv_header_stdc" >&6; } ++if test $ac_cv_header_stdc = yes; then ++ ++$as_echo "#define STDC_HEADERS 1" >>confdefs.h ++ ++fi ++ ++# On IRIX 5.3, sys/types and inttypes.h are conflicting. ++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ ++ inttypes.h stdint.h unistd.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default ++" ++if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++ ++ ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" ++if test "x$ac_cv_header_minix_config_h" = xyes; then : ++ MINIX=yes ++else ++ MINIX= ++fi ++ ++ ++ if test "$MINIX" = yes; then ++ ++$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h ++ ++ ++$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h ++ ++ ++$as_echo "#define _MINIX 1" >>confdefs.h ++ ++ fi ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 ++$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } ++if ${ac_cv_safe_to_define___extensions__+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++# define __EXTENSIONS__ 1 ++ $ac_includes_default ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_safe_to_define___extensions__=yes ++else ++ ac_cv_safe_to_define___extensions__=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 ++$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } ++ test $ac_cv_safe_to_define___extensions__ = yes && ++ $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h ++ ++ $as_echo "#define _ALL_SOURCE 1" >>confdefs.h ++ ++ $as_echo "#define _GNU_SOURCE 1" >>confdefs.h ++ ++ $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h ++ ++ $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h ++ ++ ++ ++# Determine the system type and set output variabls to the names of ++# the canonical system types. ++# ++# Do not delete or change the following two lines. For why, and for ++# why we are using the obsolete AC_CANONICAL_SYSTEM as ell as the ++# recommended AC_CANONICAL_HOST, see ++# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html ++# Make sure we can run config.sub. ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 ++$as_echo_n "checking build system type... " >&6; } ++if ${ac_cv_build+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_build_alias=$build_alias ++test "x$ac_build_alias" = x && ++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` ++test "x$ac_build_alias" = x && ++ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 ++$as_echo "$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; ++esac ++build=$ac_cv_build ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_build ++shift ++build_cpu=$1 ++build_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++build_os=$* ++IFS=$ac_save_IFS ++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 ++$as_echo_n "checking host system type... " >&6; } ++if ${ac_cv_host+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test "x$host_alias" = x; then ++ ac_cv_host=$ac_cv_build ++else ++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || ++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 ++$as_echo "$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; ++esac ++host=$ac_cv_host ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_host ++shift ++host_cpu=$1 ++host_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++host_os=$* ++IFS=$ac_save_IFS ++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 ++$as_echo_n "checking target system type... " >&6; } ++if ${ac_cv_target+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test "x$target_alias" = x; then ++ ac_cv_target=$ac_cv_host ++else ++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || ++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 ++$as_echo "$ac_cv_target" >&6; } ++case $ac_cv_target in ++*-*-*) ;; ++*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; ++esac ++target=$ac_cv_target ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_target ++shift ++target_cpu=$1 ++target_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++target_os=$* ++IFS=$ac_save_IFS ++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac ++ ++ ++# The aliases save the names the user supplied, while $host etc. ++# will get canonicalized. ++test -n "$target_alias" && ++ test "$program_prefix$program_suffix$program_transform_name" = \ ++ NONENONEs,x,x, && ++ program_prefix=${target_alias}- ++ ++target_alias=${target_alias-$host_alias} ++ ++ ++ ++# These macro are for supporting canadian crosses, in which build /= ++# host /= target. ++ case ${build_alias} in ++ "") build_noncanonical=${build} ;; ++ *) build_noncanonical=${build_alias} ;; ++esac ++ ++ case ${host_alias} in ++ "") host_noncanonical=${build_noncanonical} ;; ++ *) host_noncanonical=${host_alias} ;; ++esac ++ ++ ++ ++ case ${target_alias} in ++ "") target_noncanonical=${host_noncanonical} ;; ++ *) target_noncanonical=${target_alias} ;; ++esac ++ ++ ++ ++ ++# post-stage1 host modules use a different CC_FOR_BUILD so, in order to ++# have matching libraries, they should use host libraries: Makefile.tpl ++# arranges to pass --with-build-libsubdir=$(HOST_SUBDIR). ++# However, they still use the build modules, because the corresponding ++# host modules (e.g. bison) are only built for the host when bootstrap ++# finishes. So: ++# - build_subdir is where we find build modules, and never changes. ++# - build_libsubdir is where we find build libraries, and can be overridden. ++ ++# Prefix 'build-' so this never conflicts with target_subdir. ++build_subdir="build-${build_noncanonical}" ++ ++# Check whether --with-build-libsubdir was given. ++if test "${with_build_libsubdir+set}" = set; then : ++ withval=$with_build_libsubdir; build_libsubdir="$withval" ++else ++ build_libsubdir="$build_subdir" ++fi ++ ++# --srcdir=. covers the toplevel, while "test -d" covers the subdirectories ++if ( test $srcdir = . && test -d gcc ) \ ++ || test -d $srcdir/../host-${host_noncanonical}; then ++ host_subdir="host-${host_noncanonical}" ++else ++ host_subdir=. ++fi ++# No prefix. ++target_subdir=${target_noncanonical} ++ ++ ++# Initialize Automake with proper options. ++am__api_version='1.15' ++ ++# Find a good install program. We prefer a C program (faster), ++# so one script is as good as another. But avoid the broken or ++# incompatible versions: ++# SysV /etc/install, /usr/sbin/install ++# SunOS /usr/etc/install ++# IRIX /sbin/install ++# AIX /bin/install ++# AmigaOS /C/install, which installs bootblocks on floppy discs ++# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag ++# AFS /usr/afsws/bin/install, which mishandles nonexistent args ++# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" ++# OS/2's system install, which has a completely different semantic ++# ./install, which can be erroneously created by make from ./install.sh. ++# Reject install programs that cannot install multiple files. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 ++$as_echo_n "checking for a BSD-compatible install... " >&6; } ++if test -z "$INSTALL"; then ++if ${ac_cv_path_install+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ # Account for people who put trailing slashes in PATH elements. ++case $as_dir/ in #(( ++ ./ | .// | /[cC]/* | \ ++ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ++ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ ++ /usr/ucb/* ) ;; ++ *) ++ # OSF1 and SCO ODT 3.0 have their own names for install. ++ # Don't use installbsd from OSF since it installs stuff as root ++ # by default. ++ for ac_prog in ginstall scoinst install; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ if test $ac_prog = install && ++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # AIX install. It has an incompatible calling convention. ++ : ++ elif test $ac_prog = install && ++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # program-specific install script used by HP pwplus--don't use. ++ : ++ else ++ rm -rf conftest.one conftest.two conftest.dir ++ echo one > conftest.one ++ echo two > conftest.two ++ mkdir conftest.dir ++ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && ++ test -s conftest.one && test -s conftest.two && ++ test -s conftest.dir/conftest.one && ++ test -s conftest.dir/conftest.two ++ then ++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ++ break 3 ++ fi ++ fi ++ fi ++ done ++ done ++ ;; ++esac ++ ++ done ++IFS=$as_save_IFS ++ ++rm -rf conftest.one conftest.two conftest.dir ++ ++fi ++ if test "${ac_cv_path_install+set}" = set; then ++ INSTALL=$ac_cv_path_install ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ INSTALL=$ac_install_sh ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 ++$as_echo "$INSTALL" >&6; } ++ ++# Use test -z because SunOS4 sh mishandles braces in ${var-val}. ++# It thinks the first close brace ends the variable substitution. ++test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' ++ ++test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' ++ ++test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 ++$as_echo_n "checking whether build environment is sane... " >&6; } ++# Reject unsafe characters in $srcdir or the absolute working directory ++# name. Accept space and tab only in the latter. ++am_lf=' ++' ++case `pwd` in ++ *[\\\"\#\$\&\'\`$am_lf]*) ++ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; ++esac ++case $srcdir in ++ *[\\\"\#\$\&\'\`$am_lf\ \ ]*) ++ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; ++esac ++ ++# Do 'set' in a subshell so we don't clobber the current shell's ++# arguments. Must try -L first in case configure is actually a ++# symlink; some systems play weird games with the mod time of symlinks ++# (eg FreeBSD returns the mod time of the symlink's containing ++# directory). ++if ( ++ am_has_slept=no ++ for am_try in 1 2; do ++ echo "timestamp, slept: $am_has_slept" > conftest.file ++ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` ++ if test "$*" = "X"; then ++ # -L didn't work. ++ set X `ls -t "$srcdir/configure" conftest.file` ++ fi ++ if test "$*" != "X $srcdir/configure conftest.file" \ ++ && test "$*" != "X conftest.file $srcdir/configure"; then ++ ++ # If neither matched, then we have a broken ls. This can happen ++ # if, for instance, CONFIG_SHELL is bash and it inherits a ++ # broken ls alias from the environment. This has actually ++ # happened. Such a system could not be considered "sane". ++ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken ++ alias in your environment" "$LINENO" 5 ++ fi ++ if test "$2" = conftest.file || test $am_try -eq 2; then ++ break ++ fi ++ # Just in case. ++ sleep 1 ++ am_has_slept=yes ++ done ++ test "$2" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ as_fn_error $? "newly created file is older than distributed files! ++Check your system clock" "$LINENO" 5 ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++# If we didn't sleep, we still need to ensure time stamps of config.status and ++# generated files are strictly newer. ++am_sleep_pid= ++if grep 'slept: no' conftest.file >/dev/null 2>&1; then ++ ( sleep 1 ) & ++ am_sleep_pid=$! ++fi ++ ++rm -f conftest.file ++ ++test "$program_prefix" != NONE && ++ program_transform_name="s&^&$program_prefix&;$program_transform_name" ++# Use a double $ so make ignores it. ++test "$program_suffix" != NONE && ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" ++# Double any \ or $. ++# By default was `s,x,x', remove it if useless. ++ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' ++program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` ++ ++if test x"${MISSING+set}" != xset; then ++ case $am_aux_dir in ++ *\ * | *\ *) ++ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; ++ *) ++ MISSING="\${SHELL} $am_aux_dir/missing" ;; ++ esac ++fi ++# Use eval to expand $SHELL ++if eval "$MISSING --is-lightweight"; then ++ am_missing_run="$MISSING " ++else ++ am_missing_run= ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 ++$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} ++fi ++ ++if test x"${install_sh+set}" != xset; then ++ case $am_aux_dir in ++ *\ * | *\ *) ++ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; ++ *) ++ install_sh="\${SHELL} $am_aux_dir/install-sh" ++ esac ++fi ++ ++# Installed binaries are usually stripped using 'strip' when the user ++# run "make install-strip". However 'strip' might not be the right ++# tool to use in cross-compilation environments, therefore Automake ++# will honor the 'STRIP' environment variable to overrule this program. ++if test "$cross_compiling" != no; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_STRIP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 ++$as_echo "$STRIP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_STRIP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 ++$as_echo "$ac_ct_STRIP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 ++$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } ++if test -z "$MKDIR_P"; then ++ if ${ac_cv_path_mkdir+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in mkdir gmkdir; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue ++ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( ++ 'mkdir (GNU coreutils) '* | \ ++ 'mkdir (coreutils) '* | \ ++ 'mkdir (fileutils) '4.1*) ++ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext ++ break 3;; ++ esac ++ done ++ done ++ done ++IFS=$as_save_IFS ++ ++fi ++ ++ test -d ./--version && rmdir ./--version ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ MKDIR_P="$ac_cv_path_mkdir -p" ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for MKDIR_P within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ MKDIR_P="$ac_install_sh -d" ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 ++$as_echo "$MKDIR_P" >&6; } ++ ++for ac_prog in gawk mawk nawk awk ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_AWK+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$AWK"; then ++ ac_cv_prog_AWK="$AWK" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_AWK="$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++AWK=$ac_cv_prog_AWK ++if test -n "$AWK"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 ++$as_echo "$AWK" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$AWK" && break ++done ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } ++set x ${MAKE-make} ++ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh ++all: ++ @echo '@@@%%%=$(MAKE)=@@@%%%' ++_ACEOF ++# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac ++rm -f conftest.make ++fi ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ SET_MAKE= ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ SET_MAKE="MAKE=${MAKE-make}" ++fi ++ ++rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. ++else ++ am__leading_dot=_ ++fi ++rmdir .tst 2>/dev/null ++ ++DEPDIR="${am__leading_dot}deps" ++ ++ac_config_commands="$ac_config_commands depfiles" ++ ++ ++am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo this is the am__doit target ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 ++$as_echo_n "checking for style of include used by $am_make... " >&6; } ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# Ignore all kinds of additional output from 'make'. ++case `$am_make -s -f confmf 2> /dev/null` in #( ++*the\ am__doit\ target*) ++ am__include=include ++ am__quote= ++ _am_result=GNU ++ ;; ++esac ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ case `$am_make -s -f confmf 2> /dev/null` in #( ++ *the\ am__doit\ target*) ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ ;; ++ esac ++fi ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 ++$as_echo "$_am_result" >&6; } ++rm -f confinc confmf ++ ++# Check whether --enable-dependency-tracking was given. ++if test "${enable_dependency_tracking+set}" = set; then : ++ enableval=$enable_dependency_tracking; ++fi ++ ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' ++ am__nodep='_no' ++fi ++ if test "x$enable_dependency_tracking" != xno; then ++ AMDEP_TRUE= ++ AMDEP_FALSE='#' ++else ++ AMDEP_TRUE='#' ++ AMDEP_FALSE= ++fi ++ ++ ++# Check whether --enable-silent-rules was given. ++if test "${enable_silent_rules+set}" = set; then : ++ enableval=$enable_silent_rules; ++fi ++ ++case $enable_silent_rules in # ((( ++ yes) AM_DEFAULT_VERBOSITY=0;; ++ no) AM_DEFAULT_VERBOSITY=1;; ++ *) AM_DEFAULT_VERBOSITY=1;; ++esac ++am_make=${MAKE-make} ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 ++$as_echo_n "checking whether $am_make supports nested variables... " >&6; } ++if ${am_cv_make_support_nested_variables+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if $as_echo 'TRUE=$(BAR$(V)) ++BAR0=false ++BAR1=true ++V=1 ++am__doit: ++ @$(TRUE) ++.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then ++ am_cv_make_support_nested_variables=yes ++else ++ am_cv_make_support_nested_variables=no ++fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 ++$as_echo "$am_cv_make_support_nested_variables" >&6; } ++if test $am_cv_make_support_nested_variables = yes; then ++ AM_V='$(V)' ++ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' ++else ++ AM_V=$AM_DEFAULT_VERBOSITY ++ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY ++fi ++AM_BACKSLASH='\' ++ ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ am__isrc=' -I$(srcdir)' ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 ++ fi ++fi ++ ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi ++fi ++ ++ ++# Define the identity of the package. ++ PACKAGE='libga68' ++ VERSION='version-unused' ++ ++ ++# Some tools Automake needs. ++ ++ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} ++ ++ ++AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} ++ ++ ++AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} ++ ++ ++AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} ++ ++ ++MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} ++ ++# For better backward compatibility. To be removed once Automake 1.9.x ++# dies out for good. For more background, see: ++# ++# ++mkdir_p='$(MKDIR_P)' ++ ++# We need awk for the "check" target (and possibly the TAP driver). The ++# system "awk" is bad on some platforms. ++# Always define AMTAR for backward compatibility. Yes, it's still used ++# in the wild :-( We should find a proper way to deprecate it ... ++AMTAR='$${TAR-tar}' ++ ++ ++# We'll loop over all known methods to create a tar archive until one works. ++_am_tools='gnutar pax cpio none' ++ ++am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' ++ ++ ++ ++ ++ ++depcc="$CC" am_compiler_list= ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 ++$as_echo_n "checking dependency style of $depcc... " >&6; } ++if ${am_cv_CC_dependencies_compiler_type+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named 'D' -- because '-MD' means "put the output ++ # in D". ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub ++ ++ am_cv_CC_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` ++ fi ++ am__universal=false ++ case " $depcc " in #( ++ *\ -arch\ *\ -arch\ *) am__universal=true ;; ++ esac ++ ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with ++ # Solaris 10 /bin/sh. ++ echo '/* dummy */' > sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf ++ ++ # We check with '-c' and '-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle '-M -o', and we need to detect this. Also, some Intel ++ # versions had trouble with output in subdirs. ++ am__obj=sub/conftest.${OBJEXT-o} ++ am__minus_obj="-o $am__obj" ++ case $depmode in ++ gcc) ++ # This depmode causes a compiler race in universal mode. ++ test "$am__universal" = false || continue ++ ;; ++ nosideeffect) ++ # After this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested. ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi ++ ;; ++ msvc7 | msvc7msys | msvisualcpp | msvcmsys) ++ # This compiler won't grok '-c -o', but also, the minuso test has ++ # not run yet. These depmodes are late enough in the game, and ++ # so weak that their functioning should not be impacted. ++ am__obj=conftest.${OBJEXT-o} ++ am__minus_obj= ++ ;; ++ none) break ;; ++ esac ++ if depmode=$depmode \ ++ source=sub/conftest.c object=$am__obj \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CC_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_CC_dependencies_compiler_type=none ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 ++$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } ++CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type ++ ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then ++ am__fastdepCC_TRUE= ++ am__fastdepCC_FALSE='#' ++else ++ am__fastdepCC_TRUE='#' ++ am__fastdepCC_FALSE= ++fi ++ ++ ++ ++# POSIX will say in a future version that running "rm -f" with no argument ++# is OK; and we want to be able to make that assumption in our Makefile ++# recipes. So use an aggressive probe to check that the usage we want is ++# actually supported "in the wild" to an acceptable degree. ++# See automake bug#10828. ++# To make any issue more visible, cause the running configure to be aborted ++# by default if the 'rm' program in use doesn't match our expectations; the ++# user can still override this though. ++if rm -f && rm -fr && rm -rf; then : OK; else ++ cat >&2 <<'END' ++Oops! ++ ++Your 'rm' program seems unable to run without file operands specified ++on the command line, even when the '-f' option is present. This is contrary ++to the behaviour of most rm programs out there, and not conforming with ++the upcoming POSIX standard: ++ ++Please tell bug-automake@gnu.org about your system, including the value ++of your $PATH and any error possibly output before this message. This ++can help us improve future automake versions. ++ ++END ++ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then ++ echo 'Configuration will proceed anyway, since you have set the' >&2 ++ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 ++ echo >&2 ++ else ++ cat >&2 <<'END' ++Aborting the configuration process, to ensure you take notice of the issue. ++ ++You can download and install GNU coreutils to get an 'rm' implementation ++that behaves properly: . ++ ++If you want to complete the configuration process using your problematic ++'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM ++to "yes", and re-run configure. ++ ++END ++ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 ++ fi ++fi ++ ++ ++# Tell Autoheader to include templates for PACKAGE and VERSION in ++# config.h.in. ++ ++ ++ ++# Command-line options. ++ ++# Enable large-file support. ++# Check whether --enable-largefile was given. ++if test "${enable_largefile+set}" = set; then : ++ enableval=$enable_largefile; ++fi ++ ++if test "$enable_largefile" != no; then ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 ++$as_echo_n "checking for special C compiler options needed for large files... " >&6; } ++if ${ac_cv_sys_largefile_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_cv_sys_largefile_CC=no ++ if test "$GCC" != yes; then ++ ac_save_CC=$CC ++ while :; do ++ # IRIX 6.2 and later do not support large files by default, ++ # so use the C compiler's -n32 option if that helps. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++ if ac_fn_c_try_compile "$LINENO"; then : ++ break ++fi ++rm -f core conftest.err conftest.$ac_objext ++ CC="$CC -n32" ++ if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_sys_largefile_CC=' -n32'; break ++fi ++rm -f core conftest.err conftest.$ac_objext ++ break ++ done ++ CC=$ac_save_CC ++ rm -f conftest.$ac_ext ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 ++$as_echo "$ac_cv_sys_largefile_CC" >&6; } ++ if test "$ac_cv_sys_largefile_CC" != no; then ++ CC=$CC$ac_cv_sys_largefile_CC ++ fi ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 ++$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } ++if ${ac_cv_sys_file_offset_bits+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ while :; do ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_sys_file_offset_bits=no; break ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#define _FILE_OFFSET_BITS 64 ++#include ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_sys_file_offset_bits=64; break ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cv_sys_file_offset_bits=unknown ++ break ++done ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 ++$as_echo "$ac_cv_sys_file_offset_bits" >&6; } ++case $ac_cv_sys_file_offset_bits in #( ++ no | unknown) ;; ++ *) ++cat >>confdefs.h <<_ACEOF ++#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits ++_ACEOF ++;; ++esac ++rm -rf conftest* ++ if test $ac_cv_sys_file_offset_bits = unknown; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 ++$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } ++if ${ac_cv_sys_large_files+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ while :; do ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_sys_large_files=no; break ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#define _LARGE_FILES 1 ++#include ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_sys_large_files=1; break ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cv_sys_large_files=unknown ++ break ++done ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 ++$as_echo "$ac_cv_sys_large_files" >&6; } ++case $ac_cv_sys_large_files in #( ++ no | unknown) ;; ++ *) ++cat >>confdefs.h <<_ACEOF ++#define _LARGE_FILES $ac_cv_sys_large_files ++_ACEOF ++;; ++esac ++rm -rf conftest* ++ fi ++ ++ ++fi ++ ++ ++ ++# Check whether --with-cross-host was given. ++if test "${with_cross_host+set}" = set; then : ++ withval=$with_cross_host; ++fi ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-version-specific-runtime-libs" >&5 ++$as_echo_n "checking for --enable-version-specific-runtime-libs... " >&6; } ++# Check whether --enable-version-specific-runtime-libs was given. ++if test "${enable_version_specific_runtime_libs+set}" = set; then : ++ enableval=$enable_version_specific_runtime_libs; case "$enableval" in ++ yes) version_specific_libs=yes ;; ++ no) version_specific_libs=no ;; ++ *) as_fn_error $? "Unknown argument to enable/disable version-specific libs" "$LINENO" 5;; ++ esac ++else ++ version_specific_libs=no ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $version_specific_libs" >&5 ++$as_echo "$version_specific_libs" >&6; } ++ ++ ++# Check whether --with-slibdir was given. ++if test "${with_slibdir+set}" = set; then : ++ withval=$with_slibdir; slibdir="$with_slibdir" ++else ++ if test "${version_specific_libs}" = yes; then ++ slibdir='$(libsubdir)' ++elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then ++ slibdir='$(exec_prefix)/$(host_noncanonical)/lib' ++else ++ slibdir='$(libdir)' ++fi ++fi ++ ++ ++ ++# Calculate toolexeclibdir ++# Also toolexecdir, though it's only used in toolexeclibdir ++toolexecdir=no ++toolexeclibdir=no ++case ${version_specific_libs} in ++ yes) ++ # Need the gcc compiler version to know where to install libraries ++ # and header files if --enable-version-specific-runtime-libs option ++ # is selected. ++ toolexecdir='$(libdir)/gcc/$(target_noncanonical)' ++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' ++ ;; ++ no) ++ if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ # Install a library built with a cross compiler in tooldir, not libdir. ++ toolexecdir='$(exec_prefix)/$(target_noncanonical)' ++ toolexeclibdir='$(toolexecdir)/lib' ++ else ++ toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' ++ toolexeclibdir='$(libdir)' ++ fi ++ multi_os_directory=`$CC -print-multi-os-directory` ++ case $multi_os_directory in ++ .) ;; # Avoid trailing /. ++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; ++ esac ++ ;; ++esac ++ ++ ++ ++# Add support for --enable-maintainer-mode={yes,no} to configure. ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 ++$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } ++ # Check whether --enable-maintainer-mode was given. ++if test "${enable_maintainer_mode+set}" = set; then : ++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval ++else ++ USE_MAINTAINER_MODE=no ++fi ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 ++$as_echo "$USE_MAINTAINER_MODE" >&6; } ++ if test $USE_MAINTAINER_MODE = yes; then ++ MAINTAINER_MODE_TRUE= ++ MAINTAINER_MODE_FALSE='#' ++else ++ MAINTAINER_MODE_TRUE='#' ++ MAINTAINER_MODE_FALSE= ++fi ++ ++ MAINT=$MAINTAINER_MODE_TRUE ++ ++ ++ ++# We must force CC to /not/ be precious variables; otherwise ++# the wrong, non-multilib-adjusted value will be used in multilibs. ++# As a side effect, we have to subst CFLAGS ourselves. ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}gcc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="${ac_tool_prefix}gcc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_CC"; then ++ ac_ct_CC=$CC ++ # Extract the first word of "gcc", so it can be a program name with args. ++set dummy gcc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_CC="gcc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 ++$as_echo "$ac_ct_CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++else ++ CC="$ac_cv_prog_CC" ++fi ++ ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}cc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="${ac_tool_prefix}cc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ fi ++fi ++if test -z "$CC"; then ++ # Extract the first word of "cc", so it can be a program name with args. ++set dummy cc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++ ac_prog_rejected=no ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ++ ac_prog_rejected=yes ++ continue ++ fi ++ ac_cv_prog_CC="cc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++if test $ac_prog_rejected = yes; then ++ # We found a bogon in the path, so make sure we never use it. ++ set dummy $ac_cv_prog_CC ++ shift ++ if test $# != 0; then ++ # We chose a different compiler from the bogus one. ++ # However, it has the same basename, so the bogon will be chosen ++ # first if we set CC to just the basename; use the full file name. ++ shift ++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" ++ fi ++fi ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in cl.exe ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$CC" && break ++ done ++fi ++if test -z "$CC"; then ++ ac_ct_CC=$CC ++ for ac_prog in cl.exe ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_CC="$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 ++$as_echo "$ac_ct_CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$ac_ct_CC" && break ++done ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++fi ++ ++fi ++ ++ ++test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "no acceptable C compiler found in \$PATH ++See \`config.log' for more details" "$LINENO" 5; } ++ ++# Provide some information about the compiler. ++$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 ++set X $ac_compile ++ac_compiler=$2 ++for ac_option in --version -v -V -qversion; do ++ { { ac_try="$ac_compiler $ac_option >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compiler $ac_option >&5") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ sed '10a\ ++... rest of stderr output deleted ... ++ 10q' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ fi ++ rm -f conftest.er1 conftest.err ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++done ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 ++$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } ++if ${ac_cv_c_compiler_gnu+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++#ifndef __GNUC__ ++ choke me ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_compiler_gnu=yes ++else ++ ac_compiler_gnu=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ac_cv_c_compiler_gnu=$ac_compiler_gnu ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 ++$as_echo "$ac_cv_c_compiler_gnu" >&6; } ++if test $ac_compiler_gnu = yes; then ++ GCC=yes ++else ++ GCC= ++fi ++ac_test_CFLAGS=${CFLAGS+set} ++ac_save_CFLAGS=$CFLAGS ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 ++$as_echo_n "checking whether $CC accepts -g... " >&6; } ++if ${ac_cv_prog_cc_g+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_save_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ ac_cv_prog_cc_g=no ++ CFLAGS="-g" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_g=yes ++else ++ CFLAGS="" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ++else ++ ac_c_werror_flag=$ac_save_c_werror_flag ++ CFLAGS="-g" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_g=yes ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 ++$as_echo "$ac_cv_prog_cc_g" >&6; } ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS=$ac_save_CFLAGS ++elif test $ac_cv_prog_cc_g = yes; then ++ if test "$GCC" = yes; then ++ CFLAGS="-g -O2" ++ else ++ CFLAGS="-g" ++ fi ++else ++ if test "$GCC" = yes; then ++ CFLAGS="-O2" ++ else ++ CFLAGS= ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 ++$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } ++if ${ac_cv_prog_cc_c89+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_cv_prog_cc_c89=no ++ac_save_CC=$CC ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++#include ++struct stat; ++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ ++struct buf { int x; }; ++FILE * (*rcsopen) (struct buf *, struct stat *, int); ++static char *e (p, i) ++ char **p; ++ int i; ++{ ++ return p[i]; ++} ++static char *f (char * (*g) (char **, int), char **p, ...) ++{ ++ char *s; ++ va_list v; ++ va_start (v,p); ++ s = g (p, va_arg (v,int)); ++ va_end (v); ++ return s; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); ++int argc; ++char **argv; ++int ++main () ++{ ++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ++ ; ++ return 0; ++} ++_ACEOF ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++do ++ CC="$ac_save_CC $ac_arg" ++ if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_c89=$ac_arg ++fi ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++ ++fi ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 ++$as_echo "none needed" >&6; } ;; ++ xno) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 ++$as_echo "unsupported" >&6; } ;; ++ *) ++ CC="$CC $ac_cv_prog_cc_c89" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 ++$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; ++esac ++if test "x$ac_cv_prog_cc_c89" != xno; then : ++ ++fi ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 ++$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } ++if ${am_cv_prog_cc_c_o+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++ # Make sure it works both with $CC and with simple cc. ++ # Following AC_PROG_CC_C_O, we do the test twice because some ++ # compilers refuse to overwrite an existing .o file with -o, ++ # though they will create one. ++ am_cv_prog_cc_c_o=yes ++ for am_i in 1 2; do ++ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ++ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } \ ++ && test -f conftest2.$ac_objext; then ++ : OK ++ else ++ am_cv_prog_cc_c_o=no ++ break ++ fi ++ done ++ rm -f core conftest* ++ unset am_i ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 ++$as_echo "$am_cv_prog_cc_c_o" >&6; } ++if test "$am_cv_prog_cc_c_o" != yes; then ++ # Losing compiler, so override with the script. ++ # FIXME: It is wrong to rewrite CC. ++ # But if we don't then we get into trouble of one sort or another. ++ # A longer-term fix would be to have automake use am__CC in this case, ++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" ++ CC="$am_aux_dir/compile $CC" ++fi ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++# By default we simply use the C compiler to build assembly code. ++ ++test "${CCAS+set}" = set || CCAS=$CC ++test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS ++ ++ ++ ++depcc="$CCAS" am_compiler_list= ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 ++$as_echo_n "checking dependency style of $depcc... " >&6; } ++if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named 'D' -- because '-MD' means "put the output ++ # in D". ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub ++ ++ am_cv_CCAS_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` ++ fi ++ am__universal=false ++ ++ ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with ++ # Solaris 10 /bin/sh. ++ echo '/* dummy */' > sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf ++ ++ # We check with '-c' and '-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle '-M -o', and we need to detect this. Also, some Intel ++ # versions had trouble with output in subdirs. ++ am__obj=sub/conftest.${OBJEXT-o} ++ am__minus_obj="-o $am__obj" ++ case $depmode in ++ gcc) ++ # This depmode causes a compiler race in universal mode. ++ test "$am__universal" = false || continue ++ ;; ++ nosideeffect) ++ # After this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested. ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi ++ ;; ++ msvc7 | msvc7msys | msvisualcpp | msvcmsys) ++ # This compiler won't grok '-c -o', but also, the minuso test has ++ # not run yet. These depmodes are late enough in the game, and ++ # so weak that their functioning should not be impacted. ++ am__obj=conftest.${OBJEXT-o} ++ am__minus_obj= ++ ;; ++ none) break ;; ++ esac ++ if depmode=$depmode \ ++ source=sub/conftest.c object=$am__obj \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CCAS_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_CCAS_dependencies_compiler_type=none ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 ++$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } ++CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type ++ ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then ++ am__fastdepCCAS_TRUE= ++ am__fastdepCCAS_FALSE='#' ++else ++ am__fastdepCCAS_TRUE='#' ++ am__fastdepCCAS_FALSE= ++fi ++ ++ ++ ++ ++ ++# In order to override CFLAGS_FOR_TARGET, all of our special flags go ++# in XCFLAGS. But we need them in CFLAGS during configury. So put them ++# in both places for now and restore CFLAGS at the end of config. ++save_CFLAGS="$CFLAGS" ++ ++# Find other programs we need. ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ar; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_AR+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$AR"; then ++ ac_cv_prog_AR="$AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_AR="${ac_tool_prefix}ar" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++AR=$ac_cv_prog_AR ++if test -n "$AR"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 ++$as_echo "$AR" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_AR"; then ++ ac_ct_AR=$AR ++ # Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_AR+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_AR"; then ++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_AR="ar" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_AR=$ac_cv_prog_ac_ct_AR ++if test -n "$ac_ct_AR"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 ++$as_echo "$ac_ct_AR" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_AR" = x; then ++ AR="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi ++else ++ AR="$ac_cv_prog_AR" ++fi ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args. ++set dummy ${ac_tool_prefix}nm; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_NM+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$NM"; then ++ ac_cv_prog_NM="$NM" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_NM="${ac_tool_prefix}nm" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++NM=$ac_cv_prog_NM ++if test -n "$NM"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 ++$as_echo "$NM" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_NM"; then ++ ac_ct_NM=$NM ++ # Extract the first word of "nm", so it can be a program name with args. ++set dummy nm; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_NM+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_NM"; then ++ ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_NM="nm" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_NM=$ac_cv_prog_ac_ct_NM ++if test -n "$ac_ct_NM"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5 ++$as_echo "$ac_ct_NM" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_NM" = x; then ++ NM="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ NM=$ac_ct_NM ++ fi ++else ++ NM="$ac_cv_prog_NM" ++fi ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_RANLIB+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$RANLIB"; then ++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++RANLIB=$ac_cv_prog_RANLIB ++if test -n "$RANLIB"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 ++$as_echo "$RANLIB" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_RANLIB"; then ++ ac_ct_RANLIB=$RANLIB ++ # Extract the first word of "ranlib", so it can be a program name with args. ++set dummy ranlib; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_RANLIB"; then ++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_RANLIB="ranlib" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ++if test -n "$ac_ct_RANLIB"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 ++$as_echo "$ac_ct_RANLIB" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB="ranlib-not-found-in-path-error" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi ++else ++ RANLIB="$ac_cv_prog_RANLIB" ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } ++set x ${MAKE-make} ++ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh ++all: ++ @echo '@@@%%%=$(MAKE)=@@@%%%' ++_ACEOF ++# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac ++rm -f conftest.make ++fi ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ SET_MAKE= ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ SET_MAKE="MAKE=${MAKE-make}" ++fi ++ ++ ++ ++# Initialize libtool. ++case `pwd` in ++ *\ * | *\ *) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 ++$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; ++esac ++ ++ ++ ++macro_version='2.2.7a' ++macro_revision='1.3134' ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ltmain="$ac_aux_dir/ltmain.sh" ++ ++# Backslashify metacharacters that are still active within ++# double-quoted strings. ++sed_quote_subst='s/\(["`$\\]\)/\\\1/g' ++ ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\(["`\\]\)/\\\1/g' ++ ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++ ++# Sed substitution to delay expansion of an escaped single quote. ++delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' ++ ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' ++ ++ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ++ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 ++$as_echo_n "checking how to print strings... " >&6; } ++# Test print first, because it will be a builtin if present. ++if test "X`print -r -- -n 2>/dev/null`" = X-n && \ ++ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ++ ECHO='print -r --' ++elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ++ ECHO='printf %s\n' ++else ++ # Use this function as a fallback that always works. ++ func_fallback_echo () ++ { ++ eval 'cat <<_LTECHO_EOF ++$1 ++_LTECHO_EOF' ++ } ++ ECHO='func_fallback_echo' ++fi ++ ++# func_echo_all arg... ++# Invoke $ECHO with all args, space-separated. ++func_echo_all () ++{ ++ $ECHO "" ++} ++ ++case "$ECHO" in ++ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 ++$as_echo "printf" >&6; } ;; ++ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 ++$as_echo "print -r" >&6; } ;; ++ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 ++$as_echo "cat" >&6; } ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 ++$as_echo_n "checking for a sed that does not truncate output... " >&6; } ++if ${ac_cv_path_SED+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ ++ for ac_i in 1 2 3 4 5 6 7; do ++ ac_script="$ac_script$as_nl$ac_script" ++ done ++ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed ++ { ac_script=; unset ac_script;} ++ if test -z "$SED"; then ++ ac_path_SED_found=false ++ # Loop through the user's path and test for each of PROGNAME-LIST ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in sed gsed; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" ++ as_fn_executable_p "$ac_path_SED" || continue ++# Check for GNU ac_path_SED and select it if it is found. ++ # Check for GNU $ac_path_SED ++case `"$ac_path_SED" --version 2>&1` in ++*GNU*) ++ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; ++*) ++ ac_count=0 ++ $as_echo_n 0123456789 >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ $as_echo '' >> "conftest.nl" ++ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ as_fn_arith $ac_count + 1 && ac_count=$as_val ++ if test $ac_count -gt ${ac_path_SED_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_SED="$ac_path_SED" ++ ac_path_SED_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ $ac_path_SED_found && break 3 ++ done ++ done ++ done ++IFS=$as_save_IFS ++ if test -z "$ac_cv_path_SED"; then ++ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 ++ fi ++else ++ ac_cv_path_SED=$SED ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 ++$as_echo "$ac_cv_path_SED" >&6; } ++ SED="$ac_cv_path_SED" ++ rm -f conftest.sed ++ ++test -z "$SED" && SED=sed ++Xsed="$SED -e 1s/^X//" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 ++$as_echo_n "checking for fgrep... " >&6; } ++if ${ac_cv_path_FGREP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 ++ then ac_cv_path_FGREP="$GREP -F" ++ else ++ if test -z "$FGREP"; then ++ ac_path_FGREP_found=false ++ # Loop through the user's path and test for each of PROGNAME-LIST ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in fgrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" ++ as_fn_executable_p "$ac_path_FGREP" || continue ++# Check for GNU ac_path_FGREP and select it if it is found. ++ # Check for GNU $ac_path_FGREP ++case `"$ac_path_FGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; ++*) ++ ac_count=0 ++ $as_echo_n 0123456789 >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ $as_echo 'FGREP' >> "conftest.nl" ++ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ as_fn_arith $ac_count + 1 && ac_count=$as_val ++ if test $ac_count -gt ${ac_path_FGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_FGREP="$ac_path_FGREP" ++ ac_path_FGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ $ac_path_FGREP_found && break 3 ++ done ++ done ++ done ++IFS=$as_save_IFS ++ if test -z "$ac_cv_path_FGREP"; then ++ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 ++ fi ++else ++ ac_cv_path_FGREP=$FGREP ++fi ++ ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 ++$as_echo "$ac_cv_path_FGREP" >&6; } ++ FGREP="$ac_cv_path_FGREP" ++ ++ ++test -z "$GREP" && GREP=grep ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-gnu-ld was given. ++if test "${with_gnu_ld+set}" = set; then : ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes ++else ++ with_gnu_ld=no ++fi ++ ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 ++$as_echo_n "checking for ld used by $CC... " >&6; } ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [\\/]* | ?:[\\/]*) ++ re_direlt='/[^/][^/]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` ++ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 ++$as_echo_n "checking for GNU ld... " >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 ++$as_echo_n "checking for non-GNU ld... " >&6; } ++fi ++if ${lt_cv_path_LD+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -z "$LD"; then ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ lt_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$lt_cv_path_LD" -v 2>&1 &5 ++$as_echo "$LD" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 ++$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } ++if ${lt_cv_prog_gnu_ld+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ # I'd rather use --version here, but apparently some GNU lds only accept -v. ++case `$LD -v 2>&1 &5 ++$as_echo "$lt_cv_prog_gnu_ld" >&6; } ++with_gnu_ld=$lt_cv_prog_gnu_ld ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 ++$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } ++if ${lt_cv_path_NM+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$NM"; then ++ # Let the user override the nm to test. ++ lt_nm_to_check="$NM" ++ else ++ lt_nm_to_check="${ac_tool_prefix}nm" ++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then ++ lt_nm_to_check="$lt_nm_to_check nm" ++ fi ++ fi ++ for lt_tmp_nm in "$lt_nm_to_check"; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ # Strip out any user-provided options from the nm to test twice, ++ # the first time to test to see if nm (rather than its options) has ++ # an explicit path, the second time to yield a file which can be ++ # nm'ed itself. ++ tmp_nm_path="`$ECHO "$lt_tmp_nm" | sed 's, -.*$,,'`" ++ case "$tmp_nm_path" in ++ */*|*\\*) tmp_nm="$lt_tmp_nm";; ++ *) tmp_nm="$ac_dir/$lt_tmp_nm";; ++ esac ++ tmp_nm_to_nm="`$ECHO "$tmp_nm" | sed 's, -.*$,,'`" ++ if test -f "$tmp_nm_to_nm" || test -f "$tmp_nm_to_nm$ac_exeext" ; then ++ # Check to see if the nm accepts a BSD-compat flag. ++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: ++ # nm: unknown option "B" ignored ++ case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in ++ *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B" ++ break ++ ;; ++ *) ++ case `"$tmp_nm" -p "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in ++ *$tmp_nm*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ done ++ IFS="$lt_save_ifs" ++ done ++ : ${lt_cv_path_NM=no} ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 ++$as_echo "$lt_cv_path_NM" >&6; } ++if test "$lt_cv_path_NM" != "no"; then ++ NM="$lt_cv_path_NM" ++else ++ # Didn't find any BSD compatible name lister, look for dumpbin. ++ if test -n "$DUMPBIN"; then : ++ # Let the user override the test. ++ else ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in dumpbin "link -dump" ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_DUMPBIN+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$DUMPBIN"; then ++ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++DUMPBIN=$ac_cv_prog_DUMPBIN ++if test -n "$DUMPBIN"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 ++$as_echo "$DUMPBIN" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$DUMPBIN" && break ++ done ++fi ++if test -z "$DUMPBIN"; then ++ ac_ct_DUMPBIN=$DUMPBIN ++ for ac_prog in dumpbin "link -dump" ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_DUMPBIN"; then ++ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN ++if test -n "$ac_ct_DUMPBIN"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 ++$as_echo "$ac_ct_DUMPBIN" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$ac_ct_DUMPBIN" && break ++done ++ ++ if test "x$ac_ct_DUMPBIN" = x; then ++ DUMPBIN=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ DUMPBIN=$ac_ct_DUMPBIN ++ fi ++fi ++ ++ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in ++ *COFF*) ++ DUMPBIN="$DUMPBIN -symbols" ++ ;; ++ *) ++ DUMPBIN=: ++ ;; ++ esac ++ fi ++ ++ if test "$DUMPBIN" != ":"; then ++ NM="$DUMPBIN" ++ fi ++fi ++test -z "$NM" && NM=nm ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 ++$as_echo_n "checking the name lister ($NM) interface... " >&6; } ++if ${lt_cv_nm_interface+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_nm_interface="BSD nm" ++ echo "int some_variable = 0;" > conftest.$ac_ext ++ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) ++ (eval "$ac_compile" 2>conftest.err) ++ cat conftest.err >&5 ++ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) ++ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) ++ cat conftest.err >&5 ++ (eval echo "\"\$as_me:$LINENO: output\"" >&5) ++ cat conftest.out >&5 ++ if $GREP 'External.*some_variable' conftest.out > /dev/null; then ++ lt_cv_nm_interface="MS dumpbin" ++ fi ++ rm -f conftest* ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 ++$as_echo "$lt_cv_nm_interface" >&6; } ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 ++$as_echo_n "checking whether ln -s works... " >&6; } ++LN_S=$as_ln_s ++if test "$LN_S" = "ln -s"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 ++$as_echo "no, using $LN_S" >&6; } ++fi ++ ++# find the maximum length of command line arguments ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 ++$as_echo_n "checking the maximum length of command line arguments... " >&6; } ++if ${lt_cv_sys_max_cmd_len+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ i=0 ++ teststring="ABCD" ++ ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right ++ ;; ++ ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; ++ ;; ++ ++ cygwin* | mingw* | cegcc*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ mint*) ++ # On MiNT this can take a long time and run out of memory. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` ++ else ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs ++ fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; ++ ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 ++ ;; ++ ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac ++ fi ++ ;; ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` ++ else ++ lt_cv_sys_max_cmd_len=32768 ++ fi ++ ;; ++ *) ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ else ++ # Make teststring a little bigger before we do anything with it. ++ # a 1K string should be a reasonable start. ++ for i in 1 2 3 4 5 6 7 8 ; do ++ teststring=$teststring$teststring ++ done ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ # If test is not a shell built-in, we'll probably end up computing a ++ # maximum length that is only half of the actual maximum length, but ++ # we can't tell. ++ while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ ++ = "X$teststring$teststring"; } >/dev/null 2>&1 && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ # Only check the string length outside the loop. ++ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on ++ # massive amounts of additional arguments before passing them to the ++ # linker. It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ fi ++ ;; ++ esac ++ ++fi ++ ++if test -n $lt_cv_sys_max_cmd_len ; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 ++$as_echo "$lt_cv_sys_max_cmd_len" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 ++$as_echo "none" >&6; } ++fi ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++ ++ ++ ++ ++ ++: ${CP="cp -f"} ++: ${MV="mv -f"} ++: ${RM="rm -f"} ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 ++$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } ++# Try some XSI features ++xsi_shell=no ++( _lt_dummy="a/b/c" ++ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ ++ = c,a/b,, \ ++ && eval 'test $(( 1 + 1 )) -eq 2 \ ++ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ ++ && xsi_shell=yes ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 ++$as_echo "$xsi_shell" >&6; } ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 ++$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } ++lt_shell_append=no ++( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ ++ >/dev/null 2>&1 \ ++ && lt_shell_append=yes ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 ++$as_echo "$lt_shell_append" >&6; } ++ ++ ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ lt_unset=unset ++else ++ lt_unset=false ++fi ++ ++ ++ ++ ++ ++# test EBCDIC or ASCII ++case `echo X|tr X '\101'` in ++ A) # ASCII based system ++ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr ++ lt_SP2NL='tr \040 \012' ++ lt_NL2SP='tr \015\012 \040\040' ++ ;; ++ *) # EBCDIC based system ++ lt_SP2NL='tr \100 \n' ++ lt_NL2SP='tr \r\n \100\100' ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 ++$as_echo_n "checking for $LD option to reload object files... " >&6; } ++if ${lt_cv_ld_reload_flag+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_ld_reload_flag='-r' ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 ++$as_echo "$lt_cv_ld_reload_flag" >&6; } ++reload_flag=$lt_cv_ld_reload_flag ++case $reload_flag in ++"" | " "*) ;; ++*) reload_flag=" $reload_flag" ;; ++esac ++reload_cmds='$LD$reload_flag -o $output$reload_objs' ++case $host_os in ++ darwin*) ++ if test "$GCC" = yes; then ++ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' ++ else ++ reload_cmds='$LD$reload_flag -o $output$reload_objs' ++ fi ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. ++set dummy ${ac_tool_prefix}objdump; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_OBJDUMP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$OBJDUMP"; then ++ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++OBJDUMP=$ac_cv_prog_OBJDUMP ++if test -n "$OBJDUMP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 ++$as_echo "$OBJDUMP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_OBJDUMP"; then ++ ac_ct_OBJDUMP=$OBJDUMP ++ # Extract the first word of "objdump", so it can be a program name with args. ++set dummy objdump; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_OBJDUMP"; then ++ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_OBJDUMP="objdump" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP ++if test -n "$ac_ct_OBJDUMP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 ++$as_echo "$ac_ct_OBJDUMP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_OBJDUMP" = x; then ++ OBJDUMP="false" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ OBJDUMP=$ac_ct_OBJDUMP ++ fi ++else ++ OBJDUMP="$ac_cv_prog_OBJDUMP" ++fi ++ ++test -z "$OBJDUMP" && OBJDUMP=objdump ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 ++$as_echo_n "checking how to recognize dependent libraries... " >&6; } ++if ${lt_cv_deplibs_check_method+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_file_magic_cmd='$MAGIC_CMD' ++lt_cv_file_magic_test_file= ++lt_cv_deplibs_check_method='unknown' ++# Need to set the preceding variable on all platforms that support ++# interlibrary dependencies. ++# 'none' -- dependencies not supported. ++# `unknown' -- same as none, but documents that we really don't know. ++# 'pass_all' -- all dependencies passed with no checks. ++# 'test_compile' -- check by making test program. ++# 'file_magic [[regex]]' -- check by looking for files in library path ++# which responds to the $file_magic_cmd with a given extended regex. ++# If you have `file' or equivalent on your system and you're not sure ++# whether `pass_all' will *always* work, you probably want this one. ++ ++case $host_os in ++aix[4-9]*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++beos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++bsdi[45]*) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' ++ lt_cv_file_magic_cmd='/usr/bin/file -L' ++ lt_cv_file_magic_test_file=/shlib/libc.so ++ ;; ++ ++cygwin*) ++ # func_win32_libid is a shell function defined in ltmain.sh ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ ;; ++ ++mingw* | pw32*) ++ # Base MSYS/MinGW do not provide the 'file' command needed by ++ # func_win32_libid shell function, so use a weaker test based on 'objdump', ++ # unless we find 'file', for example because we are cross-compiling. ++ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. ++ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ fi ++ ;; ++ ++cegcc*) ++ # use the weaker test based on 'objdump'. See mingw*. ++ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ ;; ++ ++darwin* | rhapsody*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++freebsd* | dragonfly*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then ++ case $host_cpu in ++ i*86 ) ++ # Not sure whether the presence of OpenBSD here was a mistake. ++ # Let's accept both of them until this is cleared up. ++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ++ ;; ++ esac ++ else ++ lt_cv_deplibs_check_method=pass_all ++ fi ++ ;; ++ ++gnu*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++haiku*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++hpux10.20* | hpux11*) ++ lt_cv_file_magic_cmd=/usr/bin/file ++ case $host_cpu in ++ ia64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' ++ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ++ ;; ++ hppa*64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' ++ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ++ ;; ++ *) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' ++ lt_cv_file_magic_test_file=/usr/lib/libc.sl ++ ;; ++ esac ++ ;; ++ ++interix[3-9]*) ++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $LD in ++ *-32|*"-32 ") libmagic=32-bit;; ++ *-n32|*"-n32 ") libmagic=N32;; ++ *-64|*"-64 ") libmagic=64-bit;; ++ *) libmagic=never-match;; ++ esac ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' ++ fi ++ ;; ++ ++newos6*) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=/usr/lib/libnls.so ++ ;; ++ ++*nto* | *qnx*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++openbsd*) ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' ++ fi ++ ;; ++ ++osf3* | osf4* | osf5*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++rdos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++solaris*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++sysv4 | sysv4.3*) ++ case $host_vendor in ++ motorola) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ++ ;; ++ ncr) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ sequent) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ++ ;; ++ sni) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" ++ lt_cv_file_magic_test_file=/lib/libc.so ++ ;; ++ siemens) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ pc) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ esac ++ ;; ++ ++tpf*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++vxworks*) ++ # Assume VxWorks cross toolchains are built on Linux, possibly ++ # as canadian for Windows hosts. ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++esac ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 ++$as_echo "$lt_cv_deplibs_check_method" >&6; } ++file_magic_cmd=$lt_cv_file_magic_cmd ++deplibs_check_method=$lt_cv_deplibs_check_method ++test -z "$deplibs_check_method" && deplibs_check_method=unknown ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++plugin_option= ++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll" ++for plugin in $plugin_names; do ++ plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin` ++ if test x$plugin_so = x$plugin; then ++ plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin` ++ fi ++ if test x$plugin_so != x$plugin; then ++ plugin_option="--plugin $plugin_so" ++ break ++ fi ++done ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ar; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_AR+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$AR"; then ++ ac_cv_prog_AR="$AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_AR="${ac_tool_prefix}ar" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++AR=$ac_cv_prog_AR ++if test -n "$AR"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 ++$as_echo "$AR" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_AR"; then ++ ac_ct_AR=$AR ++ # Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_AR+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_AR"; then ++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_AR="ar" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_AR=$ac_cv_prog_ac_ct_AR ++if test -n "$ac_ct_AR"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 ++$as_echo "$ac_ct_AR" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_AR" = x; then ++ AR="false" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi ++else ++ AR="$ac_cv_prog_AR" ++fi ++ ++test -z "$AR" && AR=ar ++if test -n "$plugin_option"; then ++ if $AR --help 2>&1 | grep -q "\--plugin"; then ++ touch conftest.c ++ $AR $plugin_option rc conftest.a conftest.c ++ if test "$?" != 0; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5 ++$as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;} ++ else ++ AR="$AR $plugin_option" ++ fi ++ rm -f conftest.* ++ fi ++fi ++test -z "$AR_FLAGS" && AR_FLAGS=cru ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_STRIP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 ++$as_echo "$STRIP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_STRIP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 ++$as_echo "$ac_ct_STRIP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++test -z "$STRIP" && STRIP=: ++ ++ ++ ++ ++ ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_RANLIB+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$RANLIB"; then ++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++RANLIB=$ac_cv_prog_RANLIB ++if test -n "$RANLIB"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 ++$as_echo "$RANLIB" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_RANLIB"; then ++ ac_ct_RANLIB=$RANLIB ++ # Extract the first word of "ranlib", so it can be a program name with args. ++set dummy ranlib; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_RANLIB"; then ++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_RANLIB="ranlib" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ++if test -n "$ac_ct_RANLIB"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 ++$as_echo "$ac_ct_RANLIB" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi ++else ++ RANLIB="$ac_cv_prog_RANLIB" ++fi ++ ++test -z "$RANLIB" && RANLIB=: ++if test -n "$plugin_option" && test "$RANLIB" != ":"; then ++ if $RANLIB --help 2>&1 | grep -q "\--plugin"; then ++ RANLIB="$RANLIB $plugin_option" ++ fi ++fi ++ ++ ++ ++ ++ ++ ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= ++ ++if test -n "$RANLIB"; then ++ case $host_os in ++ openbsd*) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ++ ;; ++ *) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ++ ;; ++ esac ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++fi ++ ++case $host_os in ++ darwin*) ++ lock_old_archive_extraction=yes ;; ++ *) ++ lock_old_archive_extraction=no ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 ++$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } ++if ${lt_cv_sys_global_symbol_pipe+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] ++ ++# Character class describing NM global symbol codes. ++symcode='[BCDEGRST]' ++ ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([_A-Za-z][_A-Za-z0-9]*\)' ++ ++# Define system-specific variables. ++case $host_os in ++aix*) ++ symcode='[BCDT]' ++ ;; ++cygwin* | mingw* | pw32* | cegcc*) ++ symcode='[ABCDGISTW]' ++ ;; ++hpux*) ++ if test "$host_cpu" = ia64; then ++ symcode='[ABCDEGRST]' ++ fi ++ ;; ++irix* | nonstopux*) ++ symcode='[BCDEGRST]' ++ ;; ++osf*) ++ symcode='[BCDEGQRST]' ++ ;; ++solaris*) ++ symcode='[BCDRT]' ++ ;; ++sco3.2v5*) ++ symcode='[DT]' ++ ;; ++sysv4.2uw2*) ++ symcode='[DT]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[ABDT]' ++ ;; ++sysv4) ++ symcode='[DFNSTU]' ++ ;; ++esac ++ ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[ABCDGIRSTW]' ;; ++esac ++ ++# Transform an extracted symbol line into a proper C declaration. ++# Some systems (esp. on ia64) link data and code symbols differently, ++# so use this general approach. ++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ ++# Transform an extracted symbol line into symbol name and symbol address ++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" ++ ++# Handle CRLF in mingw tool chain ++opt_cr= ++case $build_os in ++mingw*) ++ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++ ;; ++esac ++ ++# Try without a prefix underscore, then with it. ++for ac_symprfx in "" "_"; do ++ ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" ++ ++ # Write the raw and C identifiers. ++ if test "$lt_cv_nm_interface" = "MS dumpbin"; then ++ # Fake it for dumpbin and say T for any non-static function ++ # and D for any global variable. ++ # Also find C++ and __fastcall symbols from MSVC++, ++ # which start with @ or ?. ++ lt_cv_sys_global_symbol_pipe="$AWK '"\ ++" {last_section=section; section=\$ 3};"\ ++" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ ++" \$ 0!~/External *\|/{next};"\ ++" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ ++" {if(hide[section]) next};"\ ++" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ ++" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ ++" s[1]~/^[@?]/{print s[1], s[1]; next};"\ ++" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ ++" ' prfx=^$ac_symprfx" ++ else ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ fi ++ ++ # Check to see that the pipe works correctly. ++ pipe_works=no ++ ++ rm -f conftest* ++ cat > conftest.$ac_ext <<_LT_EOF ++#ifdef __cplusplus ++extern "C" { ++#endif ++char nm_test_var; ++void nm_test_func(void); ++void nm_test_func(void){} ++#ifdef __cplusplus ++} ++#endif ++int main(){nm_test_var='a';nm_test_func();return(0);} ++_LT_EOF ++ ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ # Now try to grab the symbols. ++ nlist=conftest.nm ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 ++ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s "$nlist"; then ++ # Try sorting and uniquifying the output. ++ if sort "$nlist" | uniq > "$nlist"T; then ++ mv -f "$nlist"T "$nlist" ++ else ++ rm -f "$nlist"T ++ fi ++ ++ # Make sure that we snagged all the symbols we need. ++ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then ++ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then ++ cat <<_LT_EOF > conftest.$ac_ext ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++_LT_EOF ++ # Now generate the symbol file. ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' ++ ++ cat <<_LT_EOF >> conftest.$ac_ext ++ ++/* The mapping between symbol names and symbols. */ ++const struct { ++ const char *name; ++ void *address; ++} ++lt__PROGRAM__LTX_preloaded_symbols[] = ++{ ++ { "@PROGRAM@", (void *) 0 }, ++_LT_EOF ++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext ++ cat <<\_LT_EOF >> conftest.$ac_ext ++ {0, (void *) 0} ++}; ++ ++/* This works around a problem in FreeBSD linker */ ++#ifdef FREEBSD_WORKAROUND ++static const void *lt_preloaded_setup() { ++ return lt__PROGRAM__LTX_preloaded_symbols; ++} ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++_LT_EOF ++ # Now try linking the two files. ++ mv conftest.$ac_objext conftstm.$ac_objext ++ lt_save_LIBS="$LIBS" ++ lt_save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$ac_objext" ++ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s conftest${ac_exeext}; then ++ pipe_works=yes ++ fi ++ LIBS="$lt_save_LIBS" ++ CFLAGS="$lt_save_CFLAGS" ++ else ++ echo "cannot find nm_test_func in $nlist" >&5 ++ fi ++ else ++ echo "cannot find nm_test_var in $nlist" >&5 ++ fi ++ else ++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 ++ fi ++ else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ fi ++ rm -rf conftest* conftst* ++ ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ lt_cv_sys_global_symbol_pipe= ++ fi ++done ++ ++fi ++ ++if test -z "$lt_cv_sys_global_symbol_pipe"; then ++ lt_cv_sys_global_symbol_to_cdecl= ++fi ++if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 ++$as_echo "failed" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 ++$as_echo "ok" >&6; } ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --enable-libtool-lock was given. ++if test "${enable_libtool_lock+set}" = set; then : ++ enableval=$enable_libtool_lock; ++fi ++ ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ ++# Some flags need to be propagated to the compiler or linker for good ++# libtool support. ++case $host in ++ia64-*-hpux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *ELF-32*) ++ HPUX_IA64_MODE="32" ++ ;; ++ *ELF-64*) ++ HPUX_IA64_MODE="64" ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++*-*-irix6*) ++ # Find out which ABI we are using. ++ echo '#line '$LINENO' "configure"' > conftest.$ac_ext ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" ++ ;; ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" ++ ;; ++ esac ++ else ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -32" ++ ;; ++ *N32*) ++ LD="${LD-ld} -n32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -64" ++ ;; ++ esac ++ fi ++ fi ++ rm -rf conftest* ++ ;; ++ ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ case `/usr/bin/file conftest.o` in ++ *32-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; ++ x86_64-*linux*) ++ case `/usr/bin/file conftest.o` in ++ *x86-64*) ++ LD="${LD-ld} -m elf32_x86_64" ++ ;; ++ *) ++ LD="${LD-ld} -m elf_i386" ++ ;; ++ esac ++ ;; ++ powerpc64le-*linux*) ++ LD="${LD-ld} -m elf32lppclinux" ++ ;; ++ powerpc64-*linux*) ++ LD="${LD-ld} -m elf32ppclinux" ++ ;; ++ s390x-*linux*) ++ LD="${LD-ld} -m elf_s390" ++ ;; ++ sparc64-*linux*) ++ LD="${LD-ld} -m elf32_sparc" ++ ;; ++ esac ++ ;; ++ *64-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_x86_64" ++ ;; ++ powerpcle-*linux*) ++ LD="${LD-ld} -m elf64lppc" ++ ;; ++ powerpc-*linux*) ++ LD="${LD-ld} -m elf64ppc" ++ ;; ++ s390*-*linux*|s390*-*tpf*) ++ LD="${LD-ld} -m elf64_s390" ++ ;; ++ sparc*-*linux*) ++ LD="${LD-ld} -m elf64_sparc" ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++ ++*-*-sco3.2v5*) ++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -belf" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 ++$as_echo_n "checking whether the C compiler needs -belf... " >&6; } ++if ${lt_cv_cc_needs_belf+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ lt_cv_cc_needs_belf=yes ++else ++ lt_cv_cc_needs_belf=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 ++$as_echo "$lt_cv_cc_needs_belf" >&6; } ++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then ++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf ++ CFLAGS="$SAVE_CFLAGS" ++ fi ++ ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) ++ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then ++ LD="${LD-ld} -64" ++ fi ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++esac ++ ++need_locks="$enable_libtool_lock" ++ ++ ++ case $host_os in ++ rhapsody* | darwin*) ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. ++set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_DSYMUTIL+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$DSYMUTIL"; then ++ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++DSYMUTIL=$ac_cv_prog_DSYMUTIL ++if test -n "$DSYMUTIL"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 ++$as_echo "$DSYMUTIL" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_DSYMUTIL"; then ++ ac_ct_DSYMUTIL=$DSYMUTIL ++ # Extract the first word of "dsymutil", so it can be a program name with args. ++set dummy dsymutil; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_DSYMUTIL"; then ++ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL ++if test -n "$ac_ct_DSYMUTIL"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 ++$as_echo "$ac_ct_DSYMUTIL" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_DSYMUTIL" = x; then ++ DSYMUTIL=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ DSYMUTIL=$ac_ct_DSYMUTIL ++ fi ++else ++ DSYMUTIL="$ac_cv_prog_DSYMUTIL" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. ++set dummy ${ac_tool_prefix}nmedit; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_NMEDIT+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$NMEDIT"; then ++ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++NMEDIT=$ac_cv_prog_NMEDIT ++if test -n "$NMEDIT"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 ++$as_echo "$NMEDIT" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_NMEDIT"; then ++ ac_ct_NMEDIT=$NMEDIT ++ # Extract the first word of "nmedit", so it can be a program name with args. ++set dummy nmedit; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_NMEDIT"; then ++ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_NMEDIT="nmedit" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT ++if test -n "$ac_ct_NMEDIT"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 ++$as_echo "$ac_ct_NMEDIT" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_NMEDIT" = x; then ++ NMEDIT=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ NMEDIT=$ac_ct_NMEDIT ++ fi ++else ++ NMEDIT="$ac_cv_prog_NMEDIT" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. ++set dummy ${ac_tool_prefix}lipo; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_LIPO+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$LIPO"; then ++ ac_cv_prog_LIPO="$LIPO" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_LIPO="${ac_tool_prefix}lipo" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++LIPO=$ac_cv_prog_LIPO ++if test -n "$LIPO"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 ++$as_echo "$LIPO" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_LIPO"; then ++ ac_ct_LIPO=$LIPO ++ # Extract the first word of "lipo", so it can be a program name with args. ++set dummy lipo; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_LIPO+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_LIPO"; then ++ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_LIPO="lipo" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO ++if test -n "$ac_ct_LIPO"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 ++$as_echo "$ac_ct_LIPO" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_LIPO" = x; then ++ LIPO=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ LIPO=$ac_ct_LIPO ++ fi ++else ++ LIPO="$ac_cv_prog_LIPO" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. ++set dummy ${ac_tool_prefix}otool; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_OTOOL+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$OTOOL"; then ++ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_OTOOL="${ac_tool_prefix}otool" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++OTOOL=$ac_cv_prog_OTOOL ++if test -n "$OTOOL"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 ++$as_echo "$OTOOL" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_OTOOL"; then ++ ac_ct_OTOOL=$OTOOL ++ # Extract the first word of "otool", so it can be a program name with args. ++set dummy otool; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_OTOOL"; then ++ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_OTOOL="otool" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL ++if test -n "$ac_ct_OTOOL"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 ++$as_echo "$ac_ct_OTOOL" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_OTOOL" = x; then ++ OTOOL=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ OTOOL=$ac_ct_OTOOL ++ fi ++else ++ OTOOL="$ac_cv_prog_OTOOL" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. ++set dummy ${ac_tool_prefix}otool64; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_OTOOL64+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$OTOOL64"; then ++ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++OTOOL64=$ac_cv_prog_OTOOL64 ++if test -n "$OTOOL64"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 ++$as_echo "$OTOOL64" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_OTOOL64"; then ++ ac_ct_OTOOL64=$OTOOL64 ++ # Extract the first word of "otool64", so it can be a program name with args. ++set dummy otool64; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_OTOOL64"; then ++ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_OTOOL64="otool64" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 ++if test -n "$ac_ct_OTOOL64"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 ++$as_echo "$ac_ct_OTOOL64" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_OTOOL64" = x; then ++ OTOOL64=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ OTOOL64=$ac_ct_OTOOL64 ++ fi ++else ++ OTOOL64="$ac_cv_prog_OTOOL64" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 ++$as_echo_n "checking for -single_module linker flag... " >&6; } ++if ${lt_cv_apple_cc_single_mod+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_apple_cc_single_mod=no ++ if test -z "${LT_MULTI_MODULE}"; then ++ # By default we will add the -single_module flag. You can override ++ # by either setting the environment variable LT_MULTI_MODULE ++ # non-empty at configure time, or by adding -multi_module to the ++ # link flags. ++ rm -rf libconftest.dylib* ++ echo "int foo(void){return 1;}" > conftest.c ++ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++-dynamiclib -Wl,-single_module conftest.c" >&5 ++ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err ++ _lt_result=$? ++ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then ++ lt_cv_apple_cc_single_mod=yes ++ else ++ cat conftest.err >&5 ++ fi ++ rm -rf libconftest.dylib* ++ rm -f conftest.* ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 ++$as_echo "$lt_cv_apple_cc_single_mod" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 ++$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } ++if ${lt_cv_ld_exported_symbols_list+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_ld_exported_symbols_list=no ++ save_LDFLAGS=$LDFLAGS ++ echo "_main" > conftest.sym ++ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ lt_cv_ld_exported_symbols_list=yes ++else ++ lt_cv_ld_exported_symbols_list=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 ++$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 ++$as_echo_n "checking for -force_load linker flag... " >&6; } ++if ${lt_cv_ld_force_load+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_ld_force_load=no ++ cat > conftest.c << _LT_EOF ++int forced_loaded() { return 2;} ++_LT_EOF ++ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 ++ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 ++ echo "$AR cru libconftest.a conftest.o" >&5 ++ $AR cru libconftest.a conftest.o 2>&5 ++ cat > conftest.c << _LT_EOF ++int main() { return 0;} ++_LT_EOF ++ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 ++ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err ++ _lt_result=$? ++ if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then ++ lt_cv_ld_force_load=yes ++ else ++ cat conftest.err >&5 ++ fi ++ rm -f conftest.err libconftest.a conftest conftest.c ++ rm -rf conftest.dSYM ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 ++$as_echo "$lt_cv_ld_force_load" >&6; } ++ # Allow for Darwin 4-7 (macOS 10.0-10.3) although these are not expect to ++ # build without first building modern cctools / linker. ++ case $host_cpu-$host_os in ++ *-rhapsody* | *-darwin1.[012]) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; ++ *-darwin1.*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; ++ *-darwin*) ++ # darwin 5.x (macOS 10.1) onwards we only need to adjust when the ++ # deployment target is forced to an earlier version. ++ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host in ++ UNSET,*-darwin[89]*|UNSET,*-darwin[12][0-9]*) ++ ;; ++ 10.[012][,.]*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ esac ++ if test "$lt_cv_apple_cc_single_mod" = "yes"; then ++ _lt_dar_single_mod='$single_module' ++ fi ++ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then ++ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' ++ else ++ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ fi ++ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then ++ _lt_dsymutil='~$DSYMUTIL $lib || :' ++ else ++ _lt_dsymutil= ++ fi ++ ;; ++ esac ++ ++for ac_header in dlfcn.h ++do : ++ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default ++" ++if test "x$ac_cv_header_dlfcn_h" = xyes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_DLFCN_H 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++ ++ ++ ++# Set options ++ ++ ++ ++ enable_dlopen=no ++ ++ ++ enable_win32_dll=no ++ ++ ++ # Check whether --enable-shared was given. ++if test "${enable_shared+set}" = set; then : ++ enableval=$enable_shared; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_shared=yes ;; ++ no) enable_shared=no ;; ++ *) ++ enable_shared=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_shared=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_shared=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ # Check whether --enable-static was given. ++if test "${enable_static+set}" = set; then : ++ enableval=$enable_static; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_static=yes ;; ++ no) enable_static=no ;; ++ *) ++ enable_static=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_static=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_static=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-pic was given. ++if test "${with_pic+set}" = set; then : ++ withval=$with_pic; pic_mode="$withval" ++else ++ pic_mode=default ++fi ++ ++ ++test -z "$pic_mode" && pic_mode=default ++ ++ ++ ++ ++ ++ ++ ++ # Check whether --enable-fast-install was given. ++if test "${enable_fast_install+set}" = set; then : ++ enableval=$enable_fast_install; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_fast_install=yes ;; ++ no) enable_fast_install=no ;; ++ *) ++ enable_fast_install=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_fast_install=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_fast_install=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# This can be used to rebuild libtool when needed ++LIBTOOL_DEPS="$ltmain" ++ ++# Always use our own libtool. ++LIBTOOL='$(SHELL) $(top_builddir)/libtool' ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++test -z "$LN_S" && LN_S="ln -s" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 ++$as_echo_n "checking for objdir... " >&6; } ++if ${lt_cv_objdir+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ lt_cv_objdir=.libs ++else ++ # MS-DOS does not allow filenames that begin with a dot. ++ lt_cv_objdir=_libs ++fi ++rmdir .libs 2>/dev/null ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 ++$as_echo "$lt_cv_objdir" >&6; } ++objdir=$lt_cv_objdir ++ ++ ++ ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define LT_OBJDIR "$lt_cv_objdir/" ++_ACEOF ++ ++ ++ ++ ++case $host_os in ++aix3*) ++ # AIX sometimes has problems with the GCC collect2 program. For some ++ # reason, if we set the COLLECT_NAMES environment variable, the problems ++ # vanish in a puff of smoke. ++ if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; ++esac ++ ++# Global variables: ++ofile=libtool ++can_build_shared=yes ++ ++# All known linkers require a `.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++ ++with_gnu_ld="$lt_cv_prog_gnu_ld" ++ ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" ++ ++# Set sane defaults for various variables ++test -z "$CC" && CC=cc ++test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS ++test -z "$LD" && LD=ld ++test -z "$ac_objext" && ac_objext=o ++ ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ++ ++ ++# Only perform the check for file, if the check method requires it ++test -z "$MAGIC_CMD" && MAGIC_CMD=file ++case $deplibs_check_method in ++file_magic*) ++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 ++$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } ++if ${lt_cv_path_MAGIC_CMD+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/${ac_tool_prefix}file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 ++$as_echo "$MAGIC_CMD" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ ++ ++ ++if test -z "$lt_cv_path_MAGIC_CMD"; then ++ if test -n "$ac_tool_prefix"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 ++$as_echo_n "checking for file... " >&6; } ++if ${lt_cv_path_MAGIC_CMD+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 ++$as_echo "$MAGIC_CMD" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ else ++ MAGIC_CMD=: ++ fi ++fi ++ ++ fi ++ ;; ++esac ++ ++# Use C for the default configuration in the libtool script ++ ++lt_save_CC="$CC" ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++# Source file extension for C test sources. ++ac_ext=c ++ ++# Object file extension for compiled C test sources. ++objext=o ++objext=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(){return(0);}' ++ ++ ++ ++ ++ ++ ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++# Save the default compiler, since it gets overwritten when the other ++# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. ++compiler_DEFAULT=$CC ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$RM conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$RM -r conftest* ++ ++ ++## CAVEAT EMPTOR: ++## There is no encapsulation within the following macros, do not change ++## the running order or otherwise move them around unless you know exactly ++## what you are doing... ++if test -n "$compiler"; then ++ ++lt_prog_compiler_no_builtin_flag= ++ ++if test "$GCC" = yes; then ++ case $cc_basename in ++ nvcc*) ++ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; ++ *) ++ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; ++ esac ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } ++if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler_rtti_exceptions=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="-fno-rtti -fno-exceptions" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_rtti_exceptions=yes ++ fi ++ fi ++ $RM conftest* ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } ++ ++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then ++ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" ++else ++ : ++fi ++ ++fi ++ ++ ++ ++ ++ ++ ++ lt_prog_compiler_wl= ++lt_prog_compiler_pic= ++lt_prog_compiler_static= ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 ++$as_echo_n "checking for $compiler option to produce PIC... " >&6; } ++ ++ if test "$GCC" = yes; then ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_static='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ m68k) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ esac ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2* | cegcc*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic='-fno-common' ++ ;; ++ ++ haiku*) ++ # PIC is the default for Haiku. ++ # The "-static" flag exists, but is broken. ++ lt_prog_compiler_static= ++ ;; ++ ++ hpux*) ++ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit ++ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag ++ # sets the default TLS model and affects inlining. ++ case $host_cpu in ++ hppa*64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ lt_prog_compiler_can_build_shared=no ++ enable_shared=no ++ ;; ++ ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ lt_prog_compiler_pic='-fPIC -shared' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic=-Kconform_pic ++ fi ++ ;; ++ ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ ++ case $cc_basename in ++ nvcc*) # Cuda Compiler Driver 2.2 ++ lt_prog_compiler_wl='-Xlinker ' ++ lt_prog_compiler_pic='-Xcompiler -fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ lt_prog_compiler_wl='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ else ++ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2* | cegcc*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ lt_prog_compiler_static='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC (with -KPIC) is the default. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ linux* | k*bsd*-gnu | kopensolaris*-gnu) ++ case $cc_basename in ++ # old Intel for x86_64 which still supported -KPIC. ++ ecc*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-static' ++ ;; ++ # icc used to be incompatible with GCC. ++ # ICC 10 doesn't accept -KPIC any more. ++ icc* | ifort*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-fPIC' ++ lt_prog_compiler_static='-static' ++ ;; ++ # Lahey Fortran 8.1. ++ lf95*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='--shared' ++ lt_prog_compiler_static='--static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-fpic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ccc*) ++ lt_prog_compiler_wl='-Wl,' ++ # All Alpha code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ xl* | bgxl* | bgf* | mpixl*) ++ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-qpic' ++ lt_prog_compiler_static='-qstaticlink' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ F* | *Sun*Fortran*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='' ++ ;; ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='-Wl,' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ newsos6) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ lt_prog_compiler_pic='-fPIC -shared' ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ lt_prog_compiler_wl='-Wl,' ++ # All OSF/1 code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ rdos*) ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ solaris*) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ lt_prog_compiler_wl='-Qoption ld ';; ++ *) ++ lt_prog_compiler_wl='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ lt_prog_compiler_wl='-Qoption ld ' ++ lt_prog_compiler_pic='-PIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ lt_prog_compiler_pic='-Kconform_pic' ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ unicos*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ ++ uts4*) ++ lt_prog_compiler_pic='-pic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ *) ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ esac ++ fi ++ ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic= ++ ;; ++ *) ++ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ++ ;; ++esac ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 ++$as_echo "$lt_prog_compiler_pic" >&6; } ++ ++ ++ ++ ++ ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 ++$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } ++if ${lt_cv_prog_compiler_pic_works+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler_pic_works=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_pic_works=yes ++ fi ++ fi ++ $RM conftest* ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 ++$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } ++ ++if test x"$lt_cv_prog_compiler_pic_works" = xyes; then ++ case $lt_prog_compiler_pic in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; ++ esac ++else ++ lt_prog_compiler_pic= ++ lt_prog_compiler_can_build_shared=no ++fi ++ ++fi ++ ++ ++ ++ ++ ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } ++if ${lt_cv_prog_compiler_static_works+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler_static_works=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_static_works=yes ++ fi ++ else ++ lt_cv_prog_compiler_static_works=yes ++ fi ++ fi ++ $RM -r conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 ++$as_echo "$lt_cv_prog_compiler_static_works" >&6; } ++ ++if test x"$lt_cv_prog_compiler_static_works" = xyes; then ++ : ++else ++ lt_prog_compiler_static= ++fi ++ ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 ++$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } ++if ${lt_cv_prog_compiler_c_o+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $RM -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $RM conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files ++ $RM out/* && rmdir out ++ cd .. ++ $RM -r conftest ++ $RM conftest* ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 ++$as_echo "$lt_cv_prog_compiler_c_o" >&6; } ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 ++$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } ++if ${lt_cv_prog_compiler_c_o+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $RM -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $RM conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files ++ $RM out/* && rmdir out ++ cd .. ++ $RM -r conftest ++ $RM conftest* ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 ++$as_echo "$lt_cv_prog_compiler_c_o" >&6; } ++ ++ ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 ++$as_echo_n "checking if we can lock with hard links... " >&6; } ++ hard_links=yes ++ $RM conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 ++$as_echo "$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ++ ++ runpath_var= ++ allow_undefined_flag= ++ always_export_symbols=no ++ archive_cmds= ++ archive_expsym_cmds= ++ compiler_needs_object=no ++ enable_shared_with_static_runtimes=no ++ export_dynamic_flag_spec= ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ hardcode_automatic=no ++ hardcode_direct=no ++ hardcode_direct_absolute=no ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld= ++ hardcode_libdir_separator= ++ hardcode_minus_L=no ++ hardcode_shlibpath_var=unsupported ++ inherit_rpath=no ++ link_all_deplibs=unknown ++ module_cmds= ++ module_expsym_cmds= ++ old_archive_from_new_cmds= ++ old_archive_from_expsyms_cmds= ++ thread_safe_flag_spec= ++ whole_archive_flag_spec= ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ include_expsyms= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ # Exclude shared library initialization/finalization symbols. ++ extract_expsyms_cmds= ++ ++ case $host_os in ++ cygwin* | mingw* | pw32* | cegcc*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ ld_shlibs=yes ++ ++ # On some targets, GNU ld is compatible enough with the native linker ++ # that we're better off using the native interface for both. ++ lt_use_gnu_ld_interface=no ++ if test "$with_gnu_ld" = yes; then ++ case $host_os in ++ aix*) ++ # The AIX port of GNU ld has always aspired to compatibility ++ # with the native linker. However, as the warning in the GNU ld ++ # block says, versions before 2.19.5* couldn't really create working ++ # shared libraries, regardless of the interface used. ++ case `$LD -v 2>&1` in ++ *\ \(GNU\ Binutils\)\ 2.19.5*) ;; ++ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; ++ *\ \(GNU\ Binutils\)\ [3-9]*) ;; ++ *) ++ lt_use_gnu_ld_interface=yes ++ ;; ++ esac ++ ;; ++ *) ++ lt_use_gnu_ld_interface=yes ++ ;; ++ esac ++ fi ++ ++ if test "$lt_use_gnu_ld_interface" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ export_dynamic_flag_spec='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>&1` in ++ *GNU\ gold*) supports_anon_versioning=yes ;; ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix[3-9]*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the GNU linker, at least up to release 2.19, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to install binutils ++*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. ++*** You will then need to restart the configuration process. ++ ++_LT_EOF ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='' ++ ;; ++ m68k) ++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32* | cegcc*) ++ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec='-L$libdir' ++ export_dynamic_flag_spec='${wl}--export-all-symbols' ++ allow_undefined_flag=unsupported ++ always_export_symbols=no ++ enable_shared_with_static_runtimes=yes ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ haiku*) ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ link_all_deplibs=yes ++ ;; ++ ++ interix[3-9]*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi) ++ tmp_diet=no ++ if test "$host_os" = linux-dietlibc; then ++ case $cc_basename in ++ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) ++ esac ++ fi ++ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ ++ && test "$tmp_diet" = no ++ then ++ tmp_addflag=' $pic_flag' ++ tmp_sharedflag='-shared' ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95* | pgfortran*) ++ # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ lf95*) # Lahey Fortran 8.1 ++ whole_archive_flag_spec= ++ tmp_sharedflag='--shared' ;; ++ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) ++ tmp_sharedflag='-qmkshrobj' ++ tmp_addflag= ;; ++ nvcc*) # Cuda Compiler Driver 2.2 ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ++ compiler_needs_object=yes ++ ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ++ compiler_needs_object=yes ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ esac ++ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test "x$supports_anon_versioning" = xyes; then ++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ ++ case $cc_basename in ++ xlf* | bgf* | bgxlf* | mpixlf*) ++ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself ++ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld='-rpath $libdir' ++ archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' ++ if test "x$supports_anon_versioning" = xyes; then ++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' ++ fi ++ ;; ++ esac ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ++ if test "$ld_shlibs" = no; then ++ runpath_var= ++ hardcode_libdir_flag_spec= ++ export_dynamic_flag_spec= ++ whole_archive_flag_spec= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ allow_undefined_flag=unsupported ++ always_export_symbols=yes ++ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct=unsupported ++ fi ++ ;; ++ ++ aix[4-9]*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ # Also, AIX nm treats weak defined symbols like other global ++ # defined symbols, whereas GNU nm marks them as "W". ++ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then ++ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds='' ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ file_list_spec='${wl}-f,' ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && ++ strings "$collect2name" | $GREP resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L=yes ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_libdir_separator= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ export_dynamic_flag_spec='${wl}-bexpall' ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag='-berok' ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag="-z nodefs" ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag=' ${wl}-bernotok' ++ allow_undefined_flag=' ${wl}-berok' ++ if test "$with_gnu_ld" = yes; then ++ # We only use this code for GNU lds that support --whole-archive. ++ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ else ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec='$convenience' ++ fi ++ archive_cmds_need_lc=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='' ++ ;; ++ m68k) ++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; ++ ++ bsdi[45]*) ++ export_dynamic_flag_spec=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32* | cegcc*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec=' ' ++ allow_undefined_flag=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_from_new_cmds='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ fix_srcfile_path='`cygpath -w "$srcfile"`' ++ enable_shared_with_static_runtimes=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ ++ ++ ++ # Publish an arg to allow the user to select that Darwin host (and target) ++ # libraries should be given install-names like @rpath/libfoo.dylib. This ++ # requires that the user of the library then adds an 'rpath' to the DSO that ++ # needs access. ++ # NOTE: there are defaults below, for systems that support rpaths. The person ++ # configuring can override the defaults for any system version that supports ++ # them - they are, however, forced off for system versions without support. ++ # Check whether --enable-darwin-at-rpath was given. ++if test "${enable_darwin_at_rpath+set}" = set; then : ++ enableval=$enable_darwin_at_rpath; if test "x$enable_darwin_at_rpath" = "xyes"; then ++ # This is not supported before macOS 10.5 / Darwin9. ++ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host_os in ++ UNSET,darwin[4-8]*|UNSET,rhapsody*|10.[0-4][,.]*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Darwin @rpath library names are incompatible with OSX versions earlier than 10.5 (rpaths disabled)" >&5 ++$as_echo "$as_me: WARNING: Darwin @rpath library names are incompatible with OSX versions earlier than 10.5 (rpaths disabled)" >&2;} ++ enable_darwin_at_rpath=no ++ ;; ++ esac ++ fi ++else ++ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host_os in ++ # As above, before 10.5 / Darwin9 this does not work. ++ UNSET,darwin[4-8]*|UNSET,rhapsody*|10.[0-4][,.]*) ++ enable_darwin_at_rpath=no ++ ;; ++ ++ # We cannot build and test reliably on macOS 10.11+ (Darwin15+) without use ++ # of rpaths, since runpaths set via DYLD_LIBRARY_PATH are elided by key ++ # system executables (e.g. /bin/sh). Force rpaths on for these systems. ++ UNSET,darwin1[5-9]*|UNSET,darwin2*|10.1[1-9][,.]*|1[1-9].*[,.]* ) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: @rpath library names are needed on macOS versions later than 10.11 (rpaths have been enabled)" >&5 ++$as_echo "$as_me: @rpath library names are needed on macOS versions later than 10.11 (rpaths have been enabled)" >&6;} ++ enable_darwin_at_rpath=yes ++ ;; ++ # NOTE: we are not (yet) doing anything for 10.5 .. 10.10, since they can ++ # work with either DYLD_LIBRARY_PATH or embedded rpaths. ++ ++ esac ++ ++fi ++ ++ ++ archive_cmds_need_lc=no ++ hardcode_direct=no ++ hardcode_automatic=yes ++ hardcode_shlibpath_var=unsupported ++ if test "$lt_cv_ld_force_load" = "yes"; then ++ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' ++ else ++ whole_archive_flag_spec='' ++ fi ++ link_all_deplibs=yes ++ allow_undefined_flag="$_lt_dar_allow_undefined" ++ case $cc_basename in ++ ifort*) _lt_dar_can_shared=yes ;; ++ *) _lt_dar_can_shared=$GCC ;; ++ esac ++ if test "$_lt_dar_can_shared" = "yes"; then ++ output_verbose_link_cmd=func_echo_all ++ _lt_install_name='\$rpath/\$soname' ++ if test "x$enable_darwin_at_rpath" = "xyes"; then ++ _lt_install_name='@rpath/\$soname' ++ fi ++ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name ${_lt_install_name} \$verstring ${_lt_dsymutil}" ++ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" ++ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name ${_lt_install_name} \$verstring ${_lt_dar_export_syms}${_lt_dsymutil}" ++ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" ++ ++ else ++ ld_shlibs=no ++ fi ++ ++ ;; ++ ++ dgux*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2.*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes && test "$with_gnu_ld" = no; then ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec_ld='+b $libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ export_dynamic_flag_spec='${wl}-E' ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes && test "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ ++ # Older versions of the 11.00 compiler do not understand -b yet ++ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 ++$as_echo_n "checking if $CC understands -b... " >&6; } ++if ${lt_cv_prog_compiler__b+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler__b=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -b" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler__b=yes ++ fi ++ else ++ lt_cv_prog_compiler__b=yes ++ fi ++ fi ++ $RM -r conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 ++$as_echo "$lt_cv_prog_compiler__b" >&6; } ++ ++if test x"$lt_cv_prog_compiler__b" = xyes; then ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++else ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++fi ++ ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ ;; ++ *) ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ # Try to use the -exported_symbol ld option, if it does not ++ # work, assume that -exports_file does not work either and ++ # implicitly export all symbols. ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++int foo(void) {} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ++ ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS="$save_LDFLAGS" ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ inherit_rpath=yes ++ link_all_deplibs=yes ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ newsos6) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *nto* | *qnx*) ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ hardcode_direct_absolute=yes ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ ;; ++ *) ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ os2*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ allow_undefined_flag=unsupported ++ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ ++ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec='-rpath $libdir' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_separator=: ++ ;; ++ ++ solaris*) ++ no_undefined_flag=' -z defs' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ else ++ case `$CC -V 2>&1` in ++ *"Compilers 5.0"*) ++ wlarc='' ++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ++ ;; ++ *) ++ wlarc='${wl}' ++ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ ;; ++ esac ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_shlibpath_var=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ link_all_deplibs=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ reload_cmds='$CC -r -o $output$reload_objs' ++ hardcode_direct=no ++ ;; ++ motorola) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4.3*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ export_dynamic_flag_spec='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag='${wl}-z,text' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag='${wl}-z,text' ++ allow_undefined_flag='${wl}-z,nodefs' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-R,$libdir' ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ export_dynamic_flag_spec='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ ld_shlibs=no ++ ;; ++ esac ++ ++ if test x$host_vendor = xsni; then ++ case $host in ++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ ;; ++ esac ++ fi ++ fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 ++$as_echo "$ld_shlibs" >&6; } ++test "$ld_shlibs" = no && can_build_shared=no ++ ++with_gnu_ld=$with_gnu_ld ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 ++$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } ++if ${lt_cv_archive_cmds_need_lc+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ $RM conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl ++ pic_flag=$lt_prog_compiler_pic ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag ++ allow_undefined_flag= ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 ++ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++ then ++ lt_cv_archive_cmds_need_lc=no ++ else ++ lt_cv_archive_cmds_need_lc=yes ++ fi ++ allow_undefined_flag=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $RM conftest* ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 ++$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } ++ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 ++$as_echo_n "checking dynamic linker characteristics... " >&6; } ++ ++if test "$GCC" = yes; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ case $host_os in ++ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; ++ *) lt_sed_strip_eq="s,=/,/,g" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` ++ case $lt_search_path_spec in ++ *\;*) ++ # if the path contains ";" then we assume it to be the separator ++ # otherwise default to the standard path separator (i.e. ":") - it is ++ # assumed that no part of a normal pathname contains ";" but that should ++ # okay in the real world where ";" in dirpaths is itself problematic. ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ++ ;; ++ *) ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ++ ;; ++ esac ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[lt_foo]++; } ++ if (lt_freq[lt_foo] == 1) { print lt_foo; } ++}'` ++ # AWK program above erroneously prepends '/' to C:/dos/paths ++ # for these hosts. ++ case $host_os in ++ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ ++ $SED 's,/\([A-Za-z]:\),\1,g'` ;; ++ esac ++ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` ++else ++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++fi ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix[4-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[01] | aix4.[01].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ case $host_cpu in ++ powerpc) ++ # Since July 2007 AmigaOS4 officially supports .so libraries. ++ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ ;; ++ m68k) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; ++ esac ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[45]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32* | cegcc*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname~ ++ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then ++ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; ++ fi' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $RM \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ++ ;; ++ mingw* | cegcc*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[23].*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2.*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++haiku*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ dynamic_linker="$host_os runtime_loader" ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555, ... ++ postinstall_cmds='chmod 555 $lib' ++ # or fails outright, so override atomically: ++ install_override_mode=555 ++ ;; ++ ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++ ++# uclinux* changes (here and below) have been submitted to the libtool ++# project, but have not yet been accepted: they are GCC-local changes ++# for the time being. (See ++# https://lists.gnu.org/archive/html/libtool-patches/2018-05/msg00000.html) ++linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | uclinuxfdpiceabi) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ ++ # Some binutils ld are patched to set DT_RUNPATH ++ if ${lt_cv_shlibpath_overrides_runpath+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_shlibpath_overrides_runpath=no ++ save_LDFLAGS=$LDFLAGS ++ save_libdir=$libdir ++ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ ++ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : ++ lt_cv_shlibpath_overrides_runpath=yes ++fi ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS=$save_LDFLAGS ++ libdir=$save_libdir ++ ++fi ++ ++ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath ++ ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++*nto* | *qnx*) ++ version_type=qnx ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='ldqnx.so' ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++tpf*) ++ # TPF is a cross-target only. Preferred cross-host = GNU/Linux. ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++# Shared libraries for VwWorks, >= 7 only at this stage ++# and (fpic) still incompatible with "large" code models ++# in a few configurations. Only for RTP mode in any case, ++# and upon explicit request at configure time. ++vxworks7*) ++ dynamic_linker=no ++ case ${with_multisubdir}-${enable_shared} in ++ *large*) ++ ;; ++ *mrtp*-yes) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker="$host_os module_loader" ++ ;; ++ esac ++ ;; ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 ++$as_echo "$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then ++ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" ++fi ++if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then ++ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 ++$as_echo_n "checking how to hardcode library paths into programs... " >&6; } ++hardcode_action= ++if test -n "$hardcode_libdir_flag_spec" || ++ test -n "$runpath_var" || ++ test "X$hardcode_automatic" = "Xyes" ; then ++ ++ # We can hardcode non-existent directories. ++ if test "$hardcode_direct" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && ++ test "$hardcode_minus_L" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action=unsupported ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 ++$as_echo "$hardcode_action" >&6; } ++ ++if test "$hardcode_action" = relink || ++ test "$inherit_rpath" = yes; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++ ++ ++ ++ ++ ++ if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= ++ ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ ++ mingw* | pw32* | cegcc*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ darwin*) ++ # if libdl is installed we need to link against it ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 ++$as_echo_n "checking for dlopen in -ldl... " >&6; } ++if ${ac_cv_lib_dl_dlopen+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_dl_dlopen=yes ++else ++ ac_cv_lib_dl_dlopen=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 ++$as_echo "$ac_cv_lib_dl_dlopen" >&6; } ++if test "x$ac_cv_lib_dl_dlopen" = xyes; then : ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ++fi ++ ++ ;; ++ ++ *) ++ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" ++if test "x$ac_cv_func_shl_load" = xyes; then : ++ lt_cv_dlopen="shl_load" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 ++$as_echo_n "checking for shl_load in -ldld... " >&6; } ++if ${ac_cv_lib_dld_shl_load+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_dld_shl_load=yes ++else ++ ac_cv_lib_dld_shl_load=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 ++$as_echo "$ac_cv_lib_dld_shl_load" >&6; } ++if test "x$ac_cv_lib_dld_shl_load" = xyes; then : ++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" ++else ++ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" ++if test "x$ac_cv_func_dlopen" = xyes; then : ++ lt_cv_dlopen="dlopen" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 ++$as_echo_n "checking for dlopen in -ldl... " >&6; } ++if ${ac_cv_lib_dl_dlopen+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_dl_dlopen=yes ++else ++ ac_cv_lib_dl_dlopen=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 ++$as_echo "$ac_cv_lib_dl_dlopen" >&6; } ++if test "x$ac_cv_lib_dl_dlopen" = xyes; then : ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 ++$as_echo_n "checking for dlopen in -lsvld... " >&6; } ++if ${ac_cv_lib_svld_dlopen+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsvld $LIBS" ++if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_svld_dlopen=yes ++else ++ ac_cv_lib_svld_dlopen=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 ++$as_echo "$ac_cv_lib_svld_dlopen" >&6; } ++if test "x$ac_cv_lib_svld_dlopen" = xyes; then : ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 ++$as_echo_n "checking for dld_link in -ldld... " >&6; } ++if ${ac_cv_lib_dld_dld_link+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dld_link (); ++int ++main () ++{ ++return dld_link (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_dld_dld_link=yes ++else ++ ac_cv_lib_dld_dld_link=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 ++$as_echo "$ac_cv_lib_dld_dld_link" >&6; } ++if test "x$ac_cv_lib_dld_dld_link" = xyes; then : ++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ;; ++ esac ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi ++ ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 ++$as_echo_n "checking whether a program can dlopen itself... " >&6; } ++if ${lt_cv_dlopen_self+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++#line 12207 "configure" ++#include "confdefs.h" ++ ++#if HAVE_DLFCN_H ++#include ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++/* When -fvisbility=hidden is used, assume the code has been annotated ++ correspondingly for the symbols needed. */ ++#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) ++void fnord () __attribute__((visibility("default"))); ++#endif ++ ++void fnord () { int i=42; } ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else ++ { ++ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ else puts (dlerror ()); ++ } ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ return status; ++} ++_LT_EOF ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 ++$as_echo "$lt_cv_dlopen_self" >&6; } ++ ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 ++$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } ++if ${lt_cv_dlopen_self_static+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self_static=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++#line 12313 "configure" ++#include "confdefs.h" ++ ++#if HAVE_DLFCN_H ++#include ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++/* When -fvisbility=hidden is used, assume the code has been annotated ++ correspondingly for the symbols needed. */ ++#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) ++void fnord () __attribute__((visibility("default"))); ++#endif ++ ++void fnord () { int i=42; } ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else ++ { ++ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ else puts (dlerror ()); ++ } ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ return status; ++} ++_LT_EOF ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self_static=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 ++$as_echo "$lt_cv_dlopen_self_static" >&6; } ++ fi ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ;; ++ esac ++ ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac ++ ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++striplib= ++old_striplib= ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 ++$as_echo_n "checking whether stripping libraries is possible... " >&6; } ++if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then ++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" ++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++else ++# FIXME - insert some real tests, host_os isn't really good enough ++ case $host_os in ++ darwin*) ++ if test -n "$STRIP" ; then ++ striplib="$STRIP -x" ++ old_striplib="$STRIP -S" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ fi ++ ;; ++ *) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ ;; ++ esac ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ # Report which library types will actually be built ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 ++$as_echo_n "checking if libtool supports shared libraries... " >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 ++$as_echo "$can_build_shared" >&6; } ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 ++$as_echo_n "checking whether to build shared libraries... " >&6; } ++ test "$can_build_shared" = "no" && enable_shared=no ++ ++ # On AIX, shared libraries and static libraries use the same namespace, and ++ # are all built from PIC. ++ case $host_os in ++ aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++ ++ aix[4-9]*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++ esac ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 ++$as_echo "$enable_shared" >&6; } ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 ++$as_echo_n "checking whether to build static libraries... " >&6; } ++ # Make sure either enable_shared or enable_static is yes. ++ test "$enable_shared" = yes || enable_static=yes ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 ++$as_echo "$enable_static" >&6; } ++ ++ ++ ++ ++fi ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++CC="$lt_save_CC" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ac_config_commands="$ac_config_commands libtool" ++ ++ ++ ++ ++# Only expand once: ++ ++ ++ ++ if test x$enable_darwin_at_rpath = xyes; then ++ ENABLE_DARWIN_AT_RPATH_TRUE= ++ ENABLE_DARWIN_AT_RPATH_FALSE='#' ++else ++ ENABLE_DARWIN_AT_RPATH_TRUE='#' ++ ENABLE_DARWIN_AT_RPATH_FALSE= ++fi ++ ++ ++ ++ ++ ++# Do compilation tests using the C compiler and preprocessor. ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++# Allow the user to set CC_FOR_BUILD in the environment. ++CC_FOR_BUILD=${CC_FOR_BUILD:-gcc} ++ ++ ++# Search for needed functions in host libraries. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing malloc" >&5 ++$as_echo_n "checking for library containing malloc... " >&6; } ++if ${ac_cv_search_malloc+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_func_search_save_LIBS=$LIBS ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char malloc (); ++int ++main () ++{ ++return malloc (); ++ ; ++ return 0; ++} ++_ACEOF ++for ac_lib in '' c; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_search_malloc=$ac_res ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext ++ if ${ac_cv_search_malloc+:} false; then : ++ break ++fi ++done ++if ${ac_cv_search_malloc+:} false; then : ++ ++else ++ ac_cv_search_malloc=no ++fi ++rm conftest.$ac_ext ++LIBS=$ac_func_search_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_malloc" >&5 ++$as_echo "$ac_cv_search_malloc" >&6; } ++ac_res=$ac_cv_search_malloc ++if test "$ac_res" != no; then : ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" ++ ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing cosf" >&5 ++$as_echo_n "checking for library containing cosf... " >&6; } ++if ${ac_cv_search_cosf+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_func_search_save_LIBS=$LIBS ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char cosf (); ++int ++main () ++{ ++return cosf (); ++ ; ++ return 0; ++} ++_ACEOF ++for ac_lib in '' m; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_search_cosf=$ac_res ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext ++ if ${ac_cv_search_cosf+:} false; then : ++ break ++fi ++done ++if ${ac_cv_search_cosf+:} false; then : ++ ++else ++ ac_cv_search_cosf=no ++fi ++rm conftest.$ac_ext ++LIBS=$ac_func_search_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cosf" >&5 ++$as_echo "$ac_cv_search_cosf" >&6; } ++ac_res=$ac_cv_search_cosf ++if test "$ac_res" != no; then : ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" ++ ++fi ++ ++ ++# Determine what GCC version number to use in filesystem paths. ++ ++ get_gcc_base_ver="cat" ++ ++# Check whether --with-gcc-major-version-only was given. ++if test "${with_gcc_major_version_only+set}" = set; then : ++ withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" ++ fi ++ ++fi ++ ++ ++ ++ ++# Add dependencies for libga68.spec file ++SPEC_LIBGA68_DEPS="$LIBS" ++ ++ ++# libga68 soname version ++libga68_VERSION=1:0:0 ++ ++ ++# The Boehm GC ++ ++# Check whether --enable-algol68-gc was given. ++if test "${enable_algol68_gc+set}" = set; then : ++ enableval=$enable_algol68_gc; ++else ++ enable_algol68_gc=no ++fi ++ ++ ++# Check whether --with-target-bdw-gc was given. ++if test "${with_target_bdw_gc+set}" = set; then : ++ withval=$with_target_bdw_gc; ++fi ++ ++ ++# Check whether --with-target-bdw-gc-include was given. ++if test "${with_target_bdw_gc_include+set}" = set; then : ++ withval=$with_target_bdw_gc_include; ++fi ++ ++ ++# Check whether --with-target-bdw-gc-lib was given. ++if test "${with_target_bdw_gc_lib+set}" = set; then : ++ withval=$with_target_bdw_gc_lib; ++fi ++ ++ ++bdw_lib_dir= ++case "$enable_algol68_gc" in ++no) ++ use_bdw_gc=no ++ ;; ++*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bdw garbage collector" >&5 ++$as_echo_n "checking for bdw garbage collector... " >&6; } ++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then ++ BDW_GC_CFLAGS= ++ BDW_GC_LIBS="-lgc" ++ else ++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then ++ as_fn_error $? "found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing" "$LINENO" 5 ++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then ++ as_fn_error $? "found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing" "$LINENO" 5 ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: using paths configured with --with-target-bdw-gc options" >&5 ++$as_echo "using paths configured with --with-target-bdw-gc options" >&6; } ++ fi ++ mldir=`${CC-gcc} --print-multi-directory 2>/dev/null` ++ bdw_val= ++ if test "x$with_target_bdw_gc" != x; then ++ for i in `echo $with_target_bdw_gc | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x; then ++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc" "$LINENO" 5 ++ fi ++ bdw_inc_dir="$bdw_val/include" ++ bdw_lib_dir="$bdw_val/lib" ++ fi ++ bdw_val= ++ if test "x$with_target_bdw_gc_include" != x; then ++ for i in `echo $with_target_bdw_gc_include | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i; fallback=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x && test "x$bdw_inc_dir" = x && test "x$fallback" != x; then ++ bdw_inc_dir="$fallback" ++ elif test "x$bdw_val" = x; then ++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-include" "$LINENO" 5 ++ else ++ bdw_inc_dir="$bdw_val" ++ fi ++ fi ++ bdw_val= ++ if test "x$with_target_bdw_gc_lib" != x; then ++ for i in `echo $with_target_bdw_gc_lib | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x; then ++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-lib" "$LINENO" 5 ++ fi ++ bdw_lib_dir="$bdw_val" ++ fi ++ if test "x$bdw_inc_dir" = x; then ++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-include" "$LINENO" 5 ++ fi ++ if test "x$bdw_lib_dir" = x; then ++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-lib" "$LINENO" 5 ++ fi ++ BDW_GC_CFLAGS="-I$bdw_inc_dir" ++ if test -f $bdw_lib_dir/libgc.la; then ++ BDW_GC_LIBS="$bdw_lib_dir/libgc.la" ++ else ++ BDW_GC_LIBS="-L$bdw_lib_dir -lgc" ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 ++$as_echo "found" >&6; } ++ fi ++ ++ case "$BDW_GC_LIBS" in ++ *libgc.la) ++ use_bdw_gc=yes ++ ;; ++ *) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for system boehm-gc" >&5 ++$as_echo_n "checking for system boehm-gc... " >&6; } ++ save_CFLAGS=$CFLAGS ++ save_LIBS=$LIBS ++ CFLAGS="$CFLAGS $BDW_GC_CFLAGS" ++ LIBS="$LIBS $BDW_GC_LIBS" ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++GC_init() ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ++ if test "$cross_compiling" = yes; then : ++ system_bdw_gc_found=no ++ ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++ #include ++ int main() { ++ GC_init(); ++ return 0; ++ } ++ ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ system_bdw_gc_found=yes ++else ++ system_bdw_gc_found=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++ ++else ++ system_bdw_gc_found=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ CFLAGS=$save_CFLAGS ++ LIBS=$save_LIBS ++ if test x$enable_algol68_gc = xauto && test x$system_bdw_gc_found = xno; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: system bdw-gc not found, building libga68 with no GC support" >&5 ++$as_echo "$as_me: WARNING: system bdw-gc not found, building libga68 with no GC support" >&2;} ++ use_bdw_gc=no ++ elif test x$enable_algol68_gc = xyes && test x$system_bdw_gc_found = xno; then ++ as_fn_error $? "system bdw-gc required but not found" "$LINENO" 5 ++ else ++ use_bdw_gc=yes ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 ++$as_echo "found" >&6; } ++ fi ++ esac ++esac ++ ++if test "$use_bdw_gc" = no; then ++ LIBGA68_GCFLAGS='' ++ LIBGA68_BOEHM_GC_INCLUDES='' ++ LIBGA68_BOEHM_GC_LIBS='' ++else ++ LIBGA68_GCFLAGS='-DLIBGA68_WITH_GC=1' ++ LIBGA68_BOEHM_GC_INCLUDES=$BDW_GC_CFLAGS ++ LIBGA68_BOEHM_GC_LIBS=$BDW_GC_LIBS ++ SPEC_LIBGA68_DEPS="$SPEC_LIBGA68_DEPS $BDW_GC_LIBS" ++fi ++ ++extra_darwin_ldflags_libga68= ++case $host in ++ *-*-darwin*) ++ extra_darwin_ldflags_libga68=-Wl,-U,___algol68_main ++ if test -f $bdw_lib_dir/libgc.a; then ++ # Darwin wants to link this statically into the library ++ LIBGA68_BOEHM_GC_LIBS="$bdw_lib_dir/libgc.a" ++ # No spec entry. ++ BDW_GC_LIBS= ++ fi ++ ;; ++ *) ;; ++esac ++ ++ ++# Subst some variables used in Makefile.am ++ ++ ++ ++ ++# Output files and be done. ++ ++ac_config_files="$ac_config_files Makefile" ++ ++ac_config_files="$ac_config_files libga68.spec" ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: libga68 has been configured." >&5 ++$as_echo "$as_me: libga68 has been configured." >&6;} ++cat >confcache <<\_ACEOF ++# This file is a shell script that caches the results of configure ++# tests run on this system so they can be shared between configure ++# scripts and configure runs, see configure's option --config-cache. ++# It is not useful on other systems. If it contains results you don't ++# want to keep, you may remove or edit it. ++# ++# config.status only pays attention to the cache file if you give it ++# the --recheck option to rerun configure. ++# ++# `ac_cv_env_foo' variables (set or unset) will be overridden when ++# loading this file, other *unset* `ac_cv_foo' will be assigned the ++# following values. ++ ++_ACEOF ++ ++# The following way of writing the cache mishandles newlines in values, ++# but we know of no workaround that is simple, portable, and efficient. ++# So, we kill variables containing newlines. ++# Ultrix sh set writes to stderr and can't be redirected directly, ++# and sets the high bit in the cache file unless we assign to the vars. ++( ++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 ++$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( ++ *) { eval $ac_var=; unset $ac_var;} ;; ++ esac ;; ++ esac ++ done ++ ++ (set) 2>&1 | ++ case $as_nl`(ac_space=' '; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) ++ # `set' does not quote correctly, so add quotes: double-quote ++ # substitution turns \\\\ into \\, and sed turns \\ into \. ++ sed -n \ ++ "s/'/'\\\\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ++ ;; #( ++ *) ++ # `set' quotes correctly as required by POSIX, so do not add quotes. ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ++ ;; ++ esac | ++ sort ++) | ++ sed ' ++ /^ac_cv_env_/b end ++ t clear ++ :clear ++ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ ++ t end ++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ ++ :end' >>confcache ++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else ++ if test -w "$cache_file"; then ++ if test "x$cache_file" != "x/dev/null"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 ++$as_echo "$as_me: updating cache $cache_file" >&6;} ++ if test ! -f "$cache_file" || test -h "$cache_file"; then ++ cat confcache >"$cache_file" ++ else ++ case $cache_file in #( ++ */* | ?:*) ++ mv -f confcache "$cache_file"$$ && ++ mv -f "$cache_file"$$ "$cache_file" ;; #( ++ *) ++ mv -f confcache "$cache_file" ;; ++ esac ++ fi ++ fi ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 ++$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} ++ fi ++fi ++rm -f confcache ++ ++test "x$prefix" = xNONE && prefix=$ac_default_prefix ++# Let make expand exec_prefix. ++test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ++ ++DEFS=-DHAVE_CONFIG_H ++ ++ac_libobjs= ++ac_ltlibobjs= ++U= ++for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue ++ # 1. Remove the extension, and $U if already installed. ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`$as_echo "$ac_i" | sed "$ac_script"` ++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR ++ # will be set to the directory where LIBOBJS objects are built. ++ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' ++done ++LIBOBJS=$ac_libobjs ++ ++LTLIBOBJS=$ac_ltlibobjs ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 ++$as_echo_n "checking that generated files are newer than configure... " >&6; } ++ if test -n "$am_sleep_pid"; then ++ # Hide warnings about reused PIDs. ++ wait $am_sleep_pid 2>/dev/null ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 ++$as_echo "done" >&6; } ++if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then ++ as_fn_error $? "conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then ++ as_fn_error $? "conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++ if test -n "$EXEEXT"; then ++ am__EXEEXT_TRUE= ++ am__EXEEXT_FALSE='#' ++else ++ am__EXEEXT_TRUE='#' ++ am__EXEEXT_FALSE= ++fi ++ ++if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then ++ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then ++ as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++if test -z "${ENABLE_DARWIN_AT_RPATH_TRUE}" && test -z "${ENABLE_DARWIN_AT_RPATH_FALSE}"; then ++ as_fn_error $? "conditional \"ENABLE_DARWIN_AT_RPATH\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++ ++: "${CONFIG_STATUS=./config.status}" ++ac_write_fail=0 ++ac_clean_files_save=$ac_clean_files ++ac_clean_files="$ac_clean_files $CONFIG_STATUS" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 ++$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} ++as_write_fail=0 ++cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 ++#! $SHELL ++# Generated by $as_me. ++# Run this file to recreate the current configuration. ++# Compiler output produced by configure, useful for debugging ++# configure, is in config.log if it exists. ++ ++debug=false ++ac_cs_recheck=false ++ac_cs_silent=false ++ ++SHELL=\${CONFIG_SHELL-$SHELL} ++export SHELL ++_ASEOF ++cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ++## -------------------- ## ++## M4sh Initialization. ## ++## -------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : ++ emulate sh ++ NULLCMD=: ++ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; ++esac ++fi ++ ++ ++as_nl=' ++' ++export as_nl ++# Printing a long string crashes Solaris 7 /usr/bin/printf. ++as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo ++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo ++# Prefer a ksh shell builtin over an external printf program on Solaris, ++# but without wasting forks for bash or zsh. ++if test -z "$BASH_VERSION$ZSH_VERSION" \ ++ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='print -r --' ++ as_echo_n='print -rn --' ++elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='printf %s\n' ++ as_echo_n='printf %s' ++else ++ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then ++ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' ++ as_echo_n='/usr/ucb/echo -n' ++ else ++ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' ++ as_echo_n_body='eval ++ arg=$1; ++ case $arg in #( ++ *"$as_nl"*) ++ expr "X$arg" : "X\\(.*\\)$as_nl"; ++ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; ++ esac; ++ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ++ ' ++ export as_echo_n_body ++ as_echo_n='sh -c $as_echo_n_body as_echo' ++ fi ++ export as_echo_body ++ as_echo='sh -c $as_echo_body as_echo' ++fi ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ PATH_SEPARATOR=: ++ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { ++ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || ++ PATH_SEPARATOR=';' ++ } ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++as_myself= ++case $0 in #(( ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ exit 1 ++fi ++ ++# Unset variables that we do not need and which cause bugs (e.g. in ++# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" ++# suppresses any "Segmentation fault" message there. '((' could ++# trigger a bug in pdksh 5.2.14. ++for as_var in BASH_ENV ENV MAIL MAILPATH ++do eval test x\${$as_var+set} = xset \ ++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++LC_ALL=C ++export LC_ALL ++LANGUAGE=C ++export LANGUAGE ++ ++# CDPATH. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++ ++# as_fn_error STATUS ERROR [LINENO LOG_FD] ++# ---------------------------------------- ++# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are ++# provided, also output the error to LOG_FD, referencing LINENO. Then exit the ++# script with STATUS, using 1 if that was 0. ++as_fn_error () ++{ ++ as_status=$1; test $as_status -eq 0 && as_status=1 ++ if test "$4"; then ++ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 ++ fi ++ $as_echo "$as_me: error: $2" >&2 ++ as_fn_exit $as_status ++} # as_fn_error ++ ++ ++# as_fn_set_status STATUS ++# ----------------------- ++# Set $? to STATUS, without forking. ++as_fn_set_status () ++{ ++ return $1 ++} # as_fn_set_status ++ ++# as_fn_exit STATUS ++# ----------------- ++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. ++as_fn_exit () ++{ ++ set +e ++ as_fn_set_status $1 ++ exit $1 ++} # as_fn_exit ++ ++# as_fn_unset VAR ++# --------------- ++# Portably unset VAR. ++as_fn_unset () ++{ ++ { eval $1=; unset $1;} ++} ++as_unset=as_fn_unset ++# as_fn_append VAR VALUE ++# ---------------------- ++# Append the text in VALUE to the end of the definition contained in VAR. Take ++# advantage of any shell optimizations that allow amortized linear growth over ++# repeated appends, instead of the typical quadratic growth present in naive ++# implementations. ++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : ++ eval 'as_fn_append () ++ { ++ eval $1+=\$2 ++ }' ++else ++ as_fn_append () ++ { ++ eval $1=\$$1\$2 ++ } ++fi # as_fn_append ++ ++# as_fn_arith ARG... ++# ------------------ ++# Perform arithmetic evaluation on the ARGs, and store the result in the ++# global $as_val. Take advantage of shells that can avoid forks. The arguments ++# must be portable across $(()) and expr. ++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : ++ eval 'as_fn_arith () ++ { ++ as_val=$(( $* )) ++ }' ++else ++ as_fn_arith () ++ { ++ as_val=`expr "$@" || test $? -eq 1` ++ } ++fi # as_fn_arith ++ ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in #((((( ++-n*) ++ case `echo 'xy\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ xy) ECHO_C='\c';; ++ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ++ ECHO_T=' ';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir 2>/dev/null ++fi ++if (echo >conf$$.file) 2>/dev/null; then ++ if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -pR'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -pR' ++ elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++ else ++ as_ln_s='cp -pR' ++ fi ++else ++ as_ln_s='cp -pR' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++ ++# as_fn_mkdir_p ++# ------------- ++# Create "$as_dir" as a directory, including parents if necessary. ++as_fn_mkdir_p () ++{ ++ ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || eval $as_mkdir_p || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" ++ ++ ++} # as_fn_mkdir_p ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p='mkdir -p "$as_dir"' ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++ ++# as_fn_executable_p FILE ++# ----------------------- ++# Test if FILE is an executable regular file. ++as_fn_executable_p () ++{ ++ test -f "$1" && test -x "$1" ++} # as_fn_executable_p ++as_test_x='test -x' ++as_executable_p=as_fn_executable_p ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++exec 6>&1 ++## ----------------------------------- ## ++## Main body of $CONFIG_STATUS script. ## ++## ----------------------------------- ## ++_ASEOF ++test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++# Save the log message, to keep $0 and so on meaningful, and to ++# report actual input values of CONFIG_FILES etc. instead of their ++# values after options handling. ++ac_log=" ++This file was extended by package-unused $as_me version-unused, which was ++generated by GNU Autoconf 2.69. Invocation command line was ++ ++ CONFIG_FILES = $CONFIG_FILES ++ CONFIG_HEADERS = $CONFIG_HEADERS ++ CONFIG_LINKS = $CONFIG_LINKS ++ CONFIG_COMMANDS = $CONFIG_COMMANDS ++ $ $0 $@ ++ ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ ++_ACEOF ++ ++case $ac_config_files in *" ++"*) set x $ac_config_files; shift; ac_config_files=$*;; ++esac ++ ++case $ac_config_headers in *" ++"*) set x $ac_config_headers; shift; ac_config_headers=$*;; ++esac ++ ++ ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++# Files that config.status was made for. ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++ac_cs_usage="\ ++\`$as_me' instantiates files and other configuration actions ++from templates according to the current configuration. Unless the files ++and actions are specified as TAGs, all are instantiated by default. ++ ++Usage: $0 [OPTION]... [TAG]... ++ ++ -h, --help print this help, then exit ++ -V, --version print version number and configuration settings, then exit ++ --config print configuration, then exit ++ -q, --quiet, --silent ++ do not print progress messages ++ -d, --debug don't remove temporary files ++ --recheck update $as_me by reconfiguring in the same conditions ++ --file=FILE[:TEMPLATE] ++ instantiate the configuration file FILE ++ --header=FILE[:TEMPLATE] ++ instantiate the configuration header FILE ++ ++Configuration files: ++$config_files ++ ++Configuration headers: ++$config_headers ++ ++Configuration commands: ++$config_commands ++ ++Report bugs to the package provider." ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ++ac_cs_version="\\ ++package-unused config.status version-unused ++configured by $0, generated by GNU Autoconf 2.69, ++ with options \\"\$ac_cs_config\\" ++ ++Copyright (C) 2012 Free Software Foundation, Inc. ++This config.status script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it." ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' ++MKDIR_P='$MKDIR_P' ++AWK='$AWK' ++test -n "\$AWK" || AWK=awk ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++# The default lists apply if the user does not specify any file. ++ac_need_defaults=: ++while test $# != 0 ++do ++ case $1 in ++ --*=?*) ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ++ ac_shift=: ++ ;; ++ --*=) ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg= ++ ac_shift=: ++ ;; ++ *) ++ ac_option=$1 ++ ac_optarg=$2 ++ ac_shift=shift ++ ;; ++ esac ++ ++ case $ac_option in ++ # Handling of the options. ++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ++ ac_cs_recheck=: ;; ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ $as_echo "$ac_cs_version"; exit ;; ++ --config | --confi | --conf | --con | --co | --c ) ++ $as_echo "$ac_cs_config"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) ++ debug=: ;; ++ --file | --fil | --fi | --f ) ++ $ac_shift ++ case $ac_optarg in ++ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ '') as_fn_error $? "missing file argument" ;; ++ esac ++ as_fn_append CONFIG_FILES " '$ac_optarg'" ++ ac_need_defaults=false;; ++ --header | --heade | --head | --hea ) ++ $ac_shift ++ case $ac_optarg in ++ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ as_fn_append CONFIG_HEADERS " '$ac_optarg'" ++ ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ as_fn_error $? "ambiguous option: \`$1' ++Try \`$0 --help' for more information.";; ++ --help | --hel | -h ) ++ $as_echo "$ac_cs_usage"; exit ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil | --si | --s) ++ ac_cs_silent=: ;; ++ ++ # This is an error. ++ -*) as_fn_error $? "unrecognized option: \`$1' ++Try \`$0 --help' for more information." ;; ++ ++ *) as_fn_append ac_config_targets " $1" ++ ac_need_defaults=false ;; ++ ++ esac ++ shift ++done ++ ++ac_configure_extra_args= ++ ++if $ac_cs_silent; then ++ exec 6>/dev/null ++ ac_configure_extra_args="$ac_configure_extra_args --silent" ++fi ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++if \$ac_cs_recheck; then ++ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++ shift ++ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 ++ CONFIG_SHELL='$SHELL' ++ export CONFIG_SHELL ++ exec "\$@" ++fi ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ $as_echo "$ac_log" ++} >&5 ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++# ++# INIT-COMMANDS ++# ++ ++srcdir="$srcdir" ++host="$host" ++target="$target" ++with_multisubdir="$with_multisubdir" ++with_multisrctop="$with_multisrctop" ++with_target_subdir="$with_target_subdir" ++ac_configure_args="${multilib_arg} ${ac_configure_args}" ++multi_basedir="$multi_basedir" ++CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} ++CC="$CC" ++CXX="$CXX" ++GFORTRAN="$GFORTRAN" ++GDC="$GDC" ++AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" ++ ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++sed_quote_subst='$sed_quote_subst' ++double_quote_subst='$double_quote_subst' ++delay_variable_subst='$delay_variable_subst' ++macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' ++macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' ++enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' ++enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' ++pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' ++enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' ++SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ++ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' ++host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' ++host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' ++host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' ++build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' ++build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' ++build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' ++SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' ++Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' ++GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' ++EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' ++FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' ++LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' ++NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' ++LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' ++max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ++ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' ++exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' ++lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' ++lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' ++lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' ++reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' ++reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' ++OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' ++deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' ++file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' ++AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' ++AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' ++STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' ++RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' ++old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' ++old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' ++old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' ++lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' ++CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' ++CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' ++compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' ++GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' ++objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' ++MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' ++lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' ++need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' ++DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' ++NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' ++LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' ++OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' ++OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' ++libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' ++shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' ++extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' ++archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' ++enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' ++export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' ++whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' ++compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' ++old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' ++old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' ++archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' ++archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' ++module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' ++module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' ++with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' ++allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' ++no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' ++hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' ++hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' ++hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' ++hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' ++hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' ++hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' ++inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' ++link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' ++fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`' ++always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' ++export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' ++exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' ++include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' ++prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' ++file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' ++variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' ++need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' ++need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' ++version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' ++runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' ++shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' ++shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' ++libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' ++library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' ++soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' ++install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' ++postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' ++postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' ++finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' ++finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' ++hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' ++sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' ++sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' ++hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' ++enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' ++enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' ++enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' ++old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' ++striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' ++ ++LTCC='$LTCC' ++LTCFLAGS='$LTCFLAGS' ++compiler='$compiler_DEFAULT' ++ ++# A function that is used when there is no print builtin or printf. ++func_fallback_echo () ++{ ++ eval 'cat <<_LTECHO_EOF ++\$1 ++_LTECHO_EOF' ++} ++ ++# Quote evaled strings. ++for var in SHELL \ ++ECHO \ ++SED \ ++GREP \ ++EGREP \ ++FGREP \ ++LD \ ++NM \ ++LN_S \ ++lt_SP2NL \ ++lt_NL2SP \ ++reload_flag \ ++OBJDUMP \ ++deplibs_check_method \ ++file_magic_cmd \ ++AR \ ++AR_FLAGS \ ++STRIP \ ++RANLIB \ ++CC \ ++CFLAGS \ ++compiler \ ++lt_cv_sys_global_symbol_pipe \ ++lt_cv_sys_global_symbol_to_cdecl \ ++lt_cv_sys_global_symbol_to_c_name_address \ ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ ++lt_prog_compiler_no_builtin_flag \ ++lt_prog_compiler_wl \ ++lt_prog_compiler_pic \ ++lt_prog_compiler_static \ ++lt_cv_prog_compiler_c_o \ ++need_locks \ ++DSYMUTIL \ ++NMEDIT \ ++LIPO \ ++OTOOL \ ++OTOOL64 \ ++shrext_cmds \ ++export_dynamic_flag_spec \ ++whole_archive_flag_spec \ ++compiler_needs_object \ ++with_gnu_ld \ ++allow_undefined_flag \ ++no_undefined_flag \ ++hardcode_libdir_flag_spec \ ++hardcode_libdir_flag_spec_ld \ ++hardcode_libdir_separator \ ++fix_srcfile_path \ ++exclude_expsyms \ ++include_expsyms \ ++file_list_spec \ ++variables_saved_for_relink \ ++libname_spec \ ++library_names_spec \ ++soname_spec \ ++install_override_mode \ ++finish_eval \ ++old_striplib \ ++striplib; do ++ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in ++ *[\\\\\\\`\\"\\\$]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done ++ ++# Double-quote double-evaled strings. ++for var in reload_cmds \ ++old_postinstall_cmds \ ++old_postuninstall_cmds \ ++old_archive_cmds \ ++extract_expsyms_cmds \ ++old_archive_from_new_cmds \ ++old_archive_from_expsyms_cmds \ ++archive_cmds \ ++archive_expsym_cmds \ ++module_cmds \ ++module_expsym_cmds \ ++export_symbols_cmds \ ++prelink_cmds \ ++postinstall_cmds \ ++postuninstall_cmds \ ++finish_cmds \ ++sys_lib_search_path_spec \ ++sys_lib_dlsearch_path_spec; do ++ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in ++ *[\\\\\\\`\\"\\\$]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done ++ ++ac_aux_dir='$ac_aux_dir' ++xsi_shell='$xsi_shell' ++lt_shell_append='$lt_shell_append' ++ ++# See if we are running on zsh, and set the options which allow our ++# commands through without removal of \ escapes INIT. ++if test -n "\${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi ++ ++ ++ PACKAGE='$PACKAGE' ++ VERSION='$VERSION' ++ TIMESTAMP='$TIMESTAMP' ++ RM='$RM' ++ ofile='$ofile' ++ ++ ++ ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++ ++# Handling of arguments. ++for ac_config_target in $ac_config_targets ++do ++ case $ac_config_target in ++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; ++ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "libga68.spec") CONFIG_FILES="$CONFIG_FILES libga68.spec" ;; ++ ++ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; ++ esac ++done ++ ++ ++# If the user did not use the arguments to specify the items to instantiate, ++# then the envvar interface is used. Set only those that are not. ++# We use the long form for the default assignment because of an extremely ++# bizarre bug on SunOS 4.1.3. ++if $ac_need_defaults; then ++ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files ++ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers ++ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands ++fi ++ ++# Have a temporary directory for convenience. Make it in the build tree ++# simply because there is no reason against having it here, and in addition, ++# creating and moving files from /tmp can sometimes cause problems. ++# Hook for its removal unless debugging. ++# Note that there is a small window in which the directory will not be cleaned: ++# after its creation but before its name has been assigned to `$tmp'. ++$debug || ++{ ++ tmp= ac_tmp= ++ trap 'exit_status=$? ++ : "${ac_tmp:=$tmp}" ++ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ++' 0 ++ trap 'as_fn_exit 1' 1 2 13 15 ++} ++# Create a (secure) tmp directory for tmp files. ++ ++{ ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && ++ test -d "$tmp" ++} || ++{ ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") ++} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ++ac_tmp=$tmp ++ ++# Set up the scripts for CONFIG_FILES section. ++# No need to generate them if there are no CONFIG_FILES. ++# This happens for instance with `./config.status config.h'. ++if test -n "$CONFIG_FILES"; then ++ ++ ++ac_cr=`echo X | tr X '\015'` ++# On cygwin, bash can eat \r inside `` if the user requested igncr. ++# But we know of no other shell where ac_cr would be empty at this ++# point, so we can use a bashism as a fallback. ++if test "x$ac_cr" = x; then ++ eval ac_cr=\$\'\\r\' ++fi ++ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` ++if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ++ ac_cs_awk_cr='\\r' ++else ++ ac_cs_awk_cr=$ac_cr ++fi ++ ++echo 'BEGIN {' >"$ac_tmp/subs1.awk" && ++_ACEOF ++ ++ ++{ ++ echo "cat >conf$$subs.awk <<_ACEOF" && ++ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && ++ echo "_ACEOF" ++} >conf$$subs.sh || ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ++ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ . ./conf$$subs.sh || ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ++ ++ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` ++ if test $ac_delim_n = $ac_delim_num; then ++ break ++ elif $ac_last_try; then ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done ++rm -f conf$$subs.sh ++ ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && ++_ACEOF ++sed -n ' ++h ++s/^/S["/; s/!.*/"]=/ ++p ++g ++s/^[^!]*!// ++:repl ++t repl ++s/'"$ac_delim"'$// ++t delim ++:nl ++h ++s/\(.\{148\}\)..*/\1/ ++t more1 ++s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ ++p ++n ++b repl ++:more1 ++s/["\\]/\\&/g; s/^/"/; s/$/"\\/ ++p ++g ++s/.\{148\}// ++t nl ++:delim ++h ++s/\(.\{148\}\)..*/\1/ ++t more2 ++s/["\\]/\\&/g; s/^/"/; s/$/"/ ++p ++b ++:more2 ++s/["\\]/\\&/g; s/^/"/; s/$/"\\/ ++p ++g ++s/.\{148\}// ++t delim ++' >$CONFIG_STATUS || ac_write_fail=1 ++rm -f conf$$subs.awk ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++_ACAWK ++cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && ++ for (key in S) S_is_set[key] = 1 ++ FS = "" ++ ++} ++{ ++ line = $ 0 ++ nfields = split(line, field, "@") ++ substed = 0 ++ len = length(field[1]) ++ for (i = 2; i < nfields; i++) { ++ key = field[i] ++ keylen = length(key) ++ if (S_is_set[key]) { ++ value = S[key] ++ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) ++ len += length(value) + length(field[++i]) ++ substed = 1 ++ } else ++ len += 1 + keylen ++ } ++ ++ print line ++} ++ ++_ACAWK ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then ++ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" ++else ++ cat ++fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ ++ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 ++_ACEOF ++ ++# VPATH may cause trouble with some makes, so we remove sole $(srcdir), ++# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and ++# trailing colons and then remove the whole line if VPATH becomes empty ++# (actually we leave an empty line to preserve line numbers). ++if test "x$srcdir" = x.; then ++ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ ++h ++s/// ++s/^/:/ ++s/[ ]*$/:/ ++s/:\$(srcdir):/:/g ++s/:\${srcdir}:/:/g ++s/:@srcdir@:/:/g ++s/^:*// ++s/:*$// ++x ++s/\(=[ ]*\).*/\1/ ++G ++s/\n// ++s/^[^=]*=[ ]*$// ++}' ++fi ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++fi # test -n "$CONFIG_FILES" ++ ++# Set up the scripts for CONFIG_HEADERS section. ++# No need to generate them if there are no CONFIG_HEADERS. ++# This happens for instance with `./config.status Makefile'. ++if test -n "$CONFIG_HEADERS"; then ++cat >"$ac_tmp/defines.awk" <<\_ACAWK || ++BEGIN { ++_ACEOF ++ ++# Transform confdefs.h into an awk script `defines.awk', embedded as ++# here-document in config.status, that substitutes the proper values into ++# config.h.in to produce config.h. ++ ++# Create a delimiter string that does not exist in confdefs.h, to ease ++# handling of long lines. ++ac_delim='%!_!# ' ++for ac_last_try in false false :; do ++ ac_tt=`sed -n "/$ac_delim/p" confdefs.h` ++ if test -z "$ac_tt"; then ++ break ++ elif $ac_last_try; then ++ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done ++ ++# For the awk script, D is an array of macro values keyed by name, ++# likewise P contains macro parameters if any. Preserve backslash ++# newline sequences. ++ ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++sed -n ' ++s/.\{148\}/&'"$ac_delim"'/g ++t rset ++:rset ++s/^[ ]*#[ ]*define[ ][ ]*/ / ++t def ++d ++:def ++s/\\$// ++t bsnl ++s/["\\]/\\&/g ++s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ ++D["\1"]=" \3"/p ++s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p ++d ++:bsnl ++s/["\\]/\\&/g ++s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ ++D["\1"]=" \3\\\\\\n"\\/p ++t cont ++s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p ++t cont ++d ++:cont ++n ++s/.\{148\}/&'"$ac_delim"'/g ++t clear ++:clear ++s/\\$// ++t bsnlc ++s/["\\]/\\&/g; s/^/"/; s/$/"/p ++d ++:bsnlc ++s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p ++b cont ++' >$CONFIG_STATUS || ac_write_fail=1 ++ ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++ for (key in D) D_is_set[key] = 1 ++ FS = "" ++} ++/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { ++ line = \$ 0 ++ split(line, arg, " ") ++ if (arg[1] == "#") { ++ defundef = arg[2] ++ mac1 = arg[3] ++ } else { ++ defundef = substr(arg[1], 2) ++ mac1 = arg[2] ++ } ++ split(mac1, mac2, "(") #) ++ macro = mac2[1] ++ prefix = substr(line, 1, index(line, defundef) - 1) ++ if (D_is_set[macro]) { ++ # Preserve the white space surrounding the "#". ++ print prefix "define", macro P[macro] D[macro] ++ next ++ } else { ++ # Replace #undef with comments. This is necessary, for example, ++ # in the case of _POSIX_SOURCE, which is predefined and required ++ # on some systems where configure will not decide to define it. ++ if (defundef == "undef") { ++ print "/*", prefix defundef, macro, "*/" ++ next ++ } ++ } ++} ++{ print } ++_ACAWK ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 ++fi # test -n "$CONFIG_HEADERS" ++ ++ ++eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" ++shift ++for ac_tag ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; ++ :[FH]-) ac_tag=-:-;; ++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; ++ esac ++ ac_save_IFS=$IFS ++ IFS=: ++ set x $ac_tag ++ IFS=$ac_save_IFS ++ shift ++ ac_file=$1 ++ shift ++ ++ case $ac_mode in ++ :L) ac_source=$1;; ++ :[FH]) ++ ac_file_inputs= ++ for ac_f ++ do ++ case $ac_f in ++ -) ac_f="$ac_tmp/stdin";; ++ *) # Look for the file first in the build tree, then in the source tree ++ # (if the path is not absolute). The absolute path cannot be DOS-style, ++ # because $ac_f cannot contain `:'. ++ test -f "$ac_f" || ++ case $ac_f in ++ [\\/$]*) false;; ++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; ++ esac || ++ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; ++ esac ++ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ++ as_fn_append ac_file_inputs " '$ac_f'" ++ done ++ ++ # Let's still pretend it is `configure' which instantiates (i.e., don't ++ # use $as_me), people would be surprised to read: ++ # /* config.h. Generated by config.status. */ ++ configure_input='Generated from '` ++ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' ++ `' by configure.' ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 ++$as_echo "$as_me: creating $ac_file" >&6;} ++ fi ++ # Neutralize special characters interpreted by sed in replacement strings. ++ case $configure_input in #( ++ *\&* | *\|* | *\\* ) ++ ac_sed_conf_input=`$as_echo "$configure_input" | ++ sed 's/[\\\\&|]/\\\\&/g'`;; #( ++ *) ac_sed_conf_input=$configure_input;; ++ esac ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$ac_tmp/stdin" \ ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; ++ esac ++ ;; ++ esac ++ ++ ac_dir=`$as_dirname -- "$ac_file" || ++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_file" : 'X\(//\)[^/]' \| \ ++ X"$ac_file" : 'X\(//\)$' \| \ ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$ac_file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ as_dir="$ac_dir"; as_fn_mkdir_p ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # ++ ++ case $INSTALL in ++ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; ++ esac ++ ac_MKDIR_P=$MKDIR_P ++ case $MKDIR_P in ++ [\\/$]* | ?:[\\/]* ) ;; ++ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; ++ esac ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++# If the template does not know about datarootdir, expand it. ++# FIXME: This hack should be removed a few years after 2.60. ++ac_datarootdir_hack=; ac_datarootdir_seen= ++ac_sed_dataroot=' ++/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p' ++case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++ ac_datarootdir_hack=' ++ s&@datadir@&$datadir&g ++ s&@docdir@&$docdir&g ++ s&@infodir@&$infodir&g ++ s&@localedir@&$localedir&g ++ s&@mandir@&$mandir&g ++ s&\\\${datarootdir}&$datarootdir&g' ;; ++esac ++_ACEOF ++ ++# Neutralize VPATH when `$srcdir' = `.'. ++# Shell code in configure.ac might set extrasub. ++# FIXME: do we really want to maintain this feature? ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++ac_sed_extra="$ac_vpsub ++$extrasub ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++:t ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++s|@configure_input@|$ac_sed_conf_input|;t t ++s&@top_builddir@&$ac_top_builddir_sub&;t t ++s&@top_build_prefix@&$ac_top_build_prefix&;t t ++s&@srcdir@&$ac_srcdir&;t t ++s&@abs_srcdir@&$ac_abs_srcdir&;t t ++s&@top_srcdir@&$ac_top_srcdir&;t t ++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t ++s&@builddir@&$ac_builddir&;t t ++s&@abs_builddir@&$ac_abs_builddir&;t t ++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t ++s&@INSTALL@&$ac_INSTALL&;t t ++s&@MKDIR_P@&$ac_MKDIR_P&;t t ++$ac_datarootdir_hack ++" ++eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ ++ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ++ ++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && ++ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && ++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ ++ "$ac_tmp/out"`; test -z "$ac_out"; } && ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined" >&5 ++$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined" >&2;} ++ ++ rm -f "$ac_tmp/stdin" ++ case $ac_file in ++ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; ++ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; ++ esac \ ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # ++ if test x"$ac_file" != x-; then ++ { ++ $as_echo "/* $configure_input */" \ ++ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" ++ } >"$ac_tmp/config.h" \ ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ++ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 ++$as_echo "$as_me: $ac_file is unchanged" >&6;} ++ else ++ rm -f "$ac_file" ++ mv "$ac_tmp/config.h" "$ac_file" \ ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ++ fi ++ else ++ $as_echo "/* $configure_input */" \ ++ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ ++ || as_fn_error $? "could not create -" "$LINENO" 5 ++ fi ++# Compute "$ac_file"'s index in $config_headers. ++_am_arg="$ac_file" ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $_am_arg | $_am_arg:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; ++ esac ++done ++echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || ++$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$_am_arg" : 'X\(//\)[^/]' \| \ ++ X"$_am_arg" : 'X\(//\)$' \| \ ++ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$_am_arg" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; ++ ++ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 ++$as_echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac ++ ++ ++ case $ac_file$ac_mode in ++ "default-1":C) ++# Only add multilib support code if we just rebuilt the top-level ++# Makefile. ++case " $CONFIG_FILES " in ++ *" Makefile "*) ++ ac_file=Makefile . ${multi_basedir}/config-ml.in ++ ;; ++esac ;; ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || { ++ # Older Autoconf quotes --file arguments for eval, but not when files ++ # are listed without --file. Let's play safe and only enable the eval ++ # if we detect the quoting. ++ case $CONFIG_FILES in ++ *\'*) eval set x "$CONFIG_FILES" ;; ++ *) set x $CONFIG_FILES ;; ++ esac ++ shift ++ for mf ++ do ++ # Strip MF so we end up with the name of the file. ++ mf=`echo "$mf" | sed -e 's/:.*$//'` ++ # Check whether this is an Automake generated Makefile or not. ++ # We used to match only the files named 'Makefile.in', but ++ # some people rename them; so instead we look at the file content. ++ # Grep'ing the first line is not enough: some people post-process ++ # each Makefile.in and add a new line on top of each file to say so. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then ++ dirpart=`$as_dirname -- "$mf" || ++$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$mf" : 'X\(//\)[^/]' \| \ ++ X"$mf" : 'X\(//\)$' \| \ ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$mf" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running 'make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` ++ test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "$am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ ++ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`$as_dirname -- "$file" || ++$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$file" : 'X\(//\)[^/]' \| \ ++ X"$file" : 'X\(//\)$' \| \ ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ as_dir=$dirpart/$fdir; as_fn_mkdir_p ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" ++ done ++ done ++} ++ ;; ++ "libtool":C) ++ ++ # See if we are running on zsh, and set the options which allow our ++ # commands through without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ ++ cfgfile="${ofile}T" ++ trap "$RM \"$cfgfile\"; exit 1" 1 2 15 ++ $RM "$cfgfile" ++ ++ cat <<_LT_EOF >> "$cfgfile" ++#! $SHELL ++ ++# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, ++# 2006, 2007, 2008, 2009 Free Software Foundation, Inc. ++# Written by Gordon Matzigkeit, 1996 ++# ++# This file is part of GNU Libtool. ++# ++# GNU Libtool is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License as ++# published by the Free Software Foundation; either version 2 of ++# the License, or (at your option) any later version. ++# ++# As a special exception to the GNU General Public License, ++# if you distribute this file as part of a program or library that ++# is built using GNU Libtool, you may include this file under the ++# same distribution terms that you use for the rest of that program. ++# ++# GNU Libtool is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GNU Libtool; see the file COPYING. If not, a copy ++# can be downloaded from http://www.gnu.org/licenses/gpl.html, or ++# obtained by writing to the Free Software Foundation, Inc., ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ ++ ++# The names of the tagged configurations supported by this script. ++available_tags="" ++ ++# ### BEGIN LIBTOOL CONFIG ++ ++# Which release of libtool.m4 was used? ++macro_version=$macro_version ++macro_revision=$macro_revision ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# What type of objects to build. ++pic_mode=$pic_mode ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# An echo program that protects backslashes. ++ECHO=$lt_ECHO ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# A sed program that does not truncate output. ++SED=$lt_SED ++ ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="\$SED -e 1s/^X//" ++ ++# A grep program that handles long lines. ++GREP=$lt_GREP ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# A literal string matcher. ++FGREP=$lt_FGREP ++ ++# A BSD- or MS-compatible name lister. ++NM=$lt_NM ++ ++# Whether we need soft or hard links. ++LN_S=$lt_LN_S ++ ++# What is the maximum length of a command? ++max_cmd_len=$max_cmd_len ++ ++# Object file suffix (normally "o"). ++objext=$ac_objext ++ ++# Executable file suffix (normally ""). ++exeext=$exeext ++ ++# whether the shell understands "unset". ++lt_unset=$lt_unset ++ ++# turn spaces into newlines. ++SP2NL=$lt_lt_SP2NL ++ ++# turn newlines into spaces. ++NL2SP=$lt_lt_NL2SP ++ ++# An object symbol dumper. ++OBJDUMP=$lt_OBJDUMP ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == "file_magic". ++file_magic_cmd=$lt_file_magic_cmd ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A symbol stripping program. ++STRIP=$lt_STRIP ++ ++# Commands used to install an old-style archive. ++RANLIB=$lt_RANLIB ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# Whether to use a lock for old archive extraction. ++lock_old_archive_extraction=$lock_old_archive_extraction ++ ++# A C compiler. ++LTCC=$lt_CC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_CFLAGS ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration. ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair. ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# Transform the output of nm in a C name address pair when lib prefix is needed. ++global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# Used to examine libraries when file_magic_cmd begins with "file". ++MAGIC_CMD=$MAGIC_CMD ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Tool to manipulate archived DWARF debug symbol files on Mac OS X. ++DSYMUTIL=$lt_DSYMUTIL ++ ++# Tool to change global to local symbols on Mac OS X. ++NMEDIT=$lt_NMEDIT ++ ++# Tool to manipulate fat objects and archives on Mac OS X. ++LIPO=$lt_LIPO ++ ++# ldd/readelf like tool for Mach-O binaries on Mac OS X. ++OTOOL=$lt_OTOOL ++ ++# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. ++OTOOL64=$lt_OTOOL64 ++ ++# Old archive suffix (normally "a"). ++libext=$libext ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds=$lt_shrext_cmds ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at link time. ++variables_saved_for_relink=$lt_variables_saved_for_relink ++ ++# Do we need the "lib" prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# Shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Permission mode override for installation of shared libraries. ++install_override_mode=$lt_install_override_mode ++ ++# Command to use after installation of a shared archive. ++postinstall_cmds=$lt_postinstall_cmds ++ ++# Command to use after uninstallation of a shared archive. ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# As "finish_cmds", except a single script fragment to be evaled but ++# not shown. ++finish_eval=$lt_finish_eval ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Compile-time system search path for libraries. ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries. ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++ ++# The linker used to build libraries. ++LD=$lt_LD ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# Commands used to build an old-style archive. ++old_archive_cmds=$lt_old_archive_cmds ++ ++# A language specific compiler. ++CC=$lt_compiler ++ ++# Is the compiler the GNU compiler? ++with_gcc=$GCC ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc ++ ++# Whether or not to disallow shared libs when runtime libs are static. ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec ++ ++# Whether the compiler copes with passing no objects directly. ++compiler_needs_object=$lt_compiler_needs_object ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds ++ ++# Commands used to build a shared archive. ++archive_cmds=$lt_archive_cmds ++archive_expsym_cmds=$lt_archive_expsym_cmds ++ ++# Commands used to build a loadable module if different from building ++# a shared archive. ++module_cmds=$lt_module_cmds ++module_expsym_cmds=$lt_module_expsym_cmds ++ ++# Whether we are building with GNU ld or not. ++with_gnu_ld=$lt_with_gnu_ld ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag ++ ++# Flag that enforces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec ++ ++# If ld is used when linking, flag to hardcode \$libdir into a binary ++# during linking. This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld ++ ++# Whether we need a single "-rpath" flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator ++ ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary. ++hardcode_direct=$hardcode_direct ++ ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary and the resulting library dependency is ++# "absolute",i.e impossible to change by setting \${shlibpath_var} if the ++# library is relocated. ++hardcode_direct_absolute=$hardcode_direct_absolute ++ ++# Set to "yes" if using the -LDIR flag during linking hardcodes DIR ++# into the resulting binary. ++hardcode_minus_L=$hardcode_minus_L ++ ++# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR ++# into the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var ++ ++# Set to "yes" if building a shared library automatically hardcodes DIR ++# into the library and all subsequent libraries and executables linked ++# against it. ++hardcode_automatic=$hardcode_automatic ++ ++# Set to yes if linker adds runtime paths of dependent libraries ++# to runtime path list. ++inherit_rpath=$inherit_rpath ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to "yes" if exported symbols are required. ++always_export_symbols=$always_export_symbols ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms ++ ++# Commands necessary for linking programs (against libraries) with templates. ++prelink_cmds=$lt_prelink_cmds ++ ++# Specify filename containing input files. ++file_list_spec=$lt_file_list_spec ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action ++ ++# ### END LIBTOOL CONFIG ++ ++_LT_EOF ++ ++ case $host_os in ++ aix3*) ++ cat <<\_LT_EOF >> "$cfgfile" ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++_LT_EOF ++ ;; ++ esac ++ ++ ++ltmain="$ac_aux_dir/ltmain.sh" ++ ++ ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ case $xsi_shell in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result="${1##*/}" ++} ++ ++# func_dirname_and_basename file append nondir_replacement ++# perform func_basename and func_dirname in a single function ++# call: ++# dirname: Compute the dirname of FILE. If nonempty, ++# add APPEND to the result, otherwise set result ++# to NONDIR_REPLACEMENT. ++# value returned in "$func_dirname_result" ++# basename: Compute filename of FILE. ++# value retuned in "$func_basename_result" ++# Implementation must be kept synchronized with func_dirname ++# and func_basename. For efficiency, we do not delegate to ++# those functions but instead duplicate the functionality here. ++func_dirname_and_basename () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++ func_basename_result="${1##*/}" ++} ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++func_stripname () ++{ ++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are ++ # positional parameters, so assign one to ordinary parameter first. ++ func_stripname_result=${3} ++ func_stripname_result=${func_stripname_result#"${1}"} ++ func_stripname_result=${func_stripname_result%"${2}"} ++} ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=${1%%=*} ++ func_opt_split_arg=${1#*=} ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ case ${1} in ++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; ++ *) func_lo2o_result=${1} ;; ++ esac ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=${1%.*}.lo ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=$(( $* )) ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=${#1} ++} ++ ++_LT_EOF ++ ;; ++ *) # Bourne compatible functions. ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ # Extract subdirectory from the argument. ++ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` ++ if test "X$func_dirname_result" = "X${1}"; then ++ func_dirname_result="${3}" ++ else ++ func_dirname_result="$func_dirname_result${2}" ++ fi ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result=`$ECHO "${1}" | $SED "$basename"` ++} ++ ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++# func_strip_suffix prefix name ++func_stripname () ++{ ++ case ${2} in ++ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; ++ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; ++ esac ++} ++ ++# sed scripts: ++my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' ++my_sed_long_arg='1s/^-[^=]*=//' ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` ++ func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=`expr "$@"` ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` ++} ++ ++_LT_EOF ++esac ++ ++case $lt_shell_append in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1+=\$2" ++} ++_LT_EOF ++ ;; ++ *) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1=\$$1\$2" ++} ++ ++_LT_EOF ++ ;; ++ esac ++ ++ ++ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ mv -f "$cfgfile" "$ofile" || ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" ++ ++ ;; ++ ++ esac ++done # for ac_tag ++ ++ ++as_fn_exit 0 ++_ACEOF ++ac_clean_files=$ac_clean_files_save ++ ++test $ac_write_fail = 0 || ++ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 ++ ++ ++# configure is writing to config.log, and then calls config.status. ++# config.status does its own redirection, appending to config.log. ++# Unfortunately, on DOS this fails, as config.log is still kept open ++# by configure, so config.status won't be able to write to it; its ++# output is simply discarded. So we exec the FD to /dev/null, ++# effectively closing config.log, so it can be properly (re)opened and ++# appended to by config.status. When coming back to configure, we ++# need to make the FD available again. ++if test "$no_create" != yes; then ++ ac_cs_success=: ++ ac_config_status_args= ++ test "$silent" = yes && ++ ac_config_status_args="$ac_config_status_args --quiet" ++ exec 5>/dev/null ++ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false ++ exec 5>>config.log ++ # Use ||, not &&, to avoid exiting from the if with $? = 1, which ++ # would make configure fail if this is the last instruction. ++ $ac_cs_success || as_fn_exit 1 ++fi ++if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 ++$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} ++fi ++ +--- /dev/null ++++ b/src/libga68/configure.ac +@@ -0,0 +1,371 @@ ++# Configure script for libga68. ++# Copyright (C) 2025 Jose E. Marchesi. ++ ++# GCC is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3, or (at your option) ++# any later version. ++ ++# GCC is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++ ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Process this file with autoreconf to produce a configure script. ++ ++AC_INIT(package-unused, version-unused,,libga68) ++AC_CONFIG_SRCDIR(Makefile.am) ++AC_CONFIG_HEADER(config.h) ++ ++# Add --enable-multilib to configure, which defaults to enable. ++AM_ENABLE_MULTILIB(, ..) ++ ++if test "${multilib}" = "yes"; then ++ multilib_arg="--enable-multilib" ++else ++ multilib_arg= ++fi ++ ++# Cope with compilers, in subsequent tests, that at this stage may not ++# be able to build executables. ++GCC_NO_EXECUTABLES ++ ++# Enable extensions to C or POSIX on hosts that normally disable the ++# extensions. This should be called before any macros that run the C ++# compiler. ++AC_USE_SYSTEM_EXTENSIONS ++ ++# Determine the system type and set output variabls to the names of ++# the canonical system types. ++# ++# Do not delete or change the following two lines. For why, and for ++# why we are using the obsolete AC_CANONICAL_SYSTEM as ell as the ++# recommended AC_CANONICAL_HOST, see ++# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html ++AC_CANONICAL_SYSTEM ++target_alias=${target_alias-$host_alias} ++AC_SUBST(target_alias) ++AC_CANONICAL_HOST ++ ++# These macro are for supporting canadian crosses, in which build /= ++# host /= target. ++ACX_NONCANONICAL_HOST ++ACX_NONCANONICAL_TARGET ++GCC_TOPLEV_SUBDIRS ++ ++# Initialize Automake with proper options. ++AM_INIT_AUTOMAKE([1.15.1 no-define foreign no-dist -Wall -Wno-portability]) ++ ++# Tell Autoheader to include templates for PACKAGE and VERSION in ++# config.h.in. ++AH_TEMPLATE(PACKAGE, [Name of package]) ++AH_TEMPLATE(VERSION, [Version number of package]) ++ ++# Command-line options. ++ ++# Enable large-file support. ++AC_SYS_LARGEFILE ++ ++AC_ARG_WITH(cross-host, ++[ --with-cross-host=HOST Configuring with a cross compiler]) ++ ++AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) ++AC_ARG_ENABLE(version-specific-runtime-libs, ++[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ], ++[case "$enableval" in ++ yes) version_specific_libs=yes ;; ++ no) version_specific_libs=no ;; ++ *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; ++ esac], ++[version_specific_libs=no]) ++AC_MSG_RESULT($version_specific_libs) ++ ++AC_ARG_WITH(slibdir, ++[ --with-slibdir=DIR shared libraries in DIR [LIBDIR]], ++slibdir="$with_slibdir", ++if test "${version_specific_libs}" = yes; then ++ slibdir='$(libsubdir)' ++elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then ++ slibdir='$(exec_prefix)/$(host_noncanonical)/lib' ++else ++ slibdir='$(libdir)' ++fi) ++AC_SUBST(slibdir) ++ ++# Calculate toolexeclibdir ++# Also toolexecdir, though it's only used in toolexeclibdir ++toolexecdir=no ++toolexeclibdir=no ++case ${version_specific_libs} in ++ yes) ++ # Need the gcc compiler version to know where to install libraries ++ # and header files if --enable-version-specific-runtime-libs option ++ # is selected. ++ toolexecdir='$(libdir)/gcc/$(target_noncanonical)' ++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' ++ ;; ++ no) ++ if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ # Install a library built with a cross compiler in tooldir, not libdir. ++ toolexecdir='$(exec_prefix)/$(target_noncanonical)' ++ toolexeclibdir='$(toolexecdir)/lib' ++ else ++ toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' ++ toolexeclibdir='$(libdir)' ++ fi ++ multi_os_directory=`$CC -print-multi-os-directory` ++ case $multi_os_directory in ++ .) ;; # Avoid trailing /. ++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; ++ esac ++ ;; ++esac ++AC_SUBST(toolexecdir) ++AC_SUBST(toolexeclibdir) ++ ++# Add support for --enable-maintainer-mode={yes,no} to configure. ++AM_MAINTAINER_MODE ++ ++# We must force CC to /not/ be precious variables; otherwise ++# the wrong, non-multilib-adjusted value will be used in multilibs. ++# As a side effect, we have to subst CFLAGS ourselves. ++m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) ++m4_define([_AC_ARG_VAR_PRECIOUS],[]) ++AC_PROG_CC ++AM_PROG_AS ++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) ++AC_SUBST(CFLAGS) ++ ++# In order to override CFLAGS_FOR_TARGET, all of our special flags go ++# in XCFLAGS. But we need them in CFLAGS during configury. So put them ++# in both places for now and restore CFLAGS at the end of config. ++save_CFLAGS="$CFLAGS" ++ ++# Find other programs we need. ++AC_CHECK_TOOL(AR, ar) ++AC_CHECK_TOOL(NM, nm) ++AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error) ++AC_PROG_MAKE_SET ++AC_PROG_INSTALL ++ ++# Initialize libtool. ++LT_INIT ++ ++AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes]) ++ ++AC_SUBST(enable_shared) ++AC_SUBST(enable_static) ++ ++# Do compilation tests using the C compiler and preprocessor. ++AC_LANG_C([C]) ++ ++# Allow the user to set CC_FOR_BUILD in the environment. ++CC_FOR_BUILD=${CC_FOR_BUILD:-gcc} ++AC_SUBST(CC_FOR_BUILD) ++ ++# Search for needed functions in host libraries. ++AC_SEARCH_LIBS([malloc], [c]) ++AC_SEARCH_LIBS([cosf], [m]) ++ ++# Determine what GCC version number to use in filesystem paths. ++GCC_BASE_VER ++ ++# Add dependencies for libga68.spec file ++SPEC_LIBGA68_DEPS="$LIBS" ++AC_SUBST(SPEC_LIBGA68_DEPS) ++ ++# libga68 soname version ++libga68_VERSION=1:0:0 ++AC_SUBST(libga68_VERSION) ++ ++# The Boehm GC ++ ++AC_ARG_ENABLE(algol68-gc, ++[AS_HELP_STRING([--enable-algol68-gc], ++ [enable use of Boehm's garbage collector with the ++ GNU Algol runtime])],,enable_algol68_gc=no) ++AC_ARG_WITH([target-bdw-gc], ++[AS_HELP_STRING([--with-target-bdw-gc=PATHLIST], ++ [specify prefix directory for installed bdw-gc package. ++ Equivalent to --with-target-bdw-gc-include=PATH/include ++ plus --with-target-bdw-gc-lib=PATH/lib])]) ++AC_ARG_WITH([target-bdw-gc-include], ++[AS_HELP_STRING([--with-target-bdw-gc-include=PATHLIST], ++ [specify directories for installed bdw-gc include files])]) ++AC_ARG_WITH([target-bdw-gc-lib], ++[AS_HELP_STRING([--with-target-bdw-gc-lib=PATHLIST], ++ [specify directories for installed bdw-gc library])]) ++ ++bdw_lib_dir= ++case "$enable_algol68_gc" in ++no) ++ use_bdw_gc=no ++ ;; ++*) ++ AC_MSG_CHECKING([for bdw garbage collector]) ++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then ++ dnl no bdw-gw options, assuming bdw-gc in default locations ++ BDW_GC_CFLAGS= ++ BDW_GC_LIBS="-lgc" ++ else ++ dnl bdw-gw options passed by configure flags ++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then ++ AC_MSG_ERROR([found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing]) ++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then ++ AC_MSG_ERROR([found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing]) ++ else ++ AC_MSG_RESULT([using paths configured with --with-target-bdw-gc options]) ++ fi ++ mldir=`${CC-gcc} --print-multi-directory 2>/dev/null` ++ bdw_val= ++ if test "x$with_target_bdw_gc" != x; then ++ for i in `echo $with_target_bdw_gc | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x; then ++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc]) ++ fi ++ bdw_inc_dir="$bdw_val/include" ++ bdw_lib_dir="$bdw_val/lib" ++ fi ++ bdw_val= ++ if test "x$with_target_bdw_gc_include" != x; then ++ for i in `echo $with_target_bdw_gc_include | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i; fallback=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x && test "x$bdw_inc_dir" = x && test "x$fallback" != x; then ++ bdw_inc_dir="$fallback" ++ elif test "x$bdw_val" = x; then ++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-include]) ++ else ++ bdw_inc_dir="$bdw_val" ++ fi ++ fi ++ bdw_val= ++ if test "x$with_target_bdw_gc_lib" != x; then ++ for i in `echo $with_target_bdw_gc_lib | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x; then ++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-lib]) ++ fi ++ bdw_lib_dir="$bdw_val" ++ fi ++ if test "x$bdw_inc_dir" = x; then ++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-include]) ++ fi ++ if test "x$bdw_lib_dir" = x; then ++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-lib]) ++ fi ++ BDW_GC_CFLAGS="-I$bdw_inc_dir" ++ if test -f $bdw_lib_dir/libgc.la; then ++ BDW_GC_LIBS="$bdw_lib_dir/libgc.la" ++ else ++ BDW_GC_LIBS="-L$bdw_lib_dir -lgc" ++ fi ++ AC_MSG_RESULT([found]) ++ fi ++ ++ case "$BDW_GC_LIBS" in ++ *libgc.la) ++ use_bdw_gc=yes ++ ;; ++ *) ++ AC_MSG_CHECKING([for system boehm-gc]) ++ save_CFLAGS=$CFLAGS ++ save_LIBS=$LIBS ++ CFLAGS="$CFLAGS $BDW_GC_CFLAGS" ++ LIBS="$LIBS $BDW_GC_LIBS" ++ dnl the link test is not good enough for ARM32 multilib detection, ++ dnl first check to link, then to run ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([#include ],[GC_init()])], ++ [ ++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ ++ #include ++ int main() { ++ GC_init(); ++ return 0; ++ } ++ ]])], ++ [system_bdw_gc_found=yes], ++ [system_bdw_gc_found=no], ++ dnl assume no system boehm-gc for cross builds ... ++ [system_bdw_gc_found=no] ++ ) ++ ], ++ [system_bdw_gc_found=no]) ++ CFLAGS=$save_CFLAGS ++ LIBS=$save_LIBS ++ if test x$enable_algol68_gc = xauto && test x$system_bdw_gc_found = xno; then ++ AC_MSG_WARN([system bdw-gc not found, building libga68 with no GC support]) ++ use_bdw_gc=no ++ elif test x$enable_algol68_gc = xyes && test x$system_bdw_gc_found = xno; then ++ AC_MSG_ERROR([system bdw-gc required but not found]) ++ else ++ use_bdw_gc=yes ++ AC_MSG_RESULT([found]) ++ fi ++ esac ++esac ++ ++if test "$use_bdw_gc" = no; then ++ LIBGA68_GCFLAGS='' ++ LIBGA68_BOEHM_GC_INCLUDES='' ++ LIBGA68_BOEHM_GC_LIBS='' ++else ++ LIBGA68_GCFLAGS='-DLIBGA68_WITH_GC=1' ++ LIBGA68_BOEHM_GC_INCLUDES=$BDW_GC_CFLAGS ++ LIBGA68_BOEHM_GC_LIBS=$BDW_GC_LIBS ++ SPEC_LIBGA68_DEPS="$SPEC_LIBGA68_DEPS $BDW_GC_LIBS" ++fi ++ ++extra_darwin_ldflags_libga68= ++case $host in ++ *-*-darwin*) ++ extra_darwin_ldflags_libga68=-Wl,-U,___algol68_main ++ if test -f $bdw_lib_dir/libgc.a; then ++ # Darwin wants to link this statically into the library ++ LIBGA68_BOEHM_GC_LIBS="$bdw_lib_dir/libgc.a" ++ # No spec entry. ++ BDW_GC_LIBS= ++ fi ++ ;; ++ *) ;; ++esac ++AC_SUBST(extra_darwin_ldflags_libga68) ++ ++# Subst some variables used in Makefile.am ++AC_SUBST(LIBGA68_GCFLAGS) ++AC_SUBST(LIBGA68_BOEHM_GC_INCLUDES) ++AC_SUBST(LIBGA68_BOEHM_GC_LIBS) ++ ++# Output files and be done. ++AC_CONFIG_SRCDIR([Makefile.am]) ++AC_CONFIG_FILES([Makefile]) ++AC_CONFIG_FILES(libga68.spec) ++AC_MSG_NOTICE([libga68 has been configured.]) ++AC_OUTPUT +--- /dev/null ++++ b/src/libga68/ga68-alloc.c +@@ -0,0 +1,114 @@ ++/* Run-time routines for memory allocation. ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#include ++ ++#include "ga68.h" ++ ++/* Heap allocation routines. */ ++ ++void ++_libga68_free_internal (void *pt) ++{ ++ free (pt); ++} ++ ++void * ++_libga68_malloc_internal (size_t size) ++{ ++ void *res = (void *) malloc (size); ++ if (!res) ++ _libga68_abort ("Virtual memory exhausted\n"); ++ return res; ++} ++ ++#if LIBGA68_WITH_GC ++#include ++ ++void ++_libga68_init_heap (void) ++{ ++ if (!GC_is_init_called ()) ++ { ++ GC_INIT (); ++ /* GC_allow_register_threads (); */ ++ } ++} ++ ++void * ++_libga68_realloc (void *ptr, size_t size) ++{ ++ void *res = (void *) GC_realloc (ptr, size); ++ if (!res) ++ _libga68_abort ("Virtual memory exhausted\n"); ++ return res; ++} ++ ++void * ++_libga68_realloc_unchecked (void *ptr, size_t size) ++{ ++ void *res = (void *) GC_realloc (ptr, size); ++ return res; ++} ++ ++void * ++_libga68_malloc (size_t size) ++{ ++ void *res = (void *) GC_malloc (size); ++ if (!res) ++ _libga68_abort ("Virtual memory exhausted\n"); ++ return res; ++} ++ ++#else ++ ++void ++_libga68_init_heap (void) ++{ ++} ++ ++void * ++_libga68_realloc (void *ptr, size_t size) ++{ ++ void *res = (void *) realloc (ptr, size); ++ if (!res) ++ _libga68_abort ("Virtual memory exhausted\n"); ++ return res; ++} ++ ++void * ++_libga68_realloc_unchecked (void *ptr, size_t size) ++{ ++ void *res = (void *) realloc (ptr, size); ++ return res; ++} ++ ++void * ++_libga68_malloc (size_t size) ++{ ++ void *res = (void *) malloc (size); ++ if (!res) ++ _libga68_abort ("Virtual memory exhausted\n"); ++ return res; ++} ++ ++#endif /* !LIBGA68_WITH_GC */ +--- /dev/null ++++ b/src/libga68/ga68-error.c +@@ -0,0 +1,151 @@ ++/* Support run-time routines for error handling. ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#include ++#include /* For abort. */ ++ ++#include "ga68.h" ++ ++/* Run-time error handling. ++ ++ Please use the following format when outputing runtime error messages: ++ ++ FILE:LINE:[COLUMN:] TEXT ++ ++ This keeps the output aligned with other runtime libraries such as the ++ sanitizers. */ ++ ++/* Emit a formatted error message to the standard output and then terminate the ++ process with an error code. */ ++ ++void ++_libga68_abort (const char *fmt, ...) ++{ ++ va_list ap; ++ ++ va_start (ap, fmt); ++ vfprintf (stderr, fmt, ap); ++ abort (); ++ va_end (ap); ++} ++ ++/* Assertion failure. */ ++ ++void ++_libga68_assert (const char *filename, unsigned int lineno) ++{ ++ _libga68_abort ("%s:%u: runtime error: ASSERT failure\n", ++ filename, lineno); ++} ++ ++/* Attempt to dereference NIL failure. */ ++ ++void ++_libga68_derefnil (const char *filename, unsigned int lineno) ++{ ++ _libga68_abort ("%s:%u: runtime error: attempt to dereference NIL\n", ++ filename, lineno); ++} ++ ++/* Invalid character expression. */ ++ ++void ++_libga68_invalidcharerror (const char *filename, unsigned int lineno, ++ int c) ++{ ++ if (c < 0) ++ _libga68_abort ("%s:%u: runtime error: %d is not a valid character point\n", ++ filename, lineno, c); ++ _libga68_abort ("%s:%u: runtime error: U+%x is not a valid character point\n", ++ filename, lineno, c); ++} ++ ++/* Out of bounds error in bits ELEM operator. */ ++ ++void ++_libga68_bitsboundserror (const char *filename, unsigned int lineno, ++ ssize_t pos) ++{ ++ _libga68_abort ("%s:%u: runtime error: bound %zd out of range in ELEM\n", ++ filename, lineno, pos); ++} ++ ++/* Unreachable error. */ ++ ++void ++_libga68_unreachable (const char *filename, unsigned int lineno) ++{ ++ _libga68_abort ("%s:%u: runtime error: unreachable reached\n", ++ filename, lineno); ++} ++ ++/* Lower bound failure. */ ++ ++void ++_libga68_lower_bound (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t lower_bound) ++{ ++ _libga68_abort ("%s:%u: runtime error: lower bound %zd must be >= %zd\n", ++ filename, lineno, index, lower_bound); ++} ++ ++/* Upper bound failure. */ ++ ++void ++_libga68_upper_bound (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t upper_bound) ++{ ++ _libga68_abort ("%s:%u: runtime error: upper bound %zd must be <= %zd\n", ++ filename, lineno, index, upper_bound); ++} ++ ++/* Bounds failure. */ ++ ++void ++_libga68_bounds (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t lower_bound, ssize_t upper_bound) ++{ ++ _libga68_abort ("%s:%u: runtime error: bound %zd out of range [%zd:%zd]\n", ++ filename, lineno, index, lower_bound, upper_bound); ++} ++ ++/* Dimension failure. */ ++ ++void ++_libga68_dim (const char *filename, unsigned int lineno, ++ size_t dim, size_t index) ++{ ++ _libga68_abort ("%s:%u: runtime error: invalid dimension %zd; shall be > 0 and <= %zu\n", ++ filename, lineno, index, dim); ++} ++ ++/* Multiples have different bounds in assignations. */ ++ ++void ++_libga68_bounds_mismatch (const char *filename, unsigned int lineno, ++ size_t dim, ssize_t lb1, ssize_t ub1, ++ ssize_t lb2, ssize_t ub2) ++{ ++ _libga68_abort ("%s:%u: runtime error: multiple bounds mismatch in \ ++assignation: dim %zu: [%zd:%zd] /= [%zd:%zd]\n", ++ filename, lineno, dim, lb1, ub1, lb2, ub2); ++} +--- /dev/null ++++ b/src/libga68/ga68-posix.c +@@ -0,0 +1,463 @@ ++/* Support run-time routines for the POSIX prelude. ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#include "ga68.h" ++ ++#include ++#include ++#include ++#include /* For open. */ ++#include /* For close and write. */ ++#include /* For errno. */ ++#include ++#include /* For struct stat */ ++#include ++#include /* For gethostbyname. */ ++#include /* For LLONG_MAX */ ++ ++#define EOF_PSEUDO_CHARACTER -1 ++ ++/* Some Unicode code points used in this file. */ ++ ++#define REPLACEMENT_CHARACTER 0xFFFD ++#define NEWLINE 0x000A ++ ++/* Errno. */ ++ ++static int _libga68_errno; ++ ++/* Simple I/O based on POSIX file descriptors. */ ++ ++int ++_libga68_posixerrno (void) ++{ ++ return _libga68_errno; ++} ++ ++void ++_libga68_posixperror (uint32_t *s, size_t len, size_t stride) ++{ ++ size_t u8len; ++ uint8_t *u8str = _libga68_u32_to_u8 (s, len, stride, NULL, &u8len); ++ ++ const char *errstr = strerror (_libga68_errno); ++ (void) write (2, u8str, u8len); ++ (void) write (2, ": ", 2); ++ (void) write (2, errstr, strlen (errstr)); ++ (void) write (2, "\n", 1); ++} ++ ++uint32_t * ++_libga68_posixstrerror (int errnum, size_t *len) ++{ ++ const char *str = strerror (errnum); ++ return _libga68_u8_to_u32 ((const uint8_t *)str, strlen (str), NULL, len); ++} ++ ++/* Helper for _libga68_posixfopen. */ ++static int ++_libga68_open (const char *path, unsigned int flags) ++{ ++ int fd = open (path, flags); ++ _libga68_errno = errno; ++ return fd; ++} ++ ++#define FILE_O_DEFAULT 0x99999999 ++#define FILE_O_RDONLY 0x0 ++#define FILE_O_WRONLY 0x1 ++#define FILE_O_RDWR 0x2 ++#define FILE_O_TRUNC 0x8 ++ ++int ++_libga68_posixfopen (const uint32_t *pathname, size_t len, size_t stride, ++ unsigned int flags) ++{ ++ int fd; ++ int openflags = 0; ++ size_t u8len; ++ const uint8_t *u8pathname = _libga68_u32_to_u8 (pathname, len, stride, NULL, ++ &u8len); ++ char *filepath = (char *) _libga68_malloc_internal (u8len + 1); ++ memcpy (filepath, u8pathname, u8len); ++ filepath[u8len] = '\0'; ++ ++ /* Default mode: try read-write initially. ++ If that fails, then try read-only. ++ If that fails, then try write-only. */ ++ if (flags == FILE_O_DEFAULT) ++ { ++ openflags = O_RDWR; ++ if ((fd = _libga68_open (filepath, openflags)) < 0) ++ { ++ openflags = O_RDONLY; ++ if ((fd = _libga68_open (filepath, openflags)) < 0) ++ { ++ openflags = O_WRONLY; ++ fd = _libga68_open (filepath, openflags); ++ _libga68_free_internal (filepath); ++ return fd; ++ } ++ } ++ _libga68_free_internal (filepath); ++ return fd; ++ } ++ ++ if (flags & FILE_O_RDONLY) ++ openflags |= O_RDONLY; ++ if (flags & FILE_O_WRONLY) ++ openflags |= O_WRONLY; ++ if (flags & FILE_O_RDWR) ++ openflags |= O_RDWR; ++ if (flags & FILE_O_TRUNC) ++ openflags |= O_TRUNC; ++ ++ fd = _libga68_open (filepath, openflags); ++ _libga68_free_internal (filepath); ++ return fd; ++} ++ ++int ++_libga68_posixcreat (uint32_t *pathname, size_t len, size_t stride, ++ uint32_t mode) ++{ ++ size_t u8len; ++ uint8_t *u8pathname = _libga68_u32_to_u8 (pathname, len, stride, NULL, &u8len); ++ u8pathname[u8len] = '\0'; ++ ++ int res = creat (u8pathname, mode); ++ _libga68_errno = errno; ++ return res; ++} ++ ++int ++_libga68_posixclose (int fd) ++{ ++ int res = close (fd); ++ _libga68_errno = errno; ++ return res; ++} ++ ++/* Implementation of the posix prelude `posix argc'. */ ++ ++int ++_libga68_posixargc (void) ++{ ++ return _libga68_argc; ++} ++ ++/* Implementation of the posix prelude `posix argv'. */ ++ ++uint32_t * ++_libga68_posixargv (int n, size_t *len) ++{ ++ if (n < 0 || n > _libga68_argc) ++ { ++ /* Return an empty string. */ ++ *len = 0; ++ return NULL; ++ } ++ else ++ { ++ char *arg = _libga68_argv[n - 1]; ++ return _libga68_u8_to_u32 (arg, strlen (arg), NULL, len); ++ } ++} ++ ++/* Implementation of the posix prelude `posix getenv'. */ ++ ++void ++_libga68_posixgetenv (uint32_t *s, size_t len, size_t stride, ++ uint32_t **r, size_t *rlen) ++{ ++ size_t varlen; ++ char *varname = _libga68_u32_to_u8 (s, len, stride, NULL, &varlen); ++ ++ char *var = _libga68_malloc_internal (varlen + 1); ++ memcpy (var, varname, varlen); ++ var[varlen] = '\0'; ++ char *val = getenv (var); ++ _libga68_free_internal (var); ++ ++ if (val == NULL) ++ { ++ /* Return an empty string. */ ++ *r = NULL; ++ *rlen = 0; ++ } ++ else ++ *r = _libga68_u8_to_u32 (val, strlen (val), NULL, rlen); ++} ++ ++/* Implementation of the posix prelude `posix puts'. */ ++ ++void ++_libga68_posixputs (uint32_t *s, size_t len, size_t stride) ++{ ++ (void) _libga68_posixfputs (1, s, len, stride); ++} ++ ++/* Implementation of the posix prelude `posix fputs'. */ ++ ++int ++_libga68_posixfputs (int fd, uint32_t *s, size_t len, size_t stride) ++{ ++ size_t u8len; ++ uint8_t *u8str = _libga68_u32_to_u8 (s, len, stride, NULL, &u8len); ++ ++ ssize_t ret = write (fd, u8str, u8len); ++ _libga68_errno = errno; ++ if (ret == -1) ++ return 0; ++ else ++ return u8len; ++} ++ ++/* Implementation of the posix prelude `posix putc'. */ ++ ++uint32_t ++_libga68_posixfputc (int fd, uint32_t c) ++{ ++ uint8_t u8[6]; ++ ++ int u8len = _libga68_u8_uctomb (u8, c, 6); ++ if (u8len < 0) ++ return EOF_PSEUDO_CHARACTER; ++ ++ ssize_t ret = write (fd, &u8, u8len); ++ if (ret == -1) ++ return EOF_PSEUDO_CHARACTER; ++ else ++ return c; ++} ++ ++/* Implementation of the posix prelude `posix putchar'. */ ++ ++uint32_t ++_libga68_posixputchar (uint32_t c) ++{ ++ return _libga68_posixfputc (1, c); ++} ++ ++/* Implementation of the posix prelude `posix fgetc'. */ ++ ++uint32_t ++_libga68_posixfgetc (int fd) ++{ ++ /* We need to read one char (byte) at a time from FD, until we complete a ++ full Unicode character. Then we convert to UCS-4. */ ++ ++ uint8_t c; ++ uint8_t u8c[6]; ++ size_t morechars = 0; ++ size_t i; ++ ++ /* Read first UTF-8 character. This gives us the total length of the ++ character. */ ++ if (read (fd, &c, 1) != 1) ++ return EOF_PSEUDO_CHARACTER; ++ ++ if (c < 128) ++ morechars = 0; ++ else if (c < 224) ++ morechars = 1; ++ else if (c < 240) ++ morechars = 2; ++ else ++ morechars = 3; ++ ++ u8c[0] = c; ++ for (i = 0; i < morechars; ++i) ++ { ++ if (read (fd, &c, 1) != 1) ++ return EOF_PSEUDO_CHARACTER; ++ u8c[i + 1] = c; ++ } ++ ++ uint32_t res; ++ int num_units = morechars + 1; ++ int length = _libga68_u8_mbtouc (&res, (const uint8_t *) &u8c, num_units); ++ if (res == REPLACEMENT_CHARACTER || length != num_units) ++ return REPLACEMENT_CHARACTER; ++ else ++ return res; ++} ++ ++/* Implementation of the posix prelude `posix getchar'. */ ++ ++uint32_t ++_libga68_posixgetchar (void) ++{ ++ return _libga68_posixfgetc (0); ++} ++ ++/* Implementation of the posix prelude `posix fgets'. */ ++ ++uint32_t * ++_libga68_posixfgets (int fd, int nchars, size_t *len) ++{ ++ uint32_t *res = NULL; ++ int n = 0; ++ uint32_t uc; ++ ++ if (nchars > 0) ++ { ++ /* Read exactly nchar or until EOF. */ ++ res = _libga68_malloc (nchars * sizeof (uint32_t)); ++ do ++ { ++ uc = _libga68_posixfgetc (fd); ++ if (uc == EOF_PSEUDO_CHARACTER) ++ break; ++ res[n++] = uc; ++ } ++ while (n < nchars); ++ } ++ else ++ { ++ /* Read until newline or EOF. */ ++ size_t allocated = 80 * sizeof (uint32_t); ++ res = _libga68_malloc (allocated); ++ do ++ { ++ uc = _libga68_posixfgetc (fd); ++ if (uc != EOF_PSEUDO_CHARACTER) ++ { ++ if (n % 80 == 0) ++ res = _libga68_realloc (res, n * 80 * sizeof (uint32_t) + 80 * sizeof (uint32_t)); ++ res[n++] = uc; ++ } ++ } ++ while (uc != NEWLINE && uc != EOF_PSEUDO_CHARACTER); ++ if (n > 0) ++ res = _libga68_realloc (res, n * 80 * sizeof (uint32_t)); ++ } ++ ++ *len = n; ++ return res; ++} ++ ++/* Implementation of the posix prelude `posix gets'. */ ++ ++uint32_t * ++_libga68_posixgets (int nchars, size_t *len) ++{ ++ return _libga68_posixfgets (0, nchars, len); ++} ++ ++/* Implementation of the posix prelude `fconnect'. */ ++ ++int ++_libga68_posixfconnect (uint32_t *str, size_t len, size_t stride, ++ int port) ++{ ++ size_t u8len; ++ uint8_t *u8host = _libga68_u32_to_u8 (str, len, stride, NULL, &u8len); ++ ++ /* Create a stream socket. */ ++ int fd = socket (AF_INET, SOCK_STREAM, 0); ++ _libga68_errno = errno; ++ if (fd < 0) ++ goto error; ++ ++ /* Lookup the specified host. */ ++ char *host = _libga68_malloc_internal (u8len + 1); ++ memcpy (host, u8host, u8len); ++ host[u8len] = '\0'; ++ struct hostent *server = gethostbyname (host); ++ if (server == NULL) ++ { ++ _libga68_errno = h_errno; ++ goto close_fd_and_error; ++ } ++ ++ /* Connect the socket to the server. */ ++ struct sockaddr_in serv_addr; ++ memset (&serv_addr, 0, sizeof (serv_addr)); ++ serv_addr.sin_family = AF_INET; ++ serv_addr.sin_port = htons (port); ++ memcpy (&serv_addr.sin_addr.s_addr, ++ server->h_addr, ++ server->h_length); ++ int res = connect (fd, (struct sockaddr *) &serv_addr, ++ sizeof (serv_addr)); ++ _libga68_errno = errno; ++ if (res == -1) ++ goto close_fd_and_error; ++ ++ _libga68_free_internal (host); ++ return fd; ++ ++ close_fd_and_error: ++ close (fd); ++ error: ++ _libga68_free_internal (host); ++ return -1; ++} ++ ++/* Implementation of the posix prelude `fsize'. */ ++ ++long long int ++_libga68_posixfsize (int fd) ++{ ++ struct stat stat; ++ ++ if (fstat (fd, &stat) == -1) ++ { ++ _libga68_errno = errno; ++ return -1; ++ } ++ ++ if (stat.st_size > LLONG_MAX) ++ { ++ _libga68_errno = EOVERFLOW; ++ return -1; ++ } ++ ++ return (long int) stat.st_size; ++} ++ ++/* Implementation of the posix prelude `lseek'. */ ++#define A68_SEEK_CUR 0 ++#define A68_SEEK_END 1 ++#define A68_SEEK_SET 2 ++ ++long long int ++_libga68_posixlseek (int fd, long long int offset, int whence) ++{ ++ switch (whence) ++ { ++ case A68_SEEK_CUR: ++ whence = SEEK_CUR; ++ break; ++ case A68_SEEK_END: ++ whence = SEEK_END; ++ break; ++ case A68_SEEK_SET: ++ whence = SEEK_SET; ++ break; ++ } ++ ++ long long int ret = (long long int) lseek(fd, offset, whence); ++ _libga68_errno = errno; ++ return ret; ++} +--- /dev/null ++++ b/src/libga68/ga68-standenv.c +@@ -0,0 +1,48 @@ ++/* Support run-time routines for the standard prelude. ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#include /* For rand. */ ++ ++#include "ga68.h" ++ ++/* Implementation of the standard prelude `random' function. */ ++ ++float ++_libga68_random (void) ++{ ++ float res = (float) rand () / (float) (RAND_MAX); ++ return res; ++} ++ ++double ++_libga68_longrandom (void) ++{ ++ double res = (double) rand () / (float) (RAND_MAX); ++ return res; ++} ++ ++long double ++_libga68_longlongrandom (void) ++{ ++ long double res = (long double) rand () / (float) (RAND_MAX); ++ return res; ++} +--- /dev/null ++++ b/src/libga68/ga68-unistr.c +@@ -0,0 +1,615 @@ ++/* libga68 unicode support routines. ++ Copyright (C) 2009-2025 Free Software Foundation, Inc. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++/* The code in this file has been copied from the unistr gnulib module, written ++ by Bruno Haible, and adapted to support strides. */ ++ ++#include /* For ptrdiff_t */ ++#include ++#include ++#include ++#include ++ ++#include "ga68.h" ++ ++/* CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where ++ n1 and n2 are expressions without side effects, that evaluate to real ++ numbers (excluding NaN). ++ It returns ++ 1 if n1 > n2 ++ 0 if n1 == n2 ++ -1 if n1 < n2 ++ The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional ++ jump with nearly all GCC versions up to GCC 10. ++ This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many ++ GCC versions up to GCC 9. ++ The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 ++ avoids conditional jumps in all GCC versions >= 3.4. */ ++ ++#define CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) ++ ++/* MIN(a,b) returns the minimum of A and B. */ ++ ++#ifndef MIN ++# define MIN(a,b) ((a) < (b) ? (a) : (b)) ++#endif ++ ++/* Compare two UCS-4 strings of same lenght, lexicographically. ++ Return -1, 0 or 1. */ ++ ++int ++_libga68_u32_cmp (const uint32_t *s1, size_t stride1, ++ const uint32_t *s2, size_t stride2, ++ size_t n) ++{ ++ stride1 = stride1 / sizeof (uint32_t); ++ stride2 = stride2 / sizeof (uint32_t); ++ ++ for (; n > 0;) ++ { ++ uint32_t uc1 = *s1; ++ s1 += stride1; ++ uint32_t uc2 = *s2; ++ s2 += stride2; ++ if (uc1 == uc2) ++ { ++ n--; ++ continue; ++ } ++ /* Note that uc1 and uc2 each have at most 31 bits. */ ++ return (int)uc1 - (int)uc2; ++ /* > 0 if uc1 > uc2, < 0 if uc1 < uc2. */ ++ } ++ return 0; ++} ++ ++/* Compare two UCS-4 strings of perhaps different lenghts, lexicographically. ++ Return -1, 0 or 1. */ ++ ++int ++_libga68_u32_cmp2 (const uint32_t *s1, size_t n1, size_t stride1, ++ const uint32_t *s2, size_t n2, size_t stride2) ++{ ++ int cmp = _libga68_u32_cmp (s1, stride1, s2, stride2, MIN (n1, n2)); ++ ++ if (cmp == 0) ++ cmp = CMP (n1, n2); ++ ++ return cmp; ++} ++ ++/* Get the UCS code for the first character of a given UTF-8 string. */ ++ ++int ++_libga68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else if (c >= 0xc2) ++ { ++ if (c < 0xe0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x1f) << 6) ++ | (unsigned int) (s[1] ^ 0x80); ++ return 2; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ } ++ else if (c < 0xf0) ++ { ++ if (n >= 3) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x0f) << 12) ++ | ((unsigned int) (s[1] ^ 0x80) << 6) ++ | (unsigned int) (s[2] ^ 0x80); ++ return 3; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 2; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ else ++ { ++ *puc = 0xfffd; ++ if (n == 1) ++ { ++ /* incomplete multibyte character */ ++ return 1; ++ } ++ else ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ /* incomplete multibyte character */ ++ return 2; ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 1; ++ } ++ } ++ } ++ } ++ else if (c <= 0xf4) ++ { ++ if (n >= 4) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ if ((s[3] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x07) << 18) ++ | ((unsigned int) (s[1] ^ 0x80) << 12) ++ | ((unsigned int) (s[2] ^ 0x80) << 6) ++ | (unsigned int) (s[3] ^ 0x80); ++ return 4; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 3; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 2; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ else ++ { ++ *puc = 0xfffd; ++ if (n == 1) ++ { ++ /* incomplete multibyte character */ ++ return 1; ++ } ++ else ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if (n == 2) ++ { ++ /* incomplete multibyte character */ ++ return 2; ++ } ++ else ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ /* incomplete multibyte character */ ++ return 3; ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 2; ++ } ++ } ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 1; ++ } ++ } ++ } ++ } ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++} ++ ++/* Encode a given UCS code in UTF-8. */ ++ ++int ++_libga68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n) ++{ ++ if (uc < 0x80) ++ { ++ if (n > 0) ++ { ++ s[0] = uc; ++ return 1; ++ } ++ /* else return -2, below. */ ++ } ++ else ++ { ++ int count; ++ ++ if (uc < 0x800) ++ count = 2; ++ else if (uc < 0x10000) ++ { ++ if (uc < 0xd800 || uc >= 0xe000) ++ count = 3; ++ else ++ return -1; ++ } ++ else if (uc < 0x110000) ++ count = 4; ++ else ++ return -1; ++ ++ if (n >= count) ++ { ++ switch (count) /* note: code falls through cases! */ ++ { ++ case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000; ++ /* Fallthrough. */ ++ case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800; ++ /* Fallthrough. */ ++ case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0; ++ /*case 1:*/ s[0] = uc; ++ } ++ return count; ++ } ++ } ++ return -2; ++} ++ ++/* Convert UCS-4 to UTF-8 */ ++ ++uint8_t * ++_libga68_u32_to_u8 (const uint32_t *s, size_t n, size_t stride, ++ uint8_t *resultbuf, size_t *lengthp) ++{ ++ const uint32_t *s_end; ++ /* Output string accumulator. */ ++ uint8_t *result; ++ size_t allocated; ++ size_t length; ++ ++ stride = stride / sizeof (uint32_t); ++ s_end = s + (n * stride); ++ ++ if (resultbuf != NULL) ++ { ++ result = resultbuf; ++ allocated = *lengthp; ++ } ++ else ++ { ++ result = NULL; ++ allocated = 0; ++ } ++ length = 0; ++ /* Invariants: ++ result is either == resultbuf or == NULL or malloc-allocated. ++ If length > 0, then result != NULL. */ ++ ++ while (s < s_end) ++ { ++ uint32_t uc; ++ int count; ++ ++ /* Fetch a Unicode character from the input string. */ ++ uc = *s; ++ s += stride; ++ /* No need to call the safe variant u32_mbtouc, because ++ u8_uctomb will verify uc anyway. */ ++ ++ /* Store it in the output string. */ ++ count = _libga68_u8_uctomb (result + length, uc, allocated - length); ++ if (count == -1) ++ { ++ if (!(result == resultbuf || result == NULL)) ++ free (result); ++ errno = EILSEQ; ++ return NULL; ++ } ++ if (count == -2) ++ { ++ uint8_t *memory; ++ ++ allocated = (allocated > 0 ? 2 * allocated : 12); ++ if (length + 6 > allocated) ++ allocated = length + 6; ++ if (result == resultbuf || result == NULL) ++ memory = (uint8_t *) _libga68_malloc (allocated * sizeof (uint8_t)); ++ else ++ memory = ++ (uint8_t *) _libga68_realloc (result, allocated * sizeof (uint8_t)); ++ ++ if (result == resultbuf && length > 0) ++ memcpy ((char *) memory, (char *) result, ++ length * sizeof (uint8_t)); ++ result = memory; ++ count = _libga68_u8_uctomb (result + length, uc, allocated - length); ++ if (count < 0) ++ abort (); ++ } ++ length += count; ++ } ++ ++ if (length == 0) ++ { ++ if (result == NULL) ++ { ++ /* Return a non-NULL value. NULL means error. */ ++ result = (uint8_t *) _libga68_malloc (1); ++ if (result == NULL) ++ { ++ errno = ENOMEM; ++ return NULL; ++ } ++ } ++ } ++ else if (result != resultbuf && length < allocated) ++ { ++ /* Shrink the allocated memory if possible. */ ++ uint8_t *memory; ++ ++ memory = (uint8_t *) _libga68_realloc_unchecked (result, length * sizeof (uint8_t)); ++ if (memory != NULL) ++ result = memory; ++ } ++ ++ *lengthp = length; ++ return result; ++} ++ ++/* Used by ga68_u8_to_u32 below. */ ++ ++static int ++_libga68_u8_mbtoucr (uint32_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else if (c >= 0xc2) ++ { ++ if (c < 0xe0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x1f) << 6) ++ | (unsigned int) (s[1] ^ 0x80); ++ return 2; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ else if (c < 0xf0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ if (n >= 3) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x0f) << 12) ++ | ((unsigned int) (s[1] ^ 0x80) << 6) ++ | (unsigned int) (s[2] ^ 0x80); ++ return 3; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ else if (c <= 0xf4) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if (n >= 3) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ if (n >= 4) ++ { ++ if ((s[3] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x07) << 18) ++ | ((unsigned int) (s[1] ^ 0x80) << 12) ++ | ((unsigned int) (s[2] ^ 0x80) << 6) ++ | (unsigned int) (s[3] ^ 0x80); ++ return 4; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return -1; ++} ++ ++/* Convert UTF-8 to UTF-32/UCS-4 */ ++ ++uint32_t * ++_libga68_u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, size_t *lengthp) ++{ ++ const uint8_t *s_end = s + n; ++ /* Output string accumulator. */ ++ uint32_t *result; ++ size_t allocated; ++ size_t length; ++ ++ if (resultbuf != NULL) ++ { ++ result = resultbuf; ++ allocated = *lengthp; ++ } ++ else ++ { ++ result = NULL; ++ allocated = 0; ++ } ++ length = 0; ++ /* Invariants: ++ result is either == resultbuf or == NULL or malloc-allocated. ++ If length > 0, then result != NULL. */ ++ ++ while (s < s_end) ++ { ++ uint32_t uc; ++ int count; ++ ++ /* Fetch a Unicode character from the input string. */ ++ count = _libga68_u8_mbtoucr (&uc, s, s_end - s); ++ if (count < 0) ++ { ++ if (!(result == resultbuf || result == NULL)) ++ free (result); ++ errno = EILSEQ; ++ return NULL; ++ } ++ s += count; ++ ++ /* Store it in the output string. */ ++ if (length + 1 > allocated) ++ { ++ uint32_t *memory; ++ ++ allocated = (allocated > 0 ? 2 * allocated : 12); ++ if (length + 1 > allocated) ++ allocated = length + 1; ++ if (result == resultbuf || result == NULL) ++ memory = (uint32_t *) _libga68_malloc (allocated * sizeof (uint32_t)); ++ else ++ memory = ++ (uint32_t *) _libga68_realloc (result, allocated * sizeof (uint32_t)); ++ ++ if (result == resultbuf && length > 0) ++ memcpy ((char *) memory, (char *) result, ++ length * sizeof (uint32_t)); ++ result = memory; ++ } ++ result[length++] = uc; ++ } ++ ++ if (length == 0) ++ { ++ if (result == NULL) ++ { ++ /* Return a non-NULL value. NULL means error. */ ++ result = (uint32_t *) _libga68_malloc (1); ++ } ++ } ++ else if (result != resultbuf && length < allocated) ++ { ++ /* Shrink the allocated memory if possible. */ ++ uint32_t *memory; ++ ++ memory = (uint32_t *) _libga68_realloc_unchecked (result, length * sizeof (uint32_t)); ++ if (memory != NULL) ++ result = memory; ++ } ++ ++ *lengthp = length; ++ return result; ++} +--- /dev/null ++++ b/src/libga68/ga68.h +@@ -0,0 +1,126 @@ ++/* Definitions for libga68. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#ifndef GA68_H ++#define GA68_H ++ ++#include "config.h" ++ ++#include /* For size_t. */ ++#include ++#include ++#ifdef __has_include ++# if __has_include () ++# include /* For ssize_t. */ ++# endif ++#endif ++ ++/* ga68-error.c */ ++ ++void _libga68_abort (const char *fmt, ...) ++ __attribute__ ((__format__ (__printf__, 1, 2), __nonnull__ (1), ++ __noreturn__)); ++ ++void _libga68_assert (const char *filename, unsigned int lineno); ++void _libga68_derefnil (const char *filename, unsigned int lineno); ++void _libga68_invalidcharerror (const char *filename, unsigned int lineno, ++ int c); ++ ++void _libga68_bitsboundserror (const char *filename, unsigned int lineno, ++ ssize_t pos); ++void _libga68_unreachable (const char *filename, unsigned int lineno); ++void _libga68_lower_bound (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t lower_bound); ++void _libga68_upper_bound (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t upper_bound); ++void _libga68_bounds (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t lower_bound, ssize_t upper_bound); ++void _libga68_dim (const char *filename, unsigned int lineno, ++ size_t dim, size_t index); ++void _libga68_bounds_mismatch (const char *filename, unsigned int lineno, ++ size_t dim, ssize_t lb1, ssize_t ub1, ++ ssize_t lb2, ssize_t ub2); ++ ++/* ga68-alloc.c */ ++ ++void _libga68_init_heap (void); ++void *_libga68_malloc (size_t size); ++void *_libga68_malloc_internal (size_t size); ++void *_libga68_realloc (void *ptr, size_t size); ++void *_libga68_realloc_unchecked (void *ptr, size_t size); ++void _libga68_free_internal (void *ptr); ++ ++/* ga68-standenv.c */ ++ ++float _libga68_random (void); ++double _libga68_longrandom (void); ++long double _libga68_longlongrandom (void); ++ ++/* ga68-posix.c */ ++ ++int _libga68_posixerrno (void); ++void _libga68_posixperror (uint32_t *s, size_t len, size_t stride); ++uint32_t *_libga68_posixstrerror (int errnum, size_t *len); ++long long int _libga68_posixfsize (int fd); ++int _libga68_posixfopen (const uint32_t *pathname, size_t len, size_t stride, ++ unsigned int flags); ++int _libga68_posixcreat (uint32_t *pathname, size_t len, size_t stride, uint32_t mode); ++int _libga68_posixclose (int fd); ++int _libga68_posixargc (void); ++uint32_t *_libga68_posixargv (int n, size_t *len); ++void _libga68_posixgetenv (uint32_t *s, size_t len, size_t stride, ++ uint32_t **r, size_t *rlen); ++void _libga68_posixputs (uint32_t *s, size_t len, size_t stride); ++uint32_t _libga68_posixputchar (uint32_t c); ++uint32_t _libga68_posixfputc (int fd, uint32_t c); ++int _libga68_posixfputs (int fd, uint32_t *s, size_t len, size_t stride); ++ ++uint32_t _libga68_posixgetchar (void); ++uint32_t _libga68_posixfgetc (int fd); ++uint32_t *_libga68_posixfgets (int fd, int nchars, size_t *len); ++uint32_t *_libga68_posixgets (int nchars, size_t *len); ++ ++int _libga68_posixfconnect (uint32_t *str, size_t len, size_t stride, ++ int port); ++long long int _libga68_posixlseek (int fd, long long int offset, int whence); ++ ++/* ga68-unistr.c */ ++ ++int _libga68_u32_cmp (const uint32_t *s1, size_t stride1, ++ const uint32_t *s2, size_t stride2, ++ size_t n); ++int _libga68_u32_cmp2 (const uint32_t *s1, size_t n1, size_t stride1, ++ const uint32_t *s2, size_t n2, size_t stride2); ++int _libga68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n); ++int _libga68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n); ++uint8_t *_libga68_u32_to_u8 (const uint32_t *s, size_t n, size_t stride, ++ uint8_t *resultbuf, size_t *lengthp); ++uint32_t *_libga68_u8_to_u32 (const uint8_t *s, size_t n, ++ uint32_t *resultbuf, size_t *lengthp); ++ ++/* libga68.c */ ++ ++extern int _libga68_argc; ++extern char **_libga68_argv; ++ ++void _libga68_set_exit_status (int status); ++ ++#endif /* ! GA68_H */ +--- /dev/null ++++ b/src/libga68/libga68.c +@@ -0,0 +1,52 @@ ++/* GNU Algol Compiler run-time. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#include "ga68.h" ++ ++/* argc and argv are preserved in the following objects. */ ++ ++int _libga68_argc; ++char **_libga68_argv; ++ ++/* Exit status of the program reported to the OS upon exit. */ ++ ++static int exit_status; ++ ++void ++_libga68_set_exit_status (int status) ++{ ++ exit_status = status; ++} ++ ++/* Entry point for Algol 68 programs. */ ++ ++void __algol68_main (void); ++ ++int ++main (int argc, char **argv) ++{ ++ _libga68_argc = argc; ++ _libga68_argv = argv; ++ ++ _libga68_init_heap (); ++ __algol68_main (); ++ return exit_status; ++} +--- /dev/null ++++ b/src/libga68/libga68.spec.in +@@ -0,0 +1,11 @@ ++# ++# This spec file is read by ga68 when linking. ++# It is used to specify the libraries we need to link in, in the right ++# order. ++# ++ ++%rename link linkorig_ga68_renamed ++*link: %(linkorig_ga68_renamed) ++ ++%rename lib liborig_ga68_renamed ++*lib: %{noga68lib: ; :@SPEC_LIBGA68_DEPS@} %(liborig_ga68_renamed) +--- a/src/libiberty/simple-object-mach-o.c ++++ b/src/libiberty/simple-object-mach-o.c +@@ -669,12 +669,15 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset, + } + } + ++ memset (namebuf, 0, sizeof (namebuf)); ++ /* Copy the section name so we can append a null to make it into a ++ c-string (Mach-o section names are not terminated). */ ++ memcpy (namebuf, sechdr + sectname_offset, MACH_O_NAME_LEN); ++ namebuf[MACH_O_NAME_LEN] = '\0'; ++ name = &namebuf[0]; ++ /* Maybe override this if we have long section name extension. */ + if ((gnu_sections_found & SOMO_LONGN_PRESENT) != 0) + { +- memcpy (namebuf, sechdr + sectname_offset, MACH_O_NAME_LEN); +- namebuf[MACH_O_NAME_LEN] = '\0'; +- +- name = &namebuf[0]; + if (strtab != NULL && name[0] == '_' && name[1] == '_') + { + unsigned long stringoffset; +@@ -696,19 +699,6 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset, + } + } + } +- else +- { +- /* Otherwise, make a name like __segment,__section as per the +- convention in mach-o asm. */ +- name = &namebuf[0]; +- memcpy (namebuf, (char *) sechdr + segname_offset, MACH_O_NAME_LEN); +- namebuf[MACH_O_NAME_LEN] = '\0'; +- l = strlen (namebuf); +- namebuf[l] = ','; +- memcpy (namebuf + l + 1, (char *) sechdr + sectname_offset, +- MACH_O_NAME_LEN); +- namebuf[l + 1 + MACH_O_NAME_LEN] = '\0'; +- } + + simple_object_mach_o_section_info (omr->is_big_endian, is_32, sechdr, + &secoffset, &secsize); diff --git a/patches/alpha-ieee-doc.diff b/patches/alpha-ieee-doc.diff new file mode 100644 index 0000000..173bbec --- /dev/null +++ b/patches/alpha-ieee-doc.diff @@ -0,0 +1,24 @@ +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off (doc patch) + +--- + gcc/doc/invoke.texi | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -26304,6 +26304,13 @@ able to correctly support denormalized n + values such as not-a-number and plus/minus infinity. Other Alpha + compilers call this option @option{-ieee_with_no_inexact}. + ++DEBIAN SPECIFIC: This option is on by default for alpha-linux-gnu, unless ++@option{-ffinite-math-only} (which is part of the @option{-ffast-math} ++set) is specified, because the software functions in the GNU libc math ++libraries generate denormalized numbers, NaNs, and infs (all of which ++will cause a programs to SIGFPE when it attempts to use the results without ++@option{-mieee}). ++ + @opindex mieee-with-inexact + @item -mieee-with-inexact + This is like @option{-mieee} except the generated code also maintains diff --git a/patches/alpha-ieee.diff b/patches/alpha-ieee.diff new file mode 100644 index 0000000..f80ffa3 --- /dev/null +++ b/patches/alpha-ieee.diff @@ -0,0 +1,17 @@ +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off + +--- a/src/gcc/config/alpha/alpha.cc ++++ b/src/gcc/config/alpha/alpha.cc +@@ -384,6 +384,10 @@ alpha_option_override (void) + int line_size = 0, l1_size = 0, l2_size = 0; + int i; + ++ /* If not -ffinite-math-only, enable -mieee*/ ++ if (!flag_finite_math_only) ++ target_flags |= MASK_IEEE|MASK_IEEE_CONFORMANT; ++ + #ifdef SUBTARGET_OVERRIDE_OPTIONS + SUBTARGET_OVERRIDE_OPTIONS; + #endif diff --git a/patches/alpha-no-ev4-directive.diff b/patches/alpha-no-ev4-directive.diff new file mode 100644 index 0000000..deaa650 --- /dev/null +++ b/patches/alpha-no-ev4-directive.diff @@ -0,0 +1,30 @@ +# DP: never emit .ev4 directive. + +--- + gcc/config/alpha/alpha.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +--- a/src/gcc/config/alpha/alpha.cc ++++ b/src/gcc/config/alpha/alpha.cc +@@ -10181,7 +10181,7 @@ alpha_file_start (void) + fputs ("\t.set nomacro\n", asm_out_file); + if (TARGET_SUPPORT_ARCH | TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX) + { +- const char *arch; ++ const char *arch = NULL; + + if (alpha_cpu == PROCESSOR_EV6 || TARGET_FIX || TARGET_CIX) + arch = "ev6"; +@@ -10191,10 +10191,9 @@ alpha_file_start (void) + arch = "ev56"; + else if (alpha_cpu == PROCESSOR_EV5) + arch = "ev5"; +- else +- arch = "ev4"; + +- fprintf (asm_out_file, "\t.arch %s\n", arch); ++ if (arch) ++ fprintf (asm_out_file, "\t.arch %s\n", arch); + } + } + diff --git a/patches/arc-stddef.diff b/patches/arc-stddef.diff new file mode 100644 index 0000000..af330f4 --- /dev/null +++ b/patches/arc-stddef.diff @@ -0,0 +1,29 @@ +--- a/src/gcc/config/arc/arc-arch.h ++++ b/src/gcc/config/arc/arc-arch.h +@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3. + #ifndef GCC_ARC_ARCH_H + #define GCC_ARC_ARCH_H + ++#include ++ + #ifndef IN_LIBGCC2 + /* Architecture selection types. */ + +@@ -116,7 +118,7 @@ typedef struct + + } arc_cpu_t; + +-const arc_arch_t arc_arch_types[] = ++static const arc_arch_t arc_arch_types[] = + { + {"none", BASE_ARCH_NONE, 0, 0}, + #define ARC_ARCH(NAME, ARCH, FLAGS, DFLAGS) \ +@@ -126,7 +128,7 @@ const arc_arch_t arc_arch_types[] = + {NULL, BASE_ARCH_END, 0, 0} + }; + +-const arc_cpu_t arc_cpu_types[] = ++static const arc_cpu_t arc_cpu_types[] = + { + {"none", NULL, PROCESSOR_NONE, 0, HAS_NONE, ARC_TUNE_NONE}, + #define ARC_CPU(NAME, ARCH, FLAGS, EXTRA, TUNE) \ diff --git a/patches/arm-multilib-defaults.diff b/patches/arm-multilib-defaults.diff new file mode 100644 index 0000000..88b0279 --- /dev/null +++ b/patches/arm-multilib-defaults.diff @@ -0,0 +1,88 @@ +# DP: Set MULTILIB_DEFAULTS for ARM multilib builds + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -4342,10 +4342,18 @@ case "${target}" in + done + + case "$with_float" in +- "" \ +- | soft | hard | softfp) ++ "") + # OK + ;; ++ soft) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=0" ++ ;; ++ softfp) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=1" ++ ;; ++ hard) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=2" ++ ;; + *) + echo "Unknown floating point type used in --with-float=$with_float" 1>&2 + exit 1 +@@ -4380,6 +4388,9 @@ case "${target}" in + "" \ + | arm | thumb ) + #OK ++ if test "$with_mode" = thumb; then ++ tm_defines="${tm_defines} TARGET_CONFIGURED_THUMB_MODE=1" ++ fi + ;; + *) + echo "Unknown mode used in --with-mode=$with_mode" +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -37,7 +37,21 @@ + target hardware. If you override this to use the hard-float ABI then + change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well. */ + #undef TARGET_DEFAULT_FLOAT_ABI ++#ifdef TARGET_CONFIGURED_FLOAT_ABI ++#if TARGET_CONFIGURED_FLOAT_ABI == 2 ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=hard" ++#elif TARGET_CONFIGURED_FLOAT_ABI == 1 ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFTFP ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=softfp" ++#else ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" ++#endif ++#else + #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" ++#endif + + /* We default to the "aapcs-linux" ABI so that enums are int-sized by + default. */ +@@ -91,6 +105,28 @@ + #define MUSL_DYNAMIC_LINKER \ + "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}%{mfdpic:-fdpic}.so.1" + ++/* Set the multilib defaults according the configuration, needed to ++ let gcc -print-multi-dir do the right thing. */ ++ ++#if TARGET_BIG_ENDIAN_DEFAULT ++#define MULTILIB_DEFAULT_ENDIAN "mbig-endian" ++#else ++#define MULTILIB_DEFAULT_ENDIAN "mlittle-endian" ++#endif ++ ++#ifndef TARGET_CONFIGURED_THUMB_MODE ++#define MULTILIB_DEFAULT_MODE "marm" ++#elif TARGET_CONFIGURED_THUMB_MODE == 1 ++#define MULTILIB_DEFAULT_MODE "mthumb" ++#else ++#define MULTILIB_DEFAULT_MODE "marm" ++#endif ++ ++#undef MULTILIB_DEFAULTS ++#define MULTILIB_DEFAULTS \ ++ { MULTILIB_DEFAULT_MODE, MULTILIB_DEFAULT_ENDIAN, \ ++ MULTILIB_DEFAULT_FLOAT_ABI, "mno-thumb-interwork" } ++ + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ + #undef LINK_SPEC diff --git a/patches/arm-multilib-soft-float.diff b/patches/arm-multilib-soft-float.diff new file mode 100644 index 0000000..18f51fb --- /dev/null +++ b/patches/arm-multilib-soft-float.diff @@ -0,0 +1,26 @@ +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -24,6 +24,23 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifneq (,$(findstring MULTIARCH_DEFAULTS,$(tm_defines))) ++ifneq (,$(findstring __arm_linux_gnueabi__,$(tm_defines))) ++ MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard/mfloat-abi=soft ++ MULTILIB_DIRNAMES = . hf soft-float ++ MULTILIB_EXCEPTIONS = ++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float ++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabi ../../lib/arm-linux-gnueabihf soft-float ++endif ++ifneq (,$(findstring __arm_linux_gnueabihf__,$(tm_defines))) ++ MULTILIB_OPTIONS = mfloat-abi=hard/mfloat-abi=softfp/mfloat-abi=soft ++ MULTILIB_DIRNAMES = . sf soft-float ++ MULTILIB_EXCEPTIONS = ++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float ++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabihf ../../lib/arm-linux-gnueabi soft-float ++endif ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* diff --git a/patches/bootstrap-no-unneeded-libs.diff b/patches/bootstrap-no-unneeded-libs.diff new file mode 100644 index 0000000..4939110 --- /dev/null +++ b/patches/bootstrap-no-unneeded-libs.diff @@ -0,0 +1,30 @@ +# DP: For bootstrap builds, don't build unneeded libstdc++ things +# DP: (debug library, PCH headers). + +# Please read ada-changes-in-autogen-output.diff about src/Makefile.[def|tpl]. + +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -1060,7 +1060,9 @@ + --target=[+target_alias+] $${srcdiroption} [+ IF prev +]\ + --with-build-libsubdir=$(HOST_SUBDIR) [+ ENDIF prev +]\ + $(STAGE[+id+]_CONFIGURE_FLAGS)[+ IF extra_configure_flags +] \ +- [+extra_configure_flags+][+ ENDIF extra_configure_flags +] ++ [+extra_configure_flags+][+ ENDIF extra_configure_flags +] \ ++ [+ IF bootstrap_configure_flags +][+bootstrap_configure_flags+] \ ++ [+ ENDIF bootstrap_configure_flags +] + @endif [+prefix+][+module+]-bootstrap + [+ ENDFOR bootstrap_stage +] + [+ ENDIF bootstrap +] +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -117,7 +117,8 @@ + target_modules = { module= libstdc++-v3; + bootstrap=true; + lib_path=src/.libs; +- raw_cxx=true; }; ++ raw_cxx=true; ++ bootstrap_configure_flags='--disable-libstdcxx-debug --disable-libstdcxx-pch'; }; + target_modules = { module= libmudflap; lib_path=.libs; }; + target_modules = { module= libsanitizer; lib_path=.libs; }; + target_modules = { module= libssp; lib_path=.libs; }; diff --git a/patches/canonical-cpppath.diff b/patches/canonical-cpppath.diff new file mode 100644 index 0000000..39969b7 --- /dev/null +++ b/patches/canonical-cpppath.diff @@ -0,0 +1,34 @@ +# DP: Don't use any relative path names for the standard include paths. + +--- a/src/gcc/incpath.cc ++++ b/src/gcc/incpath.cc +@@ -177,6 +177,14 @@ add_standard_paths (const char *sysroot, + str = reconcat (str, str, dir_separator_str, + imultiarch, NULL); + } ++ { ++ char *rp = lrealpath (str); ++ if (rp) ++ { ++ free (str); ++ str = rp; ++ } ++ } + add_path (str, INC_SYSTEM, p->cxx_aware, false); + } + } +@@ -252,6 +260,14 @@ add_standard_paths (const char *sysroot, + else + str = reconcat (str, str, dir_separator_str, imultiarch, NULL); + } ++ { ++ char *rp = lrealpath (str); ++ if (rp) ++ { ++ free (str); ++ str = rp; ++ } ++ } + + add_path (str, INC_SYSTEM, p->cxx_aware, false); + } diff --git a/patches/config-ml.diff b/patches/config-ml.diff new file mode 100644 index 0000000..7fcc7e7 --- /dev/null +++ b/patches/config-ml.diff @@ -0,0 +1,52 @@ +# DP: - Disable some biarch libraries for biarch builds. +# DP: - Fix multilib builds on kernels which don't support all multilibs. + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -488,6 +488,25 @@ powerpc*-*-* | rs6000*-*-*) + ;; + esac + ++if [ -z "$biarch_multidir_names" ]; then ++ biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc libgomp" ++ echo "WARNING: biarch_multidir_names is unset. Use default value:" ++ echo " $biarch_multidir_names" ++fi ++ml_srcbase=`basename $ml_realsrcdir` ++old_multidirs="${multidirs}" ++multidirs="" ++for x in ${old_multidirs}; do ++ case " $x " in ++ " 32 "|" n32 "|" x32 "|" 64 "|" hf "|" sf "|" m4-nofpu ") ++ case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ++ ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++done ++ + # Remove extraneous blanks from multidirs. + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` +@@ -903,9 +922,19 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + fi + fi + ++ ml_configure_args= ++ for arg in ${ac_configure_args} ++ do ++ case $arg in ++ *CC=*) ml_configure_args=${ml_config_env} ;; ++ *CXX=*) ml_configure_args=${ml_config_env} ;; ++ *) ;; ++ esac ++ done ++ + if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \ + --with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \ +- "${ac_configure_args}" ${ml_config_env} ${ml_srcdiroption} ; then ++ "${ac_configure_args}" ${ml_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then + true + else + exit 1 diff --git a/patches/cross-biarch.diff b/patches/cross-biarch.diff new file mode 100644 index 0000000..2453c5c --- /dev/null +++ b/patches/cross-biarch.diff @@ -0,0 +1,74 @@ +# DP: Fix the location of target's libs in cross-build for biarch + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -799,6 +799,15 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + GOC_=$GOC' ' + GDC_=$GDC' ' + else ++ if [ "${ml_dir}" = "." ]; then ++ FILTER_="s!X\\(.*\\)!\\1!p" ++ elif [ "${ml_dir}" = "n32" ]; then # mips n32 -> lib32 ++ FILTER_="s!X\\(.*\\)/!\\132/!p" ++ elif [ "${ml_dir}" = "32" ] && [ "$(echo ${host} |grep '^mips')" ]; then # mips o32 -> libo32 ++ FILTER_="s!X\\(.*\\)/!\\1o32/!p" ++ else ++ FILTER_="s!X\\(.*\\)/!\\1${ml_dir}/!p" ++ fi + # Create a regular expression that matches any string as long + # as ML_POPDIR. + popdir_rx=`echo "${ML_POPDIR}" | sed 's,.,.,g'` +@@ -808,6 +817,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;; ++ -B*/lib/) ++ CC_="${CC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) +@@ -822,6 +833,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ CXX_="${CXX_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) +@@ -836,6 +849,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ F77_="${F77_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) +@@ -850,6 +865,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) +@@ -864,6 +881,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GOC_="${GOC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) +@@ -878,6 +897,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) diff --git a/patches/cross-fixes.diff b/patches/cross-fixes.diff new file mode 100644 index 0000000..8844eaa --- /dev/null +++ b/patches/cross-fixes.diff @@ -0,0 +1,57 @@ +# DP: Fix the linker error when creating an xcc for ia64 + +--- + gcc/config/ia64/fde-glibc.c | 3 +++ + gcc/config/ia64/unwind-ia64.c | 3 ++- + gcc/unwind-compat.c | 2 ++ + gcc/unwind-generic.h | 2 ++ + 6 files changed, 14 insertions(+), 1 deletions(-) + +--- a/src/libgcc/config/ia64/unwind-ia64.c ++++ b/src/libgcc/config/ia64/unwind-ia64.c +@@ -26,6 +26,7 @@ + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "coretypes.h" +@@ -2467,3 +2468,4 @@ alias (_Unwind_SetIP); + #endif + + #endif ++#endif +--- a/src/libgcc/unwind-compat.c ++++ b/src/libgcc/unwind-compat.c +@@ -23,6 +23,7 @@ + . */ + + #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS) ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "unwind.h" +@@ -207,3 +208,4 @@ _Unwind_SetIP (struct _Unwind_Context *c + } + symver (_Unwind_SetIP, GCC_3.0); + #endif ++#endif +--- a/src/libgcc/unwind-generic.h ++++ b/src/libgcc/unwind-generic.h +@@ -221,6 +221,7 @@ _Unwind_SjLj_Resume_or_Rethrow (struct _ + compatible with the standard ABI for IA-64, we inline these. */ + + #ifdef __ia64__ ++#ifndef inhibit_libc + static inline _Unwind_Ptr + _Unwind_GetDataRelBase (struct _Unwind_Context *_C) + { +@@ -237,6 +238,7 @@ _Unwind_GetTextRelBase (struct _Unwind_C + + /* @@@ Retrieve the Backing Store Pointer of the given context. */ + extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *); ++#endif /* inhibit_libc */ + #else + extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); + extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); diff --git a/patches/cross-install-location.diff b/patches/cross-install-location.diff new file mode 100644 index 0000000..7de7572 --- /dev/null +++ b/patches/cross-install-location.diff @@ -0,0 +1,497 @@ +--- a/src/fixincludes/Makefile.in ++++ b/src/fixincludes/Makefile.in +@@ -52,9 +52,9 @@ target_noncanonical:=@target_noncanonica + gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + # Directory in which the compiler finds executables +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + # Where our executable files go + itoolsdir = $(libexecsubdir)/install-tools + # Where our data files go +--- a/src/libgfortran/Makefile.in ++++ b/src/libgfortran/Makefile.in +@@ -967,7 +967,7 @@ gcc_version := $(shell @get_gcc_base_ver + extra_darwin_ldflags_libgfortran = @extra_ldflags_libgfortran@ \ + $(am__append_1) + gfor_c_HEADERS = ISO_Fortran_binding.h +-gfor_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++gfor_cdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \ + $(lt_host_flags) + +@@ -982,12 +982,12 @@ libgfortran_la_LDFLAGS = -version-info ` + + libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) + cafexeclib_LTLIBRARIES = libcaf_single.la +-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libcaf_single_la_SOURCES = caf/single.c + libcaf_single_la_LDFLAGS = -static + libcaf_single_la_DEPENDENCIES = caf/libcaf.h + libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS) +-@IEEE_SUPPORT_TRUE@fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++@IEEE_SUPPORT_TRUE@fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude + @IEEE_SUPPORT_TRUE@nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod + AM_CPPFLAGS = -iquote$(srcdir)/io -I$(srcdir)/$(MULTISRCTOP)../gcc \ + -I$(srcdir)/$(MULTISRCTOP)../gcc/config $(LIBQUADINCLUDE) \ +--- a/src/libgfortran/Makefile.am ++++ b/src/libgfortran/Makefile.am +@@ -43,7 +43,7 @@ extra_darwin_ldflags_libgfortran += -Wl, + endif + + gfor_c_HEADERS = ISO_Fortran_binding.h +-gfor_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++gfor_cdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \ + $(lt_host_flags) +@@ -59,14 +59,14 @@ libgfortran_la_LDFLAGS = -version-info ` + libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) + + cafexeclib_LTLIBRARIES = libcaf_single.la +-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libcaf_single_la_SOURCES = caf/single.c + libcaf_single_la_LDFLAGS = -static + libcaf_single_la_DEPENDENCIES = caf/libcaf.h + libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS) + + if IEEE_SUPPORT +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude + nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod + endif + +--- a/src/lto-plugin/Makefile.in ++++ b/src/lto-plugin/Makefile.in +@@ -343,7 +343,7 @@ with_libiberty = @with_libiberty@ + ACLOCAL_AMFLAGS = -I .. -I ../config + AUTOMAKE_OPTIONS = no-dependencies + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +-libexecsubdir := $(libexecdir)/gcc/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) ++libexecsubdir := $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) + AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) + AM_CFLAGS = @ac_lto_plugin_warn_cflags@ $(CET_HOST_FLAGS) -DBASE_VERSION='"$(gcc_version)"' + AM_LDFLAGS = @ac_lto_plugin_ldflags@ @ac_lto_plugin_extra_ldflags@ +--- a/src/lto-plugin/Makefile.am ++++ b/src/lto-plugin/Makefile.am +@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = no-dependencies + + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + target_noncanonical := @target_noncanonical@ +-libexecsubdir := $(libexecdir)/gcc/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) ++libexecsubdir := $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) + + AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) + AM_CFLAGS = @ac_lto_plugin_warn_cflags@ $(CET_HOST_FLAGS) -DBASE_VERSION='"$(gcc_version)"' +--- a/src/libitm/Makefile.in ++++ b/src/libitm/Makefile.in +@@ -458,7 +458,7 @@ SUBDIRS = testsuite + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + abi_version = -fabi-version=4 + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + AM_CPPFLAGS = $(addprefix -I, $(search_path)) + AM_CFLAGS = $(XCFLAGS) + AM_CXXFLAGS = $(XCFLAGS) -std=gnu++0x -funwind-tables -fno-exceptions \ +--- a/src/libitm/Makefile.am ++++ b/src/libitm/Makefile.am +@@ -12,7 +12,7 @@ abi_version = -fabi-version=4 + config_path = @config_path@ + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) + +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + vpath % $(strip $(search_path)) + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -4970,7 +4970,7 @@ process_command (unsigned int decoded_op + GCC_EXEC_PREFIX is typically a directory name with a trailing + / (which is ignored by make_relative_prefix), so append a + program name. */ +- char *tmp_prefix = concat (gcc_exec_prefix, "gcc", NULL); ++ char *tmp_prefix = concat (gcc_exec_prefix, "gcc-cross", NULL); + gcc_libexec_prefix = get_relative_prefix (tmp_prefix, + standard_exec_prefix, + standard_libexec_prefix); +@@ -4996,15 +4996,15 @@ process_command (unsigned int decoded_op + { + int len = strlen (gcc_exec_prefix); + +- if (len > (int) sizeof ("/lib/gcc/") - 1 ++ if (len > (int) sizeof ("/lib/gcc-cross/") - 1 + && (IS_DIR_SEPARATOR (gcc_exec_prefix[len-1]))) + { +- temp = gcc_exec_prefix + len - sizeof ("/lib/gcc/") + 1; ++ temp = gcc_exec_prefix + len - sizeof ("/lib/gcc-cross/") + 1; + if (IS_DIR_SEPARATOR (*temp) + && filename_ncmp (temp + 1, "lib", 3) == 0 + && IS_DIR_SEPARATOR (temp[4]) +- && filename_ncmp (temp + 5, "gcc", 3) == 0) +- len -= sizeof ("/lib/gcc/") - 1; ++ && filename_ncmp (temp + 5, "gcc-cross", 3) == 0) ++ len -= sizeof ("/lib/gcc-cross/") - 1; + } + + set_std_prefix (gcc_exec_prefix, len); +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -679,9 +679,9 @@ libexecdir = @libexecdir@ + # -------- + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) ++libsubdir = $(libdir)/gcc-cross/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) + # Directory in which the compiler finds executables +-libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) ++libexecsubdir = $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) + # Directory in which all plugin resources are installed + plugin_resourcesdir = $(libsubdir)/plugin + # Directory in which plugin headers are installed +@@ -2588,8 +2588,8 @@ default-rust.o: config/default-rust.cc + + DRIVER_DEFINES = \ + -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \ +- -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ +- -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \ ++ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \ ++ -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc-cross/\" \ + -DDEFAULT_TARGET_VERSION=\"$(version)\" \ + -DDEFAULT_REAL_TARGET_MACHINE=\"$(real_target_noncanonical)\" \ + -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \ +@@ -3372,7 +3372,7 @@ PREPROCESSOR_DEFINES = \ + -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ + -DNATIVE_SYSTEM_HEADER_DIR=\"$(NATIVE_SYSTEM_HEADER_DIR)\" \ + -DPREFIX=\"$(prefix)/\" \ +- -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ ++ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + + CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) +--- a/src/libssp/Makefile.in ++++ b/src/libssp/Makefile.in +@@ -366,7 +366,7 @@ gcc_version := $(shell @get_gcc_base_ver + @LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = ssp.map-sun + AM_CFLAGS = -Wall $(XCFLAGS) + toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la +-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include + nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h + libssp_la_SOURCES = \ + ssp.c gets-chk.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \ +--- a/src/libssp/Makefile.am ++++ b/src/libssp/Makefile.am +@@ -37,7 +37,7 @@ AM_CFLAGS += $(XCFLAGS) + toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la + + target_noncanonical = @target_noncanonical@ +-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include + nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h + + libssp_la_SOURCES = \ +--- a/src/libquadmath/Makefile.in ++++ b/src/libquadmath/Makefile.in +@@ -472,7 +472,7 @@ AUTOMAKE_OPTIONS = foreign info-in-build + + @BUILD_LIBQUADMATH_TRUE@libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD) + @BUILD_LIBQUADMATH_TRUE@nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h +-@BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++@BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + @BUILD_LIBQUADMATH_TRUE@libquadmath_la_SOURCES = \ + @BUILD_LIBQUADMATH_TRUE@ math/x2y2m1q.c math/acoshq.c math/fmodq.c \ + @BUILD_LIBQUADMATH_TRUE@ math/acosq.c math/frexpq.c \ +--- a/src/libquadmath/Makefile.am ++++ b/src/libquadmath/Makefile.am +@@ -45,7 +45,7 @@ libquadmath_la_LDFLAGS = -version-info ` + libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD) + + nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + libquadmath_la_SOURCES = \ + math/x2y2m1q.c math/acoshq.c math/fmodq.c \ +--- a/src/libobjc/Makefile.in ++++ b/src/libobjc/Makefile.in +@@ -48,7 +48,7 @@ extra_ldflags_libobjc = @extra_ldflags_l + top_builddir = . + + libdir = $(exec_prefix)/lib +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + + # Multilib support variables. + MULTISRCTOP = +--- a/src/libada/Makefile.in ++++ b/src/libada/Makefile.in +@@ -70,7 +70,7 @@ GCC_DIR=$(MULTIBUILDTOP)../../$(host_sub + + target_noncanonical:=@target_noncanonical@ + version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) +-libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) ++libsubdir := $(libdir)/gcc-cross/$(target_noncanonical)/$(version)$(MULTISUBDIR) + ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) + + # exeext should not be used because it's the *host* exeext. We're building +--- a/src/libgomp/Makefile.in ++++ b/src/libgomp/Makefile.in +@@ -517,8 +517,8 @@ gcc_version := $(shell @get_gcc_base_ver + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) \ + $(top_srcdir)/../include + +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + AM_CPPFLAGS = $(addprefix -I, $(search_path)) + AM_CFLAGS = $(XCFLAGS) + AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS) +--- a/src/libgomp/Makefile.am ++++ b/src/libgomp/Makefile.am +@@ -11,8 +11,8 @@ config_path = @config_path@ + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) \ + $(top_srcdir)/../include + +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + vpath % $(strip $(search_path)) + +--- a/src/libgcc/Makefile.in ++++ b/src/libgcc/Makefile.in +@@ -201,7 +201,7 @@ STRIP = @STRIP@ + STRIP_FOR_TARGET = $(STRIP) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(real_host_noncanonical)/$(version)@accel_dir_suffix@ ++libsubdir = $(libdir)/gcc-cross/$(real_host_noncanonical)/$(version)@accel_dir_suffix@ + # Used to install the shared libgcc. + slibdir = @slibdir@ + # Maybe used for DLLs on Windows targets. +--- a/src/libffi/include/Makefile.am ++++ b/src/libffi/include/Makefile.am +@@ -8,6 +8,6 @@ EXTRA_DIST=ffi.h.in + + # Where generated headers like ffitarget.h get installed. + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + toollibffi_HEADERS = ffi.h ffitarget.h +--- a/src/libffi/include/Makefile.in ++++ b/src/libffi/include/Makefile.in +@@ -327,7 +327,7 @@ EXTRA_DIST = ffi.h.in + + # Where generated headers like ffitarget.h get installed. + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + toollibffi_HEADERS = ffi.h ffitarget.h + all: all-am + +--- a/src/libcc1/Makefile.am ++++ b/src/libcc1/Makefile.am +@@ -40,7 +40,7 @@ libiberty = $(if $(wildcard $(libiberty_ + $(Wc)$(libiberty_normal))) + libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty)) + +-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin ++plugindir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/plugin + cc1libdir = $(libdir)/$(libsuffix) + + if ENABLE_PLUGIN +--- a/src/libcc1/Makefile.in ++++ b/src/libcc1/Makefile.in +@@ -396,7 +396,7 @@ libiberty = $(if $(wildcard $(libiberty_ + $(Wc)$(libiberty_normal))) + + libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty)) +-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin ++plugindir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/plugin + cc1libdir = $(libdir)/$(libsuffix) + @ENABLE_PLUGIN_TRUE@plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la + @ENABLE_PLUGIN_TRUE@cc1lib_LTLIBRARIES = libcc1.la +--- a/src/libsanitizer/Makefile.am ++++ b/src/libsanitizer/Makefile.am +@@ -1,6 +1,6 @@ + ACLOCAL_AMFLAGS = -I .. -I ../config + +-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer ++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer + + nodist_saninclude_HEADERS = + +--- a/src/libsanitizer/Makefile.in ++++ b/src/libsanitizer/Makefile.in +@@ -362,7 +362,7 @@ top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + ACLOCAL_AMFLAGS = -I .. -I ../config +-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer ++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer + nodist_saninclude_HEADERS = $(am__append_1) + @SANITIZER_SUPPORTED_TRUE@SUBDIRS = sanitizer_common $(am__append_2) \ + @SANITIZER_SUPPORTED_TRUE@ $(am__append_3) lsan asan ubsan \ +--- a/src/libphobos/configure.ac ++++ b/src/libphobos/configure.ac +@@ -261,6 +261,8 @@ AC_SUBST(SPEC_PHOBOS_DEPS) + libtool_VERSION=6:0:0 + AC_SUBST(libtool_VERSION) + ++# trigger rebuild of the configure file ++ + # Set default flags (after DRUNTIME_WERROR!) + if test -z "$GDCFLAGS"; then + GDCFLAGS="-g -O2" +--- a/src/libphobos/m4/druntime.m4 ++++ b/src/libphobos/m4/druntime.m4 +@@ -114,6 +114,7 @@ AC_DEFUN([DRUNTIME_INSTALL_DIRECTORIES], + + # Default case for install directory for D sources files. + gdc_include_dir='$(libdir)/gcc/${target_alias}/${gcc_version}/include/d' ++ gdc_include_dir='${libdir}/gcc-cross/${target_alias}'/${gcc_version}/include/d + AC_SUBST(gdc_include_dir) + ]) + +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -933,7 +933,7 @@ toolexeclibdir = $(ADA_RTL_OBJ_DIR) + + ADA_INCLUDE_DIR = $(libsubdir)/adainclude + ADA_RTL_OBJ_DIR = $(libsubdir)/adalib +-ADA_RTL_DSO_DIR = $(toolexeclibdir) ++ADA_RTL_DSO_DIR = $(subst /gcc/,/gcc-cross/,$(toolexeclibdir)) + + # Special flags + +--- a/src/c++tools/Makefile.in ++++ b/src/c++tools/Makefile.in +@@ -21,7 +21,7 @@ bindir := @bindir@ + libexecdir := @libexecdir@ + target_noncanonical := @target_noncanonical@ + gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) +-libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir := $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + INSTALL := @INSTALL@ + INSTALL_PROGRAM := @INSTALL_PROGRAM@ + INSTALL_STRIP_PROGRAM := $(srcdir)/../install-sh -c -s +--- a/src/libgm2/libm2cor/Makefile.am ++++ b/src/libgm2/libm2cor/Makefile.am +@@ -27,7 +27,7 @@ MAKEOVERRIDES= + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- a/src/libgm2/libm2cor/Makefile.in ++++ b/src/libgm2/libm2cor/Makefile.in +@@ -400,7 +400,7 @@ MAKEOVERRIDES = + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) +--- a/src/libgm2/libm2iso/Makefile.am ++++ b/src/libgm2/libm2iso/Makefile.am +@@ -27,7 +27,7 @@ MAKEOVERRIDES= + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + # Used to install the shared libgcc. + # was slibdir = @slibdir@ + slibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) +--- a/src/libgm2/libm2iso/Makefile.in ++++ b/src/libgm2/libm2iso/Makefile.in +@@ -426,7 +426,7 @@ MAKEOVERRIDES = + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) +--- a/src/libgm2/libm2log/Makefile.am ++++ b/src/libgm2/libm2log/Makefile.am +@@ -27,7 +27,7 @@ MAKEOVERRIDES= + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- a/src/libgm2/libm2log/Makefile.in ++++ b/src/libgm2/libm2log/Makefile.in +@@ -389,7 +389,7 @@ MAKEOVERRIDES = + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) +--- a/src/libgm2/libm2min/Makefile.am ++++ b/src/libgm2/libm2min/Makefile.am +@@ -27,7 +27,7 @@ MAKEOVERRIDES= + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- a/src/libgm2/libm2min/Makefile.in ++++ b/src/libgm2/libm2min/Makefile.in +@@ -379,7 +379,7 @@ MAKEOVERRIDES = + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) +--- a/src/libgm2/libm2pim/Makefile.am ++++ b/src/libgm2/libm2pim/Makefile.am +@@ -27,7 +27,7 @@ MAKEOVERRIDES= + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- a/src/libgm2/libm2pim/Makefile.in ++++ b/src/libgm2/libm2pim/Makefile.in +@@ -414,7 +414,7 @@ MAKEOVERRIDES = + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) diff --git a/patches/cross-no-locale-include.diff b/patches/cross-no-locale-include.diff new file mode 100644 index 0000000..c728316 --- /dev/null +++ b/patches/cross-no-locale-include.diff @@ -0,0 +1,17 @@ +# DP: Don't add /usr/local/include for cross compilers. Assume that +# DP: /usr/include is ready for multiarch, but not /usr/local/include. + +--- a/src/gcc/cppdefault.cc ++++ b/src/gcc/cppdefault.cc +@@ -66,8 +66,11 @@ + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, ++#if 0 ++ /* Unsafe to assume that /usr/local/include is ready for multiarch. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, + #endif ++#endif + #ifdef PREFIX_INCLUDE_DIR + { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 }, + #endif diff --git a/patches/cuda-float128.diff b/patches/cuda-float128.diff new file mode 100644 index 0000000..655021f --- /dev/null +++ b/patches/cuda-float128.diff @@ -0,0 +1,46 @@ +# Mask __float128 types from CUDA compilers (LP: #1717257) + +--- a/src/libstdc++-v3/include/std/type_traits ++++ b/src/libstdc++-v3/include/std/type_traits +@@ -514,7 +514,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + : public true_type { }; + #endif + +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + template<> + struct __is_floating_point_helper<__float128> + : public true_type { }; +--- a/src/libstdc++-v3/include/bits/std_abs.h ++++ b/src/libstdc++-v3/include/bits/std_abs.h +@@ -137,7 +137,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + { return __gnu_cxx::__bfloat16_t(__builtin_fabsf(__x)); } + #endif + +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + __extension__ inline _GLIBCXX_CONSTEXPR + __float128 + abs(__float128 __x) +--- a/src/libstdc++-v3/include/bits/stl_algobase.h ++++ b/src/libstdc++-v3/include/bits/stl_algobase.h +@@ -1058,7 +1058,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER + __size_to_integer(double __n) { return (long long)__n; } + inline _GLIBCXX_CONSTEXPR long long + __size_to_integer(long double __n) { return (long long)__n; } +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + __extension__ inline _GLIBCXX_CONSTEXPR long long + __size_to_integer(__float128 __n) { return (long long)__n; } + #endif +--- a/src/libstdc++-v3/include/std/numbers ++++ b/src/libstdc++-v3/include/std/numbers +@@ -226,7 +226,7 @@ __glibcxx_numbers (_Float128, F128); + __glibcxx_numbers (__gnu_cxx::__bfloat16_t, BF16); + #endif + +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + __glibcxx_numbers (__float128, Q); + #endif // USE_FLOAT128 + diff --git a/patches/disable-gdc-tests.diff b/patches/disable-gdc-tests.diff new file mode 100644 index 0000000..99e7837 --- /dev/null +++ b/patches/disable-gdc-tests.diff @@ -0,0 +1,17 @@ +# DP: Disable D tests, hang on many buildds + +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -306,9 +306,9 @@ d.srcman: doc/gdc.1 + # check targets. However, our DejaGNU framework requires 'check-gdc' as its + # entry point. We feed the former to the latter here. + check-d: check-gdc +-lang_checks += check-gdc +-lang_checks_parallelized += check-gdc +-check_gdc_parallelize = 128 ++#lang_checks += check-gdc ++#lang_checks_parallelized += check-gdc ++#check_gdc_parallelize = 128 + + # No D-specific selftests. + selftest-d: diff --git a/patches/dwarf5-revert-default-doc.diff b/patches/dwarf5-revert-default-doc.diff new file mode 100644 index 0000000..c8a6e4b --- /dev/null +++ b/patches/dwarf5-revert-default-doc.diff @@ -0,0 +1,14 @@ +# DP: Don't turn on DWARF 5 by default, where GCC 11 is not the default. + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -9630,6 +9630,9 @@ version for most targets is 5 (with the + Darwin/Mac OS X, which default to version 2, and AIX, which defaults + to version 4). + ++NOTE: On Ubuntu release, where GCC 11 is not used as the default (21.04 ++and earlier releases), it defaults to version 4. ++ + Note that with DWARF Version 2, some ports require and always + use some non-conflicting DWARF 3 extensions in the unwind tables. + diff --git a/patches/dwarf5-revert-default.diff b/patches/dwarf5-revert-default.diff new file mode 100644 index 0000000..5d596c2 --- /dev/null +++ b/patches/dwarf5-revert-default.diff @@ -0,0 +1,24 @@ +# DP: Don't turn on DWARF 5 by default, where GCC 11 is not the default. + +--- a/src/gcc/common.opt ++++ b/src/gcc/common.opt +@@ -3353,7 +3353,7 @@ Common Driver JoinedOrMissing RejectNega + Generate debug information in default version of DWARF format. + + gdwarf- +-Common Driver Joined UInteger Var(dwarf_version) Init(DWARF_VERSION_DEFAULT) RejectNegative ++Common Driver Joined UInteger Var(dwarf_version) Init(4) RejectNegative + Generate debug information in DWARF v2 (or later) format. + + gdwarf32 +--- a/src/gcc/defaults.h ++++ b/src/gcc/defaults.h +@@ -1444,7 +1444,7 @@ see the files COPYING3 and COPYING.RUNTI + /* When generating dwarf info, the default standard version we'll honor + and advertise in absence of -gdwarf- on the command line. */ + #ifndef DWARF_VERSION_DEFAULT +-#define DWARF_VERSION_DEFAULT 5 ++#define DWARF_VERSION_DEFAULT 4 + #endif + + #ifndef USED_FOR_TARGET diff --git a/patches/g++-multiarch-incdir.diff b/patches/g++-multiarch-incdir.diff new file mode 100644 index 0000000..2914213 --- /dev/null +++ b/patches/g++-multiarch-incdir.diff @@ -0,0 +1,109 @@ +# DP: Use /usr/include//c++/4.x as the include directory +# DP: for host dependent c++ header files. + +--- a/src/libstdc++-v3/include/Makefile.am ++++ b/src/libstdc++-v3/include/Makefile.am +@@ -1048,7 +1048,7 @@ endif + + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +--- a/src/libstdc++-v3/include/Makefile.in ++++ b/src/libstdc++-v3/include/Makefile.in +@@ -1379,7 +1379,7 @@ parallel_headers = \ + @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers} + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -1276,6 +1276,7 @@ FLAGS_TO_PASS = \ + "prefix=$(prefix)" \ + "local_prefix=$(local_prefix)" \ + "gxx_include_dir=$(gcc_gxx_include_dir)" \ ++ "gxx_tool_include_dir=$(gcc_gxx_tool_include_dir)" \ + "gxx_libcxx_include_dir=$(gcc_gxx_libcxx_include_dir)" \ + "build_tooldir=$(build_tooldir)" \ + "gcc_tooldir=$(gcc_tooldir)" \ +@@ -2015,6 +2016,14 @@ gnat_install_lib = @gnat_install_lib@ + # host overrides + -include $(xmake_file) + ++# Directory in which the compiler finds target-dependent g++ includes. ++ifneq ($(call if_multiarch,non-empty),) ++ gcc_gxx_tool_include_dir = $(libsubdir)/$(libsubdir_to_prefix)include/$(MULTIARCH_DIRNAME)/c++/$(version) ++else ++ gcc_gxx_tool_include_dir = $(gcc_gxx_include_dir)/$(target_noncanonical) ++endif ++ ++ + # all-tree.def includes all the tree.def files. + all-tree.def: s-alltree; @true + s-alltree: Makefile +@@ -3407,7 +3416,7 @@ PREPROCESSOR_DEFINES = \ + -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \ + -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ + -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \ +- -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ ++ -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_tool_include_dir)\" \ + -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ + -DGPLUSPLUS_LIBCXX_INCLUDE_DIR=\"$(gcc_gxx_libcxx_include_dir)\" \ + -DGPLUSPLUS_LIBCXX_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_libcxx_include_dir_add_sysroot) \ +--- a/src/gcc/cppdefault.cc ++++ b/src/gcc/cppdefault.cc +@@ -49,6 +49,8 @@ const struct default_include cpp_include + /* Pick up GNU C++ target-dependent include files. */ + { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 2 }, + #endif + #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR + /* Pick up GNU C++ backward and deprecated include files. */ +--- a/src/gcc/incpath.cc ++++ b/src/gcc/incpath.cc +@@ -164,6 +164,18 @@ add_standard_paths (const char *sysroot, + } + str = reconcat (str, str, dir_separator_str, + imultiarch, NULL); ++ if (p->cplusplus && strstr (str, "/c++/")) ++ { ++ char *suffix = strstr (str, "/c++/"); ++ *suffix++ = '\0'; ++ suffix = xstrdup (suffix); ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, ++ dir_separator_str, suffix, NULL); ++ } ++ else ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, NULL); + } + add_path (str, INC_SYSTEM, p->cxx_aware, false); + } +@@ -229,7 +241,16 @@ add_standard_paths (const char *sysroot, + free (str); + continue; + } +- str = reconcat (str, str, dir_separator_str, imultiarch, NULL); ++ if (p->cplusplus && strstr (str, "/c++/")) ++ { ++ char *suffix = strstr (str, "/c++/"); ++ *suffix++ = '\0'; ++ suffix = xstrdup (suffix); ++ str = reconcat (str, str, dir_separator_str, imultiarch, ++ dir_separator_str, suffix, NULL); ++ } ++ else ++ str = reconcat (str, str, dir_separator_str, imultiarch, NULL); + } + + add_path (str, INC_SYSTEM, p->cxx_aware, false); diff --git a/patches/ga68-texinfo.diff b/patches/ga68-texinfo.diff new file mode 100644 index 0000000..b02a3eb --- /dev/null +++ b/patches/ga68-texinfo.diff @@ -0,0 +1,28 @@ +--- a/src/gcc/algol68/ga68.texi ++++ b/src/gcc/algol68/ga68.texi +@@ -72,6 +72,25 @@ man page gfdl(7). + @versionsubtitle + @author Jose E. Marchesi + ++@macro gcctabopt{body} ++@code{\body\} ++@end macro ++@macro gccoptlist{body} ++@smallexample ++\body\ ++@end smallexample ++@end macro ++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; ++@c they get lost at some point in handling the macro. But if @macro is ++@c used here rather than @alias, it produces double line breaks. ++@iftex ++@alias gol = * ++@end iftex ++@ifnottex ++@macro gol ++@end macro ++@end ifnottex ++ + @page + @vskip 0pt plus 1filll + @sp 1 diff --git a/patches/gcc-arm-disable-guality-tests.diff b/patches/gcc-arm-disable-guality-tests.diff new file mode 100644 index 0000000..b3c38be --- /dev/null +++ b/patches/gcc-arm-disable-guality-tests.diff @@ -0,0 +1,44 @@ +# DP: Don't run some tests from the guality test suite on armhf. These fail +# DP: on every target, but seem to hang on the buildds occasionally on armhf. + +--- a/src/gcc/testsuite/gcc.dg/guality/guality.exp ++++ b/src/gcc/testsuite/gcc.dg/guality/guality.exp +@@ -99,7 +99,37 @@ if {[check_guality " + } + } + +- gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.c]] "" "" ++ # FIXME: these seem to hang on the buildds, and gdb always times out ++ # trying to run them. ++ if { [istarget arm-*-linux-gnueabi*] } { ++ set guality [list] ++ foreach file [lsort [glob $srcdir/$subdir/*.c]] { ++ switch -glob -- [file tail $file] { ++ pr36728-*.c - ++ pr41616-1.c - ++ pr43051-1.c - ++ pr54200.c - ++ pr54519-*.c - ++ pr54551.c - ++ pr54693-2.c - ++ pr54796.c - ++ pr56154-1.c - ++ pr58791-3.c - ++ pr58791-5.c - ++ pr68860-1.c - ++ pr68860-2.c - ++ pr78726.c - ++ pr89528.c - ++ pr90074.c - ++ pr90716.c { } ++ * { lappend guality $file } ++ } ++ } ++ } { ++ set guality [lsort [glob $srcdir/$subdir/*.c]] ++ } ++ ++ gcc-dg-runtest $guality "" "" + gcc-dg-runtest $general "" "-Wc++-compat" + set-torture-options \ + [list "-O0" "-Og"] \ diff --git a/patches/gcc-as-needed-gold.diff b/patches/gcc-as-needed-gold.diff new file mode 100644 index 0000000..dcc2aab --- /dev/null +++ b/patches/gcc-as-needed-gold.diff @@ -0,0 +1,85 @@ +# DP: Use --push-state/--pop-state for gold as well when linking libtsan. + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -780,10 +780,10 @@ proper position among the other output f + #define LIBASAN_SPEC STATIC_LIBASAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) + #define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \ +- " %{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " %{!static-libasan:--push-state --no-as-needed}" \ + " -lasan " \ + " %{static-libasan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-libasan:--pop-state}" \ + STATIC_LIBASAN_LIBS + #else + #define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS +@@ -819,10 +819,10 @@ proper position among the other output f + #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) + #define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \ +- " %{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " %{!static-libtsan:--push-state --no-as-needed}" \ + " -ltsan " \ + " %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-libtsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-libtsan:--pop-state}" \ + STATIC_LIBTSAN_LIBS + #else + #define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS +@@ -840,10 +840,10 @@ proper position among the other output f + #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) + #define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \ +- " %{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " %{!static-liblsan:--push-state --no-as-needed}" \ + " -llsan " \ + " %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-liblsan:--pop-state}" \ + STATIC_LIBLSAN_LIBS + #else + #define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS +@@ -859,10 +859,10 @@ proper position among the other output f + " %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}" + #ifdef HAVE_LD_STATIC_DYNAMIC + #define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \ +- " %{!static-libubsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " %{!static-libubsan:--push-state --no-as-needed}" \ + " -lubsan " \ + " %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-libubsan:--pop-state}" \ + STATIC_LIBUBSAN_LIBS + #else + #define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS +--- a/src/gcc/config/gnu-user.h ++++ b/src/gcc/config/gnu-user.h +@@ -136,22 +136,22 @@ see the files COPYING3 and COPYING.RUNTI + #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \ + "%{static-libasan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lasan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ LD_DYNAMIC_OPTION "}}%{!static-libasan:--push-state --no-as-needed -lasan --pop-state}" + #undef LIBHWASAN_EARLY_SPEC + #define LIBHWASAN_EARLY_SPEC "%{!shared:libhwasan_preinit%O%s} " \ + "%{static-libhwasan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -lhwasan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libhwasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lhwasan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ LD_DYNAMIC_OPTION "}}%{!static-libhwasan:--push-state --no-as-needed -lhwasan --pop-state}" + #undef LIBTSAN_EARLY_SPEC + #define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \ + "%{static-libtsan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed -ltsan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ LD_DYNAMIC_OPTION "}}%{!static-libtsan:--push-state --no-as-needed -ltsan --pop-state}" + #undef LIBLSAN_EARLY_SPEC + #define LIBLSAN_EARLY_SPEC "%{!shared:liblsan_preinit%O%s} " \ + "%{static-liblsan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed -llsan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ LD_DYNAMIC_OPTION "}}%{!static-liblsan:--push-state --no-as-needed -llsan --pop-state}" + #endif + + #undef TARGET_F951_OPTIONS diff --git a/patches/gcc-as-needed.diff b/patches/gcc-as-needed.diff new file mode 100644 index 0000000..299b828 --- /dev/null +++ b/patches/gcc-as-needed.diff @@ -0,0 +1,284 @@ +# DP: On linux targets pass --as-needed by default to the linker, but always +# DP: link the sanitizer libraries with --no-as-needed. + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -779,8 +779,11 @@ proper position among the other output f + #ifdef LIBASAN_EARLY_SPEC + #define LIBASAN_SPEC STATIC_LIBASAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +-#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION \ +- "} -lasan %{static-libasan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \ ++ " %{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " -lasan " \ ++ " %{static-libasan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBASAN_LIBS + #else + #define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS +@@ -815,8 +818,11 @@ proper position among the other output f + #ifdef LIBTSAN_EARLY_SPEC + #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +-#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION \ +- "} -ltsan %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \ ++ " %{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " -ltsan " \ ++ " %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-libtsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBTSAN_LIBS + #else + #define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS +@@ -833,8 +839,11 @@ proper position among the other output f + #ifdef LIBLSAN_EARLY_SPEC + #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +-#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION \ +- "} -llsan %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \ ++ " %{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " -llsan " \ ++ " %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBLSAN_LIBS + #else + #define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS +@@ -849,8 +858,11 @@ proper position among the other output f + #define STATIC_LIBUBSAN_LIBS \ + " %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}" + #ifdef HAVE_LD_STATIC_DYNAMIC +-#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION \ +- "} -lubsan %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \ ++ " %{!static-libubsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " -lubsan " \ ++ " %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBUBSAN_LIBS + #else + #define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS +--- a/src/gcc/config/gnu-user.h ++++ b/src/gcc/config/gnu-user.h +@@ -136,22 +136,22 @@ see the files COPYING3 and COPYING.RUNTI + #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \ + "%{static-libasan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}" ++ LD_DYNAMIC_OPTION "}}%{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lasan %{fuse-ld=gold:--as-needed;:--pop-state}}" + #undef LIBHWASAN_EARLY_SPEC + #define LIBHWASAN_EARLY_SPEC "%{!shared:libhwasan_preinit%O%s} " \ + "%{static-libhwasan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -lhwasan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libhwasan:-lhwasan}" ++ LD_DYNAMIC_OPTION "}}%{!static-libhwasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lhwasan %{fuse-ld=gold:--as-needed;:--pop-state}}" + #undef LIBTSAN_EARLY_SPEC + #define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \ + "%{static-libtsan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}" ++ LD_DYNAMIC_OPTION "}}%{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed -ltsan %{fuse-ld=gold:--as-needed;:--pop-state}}" + #undef LIBLSAN_EARLY_SPEC + #define LIBLSAN_EARLY_SPEC "%{!shared:liblsan_preinit%O%s} " \ + "%{static-liblsan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-liblsan:-llsan}" ++ LD_DYNAMIC_OPTION "}}%{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed -llsan %{fuse-ld=gold:--as-needed;:--pop-state}}" + #endif + + #undef TARGET_F951_OPTIONS +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -40,6 +40,7 @@ + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ + --hash-style=gnu \ ++ %{!fsanitize=*:--as-needed} \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ do { \ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC " --hash-style=gnu \ ++#define LINK_SPEC " --hash-style=gnu %{!fsanitize=*:--as-needed} \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -81,7 +81,7 @@ extern const char *host_detect_local_cpu + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{!fsanitize=*:--as-needed} %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -82,7 +82,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu %{!fsanitize=*:--as-needed} \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -378,13 +378,13 @@ extern int dot_symbols; + " -m elf64ppc") + #endif + +-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!fsanitize=*:--as-needed} %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}} \ + %(link_os_extra_spec32)" + +-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!fsanitize=*:--as-needed} %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}} \ +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -781,7 +781,7 @@ GNU_USER_TARGET_CC1_SPEC + #define GNU_USER_DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER + #endif + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!fsanitize=*:--as-needed} %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + +--- a/src/gcc/config/i386/gnu-user64.h ++++ b/src/gcc/config/i386/gnu-user64.h +@@ -57,6 +57,7 @@ see the files COPYING3 and COPYING.RUNTI + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ + %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ + --hash-style=gnu \ ++ %{!fsanitize=*:--as-needed} \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/i386/gnu-user.h ++++ b/src/gcc/config/i386/gnu-user.h +@@ -68,7 +68,7 @@ along with GCC; see the file COPYING3. + { "link_emulation", GNU_USER_LINK_EMULATION },\ + { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } + +-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ ++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{!fsanitize=*:--as-needed} %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{!static-pie: \ +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{!fsanitize=*:--as-needed} %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -71,6 +71,7 @@ + %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \ + -X \ + --hash-style=gnu \ ++ %{!fsanitize=*:--as-needed} \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +--- a/src/gcc/config/mips/gnu-user.h ++++ b/src/gcc/config/mips/gnu-user.h +@@ -55,6 +55,7 @@ along with GCC; see the file COPYING3. + #undef GNU_USER_TARGET_LINK_SPEC + #define GNU_USER_TARGET_LINK_SPEC "\ + %{G*} %{EB} %{EL} %{mips*} %{shared} \ ++ %{!fsanitize=*:--as-needed} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +--- a/src/gcc/config/riscv/linux.h ++++ b/src/gcc/config/riscv/linux.h +@@ -49,6 +49,7 @@ along with GCC; see the file COPYING3. + + #define LINK_SPEC "\ + -hash-style=gnu \ ++%{!fsanitize=*:--as-needed} \ + -melf" XLEN_SPEC DEFAULT_ENDIAN_SPEC "riscv" LD_EMUL_SUFFIX " \ + %{mno-relax:--no-relax} \ + -X \ +--- a/src/gcc/config/m68k/linux.h ++++ b/src/gcc/config/m68k/linux.h +@@ -78,6 +78,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC "-m m68kelf %{shared} \ ++ %{!fsanitize=*:--as-needed} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +--- a/src/gcc/config/sh/linux.h ++++ b/src/gcc/config/sh/linux.h +@@ -72,6 +72,7 @@ along with GCC; see the file COPYING3. + #undef SUBTARGET_LINK_SPEC + #define SUBTARGET_LINK_SPEC \ + "%{shared:-shared} \ ++ %{!fsanitize=*:--as-needed} \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ +--- a/src/gcc/config/pa/pa-linux.h ++++ b/src/gcc/config/pa/pa-linux.h +@@ -41,6 +41,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC "\ ++ %{!fsanitize=*:--as-needed} \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/loongarch/gnu-user.h ++++ b/src/gcc/config/loongarch/gnu-user.h +@@ -45,6 +45,7 @@ along with GCC; see the file COPYING3. + #undef GNU_USER_TARGET_LINK_SPEC + #define GNU_USER_TARGET_LINK_SPEC \ + "%{G*} %{shared} -m " GNU_USER_LINK_EMULATION \ ++ " %{!fsanitize=*:--as-needed} " \ + "%{!shared: %{static} " \ + "%{!static: %{!static-pie: %{rdynamic:-export-dynamic} " \ + "-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} " \ +--- a/src/gcc/config/sparc/linux64.h ++++ b/src/gcc/config/sparc/linux64.h +@@ -90,7 +90,7 @@ along with GCC; see the file COPYING3. + { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ + { "link_arch", LINK_ARCH_SPEC }, + +-#define LINK_ARCH32_SPEC "-m elf32_sparc %{shared:-shared} \ ++#define LINK_ARCH32_SPEC "-m elf32_sparc %{shared:-shared} %{!fsanitize=*:--as-needed} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +@@ -98,7 +98,7 @@ along with GCC; see the file COPYING3. + %{static:-static}} \ + " + +-#define LINK_ARCH64_SPEC "-m elf64_sparc %{shared:-shared} \ ++#define LINK_ARCH64_SPEC "-m elf64_sparc %{shared:-shared} %{!fsanitize=*:--as-needed} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ diff --git a/patches/gcc-auto-build.diff b/patches/gcc-auto-build.diff new file mode 100644 index 0000000..75c3d00 --- /dev/null +++ b/patches/gcc-auto-build.diff @@ -0,0 +1,13 @@ +# DP: Fix cross building a native compiler. + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -2184,7 +2184,7 @@ else + # Clearing GMPINC is necessary to prevent host headers being + # used by the build compiler. Defining GENERATOR_FILE stops + # system.h from including gmp.h. +- CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ ++ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD} -DGENERATOR_FILE" \ + CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \ + LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \ + GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \ diff --git a/patches/gcc-distro-specs-ubuntu-doc.diff b/patches/gcc-distro-specs-ubuntu-doc.diff new file mode 100644 index 0000000..b9936fc --- /dev/null +++ b/patches/gcc-distro-specs-ubuntu-doc.diff @@ -0,0 +1,101 @@ +# DP: Document distro specific compiler flags turned on by default + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -8868,6 +8868,10 @@ to turn on such checking by using @optio + and is equivalent to @option{-Wbidi-chars=unpaired,ucn}, if no previous + @option{-Wbidi-chars=any} was specified. + ++NOTE: In Ubuntu 25.10 and later versions, @option{-Wbidi-chars} is ++enabled by default for C, C++, ObjC, ObjC++, unless ++@option{-Wno-bidi-chars} or @option{-Wbidi-chars=none} is found. ++ + @opindex Wno-bool-compare + @opindex Wbool-compare + @item -Wbool-compare +@@ -12831,6 +12835,19 @@ also turns on the following optimization + Please note the warning under @option{-fgcse} about + invoking @option{-O2} on programs that use computed gotos. + ++NOTE: In Ubuntu 8.10 and later versions, @option{-D_FORTIFY_SOURCE=2}, ++in Ubuntu 24.04 and later versions, @option{-D_FORTIFY_SOURCE=3}, is ++set by default, and is activated when @option{-O} is set to 2 or higher. ++This enables additional compile-time and run-time checks for several libc ++functions. To disable, specify either @option{-U_FORTIFY_SOURCE} or ++@option{-D_FORTIFY_SOURCE=0}. ++ ++NOTE: In Debian 13 and Ubuntu 24.04 and later versions, ++@option{-D_TIME_BITS=64} together with @option{-D_FILE_OFFSET_BITS=64} is ++set by default on the 32bit architectures @samp{armel}, @samp{armhf}, ++@samp{hppa}, @samp{m68k}, @samp{mips}, @samp{mipsel}, @samp{powerpc} and ++@samp{sh4}. ++ + @opindex O3 + @item -O3 + Optimize yet more. @option{-O3} turns on all optimizations specified +@@ -16581,6 +16598,9 @@ value of a shared integer constant. + The minimum size of buffers (i.e.@: arrays) that receive stack smashing + protection when @option{-fstack-protector} is used. + ++This default before Ubuntu 10.10 was "8". Currently it is "4", to increase ++the number of functions protected by the stack protector. ++ + @item min-size-for-stack-sharing + The minimum size of variables taking part in stack slot sharing when not + optimizing. +@@ -18489,6 +18509,10 @@ Currently the x86 GNU/Linux target provi + on Intel Control-flow Enforcement Technology (CET) which works for + i686 processor or newer. + ++NOTE: In Ubuntu 19.10 and later versions, @option{-fcf-protection} ++is enabled by default for C, C++, ObjC, ObjC++, if none of ++@option{-fno-cf-protection} nor @option{-fcf-protection=*} are found. ++ + @opindex fharden-compares + @item -fharden-compares + For every logical test that survives gimple optimizations and is +@@ -18644,6 +18668,11 @@ references to local frame addresses. On + allocated on the stack are considered, optimized away variables or variables + allocated in registers don't count. + ++NOTE: In Ubuntu 14.10 and later versions, ++@option{-fstack-protector-strong} is enabled by default for C, ++C++, ObjC, ObjC++, if none of @option{-fno-stack-protector}, ++@option{-nostdlib}, nor @option{-ffreestanding} are found. ++ + @opindex fstack-protector-explicit + @item -fstack-protector-explicit + Like @option{-fstack-protector} but only protects those functions which +@@ -18707,6 +18736,10 @@ allocations. @option{-fstack-clash-prot + protection for static stack allocations if the target supports + @option{-fstack-check=specific}. + ++NOTE: In Ubuntu 19.10 and later versions, ++@option{-fstack-clash-protection} is enabled by default for C, ++C++, ObjC, ObjC++, unless @option{-fno-stack-clash-protection} is found. ++ + @opindex fstack-limit-register + @opindex fstack-limit-symbol + @opindex fno-stack-limit +@@ -19470,6 +19503,9 @@ For example, @option{-Wl,-Map,output.map + linker. When using the GNU linker, you can also get the same effect with + @option{-Wl,-Map=output.map}. + ++NOTE: In Ubuntu 8.10 and later versions, for LDFLAGS, the option ++@option{-Wl,-z,relro} is used. To disable, use @option{-Wl,-z,norelro}. ++ + @opindex u + @item -u @var{symbol} + Pretend the symbol @var{symbol} is undefined, to force linking of +@@ -20323,6 +20359,11 @@ zero initialization of padding bits of o + the padding in between @code{b.a} and @code{b.b} (if any) and + tail padding in the structure (if any). + ++NOTE: In Ubuntu 25.10 and later versions, ++@option{-fzero-init-padding-bits=all} is enabled by default for C, ++C++, ObjC, ObjC++, unless @option{-fzero-init-padding-bits=standard} ++is found. ++ + @end table + + @node Developer Options diff --git a/patches/gcc-distro-specs.diff b/patches/gcc-distro-specs.diff new file mode 100644 index 0000000..447daef --- /dev/null +++ b/patches/gcc-distro-specs.diff @@ -0,0 +1,366 @@ +# DP: Add empty distro and hardening specs + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -27,6 +27,11 @@ CC recognizes how to compile each input + Once it knows which kind of compilation to perform, the procedure for + compilation is specified by a string called a "spec". */ + ++/* Inject some default compilation flags which are used as the default. ++ Done by the packaging build system. Should that be done in the headers ++ gcc/config//*.h instead? */ ++#include "distro-defaults.h" ++ + #define INCLUDE_STRING + #include "config.h" + #include "system.h" +@@ -991,6 +996,148 @@ proper position among the other output f + #define LINK_GCC_C_SEQUENCE_SPEC "%G %{!nolibc:%L %G}" + #endif + ++/* Generate full unwind information covering all program points. ++ Only needed for some architectures. */ ++#ifndef ASYNC_UNWIND_SPEC ++# ifdef DIST_DEFAULT_ASYNC_UNWIND ++# define ASYNC_UNWIND_SPEC "%{!fno-asynchronous-unwind-tables:-fasynchronous-unwind-tables}" ++# else ++# define ASYNC_UNWIND_SPEC "" ++# endif ++#endif ++ ++/* Turn on stack protector. ++ */ ++#ifndef SSP_DEFAULT_SPEC ++# ifdef DIST_DEFAULT_SSP ++# ifdef DIST_DEFAULT_SSP_STRONG ++# define SSP_DEFAULT_SPEC " %{!fno-stack-protector:%{!fstack-protector-explicit:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:%{!fstack-protector:-fstack-protector-strong}}}}}}" ++# else ++# define SSP_DEFAULT_SPEC " %{!fno-stack-protector:%{!fstack-protector-explicit:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}}}" ++# endif ++# else ++# define SSP_DEFAULT_SPEC "" ++# endif ++#endif ++ ++/* Turn on -Wformat -Wformat-security by default for C, C++, ++ ObjC, ObjC++. */ ++#ifndef FORMAT_SECURITY_SPEC ++# ifdef DIST_DEFAULT_FORMAT_SECURITY ++# define FORMAT_SECURITY_SPEC " %{!Wformat:%{!Wformat=2:%{!Wformat=0:%{!Wall:-Wformat} %{!Wno-format-security:-Wformat-security}}}}" ++# else ++# define FORMAT_SECURITY_SPEC "" ++# endif ++#endif ++ ++/* Enable -fstack-clash-protection by default. Only available ++ on some targets. */ ++#ifndef STACK_CLASH_SPEC ++# ifdef DIST_DEFAULT_STACK_CLASH ++# define STACK_CLASH_SPEC " %{!fno-stack-clash-protection:-fstack-clash-protection}" ++# else ++# define STACK_CLASH_SPEC "" ++# endif ++#endif ++ ++/* Enable code instrumentation of control-flow transfers. ++ Available on x86 and x86_64. */ ++#ifndef CF_PROTECTION_SPEC ++# ifdef DIST_DEFAULT_CF_PROTECTION ++# define CF_PROTECTION_SPEC " %{!m16:%{!m32:%{!fcf-protection*:%{!fno-cf-protection:-fcf-protection}}}}" ++# else ++# define CF_PROTECTION_SPEC "" ++# endif ++#endif ++ ++/* Enable -D_TIME_BITS=64, only available on some 32bit targets. */ ++#ifndef TIMET64_SPEC ++# ifdef DIST_DEFAULT_TIMET64 ++# define TIMET64_SPEC " %{!m16:%{!m64:%{!D_DISTRO_EVADE_TIME_BITS:%{!D_TIME_BITS=*:%{!U_TIME_BITS:-D_TIME_BITS=64%{!D_FILE_OFFSET_BITS=*:%{!U_FILE_OFFSET_BITS: -D_FILE_OFFSET_BITS=64}}}}}}}" ++# else ++# define TIMET64_SPEC "" ++# endif ++#endif ++ ++/* Enable -D_FORTIFY_SOURCE= */ ++#ifndef FORTIFY_SOURCE_SPEC ++# ifdef DIST_DEFAULT_FORTIFY_SOURCE ++# define FORTIFY_SOURCE_SPEC " %{!O0:%{O*:%{!D_FORTIFY_SOURCE=*:%{!U_FORTIFY_SOURCE:-D_FORTIFY_SOURCE=" DIST_DEFAULT_FORTIFY_SOURCE_S "}}}}" ++# else ++# define FORTIFY_SOURCE_SPEC "" ++# endif ++#endif ++ ++#ifndef BIND_NOW_SPEC ++# if defined(DIST_DEFAULT_BIND_NOW) && !defined(ACCEL_COMPILER) ++# define BIND_NOW_SPEC " -z now" ++# else ++# define BIND_NOW_SPEC "" ++# endif ++#endif ++ ++#ifndef RELRO_SPEC ++# ifdef DIST_DEFAULT_RELRO ++# define RELRO_SPEC " -z relro " ++# else ++# define RELRO_SPEC "" ++# endif ++#endif ++ ++/* Guarantee zero initialization of padding bits in automatic variable ++ initializers. */ ++#ifndef INIT_ZERO_ALL_SPEC ++# ifdef DIST_DEFAULT_INIT_ZERO_ALL ++# define INIT_ZERO_ALL_SPEC " %{!fzero-init-padding-bits*:-fzero-init-padding-bits=all}" ++# else ++# define INIT_ZERO_ALL_SPEC "" ++# endif ++#endif ++ ++/* Emit a warning on unicode bidi characters which can be used to hide ++ malicious code from human reviewers. */ ++#ifndef BIDI_WARNING_SPEC ++# ifdef DIST_DEFAULT_BIDI_WARNING ++# define BIDI_WARNING_SPEC " %{!Wno-bidi-chars:%{!Wbidi-chars*:-Wbidi-chars=any}}" ++# else ++# define BIDI_WARNING_SPEC "" ++# endif ++#endif ++ ++/* Enable sframe support by default. */ ++#ifndef SFRAME_SPEC ++# ifdef DIST_DEFAULT_SFRAME ++# define SFRAME_SPEC " %{!m16:%{!m32:%{!mx32:%{!ffreestanding:--gsframe}}}}" ++# else ++# define SFRAME_SPEC "" ++# endif ++#endif ++ ++/* Don't enable any of those for the offload compilers, ++ unsupported. */ ++#if !defined(DISTRO_DEFAULT_ASM_SPEC) && !defined(ACCEL_COMPILER) ++# define DISTRO_DEFAULT_ASM_SPEC SFRAME_SPEC ++#else ++# define DISTRO_DEFAULT_ASM_SPEC "" ++#endif ++#if !defined(DISTRO_DEFAULT_CPP_SPEC) && !defined(ACCEL_COMPILER) ++# define DISTRO_DEFAULT_CPP_SPEC TIMET64_SPEC FORTIFY_SOURCE_SPEC ++#else ++# define DISTRO_DEFAULT_CPP_SPEC "" ++#endif ++#if !defined(DISTRO_DEFAULT_SPEC) && !defined(ACCEL_COMPILER) ++# define DISTRO_DEFAULT_SPEC ASYNC_UNWIND_SPEC SSP_DEFAULT_SPEC \ ++ FORMAT_SECURITY_SPEC STACK_CLASH_SPEC CF_PROTECTION_SPEC \ ++ INIT_ZERO_ALL_SPEC BIDI_WARNING_SPEC ++#else ++# define DISTRO_DEFAULT_SPEC "" ++#endif ++#if !defined(DISTRO_DEFAULT_LINK_SPEC) && !defined(ACCEL_COMPILER) ++# define DISTRO_DEFAULT_LINK_SPEC RELRO_SPEC ++#else ++# define DISTRO_DEFAULT_LINK_SPEC "" ++#endif ++ + #ifndef LINK_SSP_SPEC + #ifdef TARGET_LIBC_PROVIDES_SSP + #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ +@@ -1047,7 +1194,7 @@ proper position among the other output f + #ifndef LINK_PIE_SPEC + #ifdef HAVE_LD_PIE + #ifndef LD_PIE_SPEC +-#define LD_PIE_SPEC "-pie" ++#define LD_PIE_SPEC "-pie" BIND_NOW_SPEC + #endif + #else + #define LD_PIE_SPEC "" +@@ -1164,6 +1311,7 @@ proper position among the other output f + "%{flto|flto=*:% + + * gcc.c (offload_targets_default): New variable. + (process_command): Set it if -foffload is defaulted. + (driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1 + into environment if -foffload has been defaulted. + * lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define. + (compile_offload_image): If OFFLOAD_TARGET_DEFAULT + is in the environment, don't fail if corresponding mkoffload + can't be found. + (compile_images_for_offload_targets): Likewise. Free and clear + offload_names if no valid offload is found. +libgomp/ + * target.c (gomp_load_plugin_for_device): If a plugin can't be + dlopened, assume it has no devices silently. + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -324,6 +324,10 @@ static const char *spec_host_machine = D + + static char *offload_targets = NULL; + ++/* Set to true if -foffload has not been used and offload_targets ++ is set to the configured in default. */ ++static bool offload_targets_default; ++ + /* Nonzero if cross-compiling. + When -b is used, the value comes from the `specs' file. */ + +@@ -5058,7 +5062,10 @@ process_command (unsigned int decoded_op + /* If the user didn't specify any, default to all configured offload + targets. */ + if (ENABLE_OFFLOADING && offload_targets == NULL) +- handle_foffload_option (OFFLOAD_TARGETS); ++ { ++ handle_foffload_option (OFFLOAD_TARGETS); ++ offload_targets_default = true; ++ } + + /* Handle -gtoggle as it would later in toplev.c:process_options to + make the debug-level-gt spec function work as expected. */ +@@ -8758,6 +8765,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS () + obstack_grow (&collect_obstack, offload_targets, + strlen (offload_targets) + 1); + xputenv (XOBFINISH (&collect_obstack, char *)); ++ if (offload_targets_default) ++ xputenv ("OFFLOAD_TARGET_DEFAULT=1"); + } + + free (offload_targets); +--- a/src/gcc/lto-wrapper.c ++++ b/src/gcc/lto-wrapper.c +@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3. + /* Environment variable, used for passing the names of offload targets from GCC + driver to lto-wrapper. */ + #define OFFLOAD_TARGET_NAMES_ENV "OFFLOAD_TARGET_NAMES" ++#define OFFLOAD_TARGET_DEFAULT_ENV "OFFLOAD_TARGET_DEFAULT" + + /* By default there is no special suffix for target executables. */ + #ifdef TARGET_EXECUTABLE_SUFFIX +@@ -907,6 +908,12 @@ compile_offload_image (const char *targe + break; + } + ++ if (!compiler && getenv (OFFLOAD_TARGET_DEFAULT_ENV)) ++ { ++ free_array_of_ptrs ((void **) paths, n_paths); ++ return NULL; ++ } ++ + if (!compiler) + fatal_error (input_location, + "could not find %s in %s (consider using %<-B%>)", +@@ -976,6 +983,7 @@ compile_images_for_offload_targets (unsi + if (!target_names) + return; + unsigned num_targets = parse_env_var (target_names, &names, NULL); ++ int next_name_entry = 0; + + const char *compiler_path = getenv ("COMPILER_PATH"); + if (!compiler_path) +@@ -986,13 +994,19 @@ compile_images_for_offload_targets (unsi + offload_names = XCNEWVEC (char *, num_targets + 1); + for (unsigned i = 0; i < num_targets; i++) + { +- offload_names[i] ++ offload_names[next_name_entry] + = compile_offload_image (names[i], compiler_path, in_argc, in_argv, + compiler_opts, compiler_opt_count, + linker_opts, linker_opt_count); +- if (!offload_names[i]) +- fatal_error (input_location, +- "problem with building target image for %s", names[i]); ++ if (!offload_names[next_name_entry]) ++ continue; ++ next_name_entry++; ++ } ++ ++ if (next_name_entry == 0) ++ { ++ free (offload_names); ++ offload_names = NULL; + } + + out: +--- a/src/libgomp/target.c ++++ b/src/libgomp/target.c +@@ -3173,7 +3173,7 @@ gomp_load_plugin_for_device (struct gomp + + void *plugin_handle = dlopen (plugin_name, RTLD_LAZY); + if (!plugin_handle) +- goto dl_fail; ++ return 0; + + /* Check if all required functions are available in the plugin and store + their handlers. None of the symbols can legitimately be NULL, diff --git a/patches/gcc-force-cross-layout.diff b/patches/gcc-force-cross-layout.diff new file mode 100644 index 0000000..34df429 --- /dev/null +++ b/patches/gcc-force-cross-layout.diff @@ -0,0 +1,49 @@ +# DP: Add FORCE_CROSS_LAYOUT env var to force a cross directory layout. + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3687,7 +3687,7 @@ target_configargs="$target_configargs ${ + # native. However, it would be better to use other mechanisms to make the + # sorts of decisions they want to make on this basis. Please consider + # this option to be deprecated. FIXME. +-if test x${is_cross_compiler} = xyes ; then ++if test x${is_cross_compiler} = xyes || test x${FORCE_CROSS_LAYOUT} = xyes; then + target_configargs="--with-cross-host=${host_noncanonical} ${target_configargs}" + fi + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -2537,14 +2537,14 @@ SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADE + BUILD_SYSTEM_HEADER_DIR=$SYSTEM_HEADER_DIR AC_SUBST(BUILD_SYSTEM_HEADER_DIR) + + if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x || +- test x$build != x$host || test "x$with_build_sysroot" != x; then ++ test x$build != x$host || test "x$with_build_sysroot" != x || test x$FORCE_CROSS_LAYOUT = xyes; then + if test "x$with_build_sysroot" != x; then + BUILD_SYSTEM_HEADER_DIR=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)' + else + BUILD_SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)' + fi + +- if test x$host != x$target ++ if test x$host != x$target || test x$FORCE_CROSS_LAYOUT = xyes + then + CROSS="-DCROSS_DIRECTORY_STRUCTURE" + ALL=all.cross +@@ -7577,14 +7577,14 @@ AC_SUBST_FILE(language_hooks) + + # Echo link setup. + if test x${build} = x${host} ; then +- if test x${host} = x${target} ; then ++ if test x${host} = x${target} && test x$FORCE_CROSS_LAYOUT != xyes ; then + echo "Links are now set up to build a native compiler for ${target}." 1>&2 + else + echo "Links are now set up to build a cross-compiler" 1>&2 + echo " from ${host} to ${target}." 1>&2 + fi + else +- if test x${host} = x${target} ; then ++ if test x${host} = x${target} && test x$FORCE_CROSS_LAYOUT != xyes ; then + echo "Links are now set up to build (on ${build}) a native compiler" 1>&2 + echo " for ${target}." 1>&2 + else diff --git a/patches/gcc-gfdl-build.diff b/patches/gcc-gfdl-build.diff new file mode 100644 index 0000000..456f9a0 --- /dev/null +++ b/patches/gcc-gfdl-build.diff @@ -0,0 +1,39 @@ +# DP: Build a dummy s-tm-texi without access to the texinfo sources + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -2949,32 +2949,8 @@ s-tm-texi: $(srcdir)/doc/../doc/tm.texi + # \r is not portable to Solaris tr, therefore we have a special + # case for ASCII. We use \r for other encodings like EBCDIC. + s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in +- $(RUN_GEN) build/genhooks$(build_exeext) -d \ +- $(srcdir)/doc/tm.texi.in > tmp-tm.texi +- case `echo X|tr X '\101'` in \ +- A) tr -d '\015' < tmp-tm.texi > tmp2-tm.texi ;; \ +- *) tr -d '\r' < tmp-tm.texi > tmp2-tm.texi ;; \ +- esac +- mv tmp2-tm.texi tmp-tm.texi +- $(SHELL) $(srcdir)/../move-if-change tmp-tm.texi tm.texi +- @if cmp -s $(srcdir)/doc/tm.texi tm.texi; then \ +- $(STAMP) $@; \ +- elif test $(srcdir)/doc/tm.texi -nt $(srcdir)/doc/tm.texi.in \ +- && ( test $(srcdir)/doc/tm.texi -nt $(srcdir)/target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/c-family/c-target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/common/common-target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/d/d-target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/rust/rust-target.def \ +- ); then \ +- echo >&2 ; \ +- echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \ +- false; \ +- else \ +- echo >&2 ; \ +- echo Verify that you have permission to grant a GFDL license for all >&2 ; \ +- echo new text in $(objdir)/tm.texi, then copy it to $(srcdir)/doc/tm.texi. >&2 ; \ +- false; \ +- fi ++ cat $(srcdir)/doc/tm.texi.in > tmp-tm.texi ++ $(STAMP) $@ + + $(GIMPLE_MATCH_PD_SEQ_SRC): s-gimple-match gimple-match-head.cc; @true + gimple-match-auto.h: s-gimple-match; @true diff --git a/patches/gcc-hash-style-gnu.diff b/patches/gcc-hash-style-gnu.diff new file mode 100644 index 0000000..f3a03aa --- /dev/null +++ b/patches/gcc-hash-style-gnu.diff @@ -0,0 +1,164 @@ +# DP: Link using --hash-style=gnu (aarch64, alpha, amd64, armel, armhf, ia64, +# DP: i386, powerpc, ppc64, riscv64, s390, sparc) + +2006-07-11 Jakub Jelinek + + * config/i386/linux.h (LINK_SPEC): Add --hash-style=gnu. + * config/i386/linux64.h (LINK_SPEC): Likewise. + * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. + * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, + LINK_OS_LINUX_SPEC64): Likewise. + * config/s390/linux.h (LINK_SPEC): Likewise. + * config/ia64/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, + LINK_ARCH64_SPEC): Likewise. + * config/alpha/linux-elf.h (LINK_SPEC): Likewise. + +2009-12-21 Matthias Klose + + * config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=gnu. + +2012-11-17 Matthias Klose + + * config/aarch64/aarch64-linux.h (LINK_SPEC): Add --hash-style=gnu. + +2018-03-02 Aurelien Jarno + + * config/riscv/linux.h (LINK_SPEC): Add --hash-style=gnu. + +--- + gcc/config/alpha/linux-elf.h | 2 +- + gcc/config/i386/linux.h | 2 +- + gcc/config/i386/linux64.h | 2 +- + gcc/config/ia64/linux.h | 2 +- + gcc/config/rs6000/linux64.h | 4 ++-- + gcc/config/rs6000/sysv4.h | 2 +- + gcc/config/s390/linux.h | 2 +- + gcc/config/sparc/linux.h | 2 +- + 8 files changed, 9 insertions(+), 9 deletions(-) + +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ do { \ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC " --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -378,13 +378,13 @@ extern int dot_symbols; + " -m elf64ppc") + #endif + +-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}} \ + %(link_os_extra_spec32)" + +-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}} \ +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -781,7 +781,7 @@ GNU_USER_TARGET_CC1_SPEC + #define GNU_USER_DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER + #endif + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -82,7 +82,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -81,7 +81,7 @@ extern const char *host_detect_local_cpu + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -70,6 +70,7 @@ + %{rdynamic:-export-dynamic} \ + %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \ + -X \ ++ --hash-style=gnu \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +--- a/src/gcc/config/i386/gnu-user.h ++++ b/src/gcc/config/i386/gnu-user.h +@@ -68,7 +68,7 @@ along with GCC; see the file COPYING3. + { "link_emulation", GNU_USER_LINK_EMULATION },\ + { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } + +-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{!static-pie: \ +--- a/src/gcc/config/i386/gnu-user64.h ++++ b/src/gcc/config/i386/gnu-user64.h +@@ -56,6 +56,7 @@ see the files COPYING3 and COPYING.RUNTI + "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ + %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ ++ --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -39,6 +39,7 @@ + #define CPP_SPEC "%{pthread:-D_REENTRANT}" + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ ++ --hash-style=gnu \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ +--- a/src/gcc/config/riscv/linux.h ++++ b/src/gcc/config/riscv/linux.h +@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. + "%{mabi=ilp32:_ilp32}" + + #define LINK_SPEC "\ ++-hash-style=gnu \ + -melf" XLEN_SPEC DEFAULT_ENDIAN_SPEC "riscv" LD_EMUL_SUFFIX " \ + %{mno-relax:--no-relax} \ + -X \ diff --git a/patches/gcc-ice-apport.diff b/patches/gcc-ice-apport.diff new file mode 100644 index 0000000..aa6462c --- /dev/null +++ b/patches/gcc-ice-apport.diff @@ -0,0 +1,39 @@ +# DP: Report an ICE to apport (if apport is available +# DP: and the environment variable GCC_NOAPPORT is not set) + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -8171,13 +8171,16 @@ do_report_bug (const char **new_argv, co + if (status == ATTEMPT_STATUS_SUCCESS) + { + const bool gcc_dump = has_deb_build_options ("gcc-ice", "nodump"); ++ const bool gcc_apport ++ = !env.get ("GCC_NOAPPORT") ++ && !access ("/usr/share/apport/gcc_ice_hook", R_OK | X_OK); + + if (gcc_dump) + fnotice (stderr, + "Preprocessed source stored into %s file," + " please attach this to your bugreport.\n", + *out_file); +- if (gcc_dump) ++ if (gcc_dump || gcc_apport) + { + char *cmd = XNEWVEC (char, 50 + strlen (*out_file)); + +@@ -8191,6 +8194,15 @@ do_report_bug (const char **new_argv, co + fflush (stderr); + free (cmd); + } ++ if (gcc_apport) ++ { ++ char *cmd ++ = XNEWVEC (char, 50 + strlen (*out_file) + strlen (new_argv[0])); ++ sprintf (cmd, "/usr/share/apport/gcc_ice_hook %s %s", new_argv[0], ++ *out_file); ++ system (cmd); ++ free (cmd); ++ } + /* Make sure it is not deleted. */ + free (*out_file); + *out_file = NULL; diff --git a/patches/gcc-ice-dump.diff b/patches/gcc-ice-dump.diff new file mode 100644 index 0000000..2bc029e --- /dev/null +++ b/patches/gcc-ice-dump.diff @@ -0,0 +1,111 @@ +# DP: For ICEs, dump the preprocessed source file to stderr +# DP: when in a distro build environment. + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -3168,6 +3168,61 @@ access_check (const char *name, int mode + return access (name, mode); + } + ++/* Check whether options line contains the specified variable, and ++ optionally set to the supplied value */ ++ ++static bool ++check_options (const char *options, const char *var = nullptr, ++ const char *val = nullptr) ++{ ++ if (!var) ++ return false; ++ ++ const char *const var_found = strstr (options, var); ++ if (!var_found) ++ return false; ++ ++ if (val) ++ { ++ if (var_found[strlen (var)] != '=') ++ return false; ++ ++ const char *var_end = strchr (var_found, ' '); ++ if (!var_end) ++ var_end = strchr (var_found, '\0'); ++ ++ const char *const val_found = strstr (var_found, val); ++ if (!val_found || val_found > var_end) ++ return false; ++ ++ const char c0 = val_found[-1]; ++ const char c1 = val_found[strlen (val)]; ++ if ((c0 == '=' || c0 == ',') && (c1 == ',' || c1 == ' ' || c1 == '\0')) ++ return true; ++ } ++ else ++ { ++ const char c1 = var_found[strlen (var)]; ++ if (c1 == ' ' || c1 == '\0') ++ return true; ++ } ++ return false; ++} ++ ++/* Check whether DEB_BUILD_OPTIONS environment variable is set, and ++ that it does not contain the specified exclusion keyword. */ ++ ++static bool ++has_deb_build_options (const char *exclude_var = nullptr, ++ const char *exclude_val = nullptr) ++{ ++ const char *const deb_build_options = env.get ("DEB_BUILD_OPTIONS"); ++ if (!deb_build_options) ++ return false; ++ ++ return !check_options (deb_build_options, exclude_var, exclude_val); ++} ++ + /* Callback for find_a_file. Appends the file name to the directory + path. If the resulting file exists in the right mode, return the + full pathname to the file. */ +@@ -3694,9 +3749,10 @@ execute (void) + /* For ICEs in cc1, cc1obj, cc1plus see if it is + reproducible or not. */ + const char *p; +- if (flag_report_bug +- && WEXITSTATUS (status) == ICE_EXIT_CODE +- && i == 0 ++ const bool deb_build_options ++ = has_deb_build_options ("gcc-ice", "norepro"); ++ if ((flag_report_bug || deb_build_options) ++ && WEXITSTATUS (status) == ICE_EXIT_CODE && i == 0 + && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR)) + && startswith (p + 1, "cc1")) + try_generate_repro (commands[0].argv); +@@ -8114,8 +8170,27 @@ do_report_bug (const char **new_argv, co + + if (status == ATTEMPT_STATUS_SUCCESS) + { +- fnotice (stderr, "Preprocessed source stored into %s file," +- " please attach this to your bugreport.\n", *out_file); ++ const bool gcc_dump = has_deb_build_options ("gcc-ice", "nodump"); ++ ++ if (gcc_dump) ++ fnotice (stderr, ++ "Preprocessed source stored into %s file," ++ " please attach this to your bugreport.\n", ++ *out_file); ++ if (gcc_dump) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (*out_file)); ++ ++ sprintf (cmd, "/usr/bin/awk '{print \"%d:\", $0}' %s >&2", getpid (), ++ *out_file); ++ fprintf (stderr, "=== BEGIN GCC DUMP ===\n"); ++ fflush (stderr); ++ system (cmd); ++ fflush (stderr); ++ fprintf (stderr, "=== END GCC DUMP ===\n"); ++ fflush (stderr); ++ free (cmd); ++ } + /* Make sure it is not deleted. */ + free (*out_file); + *out_file = NULL; diff --git a/patches/gcc-m68k-no-fold-mem-offsets-doc.diff b/patches/gcc-m68k-no-fold-mem-offsets-doc.diff new file mode 100644 index 0000000..b95bec2 --- /dev/null +++ b/patches/gcc-m68k-no-fold-mem-offsets-doc.diff @@ -0,0 +1,16 @@ +From 6a616afb8dadcd33506001914f5ca6fa37749b6b Mon Sep 17 00:00:00 2001 +From: John Paul Adrian Glaubitz +Date: Sun, 8 Jun 2025 07:59:26 +0200 +Subject: [PATCH] Disable fold-mem-offsets, only applied for m68k + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -15255,6 +15255,8 @@ Try to eliminate add instructions by fol + + Enabled at levels @option{-O2}, @option{-O3}. + ++NOTE: On Debian/Ubuntu this is disabled by default on m68k-linux-gnu. ++ + @opindex fcprop-registers + @item -fcprop-registers + After register allocation and post-register allocation instruction splitting, diff --git a/patches/gcc-m68k-no-fold-mem-offsets.diff b/patches/gcc-m68k-no-fold-mem-offsets.diff new file mode 100644 index 0000000..56dffaf --- /dev/null +++ b/patches/gcc-m68k-no-fold-mem-offsets.diff @@ -0,0 +1,25 @@ +From 6a616afb8dadcd33506001914f5ca6fa37749b6b Mon Sep 17 00:00:00 2001 +From: John Paul Adrian Glaubitz +Date: Sun, 8 Jun 2025 07:59:26 +0200 +Subject: [PATCH] Disable fold-mem-offsets, only applied for m68k + +--- + gcc/common.opt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gcc/common.opt b/gcc/common.opt +index 0e50305dde8..e57dff18af7 100644 +--- a/src/gcc/common.opt ++++ b/src/gcc/common.opt +@@ -1295,7 +1295,7 @@ Common Var(flag_cprop_registers) Optimization + Perform a register copy-propagation optimization pass. + + ffold-mem-offsets +-Common Var(flag_fold_mem_offsets) Init(1) Optimization ++Common Var(flag_fold_mem_offsets) Init(0) Optimization + Fold instructions calculating memory offsets to the memory access instruction if possible. + + fcrossjumping +-- +2.49.0 + diff --git a/patches/gcc-multiarch.diff b/patches/gcc-multiarch.diff new file mode 100644 index 0000000..7a9cc84 --- /dev/null +++ b/patches/gcc-multiarch.diff @@ -0,0 +1,189 @@ +# DP: - Remaining multiarch patches, not yet submitted upstream. +# DP: - Add MULTIARCH_DIRNAME definitions for multilib configurations, +# DP: which are used for the non-multilib builds. + +2013-06-12 Matthias Klose + + * config/i386/t-linux64: Set MULTIARCH_DIRNAME. + * config.gcc (i[34567]86-*-linux* | x86_64-*-linux*): Prepend + i386/t-linux to $tmake_file; + set default ABI to N64 for mips64el. + * config/mips/t-linux64: Set MULTIARCH_DIRNAME. + * config/rs6000/t-linux64: Set MULTIARCH_DIRNAME. + * config/s390/t-linux64: Set MULTIARCH_DIRNAME. + * config/sparc/t-linux64: Set MULTIARCH_DIRNAME. + * src/gcc/config/mips/mips.h: (/usr)/lib as default path. + +--- a/src/gcc/config/sh/t-linux ++++ b/src/gcc/config/sh/t-linux +@@ -1,3 +1,11 @@ + MULTILIB_DIRNAMES= + MULTILIB_MATCHES= ++ ++ifneq (,$(findstring sh4,$(target))) ++MULTILIB_OSDIRNAMES = .:sh4-linux-gnu sh4_nofpu-linux-gnu:sh4-linux-gnu ++MULTIARCH_DIRNAME = $(call if_multiarch,sh4-linux-gnu) ++else ++MULTILIB_OSDIRNAMES = .:sh3-linux-gnu sh3_nofpu-linux-gnu:sh3-linux-gnu ++MULTIARCH_DIRNAME = $(call if_multiarch,sh3-linux-gnu) ++endif + MULTILIB_EXCEPTIONS=m1 mb/m1 m2a +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -27,3 +27,5 @@ MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -9,3 +9,5 @@ MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -31,6 +31,8 @@ MULTILIB_EXTRA_OPTS := + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) + MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) + ++MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) ++ + rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.cc + $(COMPILE) $< + $(POSTCOMPILE) +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -36,3 +36,13 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) + MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++ ++ifneq (,$(findstring x86_64,$(target))) ++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnux32) ++ else ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnu) ++ endif ++else ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu) ++endif +--- a/src/gcc/config/mips/t-linux64 ++++ b/src/gcc/config/mips/t-linux64 +@@ -18,24 +18,28 @@ + + MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64 + MULTILIB_DIRNAMES = n32 32 64 ++MIPS_R6 = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),r6) ++MIPS_32 = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),32) ++MIPS_ISA = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),isa) + MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el) + MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft) ++ + ifeq (yes,$(enable_multiarch)) + ifneq (,$(findstring gnuabi64,$(target))) + MULTILIB_OSDIRNAMES = \ +- ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +- ../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +- ../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) + else ifneq (,$(findstring gnuabin32,$(target))) + MULTILIB_OSDIRNAMES = \ +- ../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +- ../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +- ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) + else + MULTILIB_OSDIRNAMES = \ +- ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +- ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +- ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) + endif + else + MULTILIB_OSDIRNAMES = \ +@@ -43,3 +47,13 @@ else + ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ + ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) + endif ++ ++ifneq (,$(findstring abin32,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) ++else ++ifneq (,$(findstring abi64,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) ++endif ++endif +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -2683,7 +2683,8 @@ mips*-*-linux*) # Linux MIPS, either + extra_options="${extra_options} linux-android.opt" + case ${target} in + mipsisa32r6*) +- default_mips_arch=mips32r6 ++ with_arch_32="mips32r6" ++ with_arch_64="mips64r6" + ;; + mipsisa32r2*) + default_mips_arch=mips32r2 +@@ -2705,7 +2706,8 @@ mips*-*-linux*) # Linux MIPS, either + ;; + mipsisa64r6*-*-linux-gnuabi64) + default_mips_abi=64 +- default_mips_arch=mips64r6 ++ with_arch_32="mips32r6" ++ with_arch_64="mips64r6" + enable_mips_multilibs="yes" + ;; + mipsisa64r6*-*-linux*) +@@ -5971,7 +5973,7 @@ case ${target} in + ;; + i[34567]86-*-linux* | x86_64-*-linux*) + extra_objs="${extra_objs} gnu-property.o" +- tmake_file="$tmake_file i386/t-linux i386/t-gnu-property" ++ tmake_file="i386/t-linux $tmake_file i386/t-gnu-property" + ;; + i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) + tmake_file="$tmake_file i386/t-kfreebsd" +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -588,7 +588,7 @@ BUILD_SYSTEM_HEADER_DIR = `echo @BUILD_S + STMP_FIXINC = @STMP_FIXINC@ + + # Test to see whether exists in the system header files. +-LIMITS_H_TEST = [ -f $(BUILD_SYSTEM_HEADER_DIR)/limits.h ] ++LIMITS_H_TEST = [ -f $(BUILD_SYSTEM_HEADER_DIR)/limits.h -o -f $(BUILD_SYSTEM_HEADER_DIR)/$(MULTIARCH_DIRNAME)/limits.h ] + + # Directory for prefix to system directories, for + # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc. +--- a/src/gcc/config/aarch64/t-aarch64-linux ++++ b/src/gcc/config/aarch64/t-aarch64-linux +@@ -22,7 +22,7 @@ LIB1ASMSRC = aarch64/lib1funcs.asm + LIB1ASMFUNCS = _aarch64_sync_cache_range + + AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be) +-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) ++MULTILIB_OSDIRNAMES = mabi.lp64=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) + MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) + + MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32) +--- a/src/gcc/config/arc/t-multilib-linux ++++ b/src/gcc/config/arc/t-multilib-linux +@@ -23,3 +23,6 @@ MULTILIB_DIRNAMES = hs archs hs38 hs38_l + # Aliases: + MULTILIB_MATCHES += mcpu?arc700=mA7 + MULTILIB_MATCHES += mcpu?arc700=mARC700 ++ ++MULTILIB_OSDIRNAMES = ++MULTIARCH_DIRNAME = $(call if_multiarch,arc-linux-gnu) diff --git a/patches/gcc-multilib-multiarch.diff b/patches/gcc-multilib-multiarch.diff new file mode 100644 index 0000000..b9e293b --- /dev/null +++ b/patches/gcc-multilib-multiarch.diff @@ -0,0 +1,100 @@ +# DP: Don't auto-detect multilib osdirnames. + +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -25,7 +25,12 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring sparc64,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:sparc64-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:sparc-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:sparc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -7,7 +7,12 @@ + + MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring s390x,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:s390x-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:s390-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:s390-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -28,8 +28,13 @@ + MULTILIB_OPTIONS := m64/m32 + MULTILIB_DIRNAMES := 64 32 + MULTILIB_EXTRA_OPTS := ++ifneq (,$(findstring powerpc64,$(target))) ++MULTILIB_OSDIRNAMES := m64=../lib$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib32$(call if_multiarch,:powerpc-linux-gnu) ++else + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) +-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib$(call if_multiarch,:powerpc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) + +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -33,9 +33,19 @@ + comma=, + MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG)) + MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS))) ++ifneq (,$(findstring gnux32,$(target))) + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) +-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../lib$(call if_multiarch,:x86_64-linux-gnux32) ++else ifneq (,$(findstring x86_64,$(target))) ++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++else ++MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++endif + + ifneq (,$(findstring x86_64,$(target))) + ifneq (,$(findstring biarchx32.h,$(tm_include_list))) +--- a/src/gcc/config/rs6000/t-linux ++++ b/src/gcc/config/rs6000/t-linux +@@ -2,7 +2,7 @@ + # or soft-float. + ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float))) + ifneq (,$(findstring powerpc64,$(target))) +-MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES := .=../lib$(call if_multiarch,:powerpc64-linux-gnu) + else + MULTIARCH_DIRNAME := $(call if_multiarch,powerpc-linux-gnu) + endif +--- a/src/gcc/config/loongarch/t-linux ++++ b/src/gcc/config/loongarch/t-linux +@@ -16,9 +16,9 @@ + # along with GCC; see the file COPYING3. If not see + # . + +-MULTIOSDIR_lp64d := ../lib64$(call if_multiarch,:loongarch64-linux-gnu) +-MULTIOSDIR_lp64f := ../lib64/f32$(call if_multiarch,:loongarch64-linux-gnuf32) +-MULTIOSDIR_lp64s := ../lib64/sf$(call if_multiarch,:loongarch64-linux-gnusf) ++MULTIOSDIR_lp64d := ../lib$(call if_multiarch,:loongarch64-linux-gnu) ++MULTIOSDIR_lp64f := ../lib/f32$(call if_multiarch,:loongarch64-linux-gnuf32) ++MULTIOSDIR_lp64s := ../lib/sf$(call if_multiarch,:loongarch64-linux-gnusf) + + # Don't define MULTILIB_OSDIRNAMES if multilib is disabled. + ifeq ($(filter LA_DISABLE_MULTILIB,$(tm_defines)),) diff --git a/patches/gcc-no-multilib-dejagnu.diff b/patches/gcc-no-multilib-dejagnu.diff new file mode 100644 index 0000000..7fd33e1 --- /dev/null +++ b/patches/gcc-no-multilib-dejagnu.diff @@ -0,0 +1,61 @@ +# DP: Don't run the gnat and gm2 tests for multilibs, which are not built + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4598,7 +4598,12 @@ $(filter-out $(lang_checks_parallelized) + if [ -f $${rootme}/../expect/expect ] ; then \ + TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ + export TCL_LIBRARY ; fi ; \ +- $(RUNTEST) --tool $* $(RUNTESTFLAGS)) ++ case "$*" in \ ++ (gnat*|gm2*) rtflags=$$(printf '%s' '$(RUNTESTFLAGS)' | sed -E 's/,-m[a-z2-6=]+//g');; \ ++ (*) rtflags=$(RUNTESTFLAGS);; \ ++ esac; \ ++ echo "CHECK TARGET: $* -> $$rtflags"; \ ++ $(RUNTEST) --tool $* $$rtflags) + + $(patsubst %,%-subtargets,$(lang_checks)): check-%-subtargets: + @echo check-$* +@@ -4632,12 +4637,17 @@ check_p_subdirs=$(wordlist 1,$(check_p_c + # testsuites like objc or go. + $(lang_checks_parallelized): check-% : site.exp + -rm -rf $(TESTSUITEDIR)/$*-parallel +- @if [ -n "$(filter -j%, $(MFLAGS))" ]; then \ ++ @case "$*" in \ ++ (gnat*|gm2*) rtflags=$$(printf '%s' '$(RUNTESTFLAGS)' | sed -E 's/,-m[a-z2-6=]+//g');; \ ++ (*) rtflags=$(RUNTESTFLAGS);; \ ++ esac; \ ++ echo "CHECK TARGET: $* -> $$rtflags"; \ ++ if [ -n "$(filter -j%, $(MFLAGS))" ]; then \ + test -d $(TESTSUITEDIR) || mkdir $(TESTSUITEDIR) || true; \ + test -d $(TESTSUITEDIR)/$*-parallel || mkdir $(TESTSUITEDIR)/$*-parallel || true; \ + GCC_RUNTEST_PARALLELIZE_DIR=`${PWD_COMMAND}`/$(TESTSUITEDIR)/$(check_p_tool)-parallel ; \ + export GCC_RUNTEST_PARALLELIZE_DIR ; \ +- $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$(RUNTESTFLAGS)" \ ++ $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$$rtflags" \ + EXPECT=$(EXPECT) \ + check-parallel-$* \ + $(patsubst %,check-parallel-$*_%, $(check_p_subdirs)); \ +@@ -4656,7 +4666,7 @@ $(lang_checks_parallelized): check-% : s + > $(TESTSUITEDIR)/$*/$*.log; \ + rm -rf $(TESTSUITEDIR)/$*-parallel || true; \ + else \ +- $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$(RUNTESTFLAGS)" \ ++ $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$$rtflags" \ + EXPECT=$(EXPECT) \ + check_$*_parallelize= check-parallel-$*; \ + fi +@@ -4682,7 +4692,12 @@ check-parallel-% : site.exp + TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ + export TCL_LIBRARY ; \ + fi ; \ +- $(RUNTEST) --tool $(check_p_tool) $(RUNTESTFLAGS); \ ++ case "$*" in \ ++ (gnat*|gm2*) rtflags=$$(printf '%s' '$(RUNTESTFLAGS)' | sed -E 's/,-m[a-z2-6=]+//g');; \ ++ (*) rtflags=$(RUNTESTFLAGS);; \ ++ esac; \ ++ echo "CHECK TARGET: $* -> $$rtflags"; \ ++ $(RUNTEST) --tool $(check_p_tool) $$rtflags; \ + if [ -n "$$GCC_RUNTEST_PARALLELIZE_DIR" ] ; then \ + touch $${rootme}/$(TESTSUITEDIR)/$(check_p_tool)-parallel/finished; \ + fi ; \ diff --git a/patches/gcc-riscv-extensions.diff b/patches/gcc-riscv-extensions.diff new file mode 100644 index 0000000..8408afc --- /dev/null +++ b/patches/gcc-riscv-extensions.diff @@ -0,0 +1,164 @@ +From fbde53989e4df052c68ddf83fe1a9ae4e093ba47 Mon Sep 17 00:00:00 2001 +From: Dongyan Chen +Date: Mon, 12 May 2025 17:19:24 +0800 +Subject: [PATCH 1/1] RISC-V: Minimal support for ssnpm, smnpm and smmpm + extensions. + +This patch support ssnpm, smnpm, smmpm, sspm and supm extensions[1]. +To enable GCC to recognize and process ssnpm, smnpm, smmpm, sspm and +supm extensions correctly at compile time. + +[1]https://github.com/riscv/riscv-j-extension/blob/master/zjpm/instructions.adoc + +Changes for v5: +- Fix the testsuite error in arch-50.c. +Changes for v4: +- Fix the code based on the commit id 9b13bea07706a7cae0185f8a860d67209308c050. +Changes for v3: +- Fix the error messages in gcc/testsuite/gcc.target/riscv/arch-46.c +Changes for v2: +- Add the sspm and supm extensions. +- Add the check_conflict_ext function to check the compatibility of ssnpm, smnpm, smmpm, sspm and supm extensions. +- Add the test cases for ssnpm, smnpm, smmpm, sspm and supm extensions. + +gcc/ChangeLog: + + * common/config/riscv/riscv-common.cc + (riscv_subset_list::check_conflict_ext): New extension. + * config/riscv/riscv.opt: Ditto. + +gcc/testsuite/ChangeLog: + + * gcc.target/riscv/arch-ss-1.c: New test. + * gcc.target/riscv/arch-ss-2.c: New test. + +Signed-off-by: Heinrich Schuchardt +--- + gcc/common/config/riscv/riscv-common.cc | 36 ++++++++++++++++++++++ + gcc/config/riscv/riscv.opt | 19 ++++++++++++ + gcc/testsuite/gcc.target/riscv/arch-ss-1.c | 5 +++ + gcc/testsuite/gcc.target/riscv/arch-ss-2.c | 15 +++++++++ + 4 files changed, 75 insertions(+) + create mode 100644 gcc/testsuite/gcc.target/riscv/arch-ss-1.c + create mode 100644 gcc/testsuite/gcc.target/riscv/arch-ss-2.c + +--- a/src/gcc/common/config/riscv/riscv-common.cc ++++ b/src/gcc/common/config/riscv/riscv-common.cc +@@ -227,6 +227,10 @@ static const riscv_implied_info_t riscv_implied_info[] = + {"ssstateen", "zicsr"}, + {"sstc", "zicsr"}, + ++ {"ssnpm", "zicsr"}, ++ {"smnpm", "zicsr"}, ++ {"smmpm", "zicsr"}, ++ + {"xsfvcp", "zve32x"}, + + {NULL, NULL} +@@ -409,6 +413,12 @@ static const struct riscv_ext_version riscv_ext_version_table[] = + {"ssstateen", ISA_SPEC_CLASS_NONE, 1, 0}, + {"sstc", ISA_SPEC_CLASS_NONE, 1, 0}, + ++ {"ssnpm", ISA_SPEC_CLASS_NONE, 1, 0}, ++ {"smnpm", ISA_SPEC_CLASS_NONE, 1, 0}, ++ {"smmpm", ISA_SPEC_CLASS_NONE, 1, 0}, ++ {"sspm", ISA_SPEC_CLASS_NONE, 1, 0}, ++ {"supm", ISA_SPEC_CLASS_NONE, 1, 0}, ++ + {"svinval", ISA_SPEC_CLASS_NONE, 1, 0}, + {"svnapot", ISA_SPEC_CLASS_NONE, 1, 0}, + {"svpbmt", ISA_SPEC_CLASS_NONE, 1, 0}, +@@ -1309,6 +1319,26 @@ riscv_subset_list::check_conflict_ext () + error_at (m_loc, "%<-march=%s%>: zcf extension supports in rv32 only", + m_arch); + ++ if (lookup ("ssnpm") && m_xlen == 32) ++ error_at (m_loc, "%<-march=%s%>: ssnpm extension supports in rv64 only", ++ m_arch); ++ ++ if (lookup ("smnpm") && m_xlen == 32) ++ error_at (m_loc, "%<-march=%s%>: smnpm extension supports in rv64 only", ++ m_arch); ++ ++ if (lookup ("smmpm") && m_xlen == 32) ++ error_at (m_loc, "%<-march=%s%>: smmpm extension supports in rv64 only", ++ m_arch); ++ ++ if (lookup ("sspm") && m_xlen == 32) ++ error_at (m_loc, "%<-march=%s%>: sspm extension supports in rv64 only", ++ m_arch); ++ ++ if (lookup ("supm") && m_xlen == 32) ++ error_at (m_loc, "%<-march=%s%>: supm extension supports in rv64 only", ++ m_arch); ++ + if (lookup ("zfinx") && lookup ("f")) + error_at (m_loc, + "%<-march=%s%>: z*inx conflicts with floating-point " +@@ -1736,6 +1766,12 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] = + RISCV_EXT_FLAG_ENTRY ("svnapot", x_riscv_sv_subext, MASK_SVNAPOT), + RISCV_EXT_FLAG_ENTRY ("svvptc", x_riscv_sv_subext, MASK_SVVPTC), + ++ RISCV_EXT_FLAG_ENTRY ("ssnpm", x_riscv_ss_subext, MASK_SSNPM), ++ RISCV_EXT_FLAG_ENTRY ("smnpm", x_riscv_sm_subext, MASK_SMNPM), ++ RISCV_EXT_FLAG_ENTRY ("smmpm", x_riscv_sm_subext, MASK_SMMPM), ++ RISCV_EXT_FLAG_ENTRY ("sspm", x_riscv_ss_subext, MASK_SSPM), ++ RISCV_EXT_FLAG_ENTRY ("supm", x_riscv_su_subext, MASK_SUPM), ++ + RISCV_EXT_FLAG_ENTRY ("ztso", x_riscv_ztso_subext, MASK_ZTSO), + + RISCV_EXT_FLAG_ENTRY ("xcvmac", x_riscv_xcv_subext, MASK_XCVMAC), +--- a/src/gcc/config/riscv/riscv.opt ++++ b/src/gcc/config/riscv/riscv.opt +@@ -472,6 +472,25 @@ Mask(SVNAPOT) Var(riscv_sv_subext) + + Mask(SVVPTC) Var(riscv_sv_subext) + ++TargetVariable ++int riscv_ss_subext ++ ++Mask(SSNPM) Var(riscv_ss_subext) ++ ++Mask(SSPM) Var(riscv_ss_subext) ++ ++TargetVariable ++int riscv_sm_subext ++ ++Mask(SMNPM) Var(riscv_sm_subext) ++ ++Mask(SMMPM) Var(riscv_sm_subext) ++ ++TargetVariable ++int riscv_su_subext ++ ++Mask(SUPM) Var(riscv_su_subext) ++ + TargetVariable + int riscv_ztso_subext + +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/arch-ss-1.c +@@ -0,0 +1,5 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=rv64gc_ssnpm_smnpm_smmpm_sspm_supm -mabi=lp64" } */ ++int foo() ++{ ++} +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/arch-ss-2.c +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm -mabi=ilp32d" } */ ++int foo() ++{ ++} ++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': ssnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': smnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': smmpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': sspm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': supm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': ssnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': smnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': smmpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': sspm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': supm extension supports in rv64 only" "" { target *-*-* } 0 } */ diff --git a/patches/gcc-search-prefixed-as-ld.diff b/patches/gcc-search-prefixed-as-ld.diff new file mode 100644 index 0000000..c2a7f0f --- /dev/null +++ b/patches/gcc-search-prefixed-as-ld.diff @@ -0,0 +1,128 @@ +# DP: Search for the -as / -ld before serching for as / ld. + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -1734,6 +1734,9 @@ struct path_prefix + + static struct path_prefix exec_prefixes = { 0, 0, "exec" }; + ++/* Copied from collect2.cc, a prefix list from the PATH variable. */ ++static struct path_prefix path_prefixes; ++ + /* List of prefixes to try when looking for startup (crt0) files. */ + + static struct path_prefix startfile_prefixes = { 0, 0, "startfile" }; +@@ -3252,6 +3255,8 @@ find_a_file (const struct path_prefix *p + static char* + find_a_program (const char *name) + { ++ char *progname; ++ + /* Do not search if default matches query. */ + + #ifdef DEFAULT_ASSEMBLER +@@ -3269,7 +3274,37 @@ find_a_program (const char *name) + return xstrdup (DEFAULT_DSYMUTIL); + #endif + +- return find_a_file (&exec_prefixes, name, X_OK, false); ++ progname = find_a_file (&exec_prefixes, name, X_OK, false); ++ if (progname) ++ { ++#if 0 ++ fprintf (stderr, "find_a_program: %s --> %s\n", name, progname); ++#endif ++ return progname; ++ } ++ ++#ifndef ACCEL_COMPILER ++#ifndef CROSS_DIRECTORY_STRUCTURE ++ /* Search for the -as / -ld instead of as / ld in PATH. ++ Doing that after the as / ld lookups, because these are used unversioned ++ during the build. */ ++ if (! strcmp (name, "as") || ! strcmp (name, "ld")) ++ { ++ char *prefixed_name = XNEWVEC (char, strlen("as") + 2 ++ + strlen (DEFAULT_REAL_TARGET_MACHINE)); ++ strcpy (prefixed_name, DEFAULT_REAL_TARGET_MACHINE); ++ strcat (prefixed_name, "-"); ++ strcat (prefixed_name, name); ++ /* Lookup in PATH, not exec_prefixes. */ ++ progname = find_a_file (&path_prefixes, prefixed_name, X_OK, false); ++#if 0 ++ fprintf (stderr, "find_a_program: %s --> %s --> %s\n", ++ name, prefixed_name, progname); ++#endif ++ } ++#endif ++#endif ++ return progname; + } + + /* Ranking of prefixes in the sort list. -B prefixes are put before +@@ -3400,6 +3435,56 @@ add_sysrooted_hdrs_prefix (struct path_p + require_machine_suffix, os_multilib); + } + ++/* Next two functions copied from file-find.cc, which defines its own ++ find_a_file function. */ ++ ++/* Take the value of the environment variable ENV, break it into a path, and ++ add of the entries to PPREFIX. */ ++ ++static void ++prefix_from_string (const char *p, struct path_prefix *pprefix) ++{ ++ const char *startp, *endp; ++ char *nstore = XNEWVEC (char, strlen (p) + 3); ++ ++ startp = endp = p; ++ while (1) ++ { ++ if (*endp == PATH_SEPARATOR || *endp == 0) ++ { ++ strncpy (nstore, startp, endp-startp); ++ if (endp == startp) ++ { ++ strcpy (nstore, "./"); ++ } ++ else if (! IS_DIR_SEPARATOR (endp[-1])) ++ { ++ nstore[endp-startp] = DIR_SEPARATOR; ++ nstore[endp-startp+1] = 0; ++ } ++ else ++ nstore[endp-startp] = 0; ++ ++ add_prefix (pprefix, nstore, "path", PREFIX_PRIORITY_LAST, 0, 0); ++ if (*endp == 0) ++ break; ++ endp = startp = endp + 1; ++ } ++ else ++ endp++; ++ } ++ free (nstore); ++} ++ ++static void ++prefix_from_env (const char *e, struct path_prefix *pprefix) ++{ ++ const char *const p = env.get (e); ++ ++ if (p) ++ prefix_from_string (p, pprefix); ++} ++ + + /* Execute the command specified by the arguments on the current line of spec. + When using pipes, this includes several piped-together commands +@@ -8436,6 +8521,8 @@ driver::main (int argc, char **argv) + bool early_exit; + + set_progname (argv[0]); ++ /* Extract PATH into our path_prefixes list. */ ++ prefix_from_env ("PATH", &path_prefixes); + expand_at_files (&argc, &argv); + decode_argv (argc, const_cast (argv)); + global_initializations (); diff --git a/patches/gcc-target-include-asm.diff b/patches/gcc-target-include-asm.diff new file mode 100644 index 0000000..b761e30 --- /dev/null +++ b/patches/gcc-target-include-asm.diff @@ -0,0 +1,13 @@ +# DP: Search $(builddir)/sys-include for the asm header files + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3828,7 +3828,7 @@ fi + # being built; programs in there won't even run. + if test "${build}" = "${host}" && test -d ${srcdir}/gcc; then + # Search for pre-installed headers if nothing else fits. +- FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include' ++ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -isystem $(CURDIR)/sys-include' + fi + + if test "x${use_gnu_ld}" = x && diff --git a/patches/gcc-textdomain.diff b/patches/gcc-textdomain.diff new file mode 100644 index 0000000..79b4341 --- /dev/null +++ b/patches/gcc-textdomain.diff @@ -0,0 +1,86 @@ +# DP: Set gettext's domain and textdomain to the versioned package name. + +--- a/src/gcc/intl.cc ++++ b/src/gcc/intl.cc +@@ -55,8 +55,8 @@ gcc_init_libintl (void) + setlocale (LC_ALL, ""); + #endif + +- (void) bindtextdomain ("gcc", LOCALEDIR); +- (void) textdomain ("gcc"); ++ (void) bindtextdomain ("gcc-15", LOCALEDIR); ++ (void) textdomain ("gcc-15"); + + /* Opening quotation mark. */ + open_quote = _("`"); +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4774,8 +4774,8 @@ install-po: + dir=$(localedir)/$$lang/LC_MESSAGES; \ + echo $(mkinstalldirs) $(DESTDIR)$$dir; \ + $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-15.mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-15.mo; \ + done + + # Rule for regenerating the message template (gcc.pot). +--- a/src/libcpp/init.cc ++++ b/src/libcpp/init.cc +@@ -210,7 +210,7 @@ init_library (void) + init_trigraph_map (); + + #ifdef ENABLE_NLS +- (void) bindtextdomain (PACKAGE, LOCALEDIR); ++ (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR); + #endif + } + } +--- a/src/libcpp/system.h ++++ b/src/libcpp/system.h +@@ -284,7 +284,7 @@ extern int errno; + #endif + + #ifndef _ +-# define _(msgid) dgettext (PACKAGE, msgid) ++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid) + #endif + + #ifndef N_ +--- a/src/libcpp/Makefile.in ++++ b/src/libcpp/Makefile.in +@@ -49,6 +49,7 @@ LDFLAGS = @LDFLAGS@ + LIBICONV = @LIBICONV@ + LIBINTL = @LIBINTL@ + PACKAGE = @PACKAGE@ ++PACKAGE_SUFFIX = -15 + RANLIB = @RANLIB@ + SHELL = @SHELL@ + USED_CATALOGS = @USED_CATALOGS@ +@@ -73,11 +74,12 @@ depcomp = $(SHELL) $(srcdir)/../depcomp + + INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \ + -I$(srcdir)/include ++DEBCPPFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\" + + ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG) \ +- $(CET_HOST_FLAGS) ++ $(CET_HOST_FLAGS) $(DEBCPPFLAGS) + ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(NOEXCEPTION_FLAGS) $(INCLUDES) \ +- $(CPPFLAGS) $(PICFLAG) $(CET_HOST_FLAGS) ++ $(CPPFLAGS) $(PICFLAG) $(CET_HOST_FLAGS) $(DEBCPPFLAGS) + + # The name of the compiler to use. + COMPILER = $(CXX) +@@ -166,8 +168,8 @@ install-strip install: all installdirs + else continue; \ + fi; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ + done + + mostlyclean: diff --git a/patches/gcc-verbose-lto-link.diff b/patches/gcc-verbose-lto-link.diff new file mode 100644 index 0000000..eb8d14c --- /dev/null +++ b/patches/gcc-verbose-lto-link.diff @@ -0,0 +1,13 @@ +# DP: Prefix LLINKER with /usr/bin/time -v + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -314,7 +314,7 @@ LINKER += $(LD_PICFLAG) + ifeq (@DO_LINK_MUTEX@,true) + LLINKER = $(SHELL) $(srcdir)/lock-and-run.sh linkfe.lck $(LINKER) + else +-LLINKER = $(LINKER) ++LLINKER = /usr/bin/time -v $(LINKER) + endif + + THIN_ARCHIVE_SUPPORT = @thin_archive_support@ diff --git a/patches/gcc-vhdl.diff b/patches/gcc-vhdl.diff new file mode 100644 index 0000000..feac12b --- /dev/null +++ b/patches/gcc-vhdl.diff @@ -0,0 +1,15 @@ +# DP: Make vhdl known to the PPC backend. See +# DP: https://github.com/ghdl/ghdl/blob/master/doc/development/building/GCC.rst + +--- a/src/gcc/config/rs6000/rs6000-logue.cc ++++ b/src/gcc/config/rs6000/rs6000-logue.cc +@@ -5344,7 +5344,8 @@ rs6000_output_function_epilogue (FILE *f + || ! strcmp (language_string, "GNU D") + || ! strcmp (language_string, "GNU Rust") + || ! strcmp (language_string, "GNU Algol 68") +- || ! strcmp (language_string, "libgccjit")) ++ || ! strcmp (language_string, "libgccjit") ++ || ! strcmp (language_string, "vhdl")) + i = 0; + else if (! strcmp (language_string, "GNU F77") + || lang_GNU_Fortran ()) diff --git a/patches/gccrs-bootstrap-mipsel.diff b/patches/gccrs-bootstrap-mipsel.diff new file mode 100644 index 0000000..a26e861 --- /dev/null +++ b/patches/gccrs-bootstrap-mipsel.diff @@ -0,0 +1,12 @@ +# DP: Ignore gccrs bootstrap comparison failures on mipsel. + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -4219,6 +4219,7 @@ compare_exclusions="$compare_exclusions + compare_exclusions="$compare_exclusions | gcc/cobol/parse\$(objext)" + case "$target" in + hppa*64*-*-hpux*) ;; ++ mipsel-*linux-gnu) compare_exclusions="$compare_exclusions | gcc/rust/rust-macro-builtins.o | gcc/rust/rust-session-manager.o | gcc/rust/rust-cfg-parser.o | gcc/rust/rust-lex.o" ;; + powerpc*-ibm-aix*) compare_exclusions="$compare_exclusions | *libgomp*\$(objext)" ;; + esac + AC_SUBST(compare_exclusions) diff --git a/patches/gdc-dynamic-link-phobos.diff b/patches/gdc-dynamic-link-phobos.diff new file mode 100644 index 0000000..71e7c58 --- /dev/null +++ b/patches/gdc-dynamic-link-phobos.diff @@ -0,0 +1,17 @@ +# DP: Dynamically link the phobos library. + +--- a/src/gcc/d/d-spec.cc ++++ b/src/gcc/d/d-spec.cc +@@ -430,9 +430,9 @@ lang_specific_driver (cl_decoded_option + /* Add `-lgphobos' if we haven't already done so. */ + if (phobos_library != PHOBOS_NOLINK) + { +- /* Default to static linking. */ +- if (phobos_library != PHOBOS_DYNAMIC) +- phobos_library = PHOBOS_STATIC; ++ /* Default to dynamic linking. */ ++ if (phobos_library != PHOBOS_STATIC) ++ phobos_library = PHOBOS_DYNAMIC; + + #ifdef HAVE_LD_STATIC_DYNAMIC + if (phobos_library == PHOBOS_STATIC && !static_link) diff --git a/patches/gdc-multiarch.diff b/patches/gdc-multiarch.diff new file mode 100644 index 0000000..1925e1a --- /dev/null +++ b/patches/gdc-multiarch.diff @@ -0,0 +1,17 @@ +# DP: Set the D target include directory to a multiarch location. + +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -61,7 +61,11 @@ + $(D_DMD_H) + + +-gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) ++ifneq (,$(MULTIARCH_DIRNAME)) ++ gcc_d_target_include_dir = /usr/include/$(MULTIARCH_DIRNAME)/d/$(version) ++else ++ gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) ++endif + + # Name of phobos library + D_LIBPHOBOS = -DLIBPHOBOS=\"gphobos2\" diff --git a/patches/gdc-texinfo.diff b/patches/gdc-texinfo.diff new file mode 100644 index 0000000..a024daf --- /dev/null +++ b/patches/gdc-texinfo.diff @@ -0,0 +1,53 @@ +# DP: Add macros for the gdc texinfo documentation. + +--- a/src/gcc/d/gdc.texi ++++ b/src/gcc/d/gdc.texi +@@ -45,6 +45,22 @@ man page gfdl(7). + @insertcopying + @end ifinfo + ++@macro versionsubtitle ++@ifclear DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} ++@end ifclear ++@ifset DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} (pre-release) ++@end ifset ++@ifset VERSION_PACKAGE ++@sp 1 ++@subtitle @value{VERSION_PACKAGE} ++@end ifset ++@c Even if there are no authors, the second titlepage line should be ++@c forced to the bottom of the page. ++@vskip 0pt plus 1filll ++@end macro ++ + @titlepage + @title The GNU D Compiler + @versionsubtitle +@@ -123,6 +139,25 @@ This manual only documents the options s + * Developer Options:: Options useful for developers of gdc + @end menu + ++@macro gcctabopt{body} ++@code{\body\} ++@end macro ++@macro gccoptlist{body} ++@smallexample ++\body\ ++@end smallexample ++@end macro ++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; ++@c they get lost at some point in handling the macro. But if @macro is ++@c used here rather than @alias, it produces double line breaks. ++@iftex ++@alias gol = * ++@end iftex ++@ifnottex ++@macro gol ++@end macro ++@end ifnottex ++ + @c man begin OPTIONS + + @node Input and Output files diff --git a/patches/git-doc-updates.diff b/patches/git-doc-updates.diff new file mode 100644 index 0000000..9fc9d84 --- /dev/null +++ b/patches/git-doc-updates.diff @@ -0,0 +1,7 @@ +# DP: updates from the 15 branch upto 20260613 (documentation). + +LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ + 4db0e8df15bef836558857c291c323add11d035c 57cdb9b2ff52074f585c2537aff0e62e4ecadeb7 \ + | awk '/^diff .*\.texi/ {skip=0; print; next} /^diff / {skip=1; next} skip==0' \ + | grep -v -E '^(diff|index)' + diff --git a/patches/git-updates.diff b/patches/git-updates.diff new file mode 100644 index 0000000..2b10d50 --- /dev/null +++ b/patches/git-updates.diff @@ -0,0 +1,672 @@ +# DP: updates from the 15 branch upto 20260613 (57cdb9b2ff5). + +LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ + 4db0e8df15bef836558857c291c323add11d035c 57cdb9b2ff52074f585c2537aff0e62e4ecadeb7 \ + | awk '/^diff .*\.texi/ {skip=1; next} /^diff / { skip=0 } skip==0' \ + | grep -v -E '^(diff|index)' + +--- a/src/gcc/ChangeLog ++++ b/src/gcc/ChangeLog +@@ -1,3 +1,17 @@ ++2026-06-12 Ramin Moussavi ++ ++ * config/microblaze/microblaze.h (DWARF_ALT_FRAME_RETURN_COLUMN): ++ Define. ++ ++2026-06-12 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-06-11 Georg-Johann Lay ++ ++ PR target/125751 ++ * config/avr/avr.cc (avr_out_fract): Fix too small sequence ++ lengths in avr_asm_len calls. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/gcc/DATESTAMP ++++ b/src/gcc/DATESTAMP +@@ -1 +1 @@ +-20260612 ++20260613 +--- a/src/gcc/config/avr/avr.cc ++++ b/src/gcc/config/avr/avr.cc +@@ -10536,7 +10536,7 @@ avr_out_fract (rtx_insn *insn, rtx operands[], bool intsigned, int *plen) + { + avr_asm_len ("clr __tmp_reg__" CR_TAB + "sbrc %1,0" CR_TAB +- "dec __tmp_reg__", xop, plen, 1); ++ "dec __tmp_reg__", xop, plen, 3); + sn = src.regno; + if (sn < s0) + { +@@ -10551,7 +10551,7 @@ avr_out_fract (rtx_insn *insn, rtx operands[], bool intsigned, int *plen) + avr_asm_len ("clt" CR_TAB + "bld __tmp_reg__,7" CR_TAB + "adc %0,__tmp_reg__", +- &all_regs_rtx[s0], plen, 1); ++ &all_regs_rtx[s0], plen, 3); + else + avr_asm_len ("lsr __tmp_reg" CR_TAB + "add %0,__tmp_reg__", +@@ -10750,8 +10750,8 @@ avr_out_fract (rtx_insn *insn, rtx operands[], bool intsigned, int *plen) + xop[2] = all_regs_rtx[s0]; + if (!lsb_in_tmp_reg && !MAY_CLOBBER (s0)) + avr_asm_len ("mov __tmp_reg__,%2", xop, plen, 1); +- avr_asm_len ("tst %0" CR_TAB "brpl 0f", +- &all_regs_rtx[src.regno_msb], plen, 2); ++ avr_asm_len ("tst %0" CR_TAB ++ "brpl 0f", &all_regs_rtx[src.regno_msb], plen, 2); + if (!lsb_in_tmp_reg) + { + unsigned sn = src.regno; +--- a/src/gcc/config/microblaze/microblaze.h ++++ b/src/gcc/config/microblaze/microblaze.h +@@ -176,6 +176,14 @@ extern enum pipeline_type microblaze_pipe; + #define DWARF_FRAME_RETURN_COLUMN \ + (GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM) + ++/* Signal frames (config/microblaze/linux-unwind.h) record the ++ interrupted PC in DWARF column 36, one past the hard registers, ++ because column 15 must keep the interrupted r15. Declaring it as ++ the alternate return column makes init_dwarf_reg_size_table size ++ it; otherwise _Unwind_GetGR aborts when unwinding through a signal ++ frame, such as during pthread cancellation. */ ++#define DWARF_ALT_FRAME_RETURN_COLUMN 36 ++ + /* Initial state of return address on entry to func = R15. + Actually, the RA is at R15+8, but gcc doesn't know how + to generate this. +--- a/src/gcc/fortran/ChangeLog ++++ b/src/gcc/fortran/ChangeLog +@@ -1,3 +1,13 @@ ++2026-06-12 Harald Anlauf ++ ++ Backported from master: ++ 2026-06-06 Harald Anlauf ++ ++ PR fortran/125606 ++ * trans-intrinsic.cc (gfc_conv_intrinsic_loc): When the argument ++ of LOC() is not scalar or known to be simply contiguous, simply ++ take the address of the argument array's first element. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/gcc/fortran/trans-intrinsic.cc ++++ b/src/gcc/fortran/trans-intrinsic.cc +@@ -9606,9 +9606,15 @@ gfc_conv_intrinsic_loc (gfc_se * se, gfc_expr * expr) + gfc_add_data_component (arg_expr); + gfc_conv_expr_reference (se, arg_expr); + } +- else ++ else if (gfc_is_simply_contiguous (arg_expr, false, false)) + gfc_conv_array_parameter (se, arg_expr, true, NULL, NULL, NULL); ++ else ++ { ++ gfc_conv_expr_descriptor (se, arg_expr); ++ se->expr = gfc_conv_descriptor_data_get (se->expr); ++ } + se->expr = convert (gfc_get_int_type (gfc_index_integer_kind), se->expr); ++ se->expr = gfc_evaluate_now (se->expr, &se->pre); + + /* Create a temporary variable for loc return value. Without this, + we get an error an ICE in gcc/expr.cc(expand_expr_addr_expr_1). */ +--- a/src/gcc/testsuite/ChangeLog ++++ b/src/gcc/testsuite/ChangeLog +@@ -1,3 +1,19 @@ ++2026-06-12 Harald Anlauf ++ ++ Backported from master: ++ 2026-06-06 Harald Anlauf ++ ++ PR fortran/125606 ++ * gfortran.dg/loc_3.f90: New test. ++ ++2026-06-12 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-06-11 Georg-Johann Lay ++ ++ PR target/125752 ++ * gcc.target/avr/torture/fx-to-double.c: New test. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/avr/torture/fx-to-double.c +@@ -0,0 +1,88 @@ ++/* { dg-do run { target { ! avr_tiny } } } */ ++/* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */ ++ ++typedef long double DD; ++ ++typedef long long _Fract dq_t; ++typedef long long _Accum ta_t; ++typedef long _Accum da_t; ++typedef unsigned long long _Fract udq_t; ++typedef unsigned long long _Accum uta_t; ++typedef unsigned long _Accum uda_t; ++ ++#define NI __attribute__((noipa)) ++ ++#define MK_CONV(T) \ ++ NI DD T##2d (T##_t x) \ ++ { \ ++ __asm ("" : "+r" (x)); \ ++ return (DD) x; \ ++ } \ ++ \ ++ NI T##_t d2##T (DD x) \ ++ { \ ++ __asm ("" : "+r" (x)); \ ++ return (T##_t) x; \ ++ } ++ ++ ++MK_CONV (da) ++MK_CONV (ta) ++MK_CONV (dq) ++ ++MK_CONV (uda) ++MK_CONV (uta) ++MK_CONV (udq) ++ ++#define TEST(T) \ ++ do { \ ++ T##_t fx = d2##T (x); \ ++ DD y = T##2d (fx); \ ++ if (y != x) \ ++ __builtin_exit (__LINE__); \ ++ } while (0) ++ ++ ++NI void test_s (DD x) ++{ ++ TEST (da); ++ TEST (ta); ++ ++ if (x < 1.0L && x >= -1.0L) ++ TEST (dq); ++} ++ ++ ++NI void test_u (long double x) ++{ ++ TEST (uda); ++ TEST (uta); ++ ++ if (x < 1.0L) ++ TEST (udq); ++} ++ ++void test (DD x) ++{ ++ if (x >= 0) ++ test_u (x); ++ ++ test_s (x); ++} ++ ++int main (void) ++{ ++ test (+0.0L); ++ test (-0.0L); ++ ++ test (+1.0L); ++ test (-1.0L); ++ ++ test (-0x0.cafe123p0); ++ test (+0x0.cafe123p0); ++ ++ test (+0x1234.cafe123p0); ++ test (-0x1234.cafe123p0); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/loc_3.f90 +@@ -0,0 +1,36 @@ ++! { dg-do compile } ++! { dg-additional-options "-O1" } ++! ++! PR fortran/125606 ++! ++! Derived from Fujitsu testsuite ++! Reported by David Binderman ++ ++module m ++ implicit none ++ type ty ++ class(*), allocatable :: c1(:) ++ end type ty ++ type tt ++ class(*), allocatable :: node1(:) ++ end type tt ++ type,extends(tt)::tte ++ class(*), allocatable :: c2e(:) ++ end type tte ++contains ++ subroutine put_addr ++ class(*), allocatable :: t(:) ++ integer :: unit ++ select type (t) ++ class is (tt) ++ select type (p=>t(2)%node1) ++ class is (ty) ++ write (unit) loc(p(2)%c1) ++ end select ++ select type (t) ++ type is (tte) ++ write (7) loc(t(2)%c2e) ++ end select ++ end select ++ end subroutine put_addr ++end module m +--- a/src/libgcc/ChangeLog ++++ b/src/libgcc/ChangeLog +@@ -1,3 +1,8 @@ ++2026-06-12 Ramin Moussavi ++ ++ * config.host (microblaze*-linux*): Set md_unwind_header. ++ * config/microblaze/linux-unwind.h: New file. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/libgcc/config.host ++++ b/src/libgcc/config.host +@@ -1052,6 +1052,7 @@ mcore-*-elf) + ;; + microblaze*-linux*) + tmake_file="${tmake_file} microblaze/t-microblaze t-fdpbit t-slibgcc-libgcc" ++ md_unwind_header=microblaze/linux-unwind.h + ;; + microblaze*-*-elf) + tmake_file="${tmake_file} microblaze/t-microblaze t-fdpbit" +--- a/src/libgcc/config/avr/libf7/ChangeLog ++++ b/src/libgcc/config/avr/libf7/ChangeLog +@@ -1,3 +1,22 @@ ++2026-06-12 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-06-11 Georg-Johann Lay ++ ++ PR target/125752 ++ * libf7-asm.sx (ufx64_to_d, d_to_fx64): New DEFUNs. ++ (__fractdadf, __fractudadf, __fracttadf, __fractutadf) ++ (__fractdqdf, __fractudqdf): New _DEFUNs. ++ * libf7-common.mk (F7_ASM_PARTS) Add: fx2D, D2fx, ++ dq2D, udq2D, da2D, uda2D, ta2D uta2D. ++ (F7F): Add d_to_fx64, ufx64_to_d, sfx64_to_d. ++ * libf7.c (d_to_ufx, d_to_sfx): New protos. ++ (__fractdfda, __fractdfuda, __fractdfta, __fractdfuta) ++ (__fractdfdq, __fractdfudq): New modules. ++ * t-libf7 (LIBF7_DF_CONV): Add fractdfda, ++ fractdfta, fractdfdq, fractdfuda, fractdfuta, fractdfudq. ++ * f7-renames.h: Rebuild. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/libgcc/config/avr/libf7/f7-renames.h ++++ b/src/libgcc/config/avr/libf7/f7-renames.h +@@ -222,6 +222,9 @@ + #define f7_sqrt16_floor_asm __f7_sqrt16_floor_asm + #define f7_lshrdi3_asm __f7_lshrdi3_asm + #define f7_ashldi3_asm __f7_ashldi3_asm ++#define f7_d_to_fx64_asm __f7_d_to_fx64_asm ++#define f7_ufx64_to_d_asm __f7_ufx64_to_d_asm ++#define f7_sfx64_to_d_asm __f7_sfx64_to_d_asm + #define f7_class_D_asm __f7_class_D_asm + #define f7_call_ddd_asm __f7_call_ddd_asm + #define f7_call_xdd_asm __f7_call_xdd_asm +--- a/src/libgcc/config/avr/libf7/libf7-asm.sx ++++ b/src/libgcc/config/avr/libf7/libf7-asm.sx +@@ -2308,8 +2308,85 @@ _ENDF __fractqqdf + #endif /* F7MOD_qq2D_ */ + + ++#ifdef F7MOD_fx2D_ ++;;; Convert an [un]signed 64-bit fixed point value R18[] to double. ++;;; double ufx64_to_d (ufx64_t R18, uint8_t fbit R30); ++;;; double sfx64_to_d (sfx64_t R18, uint8_t fbit R30); ++;;; FBIT accounts for the fractional bits of the fixed point type, ++;;; e.g. pass __DA_FBIT__ for long accum etc. ++DEFUN ufx64_to_d ++ push r30 ++ XCALL __floatundidf ++ rjmp 1f ++ ++LABEL sfx64_to_d ++ push r30 ++ XCALL __floatdidf ++1: pop r30 ++ ++ ;; The MSB indicates a value of 0. Notice that at this point, ++ ;; we have a normal floating point number with a biased exponent ++ ;; that won't underflow below. ++ tst r25 ++ breq 0f ++ ++ ;; Subtract fbit from the double exponent. R30[] = fbit << 4. ++ swap r30 ++ mov r31, r30 ++ andi r30, lo8 (0x0ff0) ++ andi r31, hi8 (0x0ff0) ++ sub r24, r30 ++ sbc r25, r31 ++ ++0: ret ++ENDF ufx64_to_d ++#endif /* F7MOD_fx2D_ */ ++ ++#ifdef F7MOD_da2D_ ++_DEFUN __fractdadf ++ ldi r30, __DA_FBIT__ ++ F7jmp sfx64_to_d ++_ENDF __fractdadf ++#endif /* F7MOD_da2D_ */ ++ ++#ifdef F7MOD_uda2D_ ++_DEFUN __fractudadf ++ ldi r30, __UDA_FBIT__ ++ F7jmp ufx64_to_d ++_ENDF __fractudadf ++#endif /* F7MOD_uda2D_ */ ++ ++#ifdef F7MOD_ta2D_ ++_DEFUN __fracttadf ++ ldi r30, __TA_FBIT__ ++ F7jmp sfx64_to_d ++_ENDF __fracttadf ++#endif /* F7MOD_ta2D_ */ ++ ++#ifdef F7MOD_uta2D_ ++_DEFUN __fractutadf ++ ldi r30, __UTA_FBIT__ ++ F7jmp ufx64_to_d ++_ENDF __fractutadf ++#endif /* F7MOD_uta2D_ */ ++ ++#ifdef F7MOD_dq2D_ ++_DEFUN __fractdqdf ++ ldi r30, __DQ_FBIT__ ++ F7jmp sfx64_to_d ++_ENDF __fractdqdf ++#endif /* F7MOD_dq2D_ */ ++ ++#ifdef F7MOD_udq2D_ ++_DEFUN __fractudqdf ++ ldi r30, __UDQ_FBIT__ ++ F7jmp ufx64_to_d ++_ENDF __fractudqdf ++#endif /* F7MOD_udq2D_ */ ++ ++ + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +-;;; Fixed-point -> double conversions. ++;;; Double -> fixed-point conversions. + + #ifdef F7MOD_D2qq_ + _DEFUN __fractdfqq +@@ -2389,6 +2466,49 @@ _ENDF __fractdfusa + #endif /* F7MOD_D2usa_ */ + + ++#ifdef F7MOD_D2fx_ ++;;; Convert double R18 to a 64-bit fixed point value. ++;;; R18 d_to_fx64 (double R18, int8_t fbit R16); ++;;; |FBIT| accounts for the extra fbits compared to [u]int64_t. ++;;; FBIT < 0 indicates a signed conversion. ++;;; FBIT > 0 indicates an unsigned conversion. ++DEFUN d_to_fx64 ++ do_prologue_saves 4, F7_SIZEOF ++ ++ ;; Y = FramePointer + 1 ++ adiw Y, 1 ++ ++ ;; FP + 1 = (f7_t) arg ++ wmov r16, Y ++ ++ ;; Convert double R18 to f7_t *R16. ++ XCALL F7_NAME (set_double_impl) ++ ++ ;; Prepare for *R24 = ldexp (*R24, R22). ldexp() accounts for the ++ ;; fractional bits of the fixed point value, i.e. we have to <<= FBIT. ++ wmov r24, r16 ++ ;; Zero-extend FBIT. ++ clr r23 ++ ;; R16 has been clobbered. Fetch it from where prologue_saves put it. ++ ldd r22, Y + F7_SIZEOF + 3 ; Saved R16 ++ tst r22 ++ brmi 1f ++ ++ ;; Positive FBIT indicates an unsigned conversion. ++ XCALL F7_NAME (Ildexp) ++ XCALL F7_NAME (get_u64) ++ rjmp 9f ++ ++1: ;; Negative FBIT indicates a signed conversion. ++ neg r22 ; FBIT := |FBIT| ++ XCALL F7_NAME (Ildexp) ++ XCALL F7_NAME (get_s64) ++ ++9: do_epilogue_restores 4, F7_SIZEOF ++ENDF d_to_fx64 ++#endif /* F7MOD_D2fx_ */ ++ ++ + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;;; [u]int32_t -> double conversions. + +--- a/src/libgcc/config/avr/libf7/libf7-common.mk ++++ b/src/libgcc/config/avr/libf7/libf7-common.mk +@@ -29,12 +29,14 @@ F7_ASM_PARTS += D_cmp D_eq D_ne D_ge D_gt D_le D_lt D_unord D_fminfmax + F7_ASM_PARTS += call_dd call_ddd + + # Fixed-point -> double conversions +-F7_ASM_PARTS += qq2D uqq2D sq2D usq2D +-F7_ASM_PARTS += ha2D uha2D sa2D usa2D ++F7_ASM_PARTS += qq2D uqq2D sq2D usq2D dq2D udq2D ++F7_ASM_PARTS += ha2D uha2D sa2D usa2D da2D uda2D ta2D uta2D ++F7_ASM_PARTS += fx2D + + # Double -> fixed-point conversions + F7_ASM_PARTS += D2qq D2uqq D2hq D2uhq + F7_ASM_PARTS += D2ha D2uha D2sa D2usa ++F7_ASM_PARTS += D2fx + + # Integer -> double conversions + F7_ASM_PARTS += D_floatsidf D_floatunsidf +@@ -107,7 +109,7 @@ F7F_asm += set_u64 set_s64 addsub_mant_scaled mul_mant + F7F_asm += to_integer to_unsigned clr_mant_lsbs + F7F_asm += div sqrt_approx sqrt16_round sqrt16_floor + F7F_asm += lshrdi3 ashldi3 +- ++F7F_asm += d_to_fx64 ufx64_to_d sfx64_to_d + F7F_asm += class_D + + F7F_asm += call_ddd call_xdd call_ddx +--- a/src/libgcc/config/avr/libf7/libf7.c ++++ b/src/libgcc/config/avr/libf7/libf7.c +@@ -140,6 +140,58 @@ f7_double_t __floatdidf (int64_t x) + #endif // F7MOD_floatdidf_ + + ++extern uint64_t d_to_ufx (f7_double_t, int8_t) F7ASM(f7_d_to_fx64_asm); ++extern int64_t d_to_sfx (f7_double_t, int8_t) F7ASM(f7_d_to_fx64_asm); ++ ++#ifdef F7MOD_fractdfda_ ++F7_WEAK ++int64_t __fractdfda (f7_double_t d) ++{ ++ return d_to_sfx (d, -__DA_FBIT__); ++} ++#endif // F7MOD_fractdfda_ ++ ++#ifdef F7MOD_fractdfuda_ ++F7_WEAK ++uint64_t __fractdfuda (f7_double_t d) ++{ ++ return d_to_ufx (d, __UDA_FBIT__); ++} ++#endif // F7MOD_fractdfuda_ ++ ++#ifdef F7MOD_fractdfta_ ++F7_WEAK ++int64_t __fractdfta (f7_double_t d) ++{ ++ return d_to_sfx (d, -__TA_FBIT__); ++} ++#endif // F7MOD_fractdfta_ ++ ++#ifdef F7MOD_fractdfuta_ ++F7_WEAK ++uint64_t __fractdfuta (f7_double_t d) ++{ ++ return d_to_ufx (d, __UTA_FBIT__); ++} ++#endif // F7MOD_fractdfuta_ ++ ++#ifdef F7MOD_fractdfdq_ ++F7_WEAK ++int64_t __fractdfdq (f7_double_t d) ++{ ++ return d_to_sfx (d, -__DQ_FBIT__); ++} ++#endif // F7MOD_fractdfdq_ ++ ++#ifdef F7MOD_fractdfudq_ ++F7_WEAK ++uint64_t __fractdfudq (f7_double_t d) ++{ ++ return d_to_ufx (d, __UDQ_FBIT__); ++} ++#endif // F7MOD_fractdfudq_ ++ ++ + #ifdef F7MOD_init_ + f7_t* f7_init_impl (uint64_t mant, uint8_t flags, f7_t *cc, int16_t expo) + { +--- a/src/libgcc/config/avr/libf7/t-libf7 ++++ b/src/libgcc/config/avr/libf7/t-libf7 +@@ -9,6 +9,8 @@ F7_PREFIX = __f7_ + include $(libf7)/libf7-common.mk + + LIBF7_DF_CONV += floatundidf floatdidf # floatunsidf floatsidf ++LIBF7_DF_CONV += fractdfda fractdfta fractdfdq ++LIBF7_DF_CONV += fractdfuda fractdfuta fractdfudq + + # Wrappers like f7_lt_impl for f7_lt etc. because the latter is inline. + LIBF7_DF_CMP += lt le gt ge ne eq unord +new file mode 100644 +--- /dev/null ++++ b/src/libgcc/config/microblaze/linux-unwind.h +@@ -0,0 +1,102 @@ ++/* DWARF2 EH unwinding support for MicroBlaze Linux. ++ Copyright (C) 2026 Free Software Foundation, Inc. ++ ++ This file is part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ Under Section 7 of GPL version 3, you are granted additional ++ permissions described in the GCC Runtime Library Exception, version ++ 3.1, as published by the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and ++ a copy of the GCC Runtime Library Exception along with this program; ++ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#ifndef inhibit_libc ++ ++/* Do code reading to identify a signal frame, and set the frame state ++ data appropriately. See unwind-dw2.c for the structs. */ ++ ++#include ++#include ++#include ++ ++#define MD_FALLBACK_FRAME_STATE_FOR microblaze_fallback_frame_state ++ ++static _Unwind_Reason_Code ++microblaze_fallback_frame_state (struct _Unwind_Context *context, ++ _Unwind_FrameState *fs) ++{ ++ const unsigned int *pc = (const unsigned int *) context->ra; ++ struct sigcontext *sc; ++ _Unwind_Ptr new_cfa; ++ int i; ++ ++ /* The outermost frame of a thread may leave a null or near-null ++ return address; do not dereference it looking for the ++ trampoline. */ ++ if ((unsigned long) pc < 4096) ++ return _URC_END_OF_STACK; ++ ++ /* The kernel writes the signal trampoline onto the stack ++ (struct rt_sigframe.tramp): ++ ++ addik r12, r0, __NR_rt_sigreturn ++ brki r14, 0x8 ++ ++ and sets the saved r15 to the trampoline address minus 8 (the ++ handler returns with "rtsd r15, 8"), so the unwound return ++ address points 8 bytes before the trampoline. */ ++ if (pc[0] == (0x31800000 | __NR_rt_sigreturn) && pc[1] == 0xb9cc0008) ++ ; ++ else if (pc[2] == (0x31800000 | __NR_rt_sigreturn) && pc[3] == 0xb9cc0008) ++ pc += 2; ++ else ++ return _URC_END_OF_STACK; ++ ++ /* The trampoline is the last member of the kernel's rt_sigframe and ++ the ucontext sits directly in front of it. Anchor there rather ++ than at the CFA so the layout of the frame head does not matter ++ (the kernel may insert an ABI argument-home gap at the front). ++ uClibc's ucontext_t matches the kernel's struct ucontext. */ ++ ucontext_t *uc = (ucontext_t *) ((_Unwind_Ptr) pc - sizeof (ucontext_t)); ++ ++ sc = (struct sigcontext *) &uc->uc_mcontext; ++ ++ new_cfa = sc->regs.r1; ++ fs->regs.cfa_how = CFA_REG_OFFSET; ++ fs->regs.cfa_reg = 1; /* r1, the stack pointer. */ ++ fs->regs.cfa_offset = new_cfa - (_Unwind_Ptr) context->cfa; ++ ++ /* pt_regs holds r0..r31 consecutively. */ ++ for (i = 0; i < 32; i++) ++ { ++ fs->regs.how[i] = REG_SAVED_OFFSET; ++ fs->regs.reg[i].loc.offset ++ = (_Unwind_Ptr) &sc->regs.r0 + i * sizeof (unsigned long) - new_cfa; ++ } ++ ++ /* The interrupted PC goes into the alternate return column ++ (DWARF_ALT_FRAME_RETURN_COLUMN, defined as 36 in ++ gcc/config/microblaze/microblaze.h), one past the hard registers; ++ column 15 above keeps the interrupted r15. */ ++ fs->regs.how[__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__] = REG_SAVED_OFFSET; ++ fs->regs.reg[__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__].loc.offset ++ = (_Unwind_Ptr) &sc->regs.pc - new_cfa; ++ fs->retaddr_column = __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__; ++ fs->signal_frame = 1; ++ ++ return _URC_NO_REASON; ++} ++ ++#endif diff --git a/patches/gm2-texinfo.diff b/patches/gm2-texinfo.diff new file mode 100644 index 0000000..b7c1505 --- /dev/null +++ b/patches/gm2-texinfo.diff @@ -0,0 +1,30 @@ +# DP: gm2.texi: Define our own gcctabopt macro, needed for dfsg builds. + +--- a/src/gcc/doc/gm2.texi ++++ b/src/gcc/doc/gm2.texi +@@ -51,6 +51,25 @@ man page gfdl(7). + @versionsubtitle + @author Gaius Mulley + ++@macro gcctabopt{body} ++@code{\body\} ++@end macro ++@macro gccoptlist{body} ++@smallexample ++\body\ ++@end smallexample ++@end macro ++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; ++@c they get lost at some point in handling the macro. But if @macro is ++@c used here rather than @alias, it produces double line breaks. ++@iftex ++@alias gol = * ++@end iftex ++@ifnottex ++@macro gol ++@end macro ++@end ifnottex ++ + @page + @vskip 0pt plus 1filll + Published by the Free Software Foundation @* diff --git a/patches/go-testsuite.diff b/patches/go-testsuite.diff new file mode 100644 index 0000000..b424eb5 --- /dev/null +++ b/patches/go-testsuite.diff @@ -0,0 +1,19 @@ +# DP: Skip Go testcase on AArch64 which hangs on the buildds. + +--- a/src/gcc/testsuite/go.test/go-test.exp ++++ b/src/gcc/testsuite/go.test/go-test.exp +@@ -460,6 +460,14 @@ proc go-gc-tests { } { + continue + } + ++ # Hangs on the buildds ++ if { [istarget "aarch64*-*-*"] } { ++ if { [file tail $test] == "pprof.go" } { ++ untested $test ++ continue ++ } ++ } ++ + if { [file tail $test] == "init1.go" } { + # This tests whether GC runs during init, which for gccgo + # it currently does not. diff --git a/patches/hppa64-libgcov-fallback.diff b/patches/hppa64-libgcov-fallback.diff new file mode 100644 index 0000000..58e4410 --- /dev/null +++ b/patches/hppa64-libgcov-fallback.diff @@ -0,0 +1,15 @@ +--- a/src/libgcc/libgcov.h ++++ b/src/libgcc/libgcov.h +@@ -45,6 +45,12 @@ + #include "libgcc_tm.h" + #include "gcov.h" + ++/* hppa64-linux-gnu does not have this header, use the fallback. */ ++#if defined(__LP64__) && defined(_PA_RISC2_0) ++#undef HAVE_SYS_MMAN_H ++#define HAVE_SYS_MMAN_H 0 ++#endif ++ + #if HAVE_SYS_MMAN_H + #include + #endif diff --git a/patches/hurd-changes.diff b/patches/hurd-changes.diff new file mode 100644 index 0000000..ca4d820 --- /dev/null +++ b/patches/hurd-changes.diff @@ -0,0 +1,20 @@ +# DP: Traditional GNU systems don't have a /usr directory. However, Debian +# DP: systems do, and we support both having a /usr -> . symlink, and having a +# DP: /usr directory like the other ports. So this patch should NOT go +# DP: upstream. + +--- + config.gcc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -583,7 +583,7 @@ + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu) + :;; + *-*-gnu*) +- native_system_header_dir=/include ++ # native_system_header_dir=/include + ;; + esac + # glibc / uclibc / bionic switch. diff --git a/patches/hurd-multiarch.diff b/patches/hurd-multiarch.diff new file mode 100644 index 0000000..e45b1af --- /dev/null +++ b/patches/hurd-multiarch.diff @@ -0,0 +1,16 @@ +--- a/src/gcc/config/i386/t-gnu64 ++++ b/src/gcc/config/i386/t-gnu64 +@@ -36,3 +36,13 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-gnu) + MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-gnux32) ++ ++ifneq (,$(findstring x86_64,$(target))) ++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-gnux32) ++ else ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-gnu) ++ endif ++else ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-gnu) ++endif diff --git a/patches/hurd-multilib-multiarch.diff b/patches/hurd-multilib-multiarch.diff new file mode 100644 index 0000000..5b9f167 --- /dev/null +++ b/patches/hurd-multilib-multiarch.diff @@ -0,0 +1,23 @@ +--- a/src/gcc/config/i386/t-gnu64 ++++ b/src/gcc/config/i386/t-gnu64 +@@ -33,9 +33,19 @@ + comma=, + MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG)) + MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS))) ++ifneq (,$(findstring gnux32,$(target))) + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-gnu) +-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../lib$(call if_multiarch,:x86_64-gnux32) ++else ifneq (,$(findstring x86_64,$(target))) ++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-gnux32) ++else ++MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib$(call if_multiarch,:i386-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-gnux32) ++endif + + ifneq (,$(findstring x86_64,$(target))) + ifneq (,$(findstring biarchx32.h,$(tm_include_list))) diff --git a/patches/ignore-pie-specs-when-not-enabled.diff b/patches/ignore-pie-specs-when-not-enabled.diff new file mode 100644 index 0000000..8f5cc09 --- /dev/null +++ b/patches/ignore-pie-specs-when-not-enabled.diff @@ -0,0 +1,56 @@ +# DP: Ignore dpkg's pie specs when pie is not enabled. + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -3715,6 +3715,36 @@ handle_foffload_option (const char *arg) + } + } + ++static bool ignore_pie_specs_when_not_enabled(const char *envvar, ++ const char *specname) ++{ ++ const char *envval = secure_getenv(envvar); ++ char *hardening; ++ bool ignore; ++ ++ if (strstr (specname, "/pie-compile.specs") == NULL ++ && strstr (specname, "/pie-link.specs") == NULL) ++ return false; ++ if (envval == NULL || strstr (envval, "hardening=") == NULL) ++ return true; ++ ignore = true; ++ hardening = (char *) xmalloc (strlen(envval) + 1); ++ strcpy (hardening, strstr (envval, "hardening=")); ++ if (strchr (hardening, ' ')) ++ *strchr (hardening, ' ') = '\0'; ++ if (strstr(hardening, "+all")) ++ { ++ if (strstr(hardening, "-pie") == NULL) ++ ignore = false; ++ } ++ else if (strstr(hardening, "+pie")) ++ { ++ ignore = false; ++ } ++ free (hardening); ++ return ignore; ++} ++ + /* Handle a driver option; arguments and return value as for + handle_option. */ + +@@ -3989,6 +4019,12 @@ driver_handle_option (struct gcc_options + break; + + case OPT_specs_: ++ if (ignore_pie_specs_when_not_enabled("DEB_BUILD_MAINT_OPTIONS", arg) ++ && ignore_pie_specs_when_not_enabled("DEB_BUILD_OPTIONS", arg)) ++ { ++ inform (0, "pie specs %s ignored when pie is not enabled", arg); ++ return true; ++ } + { + struct user_specs *user = XNEW (struct user_specs); + diff --git a/patches/libasan-sparc.diff b/patches/libasan-sparc.diff new file mode 100644 index 0000000..4b52ac2 --- /dev/null +++ b/patches/libasan-sparc.diff @@ -0,0 +1,163 @@ +# DP: Re-apply sanitizer patch for sparc, dropped upstream + +# don't remove, this is regularly overwritten, see PR sanitizer/63958. + +libsanitizer/ + +2014-10-14 David S. Miller + + * sanitizer_common/sanitizer_platform_limits_linux.cc (time_t): + Define at __kernel_time_t, as needed for sparc. + (struct __old_kernel_stat): Don't check if __sparc__ is defined. + * libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h + (__sanitizer): Define struct___old_kernel_stat_sz, + struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc. + (__sanitizer_ipc_perm): Adjust for sparc targets. + (__sanitizer_shmid_ds): Likewsie. + (__sanitizer_sigaction): Likewsie. + (IOC_SIZE): Likewsie. + +Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (revision 216223) ++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (revision 216224) +@@ -72,6 +72,14 @@ + const unsigned struct_kernel_stat_sz = 144; + #endif + const unsigned struct_kernel_stat64_sz = 104; ++#elif defined(__sparc__) && defined(__arch64__) ++ const unsigned struct___old_kernel_stat_sz = 0; ++ const unsigned struct_kernel_stat_sz = 104; ++ const unsigned struct_kernel_stat64_sz = 144; ++#elif defined(__sparc__) && !defined(__arch64__) ++ const unsigned struct___old_kernel_stat_sz = 0; ++ const unsigned struct_kernel_stat_sz = 64; ++ const unsigned struct_kernel_stat64_sz = 104; + #endif + struct __sanitizer_perf_event_attr { + unsigned type; +@@ -94,7 +102,7 @@ + + #if defined(__powerpc64__) + const unsigned struct___old_kernel_stat_sz = 0; +-#else ++#elif !defined(__sparc__) + const unsigned struct___old_kernel_stat_sz = 32; + #endif + +@@ -173,6 +181,18 @@ + unsigned short __pad1; + unsigned long __unused1; + unsigned long __unused2; ++#elif defined(__sparc__) ++# if defined(__arch64__) ++ unsigned mode; ++ unsigned short __pad1; ++# else ++ unsigned short __pad1; ++ unsigned short mode; ++ unsigned short __pad2; ++# endif ++ unsigned short __seq; ++ unsigned long long __unused1; ++ unsigned long long __unused2; + #else + unsigned short mode; + unsigned short __pad1; +@@ -190,6 +210,26 @@ + + struct __sanitizer_shmid_ds { + __sanitizer_ipc_perm shm_perm; ++ #if defined(__sparc__) ++ # if !defined(__arch64__) ++ u32 __pad1; ++ # endif ++ long shm_atime; ++ # if !defined(__arch64__) ++ u32 __pad2; ++ # endif ++ long shm_dtime; ++ # if !defined(__arch64__) ++ u32 __pad3; ++ # endif ++ long shm_ctime; ++ uptr shm_segsz; ++ int shm_cpid; ++ int shm_lpid; ++ unsigned long shm_nattch; ++ unsigned long __glibc_reserved1; ++ unsigned long __glibc_reserved2; ++ #else + #ifndef __powerpc__ + uptr shm_segsz; + #elif !defined(__powerpc64__) +@@ -227,6 +267,7 @@ + uptr __unused4; + uptr __unused5; + #endif ++#endif + }; + #elif SANITIZER_FREEBSD + struct __sanitizer_ipc_perm { +@@ -523,9 +564,13 @@ + #else + __sanitizer_sigset_t sa_mask; + #ifndef __mips__ ++#if defined(__sparc__) ++ unsigned long sa_flags; ++#else + int sa_flags; + #endif + #endif ++#endif + #if SANITIZER_LINUX + void (*sa_restorer)(); + #endif +@@ -745,7 +790,7 @@ + + #define IOC_NRBITS 8 + #define IOC_TYPEBITS 8 +-#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) ++#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || defined(__sparc__) + #define IOC_SIZEBITS 13 + #define IOC_DIRBITS 3 + #define IOC_NONE 1U +@@ -775,7 +820,17 @@ + #define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK) + #define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK) + #define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK) ++ ++#if defined(__sparc__) ++// In sparc the 14 bits SIZE field overlaps with the ++// least significant bit of DIR, so either IOC_READ or ++// IOC_WRITE shall be 1 in order to get a non-zero SIZE. ++# define IOC_SIZE(nr) \ ++ ((((((nr) >> 29) & 0x7) & (4U|2U)) == 0)? \ ++ 0 : (((nr) >> 16) & 0x3fff)) ++#else + #define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK) ++#endif + + extern unsigned struct_arpreq_sz; + extern unsigned struct_ifreq_sz; +Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (revision 216223) ++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (revision 216224) +@@ -36,6 +36,7 @@ + #define uid_t __kernel_uid_t + #define gid_t __kernel_gid_t + #define off_t __kernel_off_t ++#define time_t __kernel_time_t + // This header seems to contain the definitions of _kernel_ stat* structs. + #include + #undef ino_t +@@ -60,7 +61,7 @@ + } // namespace __sanitizer + + #if !defined(__powerpc64__) && !defined(__x86_64__) && !defined(__aarch64__)\ +- && !defined(__mips__) ++ && !defined(__mips__) && !defined(__sparc__) + COMPILER_CHECK(struct___old_kernel_stat_sz == sizeof(struct __old_kernel_stat)); + #endif + diff --git a/patches/libffi-race-condition.diff b/patches/libffi-race-condition.diff new file mode 100644 index 0000000..4e18c82 --- /dev/null +++ b/patches/libffi-race-condition.diff @@ -0,0 +1,33 @@ +From 48d2e46528fb6e621d95a7fa194069fd136b712d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20B=C3=BChler?= +Date: Wed, 7 Sep 2016 15:49:48 +0200 +Subject: [PATCH 1/2] dlmmap_locked always needs locking as it always modifies + execsize + +--- + src/closures.c | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +--- a/src/libffi/src/closures.c ++++ b/src/libffi/src/closures.c +@@ -897,16 +897,11 @@ dlmmap (void *start, size_t length, int + MREMAP_DUP and prot at this point. */ + } + +- if (execsize == 0 || execfd == -1) +- { +- pthread_mutex_lock (&open_temp_exec_file_mutex); +- ptr = dlmmap_locked (start, length, prot, flags, offset); +- pthread_mutex_unlock (&open_temp_exec_file_mutex); ++ pthread_mutex_lock (&open_temp_exec_file_mutex); ++ ptr = dlmmap_locked (start, length, prot, flags, offset); ++ pthread_mutex_unlock (&open_temp_exec_file_mutex); + +- return ptr; +- } +- +- return dlmmap_locked (start, length, prot, flags, offset); ++ return ptr; + } + + /* Release memory at the given address, as well as the corresponding diff --git a/patches/libffi-ro-eh_frame_sect.diff b/patches/libffi-ro-eh_frame_sect.diff new file mode 100644 index 0000000..3653876 --- /dev/null +++ b/patches/libffi-ro-eh_frame_sect.diff @@ -0,0 +1,13 @@ +# DP: PR libffi/47248, force a read only eh frame section. + +--- a/src/libffi/configure.ac ++++ b/src/libffi/configure.ac +@@ -296,6 +296,8 @@ if test "x$GCC" = "xyes"; then + libffi_cv_hidden_visibility_attribute=yes + fi + fi ++ # FIXME: see PR libffi/47248 ++ libffi_cv_ro_eh_frame=yes + rm -f conftest.* + ]) + if test $libffi_cv_hidden_visibility_attribute = yes; then diff --git a/patches/libgo-cleanfiles.diff b/patches/libgo-cleanfiles.diff new file mode 100644 index 0000000..59b1b04 --- /dev/null +++ b/patches/libgo-cleanfiles.diff @@ -0,0 +1,26 @@ +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -1361,7 +1361,9 @@ mostlyclean-local: + find . -name '*-testsum' -print | xargs rm -f + find . -name '*-testlog' -print | xargs rm -f + +-CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc ++CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc \ ++ *.dep */*.dep */*/*.dep */*/*/*.dep */*/*.dep */*/*/*/*.dep \ ++ */*/*/*/*/*.dep + + clean-local: + find . -name '*.la' -print | xargs $(LIBTOOL) --mode=clean rm -f +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -1199,7 +1199,9 @@ MOSTLYCLEANFILES = \ + libcalls-list \ + runtime.inc runtime.inc.tmp2 runtime.inc.tmp3 runtime.inc.raw + +-CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc ++CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc \ ++ *.dep */*.dep */*/*.dep */*/*/*.dep */*/*.dep */*/*/*/*.dep \ ++ */*/*/*/*/*.dep + MULTISRCTOP = + MULTIBUILDTOP = + MULTIDIRS = diff --git a/patches/libgo-hurd-hack.diff b/patches/libgo-hurd-hack.diff new file mode 100644 index 0000000..c25f8c1 --- /dev/null +++ b/patches/libgo-hurd-hack.diff @@ -0,0 +1,22 @@ +# FIXME: #1005297, PR 104660 + +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -67372,6 +67372,8 @@ all-flex: maybe-all-build-texinfo + all-m4: maybe-all-build-texinfo + configure-target-libgo: maybe-configure-target-libffi + all-target-libgo: maybe-all-target-libffi ++all-target-libgo: maybe-all-target-libbacktrace ++all-target-libgo: maybe-all-target-libatomic + configure-target-libphobos: maybe-configure-target-libbacktrace + configure-stage1-target-libphobos: maybe-configure-stage1-target-libbacktrace + configure-stage2-target-libphobos: maybe-configure-stage2-target-libbacktrace +@@ -67539,8 +67541,6 @@ all-m4: maybe-all-intl + configure-target-fastjar: maybe-configure-target-zlib + all-target-fastjar: maybe-all-target-zlib + configure-target-libgo: maybe-all-target-libstdc++-v3 +-all-target-libgo: maybe-all-target-libbacktrace +-all-target-libgo: maybe-all-target-libatomic + configure-target-libgm2: maybe-all-target-libstdc++-v3 + all-target-libgm2: maybe-all-target-libatomic + configure-target-liboffloadmic: maybe-configure-target-libgomp diff --git a/patches/libgo-revert-timeout-exp.diff b/patches/libgo-revert-timeout-exp.diff new file mode 100644 index 0000000..af0b838 --- /dev/null +++ b/patches/libgo-revert-timeout-exp.diff @@ -0,0 +1,10 @@ +--- a/src/libgo/testsuite/lib/libgo.exp ++++ b/src/libgo/testsuite/lib/libgo.exp +@@ -49,7 +49,6 @@ load_gcc_lib wrapper.exp + load_gcc_lib target-supports.exp + load_gcc_lib target-utils.exp + load_gcc_lib gcc-defs.exp +-load_gcc_lib timeout.exp + load_gcc_lib go.exp + + proc libgo_init { args } { diff --git a/patches/libgo-setcontext-config.diff b/patches/libgo-setcontext-config.diff new file mode 100644 index 0000000..f6d105d --- /dev/null +++ b/patches/libgo-setcontext-config.diff @@ -0,0 +1,19 @@ +# DP: libgo: Overwrite the setcontext_clobbers_tls check on mips* + +--- a/src/libgo/configure.ac ++++ b/src/libgo/configure.ac +@@ -802,6 +802,14 @@ main () + CFLAGS="$CFLAGS_hold" + LIBS="$LIBS_hold" + ]) ++dnl overwrite for the mips* 64bit multilibs, fails on some buildds ++if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then ++ case "$target" in ++ mips*-linux-*) ++ AC_MSG_WARN([FIXME: overwrite setcontext_clobbers_tls for $target:$ptr_type_size]) ++ libgo_cv_lib_setcontext_clobbers_tls=no ;; ++ esac ++fi + if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then + AC_DEFINE(SETCONTEXT_CLOBBERS_TLS, 1, + [Define if setcontext clobbers TLS variables]) diff --git a/patches/libgo-testsuite.diff b/patches/libgo-testsuite.diff new file mode 100644 index 0000000..8369b5d --- /dev/null +++ b/patches/libgo-testsuite.diff @@ -0,0 +1,76 @@ +# DP: Only run the libgo testsuite for flags configured in CHECK_MULTISUBDIRS + +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -948,21 +948,29 @@ CHECK = \ + $(MKDIR_P) $(@D); \ + rm -f $@-testsum $@-testlog; \ + files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(@D))))" $(matchargs_$(subst /,_,$(@D)))`; \ ++ run_check=; \ ++ if [ -z "$(MULTISUBDIR)" ] || echo "$$CHECK_MULTISUBDIRS" | grep -q "$(MULTISUBDIR)"; then \ ++ run_check=yes; \ ++ fi; \ ++ if test "$$run_check" = "yes"; then \ + if test "$(USE_DEJAGNU)" = "yes"; then \ + $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \ + elif test "$(GOBENCH)" != ""; then \ + $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --bench="$(GOBENCH)" $(GOTESTFLAGS); \ + else \ + if $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" $(GOTESTFLAGS) >>$@-testlog 2>&1; then \ +- echo "PASS: $(@D)" >> $@-testlog; \ +- echo "PASS: $(@D)"; \ +- echo "PASS: $(@D)" > $@-testsum; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)"; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)" > $@-testsum; \ + else \ +- echo "FAIL: $(@D)" >> $@-testlog; \ ++ echo "FAIL: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ + cat $@-testlog; \ +- echo "FAIL: $(@D)" > $@-testsum; \ ++ echo "FAIL: $(@D)$(MULTISUBDIR)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ ++ else \ ++ echo "SKIP: $(@D)$(MULTISUBDIR)"; \ + fi + + # Build all packages before checking any. +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -1066,21 +1066,29 @@ CHECK = \ + $(MKDIR_P) $(@D); \ + rm -f $@-testsum $@-testlog; \ + files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(@D))))" $(matchargs_$(subst /,_,$(@D)))`; \ ++ run_check=; \ ++ if [ -z "$(MULTISUBDIR)" ] || echo "$$CHECK_MULTISUBDIRS" | grep -q "$(MULTISUBDIR)"; then \ ++ run_check=yes; \ ++ fi; \ ++ if test "$$run_check" = "yes"; then \ + if test "$(USE_DEJAGNU)" = "yes"; then \ + $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \ + elif test "$(GOBENCH)" != ""; then \ + $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --bench="$(GOBENCH)" $(GOTESTFLAGS); \ + else \ + if $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" $(GOTESTFLAGS) >>$@-testlog 2>&1; then \ +- echo "PASS: $(@D)" >> $@-testlog; \ +- echo "PASS: $(@D)"; \ +- echo "PASS: $(@D)" > $@-testsum; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)"; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)" > $@-testsum; \ + else \ +- echo "FAIL: $(@D)" >> $@-testlog; \ ++ echo "FAIL: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ + cat $@-testlog; \ +- echo "FAIL: $(@D)" > $@-testsum; \ ++ echo "FAIL: $(@D)$(MULTISUBDIR)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ ++ else \ ++ echo "SKIP: $(@D)$(MULTISUBDIR)"; \ + fi + + diff --git a/patches/libgomp-omp_h-multilib.diff b/patches/libgomp-omp_h-multilib.diff new file mode 100644 index 0000000..7f2cfa2 --- /dev/null +++ b/patches/libgomp-omp_h-multilib.diff @@ -0,0 +1,32 @@ +# DP: Fix up omp.h for multilibs. + +2008-06-09 Jakub Jelinek + + * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs. + +2015-03-25 Matthias Klose + + * omp.h.in (omp_nest_lock_t): Limit the fix Linux. + +--- a/src/libgomp/omp.h.in ++++ b/src/libgomp/omp.h.in +@@ -52,8 +52,19 @@ typedef struct + + typedef struct + { ++ /* ++ Derive OMP_NEST_LOCK_SIZE and OMP_NEST_LOCK_ALIGN, don't hard ++ code the values because the header is used for all multilibs. ++ OMP_NEST_LOCK_SIZE = @OMP_NEST_LOCK_SIZE@ ++ OMP_NEST_LOCK_ALIGN = @OMP_NEST_LOCK_ALIGN@ ++ */ ++#if defined(__linux__) && !(defined(__hppa__) || defined(__alpha__)) ++ unsigned char _x[8 + sizeof (void *)] ++ __attribute__((__aligned__(sizeof (void *)))); ++#else + unsigned char _x[@OMP_NEST_LOCK_SIZE@] + __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@))); ++#endif + } omp_nest_lock_t; + #endif + diff --git a/patches/libitm-no-fortify-source.diff b/patches/libitm-no-fortify-source.diff new file mode 100644 index 0000000..fe0c705 --- /dev/null +++ b/patches/libitm-no-fortify-source.diff @@ -0,0 +1,17 @@ +# DP: Build libitm with -U_FORTIFY_SOURCE on x86 and x86_64. + +--- a/src/libitm/configure.tgt ++++ b/src/libitm/configure.tgt +@@ -124,6 +124,12 @@ EOF + ;; + esac + ++# FIXME: ftbfs with -D_FORTIFY_SOURCE (error: invalid use of '__builtin_va_arg_pack ()) ++case "${target}" in ++ *-*-linux*) ++ XCFLAGS="${XCFLAGS} -U_FORTIFY_SOURCE" ++esac ++ + # For the benefit of top-level configure, determine if the cpu is supported. + test -d ${srcdir}/config/$ARCH || UNSUPPORTED=1 + diff --git a/patches/libphobos-ppc64el.diff b/patches/libphobos-ppc64el.diff new file mode 100644 index 0000000..51a501a --- /dev/null +++ b/patches/libphobos-ppc64el.diff @@ -0,0 +1,16 @@ +# DP: build libphobos for IEEE long double on ppc64el + +--- a/src/libphobos/libdruntime/core/stdc/stdio.d ++++ b/src/libphobos/libdruntime/core/stdc/stdio.d +@@ -1350,9 +1350,9 @@ + alias vprintf = __vprintfieee128; + /// + pragma(scanf) +- int __isoc99_vfscanfieee128(scope const char* format, va_list arg); ++ int __isoc99_vscanfieee128(scope const char* format, va_list arg); + /// +- alias vscanf = __isoc99_vfscanfieee128; ++ alias vscanf = __isoc99_vscanfieee128; + /// + pragma(printf) + int __printfieee128(scope const char* format, scope const ...); diff --git a/patches/libphobos-unittest.diff b/patches/libphobos-unittest.diff new file mode 100644 index 0000000..fdbead6 --- /dev/null +++ b/patches/libphobos-unittest.diff @@ -0,0 +1,13 @@ +# DP: https://github.com/dlang/phobos/pull/10586 + +--- a/src/libphobos/src/std/process.d ++++ b/src/libphobos/src/std/process.d +@@ -2835,7 +2835,7 @@ void kill(Pid pid, int codeOrSignal) + do { s = tryWait(pid); } while (!s.terminated); + version (Windows) assert(s.status == 123); + else version (Posix) assert(s.status == -SIGKILL); +- assertThrown!ProcessException(kill(pid)); // Already terminated ++ assert(pid.processID == Pid.terminated); + } + + @system unittest // wait() and kill() detached process diff --git a/patches/libphobos-zlib.diff b/patches/libphobos-zlib.diff new file mode 100644 index 0000000..ddf7c95 --- /dev/null +++ b/patches/libphobos-zlib.diff @@ -0,0 +1,72 @@ +# DP: Build zlib in any case to have a fall back for missing libz multilibs + +--- a/src/libphobos/configure.ac ++++ b/src/libphobos/configure.ac +@@ -142,6 +142,7 @@ DRUNTIME_LIBRARIES_BACKTRACE + DRUNTIME_LIBRARIES_DLOPEN + DRUNTIME_LIBRARIES_ZLIB + DRUNTIME_INSTALL_DIRECTORIES ++dnl fake change to regenerate the configure file + + # Add dependencies for libgphobos.spec file + SPEC_PHOBOS_DEPS="$LIBS" +--- a/src/libphobos/m4/druntime/libraries.m4 ++++ b/src/libphobos/m4/druntime/libraries.m4 +@@ -52,19 +52,45 @@ AC_DEFUN([DRUNTIME_LIBRARIES_ZLIB], + [ + AC_ARG_WITH(target-system-zlib, + AS_HELP_STRING([--with-target-system-zlib], +- [use installed libz (default: no)])) ++ [use installed libz (default: no)]), ++ [system_zlib=yes],[system_zlib=no]) + +- system_zlib=false +- AS_IF([test "x$with_target_system_zlib" = "xyes"], [ +- AC_CHECK_LIB([z], [deflate], [ +- system_zlib=yes +- ], [ +- AC_MSG_ERROR([System zlib not found]) +- ]) +- ], [ +- AC_MSG_CHECKING([for zlib]) +- AC_MSG_RESULT([just compiled]) +- ]) ++ AC_MSG_CHECKING([for system zlib]) ++ save_LIBS=$LIBS ++ LIBS="$LIBS -lz" ++ dnl the link test is not good enough for ARM32 multilib detection, ++ dnl first check to link, then to run ++ AC_LANG_PUSH(C) ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([#include ],[gzopen("none", "rb")])], ++ [ ++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ ++ #include ++ int main() { ++ gzFile file = gzopen("none", "rb"); ++ return 0; ++ } ++ ]])], ++ [system_zlib_found=yes], ++ [system_zlib_found=no], ++ dnl no system zlib for cross builds ... ++ [system_zlib_found=no] ++ ) ++ ], ++ [system_zlib_found=no]) ++ if test x$system_zlib = xyes; then ++ if test x$system_zlib_found = xyes; then ++ AC_MSG_RESULT([found]) ++ else ++ LIBS=$save_LIBS ++ AC_MSG_RESULT([not found, disabled]) ++ system_zlib=no ++ fi ++ else ++ LIBS=$save_LIBS ++ AC_MSG_RESULT([not enabled]) ++ fi ++ AC_LANG_POP + + AM_CONDITIONAL([DRUNTIME_ZLIB_SYSTEM], [test "$with_target_system_zlib" = yes]) + ]) diff --git a/patches/libsanitizer-static-tls.diff b/patches/libsanitizer-static-tls.diff new file mode 100644 index 0000000..3d68495 --- /dev/null +++ b/patches/libsanitizer-static-tls.diff @@ -0,0 +1,19 @@ +# DP: [TSan] Fix determining static TLS blocks + +https://github.com/llvm/llvm-project/pull/183106 + +--- a/src/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp ++++ b/src/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp +@@ -503,10 +503,10 @@ __attribute__((unused)) static void GetStaticTlsBoundary(uptr *addr, uptr *size, + // loader places static TLS blocks this way not to waste space. + uptr l = one; + *align = ranges[l].align; +- while (l != 0 && ranges[l].begin < ranges[l - 1].end + ranges[l].align) ++ while (l != 0 && ranges[l].begin <= ranges[l - 1].end + ranges[l].align) + *align = Max(*align, ranges[--l].align); + uptr r = one + 1; +- while (r != len && ranges[r].begin < ranges[r - 1].end + ranges[r].align) ++ while (r != len && ranges[r].begin <= ranges[r - 1].end + ranges[r].align) + *align = Max(*align, ranges[r++].align); + *addr = ranges[l].begin; + *size = ranges[r - 1].end - ranges[l].begin; diff --git a/patches/libstdc++-doclink.diff b/patches/libstdc++-doclink.diff new file mode 100644 index 0000000..a34b325 --- /dev/null +++ b/patches/libstdc++-doclink.diff @@ -0,0 +1,61 @@ +# DP: adjust hrefs to point to the local documentation + +--- + libstdc++-v3/doc/doxygen/mainpage.html | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +--- a/src/libstdc++-v3/doc/doxygen/mainpage.html ++++ b/src/libstdc++-v3/doc/doxygen/mainpage.html +@@ -27,10 +27,10 @@ +

Generated on @DATE@.

+ +

There are two types of documentation for libstdc++. One is the +- distribution documentation, which can be read online +- here +- or offline from the file doc/html/index.html in the library source +- directory. ++ distribution documentation, which can be read ++ offline in the documentation directory ++ or ++ online. +

+ +

The other type is the source documentation, of which this is the first page. +@@ -82,8 +82,11 @@ + +

License, Copyright, and Other Lawyerly Verbosity

+

The libstdc++ documentation is released under ++ these terms ++ (read offline or + +- these terms. ++ read online. ++ ). +

+

Part of the generated documentation involved comments and notes from + SGI, who says we gotta say this: +--- a/src/libstdc++-v3/doc/html/api.html ++++ b/src/libstdc++-v3/doc/html/api.html +@@ -20,6 +20,8 @@ + member functions for the library classes, finding out what is in a + particular include file, looking at inheritance diagrams, etc. +

++The API documentation, rendered into HTML, can be viewed offline. ++

+ The API documentation, rendered into HTML, can be viewed online + for each GCC release + and +--- a/src/libstdc++-v3/doc/xml/api.xml ++++ b/src/libstdc++-v3/doc/xml/api.xml +@@ -40,6 +40,11 @@ + + + ++ The source-level documentation for this release can be viewed offline. ++ ++ ++ ++ + The API documentation, rendered into HTML, can be viewed online + for each GCC release + and diff --git a/patches/libstdc++-doxygen-SOURCE_DATE_EPOCH.diff b/patches/libstdc++-doxygen-SOURCE_DATE_EPOCH.diff new file mode 100644 index 0000000..f297c7a --- /dev/null +++ b/patches/libstdc++-doxygen-SOURCE_DATE_EPOCH.diff @@ -0,0 +1,13 @@ +--- a/src/libstdc++-v3/scripts/run_doxygen ++++ b/src/libstdc++-v3/scripts/run_doxygen +@@ -130,7 +130,9 @@ do_latex=false + latex_cmd= + enabled_sections= + generate_tagfile= +-DATEtext=`date '+%Y-%m-%d'` ++DATE_FMT="+%Y-%m-%d" ++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}" ++DATEtext=`date -u -d "@$SOURCE_DATE_EPOCH" "$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "$DATE_FMT" 2>/dev/null || date -u "$DATE_FMT"` + + # Show how this script is called. + echo run_doxygen $* diff --git a/patches/libstdc++-hurd.diff b/patches/libstdc++-hurd.diff new file mode 100644 index 0000000..278d83a --- /dev/null +++ b/patches/libstdc++-hurd.diff @@ -0,0 +1,48 @@ +This is notably needed because in glibc 2.34, the move of pthread functions +into libc.so happened for Linux only, not GNU/Hurd. + +The pthread_self() function can also always be used fine as it is on +GNU/Hurd. + +libstdc++-v3/ChangeLog: + + * config/os/gnu-linux/os_defines.h [!__linux__] + (_GLIBCXX_NATIVE_THREAD_ID, _GLIBCXX_GTHREAD_USE_WEAK): Do not define. + +--- a/src/libstdc++-v3/config/os/gnu-linux/os_defines.h ++++ b/src/libstdc++-v3/config/os/gnu-linux/os_defines.h +@@ -60,22 +60,24 @@ + # define _GLIBCXX_HAVE_FLOAT128_MATH 1 + #endif + +-#if __GLIBC_PREREQ(2, 27) +-// Since glibc 2.27 pthread_self() is usable without linking to libpthread. +-# define _GLIBCXX_NATIVE_THREAD_ID pthread_self() +-#else ++#ifdef __linux__ ++# if __GLIBC_PREREQ(2, 27) ++// Since glibc 2.27 Linux' pthread_self() is usable without linking to libpthread. ++# define _GLIBCXX_NATIVE_THREAD_ID pthread_self() ++# else + // Before then it was in libc.so.6 but not libc.a, and always returns 0, + // which breaks the invariant this_thread::get_id() != thread::id{}. + // So only use it if we know the libpthread version is available. + // Otherwise use (__gthread_t)1 as the ID of the main (and only) thread. +-# define _GLIBCXX_NATIVE_THREAD_ID \ +- (__gthread_active_p() ? __gthread_self() : (__gthread_t)1) +-#endif ++# define _GLIBCXX_NATIVE_THREAD_ID \ ++ (__gthread_active_p() ? __gthread_self() : (__gthread_t)1) ++# endif + +-#if __GLIBC_PREREQ(2, 34) +-// Since glibc 2.34 all pthreads functions are usable without linking to ++# if __GLIBC_PREREQ(2, 34) ++// Since glibc 2.34 all Linux pthreads functions are usable without linking to + // libpthread. +-# define _GLIBCXX_GTHREAD_USE_WEAK 0 ++# define _GLIBCXX_GTHREAD_USE_WEAK 0 ++# endif + #endif + + #endif diff --git a/patches/libstdc++-man-3cxx.diff b/patches/libstdc++-man-3cxx.diff new file mode 100644 index 0000000..a8963aa --- /dev/null +++ b/patches/libstdc++-man-3cxx.diff @@ -0,0 +1,63 @@ +# DP: Install libstdc++ man pages with suffix .3cxx instead of .3 + +--- a/src/libstdc++-v3/doc/doxygen/user.cfg.in ++++ b/src/libstdc++-v3/doc/doxygen/user.cfg.in +@@ -2146,7 +2146,7 @@ MAN_OUTPUT = man + # The default value is: .3. + # This tag requires that the tag GENERATE_MAN is set to YES. + +-MAN_EXTENSION = .3 ++MAN_EXTENSION = .3cxx + + # The MAN_SUBDIR tag determines the name of the directory created within + # MAN_OUTPUT in which the man pages are placed. If defaults to man followed by +--- a/src/libstdc++-v3/scripts/run_doxygen ++++ b/src/libstdc++-v3/scripts/run_doxygen +@@ -262,6 +262,9 @@ fi + if $do_man; then + echo :: + echo :: Fixing up the man pages... ++mkdir -p $outdir/man/man3 ++mv $outdir/man/man3cxx/* $outdir/man/man3/ ++rmdir $outdir/man/man3cxx + cd $outdir/man/man3 + + # File names with embedded spaces (EVIL!) need to be....? renamed or removed? +@@ -291,7 +294,7 @@ cxxflags="-Og -g -std=gnu++23" + $gxx $cppflags $cxxflags ${srcdir}/doc/doxygen/stdheader.cc -o ./stdheader || exit 1 + # Doxygen outputs something like "\fC#include \fP" and + # we want that internal header to be replaced with something like . +-problematic=`grep -E -l '#include <.*h>' [a-z]*.3` ++problematic=`grep -E -l '#include <.*h>' [a-z]*.3 [a-z]*.3cxx` + for f in $problematic; do + # this is also slow, but safe and easy to debug + oldh=`sed -n '/f[CR]#include .*/\1/p' $f` +@@ -307,7 +310,7 @@ rm stdheader + # Some of the pages for generated modules have text that confuses certain + # implementations of man(1), e.g. on GNU/Linux. We need to have another + # top-level *roff tag to /stop/ the .SH NAME entry. +-problematic=`grep -E --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` ++problematic=`grep -E --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3cxx` + #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3' + + for f in $problematic; do +@@ -321,7 +324,7 @@ a\ + done + + # Also, break this (generated) line up. It's ugly as sin. +-problematic=`grep -l '[^^]Definition at line' *.3` ++problematic=`grep -l '[^^]Definition at line' *.3 *.3cxx` + for f in $problematic; do + sed 's/Definition at line/\ + .PP\ +@@ -452,8 +455,8 @@ for f in ios streambuf istream ostream i + istringstream ostringstream stringstream filebuf ifstream \ + ofstream fstream string + do +- echo ".so man3/std::basic_${f}.3" > std::${f}.3 +- echo ".so man3/std::basic_${f}.3" > std::w${f}.3 ++ echo ".so man3/std::basic_${f}.3cxx" > std::${f}.3cxx ++ echo ".so man3/std::basic_${f}.3cxx" > std::w${f}.3cxx + done + + echo :: diff --git a/patches/libstdc++-no-testsuite.diff b/patches/libstdc++-no-testsuite.diff new file mode 100644 index 0000000..771bf7a --- /dev/null +++ b/patches/libstdc++-no-testsuite.diff @@ -0,0 +1,12 @@ +# DP: Don't run the libstdc++ testsuite on arm, hppa and mipsel (timeouts on the buildds) + +--- a/src/libstdc++-v3/testsuite/Makefile.in ++++ b/src/libstdc++-v3/testsuite/Makefile.in +@@ -567,6 +567,7 @@ + + # Run the testsuite in normal mode. + check-DEJAGNU $(check_DEJAGNU_normal_targets): check-DEJAGNU%: site.exp ++ case "$(target)" in arm*|hppa*|mipsel*) exit 0;; esac; \ + $(if $*,@)AR="$(AR)"; export AR; \ + RANLIB="$(RANLIB)"; export RANLIB; \ + if [ -z "$*" ] && [ "$(filter -j, $(MFLAGS))" = "-j" ]; then \ diff --git a/patches/libstdc++-nothumb-check.diff b/patches/libstdc++-nothumb-check.diff new file mode 100644 index 0000000..6c665a2 --- /dev/null +++ b/patches/libstdc++-nothumb-check.diff @@ -0,0 +1,38 @@ +# DP: Don't run the libstdc++-v3 testsuite in thumb mode on armel + +Index: testsuite/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/testsuite/Makefile.in (revision 156820) ++++ b/src/libstdc++-v3/testsuite/Makefile.in (working copy) +@@ -583,6 +583,8 @@ + srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ + EXPECT=$(EXPECT); export EXPECT; \ + runtest=$(RUNTEST); \ ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-marm/-marm/'`"; \ ++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ + if [ -z "$$runtest" ]; then runtest=runtest; fi; \ + tool=libstdc++; \ + dirs=; \ +@@ -590,7 +592,7 @@ + normal0) \ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS) abi.exp; \ ++ $$runtestflags abi.exp; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi; \ + dirs="`cd $$srcdir; echo [013-9][0-9]_*/* [abep]*/*`";; \ +@@ -605,11 +607,11 @@ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + if [ -n "$$dirs" ]; then \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS) \ ++ $$runtestflags \ + "conformance.exp=`echo $$dirs | sed 's/ /* /g;s/$$/*/'`"; \ + else \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS); \ ++ $$runtestflags; \ + fi; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi diff --git a/patches/libstdc++-pic.diff b/patches/libstdc++-pic.diff new file mode 100644 index 0000000..6adac41 --- /dev/null +++ b/patches/libstdc++-pic.diff @@ -0,0 +1,91 @@ +# DP: Build and install libstdc++_pic.a library. + +--- a/src/libstdc++-v3/src/Makefile.am ++++ b/src/libstdc++-v3/src/Makefile.am +@@ -379,10 +379,12 @@ if GLIBCXX_BUILD_DEBUG + STAMP_DEBUG = build-debug + STAMP_INSTALL_DEBUG = install-debug + CLEAN_DEBUG = debug ++STAMP_INSTALL_PIC = install-pic + else + STAMP_DEBUG = + STAMP_INSTALL_DEBUG = + CLEAN_DEBUG = ++STAMP_INSTALL_PIC = + endif + + # Build a debug variant. +@@ -425,6 +427,7 @@ build-debug: stamp-debug $(debug_backtra + mv Makefile Makefile.tmp; \ + sed -e 's,all-local: all-once,all-local:,' \ + -e 's,install-data-local: install-data-once,install-data-local:,' \ ++ -e 's,install-exec-local:.*,install-exec-local:,' \ + -e '/vpath/!s,src/c,src/debug/c,' \ + < Makefile.tmp > Makefile ; \ + rm -f Makefile.tmp ; \ +@@ -435,3 +438,8 @@ build-debug: stamp-debug $(debug_backtra + install-debug: build-debug + (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ; ++ ++install-exec-local: $(STAMP_INSTALL_PIC) ++$(STAMP_INSTALL_PIC): ++ $(MKDIR_P) $(DESTDIR)$(toolexeclibdir) ++ $(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a +--- a/src/libstdc++-v3/src/Makefile.in ++++ b/src/libstdc++-v3/src/Makefile.in +@@ -676,6 +676,8 @@ CXXLINK = \ + @GLIBCXX_BUILD_DEBUG_TRUE@STAMP_INSTALL_DEBUG = install-debug + @GLIBCXX_BUILD_DEBUG_FALSE@CLEAN_DEBUG = + @GLIBCXX_BUILD_DEBUG_TRUE@CLEAN_DEBUG = debug ++@GLIBCXX_BUILD_DEBUG_FALSE@STAMP_INSTALL_PIC = ++@GLIBCXX_BUILD_DEBUG_TRUE@STAMP_INSTALL_PIC = install-pic + + # Build a debug variant. + # Take care to fix all possibly-relative paths. +@@ -944,7 +946,7 @@ install-dvi: install-dvi-recursive + + install-dvi-am: + +-install-exec-am: install-toolexeclibLTLIBRARIES ++install-exec-am: install-exec-local install-toolexeclibLTLIBRARIES + + install-html: install-html-recursive + +@@ -994,11 +996,11 @@ uninstall-am: uninstall-toolexeclibLTLIB + distclean-libtool distclean-tags dvi dvi-am html html-am info \ + info-am install install-am install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ +- install-exec-am install-html install-html-am install-info \ +- install-info-am install-man install-pdf install-pdf-am \ +- install-ps install-ps-am install-strip \ +- install-toolexeclibLTLIBRARIES installcheck installcheck-am \ +- installdirs installdirs-am maintainer-clean \ ++ install-exec-am install-exec-local install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip install-toolexeclibLTLIBRARIES installcheck \ ++ installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ +@@ -1147,6 +1149,7 @@ build-debug: stamp-debug $(debug_backtra + mv Makefile Makefile.tmp; \ + sed -e 's,all-local: all-once,all-local:,' \ + -e 's,install-data-local: install-data-once,install-data-local:,' \ ++ -e 's,install-exec-local:.*,install-exec-local:,' \ + -e '/vpath/!s,src/c,src/debug/c,' \ + < Makefile.tmp > Makefile ; \ + rm -f Makefile.tmp ; \ +@@ -1158,6 +1161,11 @@ install-debug: build-debug + (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ; + ++install-exec-local: $(STAMP_INSTALL_PIC) ++$(STAMP_INSTALL_PIC): ++ $(MKDIR_P) $(DESTDIR)$(toolexeclibdir) ++ $(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: diff --git a/patches/libstdc++-pythondir.diff b/patches/libstdc++-pythondir.diff new file mode 100644 index 0000000..325020c --- /dev/null +++ b/patches/libstdc++-pythondir.diff @@ -0,0 +1,22 @@ +--- a/src/libstdc++-v3/python/Makefile.am ++++ b/src/libstdc++-v3/python/Makefile.am +@@ -26,7 +26,7 @@ include $(top_srcdir)/fragment.am + if ENABLE_PYTHONDIR + pythondir = $(prefix)/$(python_mod_dir) + else +-pythondir = $(datadir)/gcc-$(gcc_version)/python ++pythondir = $(datadir)/gcc/python + endif + + if GLIBCXX_BUILD_DEBUG +--- a/src/libstdc++-v3/python/Makefile.in ++++ b/src/libstdc++-v3/python/Makefile.in +@@ -409,7 +409,7 @@ WARN_CXXFLAGS = \ + + # -I/-D flags to pass when compiling. + AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS) +-@ENABLE_PYTHONDIR_FALSE@pythondir = $(datadir)/gcc-$(gcc_version)/python ++@ENABLE_PYTHONDIR_FALSE@pythondir = $(datadir)/gcc/python + @ENABLE_PYTHONDIR_TRUE@pythondir = $(prefix)/$(python_mod_dir) + @GLIBCXX_BUILD_DEBUG_FALSE@debug_gdb_py = + @GLIBCXX_BUILD_DEBUG_TRUE@debug_gdb_py = YES diff --git a/patches/libstdc++-test-installed.diff b/patches/libstdc++-test-installed.diff new file mode 100644 index 0000000..b266c7e --- /dev/null +++ b/patches/libstdc++-test-installed.diff @@ -0,0 +1,76 @@ +# DP: Add support to run the libstdc++-v3 testsuite using the +# DP: installed shared libraries. + +--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp ++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp +@@ -37,6 +37,12 @@ + # the last thing before testing begins. This can be defined in, e.g., + # ~/.dejagnurc or $DEJAGNU. + ++set test_installed 0 ++if [info exists env(TEST_INSTALLED)] { ++ verbose -log "test installed libstdc++-v3" ++ set test_installed 1 ++} ++ + proc load_gcc_lib { filename } { + global srcdir loaded_libs + +@@ -117,6 +123,7 @@ proc libstdc++_init { testfile } { + global tool_timeout + global DEFAULT_CXXFLAGS + global STATIC_LIBCXXFLAGS ++ global test_installed + + # We set LC_ALL and LANG to C so that we get the same error + # messages as expected. +@@ -136,6 +143,9 @@ proc libstdc++_init { testfile } { + + set blddir [lookfor_file [get_multilibs] libstdc++-v3] + set flags_file "${blddir}/scripts/testsuite_flags" ++ if {$test_installed} { ++ set flags_file "${blddir}/scripts/testsuite_flags.installed" ++ } + set shlib_ext [get_shlib_extension] + v3track flags_file 2 + +@@ -163,7 +173,11 @@ proc libstdc++_init { testfile } { + + # Locate libgcc.a so we don't need to account for different values of + # SHLIB_EXT on different platforms +- set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] ++ if {$test_installed} { ++ set gccdir "" ++ } else { ++ set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] ++ } + if {$gccdir != ""} { + set gccdir [file dirname $gccdir] + append ld_library_path_tmp ":${gccdir}" +@@ -183,7 +197,11 @@ proc libstdc++_init { testfile } { + + # Locate libgomp. This is only required for parallel mode. + set v3-libgomp 0 +- set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext] ++ if {$test_installed} { ++ set libgompdir "" ++ } else { ++ set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext] ++ } + if {$libgompdir != ""} { + set v3-libgomp 1 + set libgompdir [file dirname $libgompdir] +@@ -205,7 +223,12 @@ proc libstdc++_init { testfile } { + + # Locate libstdc++ shared library. (ie libstdc++.so.) + set v3-sharedlib 0 +- set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext] ++ if {$test_installed} { ++ set sharedlibdir "" ++ set v3-sharedlib 1 ++ } else { ++ set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext] ++ } + if {$sharedlibdir != ""} { + if { ([string match "*-*-gnu*" $target_triplet] + || [string match "*-*-linux*" $target_triplet] diff --git a/patches/musl-ssp.diff b/patches/musl-ssp.diff new file mode 100644 index 0000000..5a33a73 --- /dev/null +++ b/patches/musl-ssp.diff @@ -0,0 +1,21 @@ +See https://git.alpinelinux.org/aports/commit/?id=d307f133de1f8a9993ab0d6fd51176b9373df4c3 +and https://www.openwall.com/lists/musl/2014/11/05/3 + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -1126,8 +1126,15 @@ proper position among the other output f + + #ifndef LINK_SSP_SPEC + #ifdef TARGET_LIBC_PROVIDES_SSP ++#if DEFAULT_LIBC == LIBC_MUSL ++/* When linking without -fstack-protector-something but including objects that ++ were built with -fstack-protector-something, calls to __stack_chk_fail_local ++ can be emitted. Thus -lssp_nonshared must be linked unconditionally. */ ++#define LINK_SSP_SPEC "-lssp_nonshared" ++#else + #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ + "|fstack-protector-strong|fstack-protector-explicit:}" ++#endif + #else + #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ + "|fstack-protector-strong|fstack-protector-explicit" \ diff --git a/patches/note-gnu-stack.diff b/patches/note-gnu-stack.diff new file mode 100644 index 0000000..b1aec35 --- /dev/null +++ b/patches/note-gnu-stack.diff @@ -0,0 +1,125 @@ +# DP: Add .note.GNU-stack sections for gcc's crt files, libffi and boehm-gc +# DP: Taken from FC. + +gcc/ + +2004-09-20 Jakub Jelinek + + * config/rs6000/ppc-asm.h: Add .note.GNU-stack section also + on ppc64-linux. + + * config/ia64/lib1funcs.asm: Add .note.GNU-stack section on + ia64-linux. + * config/ia64/crtbegin.asm: Likewise. + * config/ia64/crtend.asm: Likewise. + * config/ia64/crti.asm: Likewise. + * config/ia64/crtn.asm: Likewise. + +2004-05-14 Jakub Jelinek + + * config/ia64/linux.h (TARGET_ASM_FILE_END): Define. + +libffi/ + +2007-05-11 Daniel Jacobowitz + + * src/arm/sysv.S: Fix ARM comment marker. + +2005-02-08 Jakub Jelinek + + * src/alpha/osf.S: Add .note.GNU-stack on Linux. + * src/s390/sysv.S: Likewise. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + * src/x86/unix64.S: Likewise. + * src/x86/sysv.S: Likewise. + * src/sparc/v8.S: Likewise. + * src/sparc/v9.S: Likewise. + * src/m68k/sysv.S: Likewise. + * src/ia64/unix.S: Likewise. + * src/arm/sysv.S: Likewise. + +--- + gcc/config/ia64/linux.h | 3 +++ + gcc/config/rs6000/ppc-asm.h | 2 +- + libgcc/config/ia64/crtbegin.S | 4 ++++ + libgcc/config/ia64/crtend.S | 4 ++++ + libgcc/config/ia64/crti.S | 4 ++++ + libgcc/config/ia64/crtn.S | 4 ++++ + libgcc/config/ia64/lib1funcs.S | 4 ++++ + 9 files changed, 39 insertions(+), 13 deletions(-) + +--- a/src/libgcc/config/ia64/crtbegin.S ++++ b/src/libgcc/config/ia64/crtbegin.S +@@ -185,3 +185,7 @@ __do_global_dtors_aux: + .weak __cxa_finalize + #endif + .weak _Jv_RegisterClasses ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/crtend.S ++++ b/src/libgcc/config/ia64/crtend.S +@@ -114,3 +114,7 @@ __do_global_ctors_aux: + + br.ret.sptk.many rp + .endp __do_global_ctors_aux ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/crti.S ++++ b/src/libgcc/config/ia64/crti.S +@@ -51,3 +51,7 @@ _fini: + .body + + # end of crti.S ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/crtn.S ++++ b/src/libgcc/config/ia64/crtn.S +@@ -41,3 +41,7 @@ + br.ret.sptk.many b0 + + # end of crtn.S ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/lib1funcs.S ++++ b/src/libgcc/config/ia64/lib1funcs.S +@@ -793,3 +793,7 @@ __floattitf: + .endp __floattitf + #endif + #endif ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -79,5 +79,8 @@ do { \ + #undef TARGET_INIT_LIBFUNCS + #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs + ++#undef TARGET_ASM_FILE_END ++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack ++ + /* Define this to be nonzero if static stack checking is supported. */ + #define STACK_CHECK_STATIC_BUILTIN 1 +--- a/src/gcc/config/rs6000/ppc-asm.h ++++ b/src/gcc/config/rs6000/ppc-asm.h +@@ -384,7 +384,7 @@ GLUE(.L,name): \ + #endif + #endif + +-#if defined __linux__ && !defined __powerpc64__ ++#if defined __linux__ + .section .note.GNU-stack + .previous + #endif diff --git a/patches/pr106641.diff b/patches/pr106641.diff new file mode 100644 index 0000000..6e69644 --- /dev/null +++ b/patches/pr106641.diff @@ -0,0 +1,52 @@ +# DP: Fix PR demangler/106641, taken from the trunk. + +libiberty: fix resource exhaustion in rust demangler (PR demangler/106641) + +demangle_binder() parses the bound_lifetimes count as a base-62 +integer with no upper bound. A crafted symbol can encode a huge +lifetime count in very few bytes, causing OOM or CPU hang. + +Cap bound_lifetimes at 1024 and check rdm->errored in the loop +so it bails out early on errors during iteration. + +libiberty/ChangeLog: + + PR demangler/106641 + * rust-demangle.c (demangle_binder): Reject bound_lifetimes + above 1024 to prevent resource exhaustion from crafted symbols. + Add rdm->errored check in the loop condition. + * testsuite/rust-demangle-expected: Add regression test. + +--- a/src/libiberty/rust-demangle.c ++++ b/src/libiberty/rust-demangle.c +@@ -651,10 +651,17 @@ demangle_binder (struct rust_demangler *rdm) + return; + + bound_lifetimes = parse_opt_integer_62 (rdm, 'G'); ++ /* Reject implausibly large lifetime counts to prevent ++ resource exhaustion from crafted symbols (PR demangler/106641). */ ++ if (bound_lifetimes > 1024) ++ { ++ rdm->errored = 1; ++ return; ++ } + if (bound_lifetimes > 0) + { + PRINT ("for<"); +- for (i = 0; i < bound_lifetimes; i++) ++ for (i = 0; i < bound_lifetimes && !rdm->errored; i++) + { + if (i > 0) + PRINT (", "); +--- a/src/libiberty/testsuite/rust-demangle-expected ++++ b/src/libiberty/testsuite/rust-demangle-expected +@@ -321,3 +321,9 @@ foo + --format=rust + _RNvC9backtrace3foo.llvm.A5310EB9 + backtrace::foo ++# ++# PR demangler/106641: crafted symbol with huge lifetime count ++# should not cause resource exhaustion. ++--format=rust ++_RINvC4te_C4tokpppppppppppFFFFFFGFpppppppppKj2_FFFFFFFFFFFFFE ++_RINvC4te_C4tokpppppppppppFFFFFFGFpppppppppKj2_FFFFFFFFFFFFFE diff --git a/patches/pr119364-1.diff b/patches/pr119364-1.diff new file mode 100644 index 0000000..478abae --- /dev/null +++ b/patches/pr119364-1.diff @@ -0,0 +1,2035 @@ +--- a/src/gcc/cobol/cbldiag.h ++++ b/src/gcc/cobol/cbldiag.h +@@ -97,7 +97,7 @@ void cbl_unimplemented_at( const YYLTYP + * be localized and fwrite directly to standard out. dbgmsg is activated by + * -fflex-debug or -fyacc-debug. + */ +-void dbgmsg( const char fmt[], ... ); ++void dbgmsg( const char fmt[], ... ) ATTRIBUTE_PRINTF_1; + + void gcc_location_set( const YYLTYPE& loc ); + +--- a/src/gcc/cobol/cdf-copy.cc ++++ b/src/gcc/cobol/cdf-copy.cc +@@ -34,6 +34,7 @@ + // + // We regret any confusion engendered. + ++#include "config.h" + #include + + #include "cobol-system.h" +--- a/src/gcc/cobol/cdf.y ++++ b/src/gcc/cobol/cdf.y +@@ -245,8 +245,8 @@ apply_cdf_turn( exception_turns_t& turns + %printer { fprintf(yyo, "%s '%s'", + keyword_str($$.token), + $$.string? $$.string : "" ); } +-%printer { fprintf(yyo, "%ld '%s'", +- $$.number, $$.string? $$.string : "" ); } ++%printer { fprintf(yyo, HOST_SIZE_T_PRINT_DEC " '%s'", ++ (fmt_size_t)$$.number, $$.string? $$.string : "" ); } + + %type NAME NUMSTR LITERAL PSEUDOTEXT + %type LSUB RSUB SUBSCRIPT +@@ -828,7 +828,8 @@ defined_cmd( const char arg[] ) + + if( yydebug ) { + if( cdf_name->second.is_numeric() ) { +- dbgmsg("%s: added -D %s = %ld", __func__, name, cdf_name->second.as_number()); ++ dbgmsg("%s: added -D %s = " HOST_SIZE_T_PRINT_DEC, ++ __func__, name, (fmt_size_t)cdf_name->second.as_number()); + } else { + dbgmsg("%s: added -D %s = \"%s\"", __func__, name, cdf_name->second.string); + } +--- a/src/gcc/cobol/gcobolspec.cc ++++ b/src/gcc/cobol/gcobolspec.cc +@@ -541,13 +541,14 @@ lang_specific_driver (struct cl_decoded_ + #endif + if( verbose && new_options != original_options ) + { +- fprintf(stderr, _("Driving: (%ld)\n"), new_option_count); ++ fprintf(stderr, _("Driving: (" HOST_SIZE_T_PRINT_DEC ")\n"), ++ (fmt_size_t)new_option_count); + for(size_t i=0; iname, k.called); ++ fprintf(stderr, "\t#%-3" GCC_PRISZ "u %s calls %s ", ++ (fmt_size_t)k.caller, cbl_label_of(symbol_at(k.caller))->name, ++ k.called); + char ch = '['; + for( auto func : v ) { + fprintf( stderr, "%c %s", ch, IDENTIFIER_POINTER(DECL_NAME(func.node)) ); +@@ -2310,9 +2313,11 @@ combined_name(cbl_label_t *label) + { + strcat(retval, mangled_program_name); + } +- sprintf(ach, ".%ld", current_function->program_id_number); ++ sprintf(ach, "." HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)current_function->program_id_number); + strcat(retval, ach); +- sprintf(ach, ".%ld", symbol_label_id(label)); ++ sprintf(ach, "." HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)symbol_label_id(label)); + strcat(retval, ach); + free(mangled_program_name); + free(section); +@@ -2358,11 +2363,11 @@ section_label(struct cbl_proc_t *procedu + + cbl_label_t *label = procedure->label; + // The _initialize_program section isn't relevant. +- char *psz = xasprintf("%s SECTION %s in %s (%ld)", ++ char *psz = xasprintf("%s SECTION %s in %s (" HOST_SIZE_T_PRINT_DEC ")", + ASM_COMMENT_START, + label->name, + current_function->our_unmangled_name, +- deconflictor); ++ (fmt_size_t)deconflictor); + gg_insert_into_assembler(psz); + free(psz); + +@@ -2410,12 +2415,12 @@ paragraph_label(struct cbl_proc_t *proce + + char *psz1 = + xasprintf( +- "%s PARAGRAPH %s of %s in %s (%ld)", ++ "%s PARAGRAPH %s of %s in %s (" HOST_SIZE_T_PRINT_DEC ")", + ASM_COMMENT_START, + para_name ? para_name: "" , + section_name ? section_name: "(null)" , + current_function->our_unmangled_name ? current_function->our_unmangled_name: "" , +- deconflictor ); ++ (fmt_size_t)deconflictor ); + + gg_insert_into_assembler(psz1); + +@@ -2527,8 +2532,8 @@ leave_procedure(struct cbl_proc_t *proce + gg_append_statement(procedure->exit.label); + + char *psz; +- psz = xasprintf("_procret.%ld:", +- symbol_label_id(procedure->label)); ++ psz = xasprintf("_procret." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)symbol_label_id(procedure->label)); + gg_insert_into_assembler(psz); + free(psz); + pseudo_return_pop(procedure); +@@ -3009,12 +3014,12 @@ parser_perform(cbl_label_t *label, bool + para_name = label->name; + sect_name = section_label->name; + sprintf(ach, +- "%s PERFORM %s of %s of %s (%ld)", ++ "%s PERFORM %s of %s of %s (" HOST_SIZE_T_PRINT_DEC ")", + ASM_COMMENT_START, + para_name, + sect_name, + program_name, +- deconflictor); ++ (fmt_size_t)deconflictor); + + gg_insert_into_assembler(ach); + } +@@ -3022,19 +3027,19 @@ parser_perform(cbl_label_t *label, bool + { + sect_name = label->name; + sprintf(ach, +- "%s PERFORM %s of %s (%ld)", ++ "%s PERFORM %s of %s (" HOST_SIZE_T_PRINT_DEC ")", + ASM_COMMENT_START, + sect_name, + program_name, +- deconflictor); ++ (fmt_size_t)deconflictor); + gg_insert_into_assembler(ach); + } + + if( !suppress_nexting ) + { + sprintf(ach, +- "_proccall.%ld.%d:", +- symbol_label_id(label), ++ "_proccall." HOST_SIZE_T_PRINT_DEC ".%d:", ++ (fmt_size_t)symbol_label_id(label), + call_counter++); + gg_insert_into_assembler( ach ); + } +@@ -3082,8 +3087,8 @@ parser_perform_times( cbl_label_t *proc_ + char ach[256]; + size_t our_pseudo_label = pseudo_label++; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + tree counter = gg_define_variable(LONG); +@@ -3104,8 +3109,8 @@ parser_perform_times( cbl_label_t *proc_ + WEND + + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler(ach); + } + +@@ -3182,8 +3187,8 @@ internal_perform_through( cbl_label_t *p + { + char ach[256]; + sprintf(ach, +- "_proccall.%ld.%d:", +- symbol_label_id(proc_2), ++ "_proccall." HOST_SIZE_T_PRINT_DEC ".%d:", ++ (fmt_size_t)symbol_label_id(proc_2), + call_counter++); + gg_insert_into_assembler(ach); + } +@@ -3232,8 +3237,8 @@ internal_perform_through_times( cbl_la + + char ach[256]; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + tree counter = gg_define_variable(LONG); +@@ -3249,8 +3254,8 @@ internal_perform_through_times( cbl_la + WEND + + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + } + +@@ -3561,7 +3566,8 @@ parser_enter_program( const char *funcna + if( parent_index ) + { + // This is a nested function. Tack on the parent_index to the end of it. +- sprintf(funcname, "%s.%ld", mangled_name, parent_index); ++ sprintf(funcname, "%s." HOST_SIZE_T_PRINT_DEC, mangled_name, ++ (fmt_size_t)parent_index); + } + else + { +@@ -3727,8 +3733,8 @@ parser_init_list_size(int count_of_varia + vti_list_size = count_of_variables; + char ach[48]; + sprintf(ach, +- "..variables_to_init_%ld", +- current_function->our_symbol_table_index); ++ "..variables_to_init_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)current_function->our_symbol_table_index); + tree array_of_variables_type = build_array_type_nelts(VOID_P, + count_of_variables+1); + vti_array = gg_define_variable( array_of_variables_type, +@@ -3766,8 +3772,8 @@ parser_init_list() + + char ach[48]; + sprintf(ach, +- "..variables_to_init_%ld", +- current_function->our_symbol_table_index); ++ "..variables_to_init_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)current_function->our_symbol_table_index); + tree array = gg_trans_unit_var_decl(ach); + gg_call(VOID, + "__gg__variables_to_init", +@@ -3948,7 +3954,7 @@ psa_FldLiteralN(struct cbl_field_t *fiel + + static size_t our_index = 0; + +- sprintf(id_string, ".%ld", ++our_index); ++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC, (fmt_size_t)++our_index); + strcpy(base_name, field->name); + strcat(base_name, id_string); + +@@ -3985,7 +3991,7 @@ psa_FldBlob(struct cbl_field_t *var ) + + static size_t our_index = 0; + +- sprintf(id_string, ".%ld", ++our_index); ++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC, (fmt_size_t)++our_index); + strcpy(base_name, var->name); + strcat(base_name, id_string); + +@@ -5056,7 +5062,8 @@ parser_assign( size_t nC, cbl_num_result + { + TRACE1_HEADER + char ach[32]; +- sprintf(ach, "%ld target%s", nC, nC==1 ? "" : "s"); ++ sprintf(ach, HOST_SIZE_T_PRINT_DEC " target%s", ++ (fmt_size_t)nC, nC==1 ? "" : "s"); + TRACE1_TEXT(ach); + if( on_error ) + { +@@ -5075,7 +5082,8 @@ parser_assign( size_t nC, cbl_num_result + TRACE1 + { + char ach[48]; +- sprintf(ach, "Processing target number %ld", i); ++ sprintf(ach, "Processing target number " HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)i); + TRACE1_INDENT + TRACE1_TEXT(ach); + } +@@ -6129,7 +6137,8 @@ parser_free( size_t n, cbl_refer_t refer + gcc_assert( ! p->is_refmod_reference() ); + if( !(p->field->type == FldPointer || p->addr_of || (p->field->attr & based_e)) ) + { +- dbgmsg("Deallocating %s means it has to be FldPointer or addr_of or based_e"); ++ dbgmsg("Deallocating %s means it has to be FldPointer or addr_of or based_e", ++ p->field->name); + } + gcc_assert( p->field->type == FldPointer || p->addr_of || (p->field->attr & based_e) ); + +@@ -6403,8 +6412,8 @@ parser_division(cbl_division_t division, + // We need a pointer to the array of program names + char ach[2*sizeof(cbl_name_t)]; + sprintf(ach, +- "..accessible_program_list_%ld", +- current_function->our_symbol_table_index); ++ "..accessible_program_list_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)current_function->our_symbol_table_index); + tree prog_list = gg_define_variable(build_pointer_type(CHAR_P), + ach, vs_file_static); + +@@ -6416,8 +6425,8 @@ parser_division(cbl_division_t division, + tree pointer_type = build_pointer_type(function_type); + tree constructed_array_type = build_array_type_nelts(pointer_type, 1); + sprintf(ach, +- "..accessible_program_pointers_%ld", +- current_function->our_symbol_table_index); ++ "..accessible_program_pointers_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)current_function->our_symbol_table_index); + tree prog_pointers = gg_define_variable( + build_pointer_type(constructed_array_type), + ach, +@@ -7720,8 +7729,8 @@ perform_outofline_before_until(struct cb + char ach[256]; + size_t our_pseudo_label = pseudo_label++; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + parser_if(varys[0].until); +@@ -7743,8 +7752,8 @@ perform_outofline_before_until(struct cb + // Label the bottom of the PERFORM + gg_append_statement( tgt->addresses.exit.label ); + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + } + +@@ -7775,8 +7784,8 @@ perform_outofline_after_until(struct cbl + char ach[256]; + size_t our_pseudo_label = pseudo_label++; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + create_iline_address_pairs(tgt); +@@ -7806,8 +7815,8 @@ perform_outofline_after_until(struct cbl + // Label the bottom of the PERFORM + gg_append_statement( tgt->addresses.exit.label ); + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + } + +@@ -7871,8 +7880,8 @@ perform_outofline_testafter_varying(stru + char ach[256]; + size_t our_pseudo_label = pseudo_label++; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + create_iline_address_pairs(tgt); +@@ -7926,8 +7935,8 @@ perform_outofline_testafter_varying(stru + // Arriving here means that we all of the conditions were + // true. So, we're done. + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + } + +@@ -7988,8 +7997,8 @@ perform_outofline_before_varying( stru + char ach[256]; + size_t our_pseudo_label = pseudo_label++; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + // Initialize all varying: +@@ -8069,8 +8078,8 @@ perform_outofline_before_varying( stru + // We have, you see, reached the egress: + gg_append_statement( tgt->addresses.exit.label ); + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + } + +@@ -8277,7 +8286,7 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "LABEL [%ld]:", i); ++ sprintf(ach, "LABEL [" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)i); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -8288,7 +8297,8 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "LABEL CONDINTO[%ld]:", i); ++ sprintf(ach, "LABEL CONDINTO[" HOST_SIZE_T_PRINT_DEC "]:", ++ (fmt_size_t)i); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -8299,7 +8309,8 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "LABEL CONDBACK[%ld]:", i); ++ sprintf(ach, "LABEL CONDBACK[" HOST_SIZE_T_PRINT_DEC "]:", ++ (fmt_size_t)i); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -8334,7 +8345,8 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "GOTO [%ld]:", i-1); ++ sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:", ++ (fmt_size_t)(i-1)); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -8368,7 +8380,8 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "GOTO [%ld]:", N-1); ++ sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:", ++ (fmt_size_t)(N-1)); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -8385,7 +8398,8 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "GOTO [%ld]:", i-1); ++ sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:", ++ (fmt_size_t)(i-1)); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -9964,7 +9978,7 @@ inspect_replacing(int backward, + void + parser_inspect(cbl_refer_t identifier_1, + bool backward, +- unsigned long n_operations, ++ size_t n_operations, + cbx_inspect_t* operations) + { + Analyze(); +@@ -10185,7 +10199,8 @@ parser_intrinsic_callv( cbl_field_t *tgt + SHOW_PARSE_HEADER + SHOW_PARSE_TEXT(" of ") + SHOW_PARSE_TEXT(function_name) +- fprintf(stderr, " with %zd parameters", nrefs); ++ fprintf(stderr, " with " HOST_SIZE_T_PRINT_DEC " parameters", ++ (fmt_size_t)nrefs); + SHOW_PARSE_END + } + +@@ -12686,7 +12701,7 @@ parser_bitop( struct cbl_field_t *tgt, + { + SHOW_PARSE_HEADER + SHOW_PARSE_FIELD( " switch: ", a) +- fprintf(stderr, " mask: %lx", bitmask); ++ fprintf(stderr, " mask: " HOST_SIZE_T_PRINT_HEX_PURE, (fmt_size_t)bitmask); + fprintf(stderr, " op: %s", ops[op]); + SHOW_PARSE_FIELD( " target ", tgt) + SHOW_PARSE_END +@@ -12770,7 +12785,7 @@ parser_bitwise_op(struct cbl_field_t *tg + { + SHOW_PARSE_HEADER + SHOW_PARSE_FIELD( " switch: ", a) +- fprintf(stderr, " mask: %lx", bitmask); ++ fprintf(stderr, " mask: " HOST_SIZE_T_PRINT_HEX_PURE, (fmt_size_t)bitmask); + fprintf(stderr, " op: %s", ops[op]); + SHOW_PARSE_FIELD( " target ", tgt) + SHOW_PARSE_END +@@ -12974,11 +12989,11 @@ parser_program_hierarchy( const struct c + } + char ach[128]; + sprintf(ach, +- "%ld %s%s parent:%ld", +- hier.labels[i].ordinal, ++ HOST_SIZE_T_PRINT_DEC " %s%s parent:" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)hier.labels[i].ordinal, + hier.labels[i].label.name, + hier.labels[i].label.common ? " COMMON" : "", +- hier.labels[i].label.parent); ++ (fmt_size_t)hier.labels[i].label.parent); + SHOW_PARSE_TEXT(ach); + } + } +@@ -13107,12 +13122,14 @@ parser_program_hierarchy( const struct c + + char ach[2*sizeof(cbl_name_t)]; + tree names_table_type = build_array_type_nelts(CHAR_P, mol->second.size()+1); +- sprintf(ach, "..our_accessible_functions_%ld", caller); ++ sprintf(ach, "..our_accessible_functions_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)caller); + tree the_names_table = gg_define_variable(names_table_type, ach, vs_file_static); + + // Here is where we build a table out of constructors: + tree constructed_array_type = build_array_type_nelts(pointer_type, mol->second.size()); +- sprintf(ach, "..our_constructed_table_%ld", caller); ++ sprintf(ach, "..our_constructed_table_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)caller); + tree the_constructed_table = gg_define_variable(constructed_array_type, ach, vs_file_static); + + tree constr_names = make_node(CONSTRUCTOR); +@@ -13130,7 +13147,8 @@ parser_program_hierarchy( const struct c + callee != mol->second.end(); + callee++ ) + { +- sprintf(ach, "%s.%ld", (*callee)->name, (*callee)->parent_node->our_index); ++ sprintf(ach, "%s." HOST_SIZE_T_PRINT_DEC, (*callee)->name, ++ (fmt_size_t)(*callee)->parent_node->our_index); + + CONSTRUCTOR_APPEND_ELT( CONSTRUCTOR_ELTS(constr_names), + build_int_cst_type(SIZE_T, i), +@@ -13156,11 +13174,13 @@ parser_program_hierarchy( const struct c + + // And put a pointer to that table into the file-static variable set aside + // for it: +- sprintf(ach, "..accessible_program_list_%ld", caller); ++ sprintf(ach, "..accessible_program_list_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)caller); + tree accessible_list_var_decl = gg_trans_unit_var_decl(ach); + gg_assign( accessible_list_var_decl, gg_get_address_of(the_names_table) ); + +- sprintf(ach, "..accessible_program_pointers_%ld", caller); ++ sprintf(ach, "..accessible_program_pointers_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)caller); + tree accessible_programs_decl = gg_trans_unit_var_decl(ach); + gg_assign( accessible_programs_decl, gg_get_address_of(the_constructed_table) ); + } +@@ -13178,7 +13198,8 @@ parser_set_handled(ec_type_t ec_handled) + { + SHOW_PARSE_HEADER + char ach[64]; +- sprintf(ach, "ec_type_t: 0x%lx", size_t(ec_handled)); ++ sprintf(ach, "ec_type_t: 0x" HOST_SIZE_T_PRINT_HEX_PURE, ++ (fmt_size_t)ec_handled); + SHOW_PARSE_TEXT(ach); + SHOW_PARSE_END + } +@@ -13247,7 +13268,7 @@ parser_set_numeric(struct cbl_field_t *t + SHOW_PARSE_TEXT(tgt->name) + SHOW_PARSE_TEXT(" to ") + char ach[32]; +- sprintf(ach, "%ld", value); ++ sprintf(ach, HOST_SIZE_T_PRINT_DEC, (fmt_size_t)value); + SHOW_PARSE_TEXT(ach); + SHOW_PARSE_END + } +@@ -15969,12 +15990,14 @@ psa_new_var_decl(cbl_field_t *new_var, c + && symbol_at(new_var->parent)->type == SymField ) + { + // We have a parent that is a field +- sprintf(id_string, ".%ld_%ld", our_index, new_var->parent); ++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC "_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)our_index, (fmt_size_t)new_var->parent); + } + else + { + // The parent is zero, so it'll be implied: +- sprintf(id_string, ".%ld", our_index); ++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)our_index); + } + + if(strcasecmp(new_var->name, "filler") == 0) +@@ -16215,29 +16238,30 @@ parser_symbol_add(struct cbl_field_t *ne + } + while(0); + +- fprintf(stderr, " %2.2d %s<%s> off:%zd " +- "msiz:%d cap:%d dig:%d rdig:%d attr:0x%lx loc:%p", ++ fprintf(stderr, " %2.2d %s<%s> off:" HOST_SIZE_T_PRINT_DEC " " ++ "msiz:%d cap:%d dig:%d rdig:%d attr:0x" HOST_SIZE_T_PRINT_HEX_PURE " loc:%p", + new_var->level, + new_var->name, + cbl_field_type_str(new_var->type), +- new_var->offset, ++ (fmt_size_t)new_var->offset, + new_var->data.memsize, + new_var->data.capacity, + new_var->data.digits, + new_var->data.rdigits, +- new_var->attr, ++ (fmt_size_t)new_var->attr, + (void*)new_var); + + if( is_table(new_var) ) + { +- fprintf(stderr," OCCURS:%zd", new_var->occurs.ntimes()); ++ fprintf(stderr," OCCURS:" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)new_var->occurs.ntimes()); + } + cbl_field_t *parent = parent_of(new_var); + if( parent ) + { + fprintf(stderr, +- " parent:(%zd)%s", +- new_var->parent, ++ " parent:(" HOST_SIZE_T_PRINT_DEC ")%s", ++ (fmt_size_t)new_var->parent, + parent->name); + } + else +@@ -16250,8 +16274,8 @@ parser_symbol_add(struct cbl_field_t *ne + if( e->type == SymFile ) + { + fprintf(stderr, +- " parent_file:(%zd)%s", +- new_var->parent, ++ " parent_file:(" HOST_SIZE_T_PRINT_DEC ")%s", ++ (fmt_size_t)new_var->parent, + e->elem.file.name); + if( e->elem.file.attr & external_e ) + { +@@ -16706,9 +16730,10 @@ parser_symbol_add(struct cbl_field_t *ne + if( !bytes_to_allocate ) + { + fprintf(stderr, +- "bytes_to_allocate is zero for %s (symbol number %ld)\n", ++ "bytes_to_allocate is zero for %s (symbol number " ++ HOST_SIZE_T_PRINT_DEC ")\n", + new_var->name, +- new_var->our_index); ++ (fmt_size_t)new_var->our_index); + gcc_assert(bytes_to_allocate); + } + +@@ -16742,16 +16767,16 @@ parser_symbol_add(struct cbl_field_t *ne + { + // Avoid doubling up on leading underscore + sprintf(achDataName, +- "%s_data_%lu", ++ "%s_data_" HOST_SIZE_T_PRINT_UNSIGNED, + new_var->name, +- sv_data_name_counter++); ++ (fmt_size_t)sv_data_name_counter++); + } + else + { + sprintf(achDataName, +- "_%s_data_%lu", ++ "_%s_data_" HOST_SIZE_T_PRINT_UNSIGNED, + new_var->name, +- sv_data_name_counter++); ++ (fmt_size_t)sv_data_name_counter++); + } + + if( new_var->attr & external_e ) +--- a/src/gcc/cobol/gengen.cc ++++ b/src/gcc/cobol/gengen.cc +@@ -393,13 +393,13 @@ show_type(tree type) + + case REAL_TYPE: + sprintf(ach, +- "%3ld-bit REAL", ++ "%3" PRId64 "-bit REAL", + TREE_INT_CST_LOW(TYPE_SIZE(type))); + break; + + case INTEGER_TYPE: + sprintf(ach, +- "%3ld-bit %s INT", ++ "%3" PRId64 "-bit %s INT", + TREE_INT_CST_LOW(TYPE_SIZE(type)), + (TYPE_UNSIGNED(type) ? "unsigned" : " signed")); + break; +@@ -892,7 +892,8 @@ gg_unique_in_function(const char *var_na + char *retval = (char *)xmalloc(strlen(var_name)+32); + if( (vs_scope == vs_stack || vs_scope == vs_static) ) + { +- sprintf(retval, "%s.%ld", var_name, current_function->program_id_number); ++ sprintf(retval, "%s." HOST_SIZE_T_PRINT_DEC, var_name, ++ (fmt_size_t)current_function->program_id_number); + } + else + { +--- a/src/gcc/cobol/genmath.cc ++++ b/src/gcc/cobol/genmath.cc +@@ -725,7 +725,7 @@ parser_add( size_t nC, cbl_num_result_t + SHOW_PARSE + { + SHOW_PARSE_HEADER +- fprintf(stderr, " A[%ld]:", nA); ++ fprintf(stderr, " A[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nA); + for(size_t i=0; i 0) +@@ -737,7 +737,7 @@ parser_add( size_t nC, cbl_num_result_t + + fprintf(stderr, "%s", format==giving_e? " GIVING" : ""); + +- fprintf(stderr, " C[%ld]:", nC); ++ fprintf(stderr, " C[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nC); + for(size_t i=0; i 0) +@@ -1412,7 +1412,7 @@ parser_subtract(size_t nC, cbl_num_resul + SHOW_PARSE + { + SHOW_PARSE_HEADER +- fprintf(stderr, " A[%ld]:", nA); ++ fprintf(stderr, " A[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nA); + for(size_t i=0; i 0) +@@ -1422,7 +1422,7 @@ parser_subtract(size_t nC, cbl_num_resul + fprintf(stderr, "%s", A[i].field->name); + } + +- fprintf(stderr, " B[%ld]:", nB); ++ fprintf(stderr, " B[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nB); + for(size_t i=0; i 0) +@@ -1432,7 +1432,7 @@ parser_subtract(size_t nC, cbl_num_resul + fprintf(stderr, "%s", B[i].field->name); + } + +- fprintf(stderr, " C[%ld]:", nC); ++ fprintf(stderr, " C[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nC); + for(size_t i=0; i 0) +--- a/src/gcc/cobol/lexio.cc ++++ b/src/gcc/cobol/lexio.cc +@@ -28,6 +28,7 @@ + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + ++#include "config.h" + #include + #include "cobol-system.h" + #include "cbldiag.h" +@@ -260,9 +261,10 @@ recognize_replacements( filespan_t mfile + found = span_t( cm[1].first, cm[1].second ); + if( yy_flex_debug ) { + size_t n = count_newlines(mfile.data, found.p); +- dbgmsg("%s:%d first '%.*s' is on line %zu (offset %zu)", __func__, __LINE__, ++ dbgmsg("%s:%d first '%.*s' is on line " HOST_SIZE_T_PRINT_UNSIGNED ++ " (offset " HOST_SIZE_T_PRINT_UNSIGNED ")", __func__, __LINE__, + directive.before.size(), directive.before.p, +- ++n, found.p - mfile.data); ++ (fmt_size_t)++n, (fmt_size_t)(found.p - mfile.data)); + } + } else { + dbgmsg("%s:%d not found: '%s' in \n'%.*s'", __func__, __LINE__, +@@ -290,8 +292,10 @@ recognize_replacements( filespan_t mfile + + if( yy_flex_debug ) { + size_t n = std::count((const char *)mfile.data, recognized.before.p, '\n'); +- dbgmsg( "%s:%d: line %zu @ %zu: '%s'\n/%.*s/%.*s/", __func__, __LINE__, +- ++n, next.found.p - mfile.data, ++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ++ " @ " HOST_SIZE_T_PRINT_UNSIGNED ": '%s'\n/%.*s/%.*s/", ++ __func__, __LINE__, ++ (fmt_size_t)++n, (fmt_size_t)(next.found.p - mfile.data), + next.directive.before.p, + int(recognized.before.size()), recognized.before.p, + int(recognized.after.size()), recognized.after.p ); +@@ -308,9 +312,10 @@ recognize_replacements( filespan_t mfile + next.found = span_t( cm[1].first, cm[1].second ); + size_t n = std::count((const char *)mfile.data, next.found.p, '\n'); + if( false ) +- dbgmsg("%s:%d next '%.*s' will be on line %zu (offset %zu)", __func__, __LINE__, ++ dbgmsg("%s:%d next '%.*s' will be on line " HOST_SIZE_T_PRINT_UNSIGNED ++ " (offset " HOST_SIZE_T_PRINT_UNSIGNED ")", __func__, __LINE__, + next.directive.before.size(), next.directive.before.p, +- ++n, next.found.p - mfile.data); ++ (fmt_size_t)++n, (fmt_size_t)(next.found.p - mfile.data)); + } + pnext = std::min_element(futures.begin(), futures.end()); + } +@@ -344,8 +349,10 @@ check_source_format_directive( filespan_ + break; + } + mfile.cur = const_cast(cm[0].second); +- dbgmsg( "%s:%d: %s format set, on line %zu", __func__, __LINE__, +- indicator.column == 7? "FIXED" : "FREE", mfile.lineno() ); ++ dbgmsg( "%s:%d: %s format set, on line " HOST_SIZE_T_PRINT_UNSIGNED, ++ __func__, __LINE__, ++ indicator.column == 7? "FIXED" : "FREE", ++ (fmt_size_t)mfile.lineno() ); + erase_line(const_cast(cm[0].first), + const_cast(cm[0].second)); + } +@@ -724,7 +731,7 @@ parse_replacing_pair( const char *stmt, + // This eliminated a compiler warning about "format-overflow" + yywarn("CDF syntax error"); + } +- pair.stmt = span_t(0UL, stmt); ++ pair.stmt = span_t(size_t(0), stmt); + pair.replace = replace_t(); + } + return pair; +@@ -764,9 +771,9 @@ parse_replace_pairs( const char *stmt, c + // Report findings. + if( false && yy_flex_debug ) { + for( size_t i=0; i < cm.size(); i++ ) { +- dbgmsg("%s: %s %zu: '%.*s'", __func__, ++ dbgmsg("%s: %s " HOST_SIZE_T_PRINT_UNSIGNED ": '%.*s'", __func__, + cm[i].matched? "Pair" : "pair", +- i, ++ (fmt_size_t)i, + cm[i].matched? int(cm[i].length()) : 0, + cm[i].matched? cm[i].first : ""); + } +@@ -825,9 +832,10 @@ parse_replace_pairs( const char *stmt, c + } + + if( yy_flex_debug ) { +- dbgmsg( "%s:%d: %s: %zu pairs parsed from '%.*s'", __func__, __LINE__, +- parsed.done()? "done" : "not done", +- pairs.size(), parsed.stmt.size(), parsed.stmt.p ); ++ dbgmsg( "%s:%d: %s: " HOST_SIZE_T_PRINT_UNSIGNED " pairs parsed from '%.*s'", ++ __func__, __LINE__, ++ parsed.done() ? "done" : "not done", ++ (fmt_size_t)pairs.size(), parsed.stmt.size(), parsed.stmt.p ); + int i = 0; + for( const auto& replace : pairs ) { + dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__, +@@ -909,9 +917,10 @@ parse_copy_directive( filespan_t& mfile + if( yy_flex_debug ) { + size_t nnl = 1 + count_newlines(mfile.data, copy_stmt.p); + size_t nst = 1 + count_newlines(copy_stmt.p, copy_stmt.pend); +- dbgmsg("%s:%d: line %zu: COPY directive is %zu lines '%.*s'", ++ dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ++ ": COPY directive is " HOST_SIZE_T_PRINT_UNSIGNED " lines '%.*s'", + __func__, __LINE__, +- nnl, nst, copy_stmt.size(), copy_stmt.p); ++ (fmt_size_t)nnl, (fmt_size_t)nst, copy_stmt.size(), copy_stmt.p); + } + } + } +@@ -924,7 +933,8 @@ parse_copy_directive( filespan_t& mfile + outcome.partial_line = span_t(mfile.cur, copy_stmt.p); + + if( yy_flex_debug ) { +- dbgmsg("%zu expressions", std::count(pattern, pattern + sizeof(pattern), '(')); ++ dbgmsg(HOST_SIZE_T_PRINT_UNSIGNED " expressions", ++ (fmt_size_t)std::count(pattern, pattern + sizeof(pattern), '(')); + int i = 0; + for( const auto& m : cm ) { + if( m.matched ) +@@ -1008,8 +1018,9 @@ parse_replace_last_off( filespan_t& mfil + } + } + +- dbgmsg( "%s:%d: line %zu: parsed '%.*s', ", __func__, __LINE__, +- mfile.lineno(), int(cm[0].length()), cm[0].first ); ++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": parsed '%.*s', ", ++ __func__, __LINE__, ++ (fmt_size_t)mfile.lineno(), int(cm[0].length()), cm[0].first ); + + // Remove statement from input + erase_line(const_cast(cm[0].first), +@@ -1041,20 +1052,23 @@ parse_replace_text( filespan_t& mfile ) + gcc_assert(mfile.line_length() > 2); + if( pend[-1] == '\n' ) pend -= 2; + auto len = int(pend - mfile.cur); +- dbgmsg("%s:%d: line %zu: parsing '%.*s", __func__, __LINE__, +- current_lineno, len, mfile.cur); ++ dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": parsing '%.*s", ++ __func__, __LINE__, ++ (fmt_size_t)current_lineno, len, mfile.cur); + } + + if( ! regex_search(mfile.ccur(), (const char *)mfile.eodata, cm, re) ) { +- dbgmsg( "%s:%d: line %zu: not a REPLACE statement:\n'%.*s'", +- __func__, __LINE__, current_lineno, ++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ++ ": not a REPLACE statement:\n'%.*s'", ++ __func__, __LINE__, (fmt_size_t)current_lineno, + int(mfile.line_length()), mfile.cur ); + return span_t(); + } + + // Report findings. + if( yy_flex_debug ) { +- dbgmsg("%zu expressions", std::count(pattern, pattern + sizeof(pattern), '(')); ++ dbgmsg(HOST_SIZE_T_PRINT_UNSIGNED " expressions", ++ (fmt_size_t)std::count(pattern, pattern + sizeof(pattern), '(')); + int i = 0; + for( const auto& m : cm ) { + if( m.matched ) +@@ -1083,8 +1097,10 @@ parse_replace_text( filespan_t& mfile ) + replace_directives.push( replacements ); + + if( yy_flex_debug ) { +- dbgmsg( "%s:%d: line %zu: %zu pairs parsed from '%.*s'", __func__, __LINE__, +- current_lineno, replacements.size(), int(replace_stmt.size()), replace_stmt.p ); ++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": " HOST_SIZE_T_PRINT_UNSIGNED ++ " pairs parsed from '%.*s'", __func__, __LINE__, ++ (fmt_size_t)current_lineno, (fmt_size_t)replacements.size(), ++ int(replace_stmt.size()), replace_stmt.p ); + for( const auto& replace : replacements ) { + int i = 0; + dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__, +@@ -1164,8 +1180,9 @@ bytespan_t::append( const char *input, c + #if LEXIO + auto nq = std::count_if(data, eodata, isquote); + dbgmsg("%s:%3d: input ------ '%.*s'", __func__, __LINE__, int(eoinput - input), input); +- dbgmsg("%s:%3d: precondition '%.*s' (%zu: %s)", __func__, __LINE__, +- int(size()), data, nq, in_string()? "in string" : "not in string"); ++ dbgmsg("%s:%3d: precondition '%.*s' (" HOST_SIZE_T_PRINT_UNSIGNED ": %s)", ++ __func__, __LINE__, ++ int(size()), data, (fmt_size_t)nq, in_string()? "in string" : "not in string"); + #endif + if( !in_string() ) { // Remove trailing space unless it's part of a literal. + while(data < eodata && ISSPACE(eodata[-1])) eodata--; +@@ -1563,8 +1580,8 @@ cdftext::map_file( int fd ) { + cbl_err( "%s: could not prepare map file from FIFO %d", + __func__, input); + } +- if( false ) dbgmsg("%s: copied %ld bytes from FIFO", +- __func__, nout); ++ if( false ) dbgmsg("%s: copied " HOST_SIZE_T_PRINT_DEC " bytes from FIFO", ++ __func__, (fmt_size_t)nout); + } + } + } while( S_ISFIFO(sb.st_mode) ); +@@ -1774,8 +1791,8 @@ cdftext::process_file( filespan_t mfile, + std::copy_if(copied.erased_lines.p, copied.erased_lines.pend, ofs, + []( char ch ) { return ch == '\n'; } ); + struct { int in, out; filespan_t mfile; } copy; +- dbgmsg("%s:%d: line %zu, opening %s on fd %d", __func__, __LINE__, +- mfile.lineno(), ++ dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ", opening %s on fd %d", ++ __func__, __LINE__,mfile.lineno(), + copybook.source(), copybook.current()->fd); + copy.in = copybook.current()->fd; + copy.mfile = free_form_reference_format( copy.in ); +--- a/src/gcc/cobol/parse.y ++++ b/src/gcc/cobol/parse.y +@@ -28,6 +28,7 @@ + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + %code requires { ++ #include "config.h" + #include // Before cobol-system because it uses poisoned functions + #include "cobol-system.h" + #include "coretypes.h" +@@ -279,6 +280,7 @@ + } + + %{ ++#include "config.h" + #include // Before cobol-system because it uses poisoned functions + #include "cobol-system.h" + #include "coretypes.h" +@@ -945,18 +947,20 @@ + + %printer { fprintf(yyo, "%s (token %d)", keyword_str($$), $$ ); } relop + %printer { fprintf(yyo, "'%s'", $$? $$ : "" ); } NAME +-%printer { fprintf(yyo, "%s'%.*s'{%zu} %s", $$.prefix, int($$.len), $$.data, $$.len, ++%printer { fprintf(yyo, "%s'%.*s'{" HOST_SIZE_T_PRINT_UNSIGNED "} %s", ++ $$.prefix, int($$.len), $$.data, (fmt_size_t)$$.len, + $$.symbol_name()); } +-%printer { fprintf(yyo, "%s (1st of %zu)", ++%printer { fprintf(yyo, "%s (1st of " HOST_SIZE_T_PRINT_UNSIGNED ")", + $$->targets.empty()? "" : $$->targets.front().refer.field->name, +- $$->targets.size() ); } +-%printer { fprintf(yyo, "#%zu: %s", +- is_temporary($$)? 0 : field_index($$), ++ (fmt_size_t)$$->targets.size() ); } ++%printer { fprintf(yyo, "#" HOST_SIZE_T_PRINT_UNSIGNED ": %s", ++ is_temporary($$)? 0 : (fmt_size_t)field_index($$), + $$? name_of($$) : "" ); } name +-%printer { fprintf(yyo, "{%zu-%zu}", $$.min, $$.max ); } ++%printer { fprintf(yyo, "{" HOST_SIZE_T_PRINT_UNSIGNED "-" HOST_SIZE_T_PRINT_UNSIGNED "}", ++ (fmt_size_t)$$.min, (fmt_size_t)$$.max ); } + %printer { fprintf(yyo, "{%s}", $$? "+/-" : "" ); } signed +-%printer { fprintf(yyo, "{%s of %zu}", +- teed_up_names().front(), teed_up_names().size() ); } qname ++%printer { fprintf(yyo, "{%s of " HOST_SIZE_T_PRINT_UNSIGNED "}", ++ teed_up_names().front(), (fmt_size_t) teed_up_names().size() ); } qname + %printer { fprintf(yyo, "{%d}", $$ ); } + %printer { fprintf(yyo, "'%s'", $$.string ); } + %printer { const char *s = string_of($$); +@@ -968,9 +972,9 @@ + $$.low? (const char*) $$.low : "", + $$.high? (const char*) $$.high : "", + $$.also? "+" : "" ); } +-%printer { fprintf(yyo, "{%s, %zu parameters}", ++%printer { fprintf(yyo, "{%s, " HOST_SIZE_T_PRINT_UNSIGNED " parameters}", + name_of($$.ffi_name->field), !$$.using_params? 0 : +- $$.using_params->elems.size()); } call_body ++ (fmt_size_t)$$.using_params->elems.size()); } call_body + %printer { fprintf(yyo, "%s <- %s", data_category_str($$.category), + name_of($$.replacement->field)); } init_by + +@@ -3616,12 +3620,12 @@ data_descr1: level_name + + // SIGN clause valid only with "S" in picture + if( $field->type == FldNumericDisplay && !is_signable($field) ) { +- static const size_t sign_attrs = leading_e | separate_e; ++ static const uint64_t sign_attrs = leading_e | separate_e; + static_assert(sizeof(sign_attrs) == sizeof($field->attr), + "size matters"); + + // remove inapplicable inherited sign attributes +- size_t group_sign = group_attr($field) & sign_attrs; ++ uint64_t group_sign = group_attr($field) & sign_attrs; + $field->attr &= ~group_sign; + + if( $field->attr & sign_attrs ) { +@@ -3777,7 +3781,7 @@ data_clauses: data_clause + + // If any implied TYPE bits are on in addition to + // type_clause_e, they're in conflict. +- static const size_t type_implies = ++ static const uint64_t type_implies = + // ALIGNED clause not implemented + blank_zero_clause_e | justified_clause_e | picture_clause_e + | sign_clause_e | synched_clause_e | usage_clause_e; +@@ -4278,8 +4282,9 @@ usage_clause1: usage COMPUTATIONAL[comp + is_numeric(redefined->type) && redefined->size() == 4) { + // For now, we allow POINTER to expand a 32-bit item to 64 bits. + field->data.capacity = int_size_in_bytes(ptr_type_node); +- dbgmsg("%s: expanding #%zu %s capacity %u => %u", __func__, +- field_index(redefined), redefined->name, ++ dbgmsg("%s: expanding #" HOST_SIZE_T_PRINT_UNSIGNED ++ " %s capacity %u => %u", __func__, ++ (fmt_size_t)field_index(redefined), redefined->name, + redefined->data.capacity, field->data.capacity); + + redefined->embiggen(); +@@ -4533,7 +4538,7 @@ sign_clause: sign_is sign_leading sig + if( $sign_leading ) { + field->attr |= leading_e; + } else { +- field->attr &= ~size_t(leading_e); // turn off in case inherited ++ field->attr &= ~uint64_t(leading_e); // turn off in case inherited + field->attr |= signable_e; + } + if( $sign_separate ) field->attr |= separate_e; +@@ -11399,7 +11404,7 @@ perform_t::ec_labels_t::new_label( cbl_l + { + size_t n = 1 + symbols_end() - symbols_begin(); + cbl_name_t name; +- sprintf(name, "_perf_%s_%zu", role, n); ++ sprintf(name, "_perf_%s_" HOST_SIZE_T_PRINT_UNSIGNED, role, (fmt_size_t)n); + return label_add( type, name, yylineno ); + } + +@@ -11714,8 +11719,8 @@ struct stringify_src_t : public cbl_stri + } + + static void dump( const cbl_string_src_t& src ) { +- dbgmsg( "%s:%d:, %zu inputs delimited by %s:", __func__, __LINE__, +- src.ninput, ++ dbgmsg( "%s:%d:, " HOST_SIZE_T_PRINT_UNSIGNED " inputs delimited by %s:", ++ __func__, __LINE__, (fmt_size_t)src.ninput, + src.delimited_by.field? field_str(src.delimited_by.field) : "SIZE" ); + std::for_each(src.inputs, src.inputs + src.ninput, dump_input); + } +@@ -11864,8 +11869,8 @@ lang_check_failed (const char* file, int + + void ast_inspect( cbl_refer_t& input, bool backward, ast_inspect_list_t& inspects ) { + if( yydebug ) { +- dbgmsg("%s:%d: INSPECT %zu operations on %s, line %d", __func__, __LINE__, +- inspects.size(), input.field->name, yylineno); ++ dbgmsg("%s:%d: INSPECT " HOST_SIZE_T_PRINT_UNSIGNED " operations on %s, line %d", ++ __func__, __LINE__, (fmt_size_t)inspects.size(), input.field->name, yylineno); + } + std::for_each(inspects.begin(), inspects.end(), dump_inspect); + auto array = inspects.as_array(); +@@ -12006,6 +12011,7 @@ static REAL_VALUE_TYPE + numstr2i( const char input[], radix_t radix ) { + REAL_VALUE_TYPE output; + size_t integer = 0; ++ fmt_size_t integerf = 0; + int erc=0; + + switch( radix ) { +@@ -12017,7 +12023,8 @@ numstr2i( const char input[], radix_t ra + } + break; + case hexadecimal_e: +- erc = sscanf(input, "%zx", &integer); ++ erc = sscanf(input, "%" GCC_PRISZ "x", &integerf); ++ integer = integer; + real_from_integer (&output, VOIDmode, integer, UNSIGNED); + break; + case boolean_e: +@@ -12445,9 +12452,11 @@ initialize_statement( std::listoccurs.bounds.fixed_size() ) { + static char ub[32] = "boo"; +- sprintf(ub, " to %lu", oob->occurs.bounds.upper); ++ sprintf(ub, " to " HOST_SIZE_T_PRINT_UNSIGNED, ++ (fmt_size_t)oob->occurs.bounds.upper); + upper_phrase = ub; + } + +@@ -12851,7 +12862,8 @@ eval_subject_t::label( const char skel[] + cbl_label_t label = protolabel; + label.line = yylineno; + size_t n = 1 + symbols_end() - symbols_begin(); +- snprintf(label.name, sizeof(label.name), "_eval_%s_%zu", skel, n); ++ snprintf(label.name, sizeof(label.name), ++ "_eval_%s_" HOST_SIZE_T_PRINT_UNSIGNED, skel, (fmt_size_t)n); + auto output = symbol_label_add( PROGRAM, &label ); + return output; + } +--- a/src/gcc/cobol/parse_ante.h ++++ b/src/gcc/cobol/parse_ante.h +@@ -142,7 +142,8 @@ literal_of( size_t value ) { + case 0: return literally_zero; + case 1: return literally_one; + } +- cbl_err("logic error: %s: %zu not supported", __func__, value); ++ cbl_err("logic error: %s: " HOST_SIZE_T_PRINT_UNSIGNED " not supported", ++ __func__, (fmt_size_t)value); + return NULL; + } + +@@ -312,7 +313,9 @@ struct evaluate_elem_t { + case_iter pcase; + + void dump() const { +- dbgmsg( "nother=%zu label '%s', %zu cases", nother, label.name, cases.size() ); ++ dbgmsg( "nother=" HOST_SIZE_T_PRINT_UNSIGNED " label '%s', " ++ HOST_SIZE_T_PRINT_UNSIGNED " cases", ++ (fmt_size_t)nother, label.name, (fmt_size_t)cases.size() ); + std::for_each( cases.begin(), cases.end(), case_t::Dump ); + } + +@@ -542,8 +545,10 @@ struct arith_t { + res.refer.field = cbl_field_of(symbol_at(tgt)); + tgts.push_back( res ); + +- dbgmsg("%s:%d: SRC: %3zu %s", __func__, __LINE__, src, a.str()); +- dbgmsg("%s:%d: to %3zu %s", __func__, __LINE__, tgt, res.refer.str()); ++ dbgmsg("%s:%d: SRC: %3" GCC_PRISZ "u %s", ++ __func__, __LINE__, (fmt_size_t)src, a.str()); ++ dbgmsg("%s:%d: to %3" GCC_PRISZ "u %s", ++ __func__, __LINE__, (fmt_size_t)tgt, res.refer.str()); + } + void operator()( const corresponding_fields_t::const_reference elem ) { + another_pair( elem.first, elem.second ); +@@ -2089,8 +2094,10 @@ static class current_t { + size_t n = + parser_call_target_update(caller, called->name, mangled_name); + // Zero is not an error +- dbgmsg("updated %zu calls from #%-3zu (%s) s/%s/%s/", +- n, caller, caller_name, called->name, mangled_name); ++ dbgmsg("updated " HOST_SIZE_T_PRINT_UNSIGNED ++ " calls from #%-3" GCC_PRISZ "u (%s) s/%s/%s/", ++ (fmt_size_t)n, (fmt_size_t)caller, caller_name, ++ called->name, mangled_name); + } + } + if( yydebug ) parser_call_targets_dump(); +@@ -3006,8 +3013,8 @@ file_add( YYLTYPE loc, cbl_file_t *file + } + file = cbl_file_of(e); + snprintf(field->name, sizeof(field->name), +- "%s%zu_%s", +- record_area_name_stem, symbol_index(e), file->name); ++ "%s" HOST_SIZE_T_PRINT_UNSIGNED "_%s", ++ record_area_name_stem, (fmt_size_t)symbol_index(e), file->name); + if( file->attr & external_e ) { + snprintf(field->name, sizeof(field->name), + "%s%s", record_area_name_stem, file->name); +@@ -3153,7 +3160,8 @@ static cbl_label_t * + implicit_paragraph() + { + cbl_name_t name; +- sprintf(name, "_implicit_paragraph_%zu", symbol_index()); ++ sprintf(name, "_implicit_paragraph_" HOST_SIZE_T_PRINT_UNSIGNED, ++ (fmt_size_t)symbol_index()); + // Programs have to start with an implicit paragraph + return label_add(LblParagraph, name, yylineno); + } +@@ -3161,7 +3169,8 @@ static cbl_label_t * + implicit_section() + { + cbl_name_t name; +- sprintf(name, "_implicit_section_%zu", symbol_index()); ++ sprintf(name, "_implicit_section_" HOST_SIZE_T_PRINT_UNSIGNED, ++ (fmt_size_t)symbol_index()); + // Programs have to start with an implicit section + return label_add(LblSection, name, yylineno); + } +@@ -3236,7 +3245,8 @@ data_division_ready() { + } + + if( nsymbol == 0 || nparse_error > 0 ) { +- dbgmsg( "%d errors in DATA DIVISION, compilation ceases", nparse_error ); ++ dbgmsg( HOST_SIZE_T_PRINT_DEC " errors in DATA DIVISION, compilation ceases", ++ (fmt_size_t)nparse_error ); + return false; + } + +--- a/src/gcc/cobol/scan.l ++++ b/src/gcc/cobol/scan.l +@@ -27,6 +27,9 @@ + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ ++%top{ ++#include "config.h" ++} + %{ + #include // Before cobol-system because it uses poisoned functions + #include "cobol-system.h" +--- a/src/gcc/cobol/scan_ante.h ++++ b/src/gcc/cobol/scan_ante.h +@@ -438,11 +438,12 @@ trim_location( int nkeep) { + } rescan = { yytext + nkeep, yytext + yyleng }; + + auto nline = std::count(rescan.p, rescan.pend, '\n'); +- dbgmsg("%s:%d: yyless(%d), rescan '%.*s' (%zu lines, %d bytes)", ++ dbgmsg("%s:%d: yyless(%d), rescan '%.*s' (" HOST_SIZE_T_PRINT_UNSIGNED ++ " lines, " HOST_SIZE_T_PRINT_UNSIGNED " bytes)", + __func__, __LINE__, + nkeep, + int(rescan.size()), rescan.p, +- nline, rescan.size()); ++ (fmt_size_t)nline, (fmt_size_t)rescan.size()); + if( nline ) { + gcc_assert( yylloc.first_line + nline <= yylloc.last_line ); + yylloc.last_line =- int(nline); +--- a/src/gcc/cobol/structs.cc ++++ b/src/gcc/cobol/structs.cc +@@ -176,7 +176,7 @@ create_cblc_field_t() + struct cblc_field_t *parent;// This field's immediate parent field + size_t occurs_lower; // non-zero for a table + size_t occurs_upper; // non-zero for a table +- size_t attr; // See cbl_field_attr_t ++ uint64_t attr; // See cbl_field_attr_t + signed char type; // A one-byte copy of cbl_field_type_t + signed char level; // This variable's level in the naming heirarchy + signed char digits; // Digits specified in PIC string; e.g. 5 for 99v999 +@@ -196,7 +196,7 @@ create_cblc_field_t() + CHAR_P, "parent", + SIZE_T, "occurs_lower", + SIZE_T, "occurs_upper", +- SIZE_T, "attr", ++ ULONGLONG, "attr", + SCHAR, "type", + SCHAR, "level", + SCHAR, "digits", +--- a/src/gcc/cobol/symbols.cc ++++ b/src/gcc/cobol/symbols.cc +@@ -28,6 +28,7 @@ + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + ++#include "config.h" + #include // Before cobol-system because it uses poisoned functions + #include "cobol-system.h" + +@@ -814,24 +815,24 @@ cbl_field_t::size() const { + return field_size(this); + } + +-size_t ++uint64_t + cbl_field_t::set_attr( cbl_field_attr_t attr ) { + if( attr == signable_e ) { + if( ! has_attr(attr) && this->var_decl_node != NULL ) { + parser_field_attr_set(this, attr); + } + } +- return this->attr |= size_t(attr); ++ return this->attr |= uint64_t(attr); + } + +-size_t ++uint64_t + cbl_field_t::clear_attr( cbl_field_attr_t attr ) { + if( attr == signable_e ) { + if( this->var_decl_node != nullptr && has_attr(attr) ) { + parser_field_attr_set(this, attr, false); + } + } +- return this->attr &= ~size_t(attr); ++ return this->attr &= ~uint64_t(attr); + } + + static uint32_t +@@ -1001,8 +1002,8 @@ symbol_field_capacity( const cbl_field_t + size_t size = std::accumulate( symbol_at(bog), symbol_at_impl(eog), + 0, sym_field_size::capacity ); + +- if(true) dbgmsg("%s: %02u %s.data.capacity was computed as %zu", __func__, +- field->level, field->name, size); ++ if(true) dbgmsg("%s: %02u %s.data.capacity was computed as " HOST_SIZE_T_PRINT_UNSIGNED, ++ __func__, field->level, field->name, (fmt_size_t)size); + + return size; + } +@@ -1016,14 +1017,15 @@ has_odo( const symbol_elem_t& e ) { + struct cbl_field_t * + symbol_find_odo_debug( cbl_field_t * field ) { + size_t bog = field_index(field), eog = end_of_group(bog); +- dbgmsg("%s: %s is #%zu - #%zu of %zu, ends at %s", __func__, +- field->name, bog, eog, symbols.nelem, ++ dbgmsg("%s: %s is #" HOST_SIZE_T_PRINT_UNSIGNED " - #" HOST_SIZE_T_PRINT_UNSIGNED ++ " of " HOST_SIZE_T_PRINT_UNSIGNED ", ends at %s", __func__, ++ field->name, (fmt_size_t)bog, (fmt_size_t)eog, (fmt_size_t)symbols.nelem, + eog == symbols.nelem? "[end]" : cbl_field_of(symbol_at(eog))->name ); + + auto e = std::find_if( symbol_at(bog), symbol_at_impl(eog, true), has_odo ); + if( e != symbol_at_impl(eog, true) ) { +- dbgmsg("%s: %s has ODO at #%zu (return '%s')", __func__, +- field->name, symbol_index(e), ++ dbgmsg("%s: %s has ODO at #" HOST_SIZE_T_PRINT_UNSIGNED " (return '%s')", __func__, ++ field->name, (fmt_size_t)symbol_index(e), + cbl_field_of(e)->name ); + } + return e == symbol_at_impl(eog, true)? NULL : cbl_field_of(e); +@@ -1047,8 +1049,8 @@ symbols_dump( size_t first, bool header + if( !yydebug ) return 0; + + if( header ) { +- fprintf(stderr, "Symbol Table has %zu elements\n", +- symbols_end() - symbols_begin()); ++ fprintf(stderr, "Symbol Table has " HOST_SIZE_T_PRINT_UNSIGNED " elements\n", ++ (fmt_size_t)(symbols_end() - symbols_begin())); + } + + for( struct symbol_elem_t *e = symbols_begin(first); e < symbols_end(); e++ ) { +@@ -1056,25 +1058,26 @@ symbols_dump( size_t first, bool header + + switch(e->type) { + case SymFilename: +- s = xasprintf("%4zu %-18s %s", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s %s", (fmt_size_t)e->program, + "Filename", e->elem.filename); + break; + case SymDataSection: +- s = xasprintf("%4zu %-18s line %d", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s line %d", (fmt_size_t)e->program, + cbl_section_of(e)->name(), cbl_section_of(e)->line); + break; + case SymFunction: +- s = xasprintf("%4zu %-15s %s", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-15s %s", (fmt_size_t)e->program, + "Function", e->elem.function.name); + break; + case SymField: { + auto field = cbl_field_of(e); + char *odo_str = NULL; + if( field->occurs.depending_on != 0 ) { +- odo_str = xasprintf("odo %zu", field->occurs.depending_on ); ++ odo_str = xasprintf("odo " HOST_SIZE_T_PRINT_UNSIGNED, ++ (fmt_size_t)field->occurs.depending_on ); + } + ninvalid += cbl_field_of(e)->type == FldInvalid? 1 : 0; +- s = xasprintf("%4zu %-18s %s (%s)", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s %s (%s)", (fmt_size_t)e->program, + cbl_field_type_str(cbl_field_of(e)->type) + 3, + field_str(cbl_field_of(e)), + odo_str? odo_str : +@@ -1082,7 +1085,7 @@ symbols_dump( size_t first, bool header + } + break; + case SymLabel: +- s = xasprintf("%4zu %-18s %s", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s %s", (fmt_size_t)e->program, + "Labe1l", e->elem.label.str()); + if( LblProgram == cbl_label_of(e)->type ) { + const auto& L = *cbl_label_of(e); +@@ -1094,31 +1097,35 @@ symbols_dump( size_t first, bool header + } + break; + case SymSpecial: +- s = xasprintf("%4zu %-18s id=%2d, %s", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s id=%2d, %s", (fmt_size_t)e->program, + "Special", e->elem.special.id, e->elem.special.name); + break; + case SymAlphabet: +- s = xasprintf("%4zu %-18s encoding=%2d, '%s'", e->program, "Alphabet", ++ s = xasprintf("%4" GCC_PRISZ "u %-18s encoding=%2d, '%s'", ++ (fmt_size_t)e->program, "Alphabet", + int(e->elem.alphabet.encoding), e->elem.alphabet.name); + break; + case SymFile: +- s = xasprintf("%4zu %-18s %-20s", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s %-20s", (fmt_size_t)e->program, + "File", e->elem.file.name); + { + char same_as[26] = ""; + if( cbl_file_of(e)->same_record_as > 0 ) { +- sprintf(same_as, "s%3zu", cbl_file_of(e)->same_record_as); ++ sprintf(same_as, "s%3" GCC_PRISZ "u", ++ (fmt_size_t)cbl_file_of(e)->same_record_as); + } + const char *type = file_org_str(e->elem.file.org); + char *part = s; + +- s = xasprintf("%s %-4s %s %s %s{%zu-%zu} status=#%zu", ++ s = xasprintf("%s %-4s %s %s %s{" HOST_SIZE_T_PRINT_UNSIGNED "-" ++ HOST_SIZE_T_PRINT_UNSIGNED "} status=#" ++ HOST_SIZE_T_PRINT_UNSIGNED, + part, same_as, type, + e->elem.file.keys_str(), + cbl_file_of(e)->varies()? "varies " : "", +- cbl_file_of(e)->varying_size.min, +- cbl_file_of(e)->varying_size.max, +- cbl_file_of(e)->user_status); ++ (fmt_size_t)cbl_file_of(e)->varying_size.min, ++ (fmt_size_t)cbl_file_of(e)->varying_size.max, ++ (fmt_size_t)cbl_file_of(e)->user_status); + free(part); + } + break; +@@ -1126,7 +1133,8 @@ symbols_dump( size_t first, bool header + dbgmsg("%s: cannot dump symbol type %d", __func__, e->type); + continue; + } +- fprintf(stderr, "%4zu: %s\n", e - symbols_begin(), s); ++ fprintf(stderr, "%4" GCC_PRISZ "u: %s\n", ++ (fmt_size_t)(e - symbols_begin()), s); + free(s); + } + return ninvalid; +@@ -1238,7 +1246,8 @@ static struct symbol_elem_t * + } + + if(yydebug && group->type != FldGroup) { +- dbgmsg("Field #%zu '%s' is not a group", symbol_index(e), group->name); ++ dbgmsg("Field #" HOST_SIZE_T_PRINT_UNSIGNED " '%s' is not a group", ++ (fmt_size_t)symbol_index(e), group->name); + symbols_dump(symbols.first_program, true); + } + if( group->type == FldInvalid ) return e; +@@ -1493,8 +1502,8 @@ field_str( const cbl_field_t *field ) { + for( size_t i=0; i < field->occurs.nkey; i++ ) { + updown[i] = field->occurs.keys[i].ascending? 'A' : 'D'; + } +- snprintf(name, sizeof(name), "%s[%zu]%s", +- field->name, field->occurs.ntimes(), updown.data()); ++ snprintf(name, sizeof(name), "%s[" HOST_SIZE_T_PRINT_UNSIGNED "]%s", ++ field->name, (fmt_size_t)field->occurs.ntimes(), updown.data()); + } + } + +@@ -1503,7 +1512,7 @@ field_str( const cbl_field_t *field ) { + + char offset[32] = ""; + if( field->level > 1 ) { +- sprintf( offset, "off%3zu", field->offset ); ++ sprintf( offset, "off%3" GCC_PRISZ "u", (fmt_size_t)field->offset ); + } + + char parredef = +@@ -1570,8 +1579,8 @@ field_str( const cbl_field_t *field ) { + }; + + pend += snprintf(pend, string + sizeof(string) - pend, +- "%c%3zu %-6s %c%c%c %2u{%3u,%u,%d = %s} (%s), line %d", +- parredef, field->parent, offset, ++ "%c%3" GCC_PRISZ "u %-6s %c%c%c %2u{%3u,%u,%d = %s} (%s), line %d", ++ parredef, (fmt_size_t)field->parent, offset, + (field->attr & global_e)? 'G' : 0x20, + (field->attr & external_e)? 'E' : 0x20, + storage_type, +@@ -1796,18 +1805,19 @@ symbols_update( size_t first, bool parse + field->line, field->level_str(), field->name); + + } else { +- dbgmsg("%s: error: data item %s #%zu '%s' capacity %u rejected", ++ dbgmsg("%s: error: data item %s #" HOST_SIZE_T_PRINT_UNSIGNED ++ " '%s' capacity %u rejected", + __func__, + 3 + cbl_field_type_str(field->type), +- isym, field->name, field->data.capacity); ++ (fmt_size_t)isym, field->name, field->data.capacity); + } + } + return 0; + } + + if(! (field->data.memsize == 0 || field_size(field) <= field->data.memsize) ) { +- dbgmsg( "%s:%d: #%zu: invalid: %s", __func__, __LINE__, +- symbol_index(p), field_str(cbl_field_of(p)) ); ++ dbgmsg( "%s:%d: #" HOST_SIZE_T_PRINT_UNSIGNED ": invalid: %s", __func__, __LINE__, ++ (fmt_size_t)symbol_index(p), field_str(cbl_field_of(p)) ); + } + assert(field->data.memsize == 0 || field_size(field) <= field_memsize(field)); + assert( !(field->data.memsize > 0 && symbol_explicitly_redefines(field)) ); +@@ -1925,7 +1935,8 @@ symbol_field_forward( size_t index ) { + assert( index < symbols.nelem ); + symbol_elem_t *e = symbol_at(index); + if( (e->type != SymField) ) { +- dbgmsg("%s: logic error: #%zu is %s", __func__, index, symbol_type_str(e->type)); ++ dbgmsg("%s: logic error: #" HOST_SIZE_T_PRINT_UNSIGNED " is %s", ++ __func__, (fmt_size_t)index, symbol_type_str(e->type)); + } + assert(e->type == SymField); + +@@ -2433,9 +2444,9 @@ symbol_alphabet_add( size_t program, str + return symbol_add(&sym); + } + +-size_t ++uint64_t + numeric_group_attrs( const cbl_field_t *field ) { +- static const size_t inherit = signable_e | leading_e | separate_e | big_endian_e; ++ static const uint64_t inherit = signable_e | leading_e | separate_e | big_endian_e; + static_assert(sizeof(cbl_field_t::type) < sizeof(inherit), "need bigger type"); + assert(field); + if( field->type == FldNumericDisplay || field->type == FldGroup ) { +@@ -3258,10 +3269,10 @@ new_literal_add( const char initial[], u + + static size_t literal_count = 1; + sprintf(field->name, +- "%s%c_%zd", ++ "%s%c_" HOST_SIZE_T_PRINT_DEC, + "_literal", + field->type == FldLiteralA ? 'a' : 'n', +- literal_count++); ++ (fmt_size_t)literal_count++); + + return parser_symbol_add2(field); + } +@@ -3290,14 +3301,15 @@ new_literal( uint32_t len, const char in + void + temporaries_t::dump() const { + extern int yylineno; +- char *output = xasprintf("%4d: %zu Literals", yylineno, literals.size()); ++ char *output = xasprintf("%4d: " HOST_SIZE_T_PRINT_UNSIGNED " Literals", ++ yylineno, (fmt_size_t)literals.size()); + + for( const auto& elem : used ) { + if( ! elem.second.empty() ) { + char *so_far = output; +- output = xasprintf("%s, %zu %s", ++ output = xasprintf("%s, " HOST_SIZE_T_PRINT_UNSIGNED " %s", + so_far, +- elem.second.size(), ++ (fmt_size_t)elem.second.size(), + 3 + cbl_field_type_str(elem.first)); + free(so_far); + } +@@ -3580,8 +3592,8 @@ cbl_label_t::str() const { + buf = xasprintf("%-12s %s top level [%s], line %d", + type_str() + 3, name, mangled_name, line); + } else { +- buf = xasprintf("%-12s %s OF #%zu '%s' [%s], line %d", +- type_str() + 3, name, parent, ++ buf = xasprintf("%-12s %s OF #" HOST_SIZE_T_PRINT_UNSIGNED " '%s' [%s], line %d", ++ type_str() + 3, name, (fmt_size_t)parent, + cbl_label_of(symbol_at(parent))->name, + mangled_name, line); + } +@@ -3695,7 +3707,8 @@ symbol_label_add( size_t program, cbl_la + // Set the program's mangled name, dehyphenated and uniqified by parent index. + if( input->type == LblProgram ) { + char *psz = cobol_name_mangler(input->name); +- input->mangled_name = xasprintf("%s.%zu", psz, input->parent); ++ input->mangled_name = xasprintf("%s." HOST_SIZE_T_PRINT_UNSIGNED, ++ psz, (fmt_size_t)input->parent); + free(psz); + } + +@@ -3764,7 +3777,8 @@ symbol_program_add( size_t program, cbl_ + + // Set the program's mangled name, dehyphenated and uniqified by parent index. + char *psz = cobol_name_mangler(input->name); +- elem.elem.label.mangled_name = xasprintf("%s.%zu", psz, input->parent); ++ elem.elem.label.mangled_name = xasprintf("%s." HOST_SIZE_T_PRINT_UNSIGNED, ++ psz, (fmt_size_t)input->parent); + free(psz); + + e = std::find_if( symbols_begin(program), symbols_end(), +@@ -4445,8 +4459,8 @@ symbol_forward_names( size_t ifield ) { + for( auto sym = symbols_begin(ifield); sym && sym->type == SymField; ) { + const cbl_field_t *field = cbl_field_of(sym); + if( !(field->type == FldForward) ) { +- dbgmsg("%s:%d: logic error, not FldForward: #%zu %s", +- __func__, __LINE__, symbol_index(sym), field_str(field)); ++ dbgmsg("%s:%d: logic error, not FldForward: #" HOST_SIZE_T_PRINT_UNSIGNED " %s", ++ __func__, __LINE__, (fmt_size_t)symbol_index(sym), field_str(field)); + } + assert(field->type == FldForward); + +@@ -4469,8 +4483,9 @@ symbol_forward_to( size_t fwd ) { + if( !elem.second ) { + const auto& field = *cbl_field_of(symbols_begin(fwd)); + if( yydebug ) +- dbgmsg("%s:%d: no symbol found for #%zu %s %s", __func__, __LINE__, +- fwd, cbl_field_type_str(field.type), field.name); ++ dbgmsg("%s:%d: no symbol found for #" HOST_SIZE_T_PRINT_UNSIGNED " %s %s", ++ __func__, __LINE__, ++ (fmt_size_t)fwd, cbl_field_type_str(field.type), field.name); + return fwd; + } + +@@ -4491,8 +4506,9 @@ cbl_file_key_t::deforward( size_t ifile + const auto field = cbl_field_of(symbol_at(ifield)); + + if( is_forward(field) && yydebug ) { +- dbgmsg("%s:%d: key %d: #%zu %s of %s is %s", "deforward", __LINE__, +- keys[ifile]++, ifield, field->name, file->name, ++ dbgmsg("%s:%d: key %d: #" HOST_SIZE_T_PRINT_UNSIGNED " %s of %s is %s", ++ "deforward", __LINE__, ++ keys[ifile]++, (fmt_size_t)ifield, field->name, file->name, + cbl_field_type_str(field->type) + 3); + } + +@@ -4546,7 +4562,7 @@ cbl_file_key_t::str() const { + + *p++ = '['; + for( auto f = fields; f < fields + nfield; f++) { +- auto n = sprintf(p, "%s%zu", sep, *f); ++ auto n = sprintf(p, "%s" HOST_SIZE_T_PRINT_UNSIGNED, sep, (fmt_size_t)*f); + p += n; + sep = ", "; + } +--- a/src/gcc/cobol/symbols.h ++++ b/src/gcc/cobol/symbols.h +@@ -494,7 +494,7 @@ bool is_elementary( enum cbl_field_type_ + struct cbl_field_t { + size_t offset; + enum cbl_field_type_t type, usage; +- size_t attr; ++ uint64_t attr; + static_assert(sizeof(attr) == sizeof(cbl_field_attr_t), "wrong attr size"); + size_t parent; // symbols[] index of our parent + size_t our_index; // symbols[] index of this field, set in symbol_add() +@@ -597,8 +597,8 @@ struct cbl_field_t { + bool has_attr( cbl_field_attr_t attr ) const { + return cbl_field_attr_t(this->attr & attr) == attr; + } +- size_t set_attr( cbl_field_attr_t attr ); +- size_t clear_attr( cbl_field_attr_t attr ); ++ uint64_t set_attr( cbl_field_attr_t attr ); ++ uint64_t clear_attr( cbl_field_attr_t attr ); + const char * attr_str( const std::vector& attrs ) const; + + bool is_justifiable() const { +@@ -1273,7 +1273,8 @@ struct function_descr_t { + static function_descr_t init( const char name[] ) { + function_descr_t descr = {}; + if( -1 == snprintf( descr.name, sizeof(descr.name), "%s", name ) ) { +- dbgmsg("name truncated to '%s' (max %zu characters)", name); ++ dbgmsg("name truncated to '%s' (max " HOST_SIZE_T_PRINT_UNSIGNED ++ " characters)", name, (fmt_size_t)sizeof(descr.name)); + } + return descr; // truncation also reported elsewhere ? + } +@@ -2049,11 +2050,12 @@ struct cbl_perform_tgt_t { + void dump() const { + assert(ifrom); + if( !ito ) { +- dbgmsg( "%s:%d: #%3zu %s", __PRETTY_FUNCTION__, __LINE__, +- ifrom, from()->str() ); ++ dbgmsg( "%s:%d: #%3" GCC_PRISZ "u %s", __PRETTY_FUNCTION__, __LINE__, ++ (fmt_size_t)ifrom, from()->str() ); + } else { +- dbgmsg( "%s:%d: #%3zu %s THRU #%3zu %s", __PRETTY_FUNCTION__, __LINE__, +- ifrom, from()->str(), ito, to()->str() ); ++ dbgmsg( "%s:%d: #%3" GCC_PRISZ "u %s THRU #%3" GCC_PRISZ "u %s", ++ __PRETTY_FUNCTION__, __LINE__, ++ (fmt_size_t)ifrom, from()->str(), (fmt_size_t)ito, to()->str() ); + } + } + +@@ -2246,7 +2248,7 @@ cbl_file_t * symbol_record_file( const c + + struct cbl_field_t * symbol_find_odo( const cbl_field_t * field ); + +-size_t numeric_group_attrs( const cbl_field_t *field ); ++uint64_t numeric_group_attrs( const cbl_field_t *field ); + + static inline struct cbl_field_t * + field_at( size_t index ) { +--- a/src/gcc/cobol/symfind.cc ++++ b/src/gcc/cobol/symfind.cc +@@ -147,13 +147,14 @@ dump_symbol_map2( const field_key_t& key + + for( auto candidate : candidates ) { + char *tmp = fields; +- fields = xasprintf("%s%s %3zu", tmp? tmp : "", sep, candidate); ++ fields = xasprintf("%s%s %3" GCC_PRISZ "u", ++ tmp? tmp : "", sep, (fmt_size_t)candidate); + sep[0] = ','; + free(tmp); + } + +- dbgmsg( "%s:%d: %3zu %s {%s}", __func__, __LINE__, +- key.program, key.name, fields ); ++ dbgmsg( "%s:%d: %3" GCC_PRISZ "u %s {%s}", __func__, __LINE__, ++ (fmt_size_t)key.program, key.name, fields ); + free(fields); + } + +@@ -179,7 +180,8 @@ dump_symbol_map_value( const char name[] + + for( ; p != value.second.end(); p++ ) { + char *tmp = ancestry; +- ancestry = xasprintf("%s%s %3zu", tmp? tmp : "", sep, *p); ++ ancestry = xasprintf("%s%s %3" GCC_PRISZ "u", ++ tmp? tmp : "", sep, (fmt_size_t)*p); + sep[0] = ','; + free(tmp); + } +@@ -256,8 +258,11 @@ build_symbol_map() { + symbol_map.erase(sym_name_t("")); + + if( yydebug ) { +- dbgmsg( "%s:%d: %zu of %zu symbols inserted into %zu in symbol_map", +- __func__, __LINE__, nsym, end, symbol_map.size() ); ++ dbgmsg( "%s:%d: " HOST_SIZE_T_PRINT_UNSIGNED " of " ++ HOST_SIZE_T_PRINT_UNSIGNED " symbols inserted into " ++ HOST_SIZE_T_PRINT_UNSIGNED " in symbol_map", ++ __func__, __LINE__, (fmt_size_t)nsym, (fmt_size_t)end, ++ (fmt_size_t)symbol_map.size() ); + } + } + +@@ -277,8 +282,8 @@ public: + } + protected: + void dump_key( const char tag[], const symbol_map_t::key_type& key ) const { +- dbgmsg( "symbol_map key: %s { %3zu %3zu %s }", +- tag, key.program, key.parent, key.name ); ++ dbgmsg( "symbol_map key: %s { %3" GCC_PRISZ "u %3" GCC_PRISZ "u %s }", ++ tag, (fmt_size_t)key.program, (fmt_size_t)key.parent, key.name ); + } + }; + +@@ -459,14 +464,16 @@ symbol_match2( size_t program, + sep = ""; + for( auto field : fields ) { + char *partial = fieldstr; +- int asret = asprintf(&fieldstr, "%s%s%zu", partial? partial : "", sep, field); ++ int asret = asprintf(&fieldstr, "%s%s" HOST_SIZE_T_PRINT_UNSIGNED, ++ partial? partial : "", sep, (fmt_size_t)field); + assert(asret); + sep = ", "; + assert(fieldstr); + free(partial); + } + +- dbgmsg("%s: '%s' matches %zu fields: {%s}", __func__, ancestry, fields.size(), fieldstr); ++ dbgmsg("%s: '%s' matches " HOST_SIZE_T_PRINT_UNSIGNED " fields: {%s}", ++ __func__, ancestry, (fmt_size_t)fields.size(), fieldstr); + free(fieldstr); + } + free(ancestry); +@@ -537,8 +544,8 @@ symbol_find( size_t program, std::list(NULL, false); + } + if( yydebug ) { +- dbgmsg( "%s:%d: '%s' has %zu possible matches", +- __func__, __LINE__, names.back(), items.size() ); ++ dbgmsg( "%s:%d: '%s' has " HOST_SIZE_T_PRINT_UNSIGNED " possible matches", ++ __func__, __LINE__, names.back(), (fmt_size_t)items.size() ); + std::for_each( items.begin(), items.end(), dump_symbol_map_value1 ); + } + } +@@ -577,8 +584,8 @@ symbol_find_of( size_t program, std::lis + } + + if( yydebug ) { +- dbgmsg( "%s:%d: '%s' has %zu possible matches", +- __func__, __LINE__, names.back(), input.size() ); ++ dbgmsg( "%s:%d: '%s' has " HOST_SIZE_T_PRINT_UNSIGNED " possible matches", ++ __func__, __LINE__, names.back(), (fmt_size_t)input.size() ); + std::for_each( input.begin(), input.end(), dump_symbol_map_value1 ); + } + +--- a/src/gcc/cobol/util.cc ++++ b/src/gcc/cobol/util.cc +@@ -324,8 +324,9 @@ is_numeric_edited( const char picture[] + break; + default: + numed_message = xasprintf("invalid PICTURE character " +- "'%c' at offset %zu in '%s'", +- *p, p - picture, picture); ++ "'%c' at offset " HOST_SIZE_T_PRINT_UNSIGNED ++ " in '%s'", ++ *p, (fmt_size_t)(p - picture), picture); + break; + } + +@@ -370,10 +371,12 @@ normalize_picture( char picture[] ) + assert(pmatch[2].rm_so == pmatch[1].rm_eo + 1); // character paren number + p = picture + pmatch[2].rm_so; + len = 0; +- if( 1 != sscanf(p, "%zu", &len) ) { ++ fmt_size_t lenf = 0; ++ if( 1 != sscanf(p, "%" GCC_PRISZ "u", &lenf) ) { + dbgmsg("%s:%d: no number found in '%s'", __func__, __LINE__, p); + goto irregular; + } ++ len = lenf; + if( len == 0 ) { + dbgmsg("%s:%d: ZERO length found in '%s'", __func__, __LINE__, p); + goto irregular; +@@ -985,7 +988,8 @@ cbl_refer_t::subscripts_set( const std:: + const char * + cbl_refer_t::str() const { + static char subscripts[64]; +- sprintf(subscripts, "(%u of %zu dimensions)", nsubscript, dimensions(field)); ++ sprintf(subscripts, "(%u of " HOST_SIZE_T_PRINT_UNSIGNED " dimensions)", ++ nsubscript, (fmt_size_t)dimensions(field)); + char *output = xasprintf("%s %s %s", + field? field_str(field) : "(none)", + 0 < dimensions(field)? subscripts : "", +@@ -1031,10 +1035,10 @@ struct move_corresponding_field { + tgt.field = cbl_field_of(symbol_at(elem.second)); + + if( yydebug ) { +- dbgmsg("move_corresponding:%d: SRC: %3zu %s", __LINE__, +- elem.first, src.str()); +- dbgmsg("move_corresponding:%d: to %3zu %s", __LINE__, +- elem.second, tgt.str()); ++ dbgmsg("move_corresponding:%d: SRC: %3" GCC_PRISZ "u %s", __LINE__, ++ (fmt_size_t)elem.first, src.str()); ++ dbgmsg("move_corresponding:%d: to %3" GCC_PRISZ "u %s", __LINE__, ++ (fmt_size_t)elem.second, tgt.str()); + } + + parser_move(tgt, src); +@@ -1138,8 +1142,9 @@ valid_move( const struct cbl_field_t *tg + if( yydebug && ! retval ) { + auto bad = std::find_if( p, pend, + []( char ch ) { return ! ISDIGIT(ch); } ); +- dbgmsg("%s:%d: offending character '%c' at position %zu", +- __func__, __LINE__, *bad, bad - p); ++ dbgmsg("%s:%d: offending character '%c' at position " ++ HOST_SIZE_T_PRINT_UNSIGNED, ++ __func__, __LINE__, *bad, (fmt_size_t)(bad - p)); + } + } + break; +@@ -1498,9 +1503,10 @@ ambiguous_reference( size_t program ) { + is_unique(program, proc.first) ); + if( proc.second.end() != ambiguous ) { + if( yydebug ) { +- dbgmsg("%s: %s of '%s' has %zu potential matches", __func__, ++ dbgmsg("%s: %s of '%s' has " HOST_SIZE_T_PRINT_UNSIGNED ++ "potential matches", __func__, + ambiguous->paragraph(), ambiguous->section(), +- procedures.count(*ambiguous)); ++ (fmt_size_t)procedures.count(*ambiguous)); + } + return new procref_t(*ambiguous); + } +@@ -1543,9 +1549,9 @@ parent_names( const symbol_elem_t *elem, + + if( is_filler(cbl_field_of(elem)) ) return; + +- // dbgmsg("%s: asked about %s of %s (%zu away)", __func__, ++ // dbgmsg("%s: asked about %s of %s (" HOST_SIZE_T_PRINT_UNSIGNED " away)", __func__, + // cbl_field_of(elem)->name, +- // cbl_field_of(group)->name, elem - group); ++ // cbl_field_of(group)->name, (fmt_size_t)(elem - group)); + + for( const symbol_elem_t *e=elem; e && group < e; e = symbol_parent(e) ) { + names.push_front( cbl_field_of(e)->name ); +@@ -1564,9 +1570,11 @@ public: + symbol_elem_t *rgroup, type_t type ) + : lgroup(lgroup), rgroup(rgroup), type(type) + { +- dbgmsg( "%s:%d: for #%zu %s and #%zu %s on line %d", __func__, __LINE__, +- symbol_index(lgroup), cbl_field_of(lgroup)->name, +- symbol_index(rgroup), cbl_field_of(rgroup)->name, yylineno ); ++ dbgmsg( "%s:%d: for #" HOST_SIZE_T_PRINT_UNSIGNED ++ " %s and #" HOST_SIZE_T_PRINT_UNSIGNED " %s on line %d", ++ __func__, __LINE__, ++ (fmt_size_t)symbol_index(lgroup), cbl_field_of(lgroup)->name, ++ (fmt_size_t)symbol_index(rgroup), cbl_field_of(rgroup)->name, yylineno ); + } + + static bool +@@ -1643,8 +1651,9 @@ corresponding_fields( cbl_field_t *lhs, + lhsg.a = symbols_begin(field_index(lhs)); + lhsg.z = std::find_if( lhsg.a, symbols_end(), next_group(lhsg.a) ); + +- dbgmsg("%s:%d: examining %zu symbols after %s", __func__, __LINE__, +- lhsg.z - lhsg.a, lhs->name); ++ dbgmsg("%s:%d: examining " HOST_SIZE_T_PRINT_UNSIGNED " symbols after %s", ++ __func__, __LINE__, ++ (fmt_size_t)(lhsg.z - lhsg.a), lhs->name); + + find_corresponding finder( symbol_at(field_index(lhs)), + symbol_at(field_index(rhs)), type ); +@@ -1652,8 +1661,9 @@ corresponding_fields( cbl_field_t *lhs, + + output.erase(0); + +- dbgmsg( "%s:%d: %s and %s have %zu corresponding fields", +- __func__, __LINE__, lhs->name, rhs->name, output.size() ); ++ dbgmsg( "%s:%d: %s and %s have " HOST_SIZE_T_PRINT_UNSIGNED ++ " corresponding fields", ++ __func__, __LINE__, lhs->name, rhs->name, (fmt_size_t)output.size() ); + + return output; + } +@@ -1772,7 +1782,8 @@ class unique_stack : public std::stack>4; + new_size |= new_size>>8; + new_size |= new_size>>16; +- new_size |= new_size>>32; ++ new_size |= (new_size>>16)>>16; + *dest_size = new_size + 1; + *dest = (char *)realloc(*dest, *dest_size); + } diff --git a/patches/pr119364-2.diff b/patches/pr119364-2.diff new file mode 100644 index 0000000..08cc3b2 --- /dev/null +++ b/patches/pr119364-2.diff @@ -0,0 +1,158 @@ +--- a/src/gcc/cobol/genapi.cc ++++ b/src/gcc/cobol/genapi.cc +@@ -13287,24 +13287,29 @@ static void + stash_exceptions( const cbl_enabled_exceptions_array_t *enabled ) + { + // We need to create a static array of bytes +- size_t narg = enabled->nbytes(); +- unsigned char *p = (unsigned char *)(enabled->ecs); +- +- static size_t prior_narg = 0; +- static size_t max_narg = 128; +- static unsigned char *prior_p = (unsigned char *)xmalloc(max_narg); ++ size_t nec = enabled->nec; ++ size_t sz = int_size_in_bytes(cbl_enabled_exception_type_node); ++ size_t narg = nec * sz; ++ cbl_enabled_exception_t *p = enabled->ecs; ++ ++ static size_t prior_nec = 0; ++ static size_t max_nec = 0; ++ static cbl_enabled_exception_t *prior_p; + + bool we_got_new_data = false; +- if( prior_narg != narg ) ++ if( prior_nec != nec ) + { + we_got_new_data = true; + } + else + { +- // The narg counts are the same. +- for(size_t i=0; i max_narg ) ++ if( nec > max_nec ) + { +- max_narg = narg; +- prior_p = (unsigned char *)xrealloc(prior_p, max_narg); ++ max_nec = nec; ++ prior_p = (cbl_enabled_exception_t *) ++ xrealloc(prior_p, max_nec * sizeof(cbl_enabled_exception_t)); + } + +- memcpy(prior_p, p, narg); ++ memcpy((unsigned char *)prior_p, (unsigned char *)p, ++ nec * sizeof(cbl_enabled_exception_t)); + + static int count = 1; + +@@ -13341,12 +13348,33 @@ stash_exceptions( const cbl_enabled_exce + TREE_TYPE(constr) = array_of_chars_type; + TREE_STATIC(constr) = 1; + TREE_CONSTANT(constr) = 1; ++ unsigned char *q = XALLOCAVEC(unsigned char, sz); + +- for(size_t i=0; i +Date: Sat, 6 Jun 2026 17:37:48 +0200 +Subject: [PATCH] m68k: prevent moves with pre-dec src overlapping with dst + (PR123853) + +Since gcc-15 combine can produce moves from a PRE_DEC MEM to an +address that uses the same register, causing wrong code on m68k. +In particular the glibc build is broken. This adjusts the m68k +backend to reject such moves. + +On the test case in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123853#c11 +the difference is + +- move.l -(%a0),(%a0,%d0.l) ++ lea (%a0,%d0.l),%a1 ++ move.l -(%a0),(%a1) + +which is exactly what we want. + +Testing in progress. + +gcc/ + + 2026-06-06 Mikael Pettersson + + PR rtl-optimization/123853 + * config/m68k/m68k-protos.h (check_move_simode): Declare. + * config/m68k/m68k.cc (check_move_simode): New, reject moves + where SRC is auto-inc/dec MEM whose REG occurs in DST. + * config/m68k/m68k.md (*movsi_m68k): Add check_move_simode + to condition. + (*movsi_m68k2): Likewise. +--- + gcc/config/m68k/m68k-protos.h | 1 + + gcc/config/m68k/m68k.cc | 25 +++++++++++++++++++++++++ + gcc/config/m68k/m68k.md | 4 ++-- + 3 files changed, 28 insertions(+), 2 deletions(-) + +--- a/src/gcc/config/m68k/m68k-protos.h ++++ b/src/gcc/config/m68k/m68k-protos.h +@@ -26,6 +26,7 @@ extern HOST_WIDE_INT m68k_initial_elimination_offset (int from, int to); + extern void split_di (rtx[], int, rtx[], rtx[]); + + extern bool valid_mov3q_const (HOST_WIDE_INT); ++extern bool check_move_simode (const rtx *); + extern const char *output_move_simode (rtx *); + extern const char *output_move_himode (rtx *); + extern const char *output_move_qimode (rtx *); +--- a/src/gcc/config/m68k/m68k.cc ++++ b/src/gcc/config/m68k/m68k.cc +@@ -3227,6 +3227,31 @@ valid_mov3q_const (HOST_WIDE_INT i) + return TARGET_ISAB && (i == -1 || IN_RANGE (i, 1, 7)); + } + ++/* Return true if OPERANDS[] are valid for output_move_simode. ++ In particular, if SRC is a MEM with auto-inc/dec adressing and ++ its REG is mentioned in DST, it's invalid. See PR123853. */ ++ ++bool ++check_move_simode (const rtx *operands) ++{ ++ rtx src = operands[1]; ++ if (MEM_P (src)) ++ { ++ rtx src1 = XEXP (src, 0); ++ if (GET_CODE (src1) == PRE_DEC || GET_CODE (src1) == POST_INC) ++ { ++ rtx src2 = XEXP (src1, 0); ++ if (REG_P (src2)) ++ { ++ rtx dst = operands[0]; ++ if (reg_overlap_mentioned_p (src2, dst)) ++ return false; ++ } ++ } ++ } ++ return true; ++} ++ + /* Return an instruction to move CONST_INT OPERANDS[1] into OPERANDS[0]. + I is the value of OPERANDS[1]. */ + +--- a/src/gcc/config/m68k/m68k.md ++++ b/src/gcc/config/m68k/m68k.md +@@ -993,7 +993,7 @@ + ;; We don't allow f-regs since fixed point cannot go in them. + [(set (match_operand:SI 0 "nonimmediate_operand" "=g,d,a<") + (match_operand:SI 1 "general_src_operand" "damSnT,n,i"))] +- "!TARGET_COLDFIRE && reload_completed" ++ "!TARGET_COLDFIRE && reload_completed && check_move_simode (operands)" + { + return output_move_simode (operands); + } +@@ -1006,7 +1006,7 @@ + [(set (match_operand:SI 0 "nonimmediate_operand" "=g,d,a<") + (match_operand:SI 1 "general_src_operand" "damSKT,n,i"))] + +- "!TARGET_COLDFIRE" ++ "!TARGET_COLDFIRE && check_move_simode (operands)" + { + return output_move_simode (operands); + } +-- +2.54.0 + diff --git a/patches/pr124637.diff b/patches/pr124637.diff new file mode 100644 index 0000000..9eb1989 --- /dev/null +++ b/patches/pr124637.diff @@ -0,0 +1,54 @@ +--- a/src/gcc/calls.cc ++++ b/src/gcc/calls.cc +@@ -2252,10 +2252,20 @@ load_register_parameters (struct arg_data *args, int num_actuals, + && !TREE_SIDE_EFFECTS (tree_value) + && immediate_const_ctor_p (DECL_INITIAL (tree_value))) + { ++ HOST_WIDE_INT size = int_expr_size (DECL_INITIAL (tree_value)); + rtx target = gen_reg_rtx (word_mode); + store_constructor (DECL_INITIAL (tree_value), target, 0, +- int_expr_size (DECL_INITIAL (tree_value)), +- false); ++ size, false); ++ /* On big-endian targets, store_constructor places fields ++ from the MSB, which places any padding bits in the least ++ significant bytes. If required, use a logical right shift ++ to place things where expected in a register parameter. */ ++ if (BYTES_BIG_ENDIAN ++ && size < UNITS_PER_WORD ++ && args[i].locate.where_pad == PAD_DOWNWARD) ++ target = expand_shift (RSHIFT_EXPR, word_mode, target, ++ (UNITS_PER_WORD - size) * BITS_PER_UNIT, ++ NULL_RTX, 1); + reg = gen_rtx_REG (word_mode, REGNO (reg)); + emit_move_insn (reg, target); + } +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr124637.c +@@ -0,0 +1,26 @@ ++/* { dg-do compile { target { powerpc64-*-* } } } */ ++/* { dg-options "-O2 -m64 -mbig-endian" } */ ++ ++typedef struct { ++ unsigned short a; ++ unsigned short b; ++ unsigned short c; ++} S_t; ++ ++static const S_t m1 = { 0x20, 1, 1 }; ++ ++void ext(S_t r); ++void foo() { ext(m1); } ++ ++/* Apologies in advance that these may be a little fragile. */ ++ ++/* { dg-final { scan-assembler "lis 3,0x20" } } */ ++/* { dg-final { scan-assembler "ori 3,3,0x1" } } */ ++/* { dg-final { scan-assembler "sldi 3,3,16" } } */ ++/* { dg-final { scan-assembler "ori 3,3,0x1" } } */ ++ ++/* { dg-final { scan-assembler-not "lis 9,0x20" } } */ ++/* { dg-final { scan-assembler-not "ori 9,9,0x1" } } */ ++/* { dg-final { scan-assembler-not "lis 3,0x1" } } */ ++/* { dg-final { scan-assembler-not "rldimi 3,9,32,0" } } */ ++ diff --git a/patches/pr39491.diff b/patches/pr39491.diff new file mode 100644 index 0000000..4c51820 --- /dev/null +++ b/patches/pr39491.diff @@ -0,0 +1,132 @@ +# DP: Proposed patch for PR libstdc++/39491. + +2009-04-16 Benjamin Kosnik + + * src/math_stubs_long_double.cc (__signbitl): Add for hppa linux only. + +Index: a/src/libstdc++-v3/src/math_stubs_long_double.cc +=================================================================== +--- a/src/libstdc++-v3/src/math_stubs_long_double.cc (revision 146216) ++++ b/src/libstdc++-v3/src/math_stubs_long_double.cc (working copy) +@@ -213,4 +221,111 @@ + return tanh((double) x); + } + #endif ++ ++ // From libmath/signbitl.c ++ // XXX ABI mistakenly exported ++#if defined (__hppa__) && defined (__linux__) ++# include ++# include ++ ++typedef unsigned int U_int32_t __attribute ((mode (SI))); ++typedef int Int32_t __attribute ((mode (SI))); ++typedef unsigned int U_int64_t __attribute ((mode (DI))); ++typedef int Int64_t __attribute ((mode (DI))); ++ ++#if BYTE_ORDER == BIG_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ unsigned int sign_exponent:16; ++ unsigned int empty:16; ++ U_int32_t msw; ++ U_int32_t lsw; ++ } parts; ++} ieee_long_double_shape_type; ++#endif ++#if BYTE_ORDER == LITTLE_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int32_t lsw; ++ U_int32_t msw; ++ unsigned int sign_exponent:16; ++ unsigned int empty:16; ++ } parts; ++} ieee_long_double_shape_type; ++#endif ++ ++/* Get int from the exponent of a long double. */ ++#define GET_LDOUBLE_EXP(exp,d) \ ++do { \ ++ ieee_long_double_shape_type ge_u; \ ++ ge_u.value = (d); \ ++ (exp) = ge_u.parts.sign_exponent; \ ++} while (0) ++ ++#if BYTE_ORDER == BIG_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int64_t msw; ++ U_int64_t lsw; ++ } parts64; ++ struct ++ { ++ U_int32_t w0, w1, w2, w3; ++ } parts32; ++} ieee_quad_double_shape_type; ++#endif ++ ++#if BYTE_ORDER == LITTLE_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int64_t lsw; ++ U_int64_t msw; ++ } parts64; ++ struct ++ { ++ U_int32_t w3, w2, w1, w0; ++ } parts32; ++} ieee_quad_double_shape_type; ++#endif ++ ++/* Get most significant 64 bit int from a quad long double. */ ++#define GET_LDOUBLE_MSW64(msw,d) \ ++do { \ ++ ieee_quad_double_shape_type qw_u; \ ++ qw_u.value = (d); \ ++ (msw) = qw_u.parts64.msw; \ ++} while (0) ++ ++int ++__signbitl (long double x) ++{ ++#if LDBL_MANT_DIG == 113 ++ Int64_t msw; ++ ++ GET_LDOUBLE_MSW64 (msw, x); ++ return msw < 0; ++#else ++ Int32_t e; ++ ++ GET_LDOUBLE_EXP (e, x); ++ return e & 0x8000; ++#endif ++} ++#endif ++ ++#ifndef _GLIBCXX_HAVE___SIGNBITL ++ ++#endif + } // extern "C" +--- a/src/libstdc++-v3/config/abi/pre/gnu.ver~ 2009-04-10 01:23:07.000000000 +0200 ++++ b/src/libstdc++-v3/config/abi/pre/gnu.ver 2009-04-21 16:24:24.000000000 +0200 +@@ -635,6 +635,7 @@ + sqrtf; + sqrtl; + copysignf; ++ __signbitl; + + # GLIBCXX_ABI compatibility only. + # std::string diff --git a/patches/pr66368.diff b/patches/pr66368.diff new file mode 100644 index 0000000..c2ec875 --- /dev/null +++ b/patches/pr66368.diff @@ -0,0 +1,22 @@ +# DP: PR go/66368, build libgo with -fno-stack-protector + +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -47,6 +47,7 @@ AM_CPPFLAGS = -I $(srcdir)/runtime $(LIB + ACLOCAL_AMFLAGS = -I ./config -I ../config + + AM_CFLAGS = -fexceptions -fnon-call-exceptions \ ++ -fno-stack-protector \ + $(SPLIT_STACK) $(WARN_CFLAGS) \ + $(STRINGOPS_FLAG) $(HWCAP_CFLAGS) $(OSCFLAGS) \ + -I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \ +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -564,6 +564,7 @@ WARN_CFLAGS = $(WARN_FLAGS) $(WERROR) + AM_CPPFLAGS = -I $(srcdir)/runtime $(LIBFFIINCS) $(PTHREAD_CFLAGS) + ACLOCAL_AMFLAGS = -I ./config -I ../config + AM_CFLAGS = -fexceptions -fnon-call-exceptions \ ++ -fno-stack-protector \ + $(SPLIT_STACK) $(WARN_CFLAGS) \ + $(STRINGOPS_FLAG) $(HWCAP_CFLAGS) $(OSCFLAGS) \ + -I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \ diff --git a/patches/pr67590.diff b/patches/pr67590.diff new file mode 100644 index 0000000..0b3adfa --- /dev/null +++ b/patches/pr67590.diff @@ -0,0 +1,36 @@ +# DP: Fix PR67590, setting objdump macro. + +--- a/src/libcc1/configure.ac ++++ b/src/libcc1/configure.ac +@@ -74,6 +74,31 @@ if test "$GXX" = yes; then + fi + AC_SUBST(libsuffix) + ++# Figure out what objdump we will be using. ++AS_VAR_SET_IF(gcc_cv_objdump,, [ ++if test -f $gcc_cv_binutils_srcdir/configure.ac \ ++ && test -f ../binutils/Makefile \ ++ && test x$build = x$host; then ++ # Single tree build which includes binutils. ++ gcc_cv_objdump=../binutils/objdump$build_exeext ++elif test -x objdump$build_exeext; then ++ gcc_cv_objdump=./objdump$build_exeext ++elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then ++ gcc_cv_objdump="$OBJDUMP_FOR_TARGET" ++else ++ AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET) ++fi]) ++ ++AC_MSG_CHECKING(what objdump to use) ++if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then ++ # Single tree build which includes binutils. ++ AC_MSG_RESULT(newly built objdump) ++elif test x$gcc_cv_objdump = x; then ++ AC_MSG_RESULT(not found) ++else ++ AC_MSG_RESULT($gcc_cv_objdump) ++fi ++ + dnl Test for -lsocket and -lnsl. Copied from libgo/configure.ac. + AC_CACHE_CHECK([for socket libraries], libcc1_cv_lib_sockets, + [libcc1_cv_lib_sockets= diff --git a/patches/pr67899.diff b/patches/pr67899.diff new file mode 100644 index 0000000..0f2ebd0 --- /dev/null +++ b/patches/pr67899.diff @@ -0,0 +1,31 @@ +# DP: Proposed patch for PR sanitizer/67899 + +Index: b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -606,11 +606,10 @@ namespace __sanitizer { + #else + __sanitizer_sigset_t sa_mask; + #ifndef __mips__ +-#if defined(__sparc__) +- unsigned long sa_flags; +-#else +- int sa_flags; ++#if defined(__sparc__) && defined(__arch64__) ++ int __pad; + #endif ++ int sa_flags; + #endif + #endif + #if SANITIZER_LINUX +@@ -640,7 +639,8 @@ namespace __sanitizer { + void (*handler)(int signo); + void (*sigaction)(int signo, void *info, void *ctx); + }; +- unsigned long sa_flags; ++ int __pad; ++ int sa_flags; + void (*sa_restorer)(void); + __sanitizer_kernel_sigset_t sa_mask; + }; diff --git a/patches/pr81829.diff b/patches/pr81829.diff new file mode 100644 index 0000000..472e3d0 --- /dev/null +++ b/patches/pr81829.diff @@ -0,0 +1,308 @@ +From f8029ed6d3dd444ee2608146118f2189cf9ef0d8 Mon Sep 17 00:00:00 2001 +From: marxin +Date: Mon, 14 Aug 2017 13:56:32 +0200 +Subject: [PATCH] Fix file find utils and add unit tests (PR driver/81829). + +gcc/ChangeLog: + +2017-08-14 Martin Liska + + PR driver/81829 + * file-find.c (do_add_prefix): Always append DIR_SEPARATOR + at the end of a prefix. + (remove_prefix): Properly remove elements and accept also + path without a trailing DIR_SEPARATOR. + (purge): New function. + (file_find_verify_prefix_creation): Likewise. + (file_find_verify_prefix_add): Likewise. + (file_find_verify_prefix_removal): Likewise. + (file_find_c_tests): Likewise. + * selftest-run-tests.c (selftest::run_tests): Add new + file_find_c_tests. + * selftest.h (file_find_c_tests): Likewise. +--- + gcc/file-find.c | 182 ++++++++++++++++++++++++++++++++++++++++++----- + gcc/gcc-ar.c | 19 +++-- + gcc/selftest-run-tests.c | 1 + + gcc/selftest.h | 1 + + 4 files changed, 179 insertions(+), 24 deletions(-) + +Index: b/src/gcc/file-find.c +=================================================================== +--- a/src/gcc/file-find.c ++++ b/src/gcc/file-find.c +@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. + #include "system.h" + #include "filenames.h" + #include "file-find.h" ++#include "selftest.h" + + static bool debug = false; + +@@ -126,11 +127,22 @@ do_add_prefix (struct path_prefix *ppref + /* Keep track of the longest prefix. */ + + len = strlen (prefix); ++ bool append_separator = !IS_DIR_SEPARATOR (prefix[len - 1]); ++ if (append_separator) ++ len++; ++ + if (len > pprefix->max_len) + pprefix->max_len = len; + + pl = XNEW (struct prefix_list); +- pl->prefix = xstrdup (prefix); ++ char *dup = XCNEWVEC (char, len + 1); ++ memcpy (dup, prefix, append_separator ? len - 1 : len); ++ if (append_separator) ++ { ++ dup[len - 1] = DIR_SEPARATOR; ++ dup[len] = '\0'; ++ } ++ pl->prefix = dup; + + if (*prev) + pl->next = *prev; +@@ -212,34 +224,170 @@ prefix_from_string (const char *p, struc + void + remove_prefix (const char *prefix, struct path_prefix *pprefix) + { +- struct prefix_list *remove, **prev, **remove_prev = NULL; ++ char *dup = NULL; + int max_len = 0; ++ size_t len = strlen (prefix); ++ if (prefix[len - 1] != DIR_SEPARATOR) ++ { ++ char *dup = XNEWVEC (char, len + 2); ++ memcpy (dup, prefix, len); ++ dup[len] = DIR_SEPARATOR; ++ dup[len + 1] = '\0'; ++ prefix = dup; ++ } + + if (pprefix->plist) + { +- prev = &pprefix->plist; +- for (struct prefix_list *pl = pprefix->plist; pl->next; pl = pl->next) ++ prefix_list *prev = NULL; ++ for (struct prefix_list *pl = pprefix->plist; pl;) + { + if (strcmp (prefix, pl->prefix) == 0) + { +- remove = pl; +- remove_prev = prev; +- continue; ++ if (prev == NULL) ++ pprefix->plist = pl->next; ++ else ++ prev->next = pl->next; ++ ++ prefix_list *remove = pl; ++ free (remove); ++ pl = pl->next; + } ++ else ++ { ++ prev = pl; + +- int l = strlen (pl->prefix); +- if (l > max_len) +- max_len = l; ++ int l = strlen (pl->prefix); ++ if (l > max_len) ++ max_len = l; + +- prev = &pl; +- } +- +- if (remove_prev) +- { +- *remove_prev = remove->next; +- free (remove); ++ pl = pl->next; ++ } + } + + pprefix->max_len = max_len; + } ++ ++ if (dup) ++ free (dup); ++} ++ ++#if CHECKING_P ++ ++namespace selftest { ++ ++/* Encode '#' and '_' to path and dir separators in order to test portability ++ of the test-cases. */ ++ ++static char * ++purge (const char *input) ++{ ++ char *s = xstrdup (input); ++ for (char *c = s; *c != '\0'; c++) ++ switch (*c) ++ { ++ case '/': ++ case ':': ++ *c = 'a'; /* Poison default string values. */ ++ break; ++ case '_': ++ *c = PATH_SEPARATOR; ++ break; ++ case '#': ++ *c = DIR_SEPARATOR; ++ break; ++ default: ++ break; ++ } ++ ++ return s; ++} ++ ++const char *env1 = purge ("#home#user#bin_#home#user#bin_#bin_#usr#bin"); ++const char *env2 = purge ("#root_#root_#root"); ++ ++/* Verify creation of prefix. */ ++ ++static void ++file_find_verify_prefix_creation (void) ++{ ++ path_prefix prefix; ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env1, &prefix); ++ ++ ASSERT_EQ (15, prefix.max_len); ++ ++ /* All prefixes end with DIR_SEPARATOR. */ ++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->prefix); ++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->next->prefix); ++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->next->next->prefix); ++ ASSERT_STREQ (purge ("#usr#bin#"), prefix.plist->next->next->next->prefix); ++ ASSERT_EQ (NULL, prefix.plist->next->next->next->next); ++} ++ ++/* Verify adding a prefix. */ ++ ++static void ++file_find_verify_prefix_add (void) ++{ ++ path_prefix prefix; ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env1, &prefix); ++ ++ add_prefix (&prefix, purge ("#root")); ++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->prefix); ++ ASSERT_STREQ (purge ("#root#"), ++ prefix.plist->next->next->next->next->prefix); ++ ++ add_prefix_begin (&prefix, purge ("#var")); ++ ASSERT_STREQ (purge ("#var#"), prefix.plist->prefix); ++} ++ ++/* Verify adding a prefix. */ ++ ++static void ++file_find_verify_prefix_removal (void) ++{ ++ path_prefix prefix; ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env1, &prefix); ++ ++ /* All occurences of a prefix should be removed. */ ++ remove_prefix (purge ("#home#user#bin"), &prefix); ++ ++ ASSERT_EQ (9, prefix.max_len); ++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->prefix); ++ ASSERT_STREQ (purge ("#usr#bin#"), prefix.plist->next->prefix); ++ ASSERT_EQ (NULL, prefix.plist->next->next); ++ ++ remove_prefix (purge ("#usr#bin#"), &prefix); ++ ASSERT_EQ (5, prefix.max_len); ++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->prefix); ++ ASSERT_EQ (NULL, prefix.plist->next); ++ ++ remove_prefix (purge ("#dev#random#"), &prefix); ++ remove_prefix (purge ("#bi#"), &prefix); ++ ++ remove_prefix (purge ("#bin#"), &prefix); ++ ASSERT_EQ (NULL, prefix.plist); ++ ASSERT_EQ (0, prefix.max_len); ++ ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env2, &prefix); ++ ASSERT_EQ (6, prefix.max_len); ++ ++ remove_prefix (purge ("#root#"), &prefix); ++ ASSERT_EQ (NULL, prefix.plist); ++ ASSERT_EQ (0, prefix.max_len); + } ++ ++/* Run all of the selftests within this file. */ ++ ++void file_find_c_tests () ++{ ++ file_find_verify_prefix_creation (); ++ file_find_verify_prefix_add (); ++ file_find_verify_prefix_removal (); ++} ++ ++} // namespace selftest ++#endif /* CHECKING_P */ +Index: b/src/gcc/gcc-ar.c +=================================================================== +--- a/src/gcc/gcc-ar.c ++++ b/src/gcc/gcc-ar.c +@@ -194,15 +194,20 @@ main (int ac, char **av) + #ifdef CROSS_DIRECTORY_STRUCTURE + real_exe_name = concat (target_machine, "-", PERSONALITY, NULL); + #endif +- /* Do not search original location in the same folder. */ +- char *exe_folder = lrealpath (av[0]); +- exe_folder[strlen (exe_folder) - strlen (lbasename (exe_folder))] = '\0'; +- char *location = concat (exe_folder, PERSONALITY, NULL); ++ char *wrapper_file = lrealpath (av[0]); ++ exe_name = lrealpath (find_a_file (&path, real_exe_name, X_OK)); + +- if (access (location, X_OK) == 0) +- remove_prefix (exe_folder, &path); ++ /* If the exe_name points to the wrapper, remove folder of the wrapper ++ from prefix and try search again. */ ++ if (strcmp (exe_name, wrapper_file) == 0) ++ { ++ char *exe_folder = wrapper_file; ++ exe_folder[strlen (exe_folder) - strlen (lbasename (exe_folder))] = '\0'; ++ remove_prefix (exe_folder, &path); ++ ++ exe_name = find_a_file (&path, real_exe_name, X_OK); ++ } + +- exe_name = find_a_file (&path, real_exe_name, X_OK); + if (!exe_name) + { + fprintf (stderr, "%s: Cannot find binary '%s'\n", av[0], +Index: b/src/gcc/selftest-run-tests.c +=================================================================== +--- a/src/gcc/selftest-run-tests.c ++++ b/src/gcc/selftest-run-tests.c +@@ -66,6 +66,7 @@ selftest::run_tests () + sreal_c_tests (); + fibonacci_heap_c_tests (); + typed_splay_tree_c_tests (); ++ file_find_c_tests (); + + /* Mid-level data structures. */ + input_c_tests (); +Index: b/src/gcc/selftest.h +=================================================================== +--- a/src/gcc/selftest.h ++++ b/src/gcc/selftest.h +@@ -196,6 +196,7 @@ extern void tree_c_tests (); + extern void tree_cfg_c_tests (); + extern void vec_c_tests (); + extern void wide_int_cc_tests (); ++extern void file_find_c_tests (); + + extern int num_passes; + diff --git a/patches/pr87808.diff b/patches/pr87808.diff new file mode 100644 index 0000000..c5d2868 --- /dev/null +++ b/patches/pr87808.diff @@ -0,0 +1,56 @@ +# DP: Fix PR jit/87808. + +--- a/src/gcc/jit/Make-lang.in ++++ b/src/gcc/jit/Make-lang.in +@@ -146,6 +146,9 @@ ifneq (,$(findstring mingw,$(target))) + jit_OBJS += jit/jit-w32.o + endif + ++CFLAGS-jit/jit-playback.o += \ ++ -DFALLBACK_GCC_EXEC_PREFIX=\"$(libdir)/gcc/$(target_subdir)/$(version)\" ++ + # Use strict warnings for this front end. + jit-warn = $(STRICT_WARN) + +--- a/src/gcc/jit/jit-playback.cc ++++ b/src/gcc/jit/jit-playback.cc +@@ -45,6 +45,7 @@ along with GCC; see the file COPYING3. + #include "diagnostic.h" + #include "stmt.h" + #include "realmpfr.h" ++#include "file-find.h" + + #include "jit-playback.h" + #include "jit-result.h" +@@ -3437,7 +3438,31 @@ void + playback::context:: + invoke_embedded_driver (const vec *argvec) + { ++ static char* gcc_driver_file = NULL; ++ + JIT_LOG_SCOPE (get_logger ()); ++ ++ /* process_command(), uses make_relative_prefix(), searches PATH ++ for the external driver, which might not be found. In this case ++ fall back to the configured default. */ ++#ifdef FALLBACK_GCC_EXEC_PREFIX ++ if (gcc_driver_file == NULL && ::getenv ("GCC_EXEC_PREFIX") == NULL) ++ { ++ struct path_prefix path = { 0, 0, "exec" }; ++ ++ prefix_from_env ("PATH", &path); ++ gcc_driver_file = find_a_file (&path, gcc_driver_name, X_OK); ++ if (gcc_driver_file == NULL) ++ { ++ char *str = concat ("GCC_EXEC_PREFIX=", ++ FALLBACK_GCC_EXEC_PREFIX, NULL); ++ ::putenv (str); ++ log ("gcc driver %s not found, using fallback GCC_EXEC_PREFIX=%s", ++ gcc_driver_name, FALLBACK_GCC_EXEC_PREFIX); ++ } ++ } ++#endif ++ + driver d (true, /* can_finalize */ + false); /* debug */ + int result = d.main (argvec->length (), diff --git a/patches/pr94253.diff b/patches/pr94253.diff new file mode 100644 index 0000000..4a935f2 --- /dev/null +++ b/patches/pr94253.diff @@ -0,0 +1,48 @@ +commit 50e1e417b5cc68a6fd280e0a67c5c4eba524b70b +Author: Richard Sandiford +Date: Sun Mar 22 18:51:48 2020 +0000 + + rs6000: Allow FPRs to change between SDmode and DDmode [PR94254] + + g:497498c878d48754318e486428e2aa30854020b9 caused lra to cycle + on some SDmode reloads for power6. As explained in more detail + in the PR comments, the problem was a conflict between two target + hooks: rs6000_secondary_memory_needed_mode required SDmode FPR + reloads to use DDmode memory (rightly, since using SDmode memory + wouldn't make progress) but rs6000_can_change_mode_class didn't + allow FPRs to change from SDmode to DDmode. Previously lra + ignored that and changed the mode anyway. + + From what Segher says, it sounds like the "from_size < 8 || to_size < 8" + check is mostly there for SF<->64-bit subregs, and that SDmode is stored + in the way that target-independent code expects. This patch therefore + allows SD<->DD changes. + + I wondered about checking for SD<->64-bit changes instead, but that + seemed like an unnecessary generalisation for this stage. + + 2020-03-23 Richard Sandiford + + gcc/ + PR target/94254 + * config/rs6000/rs6000.c (rs6000_can_change_mode_class): Allow + FPRs to change between SDmode and DDmode. + +--- a/src/gcc/config/rs6000/rs6000.cc ++++ b/src/gcc/config/rs6000/rs6000.cc +@@ -13690,6 +13690,15 @@ rs6000_can_change_mode_class (machine_mo + || (to == SDmode && from == DDmode)) + return true; + ++ /* Allow SD<->DD changes, since SDmode values are stored in ++ the low half of the DDmode, just like target-independent ++ code expects. We need to allow at least SD->DD since ++ rs6000_secondary_memory_needed_mode asks for that change ++ to be made for SD reloads. */ ++ if ((to == DDmode && from == SDmode) ++ || (to == SDmode && from == DDmode)) ++ return true; ++ + if (from_size < 8 || to_size < 8) + return false; + diff --git a/patches/rename-info-files.diff b/patches/rename-info-files.diff new file mode 100644 index 0000000..02cc8e2 --- /dev/null +++ b/patches/rename-info-files.diff @@ -0,0 +1,661 @@ +# DP: Allow transformations on info file names. Reference the +# DP: transformed info file names in the texinfo files. + + +2004-02-17 Matthias Klose + +gcc/ChangeLog: + * Makefile.in: Allow transformations on info file names. + Define MAKEINFODEFS, macros to pass transformated info file + names to makeinfo. + * doc/cpp.texi: Use macros defined in MAKEINFODEFS for references. + * doc/cppinternals.texi: Likewise. + * doc/extend.texi: Likewise. + * doc/gcc.texi: Likewise. + * doc/gccint.texi: Likewise. + * doc/invoke.texi: Likewise. + * doc/libgcc.texi: Likewise. + * doc/makefile.texi: Likewise. + * doc/passes.texi: Likewise. + * doc/sourcebuild.texi: Likewise. + * doc/standards.texi: Likewise. + * doc/trouble.texi: Likewise. + +gcc/fortran/ChangeLog: + * Make-lang.in: Allow transformations on info file names. + Pass macros of transformated info file defined in MAKEINFODEFS + names to makeinfo. + * gfortran.texi: Use macros defined in MAKEINFODEFS for references. + +--- a/src/gcc/fortran/gfortran.texi ++++ b/src/gcc/fortran/gfortran.texi +@@ -101,7 +101,7 @@ Texts being (a) (see below), and with th + @ifinfo + @dircategory Software development + @direntry +-* gfortran: (gfortran). The GNU Fortran Compiler. ++* @value{fngfortran}: (@value{fngfortran}). The GNU Fortran Compiler. + @end direntry + This file documents the use and the internals of + the GNU Fortran compiler, (@command{gfortran}). +--- a/src/gcc/fortran/Make-lang.in ++++ b/src/gcc/fortran/Make-lang.in +@@ -116,7 +116,9 @@ fortran.tags: force + cd $(srcdir)/fortran; $(ETAGS) -o TAGS.sub *.cc *.h; \ + $(ETAGS) --include TAGS.sub --include ../TAGS.sub + +-fortran.info: doc/gfortran.info doc/gfc-internals.info ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++INFO_FORTRAN_I_NAME = $(shell echo gfc-internals|sed '$(program_transform_name)') ++fortran.info: doc/$(INFO_FORTRAN_NAME).info doc/$(INFO_FORTRAN_I_NAME).info + + F95_DVIFILES = doc/gfortran.dvi + +@@ -199,10 +201,10 @@ GFORTRAN_TEXI = \ + $(srcdir)/doc/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gfortran.info: $(GFORTRAN_TEXI) ++doc/$(INFO_FORTRAN_NAME).info: $(GFORTRAN_TEXI) + if [ x$(BUILD_INFO) = xinfo ]; then \ + rm -f doc/gfortran.info-*; \ +- $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ ++ $(MAKEINFO) $(MAKEINFODEFS) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ + -o $@ $<; \ + else true; fi + +@@ -230,7 +232,7 @@ GFC_INTERNALS_TEXI = \ + $(srcdir)/doc/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gfc-internals.info: $(GFC_INTERNALS_TEXI) ++doc/$(INFO_FORTRAN_I_NAME).info: $(GFC_INTERNALS_TEXI) + if [ x$(BUILD_INFO) = xinfo ]; then \ + rm -f doc/gfc-internals.info-*; \ + $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ +@@ -267,7 +269,7 @@ fortran.install-common: install-finclude + + fortran.install-plugin: + +-fortran.install-info: $(DESTDIR)$(infodir)/gfortran.info ++fortran.install-info: $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info + + fortran.install-man: $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext) + +@@ -285,7 +287,7 @@ fortran.uninstall: + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ + rm -rf $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext); \ + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ +- rm -rf $(DESTDIR)$(infodir)/gfortran.info* ++ rm -rf $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info* + + # + # Clean hooks: +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -3685,8 +3685,31 @@ ifeq ($(BUILD_INFO),no-info) + no-info: info + endif + +-INFOFILES = doc/cpp.info doc/gcc.info doc/gccint.info \ +- doc/gccinstall.info doc/cppinternals.info ++INFO_CPP_NAME = $(shell echo cpp|sed '$(program_transform_name)') ++INFO_GCC_NAME = $(shell echo gcc|sed '$(program_transform_name)') ++INFO_GXX_NAME = $(shell echo g++|sed '$(program_transform_name)') ++INFO_GCCINT_NAME = $(shell echo gccint|sed '$(program_transform_name)') ++INFO_GCCINSTALL_NAME = $(shell echo gccinstall|sed '$(program_transform_name)') ++INFO_CPPINT_NAME = $(shell echo cppinternals|sed '$(program_transform_name)') ++ ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++INFO_GCCGO_NAME = $(shell echo gccgo|sed '$(program_transform_name)') ++ ++INFOFILES = doc/$(INFO_CPP_NAME).info doc/$(INFO_GCC_NAME).info \ ++ doc/$(INFO_GCCINT_NAME).info \ ++ doc/$(INFO_GCCINSTALL_NAME).info doc/$(INFO_CPPINT_NAME).info ++ ++MAKEINFODEFS = -D 'fncpp $(INFO_CPP_NAME)' \ ++ -D 'fngcc $(INFO_GCC_NAME)' \ ++ -D 'fngcov $(INFO_GCC_NAME)' \ ++ -D 'fngcovtool $(INFO_GCC_NAME)' \ ++ -D 'fngcovdump $(INFO_GCC_NAME)' \ ++ -D 'fngxx $(INFO_GXX_NAME)' \ ++ -D 'fngccint $(INFO_GCCINT_NAME)' \ ++ -D 'fngccinstall $(INFO_GCCINSTALL_NAME)' \ ++ -D 'fncppint $(INFO_CPPINT_NAME)' \ ++ -D 'fngfortran $(INFO_FORTRAN_NAME)' \ ++ -D 'fngccgo $(INFO_GCCGO_NAME)' + + info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo + +@@ -3734,7 +3757,20 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) + if [ -n "$(PKGVERSION)" ]; then \ + echo "@set VERSION_PACKAGE $(PKGVERSION)" >> $@T; \ + fi +- echo "@set BUGURL $(BUGURL_TEXI)" >> $@T; \ ++ echo "@set BUGURL $(BUGURL_TEXI)" >> $@T ++ ( \ ++ echo '@set fncpp $(INFO_CPP_NAME)'; \ ++ echo '@set fngcc $(INFO_GCC_NAME)'; \ ++ echo '@set fngcov $(INFO_GCC_NAME)'; \ ++ echo '@set fngcovtool $(INFO_GCC_NAME)'; \ ++ echo '@set fngcovdump $(INFO_GCC_NAME)'; \ ++ echo '@set fngxx $(INFO_GXX_NAME)'; \ ++ echo '@set fngccint $(INFO_GCCINT_NAME)'; \ ++ echo '@set fngccinstall $(INFO_GCCINSTALL_NAME)'; \ ++ echo '@set fncppint $(INFO_CPPINT_NAME)'; \ ++ echo '@set fngfortran $(INFO_FORTRAN_NAME)'; \ ++ echo '@set fngccgo $(INFO_GCCGO_NAME)'; \ ++ ) >> $@T + mv -f $@T $@ + + +@@ -3742,21 +3778,41 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) + # patterns. To use them, put each of the specific targets with its + # specific dependencies but no build commands. + +-doc/cpp.info: $(TEXI_CPP_FILES) +-doc/gcc.info: $(TEXI_GCC_FILES) +-doc/gccint.info: $(TEXI_GCCINT_FILES) +-doc/cppinternals.info: $(TEXI_CPPINT_FILES) +- ++# Generic entry to handle info files, which are not renamed (currently Ada) + doc/%.info: %.texi + if [ x$(BUILD_INFO) = xinfo ]; then \ + $(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + fi + ++doc/$(INFO_CPP_NAME).info: $(TEXI_CPP_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCC_NAME).info: $(TEXI_GCC_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCCINT_NAME).info: $(TEXI_GCCINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_CPPINT_NAME).info: $(TEXI_CPPINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ + # Duplicate entry to handle renaming of gccinstall.info +-doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES) ++doc/$(INFO_GCCINSTALL_NAME).info: $(TEXI_GCCINSTALL_FILES) + if [ x$(BUILD_INFO) = xinfo ]; then \ +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + fi + +@@ -4238,11 +4294,11 @@ install-libgdiagnostics: libgdiagnostics + # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir + # to do the install. + install-info:: doc installdirs \ +- $(DESTDIR)$(infodir)/cpp.info \ +- $(DESTDIR)$(infodir)/gcc.info \ +- $(DESTDIR)$(infodir)/cppinternals.info \ +- $(DESTDIR)$(infodir)/gccinstall.info \ +- $(DESTDIR)$(infodir)/gccint.info \ ++ $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info \ + lang.install-info + + $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs +@@ -4481,8 +4537,11 @@ uninstall: lang.uninstall + -rm -rf $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext) + -rm -rf $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext) +- -rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info* +- -rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info* + for i in ar nm ranlib ; do \ + install_name=`echo gcc-$$i|sed '$(program_transform_name)'`$(exeext) ;\ + target_install_name=$(target_noncanonical)-`echo gcc-$$i|sed '$(program_transform_name)'`$(exeext) ; \ +--- a/src/gcc/ada/gnat-style.texi ++++ b/src/gcc/ada/gnat-style.texi +@@ -12,7 +12,7 @@ + @finalout + @dircategory GNU Ada Tools + @direntry +-* gnat-style: (gnat-style.info). gnat-style ++* gnat-style: (gnat-style-15). GNAT Coding Style + @end direntry + + @c %**end of header +--- a/src/gcc/ada/gnat_rm.texi ++++ b/src/gcc/ada/gnat_rm.texi +@@ -12,7 +12,7 @@ + @finalout + @dircategory GNU Ada Tools + @direntry +-* gnat_rm: (gnat_rm.info). gnat_rm ++* GNAT Reference Manual: (gnat_rm-15). Reference Manual for GNU Ada tools. + @end direntry + + @c %**end of header +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -19243,7 +19243,7 @@ One of the standard libraries bypassed b + @option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines + which GCC uses to overcome shortcomings of particular machines, or special + needs for some languages. +-(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler ++(@xref{Interface,,Interfacing to GCC Output,@value{fngccint},GNU Compiler + Collection (GCC) Internals}, + for more discussion of @file{libgcc.a}.) + In most cases, you need @file{libgcc.a} even when you want to avoid +@@ -19252,7 +19252,7 @@ or @option{-nodefaultlibs} you should us + This ensures that you have no unresolved references to internal GCC + library subroutines. + (An example of such an internal subroutine is @code{__main}, used to ensure C++ +-constructors are called; @pxref{Collect2,,@code{collect2}, gccint, ++constructors are called; @pxref{Collect2,,@code{collect2}, @value{fngccint}, + GNU Compiler Collection (GCC) Internals}.) + + @opindex nostdlib++ +@@ -37987,7 +37987,7 @@ Note that you can also specify places to + @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These + take precedence over places specified using environment variables, which + in turn take precedence over those specified by the configuration of GCC@. +-@xref{Driver,, Controlling the Compilation Driver @file{gcc}, gccint, ++@xref{Driver,, Controlling the Compilation Driver @file{gcc}, @value{fngccint}, + GNU Compiler Collection (GCC) Internals}. + + @table @env +@@ -38167,7 +38167,7 @@ the headers it contains change. + + A precompiled header file is searched for when @code{#include} is + seen in the compilation. As it searches for the included file +-(@pxref{Search Path,,Search Path,cpp,The C Preprocessor}) the ++(@pxref{Search Path,,Search Path,@value{fncpp},The C Preprocessor}) the + compiler looks for a precompiled header in each directory just before it + looks for the include file in that directory. The name searched for is + the name specified in the @code{#include} with @samp{.gch} appended. If +--- a/src/gcc/doc/extend.texi ++++ b/src/gcc/doc/extend.texi +@@ -29824,7 +29824,7 @@ want to write code that checks whether t + test for the GNU compiler the same way as for C programs: check for a + predefined macro @code{__GNUC__}. You can also use @code{__GNUG__} to + test specifically for GNU C++ (@pxref{Common Predefined Macros,, +-Predefined Macros,cpp,The GNU C Preprocessor}). ++Predefined Macros,@value{fncpp},The GNU C Preprocessor}). + + @menu + * C++ Volatiles:: What constitutes an access to a volatile object. +--- a/src/gcc/doc/standards.texi ++++ b/src/gcc/doc/standards.texi +@@ -371,5 +371,5 @@ available at @uref{https://gcc.gnu.org/o + GNAT Reference Manual}, for information on standard + conformance and compatibility of the Ada compiler. + +-@xref{Standards,,Standards, gfortran, The GNU Fortran Compiler}, for details ++@xref{Standards,,Standards, @value{fngfortran}, The GNU Fortran Compiler}, for details + of standards supported by GNU Fortran. +--- a/src/gcc/doc/libgcc.texi ++++ b/src/gcc/doc/libgcc.texi +@@ -24,7 +24,7 @@ that needs them. + GCC will also generate calls to C library routines, such as + @code{memcpy} and @code{memset}, in some cases. The set of routines + that GCC may possibly use is documented in @ref{Other +-Builtins,,,gcc, Using the GNU Compiler Collection (GCC)}. ++Builtins,,,@value{fngcc}, Using the GNU Compiler Collection (GCC)}. + + These routines take arguments and return values of a specific machine + mode, not a specific C type. @xref{Machine Modes}, for an explanation +--- a/src/gcc/doc/gccint.texi ++++ b/src/gcc/doc/gccint.texi +@@ -49,7 +49,7 @@ Texts being (a) (see below), and with th + @ifnottex + @dircategory Software development + @direntry +-* gccint: (gccint). Internals of the GNU Compiler Collection. ++* @value{fngccint}: (@value{fngccint}). Internals of the GNU Compiler Collection. + @end direntry + This file documents the internals of the GNU compilers. + @sp 1 +@@ -81,7 +81,7 @@ write front ends for new languages. It + @value{VERSION_PACKAGE} + @end ifset + version @value{version-GCC}. The use of the GNU compilers is documented in a +-separate manual. @xref{Top,, Introduction, gcc, Using the GNU ++separate manual. @xref{Top,, Introduction, @value{fngcc}, Using the GNU + Compiler Collection (GCC)}. + + This manual is mainly a reference manual rather than a tutorial. It +--- a/src/gcc/doc/cpp.texi ++++ b/src/gcc/doc/cpp.texi +@@ -50,7 +50,7 @@ This manual contains no Invariant Sectio + @ifinfo + @dircategory Software development + @direntry +-* Cpp: (cpp). The GNU C preprocessor. ++* @value{fncpp}: (@value{fncpp}). The GNU C preprocessor. + @end direntry + @end ifinfo + +--- a/src/gcc/doc/gcc.texi ++++ b/src/gcc/doc/gcc.texi +@@ -135,7 +135,7 @@ version @value{version-GCC}. + The internals of the GNU compilers, including how to port them to new + targets and some information about how to write front ends for new + languages, are documented in a separate manual. @xref{Top,, +-Introduction, gccint, GNU Compiler Collection (GCC) Internals}. ++Introduction, @value{fngccint}, GNU Compiler Collection (GCC) Internals}. + + @menu + * G++ and GCC:: You can compile C or C++ programs. +--- a/src/gcc/doc/install.texi ++++ b/src/gcc/doc/install.texi +@@ -89,7 +89,7 @@ Free Documentation License}''. + @end ifinfo + @dircategory Software development + @direntry +-* gccinstall: (gccinstall). Installing the GNU Compiler Collection. ++* @value{fngccinstall}: (@value{fngccinstall}). Installing the GNU Compiler Collection. + @end direntry + + @c Part 3 Titlepage and Copyright +--- a/src/gcc/doc/cppinternals.texi ++++ b/src/gcc/doc/cppinternals.texi +@@ -7,7 +7,7 @@ + @ifinfo + @dircategory Software development + @direntry +-* Cpplib: (cppinternals). Cpplib internals. ++* @value{fncppint}: (@value{fncppint}). Cpplib internals. + @end direntry + @end ifinfo + +--- a/src/libgomp/libgomp.texi ++++ b/src/libgomp/libgomp.texi +@@ -31,7 +31,7 @@ texts being (a) (see below), and with th + @ifinfo + @dircategory GNU Libraries + @direntry +-* libgomp: (libgomp). GNU Offloading and Multi Processing Runtime Library. ++* @value{fnlibgomp}: (@value{fnlibgomp}). GNU Offloading and Multi Processing Runtime Library. + @end direntry + + This manual documents libgomp, the GNU Offloading and Multi Processing +--- a/src/libgomp/Makefile.in ++++ b/src/libgomp/Makefile.in +@@ -616,7 +616,8 @@ info_TEXINFOS = libgomp.texi + + # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) + @BUILD_INFO_TRUE@STAMP_BUILD_INFO = stamp-build-info +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) ++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)') ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info + MAINTAINERCLEANFILES = $(srcdir)/libgomp.info + MULTISRCTOP = + MULTIBUILDTOP = +@@ -1395,15 +1396,16 @@ env.lo: libgomp_f.h + env.o: libgomp_f.h + + all-local: $(STAMP_GENINSRC) +- +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ [ "$(INFO_LIBGOMP_NAME).info" = libgomp.info ] || cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + + # target overrides +--- a/src/libgomp/Makefile.am ++++ b/src/libgomp/Makefile.am +@@ -132,14 +132,16 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ [ "$(INFO_LIBGOMP_NAME).info = libgomp.info ] || cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + + +--- a/src/libitm/libitm.texi ++++ b/src/libitm/libitm.texi +@@ -20,7 +20,7 @@ Free Documentation License''. + @ifinfo + @dircategory GNU Libraries + @direntry +-* libitm: (libitm). GNU Transactional Memory Library ++* @value{fnlibitm}: (@value{fnlibitm}). GNU Transactional Memory Library + @end direntry + + This manual documents the GNU Transactional Memory Library. +--- a/src/libitm/Makefile.am ++++ b/src/libitm/Makefile.am +@@ -110,14 +110,17 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libitm.info +- cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info ++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)') ++stamp-geninsrc: $(INFO_LIBITM_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info + @touch $@ + +-libitm.info: $(STAMP_BUILD_INFO) ++libitm.info: $(INFO_LIBITM_NAME).info ++ [ $(INFO_LIBITM_NAME).info = libitm.info ] || cp $(INFO_LIBITM_NAME).info libitm.info ++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libitm.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)'-o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi + @touch $@ + + +--- a/src/libitm/Makefile.in ++++ b/src/libitm/Makefile.in +@@ -1188,14 +1188,17 @@ vpath % $(strip $(search_path)) + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libitm.info +- cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info ++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)') ++stamp-geninsrc: $(INFO_LIBITM_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info + @touch $@ + +-libitm.info: $(STAMP_BUILD_INFO) ++libitm.info: $(INFO_LIBITM_NAME).info ++ [ $(INFO_LIBITM_NAME).info = libitm.info ] || cp $(INFO_LIBITM_NAME).info libitm.info ++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libitm.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)' -o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi + @touch $@ + + # GNU Make needs to see an explicit $(MAKE) variable in the command it +--- a/src/gcc/go/Make-lang.in ++++ b/src/gcc/go/Make-lang.in +@@ -95,10 +95,11 @@ GO_TEXI_FILES = \ + $(gcc_docdir)/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gccgo.info: $(GO_TEXI_FILES) ++INFO_GCCGO_NAME = $(shell echo gccgo|sed '$(program_transform_name)') ++doc/$(INFO_GCCGO_NAME).info: $(GO_TEXI_FILES) + if test "x$(BUILD_INFO)" = xinfo; then \ +- rm -f doc/gccgo.info*; \ +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ rm -f doc/$(INFO_GCCGO_NAME).info*; \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + else true; fi + +@@ -124,7 +125,7 @@ gccgo.pod: go/gccgo.texi + go.all.cross: gccgo-cross$(exeext) + go.start.encap: gccgo$(exeext) + go.rest.encap: +-go.info: doc/gccgo.info ++go.info: doc/$(INFO_GCCGO_NAME).info + go.dvi: doc/gccgo.dvi + go.pdf: doc/gccgo.pdf + go.html: $(build_htmldir)/go/index.html +@@ -163,7 +164,7 @@ go.install-common: installdirs + + go.install-plugin: + +-go.install-info: $(DESTDIR)$(infodir)/gccgo.info ++go.install-info: $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info + + go.install-pdf: doc/gccgo.pdf + @$(NORMAL_INSTALL) +@@ -213,7 +214,7 @@ go.uninstall: + rm -rf $(DESTDIR)$(bindir)/$(GCCGO_INSTALL_NAME)$(exeext) + rm -rf $(DESTDIR)$(man1dir)/$(GCCGO_INSTALL_NAME)$(man1ext) + rm -rf $(DESTDIR)$(bindir)/$(GCCGO_TARGET_INSTALL_NAME)$(exeext) +- rm -rf $(DESTDIR)$(infodir)/gccgo.info* ++ rm -rf $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info* + + # Clean hooks. + +--- a/src/gcc/go/gccgo.texi ++++ b/src/gcc/go/gccgo.texi +@@ -50,7 +50,7 @@ man page gfdl(7). + @format + @dircategory Software development + @direntry +-* Gccgo: (gccgo). A GCC-based compiler for the Go language ++* @value{fngccgo}: (@value{fngccgo}). A GCC-based compiler for the Go language + @end direntry + @end format + +@@ -124,7 +124,7 @@ and the Info entries for @file{gccgo} an + + The @command{gccgo} command is a frontend to @command{gcc} and + supports many of the same options. @xref{Option Summary, , Option +-Summary, gcc, Using the GNU Compiler Collection (GCC)}. This manual ++Summary, @value{fngcc}, Using the GNU Compiler Collection (GCC)}. This manual + only documents the options specific to @command{gccgo}. + + The @command{gccgo} command may be used to compile Go source code into +--- a/src/libquadmath/libquadmath.texi ++++ b/src/libquadmath/libquadmath.texi +@@ -25,7 +25,7 @@ copy and modify this GNU manual. + @ifinfo + @dircategory GNU Libraries + @direntry +-* libquadmath: (libquadmath). GCC Quad-Precision Math Library ++* @value{fnlibquadmath}: (@value{fnlibquadmath}). GCC Quad-Precision Math Library + @end direntry + + This manual documents the GCC Quad-Precision Math Library API. +--- a/src/libquadmath/Makefile.am ++++ b/src/libquadmath/Makefile.am +@@ -139,16 +139,18 @@ STAMP_BUILD_INFO = + endif + + +-stamp-geninsrc: libquadmath.info +- cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info ++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)') ++ ++stamp-geninsrc: $(INFO_LIBQMATH_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.info + @touch $@ + + stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS) +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi + @touch $@ + +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) +-MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info ++MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info + + endif BUILD_LIBQUADMATH + +--- a/src/libquadmath/Makefile.in ++++ b/src/libquadmath/Makefile.in +@@ -283,7 +283,8 @@ AM_V_texidevnull = $(am__v_texidevnull_@ + am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) + am__v_texidevnull_0 = > /dev/null + am__v_texidevnull_1 = +-INFO_DEPS = libquadmath.info ++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)') ++INFO_DEPS = $(INFO_LIBQMATH_NAME).info + am__TEXINFO_TEX_DIR = $(srcdir)/../gcc/doc/include + DVIS = libquadmath.dvi + PDFS = libquadmath.pdf +@@ -556,8 +557,8 @@ AUTOMAKE_OPTIONS = foreign info-in-build + + # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) + @BUILD_INFO_TRUE@@BUILD_LIBQUADMATH_TRUE@STAMP_BUILD_INFO = stamp-build-info +-@BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) +-@BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info ++@BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info ++@BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info + + # Automake Documentation: + # If your package has Texinfo files in many directories, you can use the +@@ -1437,19 +1438,19 @@ uninstall-am: uninstall-dvi-am uninstall + @BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ $(libquadmath_la_OBJECTS) $(libquadmath_la_LIBADD) \ + @BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ > $@ || (rm -f $@ ; exit 1) + +-@BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: libquadmath.info +-@BUILD_LIBQUADMATH_TRUE@ cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info ++@BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: $(INFO_LIBQMATH_NAME).info ++@BUILD_LIBQUADMATH_TRUE@ cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/$(INFO_LIBQMATH_NAME).info + @BUILD_LIBQUADMATH_TRUE@ @touch $@ + + @BUILD_LIBQUADMATH_TRUE@stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS) +-@BUILD_LIBQUADMATH_TRUE@ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi ++@BUILD_LIBQUADMATH_TRUE@ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi + @BUILD_LIBQUADMATH_TRUE@ @touch $@ + + all-local: $(ALL_LOCAL_DEPS) + + # Unconditionally override this target, so that automake's definition + # does not wrongly interfere. +-libquadmath.info: $(STAMP_BUILD_INFO) ++$(INFO_LIBQMATH_NAME).info: $(STAMP_BUILD_INFO) + + libquadmath-vers.texi: + echo "@set BUGURL $(REPORT_BUGS_TEXI)" > $@ diff --git a/patches/rust-enabled.diff b/patches/rust-enabled.diff new file mode 100644 index 0000000..d0972fa --- /dev/null +++ b/patches/rust-enabled.diff @@ -0,0 +1,23 @@ +# DP: Explicitely enable rust, too late to be removed from 23.04 + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -2150,18 +2150,6 @@ if test -d ${srcdir}/gcc; then + ;; + esac + +- # Disable Rust for GCC 13 release. +- case ${add_this_lang}:${language} in +- yes:rust) +- # Specifically requested language; tell them. +- AC_MSG_ERROR([Rust is not supported in GCC 13 release]) +- ;; +- *:rust) +- # Silently disable. +- add_this_lang=unsupported +- ;; +- esac +- + # Disable jit if -enable-host-shared not specified + # but not if building for Mingw. All code in Windows + # is position independent code (PIC). diff --git a/patches/sh-bootstrap-compare.diff b/patches/sh-bootstrap-compare.diff new file mode 100644 index 0000000..27d0fc3 --- /dev/null +++ b/patches/sh-bootstrap-compare.diff @@ -0,0 +1,13 @@ +# DP: ignore gm2version.o stage diff on some archtectures (m68k, riscv64) + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -4223,6 +4223,8 @@ compare_exclusions="$compare_exclusions + compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/SYSTEM*" + compare_exclusions="$compare_exclusions | gcc/m2/gm2version*" + compare_exclusions="$compare_exclusions | gcc/cobol/parse\$(objext)" ++compare_exclusions="$compare_exclusions | sh4-linux-gnu/libstdc++-v3/src/c++98/math_stubs_long_double\$(objext)" ++compare_exclusions="$compare_exclusions | sh4-linux-gnu/libstdc++-v3/src/.libs/compatibility\$(objext)" + case "$target" in + hppa*64*-*-hpux*) ;; + mipsel-*linux-gnu) compare_exclusions="$compare_exclusions | gcc/rust/rust-macro-builtins.o | gcc/rust/rust-session-manager.o | gcc/rust/rust-cfg-parser.o | gcc/rust/rust-lex.o" ;; diff --git a/patches/sh-lra-support-doc.diff b/patches/sh-lra-support-doc.diff new file mode 100644 index 0000000..01b78f0 --- /dev/null +++ b/patches/sh-lra-support-doc.diff @@ -0,0 +1,44 @@ +From 8a687ad35493af0112f156f4551ef5ece82fae54 Mon Sep 17 00:00:00 2001 +From: Oleg Endo +Date: Sun, 29 Sep 2024 21:33:29 +0900 +Subject: [PATCH] SH: Add support for LRA and enable it by default + +SH: Tighten memory predicates and constraints + +--- a/src/gcc/doc/tm.texi ++++ b/src/gcc/doc/tm.texi +@@ -3093,9 +3093,20 @@ A target hook which returns @code{true} if @var{subst} can't + substitute safely pseudos with equivalent memory values during + register allocation. + The default version of this target hook returns @code{false}. +-On most machines, this default should be used. For generally +-machines with non orthogonal register usage for addressing, such +-as SH, this hook can be used to avoid excessive spilling. ++On most machines, this default should be used. For machines with ++non-orthogonal register usage for addressing, such as SH, ++this hook can be used to avoid excessive spilling. ++@end deftypefn ++ ++@deftypefn {Target Hook} bool TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P (rtx @var{subst}) ++A target hook which returns @code{true} if @var{subst} can't ++substitute safely pseudos with equivalent constant values during ++register allocation. ++The default version of this target hook returns @code{false}. ++On most machines, this default should be used. For machines with ++special constant load instructions that have additional constraints ++or being dependent on mode-switching, such as SH, this hook can be ++used to avoid unsafe substitution. + @end deftypefn + + @deftypefn {Target Hook} bool TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT (rtx *@var{offset1}, rtx *@var{offset2}, poly_int64 @var{orig_offset}, machine_mode @var{mode}) +--- a/src/gcc/doc/tm.texi.in ++++ b/src/gcc/doc/tm.texi.in +@@ -2398,6 +2398,8 @@ in the reload pass. + + @hook TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P + ++@hook TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P ++ + @hook TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT + + @hook TARGET_SPILL_CLASS diff --git a/patches/sh-lra-support.diff b/patches/sh-lra-support.diff new file mode 100644 index 0000000..2dc86e9 --- /dev/null +++ b/patches/sh-lra-support.diff @@ -0,0 +1,3380 @@ +From fd2e8b96b6fbf45a4cccd147ee82afac904e72fc Mon Sep 17 00:00:00 2001 +From: Oleg Endo +Date: Sun, 29 Sep 2024 21:33:29 +0900 +Subject: [PATCH] SH: Add support for LRA and enable it by default + +SH: Tighten memory predicates and constraints + +In particular, reject invalid hard-regs for memory address registers when using +LRA. Unfortunately we need to distingquish between old reload and LRA behaviors +for the transitional period. LRA seems to require stricter predicates and +constraints. + +gcc/ChangeLog: + + PR target/55212 + * config/sh/predicates.md (simple_mem_operand): + Use 'satisfies_constraint_Sra'. + (post_inc_mem, pre_dec_mem): Use 'satisfies_constraint_Rab'. + * config/sh/constraints.md (Rab, Rai, Sgb): New constraints. + (Sua, Sdd, Snd, Ssd, Sbv, Sra, Ara, Add): Use Rab and Rai constraints. + * config/sh/sync.md (atomic_mem_operand_0, atomic_mem_operand_1): Reject + GBR addresses when hard-llcs atomic mode is enabled. + +SH: Pin input args to hard-regs via predicates for sfuncs + +Some sfuncs uses hard reg as input and clobber its raw reg pattern. It +seems that LRA doesn't process this clobber pattern. Rewrite these +patterns so as to work with LRA. + +gcc/ChangeLog: + + PR target/55212 + * config/sh/predicates.md (hard_reg_r0..r7): New predicates. + * config/sh/sh.md (udivsi3_i4, udivsi3_i4_single, + udivsi3_i1): Rewrite with match_operand and match_dup. + (block_lump_real, block_lump_real_i4): Ditto. + (udivsi3): Adjust for it. + * config/sh/sh-mem.cc (expand_block_move): Ditto. + +LRA: Take scratch as implicit unused output reloads + +gcc/ChangeLog: + * lra-constraints.cc (match_reload, process_alt_operands, + curr_insn_transform): Take scratch as implicit unused + output reloads. + +LRA: Add cannot_substitute_const_equiv_p target hook + +On SH fp constant load special instructions 'fldi0' and 'fldi1' are only valid +for single-precision fp mode and thus depend on mode-switiching. Since LRA is +not aware of that it would emit such constant loads in the wrong mode. The new +target hook allows rejecting such potentially unsafe substitutions. + +gcc/ChangeLog: + PR target/117182 + * target.def (cannot_substitute_const_equiv_p): New target hook. + * doc/tm.texi.in: Add it. + * lra-constraints.cc (get_equiv): Use it. + * config/sh/sh.cc (sh_cannot_substitute_const_equiv_p): Override it. + * doc/tm.texi: Re-generate. + +SH: A test case for wrong-code with -mlra PR55212 c#192 / c#248 / att. 59102 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * gcc.target/sh/pr55212-c248.c: New test. + +SH: Add test case from PR55212 c#298 / c#311 / att. 59185 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * g++.target/sh/sh.exp: New. + * g++.target/sh/torture/sh-torture.exp: New. + * g++.target/sh/torture/pr55212-c311.C: New + +SH: Add test case from PR55212 c#331 / c#333 / att. 59215 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * g++.target/sh/torture/pr55212-c333.C: New. + +SH: Add test case from PR55212 c#367 / c#373 / att. 59285 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * g++.target/sh/torture/pr55212-c373.C: New. + +SH: Add test case from PR55212 c#378 / c#384 / att. 59289 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * g++.target/sh/torture/pr55212-c384.C: New. + +SH: Add test case from PR55212 c#405 / c#413 / att. 59442 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * g++.target/sh/torture/pr55212-c413.C: New. + +SH: Try to workaround fp-reg related move insns + +LRA will try to satisfy the constraints in match_scratch for the memory +displacements and it will make issues on this target. To mitigate the +issue, split movsf_ie_ra into several new patterns to remove +match_scratch. Also define a new sub-pattern of movdf for constant +loads. + +gcc/ChangeLog: + + PR target/55212 + * gcc/config/sh/predicates.md (pc_relative_load_operand): New predicate. + * gcc/config/sh/sh-protos.h (sh_movsf_ie_ra_split_p): Remove. + (sh_movsf_ie_y_split_p): New proto. + * gcc/config/sh/sh.cc: (sh_movsf_ie_ra_split_p): Remove. + (sh_movsf_ie_y_split_p): New function. + (broken_move): Take movsf_ie_ra into account for fldi cases. + * gcc/config/sh/sh.md (movdf_i4_F_z): New insn pattern. + (movdf): Use it. + (movsf_ie_ra): Use define_insn instead of define_insn_and_split. + (movsf_ie_F_z, movsf_ie_Q_z, movsf_ie_y): New insn pattern. + (movsf): Use new patterns. + (movsf-1): Don't split when operands[0] or operands[1] is fpul. + (movdf_i4_F_z+7): New splitter. + +SH: Try to workaround fp-reg related move insns pt.2 + +The current movsf logic for LRA doesn't work well for reg from/to +multiword subreg. Use a separate pattern movsf_ie_rffr for that case. +Also movsf_ie_ra should be disabled for reg from/to subreg of SImode. +If not, it's recognizable as such move when subreg1 pass tries to split +multiword because the constraints aren't effective in that stage. + +gcc/ChangeLog: + PR target/55212 + * config/sh/sh-protos.h (sh_movsf_ie_subreg_multiword_p): + New proto. + * config/sh/sh.cc (sh_movsf_ie_subreg_multiword_p): New function. + * config/sh/sh.md (movsf_ie_rffr): New insn_and_split. + (movsf): Use movsf_ie_rffr when sh_movsf_ie_subreg_multiword_p is true. + (movsf_ie_ra): Disable when sh_movsf_ie_y_split_p is true. + +SH: Try to reduce R0 live ranges + +Some move or extend patterns will make long R0 live ranges and could +confuse LRA. Try reduce the failures by using insn variants that use an +explicit R0-clobber. + +gcc/ChangeLog: + PR target/55212 + * config/sh/sh.md (extendsi2_short_mem_disp_z): New + insn_and_split. + (extendsi2): Use it for LRA. + (mov_store_mem_index, *mov_store_mem_index): New patterns. + (mov): Use it for LRA. + (movsf_ie_store_mem_index, movsf_ie_load_mem_index, + *movsf_ie_store_mem_inde, *movsf_ie_load_mem_index): New patterns. + (movsf): Use it for LRA. + +SH: Enable LRA by default + +gcc/ChangeLog: + + PR target/55212 + * conifg/sh/sh.opt (sh_lra_flag): Init to 1. + +SH: Add patch 59550 from PR/target 55212 +--- + gcc/config/sh/constraints.md | 65 +- + gcc/config/sh/predicates.md | 46 +- + gcc/config/sh/sh-mem.cc | 4 +- + gcc/config/sh/sh-protos.h | 3 +- + gcc/config/sh/sh.cc | 63 +- + gcc/config/sh/sh.md | 419 ++++++++++-- + gcc/config/sh/sh.opt | 2 +- + gcc/config/sh/sync.md | 8 +- + gcc/lra-constraints.cc | 20 +- + gcc/target.def | 21 +- + gcc/testsuite/g++.target/sh/sh.exp | 297 +++++++++ + .../g++.target/sh/torture/pr55212-c311.C | 73 +++ + .../g++.target/sh/torture/pr55212-c333.C | 259 ++++++++ + .../g++.target/sh/torture/pr55212-c373.C | 612 ++++++++++++++++++ + .../g++.target/sh/torture/pr55212-c384.C | 429 ++++++++++++ + .../g++.target/sh/torture/pr55212-c413.C | 38 ++ + .../g++.target/sh/torture/sh-torture.exp | 299 +++++++++ + gcc/testsuite/gcc.target/sh/pr55212-c248.c | 31 + + 20 files changed, 2586 insertions(+), 122 deletions(-) + create mode 100644 gcc/testsuite/g++.target/sh/sh.exp + create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c311.C + create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c333.C + create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c373.C + create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c384.C + create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c413.C + create mode 100644 gcc/testsuite/g++.target/sh/torture/sh-torture.exp + create mode 100644 gcc/testsuite/gcc.target/sh/pr55212-c248.c + +diff --git a/src/gcc/config/sh/constraints.md b/src/gcc/config/sh/constraints.md +index bfdd868213e..04fb241e271 100644 +--- a/src/gcc/config/sh/constraints.md ++++ b/src/gcc/config/sh/constraints.md +@@ -45,8 +45,10 @@ + ;; H: Floating point 1 + ;; Q: pc relative load operand + ;; Rxx: reserved for exotic register classes. ++;; Rab: address base register ++;; Rai: address index register + ;; Sxx: extra memory constraints +-;; Sua: unaligned memory address ++;; Sua: simple or post-inc address (for unaligned load) + ;; Sbv: QImode address without displacement + ;; Sbw: QImode address with 12 bit displacement + ;; Snd: address without displacement +@@ -260,16 +262,36 @@ + (match_test "~ival == 64") + (match_test "~ival == 128")))) + ++;; FIXME: LRA and reload behavior differs in memory constraint handling. ++;; For LRA memory address constraints need to narrow the register type ++;; restrictions. It seems the address RTX validation is done slightly ++;; differently. Remove the non-LRA paths eventually. ++(define_constraint "Rab" ++ "@internal address base register constraint" ++ (ior (and (match_test "sh_lra_p ()") ++ (match_test "MAYBE_BASE_REGISTER_RTX_P (op, false)")) ++ (and (match_test "!sh_lra_p ()") ++ (match_code "reg")))) ++ ++(define_constraint "Rai" ++ "@internal address index register constraint" ++ (ior (and (match_test "sh_lra_p ()") ++ (match_test "MAYBE_INDEX_REGISTER_RTX_P (op, false)")) ++ (and (match_test "!sh_lra_p ()") ++ (match_code "reg")))) ++ + (define_memory_constraint "Sua" +- "@internal" +- (and (match_test "memory_operand (op, GET_MODE (op))") +- (match_test "GET_CODE (XEXP (op, 0)) != PLUS"))) ++ "A memory reference that allows simple register or post-inc addressing." ++ (and (match_code "mem") ++ (ior (match_test "satisfies_constraint_Rab (XEXP (op, 0))") ++ (and (match_code "post_inc" "0") ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))"))))) + + (define_memory_constraint "Sdd" + "A memory reference that uses displacement addressing." + (and (match_code "mem") + (match_code "plus" "0") +- (match_code "reg" "00") ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))") + (match_code "const_int" "01"))) + + (define_memory_constraint "Snd" +@@ -281,19 +303,28 @@ + "A memory reference that uses index addressing." + (and (match_code "mem") + (match_code "plus" "0") +- (match_code "reg" "00") +- (match_code "reg" "01"))) ++ (ior (and (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))") ++ (match_test "satisfies_constraint_Rai (XEXP (XEXP (op, 0), 1))")) ++ (and (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 1))") ++ (match_test "satisfies_constraint_Rai (XEXP (XEXP (op, 0), 0))"))))) + + (define_memory_constraint "Ssd" + "A memory reference that excludes index and displacement addressing." +- (and (match_code "mem") +- (match_test "! satisfies_constraint_Sid (op)") +- (match_test "! satisfies_constraint_Sdd (op)"))) ++ (ior (and (match_code "mem") ++ (match_test "! sh_lra_p ()") ++ (match_test "! satisfies_constraint_Sid (op)") ++ (match_test "! satisfies_constraint_Sdd (op)")) ++ (and (match_code "mem") ++ (match_test "sh_lra_p ()") ++ (ior (match_test "satisfies_constraint_Rab (XEXP (op, 0))") ++ (and (ior (match_code "pre_dec" "0") (match_code "post_inc" "0")) ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))")))))) + + (define_memory_constraint "Sbv" + "A memory reference, as used in SH2A bclr.b, bset.b, etc." +- (and (match_test "MEM_P (op) && GET_MODE (op) == QImode") +- (match_test "REG_P (XEXP (op, 0))"))) ++ (and (match_code "mem") ++ (match_test "GET_MODE (op) == QImode") ++ (match_test "satisfies_constraint_Rab (XEXP (op, 0))"))) + + (define_memory_constraint "Sbw" + "A memory reference, as used in SH2A bclr.b, bset.b, etc." +@@ -304,13 +335,17 @@ + (define_memory_constraint "Sra" + "A memory reference that uses simple register addressing." + (and (match_code "mem") +- (match_code "reg" "0"))) ++ (match_test "satisfies_constraint_Rab (XEXP (op, 0))"))) ++ ++(define_memory_constraint "Sgb" ++ "A memory renference that uses GBR addressing." ++ (match_test "gbr_address_mem (op, GET_MODE (op))")) + + (define_memory_constraint "Ara" + "A memory reference that uses simple register addressing suitable for + gusa atomic operations." + (and (match_code "mem") +- (match_code "reg" "0") ++ (match_test "satisfies_constraint_Rab (XEXP (op, 0))") + (match_test "REGNO (XEXP (op, 0)) != SP_REG"))) + + (define_memory_constraint "Add" +@@ -319,6 +354,6 @@ + (and (match_code "mem") + (match_test "GET_MODE (op) == SImode") + (match_code "plus" "0") +- (match_code "reg" "00") ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))") + (match_code "const_int" "01") + (match_test "REGNO (XEXP (XEXP (op, 0), 0)) != SP_REG"))) +diff --git a/src/gcc/config/sh/predicates.md b/src/gcc/config/sh/predicates.md +index 7349c97a2b5..632a236b17a 100644 +--- a/src/gcc/config/sh/predicates.md ++++ b/src/gcc/config/sh/predicates.md +@@ -208,8 +208,7 @@ + ;; Returns 1 if OP is a simple register address. + (define_predicate "simple_mem_operand" + (and (match_code "mem") +- (match_code "reg" "0") +- (match_test "arith_reg_operand (XEXP (op, 0), SImode)"))) ++ (match_test "satisfies_constraint_Sra (op)"))) + + ;; Returns 1 if OP is a valid displacement address. + (define_predicate "displacement_mem_operand" +@@ -239,13 +238,13 @@ + (define_predicate "post_inc_mem" + (and (match_code "mem") + (match_code "post_inc" "0") +- (match_code "reg" "00"))) ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))"))) + + ;; Returns true if OP is a pre-decrement addressing mode memory reference. + (define_predicate "pre_dec_mem" + (and (match_code "mem") + (match_code "pre_dec" "0") +- (match_code "reg" "00"))) ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))"))) + + ;; Returns 1 if the operand can be used in an SH2A movu.{b|w} insn. + (define_predicate "zero_extend_movu_operand" +@@ -485,6 +484,12 @@ + && sh_legitimate_index_p (mode, XEXP (plus0_rtx, 1), TARGET_SH2A, true); + }) + ++;; Returns true if OP is a pc relative load operand. ++(define_predicate "pc_relative_load_operand" ++ (and (match_code "mem") ++ (match_test "GET_MODE (op) != QImode") ++ (match_test "IS_PC_RELATIVE_LOAD_ADDR_P (XEXP (op, 0))"))) ++ + ;; Returns true if OP is a valid source operand for a logical operation. + (define_predicate "logical_operand" + (and (match_code "subreg,reg,const_int") +@@ -807,3 +812,36 @@ + + return false; + }) ++ ++;; Predicates for pinning operands to hard-regs. ++(define_predicate "hard_reg_r0" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R0_REG"))) ++ ++(define_predicate "hard_reg_r1" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R1_REG"))) ++ ++(define_predicate "hard_reg_r2" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R2_REG"))) ++ ++(define_predicate "hard_reg_r3" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R3_REG"))) ++ ++(define_predicate "hard_reg_r4" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R4_REG"))) ++ ++(define_predicate "hard_reg_r5" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R5_REG"))) ++ ++(define_predicate "hard_reg_r6" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R6_REG"))) ++ ++(define_predicate "hard_reg_r7" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R7_REG"))) +diff --git a/src/gcc/config/sh/sh-mem.cc b/src/gcc/config/sh/sh-mem.cc +index 2a64bede951..c608bf9aa2d 100644 +--- a/src/gcc/config/sh/sh-mem.cc ++++ b/src/gcc/config/sh/sh-mem.cc +@@ -134,7 +134,7 @@ expand_block_move (rtx *operands) + + int dwords = bytes >> 3; + emit_insn (gen_move_insn (r6, GEN_INT (dwords - 1))); +- emit_insn (gen_block_lump_real_i4 (func_addr_rtx, lab)); ++ emit_insn (gen_block_lump_real_i4 (func_addr_rtx, lab, r4, r5, r6)); + return true; + } + else +@@ -178,7 +178,7 @@ expand_block_move (rtx *operands) + final_switch = 16 - ((bytes / 4) % 16); + while_loop = ((bytes / 4) / 16 - 1) * 16; + emit_insn (gen_move_insn (r6, GEN_INT (while_loop + final_switch))); +- emit_insn (gen_block_lump_real (func_addr_rtx, lab)); ++ emit_insn (gen_block_lump_real (func_addr_rtx, lab, r4, r5, r6)); + return true; + } + +diff --git a/src/gcc/config/sh/sh-protos.h b/src/gcc/config/sh/sh-protos.h +index c8cc19f4dc7..dc37b22837b 100644 +--- a/src/gcc/config/sh/sh-protos.h ++++ b/src/gcc/config/sh/sh-protos.h +@@ -102,7 +102,8 @@ extern rtx sh_find_equiv_gbr_addr (rtx_insn* cur_insn, rtx mem); + extern int sh_eval_treg_value (rtx op); + extern HOST_WIDE_INT sh_disp_addr_displacement (rtx mem_op); + extern int sh_max_mov_insn_displacement (machine_mode mode, bool consider_sh2a); +-extern bool sh_movsf_ie_ra_split_p (rtx, rtx, rtx); ++extern bool sh_movsf_ie_y_split_p (rtx, rtx); ++extern bool sh_movsf_ie_subreg_multiword_p (rtx, rtx); + extern void sh_expand_sym_label2reg (rtx, rtx, rtx, bool); + + /* Result value of sh_find_set_of_reg. */ +diff --git a/src/gcc/config/sh/sh.cc b/src/gcc/config/sh/sh.cc +index 1bc34e0a3e3..d6c70ef9409 100644 +--- a/src/gcc/config/sh/sh.cc ++++ b/src/gcc/config/sh/sh.cc +@@ -271,6 +271,7 @@ static bool sh_legitimate_address_p (machine_mode, rtx, bool, + static rtx sh_legitimize_address (rtx, rtx, machine_mode); + static rtx sh_delegitimize_address (rtx); + static bool sh_cannot_substitute_mem_equiv_p (rtx); ++static bool sh_cannot_substitute_const_equiv_p (rtx); + static bool sh_legitimize_address_displacement (rtx *, rtx *, + poly_int64, machine_mode); + static int scavenge_reg (HARD_REG_SET *s); +@@ -612,6 +613,9 @@ TARGET_GNU_ATTRIBUTES (sh_attribute_table, + #undef TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P + #define TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P sh_cannot_substitute_mem_equiv_p + ++#undef TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P ++#define TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P sh_cannot_substitute_const_equiv_p ++ + #undef TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT + #define TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT \ + sh_legitimize_address_displacement +@@ -4829,6 +4833,7 @@ broken_move (rtx_insn *insn) + we changed this to do a constant load. In that case + we don't have an r0 clobber, hence we must use fldi. */ + && (TARGET_FMOVD ++ || sh_lra_p () + || (GET_CODE (XEXP (XVECEXP (PATTERN (insn), 0, 2), 0)) + == SCRATCH)) + && REG_P (SET_DEST (pat)) +@@ -11431,6 +11436,19 @@ sh_cannot_substitute_mem_equiv_p (rtx) + return true; + } + ++static bool ++sh_cannot_substitute_const_equiv_p (rtx subst) ++{ ++ /* If SUBST is SFmode const_double 0 or 1, the move insn may be ++ transformed into fldi0/1. This is unsafe for fp mode switching ++ because fldi0/1 are single mode only instructions. */ ++ if (GET_MODE (subst) == SFmode ++ && (real_equal (CONST_DOUBLE_REAL_VALUE (subst), &dconst1) ++ || real_equal (CONST_DOUBLE_REAL_VALUE (subst), &dconst0))) ++ return true; ++ return false; ++} ++ + /* Implement TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT. */ + static bool + sh_legitimize_address_displacement (rtx *offset1, rtx *offset2, +@@ -11452,30 +11470,37 @@ sh_legitimize_address_displacement (rtx *offset1, rtx *offset2, + return false; + } + +-/* Return true if movsf insn should be splited with an additional +- register. */ ++/* Return true if movsf insn should be splited with fpul register. */ + bool +-sh_movsf_ie_ra_split_p (rtx op0, rtx op1, rtx op2) ++sh_movsf_ie_y_split_p (rtx op0, rtx op1) + { +- /* op0 == op1 */ +- if (rtx_equal_p (op0, op1)) ++ /* f, r */ ++ if (REG_P (op0) ++ && (SUBREG_P (op1) && GET_MODE (SUBREG_REG (op1)) == SImode)) + return true; +- /* fy, FQ, reg */ +- if (GET_CODE (op1) == CONST_DOUBLE +- && ! satisfies_constraint_G (op1) +- && ! satisfies_constraint_H (op1) +- && REG_P (op0) +- && REG_P (op2)) ++ /* r, f */ ++ if (REG_P (op1) ++ && (SUBREG_P (op0) && GET_MODE (SUBREG_REG (op0)) == SImode)) + return true; +- /* f, r, y */ +- if (REG_P (op0) && FP_REGISTER_P (REGNO (op0)) +- && REG_P (op1) && GENERAL_REGISTER_P (REGNO (op1)) +- && REG_P (op2) && (REGNO (op2) == FPUL_REG)) ++ ++ return false; ++} ++ ++/* Return true if it moves reg from/to subreg of multiword mode. */ ++bool ++sh_movsf_ie_subreg_multiword_p (rtx op0, rtx op1) ++{ ++ if (REG_P (op0) ++ && (SUBREG_P (op1) ++ && (GET_MODE (SUBREG_REG (op1)) == SCmode ++ || GET_MODE (SUBREG_REG (op1)) == DImode ++ || GET_MODE (SUBREG_REG (op1)) == TImode))) + return true; +- /* r, f, y */ +- if (REG_P (op1) && FP_REGISTER_P (REGNO (op1)) +- && REG_P (op0) && GENERAL_REGISTER_P (REGNO (op0)) +- && REG_P (op2) && (REGNO (op2) == FPUL_REG)) ++ if (REG_P (op1) ++ && (SUBREG_P (op0) ++ && (GET_MODE (SUBREG_REG (op0)) == SCmode ++ || GET_MODE (SUBREG_REG (op0)) == DImode ++ || GET_MODE (SUBREG_REG (op0)) == TImode))) + return true; + + return false; +diff --git a/src/gcc/config/sh/sh.md b/src/gcc/config/sh/sh.md +index 65b353da56e..1f905455b36 100644 +--- a/src/gcc/config/sh/sh.md ++++ b/src/gcc/config/sh/sh.md +@@ -2194,13 +2194,24 @@ + ;; there is nothing to prevent reload from using r0 to reload the address. + ;; This reload would clobber the value in r0 we are trying to store. + ;; If we let reload allocate r0, then this problem can never happen. ++;; ++;; In addition to that, we also must pin the input regs to hard-regs via the ++;; predicates. When these insns are instantiated it also emits the ++;; accompanying mov insns to load the hard-regs. However, subsequent RTL ++;; passes might move things around and reassign the operands to pseudo regs ++;; which might get allocated to different (wrong) hard-regs eventually. To ++;; avoid that, only allow matching these insns if the operands are the ++;; expected hard-regs. + (define_insn "udivsi3_i1" + [(set (match_operand:SI 0 "register_operand" "=z,z") +- (udiv:SI (reg:SI R4_REG) (reg:SI R5_REG))) ++ (udiv:SI (match_operand:SI 3 "hard_reg_r4" "=r,r") ++ (match_operand:SI 4 "hard_reg_r5" "=r,r"))) + (clobber (reg:SI T_REG)) + (clobber (reg:SI PR_REG)) + (clobber (reg:SI R1_REG)) +- (clobber (reg:SI R4_REG)) ++ (clobber (match_dup 3)) ++ (use (reg:SI R4_REG)) ++ (use (reg:SI R5_REG)) + (use (match_operand:SI 1 "arith_reg_operand" "r,r")) + (use (match_operand 2 "" "Z,Ccl"))] + "TARGET_SH1 && TARGET_DIVIDE_CALL_DIV1" +@@ -2212,7 +2223,8 @@ + + (define_insn "udivsi3_i4" + [(set (match_operand:SI 0 "register_operand" "=y,y") +- (udiv:SI (reg:SI R4_REG) (reg:SI R5_REG))) ++ (udiv:SI (match_operand:SI 3 "hard_reg_r4" "=r,r") ++ (match_operand:SI 4 "hard_reg_r5" "=r,r"))) + (clobber (reg:SI T_REG)) + (clobber (reg:SI PR_REG)) + (clobber (reg:DF DR0_REG)) +@@ -2220,9 +2232,11 @@ + (clobber (reg:DF DR4_REG)) + (clobber (reg:SI R0_REG)) + (clobber (reg:SI R1_REG)) +- (clobber (reg:SI R4_REG)) +- (clobber (reg:SI R5_REG)) ++ (clobber (match_dup 3)) ++ (clobber (match_dup 4)) + (clobber (reg:SI FPSCR_STAT_REG)) ++ (use (reg:SI R4_REG)) ++ (use (reg:SI R5_REG)) + (use (match_operand:SI 1 "arith_reg_operand" "r,r")) + (use (match_operand 2 "" "Z,Ccl")) + (use (reg:SI FPSCR_MODES_REG))] +@@ -2236,7 +2250,8 @@ + + (define_insn "udivsi3_i4_single" + [(set (match_operand:SI 0 "register_operand" "=y,y") +- (udiv:SI (reg:SI R4_REG) (reg:SI R5_REG))) ++ (udiv:SI (match_operand:SI 3 "hard_reg_r4" "=r,r") ++ (match_operand:SI 4 "hard_reg_r5" "=r,r"))) + (clobber (reg:SI T_REG)) + (clobber (reg:SI PR_REG)) + (clobber (reg:DF DR0_REG)) +@@ -2244,8 +2259,10 @@ + (clobber (reg:DF DR4_REG)) + (clobber (reg:SI R0_REG)) + (clobber (reg:SI R1_REG)) +- (clobber (reg:SI R4_REG)) +- (clobber (reg:SI R5_REG)) ++ (clobber (match_dup 3)) ++ (clobber (match_dup 4)) ++ (use (reg:SI R4_REG)) ++ (use (reg:SI R5_REG)) + (use (match_operand:SI 1 "arith_reg_operand" "r,r")) + (use (match_operand 2 "" "Z,Ccl"))] + "TARGET_FPU_ANY && TARGET_FPU_SINGLE" +@@ -2278,6 +2295,8 @@ + { + rtx last; + rtx func_ptr = gen_reg_rtx (Pmode); ++ rtx r4 = gen_rtx_REG (SImode, R4_REG); ++ rtx r5 = gen_rtx_REG (SImode, R5_REG); + + /* Emit the move of the address to a pseudo outside of the libcall. */ + if (TARGET_DIVIDE_CALL_TABLE) +@@ -2305,9 +2324,9 @@ + { + rtx lab = function_symbol (func_ptr, "__udivsi3_i4", SFUNC_STATIC).lab; + if (TARGET_FPU_SINGLE) +- last = gen_udivsi3_i4_single (operands[0], func_ptr, lab); ++ last = gen_udivsi3_i4_single (operands[0], func_ptr, lab, r4, r5); + else +- last = gen_udivsi3_i4 (operands[0], func_ptr, lab); ++ last = gen_udivsi3_i4 (operands[0], func_ptr, lab, r4, r5); + } + else if (TARGET_SH2A) + { +@@ -2319,10 +2338,10 @@ + else + { + rtx lab = function_symbol (func_ptr, "__udivsi3", SFUNC_STATIC).lab; +- last = gen_udivsi3_i1 (operands[0], func_ptr, lab); ++ last = gen_udivsi3_i1 (operands[0], func_ptr, lab, r4, r5); + } +- emit_move_insn (gen_rtx_REG (SImode, 4), operands[1]); +- emit_move_insn (gen_rtx_REG (SImode, 5), operands[2]); ++ emit_move_insn (r4, operands[1]); ++ emit_move_insn (r5, operands[2]); + emit_insn (last); + DONE; + }) +@@ -4801,7 +4820,37 @@ + + (define_expand "extendsi2" + [(set (match_operand:SI 0 "arith_reg_dest") +- (sign_extend:SI (match_operand:QIHI 1 "general_extend_operand")))]) ++ (sign_extend:SI (match_operand:QIHI 1 "general_extend_operand")))] ++ "" ++{ ++ /* When the displacement addressing is used, RA will assign r0 to ++ the pseudo register operand for the QI/HImode load. ++ See the comment in sh.cc:prepare_move_operand and PR target/55212. */ ++ if (! lra_in_progress && ! reload_completed ++ && sh_lra_p () ++ && ! TARGET_SH2A ++ && arith_reg_dest (operands[0], mode) ++ && short_displacement_mem_operand (operands[1], mode)) ++ { ++ emit_insn (gen_extendsi2_short_mem_disp_z (operands[0], operands[1])); ++ DONE; ++ } ++}) ++ ++(define_insn_and_split "extendsi2_short_mem_disp_z" ++ [(set (match_operand:SI 0 "arith_reg_dest" "=r") ++ (sign_extend:SI ++ (match_operand:QIHI 1 "short_displacement_mem_operand" "m"))) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH1 && ! TARGET_SH2A && sh_lra_p ()" ++ "#" ++ "&& 1" ++ [(set (match_dup 2) (sign_extend:SI (match_dup 1))) ++ (set (match_dup 0) (match_dup 2))] ++{ ++ operands[2] = gen_rtx_REG (SImode, R0_REG); ++} ++ [(set_attr "type" "load")]) + + (define_insn_and_split "*extendsi2_compact_reg" + [(set (match_operand:SI 0 "arith_reg_dest" "=r") +@@ -5343,9 +5392,49 @@ + operands[1] = gen_lowpart (mode, reg); + } + ++ if (! lra_in_progress && ! reload_completed ++ && sh_lra_p () ++ && ! TARGET_SH2A ++ && arith_reg_operand (operands[1], mode) ++ && satisfies_constraint_Sid (operands[0])) ++ { ++ rtx adr = XEXP (operands[0], 0); ++ rtx base = XEXP (adr, 0); ++ rtx idx = XEXP (adr, 1); ++ emit_insn (gen_mov_store_mem_index (base, idx,operands[1])); ++ DONE; ++ } ++ + prepare_move_operands (operands, mode); + }) + ++;; The "*mov_store_mem_index" pattern must come before the ++;; "mov_store_mem_index" pattern. Matching order is important because ++;; the "hard_reg_r0" operand will match in both, but we want to prioritize ++;; the former. ++(define_insn "*mov_store_mem_index" ++ [(set (mem:QIHI (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") ++ (match_operand:SI 1 "hard_reg_r0" "z"))) ++ (match_operand:QIHI 2 "arith_reg_operand" "r"))] ++ "TARGET_SH1 && ! TARGET_SH2A && sh_lra_p ()" ++ "mov. %2,@(%1,%0)" ++ [(set_attr "type" "store")]) ++ ++(define_insn_and_split "mov_store_mem_index" ++ [(set (mem:QIHI (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") ++ (match_operand:SI 1 "arith_reg_operand" "^zr"))) ++ (match_operand:QIHI 2 "arith_reg_operand" "r")) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH1 && ! TARGET_SH2A && sh_lra_p ()" ++ "#" ++ "&& 1" ++ [(set (match_dup 3) (match_dup 1)) ++ (set (mem:QIHI (plus:SI (match_dup 0) (match_dup 3))) (match_dup 2))] ++{ ++ operands[3] = gen_rtx_REG (SImode, R0_REG); ++} ++ [(set_attr "type" "store")]) ++ + ;; The pre-dec and post-inc mems must be captured by the '<' and '>' + ;; constraints, otherwise wrong code might get generated. + (define_insn "*mov_load_predec" +@@ -5631,6 +5720,22 @@ + (const_string "double") + (const_string "none")))]) + ++;; LRA will try to satisfy the constraints in match_scratch for the memory ++;; displacements and it will make issues on this target. Use R0 as a scratch ++;; register for the constant load. ++(define_insn "movdf_i4_F_z" ++ [(set (match_operand:DF 0 "fp_arith_reg_operand" "=d") ++ (match_operand:DF 1 "const_double_operand" "F")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_FPU_DOUBLE && sh_lra_p ()" ++ "#" ++ [(set_attr "type" "pcfload") ++ (set (attr "length") (if_then_else (eq_attr "fmovd" "yes") (const_int 4) (const_int 8))) ++ (set (attr "fp_mode") (if_then_else (eq_attr "fmovd" "yes") ++ (const_string "double") ++ (const_string "none")))]) ++ + ;; Moving DFmode between fp/general registers through memory + ;; (the top of the stack) is faster than moving through fpul even for + ;; little endian. Because the type of an instruction is important for its +@@ -5770,6 +5875,14 @@ + [(set (match_dup 0) (match_dup 0))] + "") + ++(define_split ++ [(set (match_operand:SF 0 "register_operand") ++ (match_operand:SF 1 "register_operand")) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_SH2E && sh_lra_p () && reload_completed ++ && true_regnum (operands[0]) == true_regnum (operands[1])" ++ [(set (match_dup 0) (match_dup 0))]) ++ + ;; fmovd substitute post-reload splits + (define_split + [(set (match_operand:DF 0 "register_operand" "") +@@ -6014,6 +6127,14 @@ + prepare_move_operands (operands, DFmode); + if (TARGET_FPU_DOUBLE) + { ++ if (sh_lra_p () ++ && (GET_CODE (operands[1]) == CONST_DOUBLE ++ && REG_P (operands[0]))) ++ { ++ emit_insn (gen_movdf_i4_F_z (operands[0], operands[1])); ++ DONE; ++ } ++ + emit_insn (gen_movdf_i4 (operands[0], operands[1])); + DONE; + } +@@ -6139,15 +6260,17 @@ + (const_string "none") + (const_string "none")])]) + +-(define_insn_and_split "movsf_ie_ra" ++;; LRA will try to satisfy the constraints in match_scratch for the memory ++;; displacements and it will make issues on this target. movsf_ie is splitted ++;; into 4 patterns to avoid it when lra_in_progress is true. ++(define_insn "movsf_ie_ra" + [(set (match_operand:SF 0 "general_movdst_operand" +- "=f,r,f,f,fy,f,m, r,r,m,f,y,y,rf,r,y,<,y,y") ++ "=f,r,f,f,f,m, r,r,m,f,y,y,r,y,<,y,y") + (match_operand:SF 1 "general_movsrc_operand" +- " f,r,G,H,FQ,m,f,FQ,m,r,y,f,>,fr,y,r,y,>,y")) +- (use (reg:SI FPSCR_MODES_REG)) +- (clobber (match_scratch:SF 2 "=r,r,X,X,&z,r,r, X,r,r,r,r,r, y,r,r,r,r,r")) +- (const_int 0)] +- "TARGET_SH2E ++ " f,r,G,H,m,f,FQ,m,r,y,f,>,y,r,y,>,y")) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_SH2E && sh_lra_p () ++ && ! sh_movsf_ie_y_split_p (operands[0], operands[1]) + && (arith_reg_operand (operands[0], SFmode) + || fpul_operand (operands[0], SFmode) + || arith_reg_operand (operands[1], SFmode) +@@ -6157,7 +6280,6 @@ + mov %1,%0 + fldi0 %0 + fldi1 %0 +- # + fmov.s %1,%0 + fmov.s %1,%0 + mov.l %1,%0 +@@ -6166,31 +6288,19 @@ + fsts fpul,%0 + flds %1,fpul + lds.l %1,%0 +- # + sts %1,%0 + lds %1,%0 + sts.l %1,%0 + lds.l %1,%0 + ! move optimized away" +- "reload_completed +- && sh_movsf_ie_ra_split_p (operands[0], operands[1], operands[2])" +- [(const_int 0)] +-{ +- if (! rtx_equal_p (operands[0], operands[1])) +- { +- emit_insn (gen_movsf_ie (operands[2], operands[1])); +- emit_insn (gen_movsf_ie (operands[0], operands[2])); +- } +-} +- [(set_attr "type" "fmove,move,fmove,fmove,pcfload,fload,fstore,pcload,load, +- store,fmove,fmove,load,*,fpul_gp,gp_fpul,fstore,load,nil") +- (set_attr "late_fp_use" "*,*,*,*,*,*,yes,*,*,*,*,*,*,*,yes,*,yes,*,*") ++ [(set_attr "type" "fmove,move,fmove,fmove,fload,fstore,pcload,load, ++ store,fmove,fmove,load,fpul_gp,gp_fpul,fstore,load,nil") ++ (set_attr "late_fp_use" "*,*,*,*,*,yes,*,*,*,*,*,*,yes,*,yes,*,*") + (set_attr_alternative "length" + [(const_int 2) + (const_int 2) + (const_int 2) + (const_int 2) +- (const_int 4) + (if_then_else (match_operand 1 "displacement_mem_operand") + (const_int 4) (const_int 2)) + (if_then_else (match_operand 0 "displacement_mem_operand") +@@ -6203,7 +6313,6 @@ + (const_int 2) + (const_int 2) + (const_int 2) +- (const_int 4) + (const_int 2) + (const_int 2) + (const_int 2) +@@ -6215,7 +6324,6 @@ + (const_string "none") + (const_string "single") + (const_string "single") +- (const_string "none") + (if_then_else (eq_attr "fmovd" "yes") + (const_string "single") (const_string "none")) + (if_then_else (eq_attr "fmovd" "yes") +@@ -6230,15 +6338,75 @@ + (const_string "none") + (const_string "none") + (const_string "none") ++ (const_string "none")])]) ++ ++(define_insn_and_split "movsf_ie_rffr" ++ [(set (match_operand:SF 0 "arith_reg_dest" "=f,r,rf") ++ (match_operand:SF 1 "arith_reg_operand" "f,r,fr")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (match_scratch:SF 2 "=X,X,y"))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "@ ++ fmov %1,%0 ++ mov %1,%0 ++ #" ++ "reload_completed ++ && (FP_REGISTER_P (REGNO (operands[0])) ++ != FP_REGISTER_P (REGNO (operands[1])))" ++ [(const_int 0)] ++{ ++ emit_insn (gen_movsf_ie_ra (operands[2], operands[1])); ++ emit_insn (gen_movsf_ie_ra (operands[0], operands[2])); ++} ++ [(set_attr "type" "fmove,move,*") ++ (set_attr_alternative "length" ++ [(const_int 2) ++ (const_int 2) ++ (const_int 4)]) ++ (set_attr_alternative "fp_mode" ++ [(if_then_else (eq_attr "fmovd" "yes") ++ (const_string "single") (const_string "none")) + (const_string "none") + (const_string "none")])]) + ++(define_insn "movsf_ie_F_z" ++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") ++ (match_operand:SF 1 "const_double_operand" "F")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "#" ++ [(set_attr "type" "pcfload") ++ (set_attr "length" "4")]) ++ ++(define_insn "movsf_ie_Q_z" ++ [(set (match_operand:SF 0 "fpul_operand" "=y") ++ (match_operand:SF 1 "pc_relative_load_operand" "Q")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "#" ++ [(set_attr "type" "pcfload") ++ (set_attr "length" "4")]) ++ ++(define_insn "movsf_ie_y" ++ [(set (match_operand:SF 0 "arith_reg_dest" "=fr") ++ (match_operand:SF 1 "arith_reg_operand" "rf")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI FPUL_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "#" ++ [(set_attr "type" "*") ++ (set_attr "length" "4")]) ++ + (define_split + [(set (match_operand:SF 0 "register_operand" "") + (match_operand:SF 1 "register_operand" "")) + (use (reg:SI FPSCR_MODES_REG)) + (clobber (reg:SI FPUL_REG))] +- "TARGET_SH1" ++ "TARGET_SH1 ++ && ! fpul_operand (operands[0], SFmode) ++ && ! fpul_operand (operands[1], SFmode)" + [(parallel [(set (reg:SF FPUL_REG) (match_dup 1)) + (use (reg:SI FPSCR_MODES_REG)) + (clobber (scratch:SI))]) +@@ -6247,6 +6415,66 @@ + (clobber (scratch:SI))])] + "") + ++;; The "*movsf_ie_store_mem_index" pattern must come before the ++;; "movsf_ie_store_mem_index" pattern. Matching order is important because ++;; the "hard_reg_r0" operand will match in both, but we want to prioritize ++;; the former. ++(define_insn "*movsf_ie_store_mem_index" ++ [(set (mem:SF (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") ++ (match_operand:SI 1 "hard_reg_r0" "z"))) ++ (match_operand:SF 2 "fp_arith_reg_operand" "f")) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "fmov.s %2,@(%1,%0)" ++ [(set_attr "type" "store")]) ++ ++(define_insn_and_split "movsf_ie_store_mem_index" ++ [(set (mem:SF (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") ++ (match_operand:SI 1 "arith_reg_operand" "^zr"))) ++ (match_operand:SF 2 "fp_arith_reg_operand" "f")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "#" ++ "&& 1" ++ [(set (match_dup 3) (match_dup 1)) ++ (parallel [(set (mem:SF (plus:SI (match_dup 0) (match_dup 3))) (match_dup 2)) ++ (use (reg:SI FPSCR_MODES_REG))])] ++{ ++ operands[3] = gen_rtx_REG (SImode, R0_REG); ++} ++ [(set_attr "type" "store")]) ++ ++;; The "*movsf_ie_load_mem_index" pattern must come before the ++;; "movsf_ie_load_mem_index" pattern. Matching order is important because ++;; the "hard_reg_r0" operand will match in both, but we want to prioritize ++;; the former. ++(define_insn "*movsf_ie_load_mem_index" ++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") ++ (mem:SF (plus:SI (match_operand:SI 1 "arith_reg_operand" "%r") ++ (match_operand:SI 2 "hard_reg_r0" "z")))) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "fmov.s @(%2,%1),%0" ++ [(set_attr "type" "load")]) ++ ++(define_insn_and_split "movsf_ie_load_mem_index" ++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") ++ (mem:SF (plus:SI (match_operand:SI 1 "arith_reg_operand" "%r") ++ (match_operand:SI 2 "arith_reg_operand" "^zr")))) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "#" ++ "&& 1" ++ [(set (match_dup 3) (match_dup 2)) ++ (parallel [(set (match_dup 0) (mem:SF (plus:SI (match_dup 1) (match_dup 3)))) ++ (use (reg:SI FPSCR_MODES_REG))])] ++{ ++ operands[3] = gen_rtx_REG (SImode, R0_REG); ++} ++ [(set_attr "type" "load")]) ++ + (define_expand "movsf" + [(set (match_operand:SF 0 "general_movdst_operand" "") + (match_operand:SF 1 "general_movsrc_operand" ""))] +@@ -6255,11 +6483,62 @@ + prepare_move_operands (operands, SFmode); + if (TARGET_SH2E) + { +- if (lra_in_progress) ++ if (sh_lra_p ()) + { + if (GET_CODE (operands[0]) == SCRATCH) + DONE; +- emit_insn (gen_movsf_ie_ra (operands[0], operands[1])); ++ if (! lra_in_progress && ! reload_completed ++ && fp_arith_reg_operand (operands[1], SFmode) ++ && satisfies_constraint_Sid (operands[0])) ++ { ++ rtx adr = XEXP (operands[0], 0); ++ rtx base = XEXP (adr, 0); ++ rtx idx = XEXP (adr, 1); ++ emit_insn (gen_movsf_ie_store_mem_index (base, idx, operands[1])); ++ DONE; ++ } ++ if (! lra_in_progress && ! reload_completed ++ && fp_arith_reg_operand (operands[0], SFmode) ++ && satisfies_constraint_Sid (operands[1])) ++ { ++ rtx adr = XEXP (operands[1], 0); ++ rtx base = XEXP (adr, 0); ++ rtx idx = XEXP (adr, 1); ++ emit_insn (gen_movsf_ie_load_mem_index (operands[0], base, idx)); ++ DONE; ++ } ++ /* reg from/to multiword subreg may be splitted to several reg from/to ++ subreg of SImode by subreg1 pass. This confuses our splitted ++ movsf logic for LRA and will end up in bad code or ICE. Use a special ++ pattern so that LRA can optimize this case. */ ++ if (! lra_in_progress && ! reload_completed ++ && sh_movsf_ie_subreg_multiword_p (operands[0], operands[1])) ++ { ++ emit_insn (gen_movsf_ie_rffr (operands[0], operands[1])); ++ DONE; ++ } ++ if (GET_CODE (operands[1]) == CONST_DOUBLE ++ && ! satisfies_constraint_G (operands[1]) ++ && ! satisfies_constraint_H (operands[1]) ++ && REG_P (operands[0])) ++ { ++ if (lra_in_progress) ++ emit_insn (gen_movsf_ie (operands[0], operands[1])); ++ else ++ emit_insn (gen_movsf_ie_F_z (operands[0], operands[1])); ++ } ++ else if (REG_P (operands[0]) && REGNO (operands[0]) == FPUL_REG ++ && satisfies_constraint_Q (operands[1])) ++ emit_insn (gen_movsf_ie_Q_z (operands[0], operands[1])); ++ else if (sh_movsf_ie_y_split_p (operands[0], operands[1])) ++ { ++ if (lra_in_progress) ++ emit_insn (gen_movsf_ie (operands[0], operands[1])); ++ else ++ emit_insn (gen_movsf_ie_y (operands[0], operands[1])); ++ } ++ else ++ emit_insn (gen_movsf_ie_ra (operands[0], operands[1])); + DONE; + } + +@@ -8951,17 +9230,20 @@ + (set_attr "needs_delay_slot" "yes")]) + + (define_insn "block_lump_real" +- [(parallel [(set (mem:BLK (reg:SI R4_REG)) +- (mem:BLK (reg:SI R5_REG))) +- (use (match_operand:SI 0 "arith_reg_operand" "r,r")) +- (use (match_operand 1 "" "Z,Ccl")) +- (use (reg:SI R6_REG)) +- (clobber (reg:SI PR_REG)) +- (clobber (reg:SI T_REG)) +- (clobber (reg:SI R4_REG)) +- (clobber (reg:SI R5_REG)) +- (clobber (reg:SI R6_REG)) +- (clobber (reg:SI R0_REG))])] ++ [(set (mem:BLK (match_operand:SI 2 "hard_reg_r4" "=r,r")) ++ (mem:BLK (match_operand:SI 3 "hard_reg_r5" "=r,r"))) ++ (use (match_operand:SI 0 "arith_reg_operand" "r,r")) ++ (use (match_operand 1 "" "Z,Ccl")) ++ (use (match_operand:SI 4 "hard_reg_r6" "=r,r")) ++ (use (reg:SI R4_REG)) ++ (use (reg:SI R5_REG)) ++ (use (reg:SI R6_REG)) ++ (clobber (match_dup 2)) ++ (clobber (match_dup 3)) ++ (clobber (match_dup 4)) ++ (clobber (reg:SI PR_REG)) ++ (clobber (reg:SI T_REG)) ++ (clobber (reg:SI R0_REG))] + "TARGET_SH1 && ! TARGET_HARD_SH4" + "@ + jsr @%0%# +@@ -8986,20 +9268,23 @@ + (set_attr "needs_delay_slot" "yes")]) + + (define_insn "block_lump_real_i4" +- [(parallel [(set (mem:BLK (reg:SI R4_REG)) +- (mem:BLK (reg:SI R5_REG))) +- (use (match_operand:SI 0 "arith_reg_operand" "r,r")) +- (use (match_operand 1 "" "Z,Ccl")) +- (use (reg:SI R6_REG)) +- (clobber (reg:SI PR_REG)) +- (clobber (reg:SI T_REG)) +- (clobber (reg:SI R4_REG)) +- (clobber (reg:SI R5_REG)) +- (clobber (reg:SI R6_REG)) +- (clobber (reg:SI R0_REG)) +- (clobber (reg:SI R1_REG)) +- (clobber (reg:SI R2_REG)) +- (clobber (reg:SI R3_REG))])] ++ [(set (mem:BLK (match_operand:SI 2 "hard_reg_r4" "=r,r")) ++ (mem:BLK (match_operand:SI 3 "hard_reg_r5" "=r,r"))) ++ (use (match_operand:SI 0 "arith_reg_operand" "r,r")) ++ (use (match_operand 1 "" "Z,Ccl")) ++ (use (match_operand:SI 4 "hard_reg_r6" "=r,r")) ++ (use (reg:SI R4_REG)) ++ (use (reg:SI R5_REG)) ++ (use (reg:SI R6_REG)) ++ (clobber (match_dup 2)) ++ (clobber (match_dup 3)) ++ (clobber (match_dup 4)) ++ (clobber (reg:SI PR_REG)) ++ (clobber (reg:SI T_REG)) ++ (clobber (reg:SI R0_REG)) ++ (clobber (reg:SI R1_REG)) ++ (clobber (reg:SI R2_REG)) ++ (clobber (reg:SI R3_REG))] + "TARGET_HARD_SH4" + "@ + jsr @%0%# +diff --git a/src/gcc/config/sh/sh.opt b/src/gcc/config/sh/sh.opt +index beaf830037b..ce37746428e 100644 +--- a/src/gcc/config/sh/sh.opt ++++ b/src/gcc/config/sh/sh.opt +@@ -299,5 +299,5 @@ Target Var(TARGET_FSRRA) + Enable the use of the fsrra instruction. + + mlra +-Target Var(sh_lra_flag) Init(0) Save ++Target Var(sh_lra_flag) Init(1) Save + Use LRA instead of reload (transitional). +diff --git a/src/gcc/config/sh/sync.md b/src/gcc/config/sh/sync.md +index e56c3e0becc..71b2360bceb 100644 +--- a/src/gcc/config/sh/sync.md ++++ b/src/gcc/config/sh/sync.md +@@ -217,7 +217,9 @@ + (and (match_test "mode == SImode") + (and (match_test "!TARGET_ATOMIC_HARD_LLCS") + (match_test "!TARGET_SH4A || TARGET_ATOMIC_STRICT")) +- (match_operand 0 "short_displacement_mem_operand"))))) ++ (match_operand 0 "short_displacement_mem_operand"))) ++ (ior (match_test "!TARGET_ATOMIC_HARD_LLCS") ++ (not (match_operand 0 "gbr_address_mem"))))) + + (define_expand "atomic_compare_and_swap" + [(match_operand:SI 0 "arith_reg_dest") ;; bool success output +@@ -715,7 +717,9 @@ + && TARGET_SH4A && !TARGET_ATOMIC_STRICT + && mode != SImode")) + (ior (match_operand 0 "short_displacement_mem_operand") +- (match_operand 0 "gbr_address_mem")))))) ++ (match_operand 0 "gbr_address_mem")))) ++ (ior (match_test "!TARGET_ATOMIC_HARD_LLCS") ++ (not (match_operand 0 "gbr_address_mem"))))) + + (define_expand "atomic_fetch_" + [(set (match_operand:QIHISI 0 "arith_reg_dest") +diff --git a/src/gcc/lra-constraints.cc b/src/gcc/lra-constraints.cc +index 7dbc7fe1e00..832db82426f 100644 +--- a/src/gcc/lra-constraints.cc ++++ b/src/gcc/lra-constraints.cc +@@ -552,7 +552,11 @@ get_equiv (rtx x) + return res; + } + if ((res = ira_reg_equiv[regno].constant) != NULL_RTX) +- return res; ++ { ++ if (targetm.cannot_substitute_const_equiv_p (res)) ++ return x; ++ return res; ++ } + if ((res = ira_reg_equiv[regno].invariant) != NULL_RTX) + return res; + gcc_unreachable (); +@@ -1223,7 +1227,9 @@ match_reload (signed char out, signed char *ins, signed char *outs, + return; + /* See a comment for the input operand above. */ + narrow_reload_pseudo_class (out_rtx, goal_class); +- if (find_reg_note (curr_insn, REG_UNUSED, out_rtx) == NULL_RTX) ++ if (find_reg_note (curr_insn, REG_UNUSED, out_rtx) == NULL_RTX ++ && !ira_former_scratch_p (REGNO (SUBREG_P (out_rtx) ++ ? SUBREG_REG (out_rtx) : out_rtx))) + { + reg = SUBREG_P (out_rtx) ? SUBREG_REG (out_rtx) : out_rtx; + start_sequence (); +@@ -2972,7 +2978,8 @@ process_alt_operands (int only_alternative) + objects with a REG_UNUSED note. */ + if ((curr_static_id->operand[nop].type != OP_IN + && no_output_reloads_p +- && ! find_reg_note (curr_insn, REG_UNUSED, op)) ++ && ! find_reg_note (curr_insn, REG_UNUSED, op) ++ && ! ira_former_scratch_p (REGNO (operand_reg[nop]))) + || (curr_static_id->operand[nop].type != OP_OUT + && no_input_reloads_p && ! const_to_mem) + || (this_alternative_matches >= 0 +@@ -2982,7 +2989,9 @@ process_alt_operands (int only_alternative) + [this_alternative_matches].type != OP_IN) + && ! find_reg_note (curr_insn, REG_UNUSED, + no_subreg_reg_operand +- [this_alternative_matches]))))) ++ [this_alternative_matches]) ++ && ! (ira_former_scratch_p ++ (REGNO (operand_reg[nop]))))))) + { + if (lra_dump_file != NULL) + fprintf +@@ -4820,7 +4829,8 @@ curr_insn_transform (bool check_only_p) + if (type != OP_IN + && find_reg_note (curr_insn, REG_UNUSED, old) == NULL_RTX + /* OLD can be an equivalent constant here. */ +- && !CONSTANT_P (old)) ++ && !CONSTANT_P (old) ++ && !ira_former_scratch_p (REGNO (old))) + { + start_sequence (); + lra_emit_move (type == OP_INOUT ? copy_rtx (old) : old, new_reg); +diff --git a/src/gcc/target.def b/src/gcc/target.def +index 6c7cdc8126b..f69f1db7532 100644 +--- a/src/gcc/target.def ++++ b/src/gcc/target.def +@@ -6167,9 +6167,24 @@ DEFHOOK + substitute safely pseudos with equivalent memory values during\n\ + register allocation.\n\ + The default version of this target hook returns @code{false}.\n\ +-On most machines, this default should be used. For generally\n\ +-machines with non orthogonal register usage for addressing, such\n\ +-as SH, this hook can be used to avoid excessive spilling.", ++On most machines, this default should be used. For machines with\n\ ++non-orthogonal register usage for addressing, such as SH,\n\ ++this hook can be used to avoid excessive spilling.", ++ bool, (rtx subst), ++ hook_bool_rtx_false) ++ ++/* This target hook allows the backend to avoid unsafe substitution ++ during register allocation. */ ++DEFHOOK ++(cannot_substitute_const_equiv_p, ++ "A target hook which returns @code{true} if @var{subst} can't\n\ ++substitute safely pseudos with equivalent constant values during\n\ ++register allocation.\n\ ++The default version of this target hook returns @code{false}.\n\ ++On most machines, this default should be used. For machines with\n\ ++special constant load instructions that have additional constraints\n\ ++or being dependent on mode-switching, such as SH, this hook can be\n\ ++used to avoid unsafe substitution.", + bool, (rtx subst), + hook_bool_rtx_false) + +diff --git a/src/gcc/testsuite/g++.target/sh/sh.exp b/src/gcc/testsuite/g++.target/sh/sh.exp +new file mode 100644 +index 00000000000..45c5b373857 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/sh.exp +@@ -0,0 +1,297 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't an SH target. ++if ![istarget sh*-*-*] then { ++ return ++} ++ ++# Load support procs. ++load_lib g++-dg.exp ++ ++# Return 1 if target is SH2A ++proc check_effective_target_sh2a { } { ++ return [check_no_compiler_messages sh2a object { ++ #ifndef __SH2A__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is SH1 ++proc check_effective_target_sh1 { } { ++ return [check_no_compiler_messages sh1 object { ++ #ifndef __SH1__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is SH4A ++proc check_effective_target_sh4a { } { ++ return [check_no_compiler_messages sh4a object { ++ #ifndef __SH4A__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is big endian ++proc check_effective_target_big_endian { } { ++ return [check_no_compiler_messages big_endian object { ++ #if __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is little endian ++proc check_effective_target_little_endian { } { ++ return [check_no_compiler_messages little_endian object { ++ #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has any FPU (single or double precision) ++proc check_effective_target_any_fpu { } { ++ return [check_no_compiler_messages any_fpu object { ++ #ifndef __SH_FPU_ANY__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has a double precision FPU which is allowed to be ++# used by the compiler as such. ++proc check_effective_target_double_fpu { } { ++ return [check_no_compiler_messages double_fpu object { ++ #ifndef __SH_FPU_DOUBLE__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has a double precision FPU but it is only being used ++# in single precision mode by the compiler ++proc check_effective_target_use_single_only_fpu { } { ++ return [check_no_compiler_messages use_single_only_fpu object { ++ #if !(defined (__SH2A_SINGLE_ONLY__) \ ++ || defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has an FPU and the default mode is single ++proc check_effective_target_default_single_fpu { } { ++ return [check_no_compiler_messages default_single_fpu object { ++ #if !(defined (__SH2E__) || defined (__SH3E__) \ ++ || defined (__SH2A_SINGLE__) \ ++ || defined (__SH2A_SINGLE_ONLY__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has no FPU ++proc check_effective_target_no_fpu { } { ++ return [check_no_compiler_messages no_fpu object { ++ #ifdef __SH_FPU_ANY__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++ ++# Return 1 if the target has XF regs ++proc check_effective_target_has_xf_regs { } { ++ return [check_no_compiler_messages has_xf_regs object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++ ++# Return 1 if the target can do the fsca insn ++proc check_effective_target_has_fsca { } { ++ return [check_no_compiler_messages has_fsca object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do the fsrra insn ++proc check_effective_target_has_fsrra { } { ++ return [check_no_compiler_messages has_fsrra object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do the fpchg insn ++proc check_effective_target_has_fpchg { } { ++ return [check_no_compiler_messages has_fpchg object { ++ #if !(defined (__SH4A__) && defined (__SH_FPU_ANY__) \ ++ && !defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do dynamic shifts ++proc check_effective_target_has_dyn_shift { } { ++ return [check_no_compiler_messages has_dyn_shift object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH2A__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the mfmovd option is enabled ++proc check_effective_target_fmovd_enabled { } { ++ return [check_no_compiler_messages fmovd_enabled object { ++ #ifndef __FMOVD_ENABLED__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target supports privileged mode ++proc check_effective_target_has_privileged { } { ++ return [check_no_compiler_messages has_privileged object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target supports the prefetch insn ++proc check_effective_target_has_pref { } { ++ return [check_no_compiler_messages has_pref object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target does banked r0..r7 regs type of ISRs ++proc check_effective_target_banked_r0r7_isr { } { ++ return [check_no_compiler_messages banked_r0r7_isr object { ++ #if !(defined (__SH3__) || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target does stack only type of ISRs ++proc check_effective_target_stack_save_isr { } { ++ return [check_no_compiler_messages stack_save_isr object { ++ #if !(defined (__SH1__) \ ++ || defined (__SH2__) \ ++ || defined (__SH2E__) \ ++ || defined (__SH2A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target supports atomic-model=soft-gusa ++proc check_effective_target_atomic_model_soft_gusa_available { } { ++ return [check_no_compiler_messages atomic_model_soft_gusa_available object { ++ int x = 0; ++ } "-matomic-model=soft-gusa"] ++} ++ ++# Return 1 if target supports atomic-model=soft-tcb ++proc check_effective_target_atomic_model_soft_tcb_available { } { ++ return [check_no_compiler_messages atomic_model_soft_tcb_available object { ++ int x = 0; ++ } "-matomic-model=soft-tcb,gbr-offset=0"] ++} ++ ++# Return 1 if target supports atomic-model=soft-imask ++proc check_effective_target_atomic_model_soft_imask_available { } { ++ return [check_no_compiler_messages atomic_model_soft_imask_available object { ++ int x = 0; ++ } "-matomic-model=soft-imask -mno-usermode"] ++} ++ ++# Return 1 if target supports atomic-model=hard-llcs ++proc check_effective_target_atomic_model_hard_llcs_available { } { ++ return [check_no_compiler_messages atomic_model_hard_llcs_available object { ++ int x = 0; ++ } "-matomic-model=hard-llcs"] ++} ++ ++# If a testcase doesn't have special options, use these. ++global DEFAULT_CXXFLAGS ++if ![info exists DEFAULT_CXXFLAGS] then { ++ set DEFAULT_CXXFLAGS " -pedantic-errors" ++} ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" $DEFAULT_CXXFLAGS ++ ++# All done. ++dg-finish +diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c311.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c311.C +new file mode 100644 +index 00000000000..cc31dbcc443 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c311.C +@@ -0,0 +1,73 @@ ++/* { dg-additional-options "-mlra -fpic" } */ ++/* { dg-do compile } */ ++ ++ ++typedef signed int int32_t; ++typedef signed long long int int64_t; ++static constexpr int32_t SK_MaxS32 = 214748364;; ++static constexpr int32_t SK_MinS32 = -SK_MaxS32; ++ ++extern double fabs (double __x) noexcept (true) __attribute__ ((__const__)); ++ ++namespace std __attribute__ ((__visibility__ ("default"))) ++{ ++using ::fabs; ++ ++template [[__nodiscard__]] constexpr inline const _Tp& min(const _Tp& __a, const _Tp& __b) ++{ ++ if (__b < __a) return __b; ++ return __a; ++} ++ ++template [[__nodiscard__]] constexpr inline const _Tp& max(const _Tp& __a, const _Tp& __b) ++{ ++ return __a; ++} ++ ++} ++ ++ ++static constexpr int32_t Sk64_pin_to_s32(int64_t x) ++{ ++ return x < SK_MinS32 ? SK_MinS32 : (x > SK_MaxS32 ? SK_MaxS32 : (int32_t)x); ++} ++ ++static constexpr int32_t Sk32_sat_sub(int32_t a, int32_t b) ++{ ++ return Sk64_pin_to_s32((int64_t)a - (int64_t)b); ++}; ++ ++struct SkPoint ++{ ++ float fX; ++ float fY; ++}; ++ ++typedef float SkScalar; ++static inline bool SkScalarNearlyEqual(SkScalar x, SkScalar y, SkScalar tolerance = (1.0f / (1 << 12))) ++{ ++ return std::fabs(x-y) <= tolerance; ++} ++ ++class SkCubicMap ++{ ++public: ++ SkCubicMap(SkPoint p1, SkPoint p2); ++private: ++ enum Type ++ { ++ kLine_Type, kCubeRoot_Type, kSolver_Type, ++ }; ++ ++ Type fType; ++}; ++ ++SkCubicMap::SkCubicMap(SkPoint p1, SkPoint p2) ++{ ++ p1.fX = std::min(std::max(p1.fX, 0.0f), 1.0f); ++ p2.fX = std::min(std::max(p2.fX, 0.0f), 1.0f); ++ if (SkScalarNearlyEqual(p1.fX, p1.fY) && SkScalarNearlyEqual(p2.fX, p2.fY)) ++ { ++ fType = kLine_Type; ++ } ++} +diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c333.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c333.C +new file mode 100644 +index 00000000000..afab629cdf2 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c333.C +@@ -0,0 +1,259 @@ ++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ ++/* { dg-do compile } */ ++ ++typedef unsigned int size_t; ++ ++extern "C++" ++{ ++ ++namespace std __attribute__ ((__visibility__ ("default"))) ++{ ++ ++template struct integral_constant ++{ ++ static constexpr _Tp value = __v; ++ using value_type = _Tp; ++ constexpr operator value_type() const noexcept { return value; } ++ ++ constexpr value_type operator()() const noexcept { } ++ }; ++ ++template using __bool_constant = integral_constant; ++using true_type = __bool_constant; ++using false_type = __bool_constant; ++ ++template struct enable_if { }; ++ ++template struct enable_if { using type = _Tp; }; ++ ++template using __enable_if_t = typename enable_if<_Cond, _Tp>::type; ++template struct __conditional { template using type = _Tp; }; ++template using __conditional_t = typename __conditional<_Cond>::template type<_If, _Else>; ++template struct __type_identity { }; ++ ++namespace __detail ++{ ++template using __first_t = _Tp; ++template auto __and_fn(int) -> __first_t...>; ++} ++ ++template struct __and_ : decltype(__detail::__and_fn<_Bn...>(0)) { }; ++template struct __not_ : __bool_constant { }; ++ ++template constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) { return { }; } ++template struct is_pointer : public __bool_constant<__is_pointer(_Tp)> { }; ++template struct is_empty : public __bool_constant<__is_empty(_Tp)> { }; ++template using __is_constructible_impl = __bool_constant<__is_constructible(_Tp, _Args...)>; ++ ++template struct is_default_constructible : public __is_constructible_impl<_Tp> { }; ++template using __add_lval_ref_t = __add_lvalue_reference(_Tp); ++template using __add_rval_ref_t = __add_rvalue_reference(_Tp); ++template struct is_move_constructible : public __is_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> ++{ ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ } ++), "template argument must be a complete class or an unbounded array"); ++}; ++ ++template using __is_assignable_impl = __bool_constant<__is_assignable(_Tp, _Up)>; ++template struct is_move_assignable : public __is_assignable_impl<__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>> ++{ ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp> {} ++), "template argument must be a complete class or an unbounded array"); ++ ++}; ++ ++template struct tuple_element; ++template using __tuple_element_t = typename tuple_element<__i, _Tp>::type; ++template struct _Nth_type ++{ ++ using type = __type_pack_element<_Np, _Types...>; ++}; ++ ++template class tuple; ++template constexpr const __tuple_element_t<__i, tuple<_Elements...>>& get(const tuple<_Elements...>& __t) noexcept; ++} ++} ++ ++inline constexpr float SK_FloatSqrt2 = 1.41421356f; ++ ++struct SkPoint ++{ ++ float fY; ++}; ++ ++extern void sk_free(void*); ++enum ++{ ++ SK_MALLOC_ZERO_INITIALIZE = 1 << 0, SK_MALLOC_THROW = 1 << 1, ++}; ++ ++extern void* sk_malloc_flags(size_t size, unsigned flags); ++ ++static inline void* sk_calloc_throw(size_t size) ++{ ++ return sk_malloc_flags(size, SK_MALLOC_THROW | SK_MALLOC_ZERO_INITIALIZE); ++} ++ ++typedef struct ++{ ++ union ++ { ++ } __value; ++ ++} __mbstate_t; ++ ++namespace std __attribute__ ((__visibility__ ("default"))) ++{ ++template struct __is_empty_non_tuple : is_empty<_Tp> { }; ++ ++template using __empty_not_final = __conditional_t<__is_final(_Tp), false_type, __is_empty_non_tuple<_Tp>>; ++template::value> struct _Head_base; ++template struct _Head_base<_Idx, _Head, false> { }; ++template struct _Tuple_impl; ++template struct _Tuple_impl<_Idx, _Head, _Tail...> : public _Tuple_impl<_Idx + 1, _Tail...>, private _Head_base<_Idx, _Head> { }; ++template struct _Tuple_impl<_Idx, _Head> : private _Head_base<_Idx, _Head> { }; ++template class tuple : public _Tuple_impl<0, _Elements...> { }; ++template struct tuple_element<__i, tuple<_Types...>> ++{ ++ using type = typename _Nth_type<__i, _Types...>::type; ++}; ++ ++template struct default_delete ++{ ++}; ++ ++template class __uniq_ptr_impl ++{ ++ template struct _Ptr { using type = _Up*; }; ++ ++public: ++ using _DeleterConstraint = enable_if< __and_<__not_>, is_default_constructible<_Dp>>::value>; ++ using pointer = typename _Ptr<_Tp, _Dp>::type; ++ constexpr __uniq_ptr_impl(pointer __p) : _M_t() { } ++ constexpr pointer _M_ptr() const noexcept { return std::get<0>(_M_t); } ++private: ++ tuple _M_t; ++}; ++ ++template ::value, bool = is_move_assignable<_Dp>::value> struct __uniq_ptr_data : __uniq_ptr_impl<_Tp, _Dp>{ }; ++ ++template > class unique_ptr ++{ ++ template using _DeleterConstraint = typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; ++ __uniq_ptr_data<_Tp, _Dp> _M_t; ++public: ++ using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; ++ template> constexpr explicit unique_ptr(pointer __p) noexcept : _M_t(__p) { } ++ ++ constexpr pointer get() const noexcept { return _M_t._M_ptr(); } ++}; ++ ++} ++ ++template struct SkOverloadedFunctionObject ++{ ++}; ++ ++namespace skia_private ++{ ++ using UniqueVoidPtr = std::unique_ptr>; ++} ++ ++class SkNoncopyable ++{ ++}; ++ ++template class SkAutoSMalloc : SkNoncopyable ++{ ++ public: SkAutoSMalloc() { } ++ ++ explicit SkAutoSMalloc(size_t size) { } ++ ++ void* get() const { return fPtr; } ++ ++ void* fPtr; ++}; ++ ++ class SkPointPriv { ++ public: enum Side { ++ kLeft_Side = -1, kOn_Side = 0, kRight_Side = 1, }; ++ static bool SetLengthFast(SkPoint* pt, float length); ++ }; ++ using namespace skia_private; ++ struct DFData { ++ float fAlpha; ++ SkPoint fDistVector; ++ }; ++ enum NeighborFlags { ++ kLeft_NeighborFlag = 0x01, kRight_NeighborFlag = 0x02, kTopLeft_NeighborFlag = 0x04, kTop_NeighborFlag = 0x08, kTopRight_NeighborFlag = 0x10, kBottomLeft_NeighborFlag = 0x20, kBottom_NeighborFlag = 0x40, kBottomRight_NeighborFlag = 0x80, kAll_NeighborFlags = 0xff, kNeighborFlagCount = 8 }; ++ static void init_glyph_data(DFData* data, unsigned char* edges, const unsigned char* image, int dataWidth, int dataHeight, int imageWidth, int imageHeight, int pad) { ++ for (int j = 0; ++ j < imageHeight; ++ ++j) { ++ for (int i = 0; ++ i < imageWidth; ++ ++i) { ++ if (255 == *image) { ++ } ++ } ++ } ++ } ++ ++static void init_distances(DFData* data, unsigned char* edges, int width, int height) ++{ ++ DFData* currData = data; ++ DFData* prevData = data - width; ++ DFData* nextData = data + width; ++ for (int j = 0; j < height; ++j) ++ { ++ for (int i = 0;i < width;++i) ++ { ++ if (*edges) ++ { ++ SkPoint currGrad; ++ currGrad.fY = (nextData-1)->fAlpha - (prevData-1)->fAlpha + SK_FloatSqrt2*nextData->fAlpha - SK_FloatSqrt2*prevData->fAlpha + (nextData+1)->fAlpha - (prevData+1)->fAlpha; ++ SkPointPriv::SetLengthFast(&currGrad, 1.0f); ++ currData->fDistVector.fY = 1000.f; ++ } ++ ++currData; ++ ++prevData; ++ ++nextData; ++ } ++ } ++} ++ ++static void B1(DFData* curr, int width) ++{ ++} ++ ++static bool generate_distance_field_from_image(unsigned char* distanceField, const unsigned char* copyPtr, int width, int height) ++{ ++ int pad = 4 + 1; ++ int dataWidth = width + 2*pad; ++ int dataHeight = height + 2*pad; ++ UniqueVoidPtr storage(sk_calloc_throw(dataWidth*dataHeight*(sizeof(DFData) + 1))); ++ DFData* dataPtr = (DFData*)storage.get(); ++ unsigned char* edgePtr = (unsigned char*)storage.get() + dataWidth*dataHeight*sizeof(DFData); ++ init_distances(dataPtr, edgePtr, dataWidth, dataHeight); ++ unsigned char* currEdge = edgePtr+dataWidth+1; ++ for (int j = 1; j < dataHeight-1; ++j) ++ { ++ for (int i = 1; i < dataWidth-1; ++i) ++ { ++ if (!*currEdge) ++ { ++ } ++ } ++ } ++ ++ // return true; ++ // ICE triggered only without return statement ++} ++ ++ ++bool SkGenerateDistanceFieldFromA8Image(unsigned char* distanceField, const unsigned char* image, int width, int height, size_t rowBytes) ++{ ++ SkAutoSMalloc<1024> copyStorage((width+2)*(height+2)*sizeof(char)); ++ unsigned char* copyPtr = (unsigned char*) copyStorage.get(); ++ return generate_distance_field_from_image(distanceField, copyPtr, width, height); ++} +diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c373.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c373.C +new file mode 100644 +index 00000000000..d1f30cb93c4 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c373.C +@@ -0,0 +1,612 @@ ++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ ++/* { dg-do compile } */ ++ ++ namespace std { ++ typedef unsigned int size_t; ++ } ++ namespace std { ++ __attribute__((__always_inline__)) constexpr inline bool __is_constant_evaluated() noexcept { ++ return __builtin_is_constant_evaluated(); ++ } ++ } ++ typedef unsigned int size_t; ++ extern "C" { ++ typedef struct { ++ } ++ lldiv_t; ++ extern "C" { ++ typedef unsigned char __uint8_t; ++ typedef unsigned int __uint32_t; ++ typedef union { ++ struct { ++ } ++ __value32; ++ } ++ __atomic_wide_counter; ++ } ++ } ++ extern "C++" { ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ } ++ } ++ extern "C++" { ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ template struct integral_constant { ++ static constexpr _Tp value = __v; ++ using value_type = _Tp; ++ constexpr operator value_type() const noexcept { ++ } ++ }; ++ template using __bool_constant = integral_constant; ++ using true_type = __bool_constant; ++ using false_type = __bool_constant; ++ template struct enable_if { ++ }; ++ template struct enable_if { ++ using type = _Tp; ++ }; ++ template struct __conditional { ++ }; ++ template using __conditional_t = typename __conditional<_Cond>::template type<_If, _Else>; ++ template struct __type_identity { ++ }; ++ namespace __detail { ++ template auto __and_fn(...) -> false_type; ++ } ++ template struct __and_ : decltype(__detail::__and_fn<_Bn...>(0)) { ++ }; ++ template struct remove_cv; ++ template constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) { ++ return { ++}; ++ } ++ template struct is_void : public false_type { ++ }; ++ template struct is_member_object_pointer : public __bool_constant<__is_member_object_pointer(_Tp)> { ++ }; ++ template struct is_member_function_pointer : public __bool_constant<__is_member_function_pointer(_Tp)> { ++ }; ++ template struct is_empty : public __bool_constant<__is_empty(_Tp)> { ++ }; ++ template _Tp __declval(long); ++ template auto declval() noexcept -> decltype(__declval<_Tp>(0)); ++ template using __is_constructible_impl = __bool_constant<__is_constructible(_Tp, _Args...)>; ++ template using __add_lval_ref_t = __add_lvalue_reference(_Tp); ++ template struct is_copy_constructible : public __is_constructible_impl<_Tp, __add_lval_ref_t> { ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ ++} ++), "template argument must be a complete class or an unbounded array"); ++ }; ++ template using __add_rval_ref_t = __add_rvalue_reference(_Tp); ++ template struct is_move_constructible : public __is_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> { ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ ++} ++), "template argument must be a complete class or an unbounded array"); ++ }; ++ template using __is_assignable_impl = __bool_constant<__is_assignable(_Tp, _Up)>; ++ template struct is_copy_assignable : public __is_assignable_impl<__add_lval_ref_t<_Tp>, __add_lval_ref_t> { ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ ++} ++), "template argument must be a complete class or an unbounded array"); ++ }; ++ template struct is_same : public __bool_constant<__is_same(_Tp, _Up)> { ++ }; ++ template struct remove_const { ++ }; ++ template struct add_const { ++ }; ++ template struct remove_reference { ++ }; ++ template using remove_reference_t = typename remove_reference<_Tp>::type; ++ template struct add_pointer { ++ }; ++ template using __remove_cvref_t = typename remove_cv::type>::type; ++ template struct conditional { ++ }; ++ struct __failure_type { ++ }; ++ struct __invoke_memfun_ref { ++ }; ++ struct __invoke_other { ++ }; ++ template> struct __inv_unwrap { ++ }; ++ template struct __result_of_impl { ++ }; ++ template struct __invoke_result : public __result_of_impl< is_member_object_pointer< typename remove_reference<_Functor>::type >::value, is_member_function_pointer< typename remove_reference<_Functor>::type >::value, _Functor, _ArgTypes... >::type { ++ }; ++ template::value, typename = void> struct __is_invocable_impl : false_type { ++ }; ++ template constexpr bool __call_is_nt(__invoke_memfun_ref) { ++ using _Up = typename __inv_unwrap<_Tp>::type; ++ return noexcept((std::declval<_Up>().*std::declval<_Fn>())( std::declval<_Args>()...)); ++ } ++ template struct __call_is_nothrow : __bool_constant< std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{ ++} ++ ) > { ++ }; ++ template struct is_invocable_r : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>::type { ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{ ++} ++), "_Fn must be a complete class or an unbounded array"); ++ static_assert((std::__is_complete_or_unbounded( __type_identity<_ArgTypes>{ ++} ++) && ...), "each argument type must be a complete class or an unbounded array"); ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Ret>{ ++} ++), "_Ret must be a complete class or an unbounded array"); ++ }; ++ template inline constexpr bool is_lvalue_reference_v = false; ++ template inline constexpr bool is_enum_v = __is_enum(_Tp); ++ template inline constexpr bool is_union_v = __is_union(_Tp); ++ template inline constexpr bool is_class_v = __is_class(_Tp); ++ template inline constexpr bool is_trivial_v = __is_trivial(_Tp); ++ template inline constexpr bool is_standard_layout_v = __is_standard_layout(_Tp); ++ template inline constexpr bool is_constructible_v = __is_constructible(_Tp, _Args...); ++ template inline constexpr bool is_same_v = __is_same(_Tp, _Up); ++ template inline constexpr bool is_base_of_v = __is_base_of(_Base, _Derived); ++ template inline constexpr bool is_convertible_v = __is_convertible(_From, _To); ++ template struct common_reference; ++ template using common_reference_t = typename common_reference<_Tp...>::type; ++ } ++ } ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ template inline constexpr _Tp* __addressof(_Tp& __r) noexcept { ++ } ++ template [[__nodiscard__]] constexpr typename std::remove_reference<_Tp>::type&& move(_Tp&& __t) noexcept { ++ } ++ namespace __detail { ++ template concept __same_as = std::is_same_v<_Tp, _Up>; ++ } ++ template concept same_as = __detail::__same_as<_Tp, _Up> && __detail::__same_as<_Up, _Tp>; ++ template concept convertible_to = is_convertible_v<_From, _To> && requires { ++ static_cast<_To>(std::declval<_From>()); ++ }; ++ template concept common_reference_with = same_as, common_reference_t<_Up, _Tp>> && convertible_to<_Tp, common_reference_t<_Tp, _Up>> && convertible_to<_Up, common_reference_t<_Tp, _Up>>; ++ namespace __detail { ++ template using __cref = const remove_reference_t<_Tp>&; ++ template concept __class_or_enum = is_class_v<_Tp> || is_union_v<_Tp> || is_enum_v<_Tp>; ++ template constexpr bool __destructible_impl = false; ++ template requires requires(_Tp& __t) { ++ { ++ __t.~_Tp() } ++ noexcept; ++ } ++ constexpr bool __destructible_impl<_Tp> = true; ++ template constexpr bool __destructible = __destructible_impl<_Tp>; ++ } ++ template concept assignable_from = is_lvalue_reference_v<_Lhs> && common_reference_with<__detail::__cref<_Lhs>, __detail::__cref<_Rhs>> && requires(_Lhs __lhs, _Rhs&& __rhs) { ++ { ++ __lhs = static_cast<_Rhs&&>(__rhs) } ++ -> same_as<_Lhs>; ++ }; ++ template concept destructible = __detail::__destructible<_Tp>; ++ template concept constructible_from = destructible<_Tp> && is_constructible_v<_Tp, _Args...>; ++ template concept default_initializable = constructible_from<_Tp> && requires { ++ (void) ::new _Tp; ++ }; ++ template concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>; ++ namespace ranges { ++ namespace __swap { ++ template concept __adl_swap = (std::__detail::__class_or_enum> || std::__detail::__class_or_enum>) && requires(_Tp&& __t, _Up&& __u) { ++ swap(static_cast<_Tp&&>(__t), static_cast<_Up&&>(__u)); ++ }; ++ struct _Swap { ++ private: template static constexpr bool _S_noexcept() { ++ if constexpr (__adl_swap<_Tp, _Up>) return noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())); ++ } ++ public: template requires __adl_swap<_Tp, _Up> || (same_as<_Tp, _Up> && is_lvalue_reference_v<_Tp> && move_constructible> && assignable_from<_Tp, remove_reference_t<_Tp>>) constexpr void operator()(_Tp&& __t, _Up&& __u) const noexcept(_S_noexcept<_Tp, _Up>()) { ++ if constexpr (__adl_swap<_Tp, _Up>) swap(static_cast<_Tp&&>(__t), static_cast<_Up&&>(__u)); ++ else { ++ } ++ } ++ template requires requires(const _Swap& __swap, _Tp& __e1, _Up& __e2) { ++ __swap(__e1, __e2); ++ } ++ constexpr void operator()(_Tp (&__e1)[_Num], _Up (&__e2)[_Num]) const noexcept(noexcept(std::declval()(*__e1, *__e2))) { ++ for (size_t __n = 0; ++ __n < _Num; ++ ++__n) (*this)(__e1[__n], __e2[__n]); ++ } ++ }; ++ } ++ inline namespace _Cpo { ++ inline constexpr __swap::_Swap swap{ ++}; ++ } ++ } ++ template concept swappable = requires(_Tp& __a, _Tp& __b) { ++ ranges::swap(__a, __b); ++ }; ++ template concept swappable_with = common_reference_with<_Tp, _Up> && requires(_Tp&& __t, _Up&& __u) { ++ ranges::swap(static_cast<_Tp&&>(__t), static_cast<_Tp&&>(__t)); ++ }; ++ namespace __detail { ++ template concept __boolean_testable_impl = convertible_to<_Tp, bool>; ++ template concept __boolean_testable = __boolean_testable_impl<_Tp> && requires(_Tp&& __t) { ++ { ++ !static_cast<_Tp&&>(__t) } ++ -> __boolean_testable_impl; ++ }; ++ template concept __weakly_eq_cmp_with = requires(__detail::__cref<_Tp> __t, __detail::__cref<_Up> __u) { ++ { ++ __t == __u } ++ -> __boolean_testable; ++ { ++ __u == __t } ++ -> __boolean_testable; ++ { ++ __u != __t } ++ -> __boolean_testable; ++ }; ++ } ++ namespace __detail { ++ template concept __partially_ordered_with = requires(const remove_reference_t<_Tp>& __t, const remove_reference_t<_Up>& __u) { ++ { ++ __t < __u } ++ -> __boolean_testable; ++ { ++ __t <= __u } ++ -> __boolean_testable; ++ { ++ __t >= __u } ++ -> __boolean_testable; ++ { ++ __u < __t } ++ -> __boolean_testable; ++ }; ++ } ++ template struct __get_first_arg { ++ }; ++ template struct __ptr_traits_elem : __get_first_arg<_Ptr> { ++ }; ++ template requires requires { ++ typename _Ptr::element_type; ++ } ++ struct __ptr_traits_elem<_Ptr, void> { ++ }; ++ template::value> struct __ptr_traits_ptr_to { ++ using pointer = _Ptr; ++ using element_type = _Elt; ++ static pointer pointer_to(element_type& __r) requires requires { ++ { ++ pointer::pointer_to(__r) } ++ -> convertible_to; ++ } ++ { ++ } ++ }; ++ namespace __detail { ++ template using __with_ref = _Tp&; ++ template concept __can_reference = requires { ++ typename __with_ref<_Tp>; ++ }; ++ template concept __dereferenceable = requires(_Tp& __t) { ++ { ++ *__t } ++ -> __can_reference; ++ }; ++ } ++ namespace ranges { ++ namespace __imove { ++ template concept __adl_imove = (std::__detail::__class_or_enum>) && requires(_Tp&& __t) { ++ iter_move(static_cast<_Tp&&>(__t)); ++ }; ++ struct _IterMove { ++ private: template struct __result { ++ }; ++ template static constexpr bool _S_noexcept() { ++ if constexpr (__adl_imove<_Tp>) return noexcept(iter_move(std::declval<_Tp>())); ++ } ++ public: template using __type = typename __result<_Tp>::type; ++ template [[nodiscard]] constexpr __type<_Tp> operator()(_Tp&& __e) const noexcept(_S_noexcept<_Tp>()) { ++ } ++ }; ++ } ++ } ++ template struct incrementable_traits { ++ }; ++ namespace __detail { ++ } ++ template struct tuple_element; ++ template using __tuple_element_t = typename tuple_element<__i, _Tp>::type; ++ template constexpr size_t __find_uniq_type_in_pack() { ++ constexpr size_t __sz = sizeof...(_Types); ++ constexpr bool __found[__sz] = { ++ __is_same(_Tp, _Types) ... }; ++ size_t __n = __sz; ++ for (size_t __i = 0; ++ __i < __sz; ++ ++__i) { ++ if (__found[__i]) { ++ if (__n < __sz) return __sz; ++ } ++ } ++ }; ++ template struct integer_sequence { ++ }; ++ template using make_integer_sequence = integer_sequence<_Tp, __integer_pack(_Num)...>; ++ template using index_sequence = integer_sequence; ++ template using make_index_sequence = make_integer_sequence; ++ template using index_sequence_for = make_index_sequence; ++ template struct in_place_type_t { ++ }; ++ template class tuple; ++ template class __pair_base { ++ }; ++ namespace __detail { ++ template struct __move_iter_cat { ++ }; ++ } ++ template class move_iterator : public __detail::__move_iter_cat<_Iterator> { ++ }; ++ template [[__nodiscard__]] inline constexpr bool operator<(const move_iterator<_IteratorL>& __x, const move_iterator<_IteratorR>& __y) requires requires { ++ { ++ __x.base() < __y.base() } ++ -> convertible_to; ++ } ++ { ++ return !(__x < __y); ++ } ++ namespace __ops { ++ template struct _Iter_comp_iter { ++ _Compare _M_comp; ++ explicit constexpr _Iter_comp_iter(_Compare __comp) : _M_comp(std::move(__comp)) { ++ } ++ template constexpr bool operator()(_Iterator1 __it1, _Iterator2 __it2) { ++ return bool(_M_comp(*__it1, *__it2)); ++ } ++ }; ++ template constexpr inline _Iter_comp_iter<_Compare> __iter_comp_iter(_Compare __comp) { ++ } ++ } ++ template [[__nodiscard__]] constexpr inline const _Tp& min(const _Tp& __a, const _Tp& __b) { ++ return __a; ++ } ++ template [[__nodiscard__]] constexpr inline const _Tp& max(const _Tp& __a, const _Tp& __b) { ++ if (__a < __b) return __b; ++ } ++ template constexpr inline _Iterator __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) { ++ } ++ } ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ struct allocator_arg_t { ++ struct _Sink { ++ void constexpr operator=(const void*) { ++ } ++ } ++ _M_a; ++ }; ++ template constexpr _Res __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) { ++ } ++ template class initializer_list { ++ typedef size_t size_type; ++ typedef const _E* iterator; ++ private: iterator _M_array; ++ size_type _M_len; ++ }; ++ template struct __is_empty_non_tuple : is_empty<_Tp> { ++ }; ++ template using __empty_not_final = __conditional_t<__is_final(_Tp), false_type, __is_empty_non_tuple<_Tp>>; ++ template::value> struct _Head_base; ++ template struct _Tuple_impl; ++ template struct _Tuple_impl<_Idx, _Head, _Tail...> : public _Tuple_impl<_Idx + 1, _Tail...>, private _Head_base<_Idx, _Head> { ++ }; ++ template constexpr __tuple_element_t<__i, tuple<_Elements...>>& get(tuple<_Elements...>& __t) noexcept { ++ } ++ template requires (sizeof...(_Tps) == sizeof...(_Ups)) && (requires (const _Tps& __t, const _Ups& __u) { ++ { ++ __t == __u } ++ -> __detail::__boolean_testable; ++ } ++ && ...) constexpr bool operator== [[nodiscard]] (const tuple<_Tps...>& __t, const tuple<_Ups...>& __u) { ++ return [&](index_sequence<_Inds...>) { ++ } ++ (index_sequence_for<_Tps...>{ ++} ++ ); ++ } ++ } ++ typedef struct { ++ union { ++ } ++ __value; ++ } ++ __mbstate_t; ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ } ++ static inline int __gthread_yield (void) { ++ } ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ template [[nodiscard, __gnu__::__always_inline__]] constexpr _Tp* data(_Tp (&__array)[_Nm]) noexcept { ++ }; ++ } ++ typedef __uint8_t uint8_t; ++ typedef __uint32_t uint32_t; ++ namespace std { ++ namespace __detail { ++ inline void __thread_yield() noexcept { ++ } ++ inline void __thread_relax() noexcept { ++ } ++ inline constexpr auto __atomic_spin_count = 16; ++ struct __default_spin_policy { ++ bool operator()() const noexcept { ++ } ++ }; ++ template bool __atomic_spin(_Pred& __pred, _Spin __spin = _Spin{ ++ } ++ ) noexcept { ++ for (auto __i = 0; ++ __i < __atomic_spin_count; ++ ++__i) { ++ } ++ } ++ } ++ struct __numeric_limits_base { ++ }; ++ template struct numeric_limits : public __numeric_limits_base { ++ static constexpr bool is_signed = true; ++ static constexpr bool is_integer = true; ++ }; ++ template<> struct numeric_limits { ++ static constexpr bool is_signed = false; ++ static constexpr bool is_integer = true; ++ }; ++ } ++ namespace WTF { ++ template struct IsSmartPtr { ++ }; ++ template > struct TypeCastTraits { ++ }; ++ template class TypeHasRefMemberFunction { ++ }; ++ } ++ namespace WTF { ++ } ++ namespace std { ++ namespace experimental { ++ }; ++ } ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ template struct array { ++ }; ++ } ++ extern "C" { ++ extern float sqrtf (float __x) noexcept (true); ++ extern float floorf (float __x) noexcept (true) __attribute__ ((__const__)); ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ constexpr bool isnan(float __x) { ++ return __builtin_isnan(__x); ++ } ++ } ++ } ++ constexpr float piFloat = static_cast( 3.14159265358979323846 ); ++ template typename std::enable_if::value && std::numeric_limits::is_integer && std::numeric_limits::is_integer && std::numeric_limits::is_signed && !std::numeric_limits::is_signed && sizeof(SourceType) >= sizeof(TargetType), TargetType>::type clampTo(SourceType value) { ++ return static_cast(value); ++ } ++ namespace WTF { ++ constexpr uint32_t roundUpToPowerOfTwo(uint32_t v) { ++ return v; ++ }; ++ template struct VectorTraitsBase; ++ template struct VectorTraits : VectorTraitsBase && std::is_trivial_v, T> { ++ }; ++ } ++ namespace WTF { ++ class StringHasher { ++ }; ++ enum class DestructionThread : uint8_t { ++ Any, Main, MainRunLoop }; ++ } ++ namespace WebCore { ++ class IntSize { ++ public: constexpr IntSize() = default; ++ void setWidth(int width) { ++ m_width = width; ++ } ++ void setHeight(int height) { ++ m_height = height; ++ } ++ private: int m_width { ++ 0 }; ++ int m_height { ++ 0 }; ++ }; ++ inline IntSize& operator+=(IntSize& a, const IntSize& b) { ++ } ++ } ++ namespace WebCore { ++ class FloatSize { ++ public: constexpr FloatSize() = default; ++ constexpr float width() const { ++ return m_width; ++ } ++ constexpr float height() const { ++ return m_height; ++ } ++ private: float m_width { ++ 0 }; ++ float m_height { ++ 0 }; ++ }; ++ } ++ namespace WTF { ++ class ThreadSafeRefCountedBase { ++ }; ++ template class ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr { ++ }; ++ } ++ using WTF::ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr; ++ namespace WebCore { ++ class FloatPoint { ++ }; ++ inline FloatSize toFloatSize(const FloatPoint& a) { ++ } ++ } ++ namespace WTF { ++ } ++ namespace WebCore { ++ template struct ColorComponents { ++ template constexpr auto map(F&& function) const -> ColorComponents())), N>; ++ }; ++ template struct AlphaTraits; ++ inline constexpr ColorComponents resolveColorComponents(const ColorComponents& colorComponents) { ++ return colorComponents.map([] (float component) { ++ return std::isnan(component) ? 0.0f : component; ++ } ++ ); ++ }; ++ enum class WhitePoint { ++ D50, D65 }; ++ template struct ColorWithAlphaHelper { ++ }; ++ template struct RGBAType : ColorWithAlphaHelper { ++ constexpr RGBAType(T red, T green, T blue, T alpha = AlphaTraits::opaque) : red { ++ red } ++ { ++ } ++ protected: T red; ++ }; ++ } ++ namespace WebCore { ++ class RenderingResource : public ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr { ++ }; ++ class FilterFunction : public RenderingResource { ++ }; ++ class FilterEffect : public FilterFunction { ++ }; ++ class AffineTransform { ++ public: constexpr AffineTransform(); ++ private: std::array m_transform; ++ }; ++ constexpr AffineTransform::AffineTransform() : m_transform { ++ } ++ { ++ } ++ } ++ namespace WTF { ++ } ++ namespace WebCore { ++ class FEGaussianBlur : public FilterEffect { ++ static IntSize calculateUnscaledKernelSize(FloatSize stdDeviation); ++ }; ++ } ++ namespace WTF { ++ } ++ namespace WebCore { ++ static inline float gaussianKernelFactor() { ++ return 3 / 4.f * sqrtf(2 * piFloat); ++ } ++ static int clampedToKernelSize(float value) { ++ static constexpr unsigned maxKernelSize = 500; ++ unsigned size = std::max(2, static_cast(floorf(value * gaussianKernelFactor() + 0.5f))); ++ return clampTo(std::min(size, maxKernelSize)); ++ } ++ IntSize FEGaussianBlur::calculateUnscaledKernelSize(FloatSize stdDeviation) { ++ IntSize kernelSize; ++ if (stdDeviation.width()) kernelSize.setWidth(clampedToKernelSize(stdDeviation.width())); ++ if (stdDeviation.height()) kernelSize.setHeight(clampedToKernelSize(stdDeviation.height())); ++ return kernelSize; ++ } ++ } +diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c384.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c384.C +new file mode 100644 +index 00000000000..f46136489b5 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c384.C +@@ -0,0 +1,429 @@ ++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ ++/* { dg-do compile } */ ++ ++ typedef unsigned int size_t; ++ extern "C" { ++ typedef signed int __int32_t; ++ typedef struct { ++ } ++ __fpos64_t; ++ } ++ extern "C++" { ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ template struct integral_constant { ++ using value_type = _Tp; ++ constexpr operator value_type() const noexcept { ++ } ++ }; ++ } ++ typedef __int32_t int32_t; ++ typedef struct { ++ } ++ ldiv_t; ++ } ++ extern "C" { ++ typedef unsigned int hashval_t; ++ enum insert_option { ++ NO_INSERT, INSERT}; ++ } ++ typedef const union tree_node *const_tree; ++ struct varpool_node; ++ struct cgraph_edge; ++ template inline T * ggc_alloc () { ++ } ++ struct vl_embed { ++ }; ++ struct vl_ptr { ++ }; ++ struct va_heap { ++ typedef vl_ptr default_layout; ++ }; ++ struct va_gc { ++ typedef vl_embed default_layout; ++ }; ++ template struct vec { ++ }; ++ template T* begin (vec *v) { ++ } ++ template T* end (vec *v) { ++ } ++ struct vnull { ++ }; ++ template struct vec { ++ bool is_empty (void) const { ++ } ++ T &operator[] (unsigned); ++ }; ++ template inline unsigned vec_safe_length (const vec *v) { ++ } ++ template class auto_vec; ++ template struct vec { ++ public: vec () = default; ++ vec (vnull): m_vec () { ++ } ++ T &operator[] (unsigned ix) { ++ return (*m_vec)[ix]; ++ } ++ vec *m_vec; ++ }; ++ template class auto_vec : public vec { ++ public: auto_vec () { ++ } ++ auto_vec (size_t s ) { ++ } ++ }; ++ enum mem_alloc_origin { ++ HASH_TABLE_ORIGIN, HASH_MAP_ORIGIN, HASH_SET_ORIGIN, VEC_ORIGIN, BITMAP_ORIGIN, GGC_ORIGIN, ALLOC_POOL_ORIGIN, MEM_ALLOC_ORIGIN_LENGTH }; ++ template struct typed_noop_remove { ++ }; ++ template struct int_hash_base : typed_noop_remove { ++ typedef Type value_type; ++ }; ++ template struct int_hash : int_hash_base { ++ }; ++ template struct default_hash_traits : T { ++ }; ++ template struct simple_hashmap_traits { ++ typedef typename H::value_type key_type; ++ static inline hashval_t hash (const key_type &); ++ }; ++ template struct xcallocator { ++ }; ++ template class Allocator = xcallocator> class hash_table { ++ typedef typename Descriptor::value_type value_type; ++ typedef typename Descriptor::compare_type compare_type; ++ public: explicit hash_table (size_t, bool ggc = false, bool sanitize_eq_and_hash = true, bool gather_mem_stats = 0, mem_alloc_origin origin = HASH_TABLE_ORIGIN ); ++ value_type *find_slot_with_hash (const compare_type &comparable, hashval_t hash, enum insert_option insert); ++ }; ++ template, Value> > class hash_map; ++ class mem_location { ++ }; ++ const size_t default_hash_map_size = 13; ++ template class hash_map { ++ typedef typename Traits::key_type Key; ++ struct hash_entry { ++ Value m_value; ++ typedef hash_entry value_type; ++ typedef Key compare_type; ++ }; ++ public: explicit hash_map (size_t n = default_hash_map_size, bool ggc = false, bool sanitize_eq_and_hash = true, bool gather_mem_stats = 0 ) : m_table (n, ggc, sanitize_eq_and_hash, gather_mem_stats, HASH_MAP_ORIGIN ) { ++ } ++ Value &get_or_insert (const Key &k, bool *existed = nullptr) { ++ hash_entry *e = m_table.find_slot_with_hash (k, Traits::hash (k), INSERT); ++ return e->m_value; ++ } ++ hash_table m_table; ++ }; ++ enum optgroup_flag { ++ OPTGROUP_NONE = 0, OPTGROUP_IPA = (1 << 1), OPTGROUP_LOOP = (1 << 2), OPTGROUP_INLINE = (1 << 3), OPTGROUP_OMP = (1 << 4), OPTGROUP_VEC = (1 << 5), OPTGROUP_OTHER = (1 << 6), OPTGROUP_ALL = (OPTGROUP_IPA | OPTGROUP_LOOP | OPTGROUP_INLINE | OPTGROUP_OMP | OPTGROUP_VEC | OPTGROUP_OTHER) }; ++ typedef enum optgroup_flag optgroup_flags_t; ++ enum reorder_blocks_algorithm { ++ }; ++ enum tree_node_structure_enum { ++ TS_BASE, TS_TYPED, TS_COMMON, TS_INT_CST, TS_POLY_INT_CST, TS_REAL_CST, TS_FIXED_CST, TS_VECTOR, TS_STRING, TS_COMPLEX, TS_IDENTIFIER, TS_DECL_MINIMAL, TS_DECL_COMMON, TS_DECL_WRTL, TS_DECL_NON_COMMON, TS_DECL_WITH_VIS, TS_FIELD_DECL, TS_VAR_DECL, TS_PARM_DECL, TS_LABEL_DECL, TS_RESULT_DECL, TS_CONST_DECL, TS_TYPE_DECL, TS_FUNCTION_DECL, TS_TRANSLATION_UNIT_DECL, TS_TYPE_COMMON, TS_TYPE_WITH_LANG_SPECIFIC, TS_TYPE_NON_COMMON, TS_LIST, TS_VEC, TS_EXP, TS_SSA_NAME, TS_BLOCK, TS_BINFO, TS_STATEMENT_LIST, TS_CONSTRUCTOR, TS_OMP_CLAUSE, TS_OPTIMIZATION, TS_TARGET_OPTION, LAST_TS_ENUM }; ++ struct tree_base { ++ union { ++ struct { ++ } ++ bits; ++ } ++ u; ++ }; ++ struct tree_typed { ++ }; ++ inline const_tree contains_struct_check (const_tree __t, const enum tree_node_structure_enum __s, const char *__f, int __l, const char *__g) { ++ } ++ struct gimple { ++ }; ++ typedef enum { ++ TV_NONE, TV_TOTAL, TV_PHASE_SETUP, TV_PHASE_PARSING, TV_PHASE_DEFERRED, TV_PHASE_LATE_PARSING_CLEANUPS, TV_PHASE_OPT_GEN, TV_PHASE_LATE_ASM, TV_PHASE_STREAM_IN, TV_PHASE_STREAM_OUT, TV_PHASE_FINALIZE, TV_NAME_LOOKUP, TV_OVERLOAD, TV_GC, TV_DUMP, TV_PCH_SAVE, TV_PCH_CPP_SAVE, TV_PCH_PTR_REALLOC, TV_PCH_PTR_SORT, TV_PCH_RESTORE, TV_PCH_CPP_RESTORE, TV_CGRAPH, TV_CGRAPHOPT, TV_CGRAPH_FUNC_EXPANSION, TV_CGRAPH_IPA_PASSES, TV_IPA_ODR, TV_IPA_FNSUMMARY, TV_IPA_UNREACHABLE, TV_IPA_INHERITANCE, TV_IPA_VIRTUAL_CALL, TV_IPA_DEVIRT, TV_IPA_CONSTANT_PROP, TV_IPA_INLINING, TV_IPA_FNSPLIT, TV_IPA_COMDATS, TV_IPA_OPT, TV_IPA_LTO_DECOMPRESS, TV_IPA_LTO_COMPRESS, TV_IPA_LTO_OUTPUT, TV_IPA_LTO_GIMPLE_IN, TV_IPA_LTO_GIMPLE_OUT, TV_IPA_LTO_DECL_IN, TV_IPA_LTO_DECL_OUT, TV_IPA_LTO_CTORS_IN, TV_IPA_LTO_CTORS_OUT, TV_IPA_LTO_CGRAPH_IO, TV_IPA_LTO_DECL_MERGE, TV_IPA_LTO_CGRAPH_MERGE, TV_LTO, TV_WHOPR_WPA, TV_WHOPR_WPA_IO, TV_WHOPR_PARTITIONING, TV_WHOPR_LTRANS, TV_IPA_REFERENCE, TV_IPA_PROFILE, TV_IPA_AUTOFDO, TV_IPA_PURE_CONST, TV_IPA_ICF, TV_IPA_PTA, TV_IPA_SRA, TV_IPA_FREE_LANG_DATA, TV_IPA_FREE_INLINE_SUMMARY, TV_IPA_MODREF, TV_CFG, TV_CLEANUP_CFG, TV_CFG_VERIFY, TV_DELETE_TRIVIALLY_DEAD, TV_DF_SCAN, TV_DF_MD, TV_DF_RD, TV_DF_LR, TV_DF_LIVE, TV_DF_MIR, TV_DF_CHAIN, TV_DF_WORD_LR, TV_DF_NOTE, TV_REG_STATS, TV_ALIAS_ANALYSIS, TV_ALIAS_STMT_WALK, TV_REG_SCAN, TV_REBUILD_JUMP, TV_CPP, TV_LEX, TV_PARSE_GLOBAL, TV_PARSE_STRUCT, TV_PARSE_ENUM, TV_PARSE_FUNC, TV_PARSE_INLINE, TV_PARSE_INMETH, TV_TEMPLATE_INST, TV_CONSTEXPR, TV_CONSTRAINT_NORM, TV_CONSTRAINT_SAT, TV_CONSTRAINT_SUB, TV_MODULE_IMPORT, TV_MODULE_EXPORT, TV_MODULE_MAPPER, TV_FLATTEN_INLINING, TV_EARLY_INLINING, TV_INLINE_PARAMETERS, TV_INTEGRATION, TV_TREE_GIMPLIFY, TV_TREE_EH, TV_TREE_CFG, TV_TREE_CLEANUP_CFG, TV_TREE_TAIL_MERGE, TV_TREE_VRP, TV_TREE_VRP_THREADER, TV_TREE_EARLY_VRP, TV_TREE_FAST_VRP, TV_TREE_ARRAY_BOUNDS, TV_TREE_COPY_PROP, TV_FIND_REFERENCED_VARS, TV_TREE_PTA, TV_TREE_SSA_OTHER, TV_TREE_INTO_SSA, TV_TREE_SSA_INCREMENTAL, TV_TREE_OPS, TV_TREE_SSA_DOMINATOR_OPTS, TV_TREE_SSA_THREAD_JUMPS, TV_TREE_SRA, TV_ISOLATE_ERRONEOUS_PATHS, TV_TREE_CCP, TV_TREE_SPLIT_EDGES, TV_TREE_REASSOC, TV_TREE_PRE, TV_TREE_FRE, TV_TREE_RPO_VN, TV_TREE_SINK, TV_TREE_PHIOPT, TV_TREE_BACKPROP, TV_TREE_FORWPROP, TV_TREE_PHIPROP, TV_TREE_DCE, TV_TREE_CD_DCE, TV_TREE_CALL_CDCE, TV_TREE_DSE, TV_TREE_MERGE_PHI, TV_TREE_LOOP, TV_TREE_NOLOOP, TV_TREE_LOOP_BOUNDS, TV_LIM, TV_LINTERCHANGE, TV_TREE_LOOP_IVCANON, TV_SCEV_CONST, TV_TREE_LOOP_UNSWITCH, TV_LOOP_SPLIT, TV_LOOP_JAM, TV_COMPLETE_UNROLL, TV_SCALAR_CLEANUP, TV_TREE_PARALLELIZE_LOOPS, TV_TREE_VECTORIZATION, TV_TREE_SLP_VECTORIZATION, TV_GRAPHITE, TV_GRAPHITE_TRANSFORMS, TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN, TV_TREE_LOOP_DISTRIBUTION, TV_CHECK_DATA_DEPS, TV_TREE_PREFETCH, TV_TREE_LOOP_IVOPTS, TV_PREDCOM, TV_TREE_CH, TV_TREE_SSA_UNCPROP, TV_TREE_NRV, TV_TREE_COPY_RENAME, TV_TREE_SSA_VERIFY, TV_TREE_STMT_VERIFY, TV_TREE_SWITCH_CONVERSION, TV_TREE_SWITCH_LOWERING, TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_POW, TV_TREE_WIDEN_MUL, TV_TRANS_MEM, TV_TREE_STRLEN, TV_TREE_MODREF, TV_TREE_ASSUMPTIONS, TV_CGRAPH_VERIFY, TV_DOM_FRONTIERS, TV_DOMINANCE, TV_CONTROL_DEPENDENCES, TV_OUT_OF_SSA, TV_VAR_EXPAND, TV_EXPAND, TV_POST_EXPAND, TV_VARCONST, TV_LOWER_SUBREG, TV_JUMP, TV_FWPROP, TV_CSE, TV_DCE, TV_DSE1, TV_DSE2, TV_LOOP, TV_LOOP_INIT, TV_LOOP_VERSIONING, TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNROLL, TV_LOOP_DOLOOP, TV_LOOP_FINI, TV_CPROP, TV_PRE, TV_HOIST, TV_LSM, TV_TRACER, TV_WEB, TV_AUTO_INC_DEC, TV_CSE2, TV_BRANCH_PROB, TV_COMBINE, TV_IFCVT, TV_MODE_SWITCH, TV_SMS, TV_LIVE_RANGE_SHRINKAGE, TV_SCHED, TV_EARLY_REMAT, TV_IRA, TV_LRA, TV_LRA_ELIMINATE, TV_LRA_INHERITANCE, TV_LRA_CREATE_LIVE_RANGES, TV_LRA_ASSIGN, TV_LRA_COALESCE, TV_LRA_REMAT, TV_RELOAD, TV_RELOAD_CSE_REGS, TV_GCSE_AFTER_RELOAD, TV_REE, TV_THREAD_PROLOGUE_AND_EPILOGUE, TV_IFCVT2, TV_SPLIT_PATHS, TV_COMBINE_STACK_ADJUST, TV_PEEPHOLE2, TV_RENAME_REGISTERS, TV_SCHED_FUSION, TV_CPROP_REGISTERS, TV_SCHED2, TV_MACH_DEP, TV_DBR_SCHED, TV_REORDER_BLOCKS, TV_SHORTEN_BRANCH, TV_REG_STACK, TV_FINAL, TV_VAROUT, TV_SYMOUT, TV_VAR_TRACKING, TV_VAR_TRACKING_DATAFLOW, TV_VAR_TRACKING_EMIT, TV_TREE_IFCOMBINE, TV_TREE_IF_TO_SWITCH, TV_TREE_UNINIT, TV_PLUGIN_INIT, TV_PLUGIN_RUN, TV_GIMPLE_SLSR, TV_GIMPLE_STORE_MERGING, TV_VTABLE_VERIFICATION, TV_TREE_UBSAN, TV_INITIALIZE_RTL, TV_GIMPLE_LADDRESS, TV_TREE_LOOP_IFCVT, TV_WARN_ACCESS, TV_EARLY_LOCAL, TV_OPTIMIZE, TV_REST_OF_COMPILATION, TV_POSTRELOAD, TV_LATE_COMPILATION, TV_REMOVE_UNUSED, TV_ADDRESS_TAKEN, TV_TODO, TV_VERIFY_LOOP_CLOSED, TV_VERIFY_RTL_SHARING, TV_REBUILD_FREQUENCIES, TV_REPAIR_LOOPS, TV_JIT_REPLAY, TV_ASSEMBLE, TV_LINK, TV_LOAD, TV_JIT_ACQUIRING_MUTEX, TV_JIT_CLIENT_CODE, TV_ANALYZER, TV_ANALYZER_SUPERGRAPH, TV_ANALYZER_STATE_PURGE, TV_ANALYZER_PLAN, TV_ANALYZER_SCC, TV_ANALYZER_WORKLIST, TV_ANALYZER_INFINITE_LOOPS, TV_ANALYZER_DUMP, TV_ANALYZER_DIAGNOSTICS, TV_ANALYZER_SHORTEST_PATHS, TIMEVAR_LAST } ++ timevar_id_t; ++ enum opt_pass_type { ++ GIMPLE_PASS, RTL_PASS, SIMPLE_IPA_PASS, IPA_PASS }; ++ struct pass_data { ++ enum opt_pass_type type; ++ const char *name; ++ optgroup_flags_t optinfo_flags; ++ timevar_id_t tv_id; ++ unsigned int properties_required; ++ unsigned int properties_provided; ++ unsigned int properties_destroyed; ++ unsigned int todo_flags_start; ++ unsigned int todo_flags_finish; ++ }; ++ namespace gcc { ++ class context; ++ } ++ class opt_pass : public pass_data { ++ protected: opt_pass (const pass_data&, gcc::context *); ++ }; ++ class ipa_opt_pass_d : public opt_pass { ++ public: void (*generate_summary) (void); ++ void (*write_summary) (void); ++ void (*read_summary) (void); ++ void (*write_optimization_summary) (void); ++ void (*read_optimization_summary) (void); ++ void (*stmt_fixup) (struct cgraph_node *, gimple **); ++ unsigned int function_transform_todo_flags_start; ++ unsigned int (*function_transform) (struct cgraph_node *); ++ void (*variable_transform) (varpool_node *); ++ protected: ipa_opt_pass_d (const pass_data& data, gcc::context *ctxt, void (*generate_summary) (void), void (*write_summary) (void), void (*read_summary) (void), void (*write_optimization_summary) (void), void (*read_optimization_summary) (void), void (*stmt_fixup) (struct cgraph_node *, gimple **), unsigned int function_transform_todo_flags_start, unsigned int (*function_transform) (struct cgraph_node *), void (*variable_transform) (varpool_node *)) : opt_pass (data, ctxt), generate_summary (generate_summary), write_summary (write_summary), read_summary (read_summary), write_optimization_summary (write_optimization_summary), read_optimization_summary (read_optimization_summary), stmt_fixup (stmt_fixup), function_transform_todo_flags_start (function_transform_todo_flags_start), function_transform (function_transform), variable_transform (variable_transform) { ++ } ++ }; ++ struct symtab_node { ++ struct lto_file_decl_data * lto_file_data; ++ }; ++ struct cgraph_node : public symtab_node { ++ cgraph_edge *callees; ++ cgraph_edge *indirect_calls; ++ }; ++ class cgraph_edge { ++ public: friend struct cgraph_node; ++ inline int get_uid () { ++ return m_uid; ++ } ++ cgraph_edge *next_callee; ++ private: int m_uid; ++ }; ++ template class function_summary; ++ class symbol_table { ++ }; ++ template class function_summary_base { ++ }; ++ template class function_summary : public function_summary_base { ++ T* get (cgraph_node *node) __attribute__ ((__pure__)) { ++ } ++ }; ++ template class call_summary_base { ++ }; ++ template class call_summary { ++ }; ++ template class call_summary : public call_summary_base { ++ public: call_summary (symbol_table *symtab, bool ggc = false ) : call_summary_base (symtab, call_summary::symtab_removal, call_summary::symtab_duplication ), m_ggc (ggc), m_map (13, ggc, true, 0 ) { ++ } ++ T* get_create (cgraph_edge *edge) { ++ bool existed; ++ T **v = &m_map.get_or_insert (edge->get_uid (), &existed); ++ return *v; ++ } ++ protected: bool m_ggc; ++ typedef int_hash map_hash; ++ hash_map m_map; ++ }; ++ enum lto_section_type { ++ LTO_section_decls = 0, LTO_section_function_body, LTO_section_static_initializer, LTO_section_symtab, LTO_section_symtab_extension, LTO_section_refs, LTO_section_asm, LTO_section_jump_functions, LTO_section_ipa_pure_const, LTO_section_ipa_reference, LTO_section_ipa_profile, LTO_section_symtab_nodes, LTO_section_opts, LTO_section_cgraph_opt_sum, LTO_section_ipa_fn_summary, LTO_section_ipcp_transform, LTO_section_ipa_icf, LTO_section_offload_table, LTO_section_mode_table, LTO_section_lto, LTO_section_ipa_sra, LTO_section_odr_types, LTO_section_ipa_modref, LTO_N_SECTION_TYPES }; ++ class lto_input_block { ++ public: lto_input_block (const char *data_, unsigned int p_, unsigned int len_, const lto_file_decl_data *file_data_) : data (data_), file_data (file_data_), p (p_), len (len_) { ++ } ++ lto_input_block (const char *data_, unsigned int len_, const lto_file_decl_data *file_data_) : data (data_), file_data (file_data_), p (0), len (len_) { ++ } ++ const char *data; ++ const lto_file_decl_data *file_data; ++ unsigned int p; ++ unsigned int len; ++ }; ++ struct lto_simple_header { ++ int32_t main_size; ++ }; ++ struct lto_simple_header_with_strings : lto_simple_header { ++ }; ++ struct lto_function_header : lto_simple_header_with_strings { ++ int32_t cfg_size; ++ }; ++ typedef struct lto_symtab_encoder_d *lto_symtab_encoder_t; ++ struct lto_symtab_encoder_iterator { ++ }; ++ struct lto_out_decl_state { ++ lto_symtab_encoder_t symtab_node_encoder; ++ }; ++ struct output_block { ++ struct lto_out_decl_state *decl_state; ++ }; ++ extern struct lto_file_decl_data **lto_get_file_decl_data (void); ++ extern const char *lto_get_summary_section_data (struct lto_file_decl_data *, enum lto_section_type, size_t *); ++ extern struct output_block *create_output_block (enum lto_section_type); ++ inline bool lsei_end_p (lto_symtab_encoder_iterator lsei) { ++ } ++ inline void lsei_next_function_in_partition (lto_symtab_encoder_iterator *lsei) { ++ } ++ inline lto_symtab_encoder_iterator lsei_start_function_in_partition (lto_symtab_encoder_t encoder) { ++ } ++ static unsigned const BITS_PER_BITPACK_WORD = 64; ++ typedef unsigned long long bitpack_word_t; ++ struct bitpack_d { ++ unsigned pos; ++ bitpack_word_t word; ++ void *stream; ++ }; ++ unsigned long long streamer_read_uhwi (class lto_input_block *); ++ inline struct bitpack_d bitpack_create (struct lto_output_stream *s) { ++ } ++ inline struct bitpack_d streamer_read_bitpack (class lto_input_block *ib) { ++ struct bitpack_d bp; ++ return bp; ++ } ++ inline bitpack_word_t bp_unpack_value (struct bitpack_d *bp, unsigned nbits) { ++ bitpack_word_t mask, val; ++ int pos = bp->pos; ++ mask = (nbits == BITS_PER_BITPACK_WORD ? (bitpack_word_t) -1 : ((bitpack_word_t) 1 << nbits) - 1); ++ if (pos + nbits > BITS_PER_BITPACK_WORD) { ++ bp->word = val = streamer_read_uhwi ((class lto_input_block *)bp->stream); ++ bp->pos = nbits; ++ return val & mask; ++ } ++ val = bp->word; ++ val >>= pos; ++ bp->pos = pos + nbits; ++ return val & mask; ++ } ++ class ipcp_transformation; ++ class ipa_argagg_value_list { ++ template void remove_argaggs_if (pred_function &&predicate) { ++ } ++ }; ++ inline ipcp_transformation * ipcp_get_transformation_summary (cgraph_node *node) { ++ } ++ struct param_access { ++ }; ++ struct isra_param_desc { ++ vec *accesses; ++ unsigned remove_only_when_retval_removed : 1; ++ }; ++ class isra_func_summary { ++ public: isra_func_summary () : m_parameters (nullptr), m_candidate (false), m_returns_value (false), m_return_ignored (false), m_queued (false) { ++ } ++ vec *m_parameters; ++ unsigned m_candidate : 1; ++ unsigned m_returns_value : 1; ++ unsigned m_return_ignored : 1; ++ unsigned m_queued : 1; ++ }; ++ struct isra_param_flow { ++ char length; ++ unsigned char inputs[7]; ++ unsigned aggregate_pass_through : 1; ++ unsigned pointer_pass_through : 1; ++ unsigned safe_to_import_accesses : 1; ++ }; ++ class isra_call_summary { ++ public: isra_call_summary () : m_arg_flow (), m_return_ignored (false), m_return_returned (false), m_bit_aligned_arg (false), m_before_any_store (false) { ++ } ++ auto_vec m_arg_flow; ++ unsigned m_return_ignored : 1; ++ unsigned m_return_returned : 1; ++ unsigned m_bit_aligned_arg : 1; ++ unsigned m_before_any_store : 1; ++ }; ++ class ipa_sra_function_summaries : public function_summary { ++ }; ++ class ipa_sra_call_summaries: public call_summary { ++ }; ++ static ipa_sra_call_summaries *call_sums; ++ namespace { ++ static void verify_splitting_accesses (cgraph_node *node, bool certain_must_exist) { ++ } ++ static void ipa_sra_generate_summary (void) { ++ } ++ static void isra_write_edge_summary (output_block *ob, cgraph_edge *e) { ++ } ++ static void isra_write_node_summary (output_block *ob, cgraph_node *node) { ++ for (cgraph_edge *e = node->callees; ++ e; ++ e = e->next_callee) isra_write_edge_summary (ob, e); ++ } ++ static void ipa_sra_write_summary (void) { ++ struct output_block *ob = create_output_block (LTO_section_ipa_sra); ++ lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder; ++ lto_symtab_encoder_iterator lsei; ++ for (lsei = lsei_start_function_in_partition (encoder); ++ !lsei_end_p (lsei); ++ lsei_next_function_in_partition (&lsei)) { ++ } ++ } ++ static void isra_read_edge_summary (struct lto_input_block *ib, cgraph_edge *cs) { ++ isra_call_summary *csum = call_sums->get_create (cs); ++ unsigned input_count = streamer_read_uhwi (ib); ++ for (unsigned i = 0; ++ i < input_count; ++ i++) { ++ isra_param_flow *ipf = &csum->m_arg_flow[i]; ++ bitpack_d bp = streamer_read_bitpack (ib); ++ for (int j = 0; ++ j < ipf->length; ++ j++) ipf->inputs[j] = bp_unpack_value (&bp, 8); ++ ipf->aggregate_pass_through = bp_unpack_value (&bp, 1); ++ ipf->pointer_pass_through = bp_unpack_value (&bp, 1); ++ ipf->safe_to_import_accesses = bp_unpack_value (&bp, 1); ++ } ++ } ++ static void isra_read_node_info (struct lto_input_block *ib, cgraph_node *node, struct data_in *data_in) { ++ for (cgraph_edge *e = node->indirect_calls; ++ e; ++ e = e->next_callee) isra_read_edge_summary (ib, e); ++ } ++ static void isra_read_summary_section (struct lto_file_decl_data *file_data, const char *data, size_t len) { ++ const struct lto_function_header *header = (const struct lto_function_header *) data; ++ const int cfg_offset = sizeof (struct lto_function_header); ++ const int main_offset = cfg_offset + header->cfg_size; ++ struct data_in *data_in; ++ unsigned int i; ++ unsigned int count; ++ lto_input_block ib_main ((const char *) data + main_offset, header->main_size, file_data); ++ count = streamer_read_uhwi (&ib_main); ++ for (i = 0; ++ i < count; ++ i++) { ++ struct cgraph_node *node; ++ isra_read_node_info (&ib_main, node, data_in); ++ } ++ } ++ static void ipa_sra_read_summary (void) { ++ struct lto_file_decl_data **file_data_vec = lto_get_file_decl_data (); ++ struct lto_file_decl_data *file_data; ++ unsigned int j = 0; ++ while ((file_data = file_data_vec[j++])) { ++ size_t len; ++ const char *data = lto_get_summary_section_data (file_data, LTO_section_ipa_sra, &len); ++ if (data) isra_read_summary_section (file_data, data, len); ++ } ++ } ++ static bool all_callee_accesses_present_p (isra_param_desc *param_desc, isra_param_desc *arg_desc) { ++ unsigned aclen = vec_safe_length (arg_desc->accesses); ++ for (unsigned j = 0; ++ j < aclen; ++ j++) { ++ } ++ } ++ enum acc_prop_kind { ++ ACC_PROP_DONT, ACC_PROP_COPY, ACC_PROP_CERTAIN}; ++ static const char * pull_accesses_from_callee (cgraph_node *caller, isra_param_desc *param_desc, isra_param_desc *arg_desc, unsigned delta_offset, unsigned arg_size, bool *change_p) { ++ unsigned aclen = vec_safe_length (arg_desc->accesses); ++ for (unsigned j = 0; ++ j < aclen; ++ j++) { ++ } ++ } ++ static bool adjust_parameter_descriptions (cgraph_node *node, isra_func_summary *ifs) { ++ unsigned len = vec_safe_length (ifs->m_parameters); ++ for (unsigned i = 0; ++ i < len; ++ i++) { ++ isra_param_desc *desc = &(*ifs->m_parameters)[i]; ++ if (desc->remove_only_when_retval_removed && !ifs->m_return_ignored) { ++ for (const param_access *pa : desc->accesses) { ++ } ++ } ++ } ++ } ++ const pass_data pass_data_ipa_sra = { ++ IPA_PASS, "sra", OPTGROUP_NONE, TV_IPA_SRA, 0, 0, 0, 0, ( (1 << 7) | (1 << 8) ), }; ++ class pass_ipa_sra : public ipa_opt_pass_d { ++ public: pass_ipa_sra (gcc::context *ctxt) : ipa_opt_pass_d (pass_data_ipa_sra, ctxt, ipa_sra_generate_summary, ipa_sra_write_summary, ipa_sra_read_summary, nullptr , nullptr, nullptr, 0, nullptr, nullptr) { ++ } ++ }; ++ } ++ ipa_opt_pass_d * make_pass_ipa_sra (gcc::context *ctxt) { ++ return new pass_ipa_sra (ctxt); ++ } ++ ++ +diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c413.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c413.C +new file mode 100644 +index 00000000000..13eb1ff4d89 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c413.C +@@ -0,0 +1,38 @@ ++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ ++/* { dg-do compile } */ ++ ++struct Trans_NS_WTF_HashMap ++{ ++ template void set(int *, V); ++}; ++ ++struct AscentAndDescent ++{ ++ float ascent; ++ float descent; ++}; ++ ++bool isRubyAnnotationBox(); ++ ++struct EnclosingAscentDescent ++{ ++ float ascent; ++ float descent; ++}; ++ ++AscentAndDescent primaryFontMetricsForInlineBox(); ++int adjustInlineBoxHeightsForLineBoxContainIfApplicable___trans_tmp_1; ++ ++void adjustInlineBoxHeightsForLineBoxContainIfApplicable() ++{ ++ Trans_NS_WTF_HashMap inlineBoxBoundsMap; ++ auto ensureFontMetricsBasedHeight = [&](auto inlineBox) ++ { ++ auto [ascent, descent] = primaryFontMetricsForInlineBox(); ++ auto halfLeading = isRubyAnnotationBox() ? ascent + descent : 0.f; ++ ascent += halfLeading; ++ inlineBoxBoundsMap.set(&inlineBox, EnclosingAscentDescent{ascent, descent}); ++ }; ++ ensureFontMetricsBasedHeight( ++ adjustInlineBoxHeightsForLineBoxContainIfApplicable___trans_tmp_1); ++} +diff --git a/src/gcc/testsuite/g++.target/sh/torture/sh-torture.exp b/src/gcc/testsuite/g++.target/sh/torture/sh-torture.exp +new file mode 100644 +index 00000000000..8be516ebd25 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/sh-torture.exp +@@ -0,0 +1,299 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# GCC testsuite that uses the `gcc-dg.exp' driver, looping over ++# optimization options. ++ ++# Exit immediately if this isn't an SH target. ++if { ![istarget sh*-*-*] } then { ++ return ++} ++ ++# Load support procs. ++load_lib g++-dg.exp ++ ++# Return 1 if target is SH2A ++proc check_effective_target_sh2a { } { ++ return [check_no_compiler_messages sh2a object { ++ #ifndef __SH2A__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is SH1 ++proc check_effective_target_sh1 { } { ++ return [check_no_compiler_messages sh1 object { ++ #ifndef __SH1__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is SH4A ++proc check_effective_target_sh4a { } { ++ return [check_no_compiler_messages sh4a object { ++ #ifndef __SH4A__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is big endian ++proc check_effective_target_big_endian { } { ++ return [check_no_compiler_messages big_endian object { ++ #if __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is little endian ++proc check_effective_target_little_endian { } { ++ return [check_no_compiler_messages little_endian object { ++ #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has any FPU (single or double precision) ++proc check_effective_target_any_fpu { } { ++ return [check_no_compiler_messages any_fpu object { ++ #ifndef __SH_FPU_ANY__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has a double precision FPU which is allowed to be ++# used by the compiler as such. ++proc check_effective_target_double_fpu { } { ++ return [check_no_compiler_messages double_fpu object { ++ #ifndef __SH_FPU_DOUBLE__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has a double precision FPU but it is only being used ++# in single precision mode by the compiler ++proc check_effective_target_use_single_only_fpu { } { ++ return [check_no_compiler_messages use_single_only_fpu object { ++ #if !(defined (__SH2A_SINGLE_ONLY__) \ ++ || defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has an FPU and the default mode is single ++proc check_effective_target_default_single_fpu { } { ++ return [check_no_compiler_messages default_single_fpu object { ++ #if !(defined (__SH2E__) || defined (__SH3E__) \ ++ || defined (__SH2A_SINGLE__) \ ++ || defined (__SH2A_SINGLE_ONLY__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has no FPU ++proc check_effective_target_no_fpu { } { ++ return [check_no_compiler_messages no_fpu object { ++ #ifdef __SH_FPU_ANY__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++ ++# Return 1 if the target has XF regs ++proc check_effective_target_has_xf_regs { } { ++ return [check_no_compiler_messages has_xf_regs object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++ ++# Return 1 if the target can do the fsca insn ++proc check_effective_target_has_fsca { } { ++ return [check_no_compiler_messages has_fsca object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do the fsrra insn ++proc check_effective_target_has_fsrra { } { ++ return [check_no_compiler_messages has_fsrra object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do the fpchg insn ++proc check_effective_target_has_fpchg { } { ++ return [check_no_compiler_messages has_fpchg object { ++ #if !(defined (__SH4A__) && defined (__SH_FPU_ANY__) \ ++ && !defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do dynamic shifts ++proc check_effective_target_has_dyn_shift { } { ++ return [check_no_compiler_messages has_dyn_shift object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH2A__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the mfmovd option is enabled ++proc check_effective_target_fmovd_enabled { } { ++ return [check_no_compiler_messages fmovd_enabled object { ++ #ifndef __FMOVD_ENABLED__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target supports privileged mode ++proc check_effective_target_has_privileged { } { ++ return [check_no_compiler_messages has_privileged object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target supports the prefetch insn ++proc check_effective_target_has_pref { } { ++ return [check_no_compiler_messages has_pref object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target does banked r0..r7 regs type of ISRs ++proc check_effective_target_banked_r0r7_isr { } { ++ return [check_no_compiler_messages banked_r0r7_isr object { ++ #if !(defined (__SH3__) || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target does stack only type of ISRs ++proc check_effective_target_stack_save_isr { } { ++ return [check_no_compiler_messages stack_save_isr object { ++ #if !(defined (__SH1__) \ ++ || defined (__SH2__) \ ++ || defined (__SH2E__) \ ++ || defined (__SH2A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target supports atomic-model=soft-gusa ++proc check_effective_target_atomic_model_soft_gusa_available { } { ++ return [check_no_compiler_messages atomic_model_soft_gusa_available object { ++ int x = 0; ++ } "-matomic-model=soft-gusa"] ++} ++ ++# Return 1 if target supports atomic-model=soft-tcb ++proc check_effective_target_atomic_model_soft_tcb_available { } { ++ return [check_no_compiler_messages atomic_model_soft_tcb_available object { ++ int x = 0; ++ } "-matomic-model=soft-tcb,gbr-offset=0"] ++} ++ ++# Return 1 if target supports atomic-model=soft-imask ++proc check_effective_target_atomic_model_soft_imask_available { } { ++ return [check_no_compiler_messages atomic_model_soft_imask_available object { ++ int x = 0; ++ } "-matomic-model=soft-imask -mno-usermode"] ++} ++ ++# Return 1 if target supports atomic-model=hard-llcs ++proc check_effective_target_atomic_model_hard_llcs_available { } { ++ return [check_no_compiler_messages atomic_model_hard_llcs_available object { ++ int x = 0; ++ } "-matomic-model=hard-llcs"] ++} ++ ++# If a testcase doesn't have special options, use these. ++global DEFAULT_CXXFLAGS ++if ![info exists DEFAULT_CXXFLAGS] then { ++ set DEFAULT_CXXFLAGS " -pedantic-errors" ++} ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" $DEFAULT_CXXFLAGS ++ ++ ++# All done. ++dg-finish +diff --git a/src/gcc/testsuite/gcc.target/sh/pr55212-c248.c b/src/gcc/testsuite/gcc.target/sh/pr55212-c248.c +new file mode 100644 +index 00000000000..94fd6afaab3 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/sh/pr55212-c248.c +@@ -0,0 +1,31 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -m4 -mlra -ffixed-r7 -ffixed-r8 -ffixed-r9 -ffixed-r10 -ffixed-r11 -ffixed-r12 -ffixed-r13" } */ ++#include ++#include ++ ++typedef struct { int c[64]; } obj; ++obj obj0; ++obj obj1; ++ ++void __attribute__ ((noinline)) ++bar (int a, int b, int c, int d, obj *q) ++{ ++ if (q->c[0] != 0x12345678 || q->c[1] != 0xdeadbeef) ++ abort (); ++} ++ ++void foo (obj *p) ++{ ++ obj bobj; ++ bobj = *p; ++ bar (0, 0, 0, 0, &bobj); ++} ++ ++int ++main () ++{ ++ obj0.c[0] = 0x12345678; ++ obj0.c[1] = 0xdeadbeef; ++ foo (&obj0); ++ exit (0); ++} +-- +2.50.0 + diff --git a/patches/sh-math-fixes.diff b/patches/sh-math-fixes.diff new file mode 100644 index 0000000..1a46519 --- /dev/null +++ b/patches/sh-math-fixes.diff @@ -0,0 +1,128 @@ +From f1496a2ebee717137ba0b3c96aa4cbf8c96f51ec Mon Sep 17 00:00:00 2001 +From: Jiaxun Yang +Date: Sat, 19 Apr 2025 08:07:58 -0600 +Subject: [PATCH] [PATCH v2] sh: Correct NaN signalling bit and propagation + rules [PR111814] + +As per architecture, SuperH has a reversed NaN signalling bit +vs IEEE754-2008, it also has a NaN propgation rule similar to +MIPS style. + +Use mips style float format and mode for all float types, and +correct sfp-machine header accordingly. + + PR target/111814 + +gcc/ChangeLog: + + * config/sh/sh-modes.def (RESET_FLOAT_FORMAT): Use mips format. + (FLOAT_MODE): Use mips mode. + +libgcc/ChangeLog: + + * config/sh/sfp-machine.h (_FP_NANFRAC_B): Reverse signaling bit. + (_FP_NANFRAC_H): Likewise. + (_FP_NANFRAC_S): Likewise. + (_FP_NANFRAC_D): Likewise. + (_FP_NANFRAC_Q): Likewise. + (_FP_KEEPNANFRACP): Enable for target. + (_FP_QNANNEGATEDP): Enable for target. + (_FP_CHOOSENAN): Port from MIPS. + +gcc/testsuite/ChangeLog: + + * gcc.target/sh/pr111814.c: New test. +--- + gcc/config/sh/sh-modes.def | 6 +++++ + gcc/testsuite/gcc.target/sh/pr111814.c | 7 +++++ + libgcc/config/sh/sfp-machine.h | 36 ++++++++++++++++---------- + 3 files changed, 36 insertions(+), 13 deletions(-) + create mode 100644 gcc/testsuite/gcc.target/sh/pr111814.c + +diff --git a/src/gcc/config/sh/sh-modes.def b/src/gcc/config/sh/sh-modes.def +index 80650b429e4..e31ae694a48 100644 +--- a/src/gcc/config/sh/sh-modes.def ++++ b/src/gcc/config/sh/sh-modes.def +@@ -17,6 +17,12 @@ You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ + ++/* SH has the same reversed quiet bit as MIPS. */ ++RESET_FLOAT_FORMAT (SF, mips_single_format); ++RESET_FLOAT_FORMAT (DF, mips_double_format); ++/* TFmode: IEEE quad floating point (software). */ ++FLOAT_MODE (TF, 16, mips_quad_format); ++ + /* Vector modes. */ + VECTOR_MODE (INT, QI, 2); /* V2QI */ + VECTOR_MODES (INT, 4); /* V4QI V2HI */ +diff --git a/src/gcc/testsuite/gcc.target/sh/pr111814.c b/src/gcc/testsuite/gcc.target/sh/pr111814.c +new file mode 100644 +index 00000000000..a88e5d786ba +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/sh/pr111814.c +@@ -0,0 +1,7 @@ ++/* Verify that __builtin_nan("") produces a constant matches ++ architecture specification. */ ++/* { dg-do compile } */ ++ ++double d = __builtin_nan (""); ++ ++/* { dg-final { scan-assembler "\t.long\t-1\n\t.long\t2146959359\n" } } */ +diff --git a/src/libgcc/config/sh/sfp-machine.h b/src/libgcc/config/sh/sfp-machine.h +index 66984d45755..67bc41516a3 100644 +--- a/src/libgcc/config/sh/sfp-machine.h ++++ b/src/libgcc/config/sh/sfp-machine.h +@@ -39,11 +39,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + #define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) + #define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) + +-#define _FP_NANFRAC_B _FP_QNANBIT_B +-#define _FP_NANFRAC_H _FP_QNANBIT_H +-#define _FP_NANFRAC_S _FP_QNANBIT_S +-#define _FP_NANFRAC_D _FP_QNANBIT_D, 0 +-#define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0, 0, 0 ++#define _FP_NANFRAC_B (_FP_QNANBIT_B - 1) ++#define _FP_NANFRAC_H (_FP_QNANBIT_H - 1) ++#define _FP_NANFRAC_S (_FP_QNANBIT_S - 1) ++#define _FP_NANFRAC_D (_FP_QNANBIT_D - 1), -1 ++#define _FP_NANFRAC_Q (_FP_QNANBIT_Q - 1), -1, -1, -1 + + /* The type of the result of a floating point comparison. This must + match __libgcc_cmp_return__ in GCC for the target. */ +@@ -56,14 +56,24 @@ typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__))); + #define _FP_NANSIGN_D 0 + #define _FP_NANSIGN_Q 0 + +-#define _FP_KEEPNANFRACP 0 +-#define _FP_QNANNEGATEDP 0 +- +-#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ +- do { \ +- R##_s = _FP_NANSIGN_##fs; \ +- _FP_FRAC_SET_##wc(R,_FP_NANFRAC_##fs); \ +- R##_c = FP_CLS_NAN; \ ++#define _FP_KEEPNANFRACP 1 ++#define _FP_QNANNEGATEDP 1 ++ ++/* X is chosen unless one of the NaNs is sNaN. */ ++# define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ ++ do { \ ++ if ((_FP_FRAC_HIGH_RAW_##fs(X) | \ ++ _FP_FRAC_HIGH_RAW_##fs(Y)) & _FP_QNANBIT_##fs) \ ++ { \ ++ R##_s = _FP_NANSIGN_##fs; \ ++ _FP_FRAC_SET_##wc(R,_FP_NANFRAC_##fs); \ ++ } \ ++ else \ ++ { \ ++ R##_s = X##_s; \ ++ _FP_FRAC_COPY_##wc(R,X); \ ++ } \ ++ R##_c = FP_CLS_NAN; \ + } while (0) + + #define _FP_TININESS_AFTER_ROUNDING 1 +-- +2.50.0 + diff --git a/patches/skip-bootstrap-multilib.diff b/patches/skip-bootstrap-multilib.diff new file mode 100644 index 0000000..a07b8c1 --- /dev/null +++ b/patches/skip-bootstrap-multilib.diff @@ -0,0 +1,22 @@ +# DP: Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -492,6 +492,17 @@ esac + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` + ++# stage1 and stage2 builds of the non-default multilib configurations ++# are not needed; skip these to save some build time. ++if [ -f ../../stage_final ] && [ -f ../../stage_current ]; then ++ stage_final=`cat ../../stage_final` ++ stage_current=`cat ../../stage_current` ++ if [ "$stage_current" != "$stage_final" ]; then ++ echo "Skip `basename $ml_realsrcdir` non-default multilibs for bootstrap stage $stage_current" ++ multidirs= ++ fi ++fi ++ + # Add code to library's top level makefile to handle building the multilib + # subdirs. + diff --git a/patches/sparc64-biarch-long-double-128.diff b/patches/sparc64-biarch-long-double-128.diff new file mode 100644 index 0000000..7c80575 --- /dev/null +++ b/patches/sparc64-biarch-long-double-128.diff @@ -0,0 +1,33 @@ +# DP: Fix --with-long-double-128 for sparc32 when defaulting to 64-bit. + +On sparc, the --with-long-double-128 option doesn't change anything for +a 64-bit compiler, as it always default to 128-bit long doubles. For +a 32/64-bit compiler defaulting to 32-bit this correctly control the +size of long double of the 32-bit compiler, however for a 32/64-bit +compiler defaulting to 64-bit, the built-in specs force the +-mlong-double-64 option. This makes the option useless in this case. + +The patch below fixes that by removing the -mlong-double-64 from the +built-in spec, using the default instead. + +Changelog gcc/ + +2013-12-04 Aurelien Jarno + + * config/sparc/linux64.h (CC1_SPEC): When defaulting to 64-bit, + don't force -mlong-double-64 when -m32 or -mv8plus is given. + +--- a/src/gcc/config/sparc/linux64.h ++++ b/src/gcc/config/sparc/linux64.h +@@ -160,9 +160,9 @@ extern const char *host_detect_local_cpu + #else + #define CC1_SPEC GNU_USER_TARGET_CC1_SPEC ASAN_CC1_SPEC \ + "%{m32:%{m64:%emay not use both -m32 and -m64}} \ +-%{m32:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ ++%{m32:-mptr32 -mno-stack-bias \ + %{!mcpu*:-mcpu=cypress}} \ +-%{mv8plus:-m32 -mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ ++%{mv8plus:-m32 -mptr32 -mno-stack-bias \ + %{!mcpu*:-mcpu=v9}} \ + %{!m32:%{!mcpu*:-mcpu=ultrasparc}} \ + %{!mno-vis:%{!m32:%{!mcpu=v9:-mvis}}}" diff --git a/patches/t-libunwind-elf-Wl-z-defs.diff b/patches/t-libunwind-elf-Wl-z-defs.diff new file mode 100644 index 0000000..082d4d5 --- /dev/null +++ b/patches/t-libunwind-elf-Wl-z-defs.diff @@ -0,0 +1,13 @@ +# DP: strip -z,defs from linker options for internal libunwind. + +--- a/src/libgcc/config/t-libunwind-elf ++++ b/src/libgcc/config/t-libunwind-elf +@@ -31,7 +31,7 @@ SHLIBUNWIND_SONAME = @shlib_base_name@.s + + SHLIBUNWIND_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared \ + -nodefaultlibs -Wl,-h,$(SHLIBUNWIND_SONAME) \ +- -Wl,-z,text -Wl,-z,defs -o $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \ ++ -Wl,-z,text -o $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \ + @multilib_flags@ $(SHLIB_OBJS) -lc && \ + rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \ + if [ -f $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME) ]; then \ diff --git a/patches/testsuite-glibc-warnings.diff b/patches/testsuite-glibc-warnings.diff new file mode 100644 index 0000000..9f28e1d --- /dev/null +++ b/patches/testsuite-glibc-warnings.diff @@ -0,0 +1,16 @@ +# DP: fix testcases that triggered -Wunused-result with glibc +# DP: Author: Steve Beattie +--- + src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c | 2 +- + src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +--- a/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c ++++ b/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c +@@ -1,5 +1,5 @@ + /* { dg-shouldfail "tsan" } */ +-/* { dg-additional-options "-ldl" } */ ++/* { dg-additional-options "-Wno-unused-result -ldl" } */ + + #include + #include diff --git a/patches/testsuite-hardening-format.diff b/patches/testsuite-hardening-format.diff new file mode 100644 index 0000000..a71ff8a --- /dev/null +++ b/patches/testsuite-hardening-format.diff @@ -0,0 +1,304 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: Description: use -Wno-format on tests that cannot be adjusted other ways. +# DP: Author: Kees Cook +# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- + src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c | 1 + + src/gcc/testsuite/g++.dg/abi/pragma-pack1.C | 2 ++ + src/gcc/testsuite/g++.dg/abi/regparm1.C | 1 + + src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C | 1 + + src/gcc/testsuite/g++.dg/torture/pr51436.C | 1 + + src/gcc/testsuite/g++.old-deja/g++.law/weak.C | 2 +- + src/gcc/testsuite/g++.old-deja/g++.other/std1.C | 1 + + src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x | 5 +++++ + src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x | 5 +++++ + src/gcc/testsuite/gcc.dg/charset/builtin2.c | 2 +- + src/gcc/testsuite/gcc.dg/format/format.exp | 2 +- + src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c | 2 +- + src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c | 2 ++ + src/gcc/testsuite/gcc.dg/pr30473.c | 2 +- + src/gcc/testsuite/gcc.dg/pr38902.c | 2 +- + src/gcc/testsuite/gcc.dg/pr59418.c | 2 +- + src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/isolate-4.c | 2 +- + src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m | 2 +- + 28 files changed, 40 insertions(+), 18 deletions(-) + +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 +--- a/src/gcc/testsuite/gcc.dg/charset/builtin2.c ++++ b/src/gcc/testsuite/gcc.dg/charset/builtin2.c +@@ -3,7 +3,7 @@ + + /* { dg-do compile } */ + /* { dg-require-iconv "IBM1047" } */ +-/* { dg-options "-O2 -fexec-charset=IBM1047" } */ ++/* { dg-options "-O2 -fexec-charset=IBM1047 -Wno-format" } */ + /* { dg-final { scan-assembler-not "printf" } } */ + /* { dg-final { scan-assembler-not "fprintf" } } */ + /* { dg-final { scan-assembler-not "sprintf" } } */ +--- a/src/gcc/testsuite/gcc.dg/format/format.exp ++++ b/src/gcc/testsuite/gcc.dg/format/format.exp +@@ -26,7 +26,7 @@ load_lib gcc-dg.exp + load_lib torture-options.exp + + torture-init +-set-torture-options [list { } { -DWIDE } ] ++set-torture-options [list { -Wformat=0 } { -DWIDE -Wformat=0 } ] + + dg-init + gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" "" +--- a/src/gcc/testsuite/gcc.dg/pr30473.c ++++ b/src/gcc/testsuite/gcc.dg/pr30473.c +@@ -1,7 +1,7 @@ + /* PR middle-end/30473 */ + /* Make sure this doesn't ICE. */ + /* { dg-do compile } */ +-/* { dg-options "-O2" } */ ++/* { dg-options "-O2 -Wno-format" } */ + + extern int sprintf (char *, const char *, ...); + +--- a/src/gcc/testsuite/gcc.dg/pr38902.c ++++ b/src/gcc/testsuite/gcc.dg/pr38902.c +@@ -1,6 +1,6 @@ + /* PR target/38902 */ + /* { dg-do run } */ +-/* { dg-options "-O2 -fstack-protector" } */ ++/* { dg-options "-O2 -fstack-protector -Wno-format" } */ + /* { dg-require-effective-target fstack_protector } */ + + #ifdef DEBUG +--- a/src/gcc/testsuite/gcc.dg/pr59418.c ++++ b/src/gcc/testsuite/gcc.dg/pr59418.c +@@ -2,7 +2,7 @@ + /* Reported by Ryan Mansfield */ + + /* { dg-do compile } */ +-/* { dg-options "-Os -g" } */ ++/* { dg-options "-Os -g -Wno-format-zero-length" } */ + /* { dg-options "-mcpu=unset -march=armv7-a+fp -mfloat-abi=hard -Os -g" { target { arm*-*-* && { ! arm_thumb1 } } } } */ + + extern int printf (const char *__format, ...); +--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c ++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c +@@ -1,5 +1,5 @@ + /* { dg-do run } */ +-/* { dg-options "-O2 -fipa-sra -fdump-ipa-sra-details" } */ ++/* { dg-options "-O2 -fipa-sra -fdump-ipa-sra-details -Wformat=0" } */ + + struct bovid + { +--- a/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c ++++ b/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c +@@ -1,3 +1,5 @@ ++/* { dg-lto-options "-Wno-nonnull" } */ ++ + void set_mem_alias_set (); + void emit_push_insn () { + set_mem_alias_set (); +--- a/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c ++++ b/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c +@@ -1,4 +1,5 @@ + /* { dg-do run } */ ++/* { dg-options "-Wformat=0" } */ + #define vector(elcount, type) \ + __attribute__((vector_size((elcount)*sizeof(type)))) type + +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + extern int printf (const char *, ...); + volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + extern int __printf_chk (int, const char *, ...); + volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + typedef struct { int i; } FILE; + FILE *fp; +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + typedef struct { int i; } FILE; + FILE *fp; +--- a/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c ++++ b/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c +@@ -1,7 +1,7 @@ + /* { dg-do run } */ + /* { dg-require-effective-target tls } */ + /* { dg-require-effective-target pthread } */ +-/* { dg-options "-pthread" } */ ++/* { dg-options "-pthread -Wformat=0" } */ + + #include + extern int printf (char *,...); +--- a/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m ++++ b/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m +@@ -2,7 +2,7 @@ + /* Developed by Markus Hitter . */ + /* { dg-do run } */ + /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ +-/* { dg-options "-fconstant-string-class=Foo" } */ ++/* { dg-options "-fconstant-string-class=Foo -Wno-format-security" } */ + /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ + + #include "../../../objc-obj-c++-shared/objc-test-suite-types.h" +--- a/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C ++++ b/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C +@@ -1,5 +1,7 @@ + // PR c++/7046 + ++// { dg-options "-Wformat=0" } ++ + extern "C" int printf (const char *, ...); + + #pragma pack(4) +--- a/src/gcc/testsuite/g++.dg/abi/regparm1.C ++++ b/src/gcc/testsuite/g++.dg/abi/regparm1.C +@@ -1,6 +1,7 @@ + // PR c++/29911 (9381) + // { dg-do run { target i?86-*-* x86_64-*-* } } + // { dg-require-effective-target c++11 } ++// { dg-options "-Wformat=0" } + + extern "C" int printf(const char *, ...); + +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C +@@ -1,5 +1,6 @@ + // PR c++/53202 + // { dg-do run { target c++11 } } ++// { dg-options "-Wformat=0" } + + #include + +--- a/src/gcc/testsuite/g++.dg/torture/pr51436.C ++++ b/src/gcc/testsuite/g++.dg/torture/pr51436.C +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-options "-Wno-nonnull" } */ + /* { dg-additional-options "-Wno-return-type" } */ + + typedef __SIZE_TYPE__ size_t; +--- a/src/gcc/testsuite/g++.old-deja/g++.law/weak.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/weak.C +@@ -1,6 +1,6 @@ + // { dg-do link { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } + // { dg-require-effective-target static } +-// { dg-options "-static" } ++// { dg-options "-static -Wno-nonnull" } + // { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } + + // Bug: g++ fails to instantiate operator<<. +--- a/src/gcc/testsuite/g++.old-deja/g++.other/std1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/std1.C +@@ -1,4 +1,5 @@ + // { dg-do assemble } ++// { dg-options "-Wno-nonnull" } + // Origin: Mark Mitchell + + extern "C" int memcmp (const void * __s1, +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + diff --git a/patches/testsuite-hardening-printf-types.diff b/patches/testsuite-hardening-printf-types.diff new file mode 100644 index 0000000..ffc761d --- /dev/null +++ b/patches/testsuite-hardening-printf-types.diff @@ -0,0 +1,605 @@ +# DP: Description: adjust/standardize printf types to avoid -Wformat warnings. +# DP: Author: Kees Cook +# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 + +--- a/src/gcc/testsuite/g++.dg/ext/align1.C ++++ b/src/gcc/testsuite/g++.dg/ext/align1.C +@@ -16,6 +16,7 @@ float f1 __attribute__ ((aligned)); + int + main (void) + { +- printf ("%d %d\n", __alignof (a1), __alignof (f1)); ++ // "%td" is not allowed by ISO C++, so use %p with a void * cast ++ printf ("%p %p\n", (void*)__alignof (a1), (void*)__alignof (f1)); + return (__alignof (a1) < __alignof (f1)); + } +--- a/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C +@@ -14,7 +14,8 @@ void* new_test::operator new(size_t sz, + { + void *p; + +- printf("%d %d %d\n", sz, count, type); ++ // ISO C++ does not support format size modifier "z", so use a cast ++ printf("%u %d %d\n", (unsigned int)sz, count, type); + + p = new char[sz * count]; + ((new_test *)p)->type = type; +--- a/src/gcc/testsuite/gcc.dg/torture/matrix-2.c ++++ b/src/gcc/testsuite/gcc.dg/torture/matrix-2.c +@@ -42,7 +42,7 @@ main (int argc, char **argv) + } + for (i = 0; i < ARCHnodes; i++) + for (j = 0; j < 3; j++) +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + /*if (i!=1 || j!=1)*/ + /*if (i==1 && j==1) + continue; +@@ -82,14 +82,14 @@ mem_init (void) + for (j = 0; j < 3; j++) + { + vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int)); +- printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int)); ++ printf ("%p %d %d\n",vel[i][j], ARCHnodes1, (int)sizeof (int)); + } + } + for (i = 0; i < ARCHnodes; i++) + { + for (j = 0; j < 3; j++) + { +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + } + } + +@@ -98,7 +98,7 @@ mem_init (void) + { + for (j = 0; j < 3; j++) + { +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + /*for (k = 0; k < ARCHnodes1; k++) + { + vel[i][j][k] = d; +--- a/src/gcc/testsuite/gcc.dg/packed-vla.c ++++ b/src/gcc/testsuite/gcc.dg/packed-vla.c +@@ -17,8 +17,8 @@ int func(int levels) + int b[4]; + } __attribute__ ((__packed__)) foo; + +- printf("foo %d\n", sizeof(foo)); +- printf("bar %d\n", sizeof(bar)); ++ printf("foo %d\n", (int)sizeof(foo)); ++ printf("bar %d\n", (int)sizeof(bar)); + + if (sizeof (foo) != sizeof (bar)) + abort (); +--- a/src/gcc/testsuite/g++.dg/opt/alias2.C ++++ b/src/gcc/testsuite/g++.dg/opt/alias2.C +@@ -30,14 +30,14 @@ public: + + + _Deque_base::~_Deque_base() { +- printf ("bb %x %x\n", this, *_M_start._M_node); ++ printf ("bb %p %x\n", this, *_M_start._M_node); + } + + void + _Deque_base::_M_initialize_map() + { + yy = 0x123; +- printf ("aa %x %x\n", this, yy); ++ printf ("aa %p %x\n", this, yy); + + _M_start._M_node = &yy; + _M_start._M_cur = yy; +--- a/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C +@@ -33,7 +33,7 @@ struct VBase + void Offset () const + { + printf ("VBase\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); + } + }; + +@@ -55,8 +55,8 @@ struct VDerived : virtual VBase + void Offset () const + { + printf ("VDerived\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); + } + }; + struct B : virtual VBase +@@ -65,8 +65,8 @@ struct B : virtual VBase + void Offset () const + { + printf ("B\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" B::member %d\n", &this->B::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); + } + }; + struct MostDerived : B, virtual VDerived +@@ -75,10 +75,10 @@ struct MostDerived : B, virtual VDerived + void Offset () const + { + printf ("MostDerived\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" B::member %d\n", &this->B::member - (int *)this); +- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); +- printf (" MostDerived::member %d\n", &this->MostDerived::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); ++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); ++ printf (" MostDerived::member %d\n", (int)(&this->MostDerived::member - (int *)this)); + } + }; + +@@ -95,10 +95,10 @@ int main () + if (ctorVDerived != &dum.VDerived::member) + return 24; + +- printf (" VBase::member %d\n", &dum.VBase::member - this_); +- printf (" B::member %d\n", &dum.B::member - this_); +- printf (" VDerived::member %d\n", &dum.VDerived::member - this_); +- printf (" MostDerived::member %d\n", &dum.MostDerived::member - this_); ++ printf (" VBase::member %d\n", (int)(&dum.VBase::member - this_)); ++ printf (" B::member %d\n", (int)(&dum.B::member - this_)); ++ printf (" VDerived::member %d\n", (int)(&dum.VDerived::member - this_)); ++ printf (" MostDerived::member %d\n", (int)(&dum.MostDerived::member - this_)); + dum.MostDerived::Offset (); + dum.B::Offset (); + dum.VDerived::Offset (); +--- a/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C +@@ -15,6 +15,6 @@ int main(){ + + Double_alignt<20000> heap; + +- printf(" &heap.array[0] = %d, &heap.for_alignt = %d\n", &heap.array[0], &heap.for_alignt); ++ printf(" &heap.array[0] = %p, &heap.for_alignt = %p\n", (void*)&heap.array[0], (void*)&heap.for_alignt); + + } +--- a/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C +@@ -16,7 +16,7 @@ int main() + } + + catch (E *&e) { +- printf ("address of e is 0x%lx\n", (__SIZE_TYPE__)e); ++ printf ("address of e is %p\n", (void *)e); + return !((__SIZE_TYPE__)e != 5 && e->x == 5); + } + return 2; +--- a/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C +@@ -42,19 +42,19 @@ public: + void DoSomething() { + PUB_A = 0; + Foo::A = 0; +- printf("%x\n",pX); ++ printf("%p\n",pX); + Foo::PUB.A = 0; +- printf("%x\n",PUB.pX); ++ printf("%p\n",PUB.pX); + B = 0; +- printf("%x\n",Foo::pY); ++ printf("%p\n",Foo::pY); + PRT_A = 0; + PRT.B = 0; +- printf("%x\n",Foo::PRT.pY); ++ printf("%p\n",Foo::PRT.pY); + PRV_A = 0; // { dg-error "" } + Foo::C = 0; // { dg-error "" } +- printf("%x\n",pZ); // { dg-error "" } ++ printf("%p\n",pZ); // { dg-error "" } + Foo::PRV.C = 0; // { dg-error "" } +- printf("%x\n",PRV.pZ); // { dg-error "" } ++ printf("%p\n",PRV.pZ); // { dg-error "" } + } + }; + +@@ -64,17 +64,17 @@ int main() + + a.PUB_A = 0; + a.A = 0; +- printf("%x\n",a.pX); ++ printf("%p\n",a.pX); + a.PRT_A = 0; // { dg-error "" } + a.B = 0; // { dg-error "" } +- printf("%x\n",a.pY); // { dg-error "" } ++ printf("%p\n",a.pY); // { dg-error "" } + a.PRV_A = 0; // { dg-error "" } + a.C = 0; // { dg-error "" } +- printf("%x\n",a.pZ); // { dg-error "" } ++ printf("%p\n",a.pZ); // { dg-error "" } + a.PUB.A = 0; +- printf("%x\n",a.PUB.pX); ++ printf("%p\n",a.PUB.pX); + a.PRT.B = 0; // { dg-error "" } +- printf("%x\n",a.PRT.pY); // { dg-error "" } ++ printf("%p\n",a.PRT.pY); // { dg-error "" } + a.PRV.C = 0; // { dg-error "" } +- printf("%x\n",a.PRV.pZ); // { dg-error "" } ++ printf("%p\n",a.PRV.pZ); // { dg-error "" } + } +--- a/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C +@@ -20,12 +20,12 @@ struct B { + B::operator const A&() const { + static A a; + a.i = i; +- printf("convert B to A at %x\n", &a); ++ printf("convert B to A at %p\n", (void*)&a); + return a; + } + + void f(A &a) { // { dg-message "" } in passing argument +- printf("A at %x is %d\n", &a, a.i); ++ printf("A at %p is %d\n", (void*)&a, a.i); + } + + int main() { +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C +@@ -17,10 +17,10 @@ public: + + int main() { + C c; +- printf("&c.x = %x\n", &c.x); +- printf("&c.B1::x = %x\n", &c.B1::x); +- printf("&c.B2::x = %x\n", &c.B2::x); +- printf("&c.A::x = %x\n", &c.A::x); ++ printf("&c.x = %p\n", (void*)&c.x); ++ printf("&c.B1::x = %p\n", (void*)&c.B1::x); ++ printf("&c.B2::x = %p\n", (void*)&c.B2::x); ++ printf("&c.A::x = %p\n", (void*)&c.A::x); + if (&c.x != &c.B1::x + || &c.x != &c.B2::x + || &c.x != &c.A::x) +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C +@@ -6,7 +6,7 @@ int fail = 0; + class Foo { + public: + virtual void setName() { +- printf("Foo at %x\n", this); ++ printf("Foo at %p\n", (void*)this); + if (vp != (void*)this) + fail = 1; + } +@@ -15,7 +15,7 @@ public: + class Bar : public Foo { + public: + virtual void init(int argc, char **argv) { +- printf("Bar's Foo at %x\n", (Foo*)this); ++ printf("Bar's Foo at %p\n", (void*)(Foo*)this); + vp = (void*)(Foo*)this; + setName(); + } +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C +@@ -18,7 +18,7 @@ public: + if (ptr2 != &(*this).slist) + fail = 6; + +- if (0) printf("at %x %x\n", (RWSlistIterator*)this, &(*this).slist); ++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)this, (void*)&(*this).slist); + } + }; + +@@ -54,14 +54,14 @@ Sim_Event_Manager::Sim_Event_Manager () + void Sim_Event_Manager::post_event () { + ptr1 = (RWSlistIterator*)&last_posted_event_position_; + ptr2 = &((RWSlistIterator*)&last_posted_event_position_)->slist; +- if (0) printf("at %x %x\n", (RWSlistIterator*)&last_posted_event_position_, +- &((RWSlistIterator*)&last_posted_event_position_)->slist); ++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, ++ (void*)&((RWSlistIterator*)&last_posted_event_position_)->slist); + if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) + fail = 1; + if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) + fail = 2; +- if (0) printf("at %x ?%x\n", (RWSlistIterator*)&last_posted_event_position_, +- &((RWSlistIterator&)last_posted_event_position_).slist); ++ if (0) printf("at %p ?%p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, ++ (void*)&((RWSlistIterator&)last_posted_event_position_).slist); + if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) + fail = 3; + if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C +@@ -7,26 +7,26 @@ int num_x; + + class Y { + public: +- Y () { printf("Y() this: %x\n", this); } +- ~Y () { printf("~Y() this: %x\n", this); } ++ Y () { printf("Y() this: %p\n", (void*)this); } ++ ~Y () { printf("~Y() this: %p\n", (void*)this); } + }; + + class X { + public: + X () { + ++num_x; +- printf("X() this: %x\n", this); ++ printf("X() this: %p\n", (void*)this); + Y y; + *this = (X) y; + } + +- X (const Y & yy) { printf("X(const Y&) this: %x\n", this); ++num_x; } ++ X (const Y & yy) { printf("X(const Y&) this: %p\n", (void*)this); ++num_x; } + X & operator = (const X & xx) { +- printf("X.op=(X&) this: %x\n", this); ++ printf("X.op=(X&) this: %p\n", (void*)this); + return *this; + } + +- ~X () { printf("~X() this: %x\n", this); --num_x; } ++ ~X () { printf("~X() this: %p\n", (void*)this); --num_x; } + }; + + int main (int, char **) { +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C +@@ -38,7 +38,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + printf ("C is destructed.\n"); + B::xx (0); + if (doit) A::xx (1); +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C +@@ -48,7 +48,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) { +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + exit(1); + } + printf ("D is destructed.\n"); +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C +@@ -38,7 +38,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + printf ("C is destructed.\n"); + B::xx (0); + if (doit) A::xx (1); +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C +@@ -35,20 +35,20 @@ int foo::si = 0; + foo::foo () + { + si++; +- printf ("new foo @ 0x%x; now %d foos\n", this, si); ++ printf ("new foo @ %p; now %d foos\n", (void*)this, si); + } + + foo::foo (const foo &other) + { + si++; +- printf ("another foo @ 0x%x; now %d foos\n", this, si); ++ printf ("another foo @ %p; now %d foos\n", (void*)this, si); + *this = other; + } + + foo::~foo () + { + si--; +- printf ("deleted foo @ 0x%x; now %d foos\n", this, si); ++ printf ("deleted foo @ %p; now %d foos\n", (void*)this, si); + } + + int +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C +@@ -32,7 +32,7 @@ class B + virtual ~B() {} + void operator delete(void*,size_t s) + { +- printf("B::delete() %d\n",s); ++ printf("B::delete() %u\n",(unsigned int)s); + } + void operator delete(void*){} + }; +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C +@@ -13,10 +13,10 @@ struct foo + int x; + foo () { + x = count++; +- printf("this %d = %x\n", x, (void *)this); ++ printf("this %d = %p\n", x, (void *)this); + } + virtual ~foo () { +- printf("this %d = %x\n", x, (void *)this); ++ printf("this %d = %p\n", x, (void *)this); + --count; + } + }; +@@ -31,7 +31,7 @@ int main () + { + for (int j = 0; j < 3; j++) + { +- printf("&a[%d][%d] = %x\n", i, j, (void *)&array[i][j]); ++ printf("&a[%d][%d] = %p\n", i, j, (void *)&array[i][j]); + } + } + // The count should be nine, if not, fail the test. +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C +@@ -42,7 +42,7 @@ B_table b; + bar jar; + + int main() { +- printf("ptr to B_table=%x, ptr to A_table=%x\n",&b,(A_table*)&b); ++ printf("ptr to B_table=%p, ptr to A_table=%p\n",(void*)&b,(void*)(A_table*)&b); + B_table::B_ti_fn z = &B_table::func1; + int j = 1; + jar.call_fn_fn1(j,(void *)&z); +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C +@@ -7,11 +7,11 @@ class T { + public: + T() { + i = 1; +- printf("T() at %x\n", this); ++ printf("T() at %p\n", (void*)this); + } + T(const T& o) { + i = o.i; +- printf("T(const T&) at %x <-- %x\n", this, &o); ++ printf("T(const T&) at %p <-- %p\n", (void*)this, (void*)&o); + } + T operator +(const T& o) { + T r; +@@ -21,7 +21,7 @@ public: + operator int () { + return i; + } +- ~T() { printf("~T() at %x\n", this); } ++ ~T() { printf("~T() at %p\n", (void*)this); } + } s, b; + + int foo() { return getenv("TEST") == 0; } +--- a/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C +@@ -5,16 +5,16 @@ int c, d; + class Foo + { + public: +- Foo() { printf("Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++c; } +- Foo(Foo const &) { printf("Foo(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } +- ~Foo() { printf("~Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++d; } ++ Foo() { printf("Foo() %p\n", (void*)this); ++c; } ++ Foo(Foo const &) { printf("Foo(Foo const &) %p\n", (void*)this); } ++ ~Foo() { printf("~Foo() %p\n", (void*)this); ++d; } + }; + + // Bar creates constructs a temporary Foo() as a default + class Bar + { + public: +- Bar(Foo const & = Foo()) { printf("Bar(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } ++ Bar(Foo const & = Foo()) { printf("Bar(Foo const &) %p\n", (void*)this); } + }; + + void fakeRef(Bar *) +--- a/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C +@@ -4,7 +4,7 @@ extern "C" int printf (const char*, ...) + struct A + { + virtual void f () { +- printf ("%x\n", this); ++ printf ("%p\n", (void*)this); + } + }; + +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C +@@ -13,7 +13,7 @@ struct S + + template + void f(U u) +- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } ++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } + + int c[16]; + }; +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C +@@ -13,7 +13,7 @@ struct S + + template + void f(U u) +- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } ++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } + + int c[16]; + }; +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C +@@ -6,7 +6,7 @@ template + struct S + { + template +- void f(U u) { printf ("%d\n", sizeof (U)); } ++ void f(U u) { printf ("%d\n", (int)sizeof (U)); } + + int i[4]; + }; +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C +@@ -16,7 +16,7 @@ template + template + void S::f(U u) + { +- printf ("%d\n", sizeof (U)); ++ printf ("%d\n", (int)sizeof (U)); + } + + +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C +@@ -10,9 +10,9 @@ struct frob { + + template + void frob::print () { +- printf ("this = %08x\n", this); +- printf (" ptr = %08x\n", ptr); +- printf (" values = %x %x %x ...\n", ptr[0], ptr[1], ptr[2]); ++ printf ("this = %p\n", (void*)this); ++ printf (" ptr = %p\n", (void*)ptr); ++ printf (" values = %x %x %x ...\n", (int)ptr[0], (int)ptr[1], (int)ptr[2]); + } + + static int x[10]; +--- a/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C +@@ -44,15 +44,15 @@ int main() + A * a = new B; + B * b = dynamic_cast(a); + +- printf("%p\n",b); // (*2*) ++ printf("%p\n",(void*)b); // (*2*) + b->print(); + + a = b; +- printf("%p\n",a); ++ printf("%p\n",(void*)a); + a->print(); + + a = a->clone(); +- printf("%p\n",a); ++ printf("%p\n",(void*)a); + a->print(); // (*1*) + + return 0; +--- a/src/gcc/testsuite/gcc.dg/pch/inline-4.c ++++ b/src/gcc/testsuite/gcc.dg/pch/inline-4.c +@@ -1,6 +1,6 @@ + #include "inline-4.h" + extern int printf (const char *, ...); + int main(void) { +- printf (getstring()); ++ printf ("%s", getstring()); + return 0; + } diff --git a/patches/testsuite-hardening-updates.diff b/patches/testsuite-hardening-updates.diff new file mode 100644 index 0000000..112a3b8 --- /dev/null +++ b/patches/testsuite-hardening-updates.diff @@ -0,0 +1,84 @@ +# DP: Fix some gcc and g++ testcases to pass with hardening defaults + +--- + src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c | 2 +- + src/gcc/testsuite/g++.dg/asan/asan_test.C | 2 +- + src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C | 2 +- + src/gcc/testsuite/g++.dg/fstack-protector-strong.C | 2 +- + src/gcc/testsuite/gcc.c-torture/execute/memset-1.c | 1 - + src/gcc/testsuite/gcc.c-torture/execute/memset-1.x | 5 +++++ + src/gcc/testsuite/gcc.dg/fstack-protector-strong.c | 2 +- + src/gcc/testsuite/gcc.dg/stack-usage-1.c | 2 +- + src/gcc/testsuite/gcc.dg/superblock.c | 2 +- + src/gcc/testsuite/gcc.target/i386/sw-1.c | 2 +- + 11 files changed, 14 insertions(+), 10 deletions(-) + +--- a/src/gcc/testsuite/g++.dg/asan/asan_test.C ++++ b/src/gcc/testsuite/g++.dg/asan/asan_test.C +@@ -2,7 +2,7 @@ + // { dg-skip-if "" { *-*-* } { "*" } { "-O2" } } + // { dg-skip-if "" { *-*-* } { "-flto" } { "" } } + // { dg-additional-sources "asan_globals_test-wrapper.cc" } +-// { dg-options "-std=c++11 -fsanitize=address -fno-builtin -Wall -Werror -Wno-alloc-size-larger-than -Wno-array-bounds -Wno-stringop-overflow -Wno-stringop-overread -g -DASAN_UAR=0 -DASAN_HAS_EXCEPTIONS=1 -DASAN_HAS_BLACKLIST=0 -DSANITIZER_USE_DEJAGNU_GTEST=1 -lasan -lpthread" } ++// { dg-options "-std=c++11 -fsanitize=address -fno-builtin -Wall -Werror -Wno-alloc-size-larger-than -Wno-array-bounds -Wno-stringop-overflow -Wno-stringop-overread -Wno-unused-result -g -DASAN_UAR=0 -DASAN_HAS_EXCEPTIONS=1 -DASAN_HAS_BLACKLIST=0 -DSANITIZER_USE_DEJAGNU_GTEST=1 -lasan -lpthread" } + // { dg-additional-options "-ldl" { target { ! *-*-freebsd* } } } + // { dg-additional-options "-DASAN_NEEDS_SEGV=1" { target { ! arm*-*-* } } } + // { dg-additional-options "-DASAN_LOW_MEMORY=1 -DASAN_NEEDS_SEGV=0" { target arm*-*-* } } +--- a/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C ++++ b/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C +@@ -1,7 +1,7 @@ + // ASan interceptor can be accessed with __interceptor_ prefix. + + // { dg-do run { target *-*-linux* *-*-freebsd* } } +-// { dg-options "-fno-builtin-free" } ++// { dg-options "-fno-builtin-free -Wno-unused-result" } + // { dg-additional-options "-D__NO_INLINE__" { target { *-*-linux-gnu *-*-freebsd* } } } + // { dg-shouldfail "asan" } + +--- a/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c ++++ b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c +@@ -1,3 +1,5 @@ ++/* { dg-prune-output ".*warning: memset used with constant zero length parameter.*" } */ ++ + /* Copyright (C) 2002 Free Software Foundation. + + Test memset with various combinations of pointer alignments and lengths to +--- a/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c ++++ b/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c +@@ -1,5 +1,5 @@ + /* { dg-do run } */ +-/* { dg-options "-fno-builtin-malloc -fno-builtin-strncpy" } */ ++/* { dg-options "-fno-builtin-malloc -fno-builtin-strncpy -U_FORTIFY_SOURCE" } */ + /* { dg-additional-options "-D_FORTIFY_SOURCE=0 -gdwarf-3" { target *-*-darwin* } } */ + /* { dg-shouldfail "asan" } */ + +--- a/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c ++++ b/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c +@@ -1,7 +1,7 @@ + /* Test that stack protection is done on chosen functions. */ + + /* { dg-do compile { target i?86-*-* x86_64-*-* rs6000-*-* s390x-*-* } } */ +-/* { dg-options "-O2 -fstack-protector-strong" } */ ++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */ + + /* This test checks the presence of __stack_chk_fail function in assembler. + * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC. +--- a/src/gcc/testsuite/g++.dg/fstack-protector-strong.C ++++ b/src/gcc/testsuite/g++.dg/fstack-protector-strong.C +@@ -1,7 +1,7 @@ + /* Test that stack protection is done on chosen functions. */ + + /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +-/* { dg-options "-O2 -fstack-protector-strong" } */ ++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */ + + /* This test checks the presence of __stack_chk_fail function in assembler. + * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC. +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 diff --git a/porting.html b/porting.html new file mode 100644 index 0000000..2fe5477 --- /dev/null +++ b/porting.html @@ -0,0 +1,30 @@ + + +Porting libstdc++-v3 + + + + + + + +

Porting libstdc++-v3

+
+


+Node: Top, +Next: , +Up: (dir) +
+
+ +The documentation in this file was removed, because it is licencensed +under a non DFSG conforming licencse. + + diff --git a/reduce-test-diff.awk b/reduce-test-diff.awk new file mode 100755 index 0000000..0e438de --- /dev/null +++ b/reduce-test-diff.awk @@ -0,0 +1,33 @@ +#! /usr/bin/gawk -f + +BEGIN { + skip=0 + warn=0 +} + +/^-(FAIL|ERROR|UNRESOLVED|WARNING)/ { + next +} + +# only compare gcc, g++, g77 and objc results +/=== treelang tests ===/ { + skip=1 +} + +# omit extra files appended to test-summary +/^\+Compiler version/ { + skip=1 +} + +skip == 0 { + print + next +} + +/^\+(FAIL|ERROR|UNRESOLVED|WARNING)/ { + warn=1 +} + +END { + exit warn +} diff --git a/rules b/rules new file mode 100755 index 0000000..f49ea84 --- /dev/null +++ b/rules @@ -0,0 +1,100 @@ +#! /usr/bin/make -f +# -*- makefile -*- +# Build rules for gcc (>= 2.95) and gcc-snapshot +# Targets found in this makefile: +# - unpack tarballs +# - patch sources +# - (re)create the control file +# - create a debian/rules.parameters file, which is included +# by debian/rules2 +# All other targets are passed to the debian/rules2 file + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +unexport LANG LC_ALL LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC LC_MESSAGES + +default: build + +include debian/rules.defs +include debian/rules.unpack +include debian/rules.patch + +control: $(control_dependencies) + @echo "Build environment: derivative=$(derivative), release=$(distrelease)" + -mkdir -p $(stampdir) + $(MAKE) -f debian/rules.conf $@ + +configure: control $(unpack_stamp) $(patch_stamp) + $(MAKE) -f debian/rules2 $@ + +pre-build: +# no backport support for these releases ..., keep conditionals for +# Debian: jessie stretch buster bullseye ... +# UBuntu: precise trusty xenial bionic focal groovy hirsute ... +ifneq (,$(filter $(distrelease),lenny squeeze wheezy hardy lucid)) + @echo explicitely fail the build for $(distribution)/$(distrelease) on $(DEB_TARGET_ARCH). + @echo no bug report required. please figure out the back port yourself. + false +endif +#ifeq ($(PKGSOURCE),gcc-15) +# ifneq (,$(findstring native, $(build_type))) +# ifneq (,$(findstring mips, $(TARGET_ALIAS))) +# @echo "native compiler for $(TARGET_ALIAS) not built from this source." +# @echo "See https://lists.debian.org/debian-gcc/2021/05/msg00011.html" +# false +# endif +# endif +#endif + +build: pre-build control + $(MAKE) $(NJOBS) -f debian/rules2 $@ +build-arch: pre-build control + $(MAKE) $(NJOBS) -f debian/rules2 $@ +build-indep: pre-build control + DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS) nostrap nohppa64 nonvptx nogcn nocheck nopgo nolto" \ + $(MAKE) $(NJOBS) -f debian/rules2 $@ + +check: $(check_stamp) +$(check_stamp): $(build_stamp) + $(MAKE) -f debian/rules2 $@ + +clean: + rm -rf $(stampdir) +# remove temporary dirs used for unpacking + rm -rf $(gcc_srcdir) $(gdc_srcdir) $(newlib_srcdir) $(binutils_srcdir) + -$(MAKE) -f debian/rules2 $@ + rm -rf $(srcdir)* $(builddir)* debian/tmp* html + rm -f bootstrap-* test-protocol* first-move-stamp + rm -f debian/*.tmp + rm -f debian/soname-cache + find debian -name '.#*' | xargs -r rm -f + rm -f $(series_file)* + rm -rf .pc + dh_clean + +install: + $(MAKE) -f debian/rules2 $@ + +html-docs doxygen-docs update-doxygen-docs update-ada-files xxx: + $(MAKE) -f debian/rules2 $@ + +binary-arch binary: build-arch + $(MAKE) -f debian/rules2 $@ + +binary-indep: build-indep + DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS) nostrap nohppa64 nonvptx nocheck nopgo nolto" \ + $(MAKE) -f debian/rules2 $@ + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +release: + foo=$(shell basename $(CURDIR)); \ + if [ "$$foo" != "gcc-3.4" ]; then \ + find -name CVS -o -name .cvsignore -o -name '.#*' | \ + xargs rm -rf; \ + fi + +.NOTPARALLEL: +.PHONY: build clean binary-indep binary-arch binary release diff --git a/rules.conf b/rules.conf new file mode 100644 index 0000000..d1269a6 --- /dev/null +++ b/rules.conf @@ -0,0 +1,1382 @@ +# -*- makefile -*- +# rules.conf +# - used to build debian/control and debian/rules.parameters +# - assumes unpacked sources + +include debian/rules.defs +include debian/rules.sonames + +ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) +include $(binutils_srcdir)/debian/rules.defs +endif + +# manual ... +ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),hppa m68k)) + ifeq ($(DEB_TARGET_ARCH),m68k) + GCC_SONAME := 2 + endif + ifeq ($(DEB_TARGET_ARCH),hppa) + GCC_SONAME := 4 + endif +else + GCC_SONAME := 1 +endif +DEB_LIBGCC_SOVERSION := $(DEB_SOVERSION) +DEB_LIBGCC_VERSION := $(DEB_VERSION) + +_soname_map = gcc-s=$(GCC_SONAME) gcc=$(GCC_SONAME) stdc++=$(CXX_SONAME) \ + gomp=$(GOMP_SONAME) ssp=$(SSP_SONAME) gfortran=$(FORTRAN_SONAME) \ + itm=$(ITM_SONAME) objc=$(OBJC_SONAME) quadmath=$(QUADMATH_SONAME) \ + go=$(GO_SONAME) backtrace=$(BTRACE_SONAME) \ + atomic=$(ATOMIC_SONAME) asan=$(ASAN_SONAME) lsan=$(LSAN_SONAME) \ + tsan=$(TSAN_SONAME) ubsan=$(UBSAN_SONAME) hwasan=$(HWASAN_SONAME) \ + vtv=$(VTV_SONAME) gm2=$(GM2_SONAME) gcobol=$(GCOBOL_SONAME) \ + gphobos=$(GPHOBOS_SONAME) gdiagnostics=$(DIAGNOSTICS_SONAME) \ + ga68=$(GA68_SONAME) +_soname = $(patsubst $(1)=%,%,$(filter $(1)=%,$(_soname_map))) + +rel_on_dev := $(if $(cross_lib_arch),>=,=) +# $(call _lib_name,,,) +_lib_name = $(subst $(SPACE),, \ + lib$(2)$(1) \ + $(if $(filter dev,$(3)),,$(call _soname,$(1))) \ + $(if $(or $(filter $(3),dev),$(and $(filter $(3),dbg),$(filter $(1),stdc++))),-$(BASE_VERSION)) \ + $(if $(3),-$(3))$(LS)$(AQ)) +# $(call _lib_vers,,) +_lib_vers = ($(if $(filter $(1),dev),$(rel_on_dev),>=) $(2)) + +# Helper to generate biarch/triarch dependencies. +# For example, $(eval $(call gen_multilib_deps,gomp)) will create the +# libgompbiarch variable, and make it contains the libgompbiarch{32,64,n32} +# variables if biarch{32,64,n32} is set to yes. + +define gen_multilib_deps + lib$1biarch64$2 := $(call _lib_name,$(1),64,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarch32$2 := $(call _lib_name,$(1),32,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchn32$2 := $(call _lib_name,$(1),n32,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchx32$2 := $(call _lib_name,$(1),x32,$(2)) $(call _lib_vers,$(2),$(3)) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2) + endif + ifeq ($$(biarch32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarch32$2) + else + lib$1biarch$2 := $$(lib$1biarch32$2) + endif + endif + ifeq ($$(biarchx32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchx32$2) + else ifeq ($$(biarch32),yes) + lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchx32$2) + else + lib$1biarch$2 := $$(lib$1biarchx32$2) + endif + endif + ifeq ($$(biarchn32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchn32$2) + else ifeq ($$(biarch32),yes) + lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchn32$2) + else + lib$1biarch$2 := $$(lib$1biarchn32$2) + endif + endif +endef +ifeq ($(with_shared_libgcc),yes) + LIBGCC_DEP := libgcc-s$(GCC_SONAME)$(LS)$(AQ) (>= $${gcc:Version}) + $(eval $(call gen_multilib_deps,gcc-s,,$$$${gcc:Version})) +endif +LIBGCC_DEV_DEP := libgcc-$(BASE_VERSION)-dev$(LS)$(AQ) ($(rel_on_dev) $${gcc:Version}) +$(foreach x,stdc++ gomp ssp gfortran itm objc atomic asan lsan ubsan hwasan quadmath go vtv, \ + $(eval $(call gen_multilib_deps,$(x),,$$$${gcc:Version}))) +$(foreach x,gcc gcc-s stdc++ gfortran objc go gphobos, \ + $(eval $(call gen_multilib_deps,$(x),dev,$$$${gcc:Version}))) +$(foreach x,gcc gcc-s stdc++ gfortran objc go gphobos, \ + $(eval $(call gen_multilib_deps,$(x),dbg,$$$${gcc:Version}))) + +# Helper to generate _no_archs variables. +# For example, $(eval $(call gen_no_archs,go)) will create the go_no_archs +# variable, using the go_no_cpu and go_no_systems variables. +define gen_no_archs + $1_no_archs := + ifneq (,$$($1_no_cpus)) + $1_no_archs += $$(foreach cpu,$$(filter-out i386 amd64 arm,$$($1_no_cpus)),!$$(cpu)) + ifneq (,$$(filter i386,$$($1_no_cpus))) + $1_no_archs += !i386 !hurd-i386 + endif + ifneq (,$$(filter amd64,$$($1_no_cpus))) + $1_no_archs += !amd64 !hurd-amd64 + endif + ifneq (,$$(filter arm,$$($1_no_cpus))) + $1_no_archs += !arm !armel !armhf + endif + ifneq (,$$(strip $3)) + $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$3$$(SPACE)) + $1_no_archs += $$(foreach cpu,$$($1_no_cpus),$$(foreach system,$$($1_no_systems_tmp),!$$(subst gnu,$$(cpu),$$(system)))) + endif + endif + ifneq (,$$($1_no_systems)) + $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$$($1_no_systems)$$(SPACE)) + $1_no_archs += $$(foreach system,$$($1_no_systems_tmp),$$(foreach cpu,$2,!$$(subst gnu,$$(cpu),$$(system)))) + endif + $1_no_archs := $$(strip $$($1_no_archs)) +endef +base_deb_cpus := amd64 i386 +base_deb_systems := +$(foreach x,ada cobol d fortran go m2 rs libgphobos libgc check locale,$(eval $(call gen_no_archs,$(x),$(base_deb_cpus),$(base_deb_systems)))) +linux_no_archs := !hurd-any + +GCC_VERSION := $(strip $(shell cat $(firstword $(wildcard $(srcdir)/gcc/FULL-VER $(srcdir)/gcc/BASE-VER)))) +NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \ + awk -F. '{OFS="."; $$2 += 1; $$3=0; print}') +GCC_MAJOR_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/([0-9])\.[0-9]\.[0-9]/\1/') +GCC_MINOR_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.([0-9])\.[0-9]/\1/') +GCC_RELEASE_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.[0-9]\.([0-9])/\1/') +NEXT_GCC_MAJOR_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1) +NEXT_GCC_MINOR_VERSION := $(shell expr $(echo $(GCC_MINOR_VERSION)) + 1) +NEXT_GCC_RELEASE_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1) + +ifeq ($(single_package),yes) + BASE_VERSION := $(shell echo $(GCC_VERSION) | sed -e 's/\([0-9]*\).*/\1/') +endif + +GCC_SOURCE_VERSION := $(shell echo $(DEB_VERSION) | sed 's/-.*//') +NEXT_GCC_SOURCE_VERSION := $(shell echo $(GCC_SOURCE_VERSION) | \ + awk -F. '{OFS="."; $$2 += 1; $$3=0; print}') + +MAINTAINER = Debian GCC Maintainers +ifeq ($(distribution),Ubuntu) + MAINTAINER = Ubuntu Core developers +endif +UPLOADERS = Matthias Klose + +DPKGV = 1.14.15 +ifeq ($(with_multiarch_lib),yes) + DPKGV = 1.16.0~ubuntu4 +endif +ifeq ($(multiarch_stage1),yes) + DPKGV = 1.16.0~ubuntu4 +endif +ifeq (,$(filter $(distrelease), precise trusty)) + DPKGV = 1.17.14 +endif +DPKG_BUILD_DEP = dpkg-dev (>= $(DPKGV)), + +ifeq ($(DEB_HOST_ARCH),$(DEB_TARGET_ARCH)) + TARGET_QUAL = :$(DEB_TARGET_ARCH) +endif + +ifneq (,$(filter $(distrelease), precise trusty xenial)) + LOCALES = locales +else + LOCALES = locales-all +endif + +# The binutils version needed. +# The oldest suitable versions for the various platforms can be found in +# INSTALL/specific.html ; we take a tighter dependency if possible to be on +# the safe side (something like newest( version in stable, versions for the +# various platforms in INSTALL/specific.html) ). +# We need binutils (>= 2.19.1) for a new dwarf unwind expression opcode. +# See http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01713.html +ifeq ($(trunk_build),yes) + BINUTILSBDV = 2.23 +else + BINUTILSBDV = 2.22 + ifneq (,$(filter $(distrelease),precise)) + BINUTILSBDV = 2.22-6~ + else ifneq (,$(filter $(distrelease),trusty)) + BINUTILSBDV = 2.24-5~ + else ifneq (,$(filter $(distrelease),jessie)) + BINUTILSBDV = 2.25-7~ + else ifneq (,$(filter $(distrelease),xenial)) + BINUTILSBDV = 2.26.1 + else ifneq (,$(filter $(distrelease),stretch)) + BINUTILSBDV = 2.28 + else ifneq (,$(filter $(distrelease),bionic)) + BINUTILSBDV = 2.30 + else ifneq (,$(filter $(distrelease),buster focal)) + BINUTILSBDV = 2.34 + else ifneq (,$(filter $(distrelease),groovy)) + BINUTILSBDV = 2.35 + else ifneq (,$(filter $(distrelease),bullseye)) + BINUTILSBDV = 2.35.2 + else ifneq (,$(filter $(distrelease),hirsute)) + BINUTILSBDV = 2.36 + else ifneq (,$(filter $(distrelease),jammy)) + BINUTILSBDV = 2.38 + else ifneq (,$(filter $(distrelease),$(no_sframe_distreleases))) + BINUTILSBDV = 2.39 + else + BINUTILSBDV = 2.45 + endif +endif +ifeq ($(DEB_CROSS),yes) + ifneq (,$(filter $(distrelease),stretch jessie precise trusty xenial)) + BINUTILS_BUILD_DEP = binutils$(TS)$(NT) (>= $(BINUTILSBDV)), binutils-multiarch$(NT) (>= $(BINUTILSBDV)) + else + BINUTILS_BUILD_DEP = binutils$(TS)$(NT) (>= $(BINUTILSBDV)), debhelper (>= 11) + endif + BINUTILSV := $(shell dpkg -l binutils$(TS) \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') +else + BINUTILS_BUILD_DEP = binutils$(NT) (>= $(BINUTILSBDV)) + ifneq (,$(findstring cross-build-,$(build_type))) + BINUTILSV := $(shell dpkg -l binutils$(TS) \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') + else + BINUTILSV := $(shell dpkg -l binutils binutils-multiarch \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') + endif +endif +# for riscv64, more recent binutils versions are needed for backports +ifneq (,$(filter $(distrelease),stretch buster bullseye bionic focal jammy)) + BINUTILS_BUILD_DEP +=$(COMMA) binutils$(TS)$(NT) (>= 2.40) [riscv64] +endif + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + BINUTILS_BUILD_DEP += , $(binutils_hppa64)$(NT) (>= $(BINUTILSBDV)) [$(hppa64_archs)] +endif +ifeq (,$(BINUTILSV)) + BINUTILSV := $(BINUTILSBDV) +endif +# gcc/configure.ac enables some features based on the binutils version. The most +# recently checked binutils version is 2.36 for GCC 14. For now it is safe to +# derive the binutils runtime dependency from the binutils build dependency. +BINUTILSV := $(BINUTILSBDV) + +# libc-dev dependencies +libc_ver := 2.23 +libc_dev_ver := $(libc_ver) +ifeq ($(with_multiarch_lib),yes) + ifeq ($(derivative),Debian) + libc_dev_ver := 2.23-1~ + else + libc_dev_ver := 2.13-0ubuntu6 + endif +endif +# first set LIBC_DEP/LIBC_DEV_DEP for native builds only +ifeq ($(DEB_TARGET_ARCH_OS),linux) + LIBC_DEP = $(if $(filter alpha ia64, $(DEB_TARGET_ARCH)),libc6.1,libc6) + ifneq (,$(findstring musl-linux-,$(DEB_TARGET_ARCH))) + LIBC_DEP = musl + libc_ver = 0.9 + libc_dev_ver = 0.9 + endif +else ifeq ($(DEB_TARGET_ARCH_OS),hurd) + LIBC_DEP = libc0.3 +else ifeq ($(DEB_TARGET_ARCH),uclibc) + LIBC_DEP = libuclibc +endif +LIBC_DEV_DEP := $(LIBC_DEP)-dev + +# this is about Debian archs name, *NOT* GNU target triplet +biarch_deb_map := \ + i386=amd64 amd64=i386 \ + mips=mips64 mipsel=mips64el \ + mipsn32=mips mipsn32el=mipsel \ + mips64=mips mips64el=mipsel \ + mipsr6=mips64r6 mipsr6el=mips64r6el \ + mipsn32r6=mipsr6 mipsn32r6el=mipsr6el \ + mips64r6=mipsr6 mips64r6el=mipsr6el \ + powerpc=ppc64 ppc64=powerpc \ + sparc=sparc64 sparc64=sparc\ + s390=s390x s390x=s390 +biarch_deb_arch := $(patsubst $(DEB_TARGET_ARCH)=%,%, \ + $(filter $(DEB_TARGET_ARCH)=%,$(biarch_deb_map))) + +LIBC_BIARCH_DEP := +LIBC_BIARCH_DEV_DEP := +ifneq (,$(findstring yes,$(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + LIBC_BIARCH_DEP := $${shlibs:Depends} + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_dev_ver)) + # amd64, x32, i386 + ifneq (,$(findstring $(DEB_TARGET_ARCH),amd64 x32 i386)) + ifeq ($(biarch64)$(biarch32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + ifeq ($(biarch64)$(biarchx32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + ifeq ($(biarch32)$(biarchx32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + endif + # mips* + ifneq (,$(findstring mips, $(DEB_TARGET_ARCH))) + ifeq ($(biarchn32)$(biarch32),yesyes) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + ifeq ($(biarch64)$(biarch32),yesyes) + triarch := $(COMMA)$(SPACE) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += libc6-dev-mips64$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + ifeq ($(biarchn32)$(biarch64),yesyes) + triarch := $(COMMA)$(SPACE) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips64$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + endif +endif + +# now add the cross suffix and required version +LIBC_DEP := $(LIBC_DEP)$(LS)$(AQ) +LIBC_DEV_DEP := $(LIBC_DEV_DEP)$(LS)$(AQ) (>= $(libc_dev_ver)) + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + LIBC_DBG_DEP = libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-amd64 hurd-i386] | libc6-dbg, +endif + +# TODO: make this automatic, there must be a better way to define LIBC_DEP. +ifneq ($(DEB_CROSS),yes) + LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_dev_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_dev_ver)) [hurd-amd64 hurd-i386] | libc6-dev (>= $(libc_dev_ver)) + LIBC_BIARCH_BUILD_DEP = \ + libc6-dev-amd64 [i386 x32], \ + libc6-dev-sparc64 [sparc], \ + libc6-dev-sparc [sparc64], \ + $(if $(findstring s390x, $(biarch32archs)), libc6-dev-s390 [s390x]$(COMMA)) \ + libc6-dev-s390x [s390], \ + libc6-dev-i386 [amd64 x32], \ + libc6-dev-powerpc [ppc64], \ + libc6-dev-ppc64 [powerpc], \ + lib32gcc-s1 [amd64 ppc64 mipsn32 mipsn32el mips64 mips64el$(if $(findstring s390x, $(biarch32archs)),s390x) sparc64 x32], \ + libn32gcc-s1 [mips mipsel mips64 mips64el], \ + lib64gcc-s1 [i386 mips mipsel mipsn32 mipsn32el powerpc sparc s390 x32], \ + libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el], \ + libc6-dev-mipsn32 [mips mipsel mips64 mips64el], \ + libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el], + ifeq (yes,$(MIPS_R6_ENABLED)) + LIBC_BIARCH_BUILD_DEP = \ + libc6-dev-amd64 [i386 x32], \ + libc6-dev-sparc64 [sparc], \ + libc6-dev-sparc [sparc64], \ + $(if $(findstring s390x, $(biarch32archs)), libc6-dev-s390 [s390x]$(COMMA)) \ + libc6-dev-s390x [s390], \ + libc6-dev-i386 [amd64 x32], \ + libc6-dev-powerpc [ppc64], \ + libc6-dev-ppc64 [powerpc], \ + lib32gcc-s1 [amd64 ppc64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el$(if $(findstring s390x, $(biarch32archs)), s390x) sparc64 x32], \ + libn32gcc-s1 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], \ + lib64gcc-s1 [i386 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el powerpc sparc s390 x32], \ + libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el], \ + libc6-dev-mipsn32 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], \ + libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el], + endif + ifneq (,$(findstring amd64,$(biarchx32archs))) + LIBC_BIARCH_BUILD_DEP += libc6-dev-x32 [amd64 i386], libx32gcc-s1 [amd64 i386], + endif + # FIXME: needed for backports + #LIBC_BIARCH_BUILD_DEP := $(subst gcc-s,gcc,$(LIBC_BIARCH_BUILD_DEP)) +else + LIBC_BUILD_DEP = $(LIBC_DEV_DEP), + ifneq ($(LIBC_BIARCH_DEV_DEP),) + LIBC_BIARCH_BUILD_DEP = $(LIBC_BIARCH_DEV_DEP), + else + LIBC_BIARCH_BUILD_DEP = + endif +endif + +# needed for the include/asm symlink to run the testsuite for +# non default multilibs +ifneq (,$(multilib_archs)) + GCC_MULTILIB_BUILD_DEP = g++-multilib [$(multilib_archs)]$(pf_ncross), +endif + +LIBUNWIND_DEV_DEP := libunwind8-dev$(LS)$(AQ) +LIBUNWIND_BUILD_DEP := $(LIBUNWIND_DEV_DEP) [ia64], +LIBATOMIC_OPS_BUILD_DEP := libatomic-ops-dev$(LS) [ia64], +ifneq ($(DEB_TARGET_ARCH),ia64) + LIBUNWIND_DEV_DEP := # nothing +else ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + LIBUNWIND_DEV_DEP := # nothing +endif + +GMP_BUILD_DEP = libgmp-dev (>= 2:5.0.1~), +MPFR_BUILD_DEP = libmpfr-dev (>= 3.0.0-9~), + +ISL_BUILD_DEP = libisl-dev, +ifeq (,$(filter $(distrelease), jessie stretch precise trusty xenial bionic)) + ISL_BUILD_DEP = libisl-dev (>= 0.20), +endif + +ifneq (,$(filter $(distrelease), precise)) + MPC_BUILD_DEP = libmpc-dev, +else + MPC_BUILD_DEP = libmpc-dev (>= 1.0), +endif + +SOURCE_BUILD_DEP := +ifeq (,$(findstring gcc,$(PKGSOURCE))) + SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)), +endif + +ifneq (,$(filter $(distrelease), precise)) + CHECK_BUILD_DEP := dejagnu$(if $(check_no_archs), [$(check_no_archs)]), git, +else + CHECK_BUILD_DEP := dejagnu$(if $(check_no_archs), [$(check_no_archs)]) ,\ + git$(if $(check_no_archs), [$(check_no_archs)]) , +endif +no_rustc_archs = alpha hppa m68k sh4 x32 +ifeq (,$(filter $(distrelease),stretch buster bullseye trixie trusty xenial bionic focal jammy noble plucky)) + ifeq ($(derivative),Ubuntu) + no_rustc_archs += i386 + endif + # python3-check-jsonschema has unpackaged dependencies + CHECK_BUILD_DEP += python3-pytest [$(foreach a,$(no_rustc_archs),!$(a))] , \ + python3-check-jsonschema [$(foreach a,$(no_rustc_archs),!$(a))] , +endif + +AUTO_BUILD_DEP := m4, libtool, +autoconf_version = 2.69 +ifneq (,$(filter $(distrelease),stretch buster trusty xenial bionic focal groovy)) + autoconf_version = +endif +AUTO_BUILD_DEP += autoconf$(autoconf_version), + +ifeq (,$(filter $(distrelease), precise trusty)) + SDT_BUILD_DEP = systemtap-sdt-dev [linux-any], +endif + +# ensure that the common libs, built from the next GCC version are available +ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + ifneq ($(with_common_libs),yes) + BASE_BUILD_DEP = gcc-16-base, + endif +endif + +ifeq (,$(filter $(distrelease), precise)) + OFFLOAD_BUILD_DEP += nvptx-tools [$(nvptx_archs)], +endif +OFFLOAD_BUILD_DEP += $(AMDGCN_TOOLS_DEP) + +PHOBOS_BUILD_DEP = lib32z1-dev [amd64], lib64z1-dev [i386], +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),precise)) + PHOBOS_BUILD_DEP += libx32z1-dev [amd64 i386], + endif +endif +PHOBOS_BUILD_DEP += unzip , + +ifeq ($(with_m2),yes) + GM2_BUILD_DEP = python3:any, +endif + +ifeq ($(usage_stats),yes) + ifeq (,$(no_usage_archs)) + USAGE_BUILD_DEP = python3:any, python3-psutil, python3-matplotlib, + else + USAGE_BUILD_DEP = python3:any, \ + python3-psutil [$(foreach a,$(no_usage_archs),!$(a))], \ + python3-matplotlib [$(foreach a,$(no_usage_archs),!$(a))], + endif +endif + +DEBHELPER_BUILD_DEP = debhelper (>= 11), + +PKGCONF_BUILD_DEP = pkgconf, +ifneq (,$(filter $(distrelease),wheezy jessie stretch buster bullseye bookworm precise trusty xenial bionic focal jammy)) + PKGCONF_BUILD_DEP = pkg-config, +endif + +ifneq ($(DEB_CROSS),yes) +# all archs for which to create b-d's +any_archs := alpha amd64 armel armhf arm64 i386 loong64 mips mipsel mips64 mips64el mipsn32 powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 +ifeq (,$(filter $(distrelease), jessie stretch buster precise xenial bionic)) + any_archs := $(filter-out mips, $(any_archs)) +endif +ifneq (,$(filter $(distrelease), jessie stretch buster precise xenial bionic jammy)) + any_archs := $(filter-out loong64, $(any_archs)) +endif +ifeq (yes,$(MIPS_R6_ENABLED)) + any_archs += mipsn32el mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el +endif +ifeq (,$(filter $(DEB_HOST_ARCH),$(any_archs))) + any_archs += $(DEB_HOST_ARCH) +endif + +arch_gnutype_map := $(foreach a,$(any_archs),$(a)=$(shell CC=true dpkg-architecture -f -a$(a) -qDEB_HOST_GNU_TYPE)) +_gnu_type = $(subst $1=,,$(filter $1=%,$(arch_gnutype_map))) +_gnu_suffix = -$(subst _,-,$(call _gnu_type,$1)) + +ifneq (,$(filter $(distrelease),precise trusty)) + TARGET_TOOL_BUILD_DEP = bash, # non-empty line + pf_cross = + pf_ncross = +else + TARGET_TOOL_BUILD_DEP = \ + g++-$(BASE_VERSION)-for-host , \ + gobjc-$(BASE_VERSION)-for-host [!avr] , \ + gfortran-$(BASE_VERSION)-for-host , \ + gdc-$(BASE_VERSION)-for-host $(if $(d_no_archs),[$(d_no_archs)] ), \ + gccgo-$(BASE_VERSION)-for-host $(if $(go_no_archs),[$(go_no_archs)] ), \ + gnat-$(BASE_VERSION)-for-host $(if $(ada_no_archs),[$(ada_no_archs)] ), \ + gm2-$(BASE_VERSION)-for-host $(if $(m2_no_archs),[$(m2_no_archs)] ), \ + gcobol-$(BASE_VERSION)-for-host $(if $(cobol_no_archs),[$(cobol_no_archs)] ), \ + ga68-$(BASE_VERSION)-for-host $(if $(algol_no_archs),[$(algol_no_archs)] ), + # FIXME: gccrs not yet built as a cross compiler, macros constraints + pf_cross = $(SPACE) + pf_ncross = $(SPACE) + NT = :native +endif + +LIBSTDCXX_BUILD_INDEP = doxygen , graphviz , \ + ghostscript , texlive-latex-base , xsltproc , \ + libxml2-utils , docbook-xsl-ns , + +GO_BUILD_DEP := netbase, + +RS_BUILD_DEP := cargo [$(rs_no_archs)], + +# try to build with itself, or with the last version +# require at least GCC 9 for the bootstrap, anything else is untested +ifneq (,$(filter $(distrelease), buster bullseye precise trusty)) + gnat_build_dep := gnat-9$(NT) [$(ada_no_archs)], g++-9$(NT) + gdc_build_dep := gdc-9$(NT) [$(d_no_archs)] +else ifneq (,$(filter $(distrelease), bookworm xenial)) + gnat_build_dep := gnat-11$(NT) [$(ada_no_archs)], g++-11$(NT) + gdc_build_dep := gdc-11$(NT) [$(d_no_archs)] +else ifneq (,$(filter $(distrelease), bionic focal jammy noble)) + gnat_build_dep := gnat-13$(NT) [$(ada_no_archs)], g++-13$(NT) + gdc_build_dep := gdc-13$(NT) [$(d_no_archs)] +else ifneq (,$(filter $(distrelease), trixie)) + gnat_build_dep := gnat-14$(NT) [$(ada_no_archs)], g++-14$(NT) + gdc_build_dep := gdc-14$(NT) [$(d_no_archs)] +else + gnat_build_dep := gnat-15$(NT) [$(ada_no_archs)], g++-15$(NT) + gdc_build_dep := gdc-15$(NT) [$(d_no_archs)] +endif +ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + gnat_build_dep := + gdc_build_dep := +endif + +ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + # Build gnat as part of the combined gcc-x.y source package. Do not fail + # if gnat is not present on unsupported architectures; the build scripts + # will not use gnat anyway. + GNAT_BUILD_DEP := $(gnat_build_dep), + GDC_BUILD_DEP := $(gdc_build_dep), +else ifeq ($(single_package),yes) + # Ditto, as part of the gcc-snapshot package. + GNAT_BUILD_DEP := $(gnat_build_dep), + GDC_BUILD_DEP := $(gdc_build_dep), +endif + + +else +# build cross compiler + CROSS_BUILD_DEP := libc6-dev$(cross_lib_arch), +ifneq (,$(findstring cross-build-,$(build_type))) + CROSS_BUILD_DEP += zlib1g-dev$(cross_lib_arch), libmpfr-dev$(cross_lib_arch), +endif + SOURCE_BUILD_DEP := + ifeq (,$(findstring gcc,$(PKGSOURCE))) + SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)), + endif + GNAT_BUILD_DEP := gnat-$(BASE_VERSION), + ifneq (,$(filter !$(DEB_TARGET_ARCH),$(ada_no_archs))) + GNAT_BUILD_DEP := + endif + GDC_BUILD_DEP := gdc-$(BASE_VERSION), + ifneq (,$(filter !$(DEB_TARGET_ARCH),$(d_no_archs))) + GDC_BUILD_DEP := + endif + ifeq (yes_,$(with_m2)_$(filter !$(DEB_TARGET_ARCH),$(m2_no_archs))) + GM2_BUILD_DEP += gm2-$(BASE_VERSION), + endif + ifeq (yes_,$(with_cobol)_$(filter !$(DEB_TARGET_ARCH),$(cobol_no_archs))) + COBOL_BUILD_DEP += gcobol-$(BASE_VERSION), + endif + ifeq (yes_,$(with_ga68)_$(filter !$(DEB_TARGET_ARCH),$(algol_no_archs))) + GA68_BUILD_DEP += ga68-$(BASE_VERSION), + endif + arch_gnutype_map = $(DEB_TARGET_ARCH)=$(TARGET_ALIAS) +endif # cross compiler + +BASE_BREAKS := gnat (<< 7) +# these would need proper updates, and are only needed for upgrades +ifneq (,$(filter $(distrelease),stretch jessie trusty xenial bionic)) + BASE_BREAKS := +endif + +# FIXME: can these be dropped? In the end the libgcc_s.so.1 remained in the same location. +ifneq (,$(filter $(DEB_HOST_ARCH), arm64 s390x sparc64)) + ifeq (,$(filter $(distrelease), jessie stretch buster trusty xenial bionic)) + LIBGCC_BREAKS := libgcc-9-dev (<< 9.2.1-26), libgcc-8-dev (<< 8.3.0-27), libgcc-7-dev (<< 7.5.0-4), + endif +endif +ifneq (,$(filter $(distrelease),sid bullseye focal)) + LIBGCC_BREAKS += cryptsetup-initramfs (<< 2:2.2.2-3~), +endif + +# The numeric part of the gcc version number (x.yy.zz) +NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \ + awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}') +# first version with a new path component in gcc_lib_dir (i.e. GCC_VERSION +# or TARGET_ALIAS changes), or last version available for all architectures +DEB_GCC_SOFT_VERSION := 15 +DEB_GNAT_SOFT_VERSION := 15 + +ifeq ($(with_d),yes) + GDC_VERSION := $(BASE_VERSION) + DEB_GDC_VERSION := $(DEB_VERSION) +endif + +ifeq ($(with_m2),yes) + GM2_VERSION := $(BASE_VERSION) + DEB_GM2_VERSION := $(DEB_VERSION) +endif + +# semiautomatic ... +DEB_SOVERSION := $(DEB_VERSION) +DEB_SOVERSION := 5 +DEB_SOEVERSION := $(EPOCH):5 +DEB_STDCXX_SOVERSION := 5 +DEB_GOMP_SOVERSION := $(DEB_SOVERSION) + +DEB_GCC_VERSION := $(DEB_VERSION) + +DEB_GNAT_VERSION := $(DEB_VERSION) + +GNAT_VERSION := $(BASE_VERSION) + +LIBGNAT_DEP := +ifeq ($(with_libgnat),yes) + LIBGNAT_DEP := libgnat-$(GNAT_VERSION)$(LS)$(AQ) (>= $${gcc:Version}) +endif + +pkg_ver := -$(BASE_VERSION) + +ctrl_flags = \ + -DBINUTILSV=$(BINUTILSV) \ + -DBINUTILSBDV=$(BINUTILSBDV) \ + -DSRCNAME=$(PKGSOURCE) \ + -D__$(DEB_TARGET_GNU_CPU)__ \ + -DARCH=$(DEB_TARGET_ARCH) \ + -DDIST=$(distribution) \ + -DLOCALES=$(LOCALES) \ + +ctrl_flags += \ + -DLIBC_DEV_DEP="$(LIBC_DEV_DEP)" \ + -DLIBC_BIARCH_BUILD_DEP="$(LIBC_BIARCH_BUILD_DEP)" \ + -DLIBC_DBG_DEP="$(LIBC_DBG_DEP)" \ + -DBASE_BUILD_DEP="$(BASE_BUILD_DEP)" \ + -DFORTRAN_BUILD_DEP="$(FORTRAN_BUILD_DEP)" \ + -DGNAT_BUILD_DEP="$(GNAT_BUILD_DEP)" \ + -DGO_BUILD_DEP="$(GO_BUILD_DEP)" \ + -DLIBSTDCXX_BUILD_INDEP="$(LIBSTDCXX_BUILD_INDEP)" \ + -DGDC_BUILD_DEP="$(GDC_BUILD_DEP)" \ + -DBINUTILS_BUILD_DEP="$(BINUTILS_BUILD_DEP)" \ + -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \ + -DCHECK_BUILD_DEP="$(CHECK_BUILD_DEP)" \ + -DAUTO_BUILD_DEP="$(AUTO_BUILD_DEP)" \ + -DSDT_BUILD_DEP="$(SDT_BUILD_DEP)" \ + -DISL_BUILD_DEP="$(ISL_BUILD_DEP)" \ + -DGMP_BUILD_DEP="$(GMP_BUILD_DEP)" \ + -DMPFR_BUILD_DEP="$(MPFR_BUILD_DEP)" \ + -DMPC_BUILD_DEP="$(MPC_BUILD_DEP)" \ + -DDEBHELPER_BUILD_DEP="$(DEBHELPER_BUILD_DEP)" \ + -DPKGCONF_BUILD_DEP="$(PKGCONF_BUILD_DEP)" \ + -DDPKG_BUILD_DEP="$(DPKG_BUILD_DEP)" \ + -DSOURCE_BUILD_DEP="$(SOURCE_BUILD_DEP)" \ + -DCROSS_BUILD_DEP="$(CROSS_BUILD_DEP)" \ + -DGCC_MULTILIB_BUILD_DEP='$(GCC_MULTILIB_BUILD_DEP)' \ + -DTARGET_TOOL_BUILD_DEP='$(TARGET_TOOL_BUILD_DEP)' \ + -DPHOBOS_BUILD_DEP="$(PHOBOS_BUILD_DEP)" \ + -DGM2_BUILD_DEP="$(GM2_BUILD_DEP)" \ + -DRS_BUILD_DEP="$(RS_BUILD_DEP)" \ + -DOFFLOAD_BUILD_DEP="$(OFFLOAD_BUILD_DEP)" \ + -DUSAGE_BUILD_DEP="$(USAGE_BUILD_DEP)" \ + -DAMDGCN_TOOLS_DEP="$(AMDGCN_TOOLS_DEP)" \ + -DARCH_GNUTYPE_MAP="$(arch_gnutype_map)" \ + -DMULTILIB_ARCHS="$(multilib_archs)" \ + -DTP=$(TP) \ + -DTS=$(TS) \ + -DLS=$(LS) \ + -DAQ=$(AQ) \ + -DNT=$(NT) + +ifeq ($(DEB_CROSS),yes) + ctrl_flags += \ + -DTARGET=$(DEB_TARGET_ARCH) \ + -DLIBUNWIND_BUILD_DEP="$(LIBUNWIND_BUILD_DEP)" \ + -DLIBATOMIC_OPS_BUILD_DEP="$(LIBATOMIC_OPS_BUILD_DEP)" + ifeq ($(DEB_STAGE),rtlibs) + ctrl_flags += -DCROSS_ARCH=$(DEB_TARGET_ARCH) + endif +else + # add '-DPRI=optional' to ctrl_flags if this is not the default compiler + # ctrl_flags += \ + # -DPRI=optional +endif + +ifeq ($(with_base_only),yes) + ctrl_flags += \ + -DBASE_ONLY=yes +endif + +ifeq ($(with_multiarch_lib),yes) + ctrl_flags += \ + -DMULTIARCH=yes +endif + +ctrl_flags += -DBUILD_DEP_FOR_BINUTILS="$(if $(filter yes, $(with_binutils)),$(bd_binutils_only))" + +control: control-file readme-bugs-file parameters-file symbols-files copyright-file substvars-file versioned-files check-versions + +# stage1 and stage2 compilers are only C +ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + languages = c + addons = gccbase cdev plugindev + ifeq ($(with_gcclbase),yes) + addons += gcclbase + endif + ifeq ($(multilib),yes) + addons += multilib + endif + addons += $(if $(findstring amd64,$(biarchx32archs)),x32dev) + ifeq ($(DEB_STAGE),stage2) + addons += libgcc + ifeq ($(multilib),yes) + addons += lib32gcc lib64gcc libn32gcc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) + endif + else + LIBC_BIARCH_DEV_DEP := + endif +else +languages = c c++ fortran objc objpp +ifeq ($(DEB_STAGE),rtlibs) + ifeq (,$(filter libgfortran, $(with_rtlibs))) + languages := $(filter-out fortran, $(languages)) + endif + ifeq (,$(filter libobjc, $(with_rtlibs))) + languages := $(filter-out objc objpp, $(languages)) + endif +endif +ifeq ($(with_dbg),yes) + addons += libdbg +endif +ifeq ($(with_gccbase),yes) + addons += gccbase +endif +ifeq ($(with_gcclbase),yes) + addons += gcclbase +endif +ifneq ($(DEB_STAGE),rtlibs) + addons += cdev c++dev source multilib + ifeq ($(build_type),build-native) + addons += testresults + endif + ifneq (,$(filter fortran, $(languages))) + addons += fdev + endif + ifneq (,$(filter objc, $(languages))) + addons += objcdev + endif + ifneq (,$(filter objpp, $(languages))) + addons += objppdev + endif + addons += plugindev +endif +addons += $(if $(findstring amd64,$(biarchx32archs)),x32dev) +ifeq ($(with_libgcc),yes) + addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) + ifeq ($(with_libcompatgcc),yes) + addons += libcompatgcc + endif +endif +ifeq ($(with_libcxx),yes) + addons += libcxx lib32cxx lib64cxx libn32cxx + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32cxx) +endif +addons += $(if $(findstring amd64,$(biarchx32archs)),libx32dbgcxx) +ifeq ($(with_libgfortran),yes) + addons += libgfortran lib32gfortran lib64gfortran libn32gfortran + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gfortran) +endif +ifeq ($(with_libobjc),yes) + addons += libobjc lib32objc lib64objc libn32objc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32objc) +endif +ifeq ($(with_libgomp),yes) + addons += libgomp lib32gomp lib64gomp libn32gomp + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gomp) +endif +ifeq ($(with_libitm),yes) + addons += libitm lib32itm lib64itm libn32itm + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32itm) +endif +ifeq ($(with_libatomic),yes) + addons += libatomic lib32atomic lib64atomic libn32atomic + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32atomic) +endif +ifeq ($(with_libbacktrace),yes) + addons += libbtrace lib32btrace lib64btrace libn32btrace + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32btrace) +endif +ifeq ($(with_libasan),yes) + addons += libasan lib32asan lib64asan libn32asan + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32asan) +endif +ifeq ($(with_liblsan),yes) + addons += liblsan + ifneq (,$(filter $(distrelease),lunar jammy focal)) + addons += lib32lsan lib64lsan libn32lsan + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32lsan) + endif +endif +ifeq ($(with_libtsan),yes) + addons += libtsan + addons += libtsan #lib32tsan lib64tsan libn32tsan + #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32tsan) +endif +ifeq ($(with_libubsan),yes) + addons += libubsan lib32ubsan lib64ubsan libn32ubsan + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ubsan) +endif +ifeq ($(with_libhwasan),yes) + addons += libhwasan +endif +ifeq ($(with_vtv),yes) + addons += libvtv lib32vtv lib64vtv #libn32vtv + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32vtv) +endif +ifeq ($(with_libqmath),yes) + addons += libqmath lib32qmath lib64qmath libn32qmath + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32qmath) +endif +ifeq ($(with_jit),yes) + addons += jit gdiag +endif +ifeq ($(with_libgccjit),yes) + addons += libjit +endif +ifeq ($(with_libdiag),yes) + addons += libdiag +endif +ifeq ($(with_offload_nvptx),yes) + addons += olnvptx gompnvptx +endif +ifeq ($(with_offload_gcn),yes) + addons += olgcn gompgcn +endif +ifeq ($(with_offload_hsa),yes) + addons += olhsa gomphsa +endif +ifeq ($(with_libcc1),yes) + addons += libcc1 +endif +ifeq ($(with_d),yes) + languages += d + ifeq ($(with_libphobos),yes) + addons += libphobos libn32phobos + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32phobos) + endif + ifeq ($(with_libphobosdev),yes) + addons += libdevphobos libdevn32phobos + addons += $(if $(findstring amd64,$(biarchx32archs)),libdevx32phobos) + endif +endif +ifeq ($(with_go),yes) + addons += ggo godev + ifeq ($(with_libgo),yes) + addons += libggo lib32ggo lib64ggo libn32ggo + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ggo) + endif +endif +ifeq ($(with_m2),yes) + languages += m2 + addons += libdevgm2 + ifeq ($(with_libgm2),yes) + addons += libgm2 # lib32gm2 lib64gm2 libn32gm2 + #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gm2) + endif +endif +ifeq ($(with_cobol),yes) + languages += cobol + addons += libdevgcobol + ifeq ($(with_libgcobol),yes) + addons += libgcobol # lib32gcobol lib64gcobol libn32gcobol + #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcobol) + endif +endif +ifeq ($(with_algol),yes) + languages += algol + addons += libdevga68 + ifeq ($(with_libga68),yes) + addons += libga68 # lib32ga68 lib64ga68 libn32ga68 + #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ga68) + endif +endif +ifeq ($(with_rs),yes) + languages += rust + #addons += libdevgrs + #ifeq ($(with_libgrs),yes) + # addons += libgrs # lib32gm2 lib64gm2 libn32gm2 + # #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gm2) + #endif +endif +ifeq ($(with_ada),yes) + languages += ada + addons += libgnat libs # libgmath libnof lib64gnat ssp + ifeq ($(with_gnatsjlj),yes) + addons += adasjlj + endif +endif + + ifneq ($(DEB_CROSS),yes) + endif # DEB_CROSS + ifeq ($(with_separate_libgo),yes) + ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + languages := $(filter-out go,$(languages)) + addons := $(filter-out ggo godev libggo lib64ggo lib32ggo libn32ggo libx32ggo,$(addons)) + endif + ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION)) + languages = go + addons = ggo godev libggo lib64ggo lib32ggo libn32ggo gccbase multilib + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ggo) + ifeq ($(with_standalone_go),yes) + addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) + ifeq ($(with_libcc1),yes) + addons += libcc1 + endif + endif + endif + endif + ifeq ($(with_standalone_go),yes) + ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION)) + ctrl_flags += -DSTANDALONEGO + endif + endif + ifneq ($(DEB_CROSS),yes) # no docs for cross compilers + ifneq ($(GFDL_INVARIANT_FREE),yes) + addons += gfdldoc + endif + endif +endif # not stage + +control-file: + echo "addons: $(addons)"; \ + m4 $(ctrl_flags) \ + -DPV=$(pkg_ver) \ + -DCXX_SO=$(CXX_SONAME) \ + -DGCC_SO=$(GCC_SONAME) \ + -DOBJC_SO=$(OBJC_SONAME) \ + -DFORTRAN_SO=$(FORTRAN_SONAME) \ + -DGNAT_SO=$(GNAT_SONAME) \ + -DGNAT_V=$(GNAT_VERSION) \ + -DPHOBOS_V=$(GPHOBOS_SONAME) \ + -DGM2_V=$(GM2_SONAME) \ + -DGDRUNTIME_V=$(GDRUNTIME_SONAME) \ + -DGCOBOL_V=$(GCOBOL_SONAME) \ + -DGA68_V=$(GA68_SONAME) \ + -DGOMP_SO=$(GOMP_SONAME) \ + -DITM_SO=$(ITM_SONAME) \ + -DATOMIC_SO=$(ATOMIC_SONAME) \ + -DBTRACE_SO=$(BTRACE_SONAME) \ + -DASAN_SO=$(ASAN_SONAME) \ + -DLSAN_SO=$(LSAN_SONAME) \ + -DTSAN_SO=$(TSAN_SONAME) \ + -DUBSAN_SO=$(UBSAN_SONAME) \ + -DHWASAN_SO=$(HWASAN_SONAME) \ + -DVTV_SO=$(VTV_SONAME) \ + -DQMATH_SO=$(QUADMATH_SONAME) \ + -DSSP_SO=$(SSP_SONAME) \ + -DGO_SO=$(GO_SONAME) \ + -DCC1_SO=$(CC1_SONAME) \ + -DGCCJIT_SO=$(GCCJIT_SONAME) \ + -DDIAGNOSTICS_SO=$(DIAGNOSTICS_SONAME) \ + -Denabled_languages="$(languages) $(addons)" \ + -Dada_no_archs="$(ada_no_archs)" \ + -Dfortran_no_archs="$(fortran_no_archs)" \ + -Dgo_no_archs="$(go_no_archs)" \ + -Dd_no_archs="$(d_no_archs)" \ + -Dm2_no_archs="$(m2_no_archs)" \ + -Drs_no_archs="$(rs_no_archs)" \ + -Dcobol_no_archs="$(cobol_no_archs)" \ + -Dalgol68_no_archs="$(algol68_no_archs)" \ + -Dlibgc_no_archs="$(libgc_no_archs)" \ + -Dlibphobos_archs="$(phobos_archs)" \ + -Dlibphobos_no_archs="$(phobos_no_archs)" \ + -Dcheck_no_archs="$(check_no_archs)" \ + -Dlocale_no_archs="$(locale_no_archs)" \ + -Dlinux_gnu_archs="$(linux_gnu_archs)" \ + -Dbiarch32_archs="$(strip $(subst /, ,$(biarch32archs)))" \ + -Dbiarch64_archs="$(strip $(subst /, ,$(biarch64archs)))" \ + -Dbiarchn32_archs="$(strip $(subst /, ,$(biarchn32archs)))" \ + -Dbiarchx32_archs="$(strip $(subst /, ,$(biarchx32archs)))" \ + -Dnvptx_archs="$(nvptx_archs)" \ + -Dgcn_archs="$(gcn_archs)" \ + -Dbiarch32_conflicts="$(biarch32_conflicts)" \ + -Dadd_built_using=$(add_built_using) \ + -DGCC_PORTS_BUILD=$(GCC_PORTS_BUILD) \ + $(if $(findstring build-native, $(build_type)), \ + $(if $(filter $(distrelease),jessie stretch buster xenial bionic focal),,-DLIBGCCPROTECTED=1)) \ + debian/control.m4 > debian/control.tmp2 + uniq debian/control.tmp2 | grep -v '^ *, *$$' | sed -E '/^Build/s/ *, +/, /g;/^ /s/, +/, /g;/^ /s/ *,/,/g; s/ +$$//' \ + $(if $(filter yes, $(with_base_only)), | awk '/^$$/ {if (p) exit; else p=1; } {print}') \ + > debian/control.tmp + rm -f debian/control.tmp2 + [ -e debian/control ] \ + && cmp -s debian/control debian/control.tmp \ + && rm -f debian/control.tmp && exit 0; \ + mv debian/control.tmp debian/control; touch $(control_stamp) + +readme-bugs-file: + m4 -DDIST=$(distribution) -DSRCNAME=$(PKGSOURCE) \ + debian/README.Bugs.m4 > debian/README.Bugs + +copyright-file: + rm -f debian/copyright + if echo $(SOURCE_VERSION) | grep -E ^'[0-9][0-9]*\.[0-9]-[0-9]{8}' ; \ + then SVN_BRANCH="trunk" ; \ + else \ + SVN_BRANCH="gcc-$(subst .,_,$(BASE_VERSION))-branch" ; \ + fi ; \ + sed debian/copyright.in \ + -e "s/@BV@/$(BASE_VERSION)/g" \ + -e "s/@SVN_BRANCH@/$$SVN_BRANCH/g" \ + > debian/copyright + +substvars-file: control-file + rm -f debian/substvars.local.tmp + ( \ + echo 'libgcc:Version=$(DEB_GCC_VERSION)'; \ + echo 'gcc:Version=$(DEB_GCC_VERSION)'; \ + echo 'gcc:EpochVersion=$(DEB_EVERSION)'; \ + echo 'gcc:SoftVersion=$(DEB_GCC_SOFT_VERSION)'; \ + echo 'gdc:Version=$(DEB_GDC_VERSION)'; \ + echo 'gm2:Version=$(DEB_GM2_VERSION)'; \ + echo 'gnat:Version=$(DEB_GNAT_VERSION)'; \ + echo 'gnat:SoftVersion=$(DEB_GNAT_SOFT_VERSION)'; \ + echo 'gcobol:Version=$(DEB_GCC_VERSION)'; \ + echo 'ga68:Version=$(DEB_GCC_VERSION)'; \ + echo 'binutils:Version=$(BINUTILSV)'; \ + echo 'dep:libgcc=$(LIBGCC_DEP)'; \ + echo 'dep:libgccdev=$(LIBGCC_DEV_DEP)'; \ + echo 'dep:libgccbiarch=$(libgcc-sbiarch)'; \ + echo 'dep:libgccbiarchdev=$(libgccbiarchdev)'; \ + echo 'dep:libc=$(LIBC_DEP) (>= $(libc_ver))'; \ + echo 'dep:libcdev=$(LIBC_DEV_DEP)'; \ + echo 'dep:libcbiarch=$(LIBC_BIARCH_DEP)'; \ + echo 'dep:libcbiarchdev=$(LIBC_BIARCH_DEV_DEP)'; \ + echo 'dep:libunwinddev=$(LIBUNWIND_DEV_DEP)'; \ + echo 'dep:libcxxbiarchdev=$(libstdc++biarchdev)'; \ + echo 'dep:libcxxbiarchdbg=$(libstdc++biarchdbg)'; \ + echo 'dep:libgnat=$(LIBGNAT_DEP)'; \ + echo 'base:Breaks=$(BASE_BREAKS)'; \ + echo 'libgcc:Breaks=$(LIBGCC_BREAKS)'; \ + echo 'target:suffix=-$(subst _,-,$(TARGET_ALIAS))'; \ + ) > debian/substvars.local.tmp +ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs))) + ( \ + echo 'gcc:multilib=gcc-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gxx:multilib=g++-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gobjc:multilib=gobjc-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gobjcxx:multilib=gobjc++-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gfortran:multilib=gfortran-$(BASE_VERSION)-multilib$(TS)'; \ + ) >> debian/substvars.local.tmp +endif +ifeq ($(with_gold),yes) + echo 'dep:gold=binutils-gold (>= $(BINUTILSV))' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_libssp),yes) + echo 'dep:libssp=libssp$(SSP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_gomp),yes) + echo 'dep:libgomp=libgomp$(GOMP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_itm),yes) + echo 'dep:libitm=libitm$(ITM_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_atomic),yes) + echo 'dep:libatomic=libatomic$(ATOMIC_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_libbacktrace),yes) + echo 'dep:libbacktrace=libbtrace$(BTRACE_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_asan),yes) + echo 'dep:libasan=libasan$(ASAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lsan),yes) + echo 'dep:liblsan=liblsan$(LSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_tsan),yes) + echo 'dep:libtsan=libtsan$(TSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_ubsan),yes) + echo 'dep:libubsan=libubsan$(UBSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_hwasan),yes) + echo 'dep:libhwasan=libhwasan$(HWASAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_vtv),yes) + echo 'dep:libvtv=libvtv$(VTV_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_qmath),yes) + echo 'dep:libqmath=libquadmath$(QUADMATH_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(distribution),Debian) + echo 'dep:libx32z=$(if $(filter $(distribution), Debian),,libx32z1-dev)' \ + >> debian/substvars.local.tmp +endif +ifeq ($(multilib),yes) + echo 'dep:libgfortranbiarchdev=$(libgfortranbiarchdev)' \ + >> debian/substvars.local.tmp + echo 'dep:libobjcbiarchdev=$(libobjcbiarchdev)' \ + >> debian/substvars.local.tmp + ifeq ($(with_phobos),yes) + echo 'dep:libphobosbiarchdev=$(libgphobosbiarchdev)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_libssp),yes) + echo 'dep:libsspbiarch=$(libsspbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_gomp),yes) + echo 'dep:libgompbiarch=$(libgompbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_itm),yes) + echo 'dep:libitmbiarch=$(libitmbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_atomic),yes) + echo 'dep:libatomicbiarch=$(libatomicbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_libbacktrace),yes) + echo 'dep:libbtracebiarch=$(libbtracebiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_asan),yes) + echo 'dep:libasanbiarch=$(libasanbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_lsan),yes) + #echo 'dep:liblsanbiarch=$(liblsanbiarch)' \ + # >> debian/substvars.local.tmp + endif + ifeq ($(with_tsan),yes) + #echo 'dep:libtsanbiarch=$(libtsanbiarch)' \ + # >> debian/substvars.local.tmp + endif + ifeq ($(with_ubsan),yes) + echo 'dep:libubsanbiarch=$(libubsanbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_hwasan),yes) + # amd64 hwasan not available for 32/x32 + ifeq ($(DEB_TARGET_ARCH),amd64) + else + echo 'dep:libhwasanbiarch=$(libhwasanbiarch)' \ + >> debian/substvars.local.tmp + endif + endif + ifeq ($(with_vtv),yes) + echo 'dep:libvtvbiarch=$(libvtvbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_qmath),yes) + echo 'dep:libqmathbiarch=$(libquadmathbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_go),yes) + echo 'dep:libgobiarchdev=$(libgobiarchdev)' \ + >> debian/substvars.local.tmp + echo 'dep:libgobiarch=$(libgobiarch)' \ + >> debian/substvars.local.tmp + endif +endif +ifeq ($(DEB_CROSS),yes) + echo 'dep:gdccross=gdc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_phobos),yes) + echo 'dep:phobosdev=libgphobos$(pkg_ver)-dev$(LS)$(AQ) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp + ifeq ($(DEB_CROSS),yes) + : # FIXME: make the cross gdc aware of both include paths + echo 'dep:gdccross=gdc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_libphobosdev),yes) + echo 'dep:libphobosbiarchdev=$(libgphobosbiarchdev)' \ + >> debian/substvars.local.tmp + echo 'dep:libphobosbiarch=$(libgphobosbiarch)' \ + >> debian/substvars.local.tmp + endif +endif +ifeq ($(with_cc1),yes) + ifneq (,$(findstring build-cross, $(build_type))) + echo 'dep:libcc1=libcc1-$(CC1_SONAME) (>= $${gcc:SoftVersion})' \ + >> debian/substvars.local.tmp + else + echo 'dep:libcc1=libcc1-$(CC1_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp + endif +endif +ifeq ($(DEB_HOST_ARCH),hppa) + echo 'dep:prctl=prctl' >> debian/substvars.local.tmp +endif +ifeq ($(derivative)-$(DEB_HOST_ARCH),Debian-amd64) + echo 'confl:lib32=libc6-i386 (<< 2.9-22)' >> debian/substvars.local.tmp +endif +ifeq ($(with_multiarch_lib),yes) + echo 'multiarch:breaks=gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)' >> debian/substvars.local.tmp +endif + echo 'golang:Conflicts=golang-go (<< 2:1.3.3-1ubuntu2)' >> debian/substvars.local.tmp +ifeq ($(add_built_using),yes) + echo "Built-Using=$(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W gcc$(pkg_ver)-source)" \ + >> debian/substvars.local.tmp +endif + v=`sed -n '/^#define MOD_VERSION/s/.* "\([0-9]*\)"/\1/p' \ + $(srcdir)/gcc/fortran/module.cc`; \ + echo "fortran:mod-version=gfortran-mod-$$v" >> debian/substvars.local.tmp + + [ -e debian/substvars.local ] \ + && cmp -s debian/substvars.local debian/substvars.local.tmp \ + && rm -f debian/substvars.local.tmp && exit 0; \ + mv debian/substvars.local.tmp debian/substvars.local; \ + touch $(control_stamp) + +parameters-file: + rm -f debian/rules.parameters.tmp + ( \ + echo '# configuration parameters taken from upstream source files'; \ + echo 'GCC_VERSION := $(GCC_VERSION)'; \ + echo 'NEXT_GCC_VERSION := $(NEXT_GCC_VERSION)'; \ + echo 'BASE_VERSION := $(BASE_VERSION)'; \ + echo 'SOURCE_VERSION := $(SOURCE_VERSION)'; \ + echo 'DEB_VERSION := $(DEB_VERSION)'; \ + echo 'DEB_EVERSION := $(DEB_EVERSION)'; \ + echo 'DEB_GDC_VERSION := $(DEB_GDC_VERSION)'; \ + echo 'DEB_SOVERSION := $(DEB_SOVERSION)'; \ + echo 'DEB_SOEVERSION := $(DEB_SOEVERSION)'; \ + echo 'DEB_LIBGCC_SOVERSION := $(DEB_LIBGCC_SOVERSION)'; \ + echo 'DEB_LIBGCC_VERSION := $(DEB_LIBGCC_VERSION)'; \ + echo 'DEB_STDCXX_SOVERSION := $(DEB_STDCXX_SOVERSION)'; \ + echo 'DEB_GOMP_SOVERSION := $(DEB_GOMP_SOVERSION)'; \ + echo 'GCC_SONAME := $(GCC_SONAME)'; \ + echo 'CXX_SONAME := $(CXX_SONAME)'; \ + echo 'FORTRAN_SONAME := $(FORTRAN_SONAME)'; \ + echo 'OBJC_SONAME := $(OBJC_SONAME)'; \ + echo 'GDC_VERSION := $(GDC_VERSION)'; \ + echo 'GNAT_VERSION := $(GNAT_VERSION)'; \ + echo 'GNAT_SONAME := $(GNAT_SONAME)'; \ + echo 'FFI_SONAME := $(FFI_SONAME)'; \ + echo 'SSP_SONAME := $(SSP_SONAME)'; \ + echo 'GOMP_SONAME := $(GOMP_SONAME)'; \ + echo 'ITM_SONAME := $(ITM_SONAME)'; \ + echo 'ATOMIC_SONAME := $(ATOMIC_SONAME)'; \ + echo 'BTRACE_SONAME := $(BTRACE_SONAME)'; \ + echo 'ASAN_SONAME := $(ASAN_SONAME)'; \ + echo 'LSAN_SONAME := $(LSAN_SONAME)'; \ + echo 'TSAN_SONAME := $(TSAN_SONAME)'; \ + echo 'UBSAN_SONAME := $(UBSAN_SONAME)'; \ + echo 'HWASAN_SONAME := $(HWASAN_SONAME)'; \ + echo 'VTV_SONAME := $(VTV_SONAME)'; \ + echo 'QUADMATH_SONAME := $(QUADMATH_SONAME)'; \ + echo 'GO_SONAME := $(GO_SONAME)'; \ + echo 'CC1_SONAME := $(CC1_SONAME)'; \ + echo 'GCCJIT_SONAME := $(GCCJIT_SONAME)'; \ + echo 'GPHOBOS_SONAME := $(GPHOBOS_SONAME)'; \ + echo 'GDRUNTIME_SONAME := $(GDRUNTIME_SONAME)'; \ + echo 'GM2_SONAME := $(GM2_SONAME)'; \ + echo 'DIAGNOSTICS_SONAME:= $(DIAGNOSTICS_SONAME)'; \ + echo 'GCOBOL_SONAME := $(GCOBOL_SONAME)'; \ + echo 'GA68_SONAME := $(GA68_SONAME)'; \ + echo 'LIBC_DEP := $(LIBC_DEP)'; \ + ) > debian/rules.parameters.tmp + [ -e debian/rules.parameters ] \ + && cmp -s debian/rules.parameters debian/rules.parameters.tmp \ + && rm -f debian/rules.parameters.tmp && exit 0; \ + mv debian/rules.parameters.tmp debian/rules.parameters; \ + touch $(control_stamp) + +symbols-files: control-file +ifeq ($(DEB_CROSS),yes) + ifneq ($(DEB_STAGE),rtlibs) + test -n "$(LS)" + set -e; \ + for p in $$(dh_listpackages -i | grep '^lib'); do \ + p=$${p%$(LS)}; \ + if [ -f debian/$$p.symbols.$(DEB_TARGET_ARCH) ]; then \ + f=debian/$$p.symbols.$(DEB_TARGET_ARCH); \ + elif [ -f debian/$$p.symbols ]; then \ + f=debian/$$p.symbols; \ + else \ + continue; \ + fi; \ + link=debian/$$p$(LS).symbols; \ + if [ -L $$link ]; then \ + echo >&2 "removing left over symbols file link: $$link"; \ + rm -f $$link; \ + fi; \ + ln -s $$f $$link; \ + done + endif +endif + +versioned-files: + fs=`echo debian/*BV* debian/*CXX* debian/*LC* | sort -u`; \ + for f in $$fs; do \ + [ -f $$f ] || echo "CANNOT FIND $$f"; \ + [ -f $$f ] || continue; \ + if [ -z "$(DEB_CROSS)" ]; then case "$$f" in *-CR*) continue; esac; fi; \ + f2=$$(echo $$f \ + | sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \ + sed -e 's/@BV@/$(BASE_VERSION)/g' \ + -e 's/@CXX@/$(CXX_SONAME)/g' \ + -e 's/@LC@/$(GCC_SONAME)/g' \ + -e 's/@SRC@/$(PKGSOURCE)/g' \ + -e 's/@GFDL@/$(if $(filter yes,$(GFDL_INVARIANT_FREE)),#)/g' \ + -e 's/@gcc_priority@/$(subst .,,$(BASE_VERSION))/g' \ + -e 's/@TARGET@/$(DEB_TARGET_GNU_TYPE)/g' \ + -e 's/@TARGET_QUAL@/$(TARGET_QUAL)/g' \ + $$f > $$f2; \ + touch -r $$f $$f2; \ + done + for t in ar nm ranlib; do \ + sed "s/@BV@/$(BASE_VERSION)/g;s/@TOOL@/$$t/g" \ + debian/gcc-XX-BV.1 > debian/gcc-$$t-$(BASE_VERSION).1; \ + done + +# don't encode versioned build dependencies in the control file, but check +# these here instead. +check-versions: + v=$$(dpkg-query -l dpkg-dev | awk '/^.i/ {print $$3}'); \ + if dpkg --compare-versions "$$v" lt "$(DPKGV)"; then \ + echo "dpkg-dev (>= $(DPKGV)) required, found $$v"; \ + exit 1; \ + fi + v=$$(dpkg-query -l binutils binutils-multiarch 2>/dev/null | awk '/^.i/ {print $$3;exit}'); \ + if dpkg --compare-versions "$$v" lt "$(BINUTILSBDV)"; then \ + echo "binutils (>= $(BINUTILSBDV)) required, found $$v"; \ + exit 1; \ + fi + +.PRECIOUS: $(stampdir)/%-stamp diff --git a/rules.d/binary-ada.mk b/rules.d/binary-ada.mk new file mode 100644 index 0000000..52a6cc2 --- /dev/null +++ b/rules.d/binary-ada.mk @@ -0,0 +1,263 @@ +ifeq ($(with_libgnat),yes) + # During native builds, gnat-BV Depends: + # * libgnat because of the development symlink. + # During cross builds, gnat1 is linked statically. Only the latter remains. + $(lib_binaries) += libgnat +endif + +arch_binaries := $(arch_binaries) ada-nat ada-host +ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) ada + indep_binaries := $(indep_binaries) ada-build +endif +ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) ada-doc + endif +endif + +p_gbase = $(p_xbase) +p_glbase = $(p_lbase) + +p_gnat_n = gnat-$(GNAT_VERSION)-$(subst _,-,$(TARGET_ALIAS)) +p_gnat_h = gnat-$(GNAT_VERSION)-for-host +p_gnat_b = gnat-$(GNAT_VERSION)-for-build +p_gnat = gnat-$(GNAT_VERSION) +p_gnatsjlj= gnat-$(GNAT_VERSION)-sjlj$(cross_bin_arch) +p_lgnat = libgnat-$(GNAT_VERSION)$(cross_lib_arch) +p_lgnat_dbg = libgnat-$(GNAT_VERSION)-dbg$(cross_lib_arch) +p_gnatd = $(p_gnat)-doc + +d_gbase = debian/$(p_gbase) +d_gnat_n = debian/$(p_gnat_n) +d_gnat_h = debian/$(p_gnat_h) +d_gnat_b = debian/$(p_gnat_b) +d_gnat = debian/$(p_gnat) +d_gnatsjlj = debian/$(p_gnatsjlj) +d_lgnat = debian/$(p_lgnat) +d_gnatd = debian/$(p_gnatd) + +GNAT_TOOLS = gnat gnatbind gnatchop gnatclean gnatkr gnatlink \ + gnatls gnatmake gnatname gnatprep gnathtml + +dirs_gnat_n = \ + $(docdir)/$(p_gbase) \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lib_dir)/{adalib,adainclude} \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_gnat = \ + $(docdir)/$(p_gbase)/ada \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +files_gnat_n = \ + $(gcc_lexec_dir)/gnat1 \ + $(gcc_lib_dir)/ada_target_properties \ + $(gcc_lib_dir)/adainclude/*.ad[bs] \ + $(gcc_lib_dir)/adainclude/*.h \ + $(gcc_lib_dir)/adalib/*.ali \ + $(gcc_lib_dir)/adalib/lib*.a \ + $(foreach i,$(GNAT_TOOLS),$(PF)/bin/$(cmd_prefix)$(i)$(pkg_ver)) + +# Strip unreproducible -f*-prefix-map= options from installed .ali +# files until the proper solution BUILD_PATH_PREFIX_MAP is accepted. +sed_ali_strip_prefix_map := sed -i '/^A -f[a-z]+-prefix-map=/d' + +$(binary_stamp)-libgnat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + : # libgnat + rm -rf $(d_lgnat) + + dh_install -p$(p_lgnat) $(gcc_lib_dir)/adalib/libgna{t,rl}-$(GNAT_SONAME).so $(usr_lib) + + debian/dh_doclink -p$(p_lgnat) $(p_glbase) + + debian/dh_rmemptydirs -p$(p_lgnat) + + b=libgnat; \ + v=$(GNAT_VERSION); \ + for ext in preinst postinst prerm postrm; do \ + for t in '' -dev -dbg; do \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_lgnat) \ + -V '$(p_lgnat) (>= $(shell echo $(DEB_VERSION) | sed 's/-.*//'))' + $(call cross_mangle_shlibs,$(p_lgnat)) + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + mkdir -p $(d_lgnat)/usr/share/lintian/overrides + echo package-name-doesnt-match-sonames > \ + $(d_lgnat)/usr/share/lintian/overrides/$(p_lgnat) +endif + +# The subst Make command below could be simplified, but ensures +# consistency with libraries building non-default multilib packages. + $(call do_strip_lib_dbg, $(p_lgnat), $(p_lgnat_dbg), $(v_dbg),,) + $(cross_shlibdeps) dh_shlibdeps -p$(p_lgnat) \ + $(call shlibdirs_to_search, \ + $(subst gnat-$(GNAT_SONAME),gcc-s$(GCC_SONAME),$(p_lgnat)) \ + $(subst gnat-$(GNAT_SONAME),atomic$(ATOMIC_SONAME),$(p_lgnat)) \ + ,) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common) + $(call cross_mangle_substvars,$(p_lgnat)) + +ifeq ($(with_dbg),yes) + : # $(p_lgnat_dbg) + debian/dh_doclink -p$(p_lgnat_dbg) $(p_glbase) +endif + echo $(p_lgnat) $(if $(with_dbg), $(p_lgnat_dbg)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ada-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + : # $(p_gnat_n) + rm -rf $(d_gnat_n) + dh_installdirs -p$(p_gnat_n) $(dirs_gnat_n) + : # Upstream does not install gnathtml. + cp src/gcc/ada/gnathtml.pl debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver) + chmod 755 debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver) + $(dh_compat2) dh_movefiles -p$(p_gnat_n) $(files_gnat_n) + +ifeq ($(with_libgnat),yes) + # Similar links specific to Debian. FIXME: what is their purpose? + dh_link -p$(p_gnat_n) $(foreach lib,libgnat libgnarl,\ + $(usr_lib)/$(lib)-$(GNAT_SONAME).so $(gcc_lib_dir)/adalib/$(lib).so) +endif + debian/dh_doclink -p$(p_gnat_n) $(p_gbase) + for i in $(GNAT_TOOLS); do \ + case "$$i" in \ + gnat) cp -p debian/gnat.1 $(d_gnat_n)/$(PF)/share/man/man1/$(cmd_prefix)gnat$(pkg_ver).1 ;; \ + *) ln -sf $(cmd_prefix)gnat$(pkg_ver).1 $(d_gnat_n)/$(PF)/share/man/man1/$(cmd_prefix)$$i$(pkg_ver).1; \ + esac; \ + done + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gnat_n)/$(gcc_lexec_dir)/gnat1 +endif + dh_strip -p$(p_gnat_n) + find $(d_gnat_n) -name '*.ali' | xargs $(sed_ali_strip_prefix_map) + find $(d_gnat_n) -name '*.ali' | xargs chmod 444 + dh_shlibdeps -p$(p_gnat_n) + ( \ + echo '$(p_gnat_n) binary: hardening-no-pie'; \ + echo '$(p_gnat_n) binary: non-standard-file-perm' \ + ) > $(d_gnat_n)/usr/share/lintian/overrides/$(p_gnat_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gnat_n) binary: binary-without-manpage' \ + >> $(d_gnat_n)/usr/share/lintian/overrides/$(p_gnat_n) +endif + + debian/dh_rmemptydirs -p$(p_gnat_n) + + echo $(p_gnat_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ada-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gnat_h) + debian/dh_doclink -p$(p_gnat_h) $(p_xbase) + echo $(p_gnat_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ada-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gnat_b) + debian/dh_doclink -p$(p_gnat_b) $(p_cpp_b) + echo $(p_gnat_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ada: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + : # $(p_gnat) + rm -rf $(d_gnat) + dh_installdirs -p$(p_gnat) $(dirs_gnat) + +ifeq ($(with_gnatsjlj),yes) + dh_installdirs -p$(p_gnatsjlj) $(gcc_lib_dir) + $(dh_compat2) dh_movefiles -p$(p_gnatsjlj) $(gcc_lib_dir)/rts-sjlj/adalib $(gcc_lib_dir)/rts-sjlj/adainclude +endif + + debian/dh_doclink -p$(p_gnat) $(p_gbase) +ifeq ($(with_gnatsjlj),yes) + debian/dh_doclink -p$(p_gnatsjlj) $(p_gbase) +endif + cp -p src/gcc/ada/ChangeLog $(d_gnat)/$(docdir)/$(p_gbase)/ada/. + cp -p debian/ada/README.gnat $(d_gnat)/$(docdir)/$(p_gbase)/ada/. + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + : # ship the versioned prefixed names in the gnat package. + for i in $(GNAT_TOOLS); do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_gnat)/$(PF)/bin/$$i$(pkg_ver); \ + ln -sf $(cmd_prefix)gnat$(pkg_ver).1.gz \ + $(d_gnat)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done +endif + +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gnat) binary: binary-without-manpage' \ + >> $(d_gnat)/usr/share/lintian/overrides/$(p_gnat) +endif + + debian/dh_rmemptydirs -p$(p_gnat) + + echo $(p_gnat) >> debian/arch_binaries + +ifeq ($(with_gnatsjlj),yes) + dh_strip -p$(p_gnatsjlj) + find $(d_gnatsjlj) -name '*.ali' | xargs $(sed_ali_strip_prefix_map) + find $(d_gnatsjlj) -name '*.ali' | xargs chmod 444 + dh_shlibdeps -p$(p_gnatsjlj) + echo $(p_gnatsjlj) >> debian/arch_binaries +endif + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(build_gnatdoc_stamp): $(build_stamp) + mkdir -p html + rm -f html/*.info + echo -n gnat_ugn gnat_rm gnat-style | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'cd html && \ + echo "generating {}-$(GNAT_VERSION).info"; \ + makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \ + -I $(builddir)/gcc \ + -o {}-$(GNAT_VERSION).info \ + $(srcdir)/gcc/ada/{}.texi' + touch $@ + +$(binary_stamp)-ada-doc: $(build_html_stamp) $(build_gnatdoc_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gnatd) + dh_installdirs -p$(p_gnatd) \ + $(PF)/share/info + cp -p html/gnat*info* $(d_gnatd)/$(PF)/share/info/. + dh_installdocs -p$(p_gnatd) \ + html/gnat_ugn.html html/gnat_rm.html html/gnat-style.html + echo $(p_gnatd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-algol68.mk b/rules.d/binary-algol68.mk new file mode 100644 index 0000000..364f37b --- /dev/null +++ b/rules.d/binary-algol68.mk @@ -0,0 +1,307 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifeq (0,1) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) ga68-multi + endif + endif + arch_binaries := $(arch_binaries) ga68-nat ga68-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) ga68 + indep_binaries := $(indep_binaries) ga68-build + endif + + ifeq ($(with_algoldev),yes) + $(lib_binaries) += libga68-dev + endif + ifeq ($(with_libga68),yes) + $(lib_binaries) += libga68 + endif + + ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) ga68-doc + endif + + ifeq (0,1) + ifeq ($(with_lib64ga68dev),yes) + $(lib_binaries) += lib64ga68-dev + endif + ifeq ($(with_lib32ga68dev),yes) + $(lib_binaries) += lib32ga68-dev + endif + ifeq ($(with_libn32ga68dev),yes) + $(lib_binaries) += libn32ga68-dev + endif + ifeq ($(with_libx32ga68dev),yes) + $(lib_binaries) += libx32ga68-dev + endif + + ifeq ($(with_lib64ga68),yes) + $(lib_binaries) += lib64ga68 + endif + ifeq ($(with_lib32ga68),yes) + $(lib_binaries) += lib32ga68 + endif + ifeq ($(with_libn32ga68),yes) + $(lib_binaries) += libn32ga68 + endif + ifeq ($(with_libx32ga68),yes) + $(lib_binaries) += libx32ga68 + endif + endif +endif + +p_ga68_n = ga68$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_ga68_h = ga68$(pkg_ver)-for-host +p_ga68_b = ga68$(pkg_ver)-for-build +p_ga68 = ga68$(pkg_ver) +p_ga68_m = ga68$(pkg_ver)-multilib$(cross_bin_arch) +p_libga68 = libga68-$(GA68_SONAME) +p_libga68dev = libga68$(pkg_ver)-dev +p_ga68d = ga68$(pkg_ver)-doc + +d_ga68_n = debian/$(p_ga68_n) +d_ga68_h = debian/$(p_ga68_h) +d_ga68_b = debian/$(p_ga68_b) +d_ga68 = debian/$(p_ga68) +d_ga68_m = debian/$(p_ga68_m) +d_libga68 = debian/$(p_libga68) +d_libga68dev = debian/$(p_libga68dev) +d_ga68d = debian/$(p_ga68d) + +dirs_ga68_n = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) \ + usr/share/lintian/overrides +#ifneq ($(DEB_CROSS),yes) +# dirs_ga68_n += \ +# $(ga68_include_dir) +#endif + +dirs_ga68 = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(docdir)/$(p_xbase)/Algol68 + +files_ga68_n = \ + $(PF)/bin/$(cmd_prefix)ga68$(pkg_ver) \ + $(PF)/share/man/man1/$(cmd_prefix)ga68$(pkg_ver).1 \ + $(gcc_lexec_dir)/a681 + +dirs_libga68 = \ + $(PF)/lib \ + $(ga68_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-ga68-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ga68_n) + dh_installdirs -p$(p_ga68_n) $(dirs_ga68_n) + + $(dh_compat2) dh_movefiles -p$(p_ga68_n) $(files_ga68_n) + + mv $(d)/$(usr_lib)/libga68.spec $(d_ga68_n)/$(gcc_lib_dir)/ + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_ga68_n)/$(gcc_lexec_dir)/a681 +endif + dh_strip -p$(p_ga68_n) \ + $(if $(unstripped_exe),-X/a681 -X/ga68) + dh_shlibdeps -p$(p_ga68_n) + + mkdir -p $(d_ga68_n)/usr/share/lintian/overrides + echo '$(p_ga68_n) binary: hardening-no-pie' \ + > $(d_ga68_n)/usr/share/lintian/overrides/$(p_ga68_n) + + debian/dh_doclink -p$(p_ga68_n) $(p_xbase) + + echo $(p_ga68_n) >> debian/arch_binaries + + find $(d_ga68_n) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ga68-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_ga68_h) + debian/dh_doclink -p$(p_ga68_h) $(p_xbase) + echo $(p_ga68_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ga68-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_ga68_b) + debian/dh_doclink -p$(p_ga68_b) $(p_cpp_b) + echo $(p_ga68_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ga68: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ga68) + dh_installdirs -p$(p_ga68) $(dirs_ga68) + +# cp -p $(srcdir)/gcc/algol68/ChangeLog \ +# $(d_ga68)/$(docdir)/$(p_xbase)/Algol68/changelog.algol68 + + debian/dh_doclink -p$(p_ga68) $(p_xbase) + + ln -sf $(cmd_prefix)ga68$(pkg_ver) \ + $(d_ga68)/$(PF)/bin/ga68$(pkg_ver) + ln -sf $(cmd_prefix)ga68$(pkg_ver).1.gz \ + $(d_ga68)/$(PF)/share/man/man1/ga68$(pkg_ver).1.gz + debian/dh_rmemptydirs -p$(p_ga68) + + echo $(p_ga68) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ga68-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ga68_m) + dh_installdirs -p$(p_ga68_m) $(docdir) + + debian/dh_doclink -p$(p_ga68_m) $(p_xbase) + + dh_strip -p$(p_ga68_m) + dh_shlibdeps -p$(p_ga68_m) + echo $(p_ga68_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libga68 + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libga68.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libga68.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst ga68$(GA68_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst ga68$(GA68_SONAME),stdc++$(GXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + ( \ + echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ + ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) + + dh_lintian -p$(p_l) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# install_ga68_lib(lib,soname,flavour,package) +define install_ga68_lib + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so + rm -f $(d)/$(usr_lib$(3))/$(1).so + mv $(d)/$(usr_lib$(3))/$(1).a debian/$(4)/$(gcc_lib_dir$(3))/$(5)/$(1).a +endef + +define __do_libga68_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + : # install_ga68_lib calls needed? + $(call install_ga68_lib,libga68,$(GA68_SONAME),$(2),$(p_l)) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libga68 = $(call __do_libga68,lib$(1)ga68-$(GA68_SONAME),$(1)) +do_libga68_dev = $(call __do_libga68_dev,lib$(1)ga68-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-ga68-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ga68d) + dh_installdirs -p$(p_ga68d) \ + $(docdir)/$(p_xbase)/Algol68 \ + $(PF)/share/info + cp -p $(d)/$(PF)/share/info/ga68.info \ + $(d_ga68d)/$(PF)/share/info/ga68-$(BASE_VERSION).info + cp -p $(d)/$(PF)/share/info/ga68-internals.info \ + $(d_ga68d)/$(PF)/share/info/ga68-internals-$(BASE_VERSION).info + cp -p html/ga68.html $(d_ga68d)/$(docdir)/$(p_xbase)/Algol68/ga68-$(BASE_VERSION).html + + debian/dh_doclink -p$(p_ga68d) $(p_xbase) + dh_installdocs -p$(p_ga68d) + rm -f $(d_ga68d)/$(docdir)/$(p_xbase)/copyright + + echo $(p_ga68d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(binary_stamp)-libga68: $(install_stamp) + $(call do_libga68,) + +$(binary_stamp)-lib64ga68: $(install_stamp) + $(call do_libga68,64) + +$(binary_stamp)-lib32ga68: $(install_stamp) + $(call do_libga68,32) + +$(binary_stamp)-libn32ga68: $(install_stamp) + $(call do_libga68,n32) + +$(binary_stamp)-libx32ga68: $(install_stamp) + $(call do_libga68,x32) + + +$(binary_stamp)-libga68-dev: $(install_stamp) + $(call do_libga68_dev,) + +$(binary_stamp)-lib64ga68-dev: $(install_stamp) + $(call do_libga68_dev,64) + +$(binary_stamp)-lib32ga68-dev: $(install_stamp) + $(call do_libga68_dev,32) + +$(binary_stamp)-libx32ga68-dev: $(install_stamp) + $(call do_libga68_dev,x32) + +$(binary_stamp)-libn32ga68-dev: $(install_stamp) + $(call do_libga68_dev,n32) diff --git a/rules.d/binary-base.mk b/rules.d/binary-base.mk new file mode 100644 index 0000000..c6f589b --- /dev/null +++ b/rules.d/binary-base.mk @@ -0,0 +1,49 @@ +arch_binaries += base +ifeq ($(with_gcclbase),yes) + ifneq ($(with_base_only),yes) + indep_binaries += lbase + endif +endif + +# --------------------------------------------------------------------------- +# gcc-base + +$(binary_stamp)-base: $(install_dependencies) + dh_testdir + dh_testroot + rm -rf $(d_base) + dh_installdirs -p$(p_base) + +ifeq ($(with_base_only),yes) + dh_installdocs -p$(p_base) debian/README.Debian +else + dh_installdocs -p$(p_base) debian/README.Debian.$(DEB_TARGET_ARCH) +endif + rm -f $(d_base)/usr/share/doc/$(p_base)/README.Debian + dh_installchangelogs -p$(p_base) + dh_compress -p$(p_base) + dh_fixperms -p$(p_base) +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + $(cross_gencontrol) dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars) +else + dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars) +endif + dh_installdeb -p$(p_base) + dh_md5sums -p$(p_base) + dh_builddeb -p$(p_base) + touch $@ + +$(binary_stamp)-lbase: $(install_dependencies) + dh_testdir + dh_testroot + rm -rf $(d_lbase) + dh_installdocs -p$(p_lbase) debian/README.Debian + rm -f debian/$(p_lbase)/usr/share/doc/$(p_lbase)/README.Debian + dh_installchangelogs -p$(p_lbase) + dh_compress -p$(p_lbase) + dh_fixperms -p$(p_lbase) + dh_gencontrol -p$(p_lbase) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_lbase) + dh_md5sums -p$(p_lbase) + dh_builddeb -p$(p_lbase) + touch $@ diff --git a/rules.d/binary-cobol.mk b/rules.d/binary-cobol.mk new file mode 100644 index 0000000..22b05a7 --- /dev/null +++ b/rules.d/binary-cobol.mk @@ -0,0 +1,328 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifeq (0,1) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) gcobol-multi + endif + endif + arch_binaries := $(arch_binaries) gcobol-nat gcobol-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) gcobol + indep_binaries := $(indep_binaries) gcobol-build + endif + + ifeq ($(with_coboldev),yes) + $(lib_binaries) += libgcobol-dev + endif + ifeq ($(with_libgcobol),yes) + $(lib_binaries) += libgcobol + endif + + ifeq (0,1) + ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) gcobol-doc + endif + endif + + ifeq (0,1) + ifeq ($(with_lib64gcoboldev),yes) + $(lib_binaries) += lib64gcobol-dev + endif + ifeq ($(with_lib32gcoboldev),yes) + $(lib_binaries) += lib32gcobol-dev + endif + ifeq ($(with_libn32gcoboldev),yes) + $(lib_binaries) += libn32gcobol-dev + endif + ifeq ($(with_libx32gcoboldev),yes) + $(lib_binaries) += libx32gcobol-dev + endif + + ifeq ($(with_lib64gcobol),yes) + $(lib_binaries) += lib64gcobol + endif + ifeq ($(with_lib32gcobol),yes) + $(lib_binaries) += lib32gcobol + endif + ifeq ($(with_libn32gcobol),yes) + $(lib_binaries) += libn32gcobol + endif + ifeq ($(with_libx32gcobol),yes) + $(lib_binaries) += libx32gcobol + endif + endif +endif + +p_gcobol_n = gcobol$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_gcobol_h = gcobol$(pkg_ver)-for-host +p_gcobol_b = gcobol$(pkg_ver)-for-build +p_gcobol = gcobol$(pkg_ver) +p_gcobol_m = gcobol$(pkg_ver)-multilib$(cross_bin_arch) +p_libgcobol = libgcobol$(GCOBOL_SONAME) +p_libgcoboldev = libgcobol$(pkg_ver)-dev +p_gcobold = gcobol$(pkg_ver)-doc + +d_gcobol_n = debian/$(p_gcobol_n) +d_gcobol_h = debian/$(p_gcobol_h) +d_gcobol_b = debian/$(p_gcobol_b) +d_gcobol = debian/$(p_gcobol) +d_gcobol_m = debian/$(p_gcobol_m) +d_libgcobol = debian/$(p_libgcobol) +d_libgcoboldev = debian/$(p_libgcoboldev) +d_gcobold = debian/$(p_gcobold) + +dirs_gcobol_n = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) \ + usr/share/lintian/overrides +#ifneq ($(DEB_CROSS),yes) +# dirs_gcobol_n += \ +# $(gcobol_include_dir) +#endif + +dirs_gcobol = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(docdir)/$(p_xbase)/COBOL + +files_gcobol_n = \ + $(PF)/bin/$(cmd_prefix)gcobol$(pkg_ver) \ + $(PF)/bin/$(cmd_prefix)gcobc$(pkg_ver) \ + $(gcc_lexec_dir)/cobol1 +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + files_gcobol_n += \ + $(PF)/share/man/man1/$(cmd_prefix)gcobol$(pkg_ver).1 +endif + +dirs_libgcobol = \ + $(PF)/lib \ + $(gcobol_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-gcobol-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcobol_n) + dh_installdirs -p$(p_gcobol_n) $(dirs_gcobol_n) + + $(dh_compat2) dh_movefiles -p$(p_gcobol_n) $(files_gcobol_n) + + mv $(d)/$(usr_lib)/libgcobol.spec $(d_gcobol_n)/$(gcc_lib_dir)/ + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gcobol_n)/$(gcc_lexec_dir)/cobol1 +endif + dh_strip -p$(p_gcobol_n) \ + $(if $(unstripped_exe),-X/cobol1 -X/gcobol) + dh_shlibdeps -p$(p_gcobol_n) + + mkdir -p $(d_gcobol_n)/usr/share/lintian/overrides + ( \ + echo '$(p_gcobol_n) binary: hardening-no-pie'; \ + echo '$(p_gcobol_n) binary: no-manual-page'; \ + ) > $(d_gcobol_n)/usr/share/lintian/overrides/$(p_gcobol_n) + + debian/dh_doclink -p$(p_gcobol_n) $(p_xbase) + + echo $(p_gcobol_n) >> debian/arch_binaries + + find $(d_gcobol_n) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcobol-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gcobol_h) + debian/dh_doclink -p$(p_gcobol_h) $(p_xbase) + echo $(p_gcobol_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcobol-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gcobol_b) + debian/dh_doclink -p$(p_gcobol_b) $(p_cpp_b) + echo $(p_gcobol_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcobol: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcobol) + dh_installdirs -p$(p_gcobol) $(dirs_gcobol) + +# cp -p $(srcdir)/gcc/cobol/ChangeLog \ +# $(d_gcobol)/$(docdir)/$(p_xbase)/COBOL/changelog.cobol + + ln -sf $(cmd_prefix)gcobc$(pkg_ver) \ + $(d_gcobol)/$(PF)/bin/gcobc$(pkg_ver) + ln -sf $(cmd_prefix)gcobol$(pkg_ver) \ + $(d_gcobol)/$(PF)/bin/gcobol$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + ln -sf $(cmd_prefix)gcobol$(pkg_ver).1.gz \ + $(d_gcobol)/$(PF)/share/man/man1/gcobol$(pkg_ver).1.gz +endif + debian/dh_doclink -p$(p_gcobol) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_gcobol) + + echo $(p_gcobol) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcobol-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcobol_m) + dh_installdirs -p$(p_gcobol_m) $(docdir) + + debian/dh_doclink -p$(p_gcobol_m) $(p_xbase) + + dh_strip -p$(p_gcobol_m) + dh_shlibdeps -p$(p_gcobol_m) + echo $(p_gcobol_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libgcobol + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libgcobol.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libgcobol.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gcobol$(GCOBOL_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst gcobol$(GCOBOL_SONAME),stdc++$(GXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + ( \ + echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ + ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) + + dh_lintian -p$(p_l) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# install_gcobol_lib(lib,soname,flavour,package) +define install_gcobol_lib + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so + rm -f $(d)/$(usr_lib$(3))/$(1).so + rm -f $(d)/$(usr_lib$(3))/$(1).a +endef + +define __do_libgcobol_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + $(if $(findstring native, $(build_type)), + $(if $(2),, + mkdir -p $(d_l)/$(PF)/share/man/man3 + mv $(d)/$(PF)/share/man/man3/$(cmd_prefix)gcobol-io$(pkg_ver).3 \ + $(d_l)/$(PF)/share/man/man3/. + )) + + : # install_gcobol_lib calls needed? + $(call install_gcobol_lib,libgcobol,$(GCOBOL_SONAME),$(2),$(p_l)) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgcobol = $(call __do_libgcobol,lib$(1)gcobol$(GCOBOL_SONAME),$(1)) +do_libgcobol_dev = $(call __do_libgcobol_dev,lib$(1)gcobol-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcobol-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcobold) + dh_installdirs -p$(p_gcobold) \ + $(docdir)/$(p_gcobol) \ + $(docdir)/$(p_xbase) \ + $(PF)/share/info + cp -p $(builddir)/gcc/doc/gcobol.info \ + $(d_gcobold)/$(PF)/share/info/gcobol-$(BASE_VERSION).info + cp -p html/gcobol.html \ + $(d_gcobold)/$(docdir)/$(p_xbase)/cobol/gcobol-$(BASE_VERSION).html + ln -sf ../$(p_xbase)/cobol/gcobol-$(BASE_VERSION).html \ + $(d_gcobold)/$(docdir)/$(p_gcobol)/gcobol-$(BASE_VERSION).html + + debian/dh_doclink -p$(p_gcobold) $(p_xbase) + dh_installdocs -p$(p_gcobold) + rm -f $(d_gcobold)/$(docdir)/$(p_xbase)/copyright + + echo $(p_gcobold) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(binary_stamp)-libgcobol: $(install_stamp) + $(call do_libgcobol,) + +$(binary_stamp)-lib64gcobol: $(install_stamp) + $(call do_libgcobol,64) + +$(binary_stamp)-lib32gcobol: $(install_stamp) + $(call do_libgcobol,32) + +$(binary_stamp)-libn32gcobol: $(install_stamp) + $(call do_libgcobol,n32) + +$(binary_stamp)-libx32gcobol: $(install_stamp) + $(call do_libgcobol,x32) + + +$(binary_stamp)-libgcobol-dev: $(install_stamp) + $(call do_libgcobol_dev,) + +$(binary_stamp)-lib64gcobol-dev: $(install_stamp) + $(call do_libgcobol_dev,64) + +$(binary_stamp)-lib32gcobol-dev: $(install_stamp) + $(call do_libgcobol_dev,32) + +$(binary_stamp)-libx32gcobol-dev: $(install_stamp) + $(call do_libgcobol_dev,x32) + +$(binary_stamp)-libn32gcobol-dev: $(install_stamp) + $(call do_libgcobol_dev,n32) diff --git a/rules.d/binary-cpp.mk b/rules.d/binary-cpp.mk new file mode 100644 index 0000000..d7ee242 --- /dev/null +++ b/rules.d/binary-cpp.mk @@ -0,0 +1,143 @@ +ifneq ($(DEB_STAGE),rtlibs) + arch_binaries := $(arch_binaries) cpp-nat cpp-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) cpp + indep_binaries := $(indep_binaries) cpp-build + endif + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) cpp-doc + endif + endif +endif + +p_cpp = cpp$(pkg_ver) +p_cpp_n = cpp$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_cpp_h = cpp$(pkg_ver)-for-host +p_cpp_d = cpp$(pkg_ver)-doc + +d_cpp = debian/$(p_cpp) +d_cpp_n = debian/$(p_cpp_n) +d_cpp_h = debian/$(p_cpp_h) +d_cpp_b = debian/$(p_cpp_b) +d_cpp_d = debian/$(p_cpp_d) + +dirs_cpp_n = \ + $(docdir) \ + $(PF)/share/man/man1 \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_cpp = \ + $(docdir) \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +files_cpp_n = \ + $(PF)/bin/$(cmd_prefix)cpp$(pkg_ver) \ + $(gcc_lexec_dir)/cc1 + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_cpp_n += \ + $(PF)/share/man/man1/$(cmd_prefix)cpp$(pkg_ver).1 +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-cpp-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cpp_n) + dh_installdirs -p$(p_cpp_n) $(dirs_cpp_n) + $(dh_compat2) dh_movefiles -p$(p_cpp_n) $(files_cpp_n) + + echo '$(p_cpp_n) binary: hardening-no-pie' \ + > $(d_cpp_n)/usr/share/lintian/overrides/$(p_cpp_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cpp_n) binary: binary-without-manpage' \ + >> $(d_cpp_n)/usr/share/lintian/overrides/$(p_cpp_n) +endif + + debian/dh_doclink -p$(p_cpp_n) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cpp_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) $(d_cpp_n)/$(gcc_lexec_dir)/cc1 +endif + dh_strip -p$(p_cpp_n) \ + $(if $(unstripped_exe),-X/cc1) + dh_shlibdeps -p$(p_cpp_n) + + echo $(p_cpp_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cpp-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_cpp_h) + debian/dh_doclink -p$(p_cpp_h) $(p_xbase) + echo $(p_cpp_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cpp-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_cpp_b) + dh_installdocs -p$(p_cpp_b) debian/README.Debian + dh_installchangelogs -p$(p_cpp_b) + dh_compress -p$(p_cpp_b) + dh_fixperms -p$(p_cpp_b) + echo $(p_cpp_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cpp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cpp) + dh_installdirs -p$(p_cpp) $(dirs_cpp) + + ln -sf $(cmd_prefix)cpp$(pkg_ver) \ + $(d_cpp)/$(PF)/bin/cpp$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)cpp$(pkg_ver).1 \ + $(d_cpp)/$(PF)/share/man/man1/cpp$(pkg_ver).1 +else + echo '$(p_cpp) binary: binary-without-manpage' \ + >> $(d_cpp)/usr/share/lintian/overrides/$(p_cpp) +endif + + debian/dh_doclink -p$(p_cpp) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cpp) + + echo $(p_cpp) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-cpp-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cpp_d) + dh_installdirs -p$(p_cpp_d) \ + $(docdir)/$(p_xbase) \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_cpp_d) \ + $(PF)/share/info/cpp* + + debian/dh_doclink -p$(p_cpp_d) $(p_xbase) + dh_installdocs -p$(p_cpp_d) html/cpp.html html/cppinternals.html + rm -f $(d_cpp_d)/$(docdir)/$(p_xbase)/copyright + debian/dh_rmemptydirs -p$(p_cpp_d) + echo $(p_cpp_d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-cxx.mk b/rules.d/binary-cxx.mk new file mode 100644 index 0000000..fc947d4 --- /dev/null +++ b/rules.d/binary-cxx.mk @@ -0,0 +1,142 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) cxx-multi + endif + arch_binaries := $(arch_binaries) cxx-nat cxx-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) cxx + indep_binaries := $(indep_binaries) cxx-build + endif +endif + +p_cxx = g++$(pkg_ver) +p_cxx_n = g++$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_cxx_h = g++$(pkg_ver)-for-host +p_cxx_b = g++$(pkg_ver)-for-build + +d_cxx = debian/$(p_cxx) +d_cxx_n = debian/$(p_cxx_n) +d_cxx_h = debian/$(p_cxx_h) +d_cxx_b = debian/$(p_cxx_b) + +dirs_cxx_n = \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +dirs_cxx = \ + $(docdir)/$(p_xbase)/C++ \ + $(PF)/bin \ + $(PF)/share/info \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +files_cxx_n = \ + $(PF)/bin/$(cmd_prefix)g++$(pkg_ver) \ + $(gcc_lexec_dir)/cc1plus \ + $(gcc_lexec_dir)/g++-mapper-server + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_cxx_n += \ + $(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1 +endif + +p_cxx_m = g++$(pkg_ver)-multilib$(cross_bin_arch) +d_cxx_m = debian/$(p_cxx_m) + +# ---------------------------------------------------------------------- +$(binary_stamp)-cxx-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx_n) + dh_installdirs -p$(p_cxx_n) $(dirs_cxx_n) + $(dh_compat2) dh_movefiles -p$(p_cxx_n) $(files_cxx_n) + + echo '$(p_cxx_n) binary: hardening-no-pie' \ + > $(d_cxx_n)/usr/share/lintian/overrides/$(p_cxx_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cxx_n) binary: binary-without-manpage' \ + >> $(d_cxx_n)/usr/share/lintian/overrides/$(p_cxx_n) +endif + + debian/dh_doclink -p$(p_cxx_n) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cxx_n) + + dh_shlibdeps -p$(p_cxx_n) +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_cxx_n)/$(gcc_lexec_dir)/cc1plus +endif + dh_strip -p$(p_cxx_n) $(if $(unstripped_exe),-X/cc1plus) + echo $(p_cxx_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cxx-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_cxx_h) + debian/dh_doclink -p$(p_cxx_h) $(p_xbase) + echo $(p_cxx_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cxx-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_cxx_b) + debian/dh_doclink -p$(p_cxx_b) $(p_cpp_b) + echo $(p_cxx_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx) + dh_installdirs -p$(p_cxx) $(dirs_cxx) + + ln -sf $(cmd_prefix)g++$(pkg_ver) \ + $(d_cxx)/$(PF)/bin/g++$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)g++$(pkg_ver).1.gz \ + $(d_cxx)/$(PF)/share/man/man1/g++$(pkg_ver).1.gz +endif + +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cxx) binary: binary-without-manpage' \ + >> $(d_cxx)/usr/share/lintian/overrides/$(p_cxx) +endif + + debian/dh_doclink -p$(p_cxx) $(p_xbase) + cp -p debian/README.C++ $(d_cxx)/$(docdir)/$(p_xbase)/C++/ + cp -p $(srcdir)/gcc/cp/ChangeLog \ + $(d_cxx)/$(docdir)/$(p_xbase)/C++/changelog + debian/dh_rmemptydirs -p$(p_cxx) + + echo $(p_cxx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cxx-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx_m) + dh_installdirs -p$(p_cxx_m) \ + $(docdir) + + debian/dh_doclink -p$(p_cxx_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cxx_m) + + dh_strip -p$(p_cxx_m) + dh_shlibdeps -p$(p_cxx_m) + echo $(p_cxx_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-d.mk b/rules.d/binary-d.mk new file mode 100644 index 0000000..2adc8c2 --- /dev/null +++ b/rules.d/binary-d.mk @@ -0,0 +1,314 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32))) + arch_binaries := $(arch_binaries) gdc-multi + endif + arch_binaries := $(arch_binaries) gdc-nat gdc-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) gdc + indep_binaries := $(indep_binaries) gdc-build + endif + + ifeq ($(with_libphobosdev),yes) + $(lib_binaries) += libphobos-dev + endif + ifeq ($(with_libphobos),yes) + $(lib_binaries) += libphobos + endif + + ifeq ($(with_lib64phobosdev),yes) + $(lib_binaries) += lib64phobos-dev + endif + ifeq ($(with_lib32phobosdev),yes) + $(lib_binaries) += lib32phobos-dev + endif + ifeq ($(with_libn32phobosdev),yes) + $(lib_binaries) += libn32phobos-dev + endif + ifeq ($(with_libx32phobosdev),yes) + $(lib_binaries) += libx32phobos-dev + endif + + ifeq ($(with_lib64phobos),yes) + $(lib_binaries) += lib64phobos + endif + ifeq ($(with_lib32phobos),yes) + $(lib_binaries) += lib32phobos + endif + ifeq ($(with_libn32phobos),yes) + $(lib_binaries) += libn32phobos + endif + ifeq ($(with_libx32phobos),yes) + $(lib_binaries) += libx32phobos + endif +endif + +p_gdc_n = gdc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_gdc_h = gdc$(pkg_ver)-for-host +p_gdc_b = gdc$(pkg_ver)-for-build +p_gdc = gdc$(pkg_ver) +p_gdc_m = gdc$(pkg_ver)-multilib$(cross_bin_arch) +p_libphobos = libgphobos$(GPHOBOS_SONAME) +p_libphobosdev = libgphobos$(pkg_ver)-dev + +d_gdc_n = debian/$(p_gdc_n) +d_gdc_h = debian/$(p_gdc_h) +d_gdc_b = debian/$(p_gdc_b) +d_gdc = debian/$(p_gdc) +d_gdc_m = debian/$(p_gdc_m) +d_libphobos = debian/$(p_libphobos) +d_libphobosdev = debian/$(p_libphobosdev) + +ifeq ($(DEB_CROSS),yes) + gdc_include_dir := $(gcc_lib_dir)/include/d +else + gdc_include_dir := $(PF)/include/d/$(BASE_VERSION) +endif +# FIXME: always here? +gdc_include_dir := $(gcc_lib_dir)/include/d + +dirs_gdc_n = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lib_dir) \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_gdc = \ + $(PF)/bin \ + $(PF)/share/man/man1 + +ifneq ($(DEB_CROSS),yes) + dirs_gdc_n += \ + $(gdc_include_dir) +endif + +files_gdc_n = \ + $(PF)/bin/$(cmd_prefix)gdc$(pkg_ver) \ + $(gcc_lexec_dir)/d21 +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + files_gdc_n += \ + $(PF)/share/man/man1/$(cmd_prefix)gdc$(pkg_ver).1 +endif + +dirs_libphobos = \ + $(PF)/lib \ + $(gdc_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-gdc-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gdc_n) + dh_installdirs -p$(p_gdc_n) $(dirs_gdc_n) + + debian/dh_doclink -p$(p_gdc_n) $(p_xbase) + + $(dh_compat2) dh_movefiles -p$(p_gdc_n) -X/zlib/ $(files_gdc_n) + +ifeq ($(with_phobos),yes) + mv $(d)/$(usr_lib)/libgphobos.spec $(d_gdc_n)/$(gcc_lib_dir)/ +endif + +# FIXME: __entrypoint.di needs to go into a libgdc-dev Multi-Arch: same package +## # Always needed by gdc. +## mkdir -p $(d_gdc_n)/$(gdc_include_dir) +## cp $(srcdir)/libphobos/libdruntime/__entrypoint.di \ +## $(d_gdc_n)/$(gdc_include_dir)/. +#ifneq ($(DEB_CROSS),yes) +# dh_link -p$(p_gdc_n) \ +# /$(gdc_include_dir) \ +# /$(dir $(gdc_include_dir))/$(GCC_VERSION) +#endif + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gdc_n)/$(gcc_lexec_dir)/d21 +endif + dh_strip -p$(p_gdc_n) \ + $(if $(unstripped_exe),-X/d21) + dh_shlibdeps -p$(p_gdc_n) + + echo '$(p_gdc_n) binary: hardening-no-pie' \ + > $(d_gdc_n)/usr/share/lintian/overrides/$(p_gdc_n) + + echo $(p_gdc_n) >> debian/arch_binaries + + find $(d_gdc_n) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gdc-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gdc_h) + debian/dh_doclink -p$(p_gdc_h) $(p_xbase) + echo $(p_gdc_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gdc-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gdc_b) + debian/dh_doclink -p$(p_gdc_b) $(p_cpp_b) + echo $(p_gdc_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gdc: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gdc) + dh_installdirs -p$(p_gdc) $(dirs_gdc) + + dh_installdocs -p$(p_gdc) + dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog + + ln -sf $(cmd_prefix)gdc$(pkg_ver) \ + $(d_gdc)/$(PF)/bin/gdc$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + ln -sf $(cmd_prefix)gdc$(pkg_ver).1.gz \ + $(d_gdc)/$(PF)/share/man/man1/gdc$(pkg_ver).1.gz +endif + + dh_link -p$(p_gdc) \ + /$(docdir)/$(p_xbase)/README.Bugs \ + /$(docdir)/$(p_gdc)/README.Bugs + + echo $(p_gdc) >> debian/arch_binaries + + find $(d_gdc) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gdc-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gdc_m) + dh_installdirs -p$(p_gdc_m) $(docdir) + + debian/dh_doclink -p$(p_gdc_m) $(p_xbase) + + dh_strip -p$(p_gdc_m) + dh_shlibdeps -p$(p_gdc_m) + echo $(p_gdc_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libphobos + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libgphobos.so.* \ + $(usr_lib$(2))/libgdruntime.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libgphobos.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gphobos$(GPHOBOS_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + $(if $(filter $(DEB_TARGET_ARCH), amd64), + $(if $(2), + echo "$(p_l) binary: symbols-file-contains-current-version-with-debian-revision" \ + >> $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + , + echo "$(p_l) binary: symbols-file-contains-current-version-with-debian-revision" \ + >> $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + $(if $(2), + echo "$(p_l) binary: embedded-library" \ + >> $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + + dh_lintian -p$(p_l) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libphobos_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + $(call install_gcc_lib,libgdruntime,$(GDRUNTIME_SONAME),$(2),$(p_l)) + $(call install_gcc_lib,libgphobos,$(GPHOBOS_SONAME),$(2),$(p_l)) + + $(if $(2),, + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gdc_include_dir) + ) + +## : # included in gdc package +## rm -f $(d_l)/$(gdc_include_dir)/__entrypoint.di + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# don't put this as a comment within define/endef +# $(call install_gcc_lib,libphobos,$(PHOBOS_SONAME),$(2),$(p_l)) + +do_libphobos = $(call __do_libphobos,lib$(1)gphobos$(GPHOBOS_SONAME),$(1)) +do_libphobos_dev = $(call __do_libphobos_dev,lib$(1)gphobos-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libphobos: $(install_stamp) + $(call do_libphobos,) + +$(binary_stamp)-lib64phobos: $(install_stamp) + $(call do_libphobos,64) + +$(binary_stamp)-lib32phobos: $(install_stamp) + $(call do_libphobos,32) + +$(binary_stamp)-libn32phobos: $(install_stamp) + $(call do_libphobos,n32) + +$(binary_stamp)-libx32phobos: $(install_stamp) + $(call do_libphobos,x32) + + +$(binary_stamp)-libphobos-dev: $(install_stamp) + $(call do_libphobos_dev,) + +$(binary_stamp)-lib64phobos-dev: $(install_stamp) + $(call do_libphobos_dev,64) + +$(binary_stamp)-lib32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,32) + +$(binary_stamp)-libx32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,x32) + +$(binary_stamp)-libn32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,n32) diff --git a/rules.d/binary-fortran.mk b/rules.d/binary-fortran.mk new file mode 100644 index 0000000..f2aa9e5 --- /dev/null +++ b/rules.d/binary-fortran.mk @@ -0,0 +1,309 @@ +ifeq ($(with_libgfortran),yes) + $(lib_binaries) += libgfortran +endif +ifeq ($(with_fdev),yes) + $(lib_binaries) += libgfortran-dev +endif +ifeq ($(with_lib64gfortran),yes) + $(lib_binaries) += lib64fortran +endif +ifeq ($(with_lib64gfortrandev),yes) + $(lib_binaries) += lib64gfortran-dev +endif +ifeq ($(with_lib32gfortran),yes) + $(lib_binaries) += lib32fortran +endif +ifeq ($(with_lib32gfortrandev),yes) + $(lib_binaries) += lib32gfortran-dev +endif +ifeq ($(with_libn32gfortran),yes) + $(lib_binaries) += libn32fortran +endif +ifeq ($(with_libn32gfortrandev),yes) + $(lib_binaries) += libn32gfortran-dev +endif +ifeq ($(with_libx32gfortran),yes) + $(lib_binaries) += libx32fortran +endif +ifeq ($(with_libx32gfortrandev),yes) + $(lib_binaries) += libx32gfortran-dev +endif + +ifeq ($(with_fdev),yes) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) fdev-multi + endif + arch_binaries := $(arch_binaries) fdev-nat fdev-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) fdev + indep_binaries := $(indep_binaries) fdev-build + endif + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) fortran-doc + endif + endif +endif + +p_g95_n = gfortran$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_g95_h = gfortran$(pkg_ver)-for-host +p_g95_b = gfortran$(pkg_ver)-for-build +p_g95 = gfortran$(pkg_ver) +p_g95_m = gfortran$(pkg_ver)-multilib$(cross_bin_arch) +p_g95d = gfortran$(pkg_ver)-doc +p_flib = libgfortran$(FORTRAN_SONAME)$(cross_lib_arch) + +d_g95_n = debian/$(p_g95_n) +d_g95_h = debian/$(p_g95_h) +d_g95_b = debian/$(p_g95_b) +d_g95 = debian/$(p_g95) +d_g95_m = debian/$(p_g95_m) +d_g95d = debian/$(p_g95d) + +dirs_g95_n = \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) \ + $(PF)/include \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +dirs_g95 = \ + $(docdir)/$(p_xbase)/fortran \ + $(PF)/bin \ + $(PF)/share/man/man1 + +files_g95_n = \ + $(PF)/bin/$(cmd_prefix)gfortran$(pkg_ver) \ + $(gcc_lib_dir)/finclude \ + $(gcc_lexec_dir)/f951 + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_g95_n += \ + $(PF)/share/man/man1/$(cmd_prefix)gfortran$(pkg_ver).1 +endif + +# ---------------------------------------------------------------------- +define __do_fortran + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgfortran.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libgfortran.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gfortran$(FORTRAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst gfortran$(FORTRAN_SONAME),quadmath$(QUADMATH_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_fortran = $(call __do_fortran,lib$(1)gfortran$(FORTRAN_SONAME),$(1)) + + +define __do_libgfortran_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) $(gcc_lib_dir$(2)) + + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/libcaf_single.a + $(call install_gcc_lib,libgfortran,$(FORTRAN_SONAME),$(2),$(p_l)) + + $(if $(2),, \ + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/include/ISO_Fortran_binding.h) + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + + dh_strip -p$(p_l) + $(cross_shlibdeps) dh_shlibdeps -p$(p_l) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef +# ---------------------------------------------------------------------- + +do_libgfortran_dev = $(call __do_libgfortran_dev,lib$(1)gfortran-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libgfortran: $(install_stamp) + $(call do_fortran,) + +$(binary_stamp)-lib64fortran: $(install_stamp) + $(call do_fortran,64) + +$(binary_stamp)-lib32fortran: $(install_stamp) + $(call do_fortran,32) + +$(binary_stamp)-libn32fortran: $(install_stamp) + $(call do_fortran,n32) + +$(binary_stamp)-libx32fortran: $(install_stamp) + $(call do_fortran,x32) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fdev-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95_n) + dh_installdirs -p$(p_g95_n) $(dirs_g95_n) + + $(dh_compat2) dh_movefiles -p$(p_g95_n) $(files_g95_n) + + mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95_n)/$(gcc_lib_dir)/ + + ( \ + echo '$(p_g95_n) binary: hardening-no-pie'; \ + echo '$(p_g95_n) binary: missing-prerequisite-for-gfortran-module'; \ + ) \ + > $(d_g95_n)/usr/share/lintian/overrides/$(p_g95_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_g95_n) binary: binary-without-manpage' \ + >> $(d_g95_n)/usr/share/lintian/overrides/$(p_g95_n) +endif + + debian/dh_doclink -p$(p_g95_n) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_g95_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_g95_n)/$(gcc_lexec_dir)/f951 +endif + dh_strip -p$(p_g95_n) \ + $(if $(unstripped_exe),-X/f951) + dh_shlibdeps -p$(p_g95_n) + + echo $(p_g95_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-fdev-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_g95_h) + debian/dh_doclink -p$(p_g95_h) $(p_xbase) + echo $(p_g95_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-fdev-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_g95_b) + debian/dh_doclink -p$(p_g95_b) $(p_cpp_b) + echo $(p_g95_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-fdev: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95) + dh_installdirs -p$(p_g95) $(dirs_g95) + + ln -sf $(cmd_prefix)gfortran$(pkg_ver) \ + $(d_g95)/$(PF)/bin/gfortran$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)gfortran$(pkg_ver).1 \ + $(d_g95)/$(PF)/share/man/man1/gfortran$(pkg_ver).1 +endif + +ifeq ($(GFDL_INVARIANT_FREE),yes) + mkdir -p $(d_g95)/usr/share/lintian/overrides + echo '$(p_g95) binary: binary-without-manpage' \ + > $(d_g95)/usr/share/lintian/overrides/$(p_g95) +endif + + debian/dh_doclink -p$(p_g95) $(p_xbase) + + cp -p $(srcdir)/gcc/fortran/ChangeLog \ + $(d_g95)/$(docdir)/$(p_xbase)/fortran/changelog + debian/dh_rmemptydirs -p$(p_g95) + + echo $(p_g95) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fdev-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95_m) + dh_installdirs -p$(p_g95_m) $(docdir) + + debian/dh_doclink -p$(p_g95_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_g95_m) + dh_strip -p$(p_g95_m) + dh_shlibdeps -p$(p_g95_m) + echo $(p_g95_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fortran-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95d) + dh_installdirs -p$(p_g95d) \ + $(docdir)/$(p_xbase)/fortran \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_g95d) \ + $(PF)/share/info/gfortran* + + debian/dh_doclink -p$(p_g95d) $(p_xbase) +ifneq ($(GFDL_INVARIANT_FREE),yes) + dh_installdocs -p$(p_g95d) + rm -f $(d_g95d)/$(docdir)/$(p_xbase)/copyright + cp -p html/gfortran.html $(d_g95d)/$(docdir)/$(p_xbase)/fortran/ +endif + echo $(p_g95d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-libgfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,) + +$(binary_stamp)-lib64gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,64) + +$(binary_stamp)-lib32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,32) + +$(binary_stamp)-libn32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,n32) + +$(binary_stamp)-libx32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,x32) diff --git a/rules.d/binary-gcc.mk b/rules.d/binary-gcc.mk new file mode 100644 index 0000000..36edf54 --- /dev/null +++ b/rules.d/binary-gcc.mk @@ -0,0 +1,385 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) gcc-multi + endif + ifeq ($(with_plugins),yes) + arch_binaries := $(arch_binaries) gcc-plugindev + endif + + arch_binaries := $(arch_binaries) gcc-nat gcc-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) gcc + indep_binaries := $(indep_binaries) gcc-build + endif + + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) gcc-doc + endif + ifeq ($(with_nls),yes) + indep_binaries := $(indep_binaries) gcc-locales + endif + endif + + ifeq ($(build_type),build-native) + arch_binaries := $(arch_binaries) testresults + endif +endif + +# gcc must be moved after g77 and g++ +# not all files $(PF)/include/*.h are part of gcc, +# but it becomes difficult to name all these files ... + +p_gcc = gcc$(pkg_ver) +p_gcc_n = gcc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_gcc_h = gcc$(pkg_ver)-for-host +p_gcc_b = gcc$(pkg_ver)-for-build +p_gcc_d = gcc$(pkg_ver)-doc + +d_gcc = debian/$(p_gcc) +d_gcc_n = debian/$(p_gcc_n) +d_gcc_h = debian/$(p_gcc_h) +d_gcc_b = debian/$(p_gcc_b) +d_gcc_d = debian/$(p_gcc_d) + +dirs_gcc_n = \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir)/include \ + $(PF)/share/man/man1 $(libgcc_dir) \ + usr/share/lintian/overrides + +dirs_gcc = \ + $(docdir)/$(p_xbase)/{gcc,libssp,gomp,itm,quadmath,sanitizer} \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +# XXX: what about triarch mapping? +files_gcc_n = \ + $(PF)/bin/$(cmd_prefix){gcc,gcov,gcov-tool,gcov-dump,lto-dump}$(pkg_ver) \ + $(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \ + $(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \ + $(gcc_lexec_dir)/{collect2,lto1,lto-wrapper} \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) + +ifeq ($(with_libcc1_plugin),yes) + files_gcc_n += \ + $(gcc_lib_dir)/plugin/libc[cp]1plugin.so{,.0,.0.0.0} +endif + +files_gcc_n += \ + $(gcc_lexec_dir)/liblto_plugin.so + +ifeq ($(DEB_STAGE),stage1) + files_gcc_n += \ + $(gcc_lib_dir)/include +endif + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_gcc_n += \ + $(PF)/share/man/man1/$(cmd_prefix){gcc,gcov}$(pkg_ver).1 \ + $(PF)/share/man/man1/$(cmd_prefix)gcov-{dump,tool}$(pkg_ver).1 \ + $(PF)/share/man/man1/$(cmd_prefix)lto-dump$(pkg_ver).1 +endif + +usr_doc_files = debian/README.Bugs \ + $(shell test -f $(srcdir)/FAQ && echo $(srcdir)/FAQ) + +p_loc = gcc$(pkg_ver)-locales +d_loc = debian/$(p_loc) + +p_gcc_m = gcc$(pkg_ver)-multilib$(cross_bin_arch) +d_gcc_m = debian/$(p_gcc_m) + +p_pld = gcc$(pkg_ver)-plugin-dev$(cross_bin_arch) +d_pld = debian/$(p_pld) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-nat: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc_n) + dh_installdirs -p$(p_gcc_n) $(dirs_gcc_n) + +ifeq ($(with_gomp),yes) + mv $(d)/$(usr_lib)/libgomp*.spec $(d_gcc_n)/$(gcc_lib_dir)/ +endif +ifeq ($(with_itm),yes) + mv $(d)/$(usr_lib)/libitm*.spec $(d_gcc_n)/$(gcc_lib_dir)/ +endif +ifeq ($(with_asan),yes) + mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gcc_n)/$(gcc_lib_dir)/ +endif +ifeq ($(with_hwasan),yes) + mv $(d)/$(usr_lib)/libhwasan_preinit.o $(d_gcc_n)/$(gcc_lib_dir)/ +endif +ifeq ($(with_cc1),yes) + rm -f $(d)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so + dh_link -p$(p_gcc_n) \ + /$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so.$(CC1_SONAME) \ + /$(gcc_lib_dir)/libcc1.so +endif + + $(dh_compat2) dh_movefiles -p$(p_gcc_n) $(files_gcc_n) + : # keep the lto_plugin.so link in the old place for a while + dh_link -p$(p_gcc_n) \ + /$(gcc_lexec_dir)/liblto_plugin.so /$(gcc_lib_dir)/liblto_plugin.so + +# dh_installdebconf + debian/dh_doclink -p$(p_gcc_n) $(p_xbase) + + echo '$(p_gcc_n) binary: hardening-no-pie' \ + > $(d_gcc_n)/usr/share/lintian/overrides/$(p_gcc_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gcc_n) binary: binary-without-manpage' \ + >> $(d_gcc_n)/usr/share/lintian/overrides/$(p_gcc_n) +endif + + debian/dh_rmemptydirs -p$(p_gcc_n) +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gcc_n)/$(gcc_lexec_dir)/lto1 \ + $(d_gcc_n)/$(gcc_lexec_dir)/lto-wrapper \ + $(d_gcc_n)/$(gcc_lexec_dir)/collect2 +endif + dh_strip -p$(p_gcc_n) \ + $(if $(unstripped_exe),-X/lto1) + dh_shlibdeps -p$(p_gcc_n) + echo $(p_gcc_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcc-host: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gcc_h) + debian/dh_doclink -p$(p_gcc_h) $(p_xbase) + echo $(p_gcc_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcc-build: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gcc_b) + debian/dh_doclink -p$(p_gcc_b) $(p_cpp_b) + echo $(p_gcc_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcc: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc) + dh_installdirs -p$(p_gcc) $(dirs_gcc) + +ifeq ($(with_libssp),yes) + cp -p $(srcdir)/libssp/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/libssp/changelog +endif +ifeq ($(with_gomp),yes) + cp -p $(srcdir)/libgomp/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/gomp/changelog +endif +ifeq ($(with_itm),yes) + cp -p $(srcdir)/libitm/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/itm/changelog +endif +ifeq ($(with_qmath),yes) + cp -p $(srcdir)/libquadmath/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/quadmath/changelog +endif +ifeq ($(with_asan),yes) + cp -p $(srcdir)/libsanitizer/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/sanitizer/changelog +endif + + for i in gcc gcov gcov-dump gcov-tool gcc-ar gcc-nm gcc-ranlib lto-dump; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_gcc)/$(PF)/bin/$$i$(pkg_ver); \ + done +ifneq ($(GFDL_INVARIANT_FREE),yes) + for i in gcc gcov gcov-dump gcov-tool lto-dump; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \ + $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done +endif + for i in gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \ + $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done + +# dh_installdebconf + debian/dh_doclink -p$(p_gcc) $(p_xbase) + cp -p $(usr_doc_files) $(d_gcc)/$(docdir)/$(p_xbase)/. + cp -p debian/README.ssp $(d_gcc)/$(docdir)/$(p_xbase)/ + cp -p debian/NEWS.gcc $(d_gcc)/$(docdir)/$(p_xbase)/NEWS + cp -p debian/NEWS.html $(d_gcc)/$(docdir)/$(p_xbase)/NEWS.html + cp -p $(srcdir)/ChangeLog $(d_gcc)/$(docdir)/$(p_xbase)/changelog + cp -p $(srcdir)/gcc/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/gcc/changelog + if [ -f $(builddir)/gcc/.bad_compare ]; then \ + ( \ + echo "The comparision of the stage2 and stage3 object files shows differences."; \ + echo "The Debian package was modified to ignore these differences."; \ + echo ""; \ + echo "The following files differ:"; \ + echo ""; \ + cat $(builddir)/gcc/.bad_compare; \ + ) > $(d_gcc)/$(docdir)/$(p_xbase)/BOOTSTRAP_COMPARISION_FAILURE; \ + fi + +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gcc) binary: binary-without-manpage' \ + >> $(d_gcc)/usr/share/lintian/overrides/$(p_gcc) +endif + + debian/dh_rmemptydirs -p$(p_gcc) + echo $(p_gcc) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +$(binary_stamp)-gcc-multi: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc_m) + dh_installdirs -p$(p_gcc_m) $(docdir) + + debian/dh_doclink -p$(p_gcc_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_gcc_m) + + dh_strip -p$(p_gcc_m) + dh_shlibdeps -p$(p_gcc_m) + echo $(p_gcc_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-plugindev: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_pld) + dh_installdirs -p$(p_pld) \ + $(docdir) \ + $(gcc_lib_dir)/plugin + $(dh_compat2) dh_movefiles -p$(p_pld) \ + $(gcc_lib_dir)/plugin/include \ + $(gcc_lib_dir)/plugin/gtype.state \ + $(gcc_lexec_dir)/plugin/gengtype + + debian/dh_doclink -p$(p_pld) $(p_xbase) + debian/dh_rmemptydirs -p$(p_pld) + dh_strip -p$(p_pld) + dh_shlibdeps -p$(p_pld) + mkdir -p $(d_pld)/usr/share/lintian/overrides + echo '$(p_pld) binary: hardening-no-pie' \ + > $(d_pld)/usr/share/lintian/overrides/$(p_pld) + echo $(p_pld) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-locales: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_loc) + dh_installdirs -p$(p_loc) \ + $(docdir) + $(dh_compat2) dh_movefiles -p$(p_loc) \ + $(PF)/share/locale/*/*/cpplib*.* \ + $(PF)/share/locale/*/*/gcc*.* + + debian/dh_doclink -p$(p_loc) $(p_xbase) + debian/dh_rmemptydirs -p$(p_loc) + echo $(p_loc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +# ---------------------------------------------------------------------- + +$(binary_stamp)-testresults: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_tst) + dh_installdirs -p$(p_tst) $(docdir) + + debian/dh_doclink -p$(p_tst) $(p_xbase) + + mkdir -p $(d_tst)/$(docdir)/$(p_xbase)/test +ifeq ($(with_check),yes) + cd $(d_tst) && tar xvf ../../installed-testlogs.tar +else + echo "Nothing to compare (testsuite not run)" + echo 'Test run disabled, reason: $(with_check)' \ + > $(d_tst)/$(docdir)/$(p_xbase)/test-run-disabled +endif + + debian/dh_rmemptydirs -p$(p_tst) + + echo $(p_tst) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc_d) + dh_installdirs -p$(p_gcc_d) \ + $(docdir)/$(p_xbase) \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_gcc_d) \ + $(PF)/share/info/cpp{,internals}-* \ + $(PF)/share/info/gcc{,int}-* \ + $(PF)/share/info/lib{gomp,itm}-* \ + $(if $(with_qmath),$(PF)/share/info/libquadmath-*) + rm -f $(d_gcc_d)/$(PF)/share/info/gccinst* + +ifeq ($(with_gomp),yes) + $(MAKE) -C $(buildlibdir)/libgomp stamp-build-info + cp -p $(buildlibdir)/libgomp/$(cmd_prefix)libgomp$(pkg_ver).info \ + $(d_gcc_d)/$(PF)/share/info/libgomp$(pkg_ver).info +endif +ifeq ($(with_itm),yes) + -$(MAKE) -C $(buildlibdir)/libitm stamp-build-info + if [ -f $(buildlibdir)/libitm/$(cmd_prefix)libitm$(pkg_ver).info ]; then \ + cp -p $(buildlibdir)/libitm/$(cmd_prefix)libitm$(pkg_ver).info \ + $(d_gcc_d)/$(PF)/share/info/libitm$(pkg_ver).info; \ + fi +endif + + debian/dh_doclink -p$(p_gcc_d) $(p_xbase) + dh_installdocs -p$(p_gcc_d) html/gcc.html html/gccint.html +ifeq ($(with_gomp),yes) + cp -p html/libgomp.html $(d_gcc_d)/usr/share/doc/$(p_gcc_d)/ +endif +ifeq ($(with_itm),yes) + cp -p html/libitm.html $(d_gcc_d)/usr/share/doc/$(p_gcc_d)/ +endif +ifeq ($(with_qmath),yes) + cp -p html/libquadmath.html $(d_gcc_d)/usr/share/doc/$(p_gcc_d)/ +endif + rm -f $(d_gcc_d)/$(docdir)/$(p_xbase)/copyright + debian/dh_rmemptydirs -p$(p_gcc_d) + echo $(p_gcc_d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-gcn.mk b/rules.d/binary-gcn.mk new file mode 100644 index 0000000..7ae4eaa --- /dev/null +++ b/rules.d/binary-gcn.mk @@ -0,0 +1,124 @@ +ifeq ($(with_offload_gcn),yes) + arch_binaries := $(arch_binaries) gcn + ifeq ($(with_common_libs),yes) + arch_binaries := $(arch_binaries) gcn-plugin + endif +endif + +p_gcn = gcc$(pkg_ver)-offload-amdgcn +d_gcn = debian/$(p_gcn) + +p_pl_gcn = libgomp-plugin-amdgcn1 +d_pl_gcn = debian/$(p_pl_gcn) + +dirs_gcn = \ + $(docdir)/$(p_xbase)/ \ + $(PF)/bin \ + $(gcc_lib_dir)/accel \ + $(gcc_lexec_dir)/accel + +files_gcn = \ + $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-accel-$(gcn_target_name)-gcc$(pkg_ver) \ + $(gcc_lib_dir)/accel/$(gcn_target_name) \ + $(gcc_lexec_dir)/accel/$(gcn_target_name) + +# not needed: libs moved, headers not needed for lto1 +# $(PF)/amdgcn-none + +# are these needed? +# $(PF)/lib/gcc/$(gcn_target_name)/$(versiondir)/{include,finclude,mgomp} + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_gcn += \ + $(PF)/share/man/man1/$(DEB_HOST_GNU_TYPE)-accel-$(gcn_target_name)-gcc$(pkg_ver).1 +endif + +$(binary_stamp)-gcn: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcn) + dh_installdirs -p$(p_gcn) $(dirs_gcn) + tar -c -C $(d)-gcn -f - $(files_gcn) \ + | tar -x -v -C $(d_gcn) -f - + +ifeq ($(gcn_tools_llvm_version),tools) + : # re-create the symlinks as relative symlinks + dh_link -p$(p_gcn) \ + /usr/$(gcn_target_name)/bin/ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/$(gcn_target_name)/bin/as /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/$(gcn_target_name)/bin/ld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/$(gcn_target_name)/bin/nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/$(gcn_target_name)/bin/ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib +else + : # re-create the symlinks as relative symlinks + dh_link -p$(p_gcn) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib + + mkdir -p $(d_gcn)/usr/$(gcn_target_name)/bin + dh_link -p$(p_gcn) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /usr/$(gcn_target_name)/bin/ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /usr/$(gcn_target_name)/bin/as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /usr/$(gcn_target_name)/bin/ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /usr/$(gcn_target_name)/bin/nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /usr/$(gcn_target_name)/bin/ranlib +endif + + mkdir -p $(d_gcn)/usr/share/lintian/overrides + ( \ + echo '$(p_gcn) binary: hardening-no-pie'; \ + echo '$(p_gcn) binary: non-standard-dir-in-usr'; \ + echo '$(p_gcn) binary: file-in-unusual-dir'; \ + echo '$(p_gcn) binary: binary-from-other-architecture'; \ + ) > $(d_gcn)/usr/share/lintian/overrides/$(p_gcn) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gcn) binary: binary-without-manpage' \ + >> $(d_gcn)/usr/share/lintian/overrides/$(p_gcn) +endif + + debian/dh_doclink -p$(p_gcn) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_gcn) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gcn)/$(gcc_lexec_dir)/accel/$(gcn_target_name)/{collect2,lto1,lto-wrapper,mkoffload} +endif + dh_strip -p$(p_gcn) \ + $(if $(unstripped_exe),-X/lto1) -X/lib{c,g,m,gcc,gomp,gcov,gfortran,caf_single,ssp,ssp_nonshared,stdc++}.a + dh_shlibdeps -p$(p_gcn) + echo $(p_gcn) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcn-plugin: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_pl_gcn) + dh_installdirs -p$(p_pl_gcn) \ + $(docdir) \ + $(usr_lib) + $(dh_compat2) dh_movefiles -p$(p_pl_gcn) \ + $(usr_lib)/libgomp-plugin-gcn.so.* + + mkdir -p $(d_pl_gcn)/usr/share/lintian/overrides + ( \ + echo '$(p_pl_gcn) binary: package-name-doesnt-match-sonames'; \ + ) > $(d_pl_gcn)/usr/share/lintian/overrides/$(p_pl_gcn) + debian/dh_doclink -p$(p_pl_gcn) $(p_xbase) + debian/dh_rmemptydirs -p$(p_pl_gcn) + + dh_strip -p$(p_pl_gcn) + dh_makeshlibs -p$(p_pl_gcn) + dh_shlibdeps -p$(p_pl_gcn) + echo $(p_pl_gcn) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-go.mk b/rules.d/binary-go.mk new file mode 100644 index 0000000..b8e2c93 --- /dev/null +++ b/rules.d/binary-go.mk @@ -0,0 +1,423 @@ +ifeq ($(with_libgo),yes) + $(lib_binaries) += libgo +endif +ifeq ($(with_godev),yes) + $(lib_binaries) += libgo-dev +endif +ifeq ($(with_lib64go),yes) + $(lib_binaries) += lib64go +endif +ifeq ($(with_lib64godev),yes) + $(lib_binaries) += lib64go-dev +endif +ifeq ($(with_lib32go),yes) + $(lib_binaries) += lib32go +endif +ifeq ($(with_lib32godev),yes) + $(lib_binaries) += lib32go-dev +endif +ifeq ($(with_libn32go),yes) + $(lib_binaries) += libn32go +endif +ifeq ($(with_libn32godev),yes) + $(lib_binaries) += libn32go-dev +endif +ifeq ($(with_libx32go),yes) + $(lib_binaries) += libx32go +endif +ifeq ($(with_libx32godev),yes) + $(lib_binaries) += libx32go-dev +endif + +ifneq ($(DEB_STAGE),rtlibs) + arch_binaries := $(arch_binaries) gccgo-nat gccgo-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) gccgo + indep_binaries := $(indep_binaries) gccgo-build + endif + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) gccgo-multi + endif + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) go-doc + endif + endif +endif + +p_go_n = gccgo$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_go_h = gccgo$(pkg_ver)-for-host +p_go_b = gccgo$(pkg_ver)-for-build +p_go = gccgo$(pkg_ver) +p_go_m = gccgo$(pkg_ver)-multilib$(cross_bin_arch) +p_god = gccgo$(pkg_ver)-doc +p_golib = libgo$(GO_SONAME)$(cross_lib_arch) + +d_go_n = debian/$(p_go_n) +d_go_h = debian/$(p_go_h) +d_go_b = debian/$(p_go_b) +d_go = debian/$(p_go) +d_go_m = debian/$(p_go_m) +d_god = debian/$(p_god) +d_golib = debian/$(p_golib) + +dirs_go_n = \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) \ + $(PF)/include \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +dirs_go = \ + $(docdir)/$(p_xbase)/go \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + +files_go_n = \ + $(PF)/bin/$(cmd_prefix)gccgo$(pkg_ver) \ + $(gcc_lexec_dir)/go1 + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + files_go_n += \ + $(PF)/bin/$(cmd_prefix){go,gofmt}$(pkg_ver) \ + $(gcc_lexec_dir)/cgo \ + $(gcc_lexec_dir)/{buildid,test2json,vet} \ + $(PF)/share/man/man1/$(cmd_prefix){go,gofmt}$(pkg_ver).1 +endif + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_go_n += \ + $(PF)/share/man/man1/$(cmd_prefix)gccgo$(pkg_ver).1 +endif + +ifeq ($(with_standalone_go),yes) + + dirs_go_n += \ + $(gcc_lib_dir)/include \ + $(PF)/share/man/man1 + dirs_go += \ + $(PF)/share/man/man1 + +# XXX: what about triarch mapping? + files_go_n += \ + $(PF)/bin/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver) \ + $(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \ + $(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \ + $(gcc_lexec_dir)/{cc1,collect2,lto1,lto-wrapper} \ + $(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} \ + $(gcc_lib_dir)/{libgcc*,libgcov.a,*.o} \ + $(header_files) \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) + + ifeq ($(with_cc1),yes) + files_go_n += \ + $(gcc_lib_dir)/plugin/libcc1plugin.so{,.0,.0.0.0} + endif + + ifneq ($(GFDL_INVARIANT_FREE),yes) + files_go_n += \ + $(PF)/share/man/man1/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver).1 + endif + + ifeq ($(biarch64),yes) + files_go_n += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o} + endif + ifeq ($(biarch32),yes) + files_go_n += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o} + endif + ifeq ($(biarchn32),yes) + files_go_n += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o} + endif + ifeq ($(biarchx32),yes) + files_go_n += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o} + endif +endif + +# ---------------------------------------------------------------------- +define __do_libgo + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libgo.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo '$(p_l) binary: unstripped-binary-or-object' \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + : # don't strip: https://gcc.gnu.org/ml/gcc-patches/2015-02/msg01722.html + : # dh_strip -p$(p_l) --dbg-package=$(p_d) + : # $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst go$(GO_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst go$(GO_SONAME),atomic$(ATOMIC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define install_gccgo_lib + mv $(d)/$(usr_lib$(3))/$(1).a debian/$(4)/$(gcc_lib_dir$(3))/ + if [ -f $(d)/$(usr_lib$(3))/$(1)libbegin.a ]; then \ + mv $(d)/$(usr_lib$(3))/$(1)libbegin.a debian/$(4)/$(gcc_lib_dir$(3))/; \ + fi + rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so +endef + +# __do_gccgo_libgcc(flavour,package,todir,fromdir) +define __do_gccgo_libgcc + $(if $(findstring gccgo,$(PKGSOURCE)), + : # libgcc_s.so may be a linker script on some architectures + set -e; \ + if [ -h $(4)/libgcc_s.so ]; then \ + rm -f $(4)/libgcc_s.so; \ + dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ + $(3)/libgcc_s.so; \ + else \ + mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \ + dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ + $(3)/libgcc_s.so.$(GCC_SONAME); \ + fi; \ + $(if $(1), dh_link -p$(2) /$(3)/libgcc_s.so \ + $(gcc_lib_dir)/libgcc_s_$(1).so;) + ) +endef + +define __do_libgo_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) \ + $(usr_lib$(2)) + mv $(d)/$(usr_lib$(2))/{libgobegin,libgolibbegin}.a \ + $(d)/$(gcc_lib_dir$(2))/ + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/{libgobegin,libgolibbegin}.a \ + $(usr_lib$(2))/go + $(call install_gccgo_lib,libgo,$(GO_SONAME),$(2),$(p_l)) + + $(if $(filter yes, $(with_standalone_go)), \ + $(call install_gccgo_lib,libgomp,$(GOMP_SONAME),$(2),$(p_l))) + $(call __do_gccgo_libgcc,$(2),$(p_l),$(gcc_lib_dir$(2)),$(d)/$(usr_lib$(2))) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgo = $(call __do_libgo,lib$(1)go$(GO_SONAME),$(1)) +do_libgo_dev = $(call __do_libgo_dev,lib$(1)go-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libgo: $(install_stamp) + $(call do_libgo,) + +$(binary_stamp)-lib64go: $(install_stamp) + $(call do_libgo,64) + +$(binary_stamp)-lib32go: $(install_stamp) + $(call do_libgo,32) + +$(binary_stamp)-libn32go: $(install_stamp) + $(call do_libgo,n32) + +$(binary_stamp)-libx32go: $(install_stamp) + $(call do_libgo,x32) + +$(binary_stamp)-libgo-dev: $(install_stamp) + $(call do_libgo_dev,) + +$(binary_stamp)-lib64go-dev: $(install_stamp) + $(call do_libgo_dev,64) + +$(binary_stamp)-lib32go-dev: $(install_stamp) + $(call do_libgo_dev,32) + +$(binary_stamp)-libx32go-dev: $(install_stamp) + $(call do_libgo_dev,x32) + +$(binary_stamp)-libn32go-dev: $(install_stamp) + $(call do_libgo_dev,n32) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gccgo-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_go_n) + dh_installdirs -p$(p_go_n) $(dirs_go_n) + + $(dh_compat2) dh_movefiles -p$(p_go_n) $(files_go_n) + +ifneq (,$(findstring gccgo,$(PKGSOURCE))) + rm -rf $(d_go_n)/$(gcc_lib_dir)/include/cilk + rm -rf $(d_go_n)/$(gcc_lib_dir)/include/openacc.h +endif + +ifeq ($(with_standalone_go),yes) + ifeq ($(with_gomp),yes) + mv $(d)/$(usr_lib)/libgomp*.spec $(d_go_n)/$(gcc_lib_dir)/ + endif + ifeq ($(with_cc1),yes) + rm -f $(d)/$(usr_lib)/libcc1.so + dh_link -p$(p_go_n) \ + /$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so + endif +endif + + echo '$(p_go_n) binary: unstripped-binary-or-object' \ + > $(d_go_n)/usr/share/lintian/overrides/$(p_go_n) + echo '$(p_go_n) binary: hardening-no-pie' \ + >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_go_n) binary: binary-without-manpage' \ + >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n) +endif + + debian/dh_doclink -p$(p_go_n) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_go_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_go_n)/$(gcc_lexec_dir)/go1 +endif + dh_strip -v -p$(p_go_n) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \ + -X/buildid -X/test2json -X/vet $(if $(unstripped_exe),-X/go1) + dh_shlibdeps -p$(p_go_n) + echo $(p_go_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gccgo-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_go_h) + debian/dh_doclink -p$(p_go_h) $(p_xbase) + echo $(p_go_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gccgo-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_go_b) + debian/dh_doclink -p$(p_go_b) $(p_cpp_b) + echo $(p_go_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gccgo: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_go) + dh_installdirs -p$(p_go) $(dirs_go) + + ln -sf $(cmd_prefix)gccgo$(pkg_ver) \ + $(d_go)/$(PF)/bin/gccgo$(pkg_ver) + ln -sf $(cmd_prefix)go$(pkg_ver) \ + $(d_go)/$(PF)/bin/go$(pkg_ver) + ln -sf $(cmd_prefix)gofmt$(pkg_ver) \ + $(d_go)/$(PF)/bin/gofmt$(pkg_ver) + ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)gccgo$(pkg_ver).1.gz \ + $(d_go)/$(PF)/share/man/man1/gccgo$(pkg_ver).1.gz + endif + ln -sf $(cmd_prefix)go$(pkg_ver).1.gz \ + $(d_go)/$(PF)/share/man/man1/go$(pkg_ver).1.gz + ln -sf $(cmd_prefix)gofmt$(pkg_ver).1.gz \ + $(d_go)/$(PF)/share/man/man1/gofmt$(pkg_ver).1.gz + +ifeq ($(with_standalone_go),yes) + for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_go)/$(PF)/bin/$$i$(pkg_ver); \ + done + ifneq ($(GFDL_INVARIANT_FREE),yes) + for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $(cmd_prefix)gcc$(pkg_ver).1.gz \ + $(d_go)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done + endif +endif + +ifeq ($(GFDL_INVARIANT_FREE),yes) + mkdir -p $(d_go)/usr/share/lintian/overrides + echo '$(p_go) binary: binary-without-manpage' \ + > $(d_go)/usr/share/lintian/overrides/$(p_go) +endif + + debian/dh_doclink -p$(p_go) $(p_xbase) + +# cp -p $(srcdir)/gcc/go/ChangeLog \ +# $(d_go)/$(docdir)/$(p_base)/go/changelog + debian/dh_rmemptydirs -p$(p_go) + + echo $(p_go) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gccgo-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_go_m) + dh_installdirs -p$(p_go_m) $(docdir) + + mkdir -p $(d_go_m)/usr/share/lintian/overrides + echo '$(p_go_m) binary: non-multi-arch-lib-dir' \ + > $(d_go_m)/usr/share/lintian/overrides/$(p_go_m) + + debian/dh_doclink -p$(p_go_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_go_m) + dh_strip -p$(p_go_m) + dh_shlibdeps -p$(p_go_m) + echo $(p_go_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-go-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_god) + dh_installdirs -p$(p_god) \ + $(docdir)/$(p_xbase)/go \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_god) \ + $(PF)/share/info/gccgo* + + debian/dh_doclink -p$(p_god) $(p_xbase) + dh_installdocs -p$(p_god) + rm -f $(d_god)/$(docdir)/$(p_xbase)/copyright + cp -p html/gccgo.html $(d_god)/$(docdir)/$(p_xbase)/go/ + echo $(p_god) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-hppa64.mk b/rules.d/binary-hppa64.mk new file mode 100644 index 0000000..36f91f5 --- /dev/null +++ b/rules.d/binary-hppa64.mk @@ -0,0 +1,39 @@ +arch_binaries := $(arch_binaries) hppa64 + +# ---------------------------------------------------------------------- +$(binary_stamp)-hppa64: $(install_hppa64_stamp) + dh_testdir + dh_testroot + +# dh_installdirs -p$(p_hppa64) + + rm -f $(d_hppa64)/usr/lib/libiberty.a + -find $(d_hppa64) ! -type d + + : # provide as and ld links + dh_link -p $(p_hppa64) \ + /usr/bin/hppa64-linux-gnu-as \ + /$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/as \ + /usr/bin/hppa64-linux-gnu-ld \ + /$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/ld + + debian/dh_doclink -p$(p_hppa64) $(p_xbase) + debian/dh_rmemptydirs -p$(p_hppa64) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/cc1 \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/collect2 \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/lto-wrapper \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/lto1 +endif + dh_strip -p$(p_hppa64) -X.o -Xlibgcc.a -Xlibgcov.a + dh_shlibdeps -p$(p_hppa64) + + mkdir -p $(d_hppa64)/usr/share/lintian/overrides + cp -p debian/$(p_hppa64).overrides \ + $(d_hppa64)/usr/share/lintian/overrides/$(p_hppa64) + + echo $(p_hppa64) >> debian/arch_binaries + + touch $@ diff --git a/rules.d/binary-libasan.mk b/rules.d/binary-libasan.mk new file mode 100644 index 0000000..5876d9b --- /dev/null +++ b/rules.d/binary-libasan.mk @@ -0,0 +1,72 @@ +$(lib_binaries) += libasan +ifeq ($(with_lib64asan),yes) + $(lib_binaries) += lib64asan +endif +ifeq ($(with_lib32asan),yes) + $(lib_binaries) += lib32asan +endif +ifeq ($(with_libn32asan),yes) + $(lib_binaries) += libn32asan +endif +ifeq ($(with_libx32asan),yes) + $(lib_binaries) += libx32asan +endif + +define __do_asan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libasan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo "$(p_l): unstripped-binary-or-object" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + $(if $(2), \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + echo "$(p_l): symbols-file-contains-current-version-with-debian-revision" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l)) + + $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(if $(ignshld),$(ignshld),-)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst asan$(ASAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst asan$(ASAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_asan = $(call __do_asan,lib$(1)asan$(ASAN_SONAME),$(1)) + +$(binary_stamp)-libasan: $(install_stamp) + $(call do_asan,) + +$(binary_stamp)-lib64asan: $(install_stamp) + $(call do_asan,64) + +$(binary_stamp)-lib32asan: $(install_stamp) + $(call do_asan,32) + +$(binary_stamp)-libn32asan: $(install_stamp) + $(call do_asan,n32) + +$(binary_stamp)-libx32asan: $(install_stamp) + $(call do_asan,x32) diff --git a/rules.d/binary-libatomic.mk b/rules.d/binary-libatomic.mk new file mode 100644 index 0000000..522a9b6 --- /dev/null +++ b/rules.d/binary-libatomic.mk @@ -0,0 +1,56 @@ +$(lib_binaries) += libatomic +ifeq ($(with_lib64atomic),yes) + $(lib_binaries) += lib64atomic +endif +ifeq ($(with_lib32atomic),yes) + $(lib_binaries) += lib32atomic +endif +ifeq ($(with_libn32atomic),yes) + $(lib_binaries) += libn32atomic +endif +ifeq ($(with_libx32atomic),yes) + $(lib_binaries) += libx32atomic +endif + +define __do_atomic + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libatomic.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libatomic.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_atomic = $(call __do_atomic,lib$(1)atomic$(ATOMIC_SONAME),$(1)) + +$(binary_stamp)-libatomic: $(install_stamp) + $(call do_atomic,) + +$(binary_stamp)-lib64atomic: $(install_stamp) + $(call do_atomic,64) + +$(binary_stamp)-lib32atomic: $(install_stamp) + $(call do_atomic,32) + +$(binary_stamp)-libn32atomic: $(install_stamp) + $(call do_atomic,n32) + +$(binary_stamp)-libx32atomic: $(install_stamp) + $(call do_atomic,x32) diff --git a/rules.d/binary-libcc1.mk b/rules.d/binary-libcc1.mk new file mode 100644 index 0000000..1dba145 --- /dev/null +++ b/rules.d/binary-libcc1.mk @@ -0,0 +1,31 @@ +ifeq ($(with_libcc1),yes) + ifneq ($(DEB_CROSS),yes) + arch_binaries := $(arch_binaries) libcc1 + endif +endif + +p_cc1 = libcc1-$(CC1_SONAME) +d_cc1 = debian/$(p_cc1) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libcc1: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cc1) + dh_installdirs -p$(p_cc1) \ + $(docdir) \ + $(usr_lib) + $(dh_compat2) dh_movefiles -p$(p_cc1) \ + $(usr_lib)/libcc1.so.* + + debian/dh_doclink -p$(p_cc1) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cc1) + + dh_strip -p$(p_cc1) + dh_makeshlibs -p$(p_cc1) + dh_shlibdeps -p$(p_cc1) + echo $(p_cc1) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-libdiag.mk b/rules.d/binary-libdiag.mk new file mode 100644 index 0000000..1d04281 --- /dev/null +++ b/rules.d/binary-libdiag.mk @@ -0,0 +1,146 @@ +ifeq ($(with_libdiag),yes) + $(lib_binaries) += libdiag +endif + +$(lib_binaries) += libdiagdev + +arch_binaries := $(arch_binaries) diag + +ifneq ($(DEB_CROSS),yes) +# indep_binaries := $(indep_binaries) libdiagdoc +endif + +p_diag = gcc$(pkg_ver)-diagnostics +p_diaglib = libgdiagnostics$(DIAGNOSTICS_SONAME) +p_diagdbg = libgdiagnostics$(DIAGNOSTICS_SONAME)-dbg +p_diagdev = libgdiagnostics$(pkg_ver)-dev +p_diagdoc = libgdiagnostics$(pkg_ver)-doc + +d_diag = debian/$(p_diag) +d_diaglib = debian/$(p_diaglib) +d_diagdev = debian/$(p_diagdev) +d_diagdbg = debian/$(p_diagdbg) +d_diagdoc = debian/$(p_diagdoc) + +$(binary_stamp)-libdiag: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_diaglib) $(d_diagdbg) + dh_installdirs -p$(p_diaglib) \ + $(usr_lib) +ifeq ($(with_dbg),yes) + dh_installdirs -p$(p_diagdbg) +endif + + $(dh_compat2) dh_movefiles -p$(p_diaglib) \ + $(usr_lib)/libgdiagnostics.so.* + rm -f $(d)/$(usr_lib)/libgdiagnostics.so + + debian/dh_doclink -p$(p_diaglib) $(p_base) +ifeq ($(with_dbg),yes) + debian/dh_doclink -p$(p_diagdbg) $(p_base) +endif + + $(call do_strip_lib_dbg, $(p_diaglib), $(p_diagdbg), $(v_dbg),,) + $(cross_makeshlibs) dh_makeshlibs -p$(p_diaglib) + $(call cross_mangle_shlibs,$(p_diaglib)) + $(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_diaglib) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_diaglib)) + echo $(p_diaglib) $(if $(with_dbg), $(p_diagdbg)) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libdiagdev: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_diagdev) + dh_installdirs -p$(p_diagdev) \ + $(usr_lib) \ + $(gcc_lib_dir)/include + + rm -f $(d)/$(usr_lib)/libgdiagnostics.so + + $(dh_compat2) dh_movefiles -p$(p_diagdev) \ + $(gcc_lib_dir)/include/libgdiagnostics*.h + dh_link -p$(p_diagdev) \ + $(usr_lib)/libgdiagnostics.so.$(GCCJIT_SONAME) $(gcc_lib_dir)/libgdiagnostics.so + + debian/dh_doclink -p$(p_diagdev) $(p_base) + + echo $(p_diagdev) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libdiagdoc: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_diagdoc) + dh_installdirs -p$(p_diagdoc) \ + $(PF)/share/info + + $(dh_compat2) dh_movefiles -p$(p_diagdoc) \ + $(PF)/share/info/libgdiagnostics* + + debian/dh_doclink -p$(p_diagdoc) $(p_base) + echo $(p_diagdoc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-diag: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_diag) + dh_installdirs -p$(p_diag) \ + $(PF)/bin \ + $(PF)/share/man/man1 + + $(dh_compat2) dh_movefiles -p$(p_diag) \ + $(PF)/bin/$(cmd_prefix)sarif-replay$(pkg_ver) + dh_link -p$(p_diag) \ + $(PF)/bin/$(cmd_prefix)sarif-replay$(pkg_ver) $(PF)/bin/sarif-replay$(pkg_ver) + + if which help2man >/dev/null 2>&1; then \ + LD_LIBRARY_PATH=$(CURDIR)/$(d_diaglib)/$(usr_lib):/usr/lib/$(DEB_HOST_MULTIARCH)/libfakeroot${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \ + help2man --no-discard-stderr --help-option=--usage --no-info \ + --version-string=$(BASE_VERSION) \ + --name="Replay results from one or more .sarif files as if they were GCC diagnostics" \ + $(d_diag)/$(PF)/bin/sarif-replay$(pkg_ver) > debian/sarif-replay.1; \ + fi + cp debian/sarif-replay.1 \ + $(d_diag)/$(PF)/share/man/man1/$(cmd_prefix)sarif-replay$(pkg_ver).1 + dh_link -p$(p_diag) \ + $(PF)/share/man/man1/$(cmd_prefix)sarif-replay$(pkg_ver).1 \ + $(PF)/share/man/man1/sarif-replay$(pkg_ver).1 + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_diag)/$(PF)/bin/$(cmd_prefix)sarif-replay$(pkg_ver) +endif + dh_strip -p$(p_diag) + + $(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_diag) \ + -L$(p_diaglib) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + + mkdir -p $(d_diag)/usr/share/lintian/overrides + echo '$(p_diag) binary: hardening-no-pie' \ + > $(d_diag)/usr/share/lintian/overrides/$(p_diag) + + debian/dh_doclink -p$(p_diag) $(p_base) + + echo $(p_diag) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ diff --git a/rules.d/binary-libgcc.mk b/rules.d/binary-libgcc.mk new file mode 100644 index 0000000..2632bff --- /dev/null +++ b/rules.d/binary-libgcc.mk @@ -0,0 +1,318 @@ +ifeq ($(with_libgcc),yes) + $(lib_binaries) += libgcc +endif +ifeq ($(with_lib64gcc),yes) + $(lib_binaries) += lib64gcc +endif +ifeq ($(with_lib32gcc),yes) + $(lib_binaries) += lib32gcc +endif +ifeq ($(with_libn32gcc),yes) + $(lib_binaries) += libn32gcc +endif +ifeq ($(with_libx32gcc),yes) + $(lib_binaries) += libx32gcc +endif + +ifneq ($(DEB_STAGE),rtlibs) + ifeq ($(with_cdev),yes) + $(lib_binaries) += libgcc-dev + endif + ifeq ($(with_lib64gccdev),yes) + $(lib_binaries) += lib64gcc-dev + endif + ifeq ($(with_lib32gccdev),yes) + $(lib_binaries) += lib32gcc-dev + endif + ifeq ($(with_libn32gccdev),yes) + $(lib_binaries) += libn32gcc-dev + endif + ifeq ($(with_libx32gccdev),yes) + $(lib_binaries) += libx32gcc-dev + endif +endif + +p_lgcc = libgcc-s$(GCC_SONAME)$(cross_lib_arch) +p_lgccdbg = libgcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lgccdev = libgcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lgcc = debian/$(p_lgcc) +d_lgccdbg = debian/$(p_lgccdbg) +d_lgccdev = debian/$(p_lgccdev) + +p_l32gcc = lib32gcc-s$(GCC_SONAME)$(cross_lib_arch) +p_l32gccdbg = lib32gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) +p_l32gccdev = lib32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_l32gcc = debian/$(p_l32gcc) +d_l32gccdbg = debian/$(p_l32gccdbg) +d_l32gccdev = debian/$(p_l32gccdev) + +p_l64gcc = lib64gcc-s$(GCC_SONAME)$(cross_lib_arch) +p_l64gccdbg = lib64gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) +p_l64gccdev = lib64gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_l64gcc = debian/$(p_l64gcc) +d_l64gccdbg = debian/$(p_l64gccdbg) +d_l64gccdev = debian/$(p_l64gccdev) + +p_ln32gcc = libn32gcc-s$(GCC_SONAME)$(cross_lib_arch) +p_ln32gccdbg = libn32gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) +p_ln32gccdev = libn32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_ln32gcc = debian/$(p_ln32gcc) +d_ln32gccdbg = debian/$(p_ln32gccdbg) +d_ln32gccdev = debian/$(p_ln32gccdev) + +p_lx32gcc = libx32gcc-s$(GCC_SONAME)$(cross_lib_arch) +p_lx32gccdbg = libx32gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lx32gccdev = libx32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lx32gcc = debian/$(p_lx32gcc) +d_lx32gccdbg = debian/$(p_lx32gccdbg) +d_lx32gccdev = debian/$(p_lx32gccdev) + +# __do_gcc_devels(flavour,package,todir,fromdir) +define __do_gcc_devels + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + test -n "$(2)" + rm -rf debian/$(2) + dh_installdirs -p$(2) $(docdir) #TODO + dh_installdirs -p$(2) $(3) + + $(call __do_gcc_devels2,$(1),$(2),$(3),$(4)) + + debian/dh_doclink -p$(2) $(p_lbase) + debian/dh_rmemptydirs -p$(2) + + dh_strip -p$(2) + $(cross_shlibdeps) dh_shlibdeps -p$(2) + $(call cross_mangle_substvars,$(2)) + echo $(2) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# __do_gcc_devels2(flavour,package,todir,fromdir) +define __do_gcc_devels2 +# stage1 builds static libgcc only + $(if $(filter $(DEB_STAGE),stage1),, + : # libgcc_s.so may be a linker script on some architectures + set -e; \ + if [ -h $(4)/libgcc_s.so ]; then \ + rm -f $(4)/libgcc_s.so; \ + rm -f $(d)/$(3)/libgcc_s.so; \ + ( \ + echo '/* GNU ld script'; \ + echo ' Use a trivial linker script instead of a symlink. */'; \ + echo 'GROUP ( libgcc_s.so.$(GCC_SONAME) )'; \ + ) > $(d)/$(3)/libgcc_s.so; \ + else \ + mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \ + fi; \ + ) + $(dh_compat2) dh_movefiles -p$(2) \ + $(3)/{libgcc*,libgcov.a,*.o} \ + $(if $(1),,$(gcc_lib_dir)/include/*.h $(gcc_lib_dir)/include/sanitizer/*.h) # Only move headers for the "main" package + $(if $(1),, for h in ISO_Fortran_binding.h libgccjit.h libgccjit++.h libdiagnostics.h libdiagnostics++.h; do \ + if [ -f debian/$(2)/$(gcc_lib_dir)/include/$$h ]; then \ + mv debian/$(2)/$(gcc_lib_dir)/include/$$h $(d)/$(gcc_lib_dir)/include/.; \ + fi; done) + + : # libbacktrace not installed by default + $(if $(filter yes, $(with_backtrace)), + if [ -f $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a ]; then \ + install -m644 $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a \ + debian/$(2)/$(gcc_lib_dir)/$(1); \ + fi; \ + $(if $(1),, + if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ + install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ + debian/$(2)/$(gcc_lib_dir)/include/; \ + install -m644 $(srcdir)/libbacktrace/backtrace.h \ + debian/$(2)/$(gcc_lib_dir)/include/; \ + fi + )) + + : # If building a flavour, add a lintian override + $(if $(1), + #TODO: use a file instead of a hacky echo + # but do we want to use one override file (in the source package) per + # flavour or not since they are essentially the same? + mkdir -p debian/$(2)/usr/share/lintian/overrides + echo "$(2) binary: binary-from-other-architecture" \ + >> debian/$(2)/usr/share/lintian/overrides/$(2) + ) + $(if $(filter yes, $(with_lib$(1)gmath)), + $(call install_gcc_lib,libgcc-math,$(GCC_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_libssp)), + $(call install_gcc_lib,libssp,$(SSP_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_ssp)), + mv $(4)/libssp_nonshared.a debian/$(2)/$(3)/; + ) + $(if $(filter yes, $(with_gomp)), + $(call install_gcc_lib,libgomp,$(GOMP_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_itm)), + $(call install_gcc_lib,libitm,$(ITM_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_atomic)), + $(call install_gcc_lib,libatomic,$(ATOMIC_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_asan)), + $(call install_gcc_lib,libasan,$(ASAN_SONAME),$(1),$(2)) + mv $(4)/libasan_preinit.o debian/$(2)/$(3)/; + ) + $(if $(1),,$(if $(filter yes, $(with_lsan)), + $(call install_gcc_lib,liblsan,$(LSAN_SONAME),$(1),$(2)) + mv $(4)/liblsan_preinit.o debian/$(2)/$(3)/; + )) + $(if $(1),,$(if $(filter yes, $(with_tsan)), + $(call install_gcc_lib,libtsan,$(TSAN_SONAME),$(1),$(2)) + mv $(4)/libtsan_preinit.o debian/$(2)/$(3)/; + )) + $(if $(filter yes, $(with_ubsan)), + $(call install_gcc_lib,libubsan,$(UBSAN_SONAME),$(1),$(2)) + ) + $(if $(1),,$(if $(filter yes, $(with_hwasan)), + $(call install_gcc_lib,libhwasan,$(HWASAN_SONAME),$(1),$(2)) + )) + $(if $(filter yes, $(with_vtv)), + $(call install_gcc_lib,libvtv,$(VTV_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_cilkrts)), + $(call install_gcc_lib,libcilkrts,$(CILKRTS_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_qmath)), + $(call install_gcc_lib,libquadmath,$(QUADMATH_SONAME),$(1),$(2)) + ) +endef + +# do_gcc_devels(flavour) +define do_gcc_devels + $(call __do_gcc_devels,$(1),$(p_l$(1)gccdev),$(gcc_lib_dir$(1)),$(d)/$(usr_lib$(1))) +endef + + +define __do_libgcc + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + + dh_installdirs -p$(p_l) \ + $(docdir)/$(p_l) \ + $(libgcc_dir$(2)) + + $(if $(filter yes,$(with_shared_libgcc)), + mv $(d)/$(usr_lib$(2))/libgcc_s.so.$(GCC_SONAME) \ + $(d_l)/$(libgcc_dir$(2))/. + ) + + $(if $(filter yes, $(with_internal_libunwind)), + mv $(d)/$(usr_lib$(2))/libunwind.* \ + $(d_l)/$(libgcc_dir$(2))/. + ) + + debian/dh_doclink -p$(p_l) $(if $(3),$(3),$(p_lbase)) + debian/dh_rmemptydirs -p$(p_l) + $(if $(with_dbg), + debian/dh_doclink -p$(p_d) $(if $(3),$(3),$(p_lbase)) + debian/dh_rmemptydirs -p$(p_d) + ) + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + + # see Debian #533843 for the __aeabi symbol handling; this construct is + # just to include the symbols for dpkg versions older than 1.15.3 which + # didn't allow bypassing the symbol blacklist + $(if $(filter yes,$(with_shared_libgcc)), + $(if $(findstring gcc-s1,$(p_l)), \ + ln -sf libgcc-s.symbols debian/$(p_l).symbols \ + ) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -v$(DEB_LIBGCC_VERSION) -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXXXXX ERROR $(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(if $(filter arm-linux-gnueabi%,$(DEB_TARGET_GNU_TYPE)), + if head -1 $(d_l)/DEBIAN/symbols 2>/dev/null | grep -q '^lib'; then \ + grep -q '^ __aeabi' $(d_l)/DEBIAN/symbols \ + || cat debian/libgcc.symbols.aeabi \ + >> $(d_l)/DEBIAN/symbols; \ + fi + ) + ) + + $(if $(DEB_STAGE),, + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) + ) + $(call cross_mangle_substvars,$(p_l)) + + $(if $(2),, # only for native + mkdir -p $(d_l)/usr/share/lintian/overrides + echo '$(p_l): package-name-doesnt-match-sonames' \ + > $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + $(if $(filter yes,$(with_libcompatgcc)), + debian/dh_doclink -p$(subst gcc-s,gcc,$(p_l)) $(if $(3),$(3),$(p_lbase)) + $(if $(with_dbg), + debian/dh_doclink -p$(subst gcc-s,gcc,$(p_d)) $(if $(3),$(3),$(p_lbase)) + ) + + $(if $(2),, + mkdir -p $(subst gcc-s,gcc,$(d_l))/$(libgcc_dir$(2)) + cp -p $(d_l)/$(libgcc_dir$(2))/libgcc_s.so.$(GCC_SONAME) \ + $(subst gcc-s,gcc,$(d_l))/lib/. + mkdir -p $(subst gcc-s,gcc,$(d_l))/DEBIAN + cp -p $(d_l)/DEBIAN/{symbols,shlibs} \ + $(subst gcc-s,gcc,$(d_l))/DEBIAN/. + cp -p $(d_l).substvars $(subst gcc-s,gcc,$(d_l)).substvars + mkdir -p $(subst gcc-s,gcc,$(d_l))/usr/share/lintian/overrides + ( \ + echo '$(subst gcc-s,gcc,$(p_l)): package-name-doesnt-match-sonames'; \ + echo '$(subst gcc-s,gcc,$(p_l)): shlibs-declares-dependency-on-other-package'; \ + echo '$(subst gcc-s,gcc,$(p_l)): symbols-declares-dependency-on-other-package'; \ + ) > $(subst gcc-s,gcc,$(d_l))/usr/share/lintian/overrides/$(subst gcc-s,gcc,$(p_l)) + ) + + echo $(subst gcc-s,gcc,$(p_l) $(if $(with_dbg), $(p_d))) >> debian/$(lib_binaries).epoch + ) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgcc = $(call __do_libgcc,lib$(1)gcc-s$(GCC_SONAME),$(1),$(2)) +# ---------------------------------------------------------------------- + +$(binary_stamp)-libgcc: $(install_dependencies) + $(call do_libgcc,,) + +$(binary_stamp)-lib64gcc: $(install_dependencies) + $(call do_libgcc,64,) + +$(binary_stamp)-lib32gcc: $(install_dependencies) + $(call do_libgcc,32,) + +$(binary_stamp)-libn32gcc: $(install_dependencies) + $(call do_libgcc,n32,) + +$(binary_stamp)-libx32gcc: $(install_dependencies) + $(call do_libgcc,x32,) + +$(binary_stamp)-libgcc-dev: $(install_dependencies) + $(call do_gcc_devels,) + +$(binary_stamp)-lib64gcc-dev: $(install_dependencies) + $(call do_gcc_devels,64) + +$(binary_stamp)-lib32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,32) + +$(binary_stamp)-libn32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,n32) + +$(binary_stamp)-libx32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,x32) diff --git a/rules.d/binary-libgccjit.mk b/rules.d/binary-libgccjit.mk new file mode 100644 index 0000000..9441a49 --- /dev/null +++ b/rules.d/binary-libgccjit.mk @@ -0,0 +1,95 @@ +ifeq ($(with_libgccjit),yes) + $(lib_binaries) += libgccjit +endif + +$(lib_binaries) += libgccjitdev + +ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) libgccjitdoc +endif + +p_jitlib = libgccjit$(GCCJIT_SONAME) +p_jitdbg = libgccjit$(GCCJIT_SONAME)-dbg +p_jitdev = libgccjit$(pkg_ver)-dev +p_jitdoc = libgccjit$(pkg_ver)-doc + +d_jitlib = debian/$(p_jitlib) +d_jitdev = debian/$(p_jitdev) +d_jitdbg = debian/$(p_jitdbg) +d_jitdoc = debian/$(p_jitdoc) + +$(binary_stamp)-libgccjit: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitlib) $(d_jitdbg) + dh_installdirs -p$(p_jitlib) \ + $(usr_lib) +ifeq ($(with_dbg),yes) + dh_installdirs -p$(p_jitdbg) +endif + + $(dh_compat2) dh_movefiles -p$(p_jitlib) \ + $(usr_lib)/libgccjit.so.* + rm -f $(d)/$(usr_lib)/libgccjit.so + + debian/dh_doclink -p$(p_jitlib) $(p_base) +ifeq ($(with_dbg),yes) + debian/dh_doclink -p$(p_jitdbg) $(p_base) +endif + + $(call do_strip_lib_dbg, $(p_jitlib), $(p_jitdbg), $(v_dbg),,) + $(cross_makeshlibs) dh_makeshlibs -p$(p_jitlib) + $(call cross_mangle_shlibs,$(p_jitlib)) + $(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_jitlib) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_jitlib)) + echo $(p_jitlib) $(if $(with_dbg), $(p_jitdbg)) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libgccjitdev: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitdev) + dh_installdirs -p$(p_jitdev) \ + $(usr_lib) \ + $(gcc_lib_dir)/include + + rm -f $(d)/$(usr_lib)/libgccjit.so + + $(dh_compat2) dh_movefiles -p$(p_jitdev) \ + $(gcc_lib_dir)/include/libgccjit*.h + dh_link -p$(p_jitdev) \ + $(usr_lib)/libgccjit.so.$(GCCJIT_SONAME) $(gcc_lib_dir)/libgccjit.so + + debian/dh_doclink -p$(p_jitdev) $(p_base) + + echo $(p_jitdev) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libgccjitdoc: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitdoc) + dh_installdirs -p$(p_jitdoc) \ + $(PF)/share/info/libgccjit-figures + + $(dh_compat2) dh_movefiles -p$(p_jitdoc) \ + $(PF)/share/info/libgccjit* + cp -p $(srcdir)/gcc/jit/docs/_build/texinfo/libgccjit-figures/*.png \ + $(d_jitdoc)/$(PF)/share/info/libgccjit-figures/. + + debian/dh_doclink -p$(p_jitdoc) $(p_base) + echo $(p_jitdoc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ diff --git a/rules.d/binary-libgomp.mk b/rules.d/binary-libgomp.mk new file mode 100644 index 0000000..b6e994e --- /dev/null +++ b/rules.d/binary-libgomp.mk @@ -0,0 +1,57 @@ +$(lib_binaries) += libgomp +ifeq ($(with_lib64gomp),yes) + $(lib_binaries) += lib64gomp +endif +ifeq ($(with_lib32gomp),yes) + $(lib_binaries) += lib32gomp +endif +ifeq ($(with_libn32gomp),yes) + $(lib_binaries) += libn32gomp +endif +ifeq ($(with_libx32gomp),yes) + $(lib_binaries) += libx32gomp +endif + +define __do_gomp + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgomp.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libgomp.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst gomp$(GOMP_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_gomp = $(call __do_gomp,lib$(1)gomp$(GOMP_SONAME),$(1)) + +$(binary_stamp)-libgomp: $(install_stamp) + $(call do_gomp,) + +$(binary_stamp)-lib64gomp: $(install_stamp) + $(call do_gomp,64) + +$(binary_stamp)-lib32gomp: $(install_stamp) + $(call do_gomp,32) + +$(binary_stamp)-libn32gomp: $(install_stamp) + $(call do_gomp,n32) + +$(binary_stamp)-libx32gomp: $(install_stamp) + $(call do_gomp,x32) diff --git a/rules.d/binary-libhwasan.mk b/rules.d/binary-libhwasan.mk new file mode 100644 index 0000000..86c2cdd --- /dev/null +++ b/rules.d/binary-libhwasan.mk @@ -0,0 +1,71 @@ +$(lib_binaries) += libhwasan +ifeq ($(with_lib64hwasan),yes) + $(lib_binaries) += lib64hwasan +endif +ifeq ($(with_lib32hwasan),yes) + $(lib_binaries) += lib32hwasan +endif +ifeq ($(with_libn32hwasan),yes) + $(lib_binaries) += libn32hwasan +endif +ifeq ($(with_libx32hwasan),yes) + $(lib_binaries) += libx32hwasan +endif + +define __do_hwasan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libhwasan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo "$(p_l): unstripped-binary-or-object" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + $(if $(2), \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + echo "$(p_l): symbols-file-contains-current-version-with-debian-revision" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l)) + + $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(if $(ignshld),$(ignshld),-)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst hwasan$(HWASAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst hwasan$(HWASAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_hwasan = $(call __do_hwasan,lib$(1)hwasan$(HWASAN_SONAME),$(1)) + +$(binary_stamp)-libhwasan: $(install_stamp) + $(call do_hwasan,) + +$(binary_stamp)-lib64hwasan: $(install_stamp) + $(call do_hwasan,64) + +$(binary_stamp)-lib32hwasan: $(install_stamp) + $(call do_hwasan,32) + +$(binary_stamp)-libn32hwasan: $(install_stamp) + $(call do_hwasan,n32) + +$(binary_stamp)-libx32hwasan: $(install_stamp) + $(call do_hwasan,x32) diff --git a/rules.d/binary-libitm.mk b/rules.d/binary-libitm.mk new file mode 100644 index 0000000..1553364 --- /dev/null +++ b/rules.d/binary-libitm.mk @@ -0,0 +1,57 @@ +$(lib_binaries) += libitm +ifeq ($(with_lib64itm),yes) + $(lib_binaries) += lib64itm +endif +ifeq ($(with_lib32itm),yes) + $(lib_binaries) += lib32itm +endif +ifeq ($(with_libn32itm),yes) + $(lib_binaries) += libn32itm +endif +ifeq ($(with_libx32itm),yes) + $(lib_binaries) += libx32itm +endif + +define __do_itm + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libitm.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libitm.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_itm = $(call __do_itm,lib$(1)itm$(ITM_SONAME),$(1)) + +$(binary_stamp)-libitm: $(install_stamp) + $(call do_itm,) + +$(binary_stamp)-lib64itm: $(install_stamp) + $(call do_itm,64) + +$(binary_stamp)-lib32itm: $(install_stamp) + $(call do_itm,32) + +$(binary_stamp)-libn32itm: $(install_stamp) + $(call do_itm,n32) + +$(binary_stamp)-libx32itm: $(install_stamp) + $(call do_itm,x32) diff --git a/rules.d/binary-liblsan.mk b/rules.d/binary-liblsan.mk new file mode 100644 index 0000000..fa8001c --- /dev/null +++ b/rules.d/binary-liblsan.mk @@ -0,0 +1,67 @@ +$(lib_binaries) += liblsan +ifeq ($(with_lib64lsan),yes) + $(lib_binaries) += lib64lsan +endif +ifeq ($(with_lib32lsan),yes) + $(lib_binaries) += lib32lsan +endif +ifeq ($(with_libn32lsan),yes) + $(lib_binaries) += libn32lsan +endif +ifeq ($(with_libx32lsan),yes) + $(lib_binaries) += libx32lsan +endif + +define __do_lsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/liblsan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo "$(p_l): unstripped-binary-or-object" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst lsan$(LSAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst lsan$(LSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_lsan = $(call __do_lsan,lib$(1)lsan$(LSAN_SONAME),$(1)) + +$(binary_stamp)-liblsan: $(install_stamp) + $(call do_lsan,) + +$(binary_stamp)-lib64lsan: $(install_stamp) + $(call do_lsan,64) + +$(binary_stamp)-lib32lsan: $(install_stamp) + $(call do_lsan,32) + +$(binary_stamp)-libn32lsan: $(install_stamp) + $(call do_lsan,n32) + +$(binary_stamp)-libx32lsan: $(install_stamp) + $(call do_lsan,x32) diff --git a/rules.d/binary-libobjc.mk b/rules.d/binary-libobjc.mk new file mode 100644 index 0000000..345e6ea --- /dev/null +++ b/rules.d/binary-libobjc.mk @@ -0,0 +1,137 @@ +ifeq ($(with_libobjc),yes) + $(lib_binaries) += libobjc +endif +ifeq ($(with_objcdev),yes) + $(lib_binaries) += libobjc-dev +endif +ifeq ($(with_lib64objc),yes) + $(lib_binaries) += lib64objc +endif +ifeq ($(with_lib64objcdev),yes) + $(lib_binaries) += lib64objc-dev +endif +ifeq ($(with_lib32objc),yes) + $(lib_binaries) += lib32objc +endif +ifeq ($(with_lib32objcdev),yes) + $(lib_binaries) += lib32objc-dev +endif +ifeq ($(with_libn32objc),yes) + $(lib_binaries) += libn32objc +endif +ifeq ($(with_libn32objcdev),yes) + $(lib_binaries) += libn32objc-dev +endif +ifeq ($(with_libx32objc),yes) + $(lib_binaries) += libx32objc +endif +ifeq ($(with_libx32objcdev),yes) + $(lib_binaries) += libx32objc-dev +endif + +files_lobjcdev= \ + $(gcc_lib_dir)/include/objc + +files_lobjc = \ + $(usr_lib$(2))/libobjc.so.* +ifeq ($(with_objc_gc),yes) + files_lobjc += \ + $(usr_lib$(2))/libobjc_gc.so.* +endif + +define __do_libobjc + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(files_lobjc) + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + rm -f debian/$(p_l).symbols + $(if $(2), + ln -sf libobjc.symbols debian/$(p_l).symbols , + fgrep -v libobjc.symbols.gc debian/libobjc.symbols > debian/$(p_l).symbols + ) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst objc$(OBJC_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + + +define __do_libobjc_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(files_lobjcdev) + + $(call install_gcc_lib,libobjc,$(OBJC_SONAME),$(2),$(p_l)) + $(if $(filter yes,$(with_objc_gc)), + $(if $(2),, + dh_link -p$(p_l) \ + /$(usr_lib$(2))/libobjc_gc.so.$(OBJC_SONAME) \ + /$(gcc_lib_dir$(2))/libobjc_gc.so + )) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + + + +# ---------------------------------------------------------------------- + +do_libobjc = $(call __do_libobjc,lib$(1)objc$(OBJC_SONAME),$(1)) +do_libobjc_dev = $(call __do_libobjc_dev,lib$(1)objc-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libobjc: $(install_stamp) + $(call do_libobjc,) + +$(binary_stamp)-lib64objc: $(install_stamp) + $(call do_libobjc,64) + +$(binary_stamp)-lib32objc: $(install_stamp) + $(call do_libobjc,32) + +$(binary_stamp)-libn32objc: $(install_stamp) + $(call do_libobjc,n32) + +$(binary_stamp)-libx32objc: $(install_stamp) + $(call do_libobjc,x32) + + +$(binary_stamp)-libobjc-dev: $(install_stamp) + $(call do_libobjc_dev,) + +$(binary_stamp)-lib64objc-dev: $(install_stamp) + $(call do_libobjc_dev,64) + +$(binary_stamp)-lib32objc-dev: $(install_stamp) + $(call do_libobjc_dev,32) + +$(binary_stamp)-libx32objc-dev: $(install_stamp) + $(call do_libobjc_dev,x32) + +$(binary_stamp)-libn32objc-dev: $(install_stamp) + $(call do_libobjc_dev,n32) diff --git a/rules.d/binary-libquadmath.mk b/rules.d/binary-libquadmath.mk new file mode 100644 index 0000000..e5db688 --- /dev/null +++ b/rules.d/binary-libquadmath.mk @@ -0,0 +1,57 @@ +$(lib_binaries) += libqmath +ifeq ($(with_lib64qmath),yes) + $(lib_binaries) += lib64qmath +endif +ifeq ($(with_lib32qmath),yes) + $(lib_binaries) += lib32qmath +endif +ifeq ($(with_libn32qmath),yes) + $(lib_binaries) += libn32qmath +endif +ifeq ($(with_libx32qmath),yes) + $(lib_binaries) += libx32qmath +endif + +define __do_qmath + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libquadmath.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libquadmath.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_qmath = $(call __do_qmath,lib$(1)quadmath$(QUADMATH_SONAME),$(1)) + +$(binary_stamp)-libqmath: $(install_stamp) + $(call do_qmath,) + +$(binary_stamp)-lib64qmath: $(install_stamp) + $(call do_qmath,64) + +$(binary_stamp)-lib32qmath: $(install_stamp) + $(call do_qmath,32) + +$(binary_stamp)-libn32qmath: $(install_stamp) + $(call do_qmath,n32) + +$(binary_stamp)-libx32qmath: $(install_stamp) + $(call do_qmath,x32) diff --git a/rules.d/binary-libssp.mk b/rules.d/binary-libssp.mk new file mode 100644 index 0000000..e2c873a --- /dev/null +++ b/rules.d/binary-libssp.mk @@ -0,0 +1,155 @@ +arch_binaries := $(arch_binaries) libssp +ifeq ($(with_lib64ssp),yes) + arch_binaries := $(arch_binaries) lib64ssp +endif +ifeq ($(with_lib32ssp),yes) + arch_binaries := $(arch_binaries) lib32ssp +endif +ifeq ($(with_libn32ssp),yes) + arch_binaries := $(arch_binaries) libn32ssp +endif +ifeq ($(with_libx32ssp),yes) + arch_binaries := $(arch_binaries) libx32ssp +endif + +p_ssp = libssp$(SSP_SONAME) +p_ssp32 = lib32ssp$(SSP_SONAME) +p_ssp64 = lib64ssp$(SSP_SONAME) +p_sspx32 = libx32ssp$(SSP_SONAME) +p_sspd = libssp$(SSP_SONAME)-dev + +d_ssp = debian/$(p_ssp) +d_ssp32 = debian/$(p_ssp32) +d_ssp64 = debian/$(p_ssp64) +d_sspx32 = debian/$(p_sspx32) +d_sspd = debian/$(p_sspd) + +dirs_ssp = \ + $(docdir)/$(p_base) \ + $(PF)/$(libdir) +files_ssp = \ + $(PF)/$(libdir)/libssp.so.* + +dirs_sspd = \ + $(docdir) \ + $(PF)/include \ + $(PF)/$(libdir) +files_sspd = \ + $(gcc_lib_dir)/include/ssp \ + $(PF)/$(libdir)/libssp.{a,so} \ + $(PF)/$(libdir)/libssp_nonshared.a + +ifeq ($(with_lib32ssp),yes) + dirs_sspd += $(lib32) + files_sspd += $(lib32)/libssp.{a,so} + files_sspd += $(lib32)/libssp_nonshared.a +endif +ifeq ($(with_lib64ssp),yes) + dirs_sspd += $(PF)/lib64 + files_sspd += $(PF)/lib64/libssp.{a,so} + files_sspd += $(PF)/lib64/libssp_nonshared.a +endif + +$(binary_stamp)-libssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp) + dh_installdirs -p$(p_ssp) + + $(dh_compat2) dh_movefiles -p$(p_ssp) $(files_ssp) + debian/dh_doclink -p$(p_ssp) $(p_lbase) + + debian/dh_rmemptydirs -p$(p_ssp) + + dh_strip -p$(p_ssp) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp) -V '$(p_ssp) (>= $(DEB_SOVERSION))' + dh_shlibdeps -p$(p_ssp) + echo $(p_ssp) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib64ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp64) + dh_installdirs -p$(p_ssp64) \ + $(PF)/lib64 + $(dh_compat2) dh_movefiles -p$(p_ssp64) \ + $(PF)/lib64/libssp.so.* + + debian/dh_doclink -p$(p_ssp64) $(p_lbase) + + dh_strip -p$(p_ssp64) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp64) -V '$(p_ssp64) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_ssp64) + echo $(p_ssp64) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp32) + dh_installdirs -p$(p_ssp32) \ + $(lib32) + $(dh_compat2) dh_movefiles -p$(p_ssp32) \ + $(lib32)/libssp.so.* + + debian/dh_doclink -p$(p_ssp32) $(p_lbase) + + dh_strip -p$(p_ssp32) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp32) -V '$(p_ssp32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_ssp32) + echo $(p_ssp32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libn32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_sspn32) + dh_installdirs -p$(p_sspn32) \ + $(PF)/$(libn32) + $(dh_compat2) dh_movefiles -p$(p_sspn32) \ + $(PF)/$(libn32)/libssp.so.* + + debian/dh_doclink -p$(p_sspn32) $(p_lbase) + + dh_strip -p$(p_sspn32) + dh_makeshlibs $(ldconfig_arg) -p$(p_sspn32) -V '$(p_sspn32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_sspn32) + echo $(p_sspn32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libx32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_sspx32) + dh_installdirs -p$(p_sspx32) \ + $(PF)/$(libx32) + $(dh_compat2) dh_movefiles -p$(p_sspx32) \ + $(PF)/$(libx32)/libssp.so.* + + debian/dh_doclink -p$(p_sspx32) $(p_lbase) + + dh_strip -p$(p_sspx32) + dh_makeshlibs $(ldconfig_arg) -p$(p_sspx32) -V '$(p_sspx32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_sspx32) + echo $(p_sspx32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-libstdcxx.mk b/rules.d/binary-libstdcxx.mk new file mode 100644 index 0000000..fd064c7 --- /dev/null +++ b/rules.d/binary-libstdcxx.mk @@ -0,0 +1,523 @@ +ifeq ($(with_libcxx),yes) + $(lib_binaries) += libstdcxx +endif +ifeq ($(with_lib64cxx),yes) + $(lib_binaries) += lib64stdcxx +endif +ifeq ($(with_lib32cxx),yes) + $(lib_binaries) += lib32stdcxx +endif +ifeq ($(with_libn32cxx),yes) + $(lib_binaries) += libn32stdcxx +endif +ifeq ($(with_libx32cxx),yes) + $(lib_binaries) += libx32stdcxx +endif + +ifneq ($(DEB_STAGE),rtlibs) + ifeq ($(with_lib64cxxdev),yes) + $(lib_binaries) += lib64stdcxx-dev + endif + ifeq ($(with_lib64cxxdbg),yes) + $(lib_binaries) += lib64stdcxxdbg + endif + ifeq ($(with_lib32cxxdev),yes) + $(lib_binaries) += lib32stdcxx-dev + endif + ifeq ($(with_lib32cxxdbg),yes) + $(lib_binaries) += lib32stdcxxdbg + endif + ifeq ($(with_libn32cxxdev),yes) + $(lib_binaries) += libn32stdcxx-dev + endif + ifeq ($(with_libn32cxxdbg),yes) + $(lib_binaries) += libn32stdcxxdbg + endif + ifeq ($(with_libx32cxxdev),yes) + $(lib_binaries) += libx32stdcxx-dev + endif + ifeq ($(with_libx32cxxdbg),yes) + $(lib_binaries) += libx32stdcxxdbg + endif + + ifeq ($(with_cxxdev),yes) + $(lib_binaries) += libstdcxx-dev + ifeq ($(with_libcxx_doc),yes) + ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) libstdcxx-doc + endif + endif + endif +endif + +libstdc_ext = -$(BASE_VERSION) + +p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) +p_lib64 = lib64stdc++$(CXX_SONAME)$(cross_lib_arch) +p_lib32 = lib32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_libn32= libn32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_libx32= libx32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_dev = libstdc++$(libstdc_ext)-dev$(cross_lib_arch) +p_pic = libstdc++$(libstdc_ext)-pic$(cross_lib_arch) +p_dbg = libstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbg64 = lib64stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbg32 = lib32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbgn32= libn32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbgx32= libx32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_libd = libstdc++$(libstdc_ext)-doc + +d_lib = debian/$(p_lib) +d_lib64 = debian/$(p_lib64) +d_lib32 = debian/$(p_lib32) +d_libn32= debian/$(p_libn32) +d_libx32= debian/$(p_libx32) +d_dev = debian/$(p_dev) +d_pic = debian/$(p_pic) +d_dbg = debian/$(p_dbg) +d_dbg64 = debian/$(p_dbg64) +d_dbg32 = debian/$(p_dbg32) +d_libd = debian/$(p_libd) + +dirs_dev = \ + $(docdir)/$(p_base)/C++ \ + $(usr_lib) \ + $(gcc_lib_dir)/include \ + $(PFL)/include/c++ + +files_dev = \ + $(PFL)/include/c++/$(BASE_VERSION) \ + $(gcc_lib_dir)/libstdc++.{a,so} \ + $(gcc_lib_dir)/libsupc++.a \ + $(gcc_lib_dir)/libstdc++fs.a \ + $(gcc_lib_dir)/libstdc++exp.a \ + $(gcc_lib_dir)/libstdc++.modules.json + +ifeq ($(with_multiarch_cxxheaders),yes) + dirs_dev += \ + $(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION) + files_dev += \ + $(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/{bits,ext} +endif + +dirs_dbg = \ + $(docdir) \ + $(PF)/lib/debug/$(usr_lib) \ + $(usr_lib)/debug \ + $(PF)/share/gdb/auto-load/$(usr_lib)/debug \ + $(gcc_lib_dir) +files_dbg = \ + $(usr_lib)/debug/libstdc++.{a,so*} \ + $(usr_lib)/debug/libstdc++fs.a \ + $(usr_lib)/debug/libstdc++exp.a + +dirs_pic = \ + $(docdir) \ + $(gcc_lib_dir) +files_pic = \ + $(gcc_lib_dir)/libstdc++_pic.a + +# ---------------------------------------------------------------------- + +gxx_baseline_dir = $(shell \ + sed -n '/^baseline_dir *=/s,.*= *\(.*\)$$,\1,p' \ + $(buildlibdir)/libstdc++-v3/testsuite/Makefile) +gxx_baseline_file = $(gxx_baseline_dir)/baseline_symbols.txt + +debian/README.libstdc++-baseline: + : # save the results of the libstdc++ test run, overridden by check-abi + -tar -c -f $(buildlibdir)/libstdc++-v3/testsuite/libstdc++.tar \ + -C $(buildlibdir)/libstdc++-v3/testsuite libstdc++.{log,sum} + + cat debian/README.libstdc++-baseline.in \ + > debian/README.libstdc++-baseline + + baseline_name=`basename $(gxx_baseline_dir)`; \ + baseline_parentdir=`dirname $(gxx_baseline_dir)`; \ + compat_baseline_name=""; \ + if [ -f "$(gxx_baseline_file)" ]; then \ + ( \ + echo "A baseline file for $$baseline_name was found."; \ + echo "Running the check-abi script ..."; \ + echo ""; \ + $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite \ + check-abi; \ + ) | grep -Ev '^Test run by \S+ on .*$$' >> debian/README.libstdc++-baseline; \ + else \ + ( \ + echo "No baseline file found for $$baseline_name."; \ + echo "Generating a new baseline file ..."; \ + echo ""; \ + ) >> debian/README.libstdc++-baseline; \ + mkdir -p $(gxx_baseline_dir); \ + $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite new-abi-baseline; \ + if [ -f $(gxx_baseline_file) ]; then \ + cat $(gxx_baseline_file); \ + else \ + cat $$(find $(buildlibdir)/libstdc++-v3 $(srcdir)/libstdc++-v3 -name '.new') || true; \ + fi | grep -Ev '^Test run by \S+ on .*$$' >> debian/README.libstdc++-baseline; \ + fi + + : # restore the results of the libstdc++ test run + -tar -x -f $(buildlibdir)/libstdc++-v3/testsuite/libstdc++.tar \ + -C $(buildlibdir)/libstdc++-v3/testsuite + +# ---------------------------------------------------------------------- +# FIXME: see #792204, libstdc++ symbols on sparc64, for now ignore errors +# for the 32bit multilib build + +define __do_libstdcxx + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + + dh_installdirs -p$(p_l) \ + $(docdir) \ + $(usr_lib$(2)) \ + $(PF)/share/gdb/auto-load/$(usr_lib$(2)) + + $(if $(DEB_CROSS),,$(if $(2),, + dh_installdirs -p$(p_l) \ + $(PF)/share/gcc/python + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(PF)/share/gcc/python/libstdcxx + )) + cp -p $(d)/$(usr_lib$(2))/libstdc++.so.*.py \ + $(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/. + sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib$(2))'," \ + $(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/libstdc++.so.*.py + + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \ + $(d_l)/$(usr_lib$(2))/. + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + + $(if $(with_dbg), + dh_strip -p$(p_l) $(if $(filter rtlibs,$(DEB_STAGE)),,--dbg-package=$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch)), + dh_strip -p$(p_l) $(if $(filter rtlibs,$(DEB_STAGE)),,--dbgsym-migration='$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch) (<< $(v_dbg))') + ) + ln -sf libstdc++.symbols debian/$(p_l).symbols + $(if $(filter $(DEB_TARGET_ARCH), armel hppa sparc64), \ + -$(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + @echo "FIXME: libstdc++ not feature complete (https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html)", \ + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + ) + + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libstdcxx_dbg + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_d) + dh_installdirs -p$(p_d) \ + $(PF)/lib/debug/$(usr_lib$(2)) \ + $(usr_lib$(2)) + + $(if $(with_dbg), + $(if $(filter yes,$(with_lib$(2)cxx)), + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \ + $(d_d)/$(usr_lib$(2))/.; + dh_strip -p$(p_d) --keep-debug; + $(if $(filter yes,$(with_common_libs)),, # if !with_common_libs + # remove the debug symbols for libstdc++ + # built by a newer version of GCC + rm -rf $(d_d)/usr/lib/debug/$(PF); + ) + rm -f $(d_d)/$(usr_lib$(2))/libstdc++.so.*[0-9] + ) + ) + + $(if $(filter yes,$(with_cxx_debug)), + mkdir -p $(d_d)/$(usr_lib$(2))/debug; + mv $(d)/$(usr_lib$(2))/debug/libstdc++* $(d_d)/$(usr_lib$(2))/debug; + rm -f $(d_d)/$(usr_lib$(2))/debug/libstdc++_pic.a + ) + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_d) \ + $(call shlibdirs_to_search,$(subst $(pkg_ver),,$(subst stdc++$(CXX_SONAME),gcc-s$(GCC_SONAME),$(p_l))),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_d)) + + debian/dh_doclink -p$(p_d) $(p_lbase) + debian/dh_rmemptydirs -p$(p_d) + echo $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libstdcxx_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + mv $(d)/$(usr_lib$(2))/libsupc++.a \ + $(d)/$(gcc_lib_dir$(2))/ + + rm -rf $(d_l) + dh_installdirs -p$(p_l) $(gcc_lib_dir$(2)) + + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/libsupc++.a \ + $(if $(with_multiarch_cxxheaders),$(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/$(2)) + $(call install_gcc_lib,libstdc++,$(CXX_SONAME),$(2),$(p_l)) + + $(if $(2),, + mv $(d)/$(usr_lib$(2))/libstdc++.modules.json \ + $(d_l)/$(gcc_lib_dir$(2))/ + sed -i '/source-path/s,\.\./include,/$(PF)/include,' \ + $(d_l)/$(gcc_lib_dir$(2))/libstdc++.modules.json + ) + + $(if $(filter yes, $(with_common_libs)),, + rm -f $(d_l)/$(gcc_lib_dir$(2))/libstdc++.so + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.$(CXX_SONAME).*[0-9] \ + $(d_l)/$(gcc_lib_dir$(2))/libstdc++.so + ) + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + dh_strip -p$(p_l) + dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libstdcxx = $(call __do_libstdcxx,lib$(1)stdc++$(CXX_SONAME),$(1)) +do_libstdcxx_dbg = $(call __do_libstdcxx_dbg,lib$(1)stdc++$(CXX_SONAME)$(libstdc_ext),$(1)) +do_libstdcxx_dev = $(call __do_libstdcxx_dev,lib$(1)stdc++-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libstdcxx: $(install_stamp) + $(call do_libstdcxx,) + +$(binary_stamp)-lib64stdcxx: $(install_stamp) + $(call do_libstdcxx,64) + +$(binary_stamp)-lib32stdcxx: $(install_stamp) + $(call do_libstdcxx,32) + +$(binary_stamp)-libn32stdcxx: $(install_stamp) + $(call do_libstdcxx,n32) + +$(binary_stamp)-libx32stdcxx: $(install_stamp) + $(call do_libstdcxx,x32) + +$(binary_stamp)-lib64stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,64) + +$(binary_stamp)-lib32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,32) + +$(binary_stamp)-libn32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,n32) + +$(binary_stamp)-libx32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,x32) + +$(binary_stamp)-lib64stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,64) + +$(binary_stamp)-lib32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,32) + +$(binary_stamp)-libn32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,n32) + +$(binary_stamp)-libx32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,x32) + +# ---------------------------------------------------------------------- +libcxxdev_deps = $(install_stamp) +ifeq ($(with_libcxx),yes) + libcxxdev_deps += $(binary_stamp)-libstdcxx +endif +ifeq ($(with_check),yes) + libcxxdev_deps += debian/README.libstdc++-baseline +endif +# FIXME: the -dev and -dbg packages are built twice ... +$(binary_stamp)-libstdcxx-dev: $(libcxxdev_deps) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_dev) $(d_pic) + dh_installdirs -p$(p_dev) $(dirs_dev) + dh_installdirs -p$(p_pic) $(dirs_pic) + dh_installdirs -p$(p_dbg) $(dirs_dbg) + + : # - correct libstdc++-v3 file locations + mv $(d)/$(usr_lib)/libsupc++.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(usr_lib)/libstdc++fs.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(usr_lib)/libstdc++exp.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(usr_lib)/libstdc++.{a,so} $(d)/$(gcc_lib_dir)/ + + mv $(d)/$(usr_lib)/libstdc++.modules.json $(d)/$(gcc_lib_dir)/ + sed -i '/source-path/s,\.\./include,/$(PF)/include,' \ + $(d)/$(gcc_lib_dir)/libstdc++.modules.json + + : # FIXME: update libstdc++-pic patch +# mv $(d)/$(usr_lib)/libstdc++_pic.a $(d)/$(gcc_lib_dir)/ + cp $(buildlibdir)/libstdc++-v3/src/.libs/libstdc++convenience.a \ + $(d)/$(gcc_lib_dir)/libstdc++_pic.a + + rm -f $(d)/$(usr_lib)/debug/libstdc++_pic.a + rm -f $(d)/$(usr_lib64)/debug/libstdc++_pic.a + + : # remove precompiled headers + -find $(d) -type d -name '*.gch' | xargs rm -rf + + for i in $(d)/$(PF)/include/c++/$(GCC_VERSION)/*-linux; do \ + if [ -d $$i ]; then mv $$i $$i-gnu; fi; \ + done + + $(dh_compat2) dh_movefiles -p$(p_dev) $(files_dev) + $(dh_compat2) dh_movefiles -p$(p_pic) $(files_pic) +ifeq ($(with_cxx_debug),yes) + $(dh_compat2) dh_movefiles -p$(p_dbg) $(files_dbg) +endif + +ifeq ($(with_common_libs),yes) + dh_link -p$(p_dev) \ + /$(usr_lib)/libstdc++.so.$(CXX_SONAME) \ + /$(gcc_lib_dir)/libstdc++.so +else + : # PR libstdc++/103382, install the library in the gcc_lib_dir + : # to link against the libstdc++ from this GCC version. + rm -f $(d_dev)/$(gcc_lib_dir)/libstdc++.so + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.$(CXX_SONAME).*[0-9] \ + $(d_dev)/$(gcc_lib_dir)/libstdc++.so + ls -l $(d_dev)/$(gcc_lib_dir)/libstdc++.so +endif + + debian/dh_doclink -p$(p_dev) $(p_lbase) + debian/dh_doclink -p$(p_pic) $(p_lbase) + debian/dh_doclink -p$(p_dbg) $(p_lbase) + cp -p $(srcdir)/libstdc++-v3/ChangeLog \ + $(d_dev)/$(docdir)/$(p_base)/C++/changelog.libstdc++ +ifeq ($(with_check),yes) + cp -p debian/README.libstdc++-baseline \ + $(d_dev)/$(docdir)/$(p_base)/C++/README.libstdc++-baseline.$(DEB_TARGET_ARCH) + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ + then \ + cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ + $(d_dev)/$(docdir)/$(p_base)/C++/libstdc++_symbols.txt.$(DEB_TARGET_ARCH); \ + fi +endif + cp -p $(buildlibdir)/libstdc++-v3/src/libstdc++-symbols.ver \ + $(d_pic)/$(gcc_lib_dir)/libstdc++_pic.map + + cp -p $(d)/$(usr_lib)/libstdc++.so.*.py \ + $(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/. + sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib)'," \ + $(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/libstdc++.so.*.py + +ifeq ($(with_libcxx),yes) + ifeq ($(with_dbg),yes) + cp -a $(d)/$(usr_lib)/libstdc++.so.*[0-9] \ + $(d_dbg)/$(usr_lib)/ + dh_strip -p$(p_dbg) --keep-debug + rm -f $(d_dbg)/$(usr_lib)/libstdc++.so.*[0-9] + endif +endif + $(call do_strip_lib_dbg, $(p_dev), $(p_dbg), $(v_dbg),,) +ifneq ($(with_common_libs),yes) + : # remove the debug symbols for libstdc++ built by a newer version of GCC + rm -rf $(d_dbg)/usr/lib/debug/$(PF) +endif + dh_strip -p$(p_pic) + +ifeq ($(with_cxxdev),yes) + debian/dh_rmemptydirs -p$(p_dev) + debian/dh_rmemptydirs -p$(p_pic) + debian/dh_rmemptydirs -p$(p_dbg) +endif + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) \ + $(call shlibdirs_to_search,,) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_dbg)) + echo $(p_dev) $(p_pic) $(p_dbg) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +doxygen_doc_dir = $(buildlibdir)/libstdc++-v3/doc + +doxygen-docs: $(build_doxygen_stamp) +$(build_doxygen_stamp): $(build_stamp) + $(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-html-doxygen + $(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-man-doxygen + -find $(doxygen_doc_dir)/doxygen/html -name 'struct*' -empty | xargs rm -f + + touch $@ + +$(binary_stamp)-libstdcxx-doc: $(install_stamp) doxygen-docs + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_libd) + dh_installdirs -p$(p_libd) \ + $(docdir)/$(p_base)/libstdc++ \ + $(PF)/share/man + +# debian/dh_doclink -p$(p_libd) $(p_base) + dh_link -p$(p_libd) /usr/share/doc/$(p_base) /usr/share/doc/$(p_libd) + dh_installdocs -p$(p_libd) + rm -f $(d_libd)/$(docdir)/$(p_base)/copyright + + cp -a $(srcdir)/libstdc++-v3/doc/html/* \ + $(d_libd)/$(docdir)/$(p_base)/libstdc++/. + cp -a $(doxygen_doc_dir)/doxygen/html \ + $(d_libd)/$(docdir)/$(p_base)/libstdc++/user + find $(d_libd)/$(docdir)/$(p_base)/libstdc++ -name '*.md5' \ + | xargs -r rm -f + +# Broken docs ... see #766499 +# rm -f $(d_libd)/$(docdir)/$(p_base)/libstdc++/*/jquery.js +# dh_link -p$(p_libd) \ +# /usr/share/javascript/jquery/jquery.js \ +# /$(docdir)/$(p_base)/libstdc++/html/jquery.js \ +# /usr/share/javascript/jquery/jquery.js \ +# /$(docdir)/$(p_base)/libstdc++/user/jquery.js + + : FIXME: depending on the doxygen version + if [ -d $(doxygen_doc_dir)/doxygen/man/man3cxx ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3cxx \ + $(d_libd)/$(PF)/share/man/man3; \ + if [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3/* \ + $(d_libd)/$(PF)/share/man/man3/; \ + fi; \ + elif [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3 \ + $(d_libd)/$(PF)/share/man/man3; \ + fi + + for i in $(d_libd)/$(PF)/share/man/man3/*.3; do \ + [ -f $${i} ] || continue; \ + mv $${i} $${i}cxx; \ + done + rm -f $(d_libd)/$(PF)/share/man/man3/todo.3* + + mkdir -p $(d_libd)/usr/share/lintian/overrides + cp -p debian/$(p_libd).overrides \ + $(d_libd)/usr/share/lintian/overrides/$(p_libd) + + echo $(p_libd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-libtsan.mk b/rules.d/binary-libtsan.mk new file mode 100644 index 0000000..f1158d4 --- /dev/null +++ b/rules.d/binary-libtsan.mk @@ -0,0 +1,70 @@ +$(lib_binaries) += libtsan +ifeq (0,1) +ifeq ($(with_lib64tsan),yes) + $(lib_binaries) += lib64tsan +endif +ifeq ($(with_lib32tsan),yes) + $(lib_binaries) += lib32tsan +endif +ifeq ($(with_libn32tsan),yes) + $(lib_binaries) += libn32tsan +endif +ifeq ($(with_libx32tsan),yes) + $(lib_binaries) += libx32tsan +endif +endif + +define __do_tsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libtsan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo "$(p_l): unstripped-binary-or-object" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst tsan$(TSAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst tsan$(TSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_tsan = $(call __do_tsan,lib$(1)tsan$(TSAN_SONAME),$(1)) + +$(binary_stamp)-libtsan: $(install_stamp) + $(call do_tsan,) + +$(binary_stamp)-lib64tsan: $(install_stamp) + $(call do_tsan,64) + +$(binary_stamp)-lib32tsan: $(install_stamp) + $(call do_tsan,32) + +$(binary_stamp)-libn32tsan: $(install_stamp) + $(call do_tsan,n32) + +$(binary_stamp)-libx32tsan: $(install_stamp) + $(call do_tsan,x32) diff --git a/rules.d/binary-libubsan.mk b/rules.d/binary-libubsan.mk new file mode 100644 index 0000000..342b5a7 --- /dev/null +++ b/rules.d/binary-libubsan.mk @@ -0,0 +1,67 @@ +$(lib_binaries) += libubsan +ifeq ($(with_lib64ubsan),yes) + $(lib_binaries) += lib64ubsan +endif +ifeq ($(with_lib32ubsan),yes) + $(lib_binaries) += lib32ubsan +endif +ifeq ($(with_libn32ubsan),yes) + $(lib_binaries) += libn32ubsan +endif +ifeq ($(with_libx32ubsan),yes) + $(lib_binaries) += libx32ubsan +endif + +define __do_ubsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libubsan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo "$(p_l): unstripped-binary-or-object" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst ubsan$(UBSAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst ubsan$(UBSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_ubsan = $(call __do_ubsan,lib$(1)ubsan$(UBSAN_SONAME),$(1)) + +$(binary_stamp)-libubsan: $(install_stamp) + $(call do_ubsan,) + +$(binary_stamp)-lib64ubsan: $(install_stamp) + $(call do_ubsan,64) + +$(binary_stamp)-lib32ubsan: $(install_stamp) + $(call do_ubsan,32) + +$(binary_stamp)-libn32ubsan: $(install_stamp) + $(call do_ubsan,n32) + +$(binary_stamp)-libx32ubsan: $(install_stamp) + $(call do_ubsan,x32) diff --git a/rules.d/binary-libvtv.mk b/rules.d/binary-libvtv.mk new file mode 100644 index 0000000..5e61003 --- /dev/null +++ b/rules.d/binary-libvtv.mk @@ -0,0 +1,64 @@ +$(lib_binaries) += libvtv +ifeq ($(with_lib64vtv),yes) + $(lib_binaries) += lib64vtv +endif +ifeq ($(with_lib32vtv),yes) + $(lib_binaries) += lib32vtv +endif +ifeq ($(with_libn32vtv),yes) + $(lib_binaries) += libn32vtv +endif +ifeq ($(with_libx32vtv),yes) + $(lib_binaries) += libx32vtv +endif + +define __do_vtv + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libvtv.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst vtv$(VTV_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst vtv$(VTV_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_vtv = $(call __do_vtv,lib$(1)vtv$(VTV_SONAME),$(1)) + +$(binary_stamp)-libvtv: $(install_stamp) + $(call do_vtv,) + +$(binary_stamp)-lib64vtv: $(install_stamp) + $(call do_vtv,64) + +$(binary_stamp)-lib32vtv: $(install_stamp) + $(call do_vtv,32) + +$(binary_stamp)-libn32vtv: $(install_stamp) + $(call do_vtv,n32) + +$(binary_stamp)-libx32vtv: $(install_stamp) + $(call do_vtv,x32) diff --git a/rules.d/binary-m2.mk b/rules.d/binary-m2.mk new file mode 100644 index 0000000..0e68e16 --- /dev/null +++ b/rules.d/binary-m2.mk @@ -0,0 +1,325 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifeq (0,1) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) gm2-multi + endif + endif + arch_binaries := $(arch_binaries) gm2-nat gm2-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) gm2 + indep_binaries := $(indep_binaries) gm2-build + endif + + ifeq ($(with_m2dev),yes) + $(lib_binaries) += libgm2-dev + endif + ifeq ($(with_libgm2),yes) + $(lib_binaries) += libgm2 + endif + + ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) gm2-doc + endif + + ifeq (0,1) + ifeq ($(with_lib64gm2dev),yes) + $(lib_binaries) += lib64gm2-dev + endif + ifeq ($(with_lib32gm2dev),yes) + $(lib_binaries) += lib32gm2-dev + endif + ifeq ($(with_libn32gm2dev),yes) + $(lib_binaries) += libn32gm2-dev + endif + ifeq ($(with_libx32gm2dev),yes) + $(lib_binaries) += libx32gm2-dev + endif + + ifeq ($(with_lib64gm2),yes) + $(lib_binaries) += lib64gm2 + endif + ifeq ($(with_lib32gm2),yes) + $(lib_binaries) += lib32gm2 + endif + ifeq ($(with_libn32gm2),yes) + $(lib_binaries) += libn32gm2 + endif + ifeq ($(with_libx32gm2),yes) + $(lib_binaries) += libx32gm2 + endif + endif +endif + +p_gm2_n = gm2$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_gm2_h = gm2$(pkg_ver)-for-host +p_gm2_b = gm2$(pkg_ver)-for-build +p_gm2 = gm2$(pkg_ver) +p_gm2_m = gm2$(pkg_ver)-multilib$(cross_bin_arch) +p_libgm2 = libgm2-$(GM2_SONAME) +p_libgm2dev = libgm2$(pkg_ver)-dev +p_gm2d = gm2$(pkg_ver)-doc + +d_gm2_n = debian/$(p_gm2_n) +d_gm2_h = debian/$(p_gm2_h) +d_gm2_b = debian/$(p_gm2_b) +d_gm2 = debian/$(p_gm2) +d_gm2_m = debian/$(p_gm2_m) +d_libgm2 = debian/$(p_libgm2) +d_libgm2dev = debian/$(p_libgm2dev) +d_gm2d = debian/$(p_gm2d) + +dirs_gm2_n = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir)/plugin \ + usr/share/lintian/overrides +#ifneq ($(DEB_CROSS),yes) +# dirs_gm2_n += \ +# $(gm2_include_dir) +#endif + +dirs_gm2 = \ + $(PF)/bin \ + $(PF)/share/man/man1 + +files_gm2_n = \ + $(PF)/bin/$(cmd_prefix)gm2$(pkg_ver) \ + $(gcc_lib_dir)/plugin/m2rte.so \ + $(gcc_lexec_dir)/cc1gm2 +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + files_gm2_n += \ + $(PF)/share/man/man1/$(cmd_prefix)gm2$(pkg_ver).1 +endif + +dirs_libgm2 = \ + $(PF)/lib \ + $(gm2_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-gm2-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gm2_n) + dh_installdirs -p$(p_gm2_n) $(dirs_gm2_n) + + $(dh_compat2) dh_movefiles -p$(p_gm2_n) $(files_gm2_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gm2_n)/$(gcc_lexec_dir)/cc1gm2 +endif + dh_strip -p$(p_gm2_n) \ + $(if $(unstripped_exe),-X/cc1gm2 -X/gm2) + dh_shlibdeps -p$(p_gm2_n) + + mkdir -p $(d_gm2_n)/usr/share/lintian/overrides + echo '$(p_gm2_n) binary: hardening-no-pie' \ + > $(d_gm2_n)/usr/share/lintian/overrides/$(p_gm2_n) + + debian/dh_doclink -p$(p_gm2_n) $(p_xbase) + + echo $(p_gm2_n) >> debian/arch_binaries + + find $(d_gm2_n) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gm2-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gm2_h) + debian/dh_doclink -p$(p_gm2_h) $(p_xbase) + echo $(p_gm2_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gm2-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gm2_b) + debian/dh_doclink -p$(p_gm2_b) $(p_cpp_b) + echo $(p_gm2_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gm2: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gm2) + dh_installdirs -p$(p_gm2) $(dirs_gm2) + + dh_installdocs -p$(p_gm2) + dh_installchangelogs -p$(p_gm2) src/gcc/m2/ChangeLog + + ln -sf $(cmd_prefix)gm2$(pkg_ver) \ + $(d_gm2)/$(PF)/bin/gm2$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + ln -sf $(cmd_prefix)gm2$(pkg_ver).1.gz \ + $(d_gm2)/$(PF)/share/man/man1/gm2$(pkg_ver).1.gz +endif + dh_link -p$(p_gm2) \ + /$(docdir)/$(p_xbase)/README.Bugs \ + /$(docdir)/$(p_gm2)/README.Bugs + + echo $(p_gm2) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gm2-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gm2_m) + dh_installdirs -p$(p_gm2_m) $(docdir) + + debian/dh_doclink -p$(p_gm2_m) $(p_xbase) + + dh_strip -p$(p_gm2_m) + dh_shlibdeps -p$(p_gm2_m) + echo $(p_gm2_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libgm2 + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libm2pim.so.* \ + $(usr_lib$(2))/libm2cor.so.* \ + $(usr_lib$(2))/libm2iso.so.* \ + $(usr_lib$(2))/libm2log.so.* \ + $(usr_lib$(2))/libm2min.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + : ln -sf libgm2.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gm2-$(GM2_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + ( \ + echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ + echo "$(p_l) binary: shared-lib-without-dependency-information"; \ + echo "$(p_l) binary: package-name-doesnt-match-sonames"; \ + ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) + + dh_lintian -p$(p_l) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# install_gm2_lib(lib,soname,flavour,package,subdir) +define install_gm2_lib + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so + mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3)) + rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} +endef + +define __do_libgm2_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + : # install_gm2_lib calls needed? + + $(if $(2),, + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir)/m2 + ) + + $(call install_gm2_lib,libm2pim,$(GM2_SONAME),$(2),$(p_l),m2/m2pim) + $(call install_gm2_lib,libm2cor,$(GM2_SONAME),$(2),$(p_l),m2/m2cor) + $(call install_gm2_lib,libm2iso,$(GM2_SONAME),$(2),$(p_l),m2/m2iso) + $(call install_gm2_lib,libm2log,$(GM2_SONAME),$(2),$(p_l),m2/m2log) + $(call install_gm2_lib,libm2min,$(GM2_SONAME),$(2),$(p_l),m2/m2min) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgm2 = $(call __do_libgm2,lib$(1)gm2-$(GM2_SONAME),$(1)) +do_libgm2_dev = $(call __do_libgm2_dev,lib$(1)gm2-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gm2-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gm2d) + dh_installdirs -p$(p_gm2d) \ + $(docdir)/$(p_gm2) \ + $(docdir)/$(p_xbase)/m2 \ + $(PF)/share/info + cp -p $(builddir)/gcc/doc/m2.info $(d_gm2d)/$(PF)/share/info/gm2-$(BASE_VERSION).info + cp -p html/gm2.html $(d_gm2d)/$(docdir)/$(p_xbase)/m2/gm2-$(BASE_VERSION).html + ln -sf ../$(p_xbase)/m2/gm2-$(BASE_VERSION).html $(d_gm2d)/$(docdir)/$(p_gm2)/gm2-$(BASE_VERSION).html + + debian/dh_doclink -p$(p_gm2d) $(p_xbase) + dh_installdocs -p$(p_gm2d) + rm -f $(d_gm2d)/$(docdir)/$(p_xbase)/copyright + + echo $(p_gm2d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(binary_stamp)-libgm2: $(install_stamp) + $(call do_libgm2,) + +$(binary_stamp)-lib64gm2: $(install_stamp) + $(call do_libgm2,64) + +$(binary_stamp)-lib32gm2: $(install_stamp) + $(call do_libgm2,32) + +$(binary_stamp)-libn32gm2: $(install_stamp) + $(call do_libgm2,n32) + +$(binary_stamp)-libx32gm2: $(install_stamp) + $(call do_libgm2,x32) + + +$(binary_stamp)-libgm2-dev: $(install_stamp) + $(call do_libgm2_dev,) + +$(binary_stamp)-lib64gm2-dev: $(install_stamp) + $(call do_libgm2_dev,64) + +$(binary_stamp)-lib32gm2-dev: $(install_stamp) + $(call do_libgm2_dev,32) + +$(binary_stamp)-libx32gm2-dev: $(install_stamp) + $(call do_libgm2_dev,x32) + +$(binary_stamp)-libn32gm2-dev: $(install_stamp) + $(call do_libgm2_dev,n32) diff --git a/rules.d/binary-nof.mk b/rules.d/binary-nof.mk new file mode 100644 index 0000000..fa5408a --- /dev/null +++ b/rules.d/binary-nof.mk @@ -0,0 +1,51 @@ +arch_binaries := $(arch_binaries) nof + +p_nof = gcc$(pkg_ver)-nof +d_nof = debian/$(p_nof) + +dirs_nof = \ + $(docdir) \ + $(usr_lib)/nof +ifeq ($(with_cdev),yes) + dirs_nof += \ + $(gcc_lib_dir)/nof +endif + +ifeq ($(with_cdev),yes) + files_nof = \ + $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \ + $(gcc_lib_dir)/libgcc_s_nof.so \ + $(usr_lib)/nof \ + $(gcc_lib_dir)/nof +else + files_nof = \ + $(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-nof: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + mv $(d)/$(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) $(d)/$(libgcc_dir)/. + rm -f $(d)/$(usr_lib)/libgcc_s_nof.so + ln -sf $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \ + $(d)/$(gcc_lib_dir)/libgcc_s_nof.so + + rm -rf $(d_nof) + dh_installdirs -p$(p_nof) $(dirs_nof) + $(dh_compat2) dh_movefiles -p$(p_nof) $(files_nof) + debian/dh_doclink -p$(p_nof) $(p_xbase) + dh_strip -p$(p_nof) + dh_shlibdeps -p$(p_nof) + + dh_makeshlibs $(ldconfig_arg) -p$(p_nof) + : # Only keep the shlibs file for the libgcc_s_nof library + fgrep libgcc_s_nof debian/$(p_nof)/DEBIAN/shlibs \ + > debian/$(p_nof)/DEBIAN/shlibs.tmp + mv -f debian/$(p_nof)/DEBIAN/shlibs.tmp debian/$(p_nof)/DEBIAN/shlibs + + echo $(p_nof) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-nvptx.mk b/rules.d/binary-nvptx.mk new file mode 100644 index 0000000..3bb4726 --- /dev/null +++ b/rules.d/binary-nvptx.mk @@ -0,0 +1,99 @@ +ifeq ($(with_offload_nvptx),yes) + arch_binaries := $(arch_binaries) nvptx + ifeq ($(with_common_libs),yes) + arch_binaries := $(arch_binaries) nvptx-plugin + endif +endif + +p_nvptx = gcc$(pkg_ver)-offload-nvptx +d_nvptx = debian/$(p_nvptx) + +p_pl_nvptx = libgomp-plugin-nvptx1 +d_pl_nvptx = debian/$(p_pl_nvptx) + +dirs_nvptx = \ + $(docdir)/$(p_xbase)/ \ + $(PF)/bin \ + $(gcc_lib_dir)/accel \ + $(gcc_lexec_dir)/accel + +files_nvptx = \ + $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-accel-nvptx-none-gcc$(pkg_ver) \ + $(gcc_lib_dir)/accel/nvptx-none \ + $(gcc_lexec_dir)/accel/nvptx-none + +# not needed: libs moved, headers not needed for lto1 +# $(PF)/nvptx-none + +# are these needed? +# $(PF)/lib/gcc/nvptx-none/$(versiondir)/{include,finclude,mgomp} + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_nvptx += \ + $(PF)/share/man/man1/$(DEB_HOST_GNU_TYPE)-accel-nvptx-none-gcc$(pkg_ver).1 +endif + +$(binary_stamp)-nvptx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_nvptx) + dh_installdirs -p$(p_nvptx) $(dirs_nvptx) + tar -c -C $(d)-nvptx -f - $(files_nvptx) \ + | tar -x -v -C $(d_nvptx) -f - + + : # re-create the symlinks as relative symlinks + dh_link -p$(p_nvptx) \ + /usr/bin/nvptx-none-ar /$(gcc_lexec_dir)/accel/nvptx-none/ar \ + /usr/bin/nvptx-none-as /$(gcc_lexec_dir)/accel/nvptx-none/as \ + /usr/bin/nvptx-none-ld /$(gcc_lexec_dir)/accel/nvptx-none/ld \ + /usr/bin/nvptx-none-ranlib /$(gcc_lexec_dir)/accel/nvptx-none/ranlib + + mkdir -p $(d_nvptx)/usr/share/lintian/overrides + ( \ + echo '$(p_nvptx) binary: hardening-no-pie'; \ + echo '$(p_nvptx) binary: no-code-sections' \ + ) > $(d_nvptx)/usr/share/lintian/overrides/$(p_nvptx) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_nvptx) binary: binary-without-manpage' \ + >> $(d_nvptx)/usr/share/lintian/overrides/$(p_nvptx) +endif + + debian/dh_doclink -p$(p_nvptx) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_nvptx) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_nvptx)/$(gcc_lexec_dir)/accel/nvptx-none/{collect2,lto1,lto-wrapper,mkoffload} +endif + dh_strip -p$(p_nvptx) \ + $(if $(unstripped_exe),-X/lto1) + dh_shlibdeps -p$(p_nvptx) + echo $(p_nvptx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-nvptx-plugin: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_pl_nvptx) + dh_installdirs -p$(p_pl_nvptx) \ + $(docdir) \ + $(usr_lib) + $(dh_compat2) dh_movefiles -p$(p_pl_nvptx) \ + $(usr_lib)/libgomp-plugin-nvptx.so.* + + debian/dh_doclink -p$(p_pl_nvptx) $(p_xbase) + debian/dh_rmemptydirs -p$(p_pl_nvptx) + + dh_strip -p$(p_pl_nvptx) + dh_makeshlibs -p$(p_pl_nvptx) + dh_shlibdeps -p$(p_pl_nvptx) + echo $(p_pl_nvptx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-objc.mk b/rules.d/binary-objc.mk new file mode 100644 index 0000000..e476a33 --- /dev/null +++ b/rules.d/binary-objc.mk @@ -0,0 +1,118 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) objc-multi + endif + arch_binaries := $(arch_binaries) objc-nat objc-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) objc + indep_binaries := $(indep_binaries) objc-build + endif +endif + +p_objc_n = gobjc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +d_objc_n = debian/$(p_objc_n) + +p_objc_h = gobjc$(pkg_ver)-for-host +d_objc_h = debian/$(p_objc_h) + +p_objc_b = gobjc$(pkg_ver)-for-build +d_objc_b = debian/$(p_objc_b) + +p_objc = gobjc$(pkg_ver) +d_objc = debian/$(p_objc) + +p_objc_m= gobjc$(pkg_ver)-multilib$(cross_bin_arch) +d_objc_m= debian/$(p_objc_m) + +dirs_objc_n = \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_objc = \ + $(docdir)/$(p_xbase)/ObjC + +files_objc_n = \ + $(gcc_lexec_dir)/cc1obj + +$(binary_stamp)-objc-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objc_n) + dh_installdirs -p$(p_objc_n) $(dirs_objc_n) + $(dh_compat2) dh_movefiles -p$(p_objc_n) $(files_objc_n) + + echo '$(p_objc_n) binary: hardening-no-pie' \ + > $(d_objc_n)/usr/share/lintian/overrides/$(p_objc_n) + + debian/dh_doclink -p$(p_objc_n) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_objc_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_objc_n)/$(gcc_lexec_dir)/cc1obj +endif + dh_strip -p$(p_objc_n) \ + $(if $(unstripped_exe),-X/cc1obj) + dh_shlibdeps -p$(p_objc_n) + echo $(p_objc_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objc-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objc_h) + debian/dh_doclink -p$(p_objc_h) $(p_xbase) + echo $(p_objc_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objc-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objc_b) + debian/dh_doclink -p$(p_objc_b) $(p_cpp_b) + echo $(p_objc_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objc: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objc) + dh_installdirs -p$(p_objc) $(dirs_objc) + + cp -p $(srcdir)/libobjc/{README*,THREADS*} \ + $(d_objc)/$(docdir)/$(p_xbase)/ObjC/. + + cp -p $(srcdir)/libobjc/ChangeLog \ + $(d_objc)/$(docdir)/$(p_xbase)/ObjC/changelog.libobjc + + debian/dh_doclink -p$(p_objc) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_objc) + + echo $(p_objc) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objc-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objc_m) + dh_installdirs -p$(p_objc_m) $(docdir) + + debian/dh_doclink -p$(p_objc_m) $(p_xbase) + + dh_strip -p$(p_objc_m) + dh_shlibdeps -p$(p_objc_m) + echo $(p_objc_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-objcxx.mk b/rules.d/binary-objcxx.mk new file mode 100644 index 0000000..b96ec33 --- /dev/null +++ b/rules.d/binary-objcxx.mk @@ -0,0 +1,111 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) objcxx-multi + endif + arch_binaries := $(arch_binaries) objcxx-nat objcxx-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) objcxx + indep_binaries := $(indep_binaries) objcxx-build + endif +endif + +p_objcx_n = gobjc++$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +d_objcx_n = debian/$(p_objcx_n) + +p_objcx_h = gobjc++$(pkg_ver)-for-host +d_objcx_h = debian/$(p_objcx_h) + +p_objcx_b = gobjc++$(pkg_ver)-for-build +d_objcx_b = debian/$(p_objcx_b) + +p_objcx = gobjc++$(pkg_ver) +d_objcx = debian/$(p_objcx) + +p_objcx_m = gobjc++$(pkg_ver)-multilib$(cross_bin_arch) +d_objcx_m = debian/$(p_objcx_m) + +dirs_objcx_n = \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_objcx = \ + $(docdir)/$(p_xbase)/Obj-C++ \ + +files_objcx_n = \ + $(gcc_lexec_dir)/cc1objplus + +$(binary_stamp)-objcxx-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objcx_n) + dh_installdirs -p$(p_objcx_n) $(dirs_objcx_n) + $(dh_compat2) dh_movefiles -p$(p_objcx_n) $(files_objcx_n) + + debian/dh_doclink -p$(p_objcx_n) $(p_xbase) + + echo '$(p_objcx_n) binary: hardening-no-pie' \ + > $(d_objcx_n)/usr/share/lintian/overrides/$(p_objcx_n) + + debian/dh_rmemptydirs -p$(p_objcx_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_objcx_n)/$(gcc_lexec_dir)/cc1objplus +endif + dh_strip -p$(p_objcx_n) \ + $(if $(unstripped_exe),-X/cc1objplus) + dh_shlibdeps -p$(p_objcx_n) + echo $(p_objcx_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objcxx-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objcx_h) + debian/dh_doclink -p$(p_objcx_h) $(p_xbase) + echo $(p_objcx_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objcxx-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objcx_b) + debian/dh_doclink -p$(p_objcx_b) $(p_cpp_b) + echo $(p_objcx_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objcxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objcx) + dh_installdirs -p$(p_objcx) $(dirs_objcx) + + debian/dh_doclink -p$(p_objcx) $(p_xbase) + cp -p $(srcdir)/gcc/objcp/ChangeLog \ + $(d_objcx)/$(docdir)/$(p_xbase)/Obj-C++/changelog + + debian/dh_rmemptydirs -p$(p_objcx) + + echo $(p_objcx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objcxx-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objcx_m) + debian/dh_doclink -p$(p_objcx_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_objcx_m) + dh_strip -p$(p_objcx_m) + dh_shlibdeps -p$(p_objcx_m) + echo $(p_objcx_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-rust.mk b/rules.d/binary-rust.mk new file mode 100644 index 0000000..4710aad --- /dev/null +++ b/rules.d/binary-rust.mk @@ -0,0 +1,336 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifeq (0,1) + #ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32))) + # arch_binaries := $(arch_binaries) grs-multi + #endif + endif + arch_binaries := $(arch_binaries) grs-nat grs-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) grs + indep_binaries := $(indep_binaries) grs-build + endif + + #ifeq ($(with_rsdev),yes) + # $(lib_binaries) += libgrs-dev + #endif + #ifeq ($(with_libgrs),yes) + # $(lib_binaries) += libgrs + #endif + + #ifneq ($(DEB_CROSS),yes) + # indep_binaries := $(indep_binaries) grs-doc + #endif + + ifeq (0,1) + ifeq ($(with_lib64grsdev),yes) + $(lib_binaries) += lib64grs-dev + endif + ifeq ($(with_lib32grsdev),yes) + $(lib_binaries) += lib32grs-dev + endif + ifeq ($(with_libn32grsdev),yes) + $(lib_binaries) += libn32grs-dev + endif + ifeq ($(with_libx32grsdev),yes) + $(lib_binaries) += libx32grs-dev + endif + + ifeq ($(with_lib64grs),yes) + $(lib_binaries) += lib64grs + endif + ifeq ($(with_lib32grs),yes) + $(lib_binaries) += lib32grs + endif + ifeq ($(with_libn32grs),yes) + $(lib_binaries) += libn32grs + endif + ifeq ($(with_libx32grs),yes) + $(lib_binaries) += libx32grs + endif + endif +endif + +p_grs_n = gccrs$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_grs_h = gccrs$(pkg_ver)-for-host +p_grs_b = gccrs$(pkg_ver)-for-build +p_grs = gccrs$(pkg_ver) +p_grs_m = gccrs$(pkg_ver)-multilib$(cross_bin_arch) +p_libgrs = libgrs-$(GRS_SONAME) +p_libgrsdev = libgrs$(pkg_ver)-dev +p_grsd = grs$(pkg_ver)-doc + +d_grs_n = debian/$(p_grs_n) +d_grs_h = debian/$(p_grs_h) +d_grs_b = debian/$(p_grs_b) +d_grs = debian/$(p_grs) +d_grs_m = debian/$(p_grs_m) +d_libgrs = debian/$(p_libgrs) +d_libgrsdev = debian/$(p_libgrsdev) +d_grsd = debian/$(p_grsd) + +dirs_grs_n = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_grs = \ + $(PF)/bin \ + $(PF)/share/man/man1 +#ifneq ($(DEB_CROSS),yes) +# dirs_grs += \ +# $(grs_include_dir) +#endif + +files_grs_n = \ + $(PF)/bin/$(cmd_prefix)gccrs$(pkg_ver) \ + $(gcc_lexec_dir)/crab1 + +# files_grs_n += \ +# $(PF)/share/man/man1/$(cmd_prefix)gccrs$(pkg_ver).1 + +dirs_libgrs = \ + $(PF)/lib \ + $(grs_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-grs-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_grs_n) + dh_installdirs -p$(p_grs_n) $(dirs_grs_n) + + $(dh_compat2) dh_movefiles -p$(p_grs_n) $(files_grs_n) + + dh_installdirs -p$(p_grs_n) + debian/dh_doclink -p$(p_grs_n) $(p_xbase) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_grs_n)/$(gcc_lexec_dir)/crab1 +endif + dh_strip -p$(p_grs_n) \ + $(if $(unstripped_exe),-X/crab1) + dh_shlibdeps -p$(p_grs_n) + + ( \ + echo '$(p_grs_n) binary: hardening-no-pie'; \ + echo '$(p_grs_n) binary: no-manual-page'; \ + ) > $(d_grs_n)/usr/share/lintian/overrides/$(p_grs_n) + + echo $(p_grs_n) >> debian/arch_binaries + + find $(d_grs_n) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-grs-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_grs_h) + debian/dh_doclink -p$(p_grs_h) $(p_xbase) + echo $(p_grs_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-grs-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_grs_b) + debian/dh_doclink -p$(p_grs_b) $(p_cpp_b) + echo $(p_grs_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-grs: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_grs) + dh_installdirs -p$(p_grs) $(dirs_grs) + + dh_installdocs -p$(p_grs) + dh_installchangelogs -p$(p_grs) #src/gcc/rs/ChangeLog + + $(dh_compat2) dh_movefiles -p$(p_grs) $(files_grs) + + ln -sf $(cmd_prefix)gccrs$(pkg_ver) \ + $(d_grs)/$(PF)/bin/gccrs$(pkg_ver) +# ln -sf $(cmd_prefix)gccrs$(pkg_ver).1 \ +# $(d_grs)/$(PF)/share/man/man1/gccrs$(pkg_ver).1 + dh_installdirs -p$(p_grs) + debian/dh_doclink -p$(p_grs) $(p_xbase) + + echo $(p_grs) >> debian/arch_binaries + + find $(d_grs) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-grs-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_grs_m) + dh_installdirs -p$(p_grs_m) $(docdir) + + debian/dh_doclink -p$(p_grs_m) $(p_xbase) + + dh_strip -p$(p_grs_m) + dh_shlibdeps -p$(p_grs_m) + echo $(p_grs_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libgrs + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/librspim.so.* \ + $(usr_lib$(2))/librscor.so.* \ + $(usr_lib$(2))/librsiso.so.* \ + $(usr_lib$(2))/librslog.so.* \ + $(usr_lib$(2))/librsmin.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + : ln -sf libgrs.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst grs-$(GRS_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + ( \ + echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ + echo "$(p_l) binary: shared-lib-without-dependency-information"; \ + echo "$(p_l) binary: package-name-doesnt-match-sonames"; \ + echo "$(p_l) binary: library-not-linked-against-libc"; \ + ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) + + dh_lintian -p$(p_l) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# install_grs_lib(lib,soname,flavour,package,subdir) +#define install_grs_lib +# mkdir -p debian/$(4)/$(gcc_lib_dir$(3))/$(5) +# mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/$(5)/. +# rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} +# dh_link -p$(4) \ +# /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so +#endef +define install_grs_lib + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so + rm -f $(d)/$(usr_lib$(3))/$(1).so + rm -f $(d)/$(usr_lib$(3))/$(1).a +endef + +define __do_libgrs_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + : # install_grs_lib calls needed? + + $(if $(2),, + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lexec_dir)/rs + ) + + $(call install_grs_lib,librspim,$(GRS_SONAME),$(2),$(p_l),rs/rspim) + $(call install_grs_lib,librscor,$(GRS_SONAME),$(2),$(p_l),rs/rscor) + $(call install_grs_lib,librsiso,$(GRS_SONAME),$(2),$(p_l),rs/rsiso) + $(call install_grs_lib,librslog,$(GRS_SONAME),$(2),$(p_l),rs/rslog) + $(call install_grs_lib,librsmin,$(GRS_SONAME),$(2),$(p_l),rs/rsmin) + + : # included in grs package + rm -f $(d_l)/$(grs_include_dir)/__entrypoint.di + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgrs = $(call __do_libgrs,lib$(1)grs-$(GRS_SONAME),$(1)) +do_libgrs_dev = $(call __do_libgrs_dev,lib$(1)grs-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-grs-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_grsd) + dh_installdirs -p$(p_grsd) \ + $(docdir)/$(p_grs) \ + $(docdir)/$(p_xbase)/rs \ + $(PF)/share/info + cp -p $(builddir)/gcc/doc/rs.info $(d_grsd)/$(PF)/share/info/grs.info + cp -p html/grs.html $(d_grsd)/$(docdir)/$(p_xbase)/rs/ + ln -sf ../$(p_xbase)/rs/grs.html $(d_grsd)/$(docdir)/$(p_grs)/grs.html + + debian/dh_doclink -p$(p_grsd) $(p_xbase) + dh_installdocs -p$(p_grsd) + rm -f $(d_grsd)/$(docdir)/$(p_xbase)/copyright + + echo $(p_grsd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(binary_stamp)-libgrs: $(install_stamp) + $(call do_libgrs,) + +$(binary_stamp)-lib64grs: $(install_stamp) + $(call do_libgrs,64) + +$(binary_stamp)-lib32grs: $(install_stamp) + $(call do_libgrs,32) + +$(binary_stamp)-libn32grs: $(install_stamp) + $(call do_libgrs,n32) + +$(binary_stamp)-libx32grs: $(install_stamp) + $(call do_libgrs,x32) + + +$(binary_stamp)-libgrs-dev: $(install_stamp) + $(call do_libgrs_dev,) + +$(binary_stamp)-lib64grs-dev: $(install_stamp) + $(call do_libgrs_dev,64) + +$(binary_stamp)-lib32grs-dev: $(install_stamp) + $(call do_libgrs_dev,32) + +$(binary_stamp)-libx32grs-dev: $(install_stamp) + $(call do_libgrs_dev,x32) + +$(binary_stamp)-libn32grs-dev: $(install_stamp) + $(call do_libgrs_dev,n32) diff --git a/rules.d/binary-snapshot.mk b/rules.d/binary-snapshot.mk new file mode 100644 index 0000000..fb2d6b2 --- /dev/null +++ b/rules.d/binary-snapshot.mk @@ -0,0 +1,213 @@ +arch_binaries := $(arch_binaries) snapshot + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + p_snap = gcc-snapshot +else + $(error unknown build for single gcc package) +endif + +ifeq ($(DEB_CROSS),yes) + p_snap := $(p_snap)$(cross_bin_arch) +endif +d_snap = debian/$(p_snap) + +dirs_snap = \ + $(docdir)/$(p_snap) \ + usr/lib + +ifeq ($(with_hppa64),yes) + snapshot_depends = $(binutils_hppa64), +endif +ifeq ($(with_offload_nvptx),yes) + snapshot_depends += nvptx-tools, +endif +ifeq ($(with_offload_gcn),yes) + snapshot_depends += $(AMDGCN_TOOLS_DEP) +endif + +common_substvars += '-Vsnap:depends=$(snapshot_depends)' '-Vsnap:recommends=$(snapshot_recommends)' + +# ---------------------------------------------------------------------- +$(binary_stamp)-snapshot: $(install_snap_stamp) \ + $(if $(filter yes, $(with_offload_nvptx)), $(install_nvptx_stamp)) \ + $(if $(filter yes, $(with_offload_gcn)), $(install_gcn_stamp)) + dh_testdir + dh_testroot + mv $(install_snap_stamp) $(install_snap_stamp)-tmp + + rm -rf $(d_snap) + dh_installdirs -p$(p_snap) $(dirs_snap) + + mv $(d)/$(PF) $(d_snap)/usr/lib/ + + if [ -f $(d)/gcobol.3 ]; then \ + mkdir -p $(d_snap)/$(PF)/share/man/man3; \ + mv $(d)/gcobol.3 $(d_snap)/$(PF)/share/man/man3/.; \ + fi + +ifeq ($(with_jit),yes) + tar -C $(d_snap) -x -v -f installed-jit.tar.xz +endif + + find $(d_snap) -name '*.gch' -type d | xargs -r rm -rf + find $(d_snap) -name '*.la' -o -name '*.lai' | xargs -r rm -f + + : # FIXME: libbacktrace is not installed by default + for d in . 32 n32 64; do \ + if [ -f $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a ]; then \ + install -m644 $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a \ + $(d_snap)/$(gcc_lib_dir)/$$d; \ + fi; \ + done + if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ + install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ + $(d_snap)/$(gcc_lib_dir)/include/; \ + install -m644 $(srcdir)/libbacktrace/backtrace.h \ + $(d_snap)/$(gcc_lib_dir)/include/; \ + fi + + rm -rf $(d_snap)/$(PF)/lib/nof + +ifeq ($(with_ada),yes FIXME: apply our ada patches) + dh_link -p$(p_snap) \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a + dh_link -p$(p_snap) \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a + + set -e; \ + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_SONAME); \ + mv $(d_snap)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d_snap)/$(PF)/$(libdir)/. ; \ + rm -f $(d_snap)/$(gcc_lib_dir)/adalib/$$lib.so.1; \ + dh_link -p$(p_snap) \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/rts-native/adalib/$$lib.so; \ + done +endif + ln -sf gcc $(d_snap)/$(PF)/bin/cc +ifeq ($(with_fortran),yes) + ln -sf gfortran $(d_snap)/$(PF)/bin/f77 +endif + +ifeq ($(with_offload_nvptx),yes) + tar -c -C $(d)-nvptx -f - $(PF) \ + | tar x -C $(d_snap) -f - + + rm -f $(d_snap)/$(PF)/bin/*-lto-dump + rm -f $(d_snap)/$(PF)/share/man/man1/*-accel-nvptx-none-*.1 + + : # re-create the symlinks as relative symlinks + dh_link -p$(p_snap) \ + /usr/bin/nvptx-none-ar /$(gcc_lexec_dir)/accel/nvptx-none/ar \ + /usr/bin/nvptx-none-as /$(gcc_lexec_dir)/accel/nvptx-none/as \ + /usr/bin/nvptx-none-ld /$(gcc_lexec_dir)/accel/nvptx-none/ld \ + /usr/bin/nvptx-none-ranlib /$(gcc_lexec_dir)/accel/nvptx-none/ranlib +endif + +ifeq ($(with_offload_gcn),yes) + tar -c -C $(d)-gcn -f - $(PF) \ + | tar x -C $(d_snap) -f - + + ifeq ($(gcn_tools_llvm_version),tools) + : # re-create the symlinks as relative symlinks + dh_link -p$(p_snap) \ + /usr/$(gcn_target_name)/bin/ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/$(gcn_target_name)/bin/as /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/$(gcn_target_name)/bin/ld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/$(gcn_target_name)/bin/nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/$(gcn_target_name)/bin/ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib + else + : # re-create the symlinks as relative symlinks + dh_link -p$(p_snap) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib + + : # FIXME: are these really needed? + dh_link -p$(p_snap) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(PF)/bin/$(gcn_target_name)-ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(PF)/bin/$(gcn_target_name)-as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(PF)/bin/$(gcn_target_name)-ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(PF)/bin/$(gcn_target_name)-nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(PF)/bin/$(gcn_target_name)-ranlib + rm -f $(d_snap)/$(PF)/bin/*-lto-dump + rm -f $(d_snap)/$(PF)/share/man/man1/*-accel-$(gcn_target_name)-*.1 + endif +endif + +ifeq ($(with_hppa64),yes) + : # provide as and ld links + dh_link -p $(p_snap) \ + /usr/bin/hppa64-linux-gnu-as \ + /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/as \ + /usr/bin/hppa64-linux-gnu-ld \ + /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/ld +endif + +ifeq ($(with_check),yes) + dh_installdocs -p$(p_snap) test-summary + cd $(d_snap) && tar xvf ../../installed-testlogs.tar + mv $(d_snap)/usr/share/doc/gcc-base/* $(d_snap)/usr/share/doc/$(p_snap)/. + rm -rf $(d_snap)/usr/share/doc/gcc-base +else + dh_installdocs -p$(p_snap) +endif + + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ + then \ + cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ + $(d_snap)/$(docdir)/$(p_snap)/libstdc++6_symbols.txt; \ + fi + cp -p debian/README.snapshot \ + $(d_snap)/$(docdir)/$(p_snap)/README.Debian + cp -p debian/README.Bugs \ + $(d_snap)/$(docdir)/$(p_snap)/ + dh_installchangelogs -p$(p_snap) +ifeq ($(DEB_TARGET_ARCH),hppa) +# dh_dwz -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ +# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) + dh_strip -p$(p_snap) -Xdebug -X.o -X.a -X/cgo -Xbin/go -Xbin/gofmt \ + $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) +else +# dh_dwz -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ +# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) + dh_strip -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ + -X/lib{c,g,m,gcc,gomp,gcov,gfortran,caf_single,ssp,ssp_nonshared}.a \ + $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) +endif + + mkdir -p $(d_snap)/usr/share/lintian/overrides + cp -p debian/gcc-snapshot.overrides \ + $(d_snap)/usr/share/lintian/overrides/$(p_snap) + + ( \ + echo 'libgcc_s $(GCC_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libobjc $(OBJC_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libgfortran $(FORTRAN_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libgo $(GO_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libgomp $(GOMP_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libgnat-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libgnarl-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_EVERSION))'; \ + ) > debian/shlibs.local + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) \ + dh_shlibdeps -p$(p_snap) -l$(CURDIR)/$(d_snap)/$(PF)/lib:$(CURDIR)/$(d_snap)/$(PF)/$(if $(filter $(DEB_TARGET_ARCH),amd64 ppc64),lib32,lib64):/usr/$(DEB_TARGET_GNU_TYPE)/lib + -sed -i -e 's/$(p_snap)[^,]*, //g' debian/$(p_snap).substvars + +ifeq ($(with_multiarch_lib),yes) + : # paths needed for relative lookups from startfile_prefixes + for ma in $(xarch_multiarch_names); do \ + mkdir -p $(d_snap)/lib/$$ma; \ + mkdir -p $(d_snap)/usr/lib/$$ma; \ + done +endif + + -find $(d_snap) -type d -empty -delete + + echo $(p_snap) >> debian/arch_binaries.epoch + + trap '' 1 2 3 15; touch $@; mv $(install_snap_stamp)-tmp $(install_snap_stamp) diff --git a/rules.d/binary-softfloat.mk b/rules.d/binary-softfloat.mk new file mode 100644 index 0000000..6badfcc --- /dev/null +++ b/rules.d/binary-softfloat.mk @@ -0,0 +1,31 @@ +arch_binaries := $(arch_binaries) softfloat + +p_softfloat = gcc$(pkg_ver)-soft-float +d_softfloat = debian/$(p_softfloat) + +dirs_softfloat = \ + $(PFL)/$(libdir) \ + $(gcc_lib_dir) + +files_softfloat = \ + $(PFL)/$(libdir)/soft-float \ + $(gcc_lib_dir)/soft-float + +# ---------------------------------------------------------------------- +$(binary_stamp)-softfloat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_softfloat) + dh_installdirs -p$(p_softfloat) $(dirs_softfloat) + $(dh_compat2) dh_movefiles -p$(p_softfloat) $(files_softfloat) + rm -rf $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.so* + mv $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.a \ + $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp_nonshared.a + debian/dh_doclink -p$(p_softfloat) $(p_xbase) + dh_strip -p$(p_softfloat) + dh_shlibdeps -p$(p_softfloat) + echo $(p_softfloat) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-source.mk b/rules.d/binary-source.mk new file mode 100644 index 0000000..9844826 --- /dev/null +++ b/rules.d/binary-source.mk @@ -0,0 +1,54 @@ +indep_binaries := $(indep_binaries) gcc-source + +ifeq ($(BACKPORT),true) + p_source = gcc$(pkg_ver)-$(GCC_VERSION)-source +else + p_source = gcc$(pkg_ver)-source +endif +d_source= debian/$(p_source) + +$(binary_stamp)-gcc-source: $(install_stamp) + dh_testdir + dh_testroot + + dh_installdocs -p$(p_source) + dh_installchangelogs -p$(p_source) + + dh_install -p$(p_source) $(gcc_tarball) usr/src/gcc$(pkg_ver) +ifneq (,$(m2_tarball)) + dh_install -p$(p_source) $(m2_tarball) usr/src/gcc$(pkg_ver) +endif + tar cf - $$(find './debian' -mindepth 1 \( \ + -name .svn -prune -o \ + -path './debian/.debhelper' -prune -o \ + -path './debian/gcc-*' -type d -prune -o \ + -path './debian/cpp-*' -type d -prune -o \ + -path './debian/*fortran*' -type d -prune -o \ + -path './debian/lib*' -type d -prune -o \ + -path './debian/patches/*' -prune -o \ + -path './debian/tmp*' -prune -o \ + -path './debian/files' -prune -o \ + -path './debian/rules.d/*' -prune -o \ + -path './debian/rules.parameters' -prune -o \ + -path './debian/soname-cache' -prune -o \ + -path './debian/*substvars*' -prune -o \ + -path './debian/gcc-snapshot*' -prune -o \ + -path './debian/*[0-9]*.p*' -prune -o \ + -path './debian/*$(pkg_ver)[.-]*' -prune -o \ + -print \) ) \ + | tar -x -C $(d_source)/usr/src/gcc$(pkg_ver) -f - + # FIXME: Remove generated files + find $(d_source)/usr/src/gcc$(pkg_ver) -name '*.debhelper.log' -o -name .svn | xargs rm -rf + rm -f $(d_source)/usr/src/gcc$(pkg_ver)/debian/patches/series + + touch $(d_source)/usr/src/gcc$(pkg_ver)/debian/rules.parameters + + dh_link -p$(p_source) \ + /usr/src/gcc$(pkg_ver)/debian/patches /usr/src/gcc$(pkg_ver)/patches + + mkdir -p $(d_source)/usr/share/lintian/overrides + cp -p debian/$(p_source).overrides \ + $(d_source)/usr/share/lintian/overrides/$(p_source) + echo $(p_source) >> debian/indep_binaries + + touch $@ diff --git a/rules.d/binary-toolchain.mk b/rules.d/binary-toolchain.mk new file mode 100644 index 0000000..a19d68c --- /dev/null +++ b/rules.d/binary-toolchain.mk @@ -0,0 +1,210 @@ +arch_binaries := $(arch_binaries) toolchain + +ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + p_tc = gcc-toolchain-$(BASE_VERSION) +else + $(error unknown build for single gcc package) +endif + +ifeq ($(DEB_CROSS),yes) + p_tc := $(p_tc)$(cross_bin_arch) +endif +d_tc = debian/$(p_tc) + +dirs_tc = \ + $(docdir)/$(p_tc) \ + usr/lib + +ifeq ($(with_hppa64),yes) + snapshot_depends = $(binutils_hppa64), +endif +ifeq ($(with_offload_nvptx),yes) + snapshot_depends += nvptx-tools, +endif +ifeq ($(with_offload_gcn),yes) + ifeq ($(gcn_tools_llvm_version),tools) + snapshot_depends += amdgcn-tools, + else + snapshot_depends += llvm-$(gcn_tools_llvm_version), lld-$(gcn_tools_llvm_version), + endif +endif + +common_substvars += '-Vsnap:depends=$(snapshot_depends)' '-Vsnap:recommends=$(snapshot_recommends)' + +# ---------------------------------------------------------------------- +$(binary_stamp)-toolchain: $(install_tc_stamp) \ + $(if $(filter yes, $(with_offload_nvptx)), $(install_nvptx_stamp)) \ + $(if $(filter yes, $(with_offload_gcn)), $(install_gcn_stamp)) + dh_testdir + dh_testroot + mv $(install_tc_stamp) $(install_tc_stamp)-tmp + + rm -rf $(d_tc) + dh_installdirs -p$(p_tc) $(dirs_tc) + + mv $(d)/$(PF) $(d_tc)/usr/lib/ + + find $(d_tc) -name '*.gch' -type d | xargs -r rm -rf + find $(d_tc) -name '*.la' -o -name '*.lai' | xargs -r rm -f + + : # FIXME: libbacktrace is not installed by default + for d in . 32 n32 64 sf hf; do \ + if [ -f $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a ]; then \ + install -m644 $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a \ + $(d_tc)/$(gcc_lib_dir)/$$d; \ + fi; \ + done + if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ + install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ + $(d_tc)/$(gcc_lib_dir)/include/; \ + install -m644 $(srcdir)/libbacktrace/backtrace.h \ + $(d_tc)/$(gcc_lib_dir)/include/; \ + fi + + rm -rf $(d_tc)/$(PF)/lib/nof + +ifeq ($(with_ada),yes FIXME: apply our ada patches) + dh_link -p$(p_tc) \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a + dh_link -p$(p_tc) \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a + + set -e; \ + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_SONAME); \ + mv $(d_tc)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d_tc)/$(PF)/$(libdir)/. ; \ + rm -f $(d_tc)/$(gcc_lib_dir)/adalib/$$lib.so.1; \ + dh_link -p$(p_tc) \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$lib.so \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/rts-native/adalib/$$lib.so; \ + done +endif + ln -sf gcc $(d_tc)/$(PF)/bin/cc +ifeq ($(with_ada),yes) + ln -sf gcc $(d_tc)/$(PF)/bin/gnatgcc +endif +ifeq ($(with_fortran),yes) + ln -sf gfortran $(d_tc)/$(PF)/bin/f77 +endif + +ifeq ($(with_offload_nvptx),yes) + tar -c -C $(d)-nvptx -f - $(PF) \ + | tar x -C $(d_tc) -f - + + rm -f $(d_tc)/$(PF)/bin/*-lto-dump + rm -f $(d_tc)/$(PF)/share/man/man1/*-accel-nvptx-none-*.1 + + : # re-create the symlinks as relative symlinks + dh_link -p$(p_tc) \ + /usr/bin/nvptx-none-ar /$(gcc_lexec_dir)/accel/nvptx-none/ar \ + /usr/bin/nvptx-none-as /$(gcc_lexec_dir)/accel/nvptx-none/as \ + /usr/bin/nvptx-none-ld /$(gcc_lexec_dir)/accel/nvptx-none/ld \ + /usr/bin/nvptx-none-ranlib /$(gcc_lexec_dir)/accel/nvptx-none/ranlib +endif + +ifeq ($(with_offload_gcn),yes) + tar -c -C $(d)-gcn -f - $(PF) \ + | tar x -C $(d_tc) -f - + + ifeq ($(gcn_tools_llvm_version),tools) + : # re-create the symlinks as relative symlinks + dh_link -p$(p_tc) \ + /usr/$(gcn_target_name)/bin/ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/$(gcn_target_name)/bin/as /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/$(gcn_target_name)/bin/ld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/$(gcn_target_name)/bin/nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/$(gcn_target_name)/bin/ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib + else + : # re-create the symlinks as relative symlinks + dh_link -p$(p_tc) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib + + : # FIXME: are these really needed? + dh_link -p$(p_tc) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(PF)/bin/$(gcn_target_name)-ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(PF)/bin/$(gcn_target_name)-as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(PF)/bin/$(gcn_target_name)-ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(PF)/bin/$(gcn_target_name)-nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(PF)/bin/$(gcn_target_name)-ranlib + rm -f $(d_tc)/$(PF)/bin/*-lto-dump + rm -f $(d_tc)/$(PF)/share/man/man1/*-accel-$(gcn_target_name)-*.1 + endif +endif + +ifeq ($(with_hppa64),yes) + : # provide as and ld links + dh_link -p $(p_tc) \ + /usr/bin/hppa64-linux-gnu-as \ + /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/as \ + /usr/bin/hppa64-linux-gnu-ld \ + /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/ld +endif + +ifeq ($(with_check),yes) + dh_installdocs -p$(p_tc) test-summary + cd $(d_tc) && tar xvf ../../installed-testlogs.tar + mv $(d_tc)/usr/share/doc/gcc-base/* $(d_tc)/usr/share/doc/$(p_tc)/. + rm -rf $(d_tc)/usr/share/doc/gcc-base +else + dh_installdocs -p$(p_tc) +endif + cp $(binutils_srcdir)/debian/copyright $(d_tc)/usr/share/doc/copyright.binutils + + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ + then \ + cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ + $(d_tc)/$(docdir)/$(p_tc)/libstdc++6_symbols.txt; \ + fi + cp -p debian/README.snapshot \ + $(d_tc)/$(docdir)/$(p_tc)/README.Debian + cp -p debian/README.Bugs \ + $(d_tc)/$(docdir)/$(p_tc)/ + dh_installchangelogs -p$(p_tc) +ifeq ($(DEB_TARGET_ARCH),hppa) +# dh_dwz -p$(p_tc) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ +# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) + dh_strip -p$(p_tc) -Xdebug -X.o -X.a -X/cgo -Xbin/go -Xbin/gofmt \ + $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) +else +# dh_dwz -p$(p_tc) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ +# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) + dh_strip -p$(p_tc) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ + -X/lib{c,g,m,gcc,gomp,gcov,gfortran,caf_single,ssp,ssp_nonshared}.a \ + $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) +endif + + mkdir -p $(d_tc)/usr/share/lintian/overrides + cp -p debian/gcc-snapshot.overrides \ + $(d_tc)/usr/share/lintian/overrides/$(p_tc) + + ( \ + echo 'libgcc_s $(GCC_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libobjc $(OBJC_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libgfortran $(FORTRAN_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libgo $(GO_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libgomp $(GOMP_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libgnat-$(GNAT_SONAME) 1 ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libgnarl-$(GNAT_SONAME) 1 ${p_tc} (>= $(DEB_EVERSION))'; \ + ) > debian/shlibs.local + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) \ + dh_shlibdeps -p$(p_tc) -l$(CURDIR)/$(d_tc)/$(PF)/lib:$(CURDIR)/$(d_tc)/$(PF)/$(if $(filter $(DEB_TARGET_ARCH),amd64 ppc64),lib32,lib64):/usr/$(DEB_TARGET_GNU_TYPE)/lib + -sed -i -e 's/$(p_tc)[^,]*, //g' debian/$(p_tc).substvars + +ifeq ($(with_multiarch_lib),yes) + : # paths needed for relative lookups from startfile_prefixes + for ma in $(xarch_multiarch_names); do \ + mkdir -p $(d_tc)/lib/$$ma; \ + mkdir -p $(d_tc)/usr/lib/$$ma; \ + done +endif + echo $(p_tc) >> debian/arch_binaries.epoch + + trap '' 1 2 3 15; touch $@; mv $(install_tc_stamp)-tmp $(install_tc_stamp) diff --git a/rules.defs b/rules.defs new file mode 100644 index 0000000..9b8a735 --- /dev/null +++ b/rules.defs @@ -0,0 +1,2368 @@ +# -*- makefile -*- +# definitions used in more than one Makefile / rules file + +# common vars +COMMA = , +SPACE = $(EMPTY) $(EMPTY) +SHELL = /bin/bash -e # brace expansion used in rules file +srcdir = $(CURDIR)/src +builddir = $(CURDIR)/build +builddir_jit = $(CURDIR)/build-jit +builddir_nvptx = $(CURDIR)/build-nvptx +builddir_gcn = $(CURDIR)/build-gcn +builddir_hppa64 = $(CURDIR)/build-hppa64 +stampdir = stamps + +distribution := $(shell lsb_release -is) +distrelease := $(shell lsb_release -cs) +derivative := $(shell if dpkg-vendor --derives-from Ubuntu; then echo Ubuntu; \ + elif dpkg-vendor --derives-from Debian; then echo Debian; \ + else echo Unknown; fi) + +# On non official archives, "lsb_release -cs" default to "n/a". Assume +# sid in that case +ifeq ($(distrelease),n/a) +distrelease := sid +endif + +on_buildd := $(shell [ -f /CurrentlyBuilding -o "$$LOGNAME" = buildd ] && echo yes) + +# creates {srcdir,builddir}_hppa64 +$(foreach x,srcdir builddir,$(foreach target,hppa64,$(eval \ + $(x)_$(target) := $($(x))-$(target)))) + +# for architecture dependent variables and changelog vars +vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1))) +# for rules.sonames +vafilt_defined = 1 + +dpkg_target_vars := $(shell (dpkg-architecture | grep -q DEB_TARGET) && echo yes) +ifeq ($(dpkg_target_vars),yes) + DEB_TARGET_ARCH= + DEB_TARGET_ARCH_BITS= + DEB_TARGET_ARCH_CPU= + DEB_TARGET_ARCH_ENDIAN= + DEB_TARGET_ARCH_OS= + DEB_TARGET_GNU_CPU= + DEB_TARGET_GNU_SYSTEM= + DEB_TARGET_GNU_TYPE= + DEB_TARGET_MULTIARCH= +endif + +DPKG_VARS := $(shell dpkg-architecture) +ifeq ($(dpkg_target_vars),yes) + DPKG_VARS := $(filter-out DEB_TARGET_%, $(DPKG_VARS)) +endif +DEB_BUILD_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_ARCH) +DEB_BUILD_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE) +DEB_BUILD_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_MULTIARCH) +DEB_HOST_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH) +DEB_HOST_ARCH_ABI ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_ABI) +DEB_HOST_ARCH_BITS ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_BITS) +DEB_HOST_ARCH_ENDIAN ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_ENDIAN) +DEB_HOST_ARCH_LIBC ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_LIBC) +DEB_HOST_GNU_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU) +DEB_HOST_GNU_SYSTEM ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_SYSTEM) +DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE) +DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH) + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease), precise trusty)) + ifeq ($(DEB_BUILD_GNU_TYPE),i486-linux-gnu) + DEB_BUILD_GNU_TYPE = i686-linux-gnu + endif + ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu) + DEB_HOST_GNU_TYPE = i686-linux-gnu + endif + endif +else + ifneq (,$(filter $(distrelease),jessie)) + ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu) + DEB_HOST_GNU_TYPE = i586-linux-gnu + endif + else + # stretch and newer ... + DEB_BUILD_GNU_TYPE := $(subst i586,i686,$(DEB_BUILD_GNU_TYPE)) + DEB_HOST_GNU_TYPE := $(subst i586,i686,$(DEB_HOST_GNU_TYPE)) + endif +endif + +CHANGELOG_VARS := $(shell dpkg-parsechangelog | \ + sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p') + +# the name of the source package +PKGSOURCE := $(call vafilt,$(CHANGELOG_VARS),Source) +# those are required here too +SOURCE_VERSION := $(call vafilt,$(CHANGELOG_VARS),Version) +DEB_VERSION := $(strip $(shell echo $(SOURCE_VERSION) | \ + sed -e 's/.*://' -e 's/ds[0-9][0-9]*//')) +# epoch used for gcc versions up to 3.3.x, now used for some remaining +# libraries: libgcc1, libobjc1 +EPOCH := 1 +DEB_EVERSION := $(EPOCH):$(DEB_VERSION) +BASE_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/\([0-9][0-9]*\).*-.*/\1/') + +NJOBS := +USE_CPUS := 1 +ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) + USE_CPUS := $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) + NJOBS := -j $(USE_CPUS) + NJOBS_TESTS := -j $(USE_CPUS) + # this is for debugging hanging tests on the buildds +# ifeq ($(derivative),Ubuntu) +# ifneq (,$(filter $(DEB_HOST_ARCH), arm64)) +# NJOBS_TESTS := -j 1 +# endif +# else +# ifneq (,$(filter $(DEB_HOST_ARCH), amd64 armhf armel arm64 i386 riscv64 s390x)) +# NJOBS_TESTS := -j 1 +# endif +# endif +endif + +CPUS_LTOLINK := $(if $(filter 1, $(USE_CPUS)),1,$(shell expr $(USE_CPUS) / 2)) +ifeq ($(derivative)-$(DEB_BUILD_ARCH),Ubuntu-ppc64el) + CPUS_LTOLINK := 1 +else ifeq ($(derivative)-$(DEB_BUILD_ARCH),Debian-sparc64) + CPUS_LTOLINK := $(shell if test $(CPUS_LTOLINK) -gt 4; then echo 4; else echo $(CPUS_LTOLINK); fi) +endif + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + single_package = yes + trunk_build = yes +else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + single_package = yes + with_binutils = yes +else + # --program-suffix=-$(BASE_VERSION) + versioned_packages := yes +endif + +# push glibc stack traces into stderr +export LIBC_FATAL_STDERR_=1 + +# --------------------------------------------------------------------------- +# set target +# - GNU triplet via DEB_TARGET_GNU_TYPE +# - Debian arch in debian/target +# - Debian arch via DEB_GCC_TARGET or GCC_TARGET +# +# alias +ifdef GCC_TARGET + DEB_GCC_TARGET := $(GCC_TARGET) +endif +ifdef DEB_TARGET_GNU_TYPE + TARGET_VARS := $(shell dpkg-architecture -f -t$(DEB_TARGET_GNU_TYPE) 2>/dev/null) +else + # allow debian/target to be used instead of DEB_GCC_TARGET - this was requested + # by toolchain-source maintainer + DEBIAN_TARGET_FILE := $(strip $(if $(wildcard debian/target),$(shell cat debian/target 2>/dev/null))) + ifndef DEB_TARGET_ARCH + ifneq (,$(DEBIAN_TARGET_FILE)) + DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE) + else + ifdef DEB_GCC_TARGET + DEB_TARGET_ARCH := $(DEB_GCC_TARGET) + else + DEB_TARGET_ARCH := $(DEB_HOST_ARCH) + endif + endif + endif + TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null) +endif +ifeq ($(dpkg_target_vars),yes) + TARGET_VARS := $(filter-out DEB_TARGET_%, $(TARGET_VARS)) +endif + +DEB_TARGET_ARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH) +DEB_TARGET_ARCH_OS := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_OS) +DEB_TARGET_ARCH_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_CPU) +DEB_TARGET_GNU_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_CPU) +DEB_TARGET_GNU_TYPE := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_TYPE) +DEB_TARGET_GNU_SYSTEM := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_SYSTEM) +DEB_TARGET_MULTIARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_MULTIARCH) +DEB_TARGET_ARCH_ABI := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_ABI) +DEB_TARGET_ARCH_BITS := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_BITS) +DEB_TARGET_ARCH_ENDIAN := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_ENDIAN) +DEB_TARGET_ARCH_LIBC := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_LIBC) +export DEB_TARGET_ARCH DEB_TARGET_ARCH_ABI DEB_TARGET_ARCH_BITS \ + DEB_TARGET_ARCH_CPU DEB_TARGET_ARCH_OS DEB_TARGET_ARCH_ENDIAN \ + DEB_TARGET_ARCH_LIBC DEB_TARGET_GNU_CPU DEB_TARGET_GNU_TYPE \ + DEB_TARGET_GNU_SYSTEM DEB_TARGET_MULTIARCH + +ifneq (,$(filter $(distrelease),stretch)) + DEB_TARGET_GNU_TYPE := $(subst i586,i686,$(DEB_TARGET_GNU_TYPE)) +endif + +ifeq ($(DEB_TARGET_ARCH),) + $(error Invalid architecure.) +endif + +# Force this, people get confused about the default. See #760770. +override with_deps_on_target_arch_pkgs := + +# including unversiond symlinks for binaries +#with_unversioned = yes + +# package metadata information +ifeq (,$(ELF_PACKAGE_METADATA)) + ELF_PACKAGE_METADATA := $(subst $(SPACE),,{ \ + "type":"deb", \ + "os":"$(shell awk -F= '/^ID=/ {print $$2}' /etc/os-release)", \ + "name":"$(PKGSOURCE)", \ + "version":"$(DEB_VERSION)", \ + "architecture":"$(DEB_HOST_ARCH)" \ + $(if $(DEB_HOST_ARCH_VARIANT),$(COMMA)"architectureVariant":"$(DEB_HOST_ARCH_VARIANT)") \ + $(if $(DEB_BUILD_DEBUG_INFO_URL),$(COMMA)"debugInfoUrl":"$(DEB_BUILD_DEBUG_INFO_URL)") \ + }) + export ELF_PACKAGE_METADATA +endif + +# --------------------------------------------------------------------------- +# cross-compiler config +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + # cross building a cross compiler, untested. + DEB_CROSS = yes + build_type = cross-build-cross + else + # cross building the native compiler + build_type = cross-build-native + endif +else + ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + # cross compiler, sets WITH_SYSROOT on it's own + DEB_CROSS = yes + build_type = build-cross + else ifeq ($(FORCE_CROSS_LAYOUT),yes) + # a native build with a cross layout + DEB_CROSS = yes + build_type = build-cross + else + # native build + build_type = build-native + endif +endif + +# --------------------------------------------------------------------------- +# cross compiler support +ifeq ($(DEB_CROSS),yes) + # TARGET: Alias to DEB_TARGET_ARCH (Debian arch name) + # TP: Target Prefix. Used primarily as a prefix for cross tool + # names (e.g. powerpc-linux-gcc). + # TS: Target Suffix. Used primarily at the end of cross compiler + # package names (e.g. gcc-powerpc). + # LS: Library Suffix. Used primarily at the end of cross compiler + # library package names (e.g. libgcc-powerpc-cross). + # AQ: Arch Qualifier. Used for cross-arch dependencies + DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE) + TARGET := $(DEB_TARGET_ARCH) + TP := $(subst _,-,$(DEB_TARGET_GNU_TYPE))- + TS := -$(subst _,-,$(DEB_TARGET_ALIAS)) + LS := -$(subst _,-,$(DEB_TARGET_ARCH))-cross + AQ := + + cross_bin_arch := -$(subst _,-,$(DEB_TARGET_ALIAS)) + cross_lib_arch := -$(subst _,-,$(DEB_TARGET_ARCH))-cross + cmd_prefix := $(DEB_TARGET_GNU_TYPE)- + + TARGET_ALIAS := $(DEB_TARGET_ALIAS) + + lib_binaries := indep_binaries + cross_shlibdeps = DEB_HOST_ARCH=$(TARGET) ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" + cross_gencontrol = DEB_HOST_ARCH=$(TARGET) + cross_makeshlibs = DEB_HOST_ARCH=$(TARGET) + cross_clean = DEB_HOST_ARCH=$(TARGET) +else + TARGET_ALIAS := $(DEB_TARGET_GNU_TYPE) + + ifeq ($(TARGET_ALIAS),i386-gnu) + TARGET_ALIAS := i586-gnu + endif + + ifeq ($(single_package),yes) + cmd_prefix := + unprefixed_names := + else + cmd_prefix := $(DEB_TARGET_GNU_TYPE)- + unprefixed_names := yes + endif + + #ifeq ($(TARGET_ALIAS),i486-linux-gnu) + # TARGET_ALIAS := i686-linux-gnu + #endif + + TARGET_ALIAS := $(subst i386,i486,$(TARGET_ALIAS)) + + # configure as linux-gnu, not linux + #ifeq ($(findstring linux,$(TARGET_ALIAS))/$(findstring linux-gnu,$(TARGET_ALIAS)),linux/) + # TARGET_ALIAS := $(TARGET_ALIAS)-gnu + #endif + + # configure as linux, not linux-gnu + #TARGET_ALIAS := $(subst linux-gnu,linux,$(TARGET_ALIAS)) + + lib_binaries := arch_binaries + cross_shlibdeps := + cross_gencontrol := + cross_makeshlibs := + # FIXME: Ignore missing symbols for a first build ... + cross_makeshlibs := - + cross_clean := +endif + +printarch: + @echo DEB_TARGET_ARCH: $(DEB_TARGET_ARCH) + @echo DEB_TARGET_ARCH_OS: $(DEB_TARGET_ARCH_OS) + @echo DEB_TARGET_ARCH_CPU: $(DEB_TARGET_ARCH_CPU) + @echo DEB_TARGET_GNU_SYSTEM: $(DEB_TARGET_GNU_SYSTEM) + @echo DEB_TARGET_MULTIARCH: $(DEB_TARGET_MULTIARCH) + @echo MULTIARCH_CONFARG: $(MULTIARCH_CONFARG) + @echo TARGET_ALIAS: $(TARGET_ALIAS) + @echo TP: $(TP) + @echo TS: $(TS) + +# reaching the 50GB limit ... +ifeq ($(derivative)-$(build_type),Ubuntu-build-native) + ifneq (,$(filter $(DEB_HOST_ARCH),amd64)) + save_disk_space = yes + endif +endif + +# ------------------------------------------------------------------- +# bootstrap options +ifdef WITH_BOOTSTRAP + # "yes" is the default and causes a 3-stage bootstrap. + # "off" runs a complete build with --disable-bootstrap + # "no" means to just build the first stage, and not create the stage1 + # directory. + # "lean" means a lean 3-stage bootstrap, i.e. delete each stage when no + # longer needed. + with_bootstrap = $(WITH_BOOTSTRAP) +endif + +# gcc-snapshot ... +ifeq ($(trunk_build),yes) + ifeq ($(build_type),build-native) + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 armhf arm64 i386 powerpc ppc64 ppc64el riscv64 s390x sparc64)) + with_bootstrap := profiled + endif + endif + + # FIXME, disable profiled build for some archs + #ifneq (,$(filter $(DEB_HOST_ARCH), i386 armel armhf powerpc riscv64 amd64)) + # with_bootstrap := + #endif + + # Enable LTO only for 64bit builds + ifeq ($(DEB_BUILD_ARCH_BITS)-$(DEB_HOST_ARCH_BITS),64-64) + with_lto_build := yes + endif + + # FIXME, disable LTO build for some archs + ifneq (,$(filter $(DEB_HOST_ARCH), alpha ia64 mips64el hurd-amd64)) + with_lto_build := + endif + + # disable for testing purposes + with_bootstrap := + with_lto_build := +endif + +ifneq ($(trunk_build),yes) + ifeq ($(build_type),build-native) + ifeq (,$(DEB_STAGE)) + ifeq (,$(filter $(distrelease), jessie stretch precise trusty xenial bionic)) + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 armhf arm64 powerpc ppc64 ppc64el s390x sparc64)) + with_bootstrap := profiled + endif + # PR target/119937 + #ifeq ($(distribution)-$(DEB_HOST_ARCH),Debian-armhf) + # with_bootstrap := + #endif + endif + endif + endif + + # Enable LTO only for 64bit builds + ifeq ($(DEB_BUILD_ARCH_BITS)-$(DEB_HOST_ARCH_BITS),64-64) + with_lto_build := yes + endif + + # FIXME: hppa has issues with parsing the jobs output. + # FIXME: m68k and sh4 running on simulators, don't care ... + # FIXME: buildds not powerful enough: mips* + # FIXME: just let it build, takes too long: hurd-amd64 hurd-i386 + # FIXME: not yet tried to build: alpha + # FIXME: ia64, see https://gcc.gnu.org/PR98504 + # FIXME: mips64el requested by syq + ifneq (,$(filter $(DEB_HOST_ARCH), alpha hppa ia64 m68k mips mipsel mips64el sh4 sparc64 hurd-amd64 hurd-i386)) + with_lto_build := + endif + # Slow builders in Debian + ifeq ($(distribution)-$(DEB_HOST_ARCH),Debian-riscv64) + with_lto_build := + endif + + # FIXME: newer binutils needed? + ifneq (,$(filter $(distrelease),stretch precise trusty xenial bionic focal)) + with_bootstrap := + with_lto_build := + endif + + # disable for testing purposes + #with_bootstrap := + #with_lto_build := +endif + +ifneq ($(findstring nostrap, $(DEB_BUILD_OPTIONS)),) + with_bootstrap := off +endif + +ifneq ($(findstring nolto, $(DEB_BUILD_OPTIONS)),) + with_lto_build := +endif + +ifneq ($(findstring nopgo, $(DEB_BUILD_OPTIONS)),) + ifeq ($(with_bootstrap),profiled) + with_bootstrap := + endif +endif + +ifneq ($(findstring gccdebug, $(DEB_BUILD_OPTIONS)),) + with_bootstrap := off + with_lto_build := + DEB_BUILD_OPTIONS := $(DEB_BUILD_OPTIONS) nostrip + export DEB_BUILD_OPTIONS +endif + +ifeq ($(build_type),build-native) + usage_stats = yes + ifeq ($(derivative),Ubuntu) + no_usage_archs = i386 + else ifeq ($(derivative),Debian) + no_usage_archs = alpha hppa ia64 m68k mipsel mips64el sh4 sparc64 x32 \ + hurd-amd64 hurd-i386 + endif + ifneq (,$(filter $(DEB_HOST_ARCH),$(no_usage_archs))) + usage_stats = + endif +endif +usage_stats = disabled for release builds + +# ------------------------------------------------------------------- +# stage options +ifdef DEB_STAGE + with_cdev := yes + separate_lang := yes + # "stage1" is minimal compiler with static libgcc + # "stage2" is minimal compiler with shared libgcc + # "rtlibs" is a subset of target libraries, without compilers + ifeq ($(DEB_STAGE),stage1) + with_shared_libgcc := no + endif + ifeq ($(DEB_STAGE),stage2) + with_libgcc := yes + with_shared_libgcc := yes + endif + ifeq ($(DEB_STAGE),rtlibs) + with_rtlibs := libgcc libgomp libstdc++ libgfortran libquadmath + ifeq ($(DEB_CROSS),yes) + LS := + TS := + cross_lib_arch := + endif + endif +endif + +ifeq ($(BACKPORT),true) + with_dev := no + with_source := yes + with_base_only := yes +endif + +# ------------------------------------------------------------------- +# sysroot options +ifdef WITH_SYSROOT + with_sysroot = $(WITH_SYSROOT) +endif +ifdef WITH_BUILD_SYSROOT + with_build_sysroot = $(WITH_BUILD_SYSROOT) +endif + +# ------------------------------------------------------------------- +# for components configuration + +# lang= overwrites all of nolang=, overwrites all of WITHOUT_LANG + +DEB_LANG_OPT := $(filter lang=%,$(DEB_BUILD_OPTIONS)) +DEB_LANG := $(strip $(subst $(COMMA), ,$(patsubst lang=%,%,$(DEB_LANG_OPT)))) +DEB_NOLANG_OPT := $(filter nolang=%,$(DEB_BUILD_OPTIONS)) +DEB_NOLANG := $(strip $(subst $(COMMA), ,$(patsubst nolang=%,%,$(DEB_NOLANG_OPT)))) +lfilt = $(strip $(if $(DEB_LANG), \ + $(if $(filter $(1) $(2),$(DEB_LANG)),yes),$(3))) +nlfilt = $(strip $(if $(DEB_NOLANG), \ + $(if $(filter $(1) $(2),$(DEB_NOLANG)),disabled by $(DEB_NOLANG_OPT),$(3)))) +wlfilt = $(strip $(if $(filter $(1) $(2), $(subst $(COMMA), ,$(WITHOUT_LANG))), \ + disabled by WITHOUT_LANG=$(WITHOUT_LANG),$(3))) +envfilt = $(strip $(or $(call lfilt,$(1),$(2)),$(call nlfilt,$(1),$(3)),$(call wlfilt,$(1),$(3)),$(4))) + +# ------------------------------------------------------------------- +# architecture specific config + +ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 i386 ppc64 ppc64el s390x x32)) + with_async_unwind = yes +endif + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),precise trusty xenial bionic)) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 i386 ppc64 ppc64el s390x x32)) + with_stack_clash := yes + endif + endif + ifeq (,$(filter $(distrelease),precise trusty xenial bionic)) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 x32)) + with_cf_protection := yes + endif + endif +endif + +ifeq ($(DEB_TARGET_ARCH),armhf) + ifeq ($(distribution),Raspbian) + with_arm_thumb := no + else + with_arm_thumb := yes + endif +else + ifeq ($(derivative)-$(DEB_TARGET_ARCH),Ubuntu-armel) + ifneq (,$(filter $(distrelease), precise)) + with_arm_thumb := yes + endif + endif +endif + +timet64_archs = armel armhf hppa m68k mips mipsel powerpc sh4 +no_timet64_distreleases = jessy stretch buster bullseye bookworm \ + precise trusty xenial bionic focal jammy kinetic lunar mantic + +ifneq (,$(filter $(DEB_TARGET_ARCH), $(timet64_archs))) + ifeq (,$(filter $(distrelease),$(no_timet64_distreleases))) + with_timet64 = yes + endif +endif + +# build using fsf or the ibm branch +ifeq ($(distribution),Ubuntu) + ifneq (,$(findstring $(DEB_TARGET_ARCH),ppc64el)) + #with_ibm_branch = yes + endif +endif + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + with_ibm_branch = +endif + +# check if we're building for armel or armhf +ifneq (,$(filter %eabihf,$(DEB_TARGET_GNU_SYSTEM))) + float_abi := hard +else ifneq (,$(filter $(distribution)-$(DEB_TARGET_ARCH), Ubuntu-armel)) + ifneq (,$(filter $(distrelease), precise)) + float_abi := softfp + else + float_abi := soft + endif +else ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel)) + float_abi := soft +endif + +sframe_archs = amd64 arm64 +no_sframe_distreleases = jessy stretch buster bullseye bookworm trixie \ + forky \ + precise trusty xenial bionic focal jammy kinetic lunar mantic \ + noble oracular plucky questing resolute +ifneq (,$(filter $(DEB_TARGET_ARCH), $(sframe_archs))) + ifeq (,$(filter $(distrelease),$(no_sframe_distreleases))) + with_sframe = yes + endif +endif + +# turn off sframe everywhere, don't enabled before SFrame V3 +with_sframe = + +ppc64el_ibm128_distreleases = jessie stretch buster bullseye bookworm trixie \ + precise xenial bionic focal jammy noble oracular plucky + +# ------------------------------------------------------------------- +# basic config + +# allows to write backtraces for ICEs +#unstripped_exe = yes +#ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 armhf arm64 i386 ppc64el riscv64 s390x)) +# unstripped_exe = yes +#endif + +# common things --------------- +# build common packages, where package names don't differ in different +# gcc versions (fixincludes, ...) +#with_common_pkgs := yes +# ... and some libraries, which do not change (libgcc1, libssp0). +#with_common_libs := yes +# XXX: should with_common_libs be "yes" only if this is the default compiler +# version on the targeted arch? + +# build -dbg packages (with_dbg is empty when -dbg package are not built) +ifneq (,$(filter $(distrelease), jessie stretch buster precise trusty xenial bionic)) + with_dbg = yes +else + ifeq ($(derivative),Ubuntu) + v_dbg = 9.2.1-21ubuntu1 + else ifeq ($(derivative),Debian) + v_dbg = 9.2.1-21 + else + $(error unknown version for -dbgsym package migration) + endif +endif + +# is this a multiarch-enabled build? +#ifneq (,$(filter $(distrelease), FIXME when removing multilib)) + with_multiarch_lib := yes +#endif + +ifeq ($(with_multiarch_lib),yes) + ifneq ($(single_package),yes) + ifneq ($(DEB_CROSS),yes) + with_multiarch_cxxheaders := yes + endif + endif +endif + +multiarch_stage1 := yes + +MIPS_R6_ENABLED = no +ifeq (,$(filter $(distrelease), jessie precise trusty xenial)) + MIPS_R6_ENABLED = yes +endif + +# mapping for the non-default biarch multilib / multiarch names +multiarch_xarch_map = \ + amd64=i386-linux-gnu,x86_64-linux-gnux32 \ + armel=arm-linux-gnueabi \ + armhf=arm-linux-gnueabihf \ + i386=x86_64-linux-gnu,x86_64-linux-gnux32 \ + powerpc=powerpc64-linux-gnu \ + ppc64=powerpc-linux-gnu \ + sparc=sparc64-linux-gnu \ + sparc64=sparc-linux-gnu \ + s390=s390x-linux-gnu \ + s390x=s390-linux-gnu \ + mips=mips64-linux-gnuabin32,mips64-linux-gnuabi64 \ + mipsel=mips64el-linux-gnuabin32,mips64el-linux-gnuabi64 \ + mipsn32=mips-linux-gnu,mips64-linux-gnuabi64 \ + mipsn32el=mipsel-linux-gnu,mips64el-linux-gnuabi64 \ + mips64=mips-linux-gnu,mips64-linux-gnuabin32 \ + mips64el=mipsel-linux-gnu,mips64el-linux-gnuabin32 \ + mipsr6=mipsisa64r6-linux-gnuabin32,mipsisa64r6-linux-gnuabi64 \ + mipsr6el=mipsisa64r6el-linux-gnuabin32,mipsisa64r6el-linux-gnuabi64 \ + mipsn32r6=mipsisa32r6-linux-gnu,mipsisa64r6-linux-gnuabi64 \ + mipsn32r6el=mipsisa32r6el-linux-gnu,mipsisa64r6el-linux-gnuabi64 \ + mips64r6=mipsisa32r6-linux-gnu,mipsisa64r6-linux-gnuabin32 \ + mips64r6el=mipsisa32r6el-linux-gnu,mipsisa64r6el-linux-gnuabin32 \ + x32=x86_64-linux-gnu,i386-linux-gnu +xarch_multiarch_names = $(subst $(COMMA),$(SPACE),$(patsubst $(DEB_TARGET_ARCH)=%,%, \ + $(filter $(DEB_TARGET_ARCH)=%,$(multiarch_xarch_map)))) + +multilib_multiarch_map = \ + $(DEB_TARGET_ARCH)/=$(DEB_TARGET_MULTIARCH) \ + amd64/32=i386-linux-gnu \ + amd64/x32=x86_64-linux-gnux32 \ + i386/64=x86_64-linux-gnu \ + i386/x32=x86_64-linux-gnux32 \ + powerpc/64=powerpc64-linux-gnu \ + ppc64/32=powerpc-linux-gnu \ + sparc/64=sparc64-linux-gnu \ + sparc64/32=sparc-linux-gnu \ + s390/64=s390x-linux-gnu \ + s390x/32=s390-linux-gnu \ + mips/n32=mips64-linux-gnuabin32 \ + mips/64=mips64-linux-gnuabi64 \ + mipsel/n32=mips64el-linux-gnuabin32 \ + mipsel/64=mips64el-linux-gnuabi64 \ + mipsn32/32=mips-linux-gnu \ + mipsn32/64=mips64-linux-gnuabi64 \ + mipsn32el/32=mipsel-linux-gnu \ + mipsn32el/64=mips64el-linux-gnuabi64 \ + mips64/32=mips-linux-gnu \ + mips64/n32=mips64-linux-gnuabin32 \ + mips64el/32=mipsel-linux-gnu \ + mips64el/n32=mips64el-linux-gnuabin32 \ + mipsr6/n32=mipsisa64r6-linux-gnuabin32 \ + mipsr6/64=mipsisa64r6-linux-gnuabi64 \ + mipsr6el/n32=mipsisa64r6el-linux-gnuabin32 \ + mipsr6el/64=mipsisa64r6el-linux-gnuabi64 \ + mipsn32r6/32=mipsisa32r6-linux-gnu \ + mipsn32r6/64=mipsisa64r6-linux-gnuabi64 \ + mipsn32r6el/32=mipsisa32r6el-linux-gnu \ + mipsn32r6el/64=mipsisa64r6el-linux-gnuabi64 \ + mips64r6/32=mipsisa32r6-linux-gnu \ + mips64r6/n32=mipsisa64r6-linux-gnuabin32 \ + mips64r6el/32=mipsisa32r6el-linux-gnu \ + mips64r6el/n32=mipsisa64r6el-linux-gnuabin32 \ + x32/32=i386-linux-gnu \ + x32/64=x86_64-linux-gnu +# $(call mlib_to_march,|32|64|n32|x32) +mlib_to_march = $(patsubst $(DEB_TARGET_ARCH)/$(1)=%,%, \ + $(filter $(DEB_TARGET_ARCH)/$(1)=%,$(multilib_multiarch_map))) + +multilib_arch_map = \ + $(DEB_TARGET_ARCH)/=$(DEB_TARGET_ARCH) \ + amd64/32=i386 \ + amd64/x32=x32 \ + i386/64=amd64 \ + i386/x32=x32 \ + powerpc/64=ppc64 \ + ppc64/32=powerpc \ + sparc/64=sparc64 \ + sparc64/32=sparc \ + s390/64=s390x \ + s390x/32=s390 \ + mips/n32=mipsn32 \ + mips/64=mips64 \ + mipsel/n32=mipsn32el \ + mipsel/64=mips64el \ + mipsn32/32=mips \ + mipsn32/64=mips64 \ + mipsn32el/32=mipsel \ + mipsn32el/64=mips64el \ + mips64/32=mips \ + mips64/n32=mipsn32 \ + mips64el/32=mipsel \ + mips64el/n32=mipsn32el \ + mipsr6/n32=mipsn32r6 \ + mipsr6/64=mips64r6 \ + mipsr6el/n32=mipsn32r6el \ + mipsr6el/64=mips64r6el \ + mipsn32r6/32=mipsr6 \ + mipsn32r6/64=mips64r6 \ + mipsn32r6el/32=mipsr6el \ + mipsn32r6el/64=mips64r6el \ + mips64r6/32=mipsr6 \ + mips64r6/n32=mipsn32r6 \ + mips64r6el/32=mipsr6el \ + mips64r6el/n32=mipsn32r6el \ + x32/32=i386 \ + x32/64=amd64 +# $(call mlib_to_arch,|32|64|n32|x32) +mlib_to_arch = $(patsubst $(DEB_TARGET_ARCH)/$(1)=%,%, \ + $(filter $(DEB_TARGET_ARCH)/$(1)=%,$(multilib_arch_map))) + +# build -base packages +with_gccbase := yes +ifeq ($(build_type),build-cross) + ifneq ($(DEB_STAGE),rtlibs) + with_gcclbase := yes + endif +endif + +# build dev packages. +ifneq ($(DEB_STAGE),rtlibs) + with_dev := yes +endif + +with_cpp := yes + +# set lang when built from a different source package. +separate_lang := no + +#no_dummy_cpus := ia64 i386 hppa s390 sparc +#ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(no_dummy_cpus))) +# with_base_only := no +# with_common_libs := yes +# with_common_pkgs := yes +#else +# with_base_only := yes +# with_common_libs := no +# with_common_pkgs := no +# with_dev := no +#endif + +ifeq ($(versioned_packages),yes) + pkg_ver := -$(BASE_VERSION) + PV := $(pkg_ver) +endif + +# ------------------------------------------------------------------- +# configure languages + +# C --------------------------- +enabled_languages := c + +# libdiagnostics is also built in the jit build +with_jit = yes + +# FIXME: compiler bug +# m68k: PR 95381 +jit_no_cpus := ia64 + +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(jit_no_cpus))) + with_jit := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(with_rtlibs)) + with_jit := disabled for rtlibs stage +endif +ifneq ($(findstring nojit, $(DEB_BUILD_OPTIONS)),) + with_jit := disabled by DEB_BUILD_OPTIONS +endif +with_jit := $(call envfilt, jit, , , $(with_jit)) + +ifeq (,$(findstring gcc-,$(PKGSOURCE))) + with_jit := +endif + +# this fails when installing the jit build +# libtool: install: /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/./binutils/ranlib /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/debian/tmp-jit/usr/lib/gcc-toolchain-13/lib/../lib/libgomp.a +# /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/binutils/.libs/ranlib: error while loading shared libraries: /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/bfd/.libs/libbfd-2.41-tc13.so: file too short +# /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/binutils/.libs/ranlib: error while loading shared libraries: /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/bfd/.libs/libbfd-2.41-tc13.so: file too short + +ifneq (,$(findstring gcc-toolchain,$(PKGSOURCE))) + with_jit := disabled for $(PKGSOURCE) builds +endif + +ifneq (,$(findstring build-cross, $(build_type))) + with_jit := disabled for cross builds +endif + +ifeq ($(with_jit),yes) + #ifeq ($(with_common_libs),yes) + with_libgccjit := yes + #endif + ifeq ($(with_common_libs),yes) + with_libdiag := yes + endif + ifneq (,$(filter $(distrelease), no-release-yet-with-15-as-default)) + with_versioned_libgccjit := no + else + with_versioned_libgccjit := yes + endif +endif + +nvptx_archs := amd64 arm64 ppc64el +# arm64, see PR target/96265 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(nvptx_archs))) + offload_targets += nvptx-none + with_offload_nvptx := yes +endif +ifneq (,$(filter $(distrelease), precise)) + offload_targets := + with_offload_nvptx := +endif +ifneq (,$(findstring build-cross, $(build_type))) + offload_targets := + with_offload_nvptx := disabled for cross builds +endif + +ifeq ($(single_package),yes) + ifneq ($(trunk_build),yes) + offload_targets := + with_offload_nvptx := disabled for $(PKGSOURCE) builds + endif +endif +ifneq ($(findstring nonvptx, $(DEB_BUILD_OPTIONS)),) + offload_targets := + with_offload_nvptx := disabled by DEB_BUILD_OPTIONS +endif +with_offload_nvptx := $(call envfilt, nvptx, , , $(with_offload_nvptx)) +#offload_targets := +#with_offload_nvptx := not yet built for GCC 15 + +gcn_archs := amd64 +gcn_target_name = amdgcn-amdhsa + +ifneq (,$(filter $(distrelease),buster xenial bionic focal groovy)) + gcn_tools_llvm_version = 9 +else ifneq (,$(filter $(distrelease),focal groovy)) + gcn_tools_llvm_version = 11 +else + gcn_tools_llvm_version = tools +endif +ifeq ($(gcn_tools_llvm_version),tools) + ifneq (,$(filter $(distrelease), bookworm trixie xenial bionic focal)) + AMDGCN_TOOLS_DEP = amdgcn-tools-19 [$(gcn_archs)], + else + AMDGCN_TOOLS_DEP = amdgcn-tools-21 [$(gcn_archs)], + endif +else + AMDGCN_TOOLS_DEP = llvm-$(gcn_tools_llvm_version)$(if $(pkg_llvm_ver), (>= $(pkg_llvm_ver))) [$(gcn_archs)], \ + lld-$(gcn_tools_llvm_version)$(if $(pkg_llvm_ver), (>= $(pkg_llvm_ver))) [$(gcn_archs)], +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH),$(gcn_archs))) + offload_targets += $(gcn_target_name) + with_offload_gcn := yes +endif +ifneq (,$(filter $(distrelease), precise bionic focal)) + offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) + with_offload_gcn := + AMDGCN_TOOLS_DEP = +endif +ifneq (,$(findstring build-cross, $(build_type))) + offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) + with_offload_gcn := disabled for cross builds +endif + +ifeq ($(single_package),yes) + ifneq ($(trunk_build),yes) + offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) + with_offload_gcn := disabled for $(PKGSOURCE) builds + endif +endif +ifneq ($(findstring nogcn, $(DEB_BUILD_OPTIONS)),) + offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) + with_offload_gcn := disabled by DEB_BUILD_OPTIONS +endif +with_offload_gcn := $(call envfilt, gcn, , , $(with_offload_gcn)) +#offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) +#with_offload_gcn := not yet built for GCC 15 + +with_cc1 := yes +with_cc1 := $(call envfilt, cc1, , , $(with_cc1)) + +ifeq ($(with_cc1),yes) + ifeq ($(with_common_libs),yes) + with_libcc1 := yes + endif + with_libcc1_plugin := yes +endif + +ifneq (,$(with_rtlibs)) + with_libcc1 := disabled for rtlibs stage + with_libcc1_plugin := disabled for rtlibs stage +endif +ifneq (,$(findstring build-cross, $(build_type))) + with_libcc1 := disabled for cross builds +endif + +# Build all packages needed for C development +ifneq ($(with_base_only),yes) + ifeq ($(with_dev),yes) + with_cdev := yes + endif +endif + +ifeq (,$(filter $(DEB_STAGE),stage1 stage2)) +# Ada -------------------- +ada_no_cpus := arc ia64 sh3 sh3eb sh4eb +ada_no_systems := +ada_no_cross := no +ada_no_snap := no +#ifeq ($(single_package),yes) +# ifneq (,$(filter $(DEB_TARGET_ARCH),alpha)) +# ada_no_snap := yes +# endif +#endif +#ifeq ($(DEB_CROSS),yes) +# ifneq (,$(filter $(DEB_TARGET_ARCH),alpha)) +# ada_no_cross := yes +# endif +#endif + +ifeq ($(with_dev),yes) + ifneq ($(separate_lang),yes) + with_ada := yes + endif +endif +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(ada_no_cpus))) + with_ada := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(ada_no_systems))) + with_ada := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(ada_no_cross)-$(DEB_CROSS),yes-yes) + with_ada := disabled for cross compiler package +endif +ifeq ($(ada_no_snap)-$(single_package),yes-yes) + with_ada := disabled for snapshot build +endif +ifneq (,$(filter $(distrelease), precise)) + with_ada := +endif +with_ada := $(call envfilt, ada, , , $(with_ada)) + +ifeq ($(DEB_STAGE)-$(filter libgnat, $(with_rtlibs)),rtlibs-) + with_ada := disabled for rtlibs stage +endif +#with_ada := disabled for GCC 15 + +ifeq ($(with_ada),yes) + enabled_languages += ada + with_libgnat := yes + #with_gnatsjlj := yes +endif + +# C++ ------------------------- +cxx_no_cpus := avr +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_cxx := yes + endif +endif +ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(cxx_no_cpus))) + with_cxx := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +with_cxx := $(call envfilt, c++, obj-c++, , $(with_cxx)) + +# Set the default libstdc++ ABI. libstdc++ provides both ABI's. +# Existing code still runs with the new c++11 ABI, however link +# errors are seen when one object is compiled with the new std::string in scope, +# another object is compiled with the old std::string in scope. both can link +# to libstdc++.so but not to each other. +# two objects (which might be some system library and a user's program) need to +# agree on the version of std::string they're using + +libstdcxx_abi = new +# backports default to the old ABI +ifneq (,$(filter $(distrelease), jessie precise trusty)) + libstdcxx_abi = gcc4-compatible +endif + +# Build all packages needed for C++ development +ifeq ($(with_cxx),yes) + ifeq ($(with_dev),yes) + with_cxxdev := yes + with_libcxxdbg := yes + endif + ifeq ($(with_common_libs),yes) + with_libcxx := yes + endif + + # debugging versions of libstdc++ + ifneq (,$(findstring gcc-, $(PKGSOURCE))) + ifeq ($(with_cxxdev),yes) + with_cxx_debug := yes + debug_no_archs := + ifneq (,$(findstring $(DEB_TARGET_ARCH),$(debug_no_archs))) + with_cxx_debug := disabled for cpu $(DEB_TARGET_ARCH) + endif + endif + endif + with_cxx_debug := $(call envfilt, debug, , , $(with_cxx_debug)) + + enabled_languages += c++ + + with_libcxx_doc := yes + ifneq (,$(findstring nodoc, $(DEB_BUILD_OPTIONS) $(DEB_BUILD_PROFILES))) + with_libcxx_doc := + endif +endif + +go_no_cross := yes +go_no_cross := no + +go_no_cpus := arc avr hppa loong64 +go_no_cpus += m68k # See PR 79281 / PR 83314 +#go_no_cpus += armel # See Debian #1061370 +go_no_systems := +ifneq (,$(filter $(distrelease),precise)) + go_no_cpus += armhf +endif +# Debian #969221 +go_no_cpus += sh4 + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_go := yes + endif +endif +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(go_no_cpus))) + with_go := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(filter $(DEB_TARGET_ARCH),$(go_no_cpus))) + with_go := disabled for arch $(DEB_TARGET_ARCH) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(go_no_systems))) + with_go := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(go_no_cross)-$(DEB_CROSS),yes-yes) + with_go := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libgo, $(with_rtlibs)),rtlibs-) + with_go := disabled for rtlibs stage +endif +with_go := $(call envfilt, go, , , $(with_go)) + +# Build all packages needed for Go development +ifneq (,$(findstring gcc, $(PKGSOURCE))) + ifeq ($(with_go),yes) + ifeq ($(with_dev),yes) + with_godev := yes + endif + with_libgo := yes + enabled_languages += go + endif +endif + +# D --------------------------- +d_no_cross := yes +d_no_snap := +d_no_cpus := alpha arc ia64 m68k sh4 s390 +d_no_systems := gnu + +ifneq ($(separate_lang),yes) + with_d := yes +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(d_no_cpus))) + with_d := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(d_no_systems))) + with_d := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(d_no_snap)-$(single_package),yes-yes) + with_d := disabled for snapshot build +endif +ifeq ($(DEB_STAGE)-$(filter libphobos, $(with_rtlibs)),rtlibs-) + with_d := disabled for rtlibs stage +endif +ifeq ($(GENERATE_DFSG_TARBALL),yes) + with_d := disabled while generating the dfsg tarball +endif +with_d := $(call envfilt, d, , , $(with_d)) +#with_d := not yet built for GCC 15 + +ifeq ($(with_base_only),yes) + with_d := no +endif + +ifeq ($(with_d),yes) + phobos_archs = + druntime_only_archs = powerpc ppc64 + ifneq (,$(filter $(distrelease),$(ppc64el_ibm128_distreleases))) + druntime_only_archs += ppc64el + else + phobos_archs += ppc64el + endif + phobos_archs += amd64 arm64 armel armhf i386 x32 + phobos_archs += hppa + phobos_archs += mips mips64 mipsel mips64el + phobos_archs += mipsn32 mipsn32el + phobos_archs += mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el + phobos_archs += riscv64 s390x loong64 sparc64 + phobos_archs += $(druntime_only_archs) + phobos_archs := $(sort $(phobos_archs)) + ifneq (,$(filter $(DEB_TARGET_ARCH), $(phobos_archs))) + with_phobos := yes + endif + + phobos_no_systems := gnu + ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(phobos_no_systems))) + with_phobos := disabled for system $(DEB_TARGET_GNU_SYSTEM) + endif + with_libphobosdev := $(with_phobos) + + enabled_languages += d +endif + +# Fortran 95 ------------------- +fortran_no_cross := yes +fortran_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_fortran := yes + endif +endif +ifeq ($(fortran_no_cross)-$(DEB_CROSS),yes-yes) + with_fortran := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libgfortran libquadmath, $(with_rtlibs)),rtlibs-) + with_fortran := disabled for rtlibs stage +endif + +with_fortran := $(call envfilt, fortran, , , $(with_fortran)) + +# Build all packages needed for Fortran development +ifeq ($(with_fortran),yes) + ifeq ($(with_dev),yes) + ifneq ($(DEB_STAGE)-$(filter libgfortran libquadmath, $(with_rtlibs)),rtlibs-) + with_fdev := yes + endif + endif + ifeq ($(with_common_libs),yes) + with_libgfortran := yes + endif + enabled_languages += fortran +endif + +# libquadmath ------------------- + +quadmath_targets = amd64 ia64 i386 x32 \ + hurd-amd64 hurd-i386 ppc64el +# powerpc and ppc64 don't have power7 CPU defaults ... +ifneq (,$(filter $(DEB_TARGET_ARCH), $(quadmath_targets))) + # FIXME: upstream build tied to gfortran build + ifeq ($(with_fortran),yes) + with_qmath := yes + ifneq (,$(findstring gcc-15,$(PKGSOURCE))) + ifeq ($(with_common_libs),yes) + with_libqmath := yes + endif + endif + endif +endif + +# ObjC ------------------------ +objc_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_objc := yes + objc_no_archs = + ifneq (,$(filter $(DEB_TARGET_ARCH),$(objc_no_archs))) + with_objc := + endif + endif +endif +ifeq ($(objc_no_cross)-$(DEB_CROSS),yes-yes) + with_objc := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libobjc, $(with_rtlibs)),rtlibs-) + with_objc := disabled for rtlibs stage +endif +with_objc := $(call envfilt, objc, obj-c++, , $(with_objc)) + +ifeq ($(with_objc),yes) + # the ObjC runtime with garbage collection enabled needs the Boehm GC + with_objc_gc := yes + + # disable ObjC garbage collection library (needs libgc) + libgc_no_cpus := avr + ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libgc_no_cpus))) + with_objc_gc := disabled for cpu $(DEB_TARGET_ARCH_CPU) + endif + ifneq (,$(findstring build-cross, $(build_type))) + with_objc_gc := disabled for cross builds + endif + # Build all packages needed for Objective-C development + ifeq ($(with_dev),yes) + with_objcdev := yes + endif + ifeq ($(with_common_libs),yes) + with_libobjc := yes + endif + + enabled_languages += objc +endif + +# ObjC++ ---------------------- +objcxx_no_cross := no + +ifeq ($(with_objc),yes) + ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_objcxx := yes + endif + endif +endif +ifeq ($(objcxx_no_cross)-$(DEB_CROSS),yes-yes) + with_objcxx := disabled for cross compiler package +endif +with_objcxx := $(call envfilt, obj-c++, , c++ objc, $(with_objcxx)) + +ifeq ($(with_objcxx),yes) + enabled_languages += obj-c++ +endif + +# Modula-2 ------------------- +m2_no_cross := yes +m2_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_m2 := yes + endif +endif +m2_no_cpus = powerpc ppc64 sh4 +m2_no_systems = +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(m2_no_cpus))) + with_m2 := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(m2_no_systems))) + with_m2 := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(m2_no_cross)-$(DEB_CROSS),yes-yes) + with_m2 := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libgm2, $(with_rtlibs)),rtlibs-) + with_m2 := disabled for rtlibs stage +endif +ifneq (,$(filter $(distrelease),precise)) + with_m2 := disabled for $(distrelease) backport +endif +#with_m2 := disabled for GCC 15 + +with_m2 := $(call envfilt, m2, , , $(with_m2)) + +# Build all packages needed for Modula-2 development +ifeq ($(with_m2),yes) + ifeq ($(with_dev),yes) + with_m2dev := yes + endif + #ifeq ($(with_common_libs),yes) + with_libgm2 := yes + #endif + enabled_languages += m2 +endif + +# Rust ------------------- + +rs_no_cross := yes + +rs_no_cpus = alpha hppa ia64 m68k sh4 x32 +rs_no_systems := gnu + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_rs := yes + endif +endif +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(rs_no_cpus))) + with_rs := disabled for arch $(DEB_TARGET_ARCH_CPU) +else ifneq (,$(filter $(DEB_TARGET_ARCH),$(rs_no_cpus))) + with_rs := disabled for arch $(DEB_TARGET_ARCH) +endif +ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(rs_no_systems))) + with_rs := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(rs_no_cross)-$(DEB_CROSS),yes-yes) + with_rs := disabled for cross compiler package +endif +#ifeq ($(DEB_STAGE)-$(filter libgrs, $(with_rtlibs)),rtlibs-) +# with_rs := disabled for rtlibs stage +#endif + +#with_rs := disabled for GCC 15 + +with_rs := $(call envfilt, rust, , , $(with_rs)) + +# Build all packages needed for Rust development +ifeq ($(with_rs),yes) + ifeq ($(with_dev),yes) + with_rsdev := yes + endif + ifeq ($(with_common_libs),yes) + with_libgrs := yes + endif + enabled_languages += rust +endif + +# COBOL ------------------- +cobol_no_cross := yes +cobol_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_cobol := yes + endif +endif +cobol_no_cpus = alpha arc arm hppa i386 loong64 m68k \ + mips mipsel mips64 mips64el \ + powerpc ppc64 s390x sh4 sparc sparc64 x32 +cobol_no_systems = gnu +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(cobol_no_cpus))) + with_cobol := disabled for cpu $(DEB_TARGET_ARCH_CPU) +else ifneq (,$(filter $(DEB_TARGET_ARCH),$(cobol_no_cpus))) + with_cobol := disabled for arch $(DEB_TARGET_ARCH) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(cobol_no_systems))) + with_cobol := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +#ifneq ($(DEB_HOST_ARCH_BITS),$(DEB_TARGET_ARCH_BITS)) +# with_cobol := disabled for non matching arch bits +#endif +ifeq ($(cobol_no_cross)-$(DEB_CROSS),yes-yes) + with_cobol := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libgcobol, $(with_rtlibs)),rtlibs-) + with_cobol := disabled for rtlibs stage +endif +ifneq (,$(filter $(distrelease),precise)) + with_cobol := disabled for $(distrelease) backport +endif +#with_cobol := disabled for GCC 15 + +with_cobol := $(call envfilt, cobol, , , $(with_cobol)) + +# Build all packages needed for COBOL development +ifeq ($(with_cobol),yes) + ifeq ($(with_dev),yes) + with_coboldev := yes + endif + #ifeq ($(with_common_libs),yes) + with_libgcobol := yes + #endif + enabled_languages += cobol +endif + +# Algol 68 ------------------- +algol_no_cross := yes +algol_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_algol := yes + endif +endif +algol_no_cpus = +algol_no_systems = +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(algol_no_cpus))) + with_algol := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(algol_no_systems))) + with_algol := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(algol_no_cross)-$(DEB_CROSS),yes-yes) + with_algol := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libga68, $(with_rtlibs)),rtlibs-) + with_algol := disabled for rtlibs stage +endif +ifneq (,$(filter $(distrelease),precise)) + with_algol := disabled for $(distrelease) backport +endif +#with_algol := disabled for GCC 15 + +with_algol := $(call envfilt, algol68, , , $(with_algol)) + +# Build all packages needed for Algol 68 development +ifeq ($(with_algol),yes) + ifeq ($(with_dev),yes) + with_algoldev := yes + endif + #ifeq ($(with_common_libs),yes) + with_libga68 := yes + #endif + enabled_languages += algol68 +endif + +# ------------------------------------------------------------------- +# other config + +# not built from the main source package +ifeq (,$(findstring gcc-,$(PKGSOURCE))) + extra_package := yes +endif + +with_nls := yes +ifeq ($(trunk_build),yes) + with_nls := no +endif +with_nls := $(call envfilt, nls, , , $(with_nls)) + +# powerpc nof libraries ----- +with_libnof := no + +ifneq (,$(findstring gcc-15,$(PKGSOURCE))) + ifeq (,$(with_rtlibs)) + with_source := yes + endif +endif +with_source := $(call envfilt, source, , , $(with_source)) + +ifeq ($(with_cdev),yes) + +# ssp & libssp ------------------------- +with_ssp := yes +ssp_no_archs = alpha hppa ia64 m68k +ifneq (, $(filter $(DEB_TARGET_ARCH),$(ssp_no_archs) $(ssp_no_archs:%=uclibc-%))) + with_ssp := not available on $(DEB_TARGET_ARCH) +endif +with_ssp := $(call envfilt, ssp, , , $(with_ssp)) + +ifeq ($(with_ssp),yes) + ifneq ($(derivative),Debian) + ifneq (,$(findstring gcc-15, $(PKGSOURCE))) + with_ssp_default := yes + endif + endif +endif + +# gomp -------------------- +with_gomp := yes +with_gomp := $(call envfilt, gomp, , , $(with_gomp)) +gomp_no_archs = +ifneq (,$(filter $(DEB_TARGET_ARCH),$(gomp_no_archs))) + with_gomp := +endif + +# itm -------------------- +itm_archs = alpha amd64 arm64 i386 x32 loong64 ppc64 ppc64el riscv64 s390x sh4 sparc64 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(itm_archs))) + with_itm := yes +endif +with_itm := $(call envfilt, itm, , , $(with_itm)) + +# atomic -------------------- +with_atomic := yes +atomic_no_archs = +ifneq (,$(filter $(DEB_TARGET_ARCH),$(atomic_no_archs))) + with_atomic := +endif + +# backtrace -------------------- +with_backtrace := yes +backtrace_no_archs = m68k +ifneq (,$(filter $(DEB_TARGET_ARCH),$(backtrace_no_archs))) + with_backtrace := +endif + +strip_sanitizer = +ifneq (,$(filter $(distrelease),jessie stretch buster precise xenial bionic)) + strip_sanitizer = yes +endif + +# asan / sanitizer -------------------- +with_asan := +with_asan := $(call envfilt, asan, , , $(with_asan)) +asan_archs = amd64 armel armhf arm64 i386 loong64 powerpc ppc64 ppc64el \ + riscv64 s390x sparc sparc64 x32 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(asan_archs))) + with_asan := yes +endif + +# lsan / sanitizer -------------------- +with_lsan := +with_lsan := $(call envfilt, lsan, , , $(with_lsan)) +lsan_archs = arm64 amd64 loong64 ppc64 ppc64el riscv64 s390x +ifneq (,$(filter $(DEB_TARGET_ARCH),$(lsan_archs))) + with_lsan := yes +endif + +# tsan / sanitizer -------------------- +with_tsan := +with_tsan := $(call envfilt, tsan, , , $(with_tsan)) +tsan_archs = arm64 amd64 loong64 ppc64 ppc64el riscv64 s390x +ifneq (,$(filter $(DEB_TARGET_ARCH),$(tsan_archs))) + with_tsan := yes +endif + +# hwasan / sanitizer -------------------- +with_hwasan := +with_hwasan := $(call envfilt, hwasan, , , $(with_hwasan)) +hwasan_archs = amd64 arm64 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(hwasan_archs))) + with_hwasan := yes +endif + +# ubsan / sanitizer -------------------- +with_ubsan := +with_ubsan := $(call envfilt, ubsan, , , $(with_ubsan)) +ubsan_archs = amd64 armel armhf arm64 i386 loong64 powerpc ppc64 ppc64el \ + riscv64 s390x sparc sparc64 x32 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(ubsan_archs))) + with_ubsan := yes +endif + +endif # with_cdev + +# libvtv -------------------- +with_vtv := +with_vtv := $(call envfilt, vtv, , , $(with_vtv)) +vtv_archs = amd64 i386 x32 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(vtv_archs))) + with_vtv := yes + with_libvtv := yes +endif +# libvtv builds a modified libstdc++, don't enable it by default +with_vtv := +with_libvtv := + +# pie by default -------------------- +with_pie := +ifeq ($(distribution),Debian) + ifeq (,$(filter $(distrelease), jessie)) + pie_archs = amd64 arm64 armel armhf i386 \ + mips mipsel mips64 mips64el mipsn32 mipsn32el \ + mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el \ + ppc64el s390x sparc sparc64 \ + hurd-amd64 hurd-i386 riscv64 loong64 + endif + ifeq (,$(filter $(distrelease), jessie stretch)) + pie_archs += powerpc ppc64 + endif +else ifeq ($(distribution),Ubuntu) + ifeq (,$(filter $(distrelease), precise trusty)) + pie_archs = s390x + endif + ifeq (,$(filter $(distrelease), precise trusty xenial)) + pie_archs += amd64 ppc64el + endif + ifeq (,$(filter $(distrelease), precise trusty xenial)) + pie_archs += armhf arm64 i386 + endif + pie_archs += riscv64 +endif +ifneq (,$(filter $(DEB_TARGET_ARCH),$(pie_archs))) + with_pie := yes +endif +ifeq ($(trunk_build),yes) + with_pie := disabled for trunk builds +endif + +# gold -------------------- +# armel with binutils 2.20.51 only +gold_archs = amd64 armel armhf i386 powerpc ppc64 ppc64el s390x sparc sparc64 x32 hurd-amd64 hurd-i386 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(gold_archs))) + with_gold := yes +endif + +# plugins -------------------- +with_plugins := yes +ifneq (,$(with_rtlibs)) + with_plugins := disabled for rtlibs stage +endif + +endif # ifeq (,$(filter $(DEB_STAGE),stage1 stage2)) + +# Don't include docs with GFDL invariant sections +GFDL_INVARIANT_FREE := yes +ifeq ($(derivative),Ubuntu) + GFDL_INVARIANT_FREE := no +endif + +# ------------------------------------------------------------------- +# non-extra config +ifeq ($(extra_package),yes) +else + # libssp ------------------ + ifeq ($(with_ssp)-$(with_common_libs),yes-yes) + #ifneq ($(DEB_CROSS),yes) + with_libssp := $(if $(wildcard $(builddir)/gcc/auto-host.h),$(shell if grep -qs '^\#define TARGET_LIBC_PROVIDES_SSP 1' $(builddir)/gcc/auto-host.h; then echo 'libc provides ssp'; else echo 'yes'; fi)) + #endif + with_libssp := libc provides ssp + endif + + # libgomp ----------------- + ifeq ($(with_gomp)-$(with_common_libs),yes-yes) + with_libgomp := yes + endif + + # libitm ----------------- + ifeq ($(with_itm)-$(with_common_libs),yes-yes) + with_libitm := yes + endif + + # libatomic ----------------- + ifeq ($(with_atomic)-$(with_common_libs),yes-yes) + with_libatomic := yes + endif + + # libbacktrace ----------------- + ifeq ($(with_backtrace)-$(with_common_libs),yes-yes) + # currently not a shared library + #with_libbacktrace := yes + endif + + # libasan ----------------- + ifeq ($(with_asan)-$(with_common_libs),yes-yes) + ifeq ($(with_asan),yes) + with_libasan := yes + endif + endif + + # liblsan ----------------- + ifeq ($(with_lsan)-$(with_common_libs),yes-yes) + #ifneq ($(DEB_CROSS),yes) + with_liblsan := yes + #endif + endif + + # libtsan ----------------- + ifeq ($(with_tsan)-$(with_common_libs),yes-yes) + with_libtsan := yes + endif + + # libubsan ----------------- + ifeq ($(with_ubsan)-$(with_common_libs),yes-yes) + ifeq ($(with_ubsan),yes) + with_libubsan := yes + endif + endif + + # libhwasan ----------------- + ifeq ($(with_hwasan)-$(with_common_libs),yes-yes) + ifeq ($(with_hwasan),yes) + with_libhwasan := yes + endif + endif + + # libvtv ----------------- + ifeq ($(with_vtv)-$(with_common_libs),yes-yes) + with_libvtv := yes + endif + + # libquadmath ----------------- + ifeq ($(with_qmath)-$(with_common_libs),yes-yes) + with_libqmath := yes + endif + + # libunwind ----------------- + with_internal_libunwind = + ifeq ($(DEB_HOST_ARCH),ia64) + ifeq ($(DEB_STAGE),stage1) + ifeq ($(DEB_CROSS),yes) + with_internal_libunwind = yes + endif + endif + endif + + # Shared libgcc -------------------- + ifneq ($(DEB_STAGE),stage1) + with_shared_libgcc := yes + ifeq ($(with_common_libs),yes) + with_libgcc := yes + ifneq (,$(filter $(distrelease), jessie stretch buster lucid precise trusty xenial bionic focal)) + ifneq (,$(filter $(build_type), build-native cross-build-native)) + with_libcompatgcc := yes + endif + endif + endif + endif + + # libphobos ----------------- + #ifeq ($(with_common_libs),yes) + ifeq ($(with_phobos),yes) + with_libphobos := yes + endif + #endif + + # libgcc-math -------------------- + with_libgmath := no + ifneq (,$(findstring i486,$(DEB_TARGET_ARCH))) + #with_libgccmath := yes + #with_lib64gmath := yes + #with_libgmathdev := yes + endif + ifeq ($(DEB_TARGET_ARCH),amd64) + #with_libgccmath := yes + #with_lib32gmath := yes + #with_libgmathdev := yes + endif + + # hppa64 build ---------------- + hppa64_no_snap := no + hppa64_archs := hppa + ifneq (,$(filter $(build_type), build-native cross-build-native)) + ifneq (,$(filter $(distrelease), jessie precise trusty)) + binutils_hppa64 := binutils-hppa64 + else + ifneq ($(single_package),yes) + hppa64_archs += amd64 i386 x32 + endif + binutils_hppa64 := binutils-hppa64-linux-gnu + endif + ifneq (,$(filter $(DEB_TARGET_ARCH),$(hppa64_archs))) + with_hppa64 := yes + endif + endif + ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + with_hppa64 := disabled for backports/toolchain builds + endif + ifeq ($(hppa64_no_snap)-$(trunk_build),yes-yes) + with_hppa64 := disabled for snapshot build + endif + ifneq ($(findstring nohppa64, $(DEB_BUILD_OPTIONS)),) + with_hppa64 := disabled by DEB_BUILD_OPTIONS + endif + with_hppa64 := $(call envfilt, hppa64, , , $(with_hppa64)) + #with_hppa64 := disabled for GCC 15 + + ifeq ($(DEB_STAGE),rtlibs) + with_libasan := disabled for rtlibs stage + with_liblsan := disabled for rtlibs stage + with_libtsan := disabled for rtlibs stage + with_libubsan := disabled for rtlibs stage + with_libhwasan := disabled for rtlibs stage + with_hppa64 := disabled for rtlibs stage + endif +endif + +# run testsuite --------------- +with_check := yes +# if you don't want to run the gcc testsuite, uncomment the next line +#with_check := disabled by hand +ifeq ($(with_base_only),yes) + with_check := no +endif +ifeq ($(DEB_CROSS),yes) + with_check := disabled for cross compiler package +endif +ifneq (,$(findstring cross-build-,$(build_type))) + with_check := disabled for cross building the compiler +endif +ifneq (,$(with_rtlibs)) + with_check := disabled for rtlibs stage +endif +#check_no_cpus := m68k +ifeq ($(derivative),Ubuntu) + # test suite times out on the buildds + #check_no_cpus += arm64 +else ifeq ($(derivative),Debian) + # test suite times out on the buildds + check_no_cpus += alpha +endif +check_no_systems := gnu +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(check_no_cpus))) + with_check := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(check_no_systems))) + with_check := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifneq (,$(filter $(DEB_TARGET_ARCH),x32)) + with_check := disabled for architecture $(DEB_TARGET_ARCH) +endif +with_check := $(call envfilt, check, , , $(with_check)) +ifdef WITHOUT_CHECK + with_check := disabled by environment +endif +ifneq ($(findstring nocheck, $(DEB_BUILD_OPTIONS)),) + with_check := disabled by DEB_BUILD_OPTIONS +endif +#ifneq (,$(filter $(DEB_HOST_ARCH), hppa mips)) +# ifneq ($(single_package),yes) +# with_check := disabled for $(DEB_HOST_ARCH), testsuite timeouts with expect +# endif +#endif +# override the Debian porters, we need to know about the test results +ifeq ($(distribution),Debian) + ifneq (,$(filter $(DEB_HOST_ARCH), m68k sh4)) +# with_check := yes + endif +endif +ifeq ($(distribution)-$(DEB_HOST_ARCH),Ubuntu-riscv64) + with_check := disabled for $(DEB_HOST_ARCH) on Ubuntu, qemu builders +endif +#with_check := disabled for this upload + +# not a dependency on all archs, but if available, use it for the testsuite +ifneq (,$(wildcard /usr/bin/localedef)) + locale_data = generate +endif +# try to b-d on locales-all +locale_data = + +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + ldconfig_arg = --noscripts +endif + +all_enabled_languages := $(enabled_languages) +languages_without_lang_opt := c++ objc obj-c++ + +debian_extra_langs := $(subst obj-c++,objcp,$(debian_extra_langs)) +export debian_extra_langs + +# multilib +biarch_map := i686=x86_64 powerpc=powerpc64 sparc=sparc64 sparc64=sparc s390=s390x s390x=s390 \ + x86_64=i686 powerpc64=powerpc mips=mips64 mipsel=mips64el \ + mips64=mips mips64el=mipsel mipsn32=mips mipsn32el=mipsel \ + mipsr6=mips64r6 mipsr6el=mips64r6el mips64r6=mipsr6 mips64r6el=mipsr6el \ + mipsn32r6=mipsr6 mipsn32r6el=mipsr6el +# FIXME: why still? +biarch_map := $(subst i686=,i486=,$(biarch_map)) + +biarch_cpu := $(strip $(patsubst $(DEB_TARGET_GNU_CPU)=%,%, \ + $(filter $(DEB_TARGET_GNU_CPU)=%,$(biarch_map)))) + +biarch64 := no +biarch32 := no +biarchn32 := no +biarchx32 := no +flavours := +define gen_biarch + ifneq (yes,$$(call envfilt, biarch, , ,yes)) + biarch$1archs := + endif + ifneq (,$$(findstring /$$(DEB_TARGET_ARCH)/,$$(biarch$1archs))) + biarch$1 := yes + flavours += $1 + #biarch$1subdir = $$(biarch_cpu)-$$(DEB_TARGET_GNU_SYSTEM) + biarch$1subdir = $1 + ifeq ($$(with_libgcc),yes) + with_lib$1gcc := yes + endif + ifeq ($$(with_cdev),yes) + with_lib$1gccdev := yes + endif + ifeq ($$(with_libcxx),yes) + with_lib$1cxx := yes + endif + ifeq ($$(with_libcxxdbg),yes) + with_lib$1cxxdbg := yes + endif + ifeq ($$(with_cxxdev),yes) + with_lib$1cxxdev := yes + endif + ifeq ($$(with_libobjc),yes) + with_lib$1objc := yes + endif + ifeq ($$(with_objcdev),yes) + with_lib$1objcdev := yes + endif + ifeq ($$(with_libgfortran),yes) + with_lib$1gfortran := yes + endif + ifeq ($$(with_fdev),yes) + with_lib$1gfortrandev := yes + endif + ifeq ($$(with_libphobos),yes) + with_lib$1phobos := yes + endif + ifeq ($$(with_libphobosdev),yes) + with_lib$1phobosdev := yes + endif + ifeq ($$(with_libssp),yes) + with_lib$1ssp := yes + endif + ifeq ($$(with_libgomp),yes) + with_lib$1gomp:= yes + endif + ifeq ($$(with_libitm),yes) + with_lib$1itm:= yes + endif + ifeq ($$(with_libatomic),yes) + with_lib$1atomic:= yes + endif + ifeq ($$(with_libbacktrace),yes) + with_lib$1backtrace:= yes + endif + ifeq ($$(with_libasan),yes) + with_lib$1asan:= yes + endif + ifeq ($$(with_liblsan),yes) + ifneq (,$$(filter $$(distrelease),lunar jammy focal)) + with_lib$1lsan := yes + endif + endif + ifeq ($$(with_libtsan),yes) + with_lib$1tsan:= yes + endif + ifeq ($$(with_libubsan),yes) + with_lib$1ubsan := yes + endif + ifeq ($$(with_libhwasan),yes) + ifeq ($$(DEB_TARGET_ARCH)-$1,i386-64) + with_lib$1hwasan:= yes + endif + ifeq ($$(DEB_TARGET_ARCH)-$1,x32-64) + with_lib$1hwasan:= yes + endif + endif + ifeq ($$(with_libvtv),yes) + with_lib$1vtv := yes + endif + ifeq ($$(with_libqmath),yes) + with_lib$1qmath := yes + endif + ifeq ($$(with_libgo),yes) + with_lib$1go := yes + endif + ifeq ($$(with_godev),yes) + with_lib$1godev := yes + endif + + biarch_multidir_names = libiberty libgcc libbacktrace libatomic libgomp + ifneq (,$$(findstring gcc-, $$(PKGSOURCE))) + biarch_multidir_names += libstdc++-v3 libobjc libgfortran libssp \ + zlib libitm libsanitizer + ifeq ($$(with_objc_gc),yes) + biarch_multidir_names += boehm-gc + endif + endif + ifneq (,$(findstring yes, $(with_go))) + biarch_multidir_names += libffi + endif + ifeq ($(with_fortran),yes) + biarch_multidir_names += libquadmath + endif + ifeq ($(with_go),yes) + biarch_multidir_names += libgo + endif + ifeq ($(with_phobos),yes) + biarch_multidir_names += libphobos + endif + # FIXME: it now builds, but installs everything into the same $libdir + #ifeq ($(with_m2),yes) + # biarch_multidir_names += libgm2 + #endif + ifneq (,$$(findstring 32,$1)) + TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \ + $$(TARGET_ALIAS))) + TARGET32_MACHINE := $$(TARGET_ALIAS) + else + TARGET64_MACHINE := $$(TARGET_ALIAS) + TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \ + $$(TARGET_ALIAS))) + endif + export TARGET32_MACHINE + export TARGET64_MACHINE + endif +endef +biarch32archs := /amd64/ppc64/s390x/sparc64/x32/mipsn32/mipsn32el/mips64/mips64el/ +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),trusty xenial bionic focal jammy mantic noble)) + biarch32archs := $(subst s390x/,,$(biarch32archs)) + endif +else ifeq ($(derivative),Debian) + ifeq (,$(filter $(distrelease),stretch buster bullseye bookworm trixie)) + biarch32archs := $(subst s390x/,,$(biarch32archs)) + endif +endif + +biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/mipsn32/mipsn32el/ +biarchn32archs := /mips/mipsel/mips64/mips64el/ +ifeq (yes,$(MIPS_R6_ENABLED)) + biarch32archs += /mipsn32r6/mipsn32r6el/mips64r6/mips64r6el/ + biarch64archs += /mipsr6/mipsr6el/mipsn32r6/mipsn32r6el/x32/ + biarchn32archs += /mipsr6/mipsr6el/mips64r6/mips64r6el/ +endif + +biarch32_conflicts := $(filter-out mips64%, $(strip $(subst /, ,$(biarch32archs)))) + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease), precise)) + biarchx32archs := /amd64/i386/ + endif +else ifeq ($(derivative),Debian) + biarchx32archs := /amd64/i386/ +endif +$(foreach x,32 64 n32 x32,$(eval $(call gen_biarch,$(x)))) + +ifeq ($(DEB_TARGET_ARCH),sh4) + biarch_multidir_names=none +endif +export biarch_multidir_names + +#ifeq ($(trunk_build),yes) +# no_biarch_libs := yes +#endif +no_biarch_libs := + +ifeq ($(no_biarch_libs),yes) + with_lib64gcc := no + with_lib64cxx := no + with_lib64cxxdbg := no + with_lib64objc := no + with_lib64ffi := no + with_lib64gfortran := no + with_lib64ssp := no + with_lib64go := no + with_lib64gomp := no + with_lib64itm := no + with_lib64qmath := no + with_lib64atomic := no + with_lib64backtrace := no + with_lib64asan := no + with_lib64lsan := no + with_lib64tsan := no + with_lib64ubsan := no + with_lib64hwasan := no + with_lib64vtv := no + with_lib64gccdev := no + with_lib64cxxdev := no + with_lib64objcdev := no + with_lib64gfortrandev := no + with_lib64phobosdev := no + + with_lib32gcc := no + with_lib32cxx := no + with_lib32cxxdbg := no + with_lib32objc := no + with_lib32ffi := no + with_lib32gfortran := no + with_lib32ssp := no + with_lib32go := no + with_lib32gomp := no + with_lib32itm := no + with_lib32qmath := no + with_lib32atomic := no + with_lib32backtrace := no + with_lib32asan := no + with_lib32lsan := no + with_lib32tsan := no + with_lib32ubsan := no + with_lib32hwasan := no + with_lib32vtv := no + with_lib32gccdev := no + with_lib32cxxdev := no + with_lib32objcdev := no + with_lib32gfortrandev := no + with_lib32phobosdev := no + + with_libn32gcc := no + with_libn32cxx := no + with_libn32cxxdbg := no + with_libn32objc := no + with_libn32ffi := no + with_libn32gfortran := no + with_libn32ssp := no + with_libn32go := no + with_libn32gomp := no + with_libn32itm := no + with_libn32qmath := no + with_libn32atomic := no + with_libn32backtrace := no + with_libn32asan := no + with_libn32lsan := no + with_libn32tsan := no + with_libn32ubsan := no + with_libn32hwasan := no + with_libn32gccdev := no + with_libn32cxxdev := no + with_libn32objcdev := no + with_libn32gfortrandev:= no + with_libn32phobosdev := no + + with_libx32gcc := no + with_libx32cxx := no + with_libx32cxxdbg := no + with_libx32objc := no + with_libx32ffi := no + with_libx32gfortran := no + with_libx32ssp := no + with_libx32go := no + with_libx32gomp := no + with_libx32itm := no + with_libx32qmath := no + with_libx32atomic := no + with_libx32backtrace := no + with_libx32asan := no + with_libx32lsan := no + with_libx32tsan := no + with_libx32ubsan := no + with_libx32hwasan := no + with_libx32vtv := no + with_libx32gccdev := no + with_libx32cxxdev := no + with_libx32objcdev := no + with_libx32gfortrandev:= no + with_libx32phobosdev := no +endif + +ifneq (,$(filter yes,$(biarch32) $(biarch64) $(biarchn32) $(biarchx32))) + multilib := yes +endif + +multilib_archs = $(sort $(subst /, , $(biarch64archs) $(biarch32archs) $(biarchn32archs) $(biarchx32archs))) + +biarchsubdirs := \ + $(if $(filter yes,$(biarch64)),$(biarch64subdir),) \ + $(if $(filter yes,$(biarch32)),$(biarch32subdir),) \ + $(if $(filter yes,$(biarchn32)),$(biarchn32subdir),) \ + $(if $(filter yes,$(biarchx32)),$(biarchx32subdir),) +biarchsubdirs := {$(strip $(shell echo $(biarchsubdirs) | tr " " ","))} + +# GNU locales +force_gnu_locales := yes +locale_no_cpus := +locale_no_systems := +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(locale_no_systems))) + force_gnu_locales := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif + +gcc_tarpath := $(firstword $(wildcard gcc-*.tar.* /usr/src/gcc-15/gcc-*.tar.*)) +gcc_tarball := $(notdir $(gcc_tarpath)) +gcc_srcdir := $(subst -dfsg,,$(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gcc_tarball:.tar.bz2=))))) + +binutils_dsc := $(notdir $(firstword $(wildcard binutils_*.dsc))) +binutils_srcdir := $(shell echo $(binutils_dsc) | sed 's/-.*//;s/_/-/') + +ifneq (,$(filter yes, $(with_offload_nvptx) $(with_offload_gcn))) + newlib_tarpath := $(firstword $(wildcard newlib-*.tar.* /usr/src/gcc-$(BASE_VERSION)/newlib-*.tar.*)) + newlib_tarball := $(notdir $(newlib_tarpath)) + newlib_srcdir := $(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(newlib_tarball:.tar.bz2=)))) +endif + +# NOTE: This is not yet used. when building gdc or gnat using the +# gcc-source package, we don't require an exact binary dependency. +ifneq ($(dir $(gcc_tarpath)),./) + built_using_external_source := yes +else + built_using_external_source := +endif +ifeq ($(DEB_CROSS),yes) + add_built_using = yes +endif + +unpack_stamp := $(stampdir)/01-unpack-stamp +pre_patch_stamp := $(stampdir)/02-pre-patch-stamp +patch_stamp := $(stampdir)/02-patch-stamp +control_stamp := $(stampdir)/03-control-stamp +configure_stamp := $(stampdir)/04-configure-stamp +build_stamp := $(stampdir)/05-build-stamp +build_arch_stamp := $(stampdir)/05-build-arch-stamp +build_indep_stamp := $(stampdir)/05-build-indep-stamp +build_html_stamp := $(stampdir)/05-build-html-stamp +build_locale_stamp := $(stampdir)/05-build-locale-stamp +build_doxygen_stamp := $(stampdir)/05-build-doxygen-stamp +build_gnatdoc_stamp := $(stampdir)/05-build-gnatdoc-stamp +check_stamp := $(stampdir)/06-check-stamp +check_inst_stamp := $(stampdir)/06-check-inst-stamp +install_stamp := $(stampdir)/07-install-stamp +install_snap_stamp := $(stampdir)/07-install-snap-stamp +install_tc_stamp := $(stampdir)/07-install-tc-stamp +binary_stamp := $(stampdir)/08-binary-stamp + +configure_dummy_stamp := $(stampdir)/04-configure-dummy-stamp +build_dummy_stamp := $(stampdir)/05-build-dummy-stamp +install_dummy_stamp := $(stampdir)/07-install-dummy-stamp + +configure_jit_stamp := $(stampdir)/04-configure-jit-stamp +build_jit_stamp := $(stampdir)/05-build-jit-stamp +install_jit_stamp := $(stampdir)/07-install-jit-stamp + +# installation of the offload compilers is required for the check target +# name it 06-install-*-stamp +configure_nvptx_stamp := $(stampdir)/04-configure-nvptx-stamp +build_nvptx_stamp := $(stampdir)/05-build-nvptx-stamp +install_nvptx_stamp := $(stampdir)/06-install-nvptx-stamp + +configure_gcn_stamp := $(stampdir)/04-configure-gcn-stamp +build_gcn_stamp := $(stampdir)/05-build-gcn-stamp +install_gcn_stamp := $(stampdir)/06-install-gcn-stamp + +configure_hppa64_stamp := $(stampdir)/04-configure-hppa64-stamp +build_hppa64_stamp := $(stampdir)/05-build-hppa64-stamp +install_hppa64_stamp := $(stampdir)/07-install-hppa64-stamp + +control_dependencies := $(patch_stamp) + +ifeq ($(single_package),yes) + ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + configure_dependencies = $(configure_stamp) + build_dependencies = $(build_stamp) + install_dependencies = $(install_snap_stamp) + ifeq ($(with_check),yes) + check_dependencies += $(check_stamp) + endif + else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + configure_dependencies = $(configure_stamp) + build_dependencies = $(build_stamp) + install_dependencies = $(install_tc_stamp) + ifeq ($(with_check),yes) + check_dependencies += $(check_stamp) + endif + else + $(error Unknown single-package $(PKGSOURCE)) + endif +else + ifeq ($(with_base_only),yes) + configure_dependencies = $(configure_dummy_stamp) + build_dependencies = $(build_dummy_stamp) + install_dependencies = $(install_dummy_stamp) + else + configure_dependencies = $(configure_stamp) + build_dependencies = $(build_stamp) + install_dependencies = $(install_stamp) + ifeq ($(with_check),yes) + check_dependencies += $(check_stamp) + endif + endif +endif + +ifeq ($(with_jit),yes) + build_dependencies += $(build_jit_stamp) + install_dependencies += $(install_jit_stamp) +endif + +ifeq ($(with_offload_nvptx),yes) + build_dependencies += $(build_nvptx_stamp) + install_dependencies += $(install_nvptx_stamp) +endif + +ifeq ($(with_offload_gcn),yes) + build_dependencies += $(build_gcn_stamp) + install_dependencies += $(install_gcn_stamp) +endif + +ifeq ($(with_hppa64),yes) + build_dependencies += $(build_hppa64_stamp) + ifneq ($(trunk_build),yes) + install_dependencies += $(install_hppa64_stamp) + endif +endif + +build_dependencies += $(check_dependencies) + +build_arch_dependencies = $(build_dependencies) +build_indep_dependencies = $(build_dependencies) + +ifneq (,$(findstring build-native, $(build_type))) + ifneq ($(single_package),yes) + build_indep_dependencies += $(build_html_stamp) + ifeq ($(with_cxx),yes) + build_indep_dependencies += $(build_doxygen_stamp) + endif + ifeq ($(with_ada),yes) + build_indep_dependencies += $(build_gnatdoc_stamp) + endif + endif +endif + +stamp-dir: + mkdir -p $(stampdir) + +ifeq ($(DEB_CROSS),yes) + define cross_mangle_shlibs + if [ -f debian/$(1)/DEBIAN/shlibs ]; then \ + sed -i s/$(cross_lib_arch)/:$(DEB_TARGET_ARCH)/g debian/$(1)/DEBIAN/shlibs; \ + fi + endef + define cross_mangle_substvars + if [ -f debian/$(1).substvars ]; then \ + sed -i \ + -e 's/:$(DEB_TARGET_ARCH)/$(cross_lib_arch)/g' \ + -e 's/\(libc[.0-9]*-[^:]*\):\([a-z0-9-]*\)/\1-\2-cross/g' \ + $(if $(filter armel,$(DEB_TARGET_ARCH)),-e 's/:armhf/-armhf-cross/g') \ + $(if $(filter armhf,$(DEB_TARGET_ARCH)),-e 's/:armel/-armel-cross/g') \ + debian/$(1).substvars; \ + fi + endef +else + define cross_mangle_shlibs + endef + define cross_mangle_substvars + endef + # precise's dh_shlibdeps doesn't work well for ARM multilibs + # and dh_shlibdeps doesn't work well for cross builds, see #698881. + ifneq (,$(filter $(distrelease),precise quantal raring)) + ifneq (,$(filter $(DEB_TARGET_ARCH), armel armhf arm64)) + ignshld = - + endif + endif + # FIXME: don't stop at the first shlibdeps failure ... + ignshld = - +endif +ifeq ($(DEB_STAGE),rtlibs) + define cross_mangle_shlibs + endef + define cross_mangle_substvars + endef +endif + +# takes a *list* of package names as $1, the multilib dirname as $2 +_shlibdirs = \ + $(if $(strip $(1)), \ + $(shell find $(foreach p,$(1),$(CURDIR)/debian/$(p)) \ + -name '*.so.*' -printf '%h ' | uniq)) \ + $(with_build_sysroot)/lib/$(call mlib_to_march,$(2)) \ + $(with_build_sysroot)/usr/lib/$(call mlib_to_march,$(2)) \ + $(with_build_sysroot)$(subst /usr,,/$(usr_lib$(2))) \ + $(with_build_sysroot)/$(usr_lib$(2)) \ + $(if $(findstring mips64,$(DEB_TARGET_ARCH)), \ + $(with_build_sysroot)/$(usr_lib64)) \ + $(if $(findstring mipsn32,$(DEB_TARGET_ARCH)), \ + $(with_build_sysroot)/$(usr_libn32)) \ + $(if $(filter sparc64,$(DEB_TARGET_ARCH)), \ + $(with_build_sysroot)/$(usr_lib64)) \ + $(if $(filter yes, $(with_common_libs)),, \ + $(CURDIR)/$(d)/$(usr_lib$(2)) \ + $(CURDIR)/$(d)/usr/$(call mlib_to_march,$(2))/lib) +shlibdirs_to_search = -l$(subst $(SPACE),:,$(foreach d,$(_shlibdirs),$(d))) diff --git a/rules.parameters b/rules.parameters new file mode 100644 index 0000000..90e5fbe --- /dev/null +++ b/rules.parameters @@ -0,0 +1,44 @@ +# configuration parameters taken from upstream source files +GCC_VERSION := 15.3.0 +NEXT_GCC_VERSION := 15.3.1 +BASE_VERSION := 15 +SOURCE_VERSION := 15.3.0-1 +DEB_VERSION := 15.3.0-1 +DEB_EVERSION := 1:15.3.0-1 +DEB_GDC_VERSION := 15.3.0-1 +DEB_SOVERSION := 5 +DEB_SOEVERSION := 1:5 +DEB_LIBGCC_SOVERSION := +DEB_LIBGCC_VERSION := 15.3.0-1 +DEB_STDCXX_SOVERSION := 5 +DEB_GOMP_SOVERSION := 5 +GCC_SONAME := 1 +CXX_SONAME := 6 +FORTRAN_SONAME := 5 +OBJC_SONAME := 4 +GDC_VERSION := 15 +GNAT_VERSION := 15 +GNAT_SONAME := 15 +FFI_SONAME := 9 +SSP_SONAME := 0 +GOMP_SONAME := 1 +ITM_SONAME := 1 +ATOMIC_SONAME := 1 +BTRACE_SONAME := 1 +ASAN_SONAME := 8 +LSAN_SONAME := 0 +TSAN_SONAME := 2 +UBSAN_SONAME := 1 +HWASAN_SONAME := 0 +VTV_SONAME := 0 +QUADMATH_SONAME := 0 +GO_SONAME := 24 +CC1_SONAME := 0 +GCCJIT_SONAME := 15 +GPHOBOS_SONAME := 6 +GDRUNTIME_SONAME := 6 +GM2_SONAME := 20 +DIAGNOSTICS_SONAME:= 0 +GCOBOL_SONAME := 1 +GA68_SONAME := 1 +LIBC_DEP := libc6 diff --git a/rules.patch b/rules.patch new file mode 100644 index 0000000..ebbf709 --- /dev/null +++ b/rules.patch @@ -0,0 +1,426 @@ +# -*- makefile -*- +# rules to patch the unpacked files in the source directory +# --------------------------------------------------------------------------- +# various rules to unpack addons and (un)apply patches. +# - patch / apply-patches +# - unpatch / reverse-patches + +.NOTPARALLEL: + +patchdir ?= debian/patches +series_file ?= $(patchdir)/series + +# which patches should be applied? + +debian_patches += \ + git-updates \ + +# git-updates \ + +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += \ + rename-info-files \ + +# git-doc-updates \ + +else + debian_patches += \ + gcc-gfdl-build +endif + +# libstdc++-pic \ + + +debian_patches += \ + 0001-Ada-merge-all-timeval-and-timespec-definitions-and-c \ + 0002-Ada-select-64-bits-time-functions-from-GNU-libc-when \ + +debian_patches += \ + gcc-textdomain \ + gcc-distro-specs \ + gcc-driver-extra-langs \ + gcc-hash-style-gnu \ + libstdc++-doclink \ + libstdc++-man-3cxx \ + libstdc++-test-installed \ + libstdc++-doxygen-SOURCE_DATE_EPOCH \ + alpha-no-ev4-directive \ + note-gnu-stack \ + libgomp-omp_h-multilib \ + libgo-cleanfiles \ + gcc-target-include-asm \ + libgo-revert-timeout-exp \ + libgo-setcontext-config \ + gcc-auto-build \ + libitm-no-fortify-source \ + sparc64-biarch-long-double-128 \ + pr66368 \ + pr67590 \ + libffi-race-condition \ + cuda-float128 \ + t-libunwind-elf-Wl-z-defs \ + gcc-force-cross-layout \ + gcc-search-prefixed-as-ld \ + pr87808 \ + pr94253 \ + gcc-arm-disable-guality-tests \ + musl-ssp \ + arc-stddef \ + gccrs-bootstrap-mipsel \ + sh-math-fixes \ + gcc-riscv-extensions \ + libphobos-ppc64el \ + D-22464 \ + pr106641 \ + libsanitizer-static-tls \ + pr123853 \ + pr124637 \ + +# see https://bugs.debian.org/1108322 +ifneq (,$(filter $(DEB_TARGET_ARCH),hppa m68k powerpc)) + debian_patches += ada-tv_nsec-size +endif + +ifneq (,$(newlib_tarball)) + debian_patches += +endif + +ifneq (,$(filter $(distrelease),lunar)) + debian_patches += rust-enabled +endif + +ifneq (,$(filter $(distrelease), jessie stretch buster bullseye precise trusty xenial bionic focal groovy hirsute)) + debian_patches += dwarf5-revert-default + ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += dwarf5-revert-default-doc + endif +endif + +# TODO: +# pr81829 \ + +# $(if $(filter yes, $(DEB_CROSS)),,gcc-print-file-name) \ +# libstdc++-nothumb-check \ + +hardening_patches = +ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(findstring gcc-15, $(PKGSOURCE))) + hardening_patches += \ + gcc-distro-specs-ubuntu-doc \ + testsuite-hardening-format \ + testsuite-hardening-printf-types \ + testsuite-hardening-updates \ + testsuite-glibc-warnings + endif +else ifneq (,$(filter $(derivative),Debian)) + ifneq (,$(findstring gcc-15, $(PKGSOURCE))) +# ifneq ($(with_pie),yes) +# hardening_patches += \ +# ignore-pie-specs-when-not-enabled +# endif + endif +endif + +# FIXME 4.5: Drop and adjust symbols files +ifneq (,$(findstring 4.4, $(PKGSOURCE))) + debian_patches += pr39491 +endif + +# Patches for non-core languages. + +ifeq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += gm2-texinfo +endif + +# Most of the time, it would be safe to apply them whether the +# language is selected or not. But when working on a new GCC version, +# it is convenient to concentrate on core languages, and refresh them +# later when working on the specific language. +ifeq ($(with_ada),yes) + debian_patches += ada-gcc-name + debian_patches += ada-link-lib + debian_patches += ada-gnattools-cross + ifeq ($(with_gnatsjlj),yes) + debian_patches += ada-sjlj + endif + debian_patches += ada-lib-info-source-date-epoch + debian_patches += ada-perl-shebang +endif + +# FIXME: still relevant? +# gdc-multiarch + +ifeq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += gdc-texinfo +endif +ifeq (,$(filter $(DEB_TARGET_ARCH),amd64 i386 armhf)) + debian_patches += disable-gdc-tests +endif + +debian_patches += alpha-ieee +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += alpha-ieee-doc +endif + +# see https://bugs.debian.org/1107416 +ifeq ($(DEB_TARGET_ARCH),m68k) + debian_patches += gcc-m68k-no-fold-mem-offsets +endif +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += gcc-m68k-no-fold-mem-offsets-doc +endif + +# see https://gcc.gnu.org/bugzilla/PR55212 +# based on https://github.com/olegendo/gcc/tree/devel/sh-lra +# plus the patch 59550 from the bug report 55212#comment-422 +# and the changes to the documentation omitted due to DFSG +ifeq ($(DEB_TARGET_ARCH),sh4) + debian_patches += sh-lra-support + ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += sh-lra-support-doc + endif +endif +debian_patches += sh-bootstrap-compare + +# all patches below this line are applied for gcc-snapshot builds as well + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + debian_patches = +endif + +debian_patches += \ + gdc-dynamic-link-phobos \ + libstdc++-pythondir \ + gcc-verbose-lto-link \ + +ifeq ($(with_ada),yes) + debian_patches += ada-verbose + debian_patches += ada-gnat-name + debian_patches += \ + ada-armel-libatomic +endif + +ifeq ($(with_ibm_branch),yes) + debian_patches += ibm-branch +endif + +ifeq ($(with_softfloat),yes) + debian_patches += arm-multilib-soft-float +endif +ifneq (,$(filter $(distrelease), precise trusty xenial bionic focal groovy hirsute)) + debian_patches += arm-multilib-defaults +endif + +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + debian_patches += cross-fixes + debian_patches += cross-install-location +endif + +debian_patches += hurd-multiarch +debian_patches += hurd-multilib-multiarch +ifeq ($(DEB_TARGET_ARCH_OS),hurd) + debian_patches += hurd-changes + # FIXME: #1005297, PR 104660 + debian_patches += libgo-hurd-hack +endif + +debian_patches += gcc-ice-dump +debian_patches += gcc-ice-apport +debian_patches += skip-bootstrap-multilib +debian_patches += libffi-ro-eh_frame_sect +debian_patches += libgo-testsuite +debian_patches += gcc-no-multilib-dejagnu +debian_patches += libphobos-unittest +debian_patches += hppa64-libgcov-fallback + +debian_patches += algol68 +debian_patches += algol68-link-dynamic +debian_patches += algol68-sparc +ifeq ($(single_package),yes) + debian_patches += algol68-doc +else ifeq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += ga68-texinfo +else + debian_patches += algol68-doc +endif + +debian_patches += gcc-vhdl + +# sigaction on sparc changed between glibc 2.19 and 2.21 +ifeq (,$(filter 2.1%, $(shell dpkg-query -l libc-bin | awk '/^.i/ {print $$3}'))) + # keep it, gets remove in GCC from time to time + #debian_patches += pr67899 +endif + +debian_patches += gcc-multiarch +debian_patches += config-ml +ifneq ($(single_package),yes) + ifeq ($(with_multiarch_cxxheaders),yes) + debian_patches += g++-multiarch-incdir + debian_patches += canonical-cpppath + endif +endif +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + debian_patches += cross-no-locale-include + debian_patches += cross-biarch +endif +debian_patches += gcc-multilib-multiarch + +ifneq ($(trunk_build),yes) +ifneq (,$(filter $(derivative),Ubuntu)) + debian_patches += gcc-as-needed + ifeq (,$(filter $(distrelease), precise trusty xenial)) + debian_patches += gcc-as-needed-gold + endif +else # Debian + ifeq (,$(filter $(distrelease), jessie stretch)) + debian_patches += gcc-as-needed gcc-as-needed-gold + endif +endif +endif + +debian_patches += go-testsuite + +# don't remove, this is regularly overwritten, see PR sanitizer/63958. +#debian_patches += libasan-sparc + +series_stamp = $(stampdir)/02-series-stamp +series: $(series_stamp) +$(series_stamp): + echo $(strip $(addsuffix .diff,$(debian_patches))) \ + | sed -r 's/ +/ /g' | tr " " "\n" > $(series_file) +ifneq (,$(strip $(hardening_patches))) + ifneq ($(trunk_build),yes) + echo $(strip $(addsuffix .diff,$(hardening_patches))) \ + | sed -r 's/ +/ /g' | tr " " "\n" >> $(series_file) + endif +endif + sed -r 's/(.)$$/\1 -p1/' -i $(series_file) + touch $@ + +autoconf_files = $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \ + | sed -rn '/(configure\.ac|acinclude.m4)$$/s:[^/]+/src/:src/:p' | sort -u) +autoconf_dirs = $(sort $(dir $(autoconf_files))) + +automake_files = $(addprefix ./, $(filter-out none, \ + $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \ + | sed -rn '/Makefile\.(am|in)$$/s:[^/]+/src/:src/:p' | sort -u))) + +autoconf_version = 2.69 +ifneq (,$(filter $(distrelease),stretch buster trusty xenial bionic focal groovy)) + autoconf_version = +endif +ifeq ($(trunk_build),yes) + # The actual version depends on the build-dependencies set by + # variable AUTO_BUILD_DEP in rules.conf. Here, we assume the + # correct version is installed. + #autoconf_version = +endif + +# FIXME: the auto* stuff is done every time for every subdir, which +# leads to build errors. Idea: record the auto* calls in the patch +# files (AUTO ) and run them separately, +# maybe only once per directory). +$(patch_stamp): $(unpack_stamp) $(series_stamp) + sync + QUILT_PATCHES=$(patchdir) QUILT_PATCH_OPTS='-E' \ + quilt --quiltrc /dev/null push -a || test $$? = 2 + + : # only needed when we have changes, and currently fails with autogen 5.18 + : #cd $(srcdir)/fixincludes && ./genfixes + + sync + echo -n $(autoconf_dirs) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'echo "Running autoconf$(autoconf_version) in {}..." ; \ + cd $(CURDIR)/{} && rm -f configure && \ + AUTOM4TE=/usr/bin/autom4te$(autoconf_version) autoconf$(autoconf_version)' + find $(srcdir) -name autom4te.cache | xargs -r rm -rf + + for i in $(debian_patches) $(hardening_patches); do \ + echo -e "\n$$i:" >> pxxx; \ + sed -n 's/^# *DP: */ /p' $(patchdir)/$$i.diff >> pxxx; \ + done +# -$(srcdir)/move-if-change pxxx $@ + + : # generate the distro-defaults.h header + rm -f $(srcdir)/gcc/distro-defaults.h + ( \ + echo '/* distro specific configuration injected by the distro build. */'; \ + echo ''; \ + echo '#ifndef ACCEL_COMPILER' \ + ) >> $(srcdir)/gcc/distro-defaults.h +ifeq ($(with_async_unwind),yes) + echo '#define DIST_DEFAULT_ASYNC_UNWIND 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif +ifeq ($(with_ssp)-$(with_ssp_default),yes-yes) + echo '#define DIST_DEFAULT_SSP 1' \ + >> $(srcdir)/gcc/distro-defaults.h + ifeq (,$(filter $(distrelease), precise trusty)) + echo '#define DIST_DEFAULT_SSP_STRONG 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif + echo '#define DIST_DEFAULT_FORMAT_SECURITY 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif +ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(filter $(distrelease),lucid precise trusty xenial bionic focal jammy kinetic lunar mantic)) + ( \ + echo '#define DIST_DEFAULT_FORTIFY_SOURCE 2'; \ + echo '#define DIST_DEFAULT_FORTIFY_SOURCE_S "2"' \ + ) >> $(srcdir)/gcc/distro-defaults.h + else + ( \ + echo '#define DIST_DEFAULT_FORTIFY_SOURCE 3'; \ + echo '#define DIST_DEFAULT_FORTIFY_SOURCE_S "3"' \ + ) >> $(srcdir)/gcc/distro-defaults.h + endif + echo '#define DIST_DEFAULT_RELRO 1' \ + >> $(srcdir)/gcc/distro-defaults.h + echo '#define DIST_DEFAULT_BIND_NOW 1' \ + >> $(srcdir)/gcc/distro-defaults.h + ifeq ($(with_stack_clash),yes) + echo '#define DIST_DEFAULT_STACK_CLASH 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif + ifeq ($(with_cf_protection),yes) + echo '#define DIST_DEFAULT_CF_PROTECTION 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif + ifeq (,$(filter $(distrelease),xenial bionic focal jammy noble oracular plucky)) + echo '#define DIST_DEFAULT_INIT_ZERO_ALL 1' \ + >> $(srcdir)/gcc/distro-defaults.h + echo '#define DIST_DEFAULT_BIDI_WARNING 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif +else ifneq (,$(filter $(derivative),Debian)) + ifneq (,$(findstring gcc-15, $(PKGSOURCE))) + endif +endif +ifeq ($(with_timet64),yes) + echo '#define DIST_DEFAULT_TIMET64 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif +ifeq ($(with_sframe),yes) + echo '#define DIST_DEFAULT_SFRAME 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif + echo '#endif' \ + >> $(srcdir)/gcc/distro-defaults.h + + mv pxxx $@ + +unpatch: + QUILT_PATCHES=$(patchdir) \ + quilt --quiltrc /dev/null pop -a -R || test $$? = 2 + rm -rf .pc + +update-patches: $(series_stamp) + export QUILT_PATCHES=$(patchdir); \ + quilt pop -a; \ + export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"; \ + export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"; \ + while quilt push; do quilt refresh --no-timestamps --no-index -pab; done + +patch: $(patch_stamp) +.PHONY: patch series quilt autotools diff --git a/rules.sonames b/rules.sonames new file mode 100644 index 0000000..e57c5aa --- /dev/null +++ b/rules.sonames @@ -0,0 +1,107 @@ +ifneq ($(vafilt_defined),1) + $(error rules.defs must be included before rules.sonames) +endif + +ifeq (,$(wildcard debian/soname-cache)) + SONAME_VARS := $(shell \ + cache=debian/soname-cache; \ + rm -f $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libstdc++-v3/acinclude.m4`; \ + echo CXX_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libobjc/configure.ac`; \ + echo OBJC_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libgfortran/libtool-version | cut -d: -f1`; \ + echo FORTRAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libssp/libtool-version | cut -d: -f1`; \ + echo SSP_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libffi/libtool-version | cut -d: -f1`; \ + echo FFI_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgomp/configure.ac`; \ + echo GOMP_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/asan/libtool-version | cut -d: -f1`; \ + echo ASAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/lsan/libtool-version | cut -d: -f1`; \ + echo LSAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/tsan/libtool-version | cut -d: -f1`; \ + echo TSAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/ubsan/libtool-version | cut -d: -f1`; \ + echo UBSAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/hwasan/libtool-version | cut -d: -f1`; \ + echo HWASAN_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libatomic/configure.ac`; \ + v=1; \ + echo ATOMIC_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libbacktrace/configure.ac`; \ + echo BTRACE_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libquadmath/libtool-version | cut -d: -f1`; \ + echo QUADMATH_SONAME=$$v >> $$cache; \ + v=`grep '[^_]Library_Version.*:' $(srcdir)/gcc/ada/gnatvsn.ads \ + | sed -e 's/.*"\([^"]*\)".*/\1/'`; \ + echo GNAT_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgo/configure.ac`; \ + echo GO_SONAME=$$v >> $$cache; \ + echo ITM_SONAME=1 >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libvtv/configure.ac`; \ + v=0; \ + echo VTV_SONAME=$$v >> $$cache; \ + echo CC1_SONAME=0 >> $$cache; \ + echo GCCJIT_SONAME=$(if $(filter yes, $(with_versioned_libgccjit)),$(BASE_VERSION),0) >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libphobos/configure.ac`; \ + echo GPHOBOS_SONAME=$$v >> $$cache; \ + echo GDRUNTIME_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgm2/configure.ac`; \ + echo GM2_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^LIBGDIAGNOSTICS_VERSION_NUM/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/gcc/Makefile.in`; \ + echo DIAGNOSTICS_SONAME=$$(echo $$v |sed 's/ //g') >> $$cache; \ + v=`awk -F= '/^LIBGCOBOL_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgcobol/configure.ac`; \ + echo GCOBOL_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libga68_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libga68/configure.ac`; \ + echo GA68_SONAME=$$v >> $$cache; \ + cat $$cache) +else + SONAME_VARS := $(shell cat debian/soname-cache) +endif +CXX_SONAME = $(call vafilt,$(SONAME_VARS),CXX_SONAME) +OBJC_SONAME = $(call vafilt,$(SONAME_VARS),OBJC_SONAME) +FORTRAN_SONAME = $(call vafilt,$(SONAME_VARS),FORTRAN_SONAME) +SSP_SONAME = $(call vafilt,$(SONAME_VARS),SSP_SONAME) +FFI_SONAME = $(call vafilt,$(SONAME_VARS),FFI_SONAME) +GOMP_SONAME = $(call vafilt,$(SONAME_VARS),GOMP_SONAME) +ATOMIC_SONAME = $(call vafilt,$(SONAME_VARS),ATOMIC_SONAME) +BTRACE_SONAME = $(call vafilt,$(SONAME_VARS),BTRACE_SONAME) +ASAN_SONAME = $(call vafilt,$(SONAME_VARS),ASAN_SONAME) +LSAN_SONAME = $(call vafilt,$(SONAME_VARS),LSAN_SONAME) +TSAN_SONAME = $(call vafilt,$(SONAME_VARS),TSAN_SONAME) +UBSAN_SONAME = $(call vafilt,$(SONAME_VARS),UBSAN_SONAME) +VTV_SONAME = $(call vafilt,$(SONAME_VARS),VTV_SONAME) +CILKRTS_SONAME = $(call vafilt,$(SONAME_VARS),CILKRTS_SONAME) +QUADMATH_SONAME = $(call vafilt,$(SONAME_VARS),QUADMATH_SONAME) +GNAT_SONAME = $(call vafilt,$(SONAME_VARS),GNAT_SONAME) +GO_SONAME = $(call vafilt,$(SONAME_VARS),GO_SONAME) +ITM_SONAME = $(call vafilt,$(SONAME_VARS),ITM_SONAME) +CC1_SONAME = $(call vafilt,$(SONAME_VARS),CC1_SONAME) +GCCJIT_SONAME = $(call vafilt,$(SONAME_VARS),GCCJIT_SONAME) +GPHOBOS_SONAME = $(call vafilt,$(SONAME_VARS),GPHOBOS_SONAME) +GDRUNTIME_SONAME= $(call vafilt,$(SONAME_VARS),GDRUNTIME_SONAME) +GM2_SONAME = $(call vafilt,$(SONAME_VARS),GM2_SONAME) +HWASAN_SONAME = $(call vafilt,$(SONAME_VARS),HWASAN_SONAME) +DIAGNOSTICS_SONAME = $(call vafilt,$(SONAME_VARS),DIAGNOSTICS_SONAME) +GCOBOL_SONAME = $(call vafilt,$(SONAME_VARS),GCOBOL_SONAME) +GA68_SONAME = $(call vafilt,$(SONAME_VARS),GA68_SONAME) + +# alias +GFORTRAN_SONAME = $(FORTRAN_SONAME) +STDC++_SONAME = $(CXX_SONAME) +GDIAGNOSTICS_SONAME = $(DIAGNOSTICS_SONAME) diff --git a/rules.source b/rules.source new file mode 100644 index 0000000..a11b595 --- /dev/null +++ b/rules.source @@ -0,0 +1,15 @@ +SOURCE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) +patchdir = $(SOURCE_DIR)/patches + +include $(SOURCE_DIR)/debian/rules.defs +include $(SOURCE_DIR)/debian/rules.patch +include $(SOURCE_DIR)/debian/rules.unpack + +patch-source: $(patch_stamp) + +clean-source: + rm -rf $(stampdir) + rm -rf $(gcc_srcdir) $(gdc_srcdir) + rm -rf bin + rm -rf $(srcdir) + diff --git a/rules.unpack b/rules.unpack new file mode 100644 index 0000000..23c49dd --- /dev/null +++ b/rules.unpack @@ -0,0 +1,210 @@ +# -*- makefile -*- +# rules to unpack the source tarballs in $(srcdir); if the source dir already +# exists, the rule exits with an error to prevent deletion of modified +# source files. It has to be deleted manually. + +tarballs = $(gcc_tarball) +ifneq (,$(filter yes, $(with_offload_nvptx) $(with_offload_gcn))) + tarballs += $(newlib_tarball) +endif +ifeq ($(with_binutils),yes) + tarballs += $(binutils_dsc) +endif + +unpack_stamps = $(foreach i,$(tarballs),$(unpack_stamp)-$(i)) + +unpack: stamp-dir $(unpack_stamp) debian-chmod +$(unpack_stamp): $(unpack_stamps) +$(unpack_stamp): $(foreach p,$(debian_tarballs),unpacked-$(p)) + echo -e "\nBuilt from Debian source package $(PKGSOURCE)-$(SOURCE_VERSION)" \ + > pxxx + echo -e "Integrated upstream packages in this version:\n" >> pxxx + for i in $(tarballs); do echo " $$i" >> pxxx; done + mv -f pxxx $@ + +debian-chmod: + @chmod 755 debian/dh_* + +# --------------------------------------------------------------------------- + +gfdl_texinfo_files = \ + gcc/doc/analyzer.texi \ + gcc/doc/avr-mmcu.texi \ + gcc/doc/bugreport.texi \ + gcc/doc/cfg.texi \ + gcc/doc/collect2.texi \ + gcc/doc/compat.texi \ + gcc/doc/configfiles.texi \ + gcc/doc/configterms.texi \ + gcc/doc/contrib.texi \ + gcc/doc/contribute.texi \ + gcc/doc/cpp.texi \ + gcc/doc/cppdiropts.texi \ + gcc/doc/cppenv.texi \ + gcc/doc/cppinternals.texi \ + gcc/doc/cppopts.texi \ + gcc/doc/cppwarnopts.texi \ + gcc/doc/extend.texi \ + gcc/doc/fragments.texi \ + gcc/doc/frontends.texi \ + gcc/doc/gccint.texi \ + gcc/doc/gcov.texi \ + gcc/doc/gcov-dump.texi \ + gcc/doc/gcov-tool.texi \ + gcc/doc/generic.texi \ + gcc/doc/gimple.texi \ + gcc/doc/gnu.texi \ + gcc/doc/gty.texi \ + gcc/doc/headerdirs.texi \ + gcc/doc/hostconfig.texi \ + gcc/doc/implement-c.texi \ + gcc/doc/implement-cxx.texi \ + gcc/doc/install-old.texi \ + gcc/doc/install.texi \ + gcc/doc/interface.texi \ + gcc/doc/invoke.texi \ + gcc/doc/languages.texi \ + gcc/doc/libgcc.texi \ + gcc/doc/loop.texi \ + gcc/doc/lto.texi \ + gcc/doc/makefile.texi \ + gcc/doc/match-and-simplify.texi \ + gcc/doc/md.texi \ + gcc/doc/objc.texi \ + gcc/doc/optinfo.texi \ + gcc/doc/options.texi \ + gcc/doc/passes.texi \ + gcc/doc/plugins.texi \ + gcc/doc/poly-int.texi \ + gcc/doc/portability.texi \ + gcc/doc/rtl.texi \ + gcc/doc/service.texi \ + gcc/doc/sourcebuild.texi \ + gcc/doc/standards.texi \ + gcc/doc/tm.texi.in \ + gcc/doc/tm.texi \ + gcc/doc/tree-ssa.texi \ + gcc/doc/trouble.texi \ + gcc/doc/ux.texi \ + gcc/doc/include/gcc-common.texi \ + gcc/doc/include/funding.texi \ + gcc/fortran/gfc-internals.texi \ + gcc/fortran/invoke.texi \ + gcc/fortran/intrinsic.texi \ + + +gfdl_toplevel_texinfo_files = \ + gcc/doc/gcc.texi \ + gcc/doc/lto-dump.texi \ + gcc/ada/gnat-style.texi \ + gcc/ada/gnat_rm.texi \ + gcc/ada/gnat_ugn.texi \ + gcc/fortran/gfortran.texi \ + gcc/go/gccgo.texi \ + libgomp/libgomp.texi \ + libquadmath/libquadmath.texi \ + +gfdl_manpages = \ + gcc/doc/cpp.1 \ + gcc/doc/g++.1 \ + gcc/doc/gc-analyze.1 \ + gcc/doc/gcc.1 \ + gcc/doc/gccgo.1 \ + gcc/doc/gcov.1 \ + gcc/doc/gcov-dump.1 \ + gcc/doc/gcov-tool.1 \ + gcc/doc/gfortran.1 \ + gcc/lto/lto-dump.1 \ + gcc/doc/fsf-funding.7 \ + +# --------------------------------------------------------------------------- +$(unpack_stamp)-$(gcc_tarball): $(gcc_tarpath) + @echo "Build environment: derivative=$(derivative), release=$(distrelease)" + : # unpack gcc tarball + mkdir -p $(stampdir) + if [ -d $(srcdir) ]; then \ + echo >&2 "Source directory $(srcdir) exists. Delete by hand"; \ + false; \ + fi + rm -rf $(gcc_srcdir) + tar -x -f $(gcc_tarpath) + mv $(gcc_srcdir) $(srcdir) + ln -sf libsanitizer $(srcdir)/libasan +ifeq (0,1) + cd $(srcdir) && tar cfj ../gcc-4.1.1-doc.tar.bz2 \ + $(gfdl_texinfo_files) \ + $(gfdl_toplevel_texinfo_files) \ + $(gfdl_manpages) +endif +ifeq ($(GFDL_INVARIANT_FREE),yes) + ifneq ($(single_package),yes) + rm -f $(srcdir)/gcc/doc/*.1 + rm -f $(srcdir)/gcc/doc/fsf-funding.7 + rm -f $(srcdir)/gcc/doc/*.info + rm -f $(srcdir)/gcc/fortran/*.info + rm -f $(srcdir)/libgomp/*.info + rm -f $(srcdir)/libquadmath/*.info + for i in $(gfdl_texinfo_files); do \ + if [ -f $(srcdir)/$$i ]; then \ + cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \ + else \ + cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + ( \ + echo '@include gcc-vers.texi'; \ + echo '@macro versionsubtitle'; \ + echo '@subtitle For @sc{gcc} version @value{version-GCC}'; \ + echo '@vskip 0pt plus 1filll'; \ + echo '@end macro'; \ + ) > $(srcdir)/gcc/doc/include/gcc-common.texi + for i in $(gfdl_toplevel_texinfo_files); do \ + n=$$(basename $$i .texi); \ + if [ -f $(srcdir)/$$i ]; then \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + else \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + for i in $(gfdl_manpages); do \ + touch $(srcdir)/$$i; \ + done + rm -f $(srcdir)/INSTALL/*.html + rm -f $(srcdir)/zlib/contrib/dotzlib/DotZLib.chm + endif +endif + echo "$(gcc_tarball) unpacked." > $@ + +# --------------------------------------------------------------------------- +ifneq (,$(newlib_tarball)) +$(unpack_stamp)-$(newlib_tarball): $(newlib_tarpath) $(unpack_stamp)-$(gcc_tarball) + : # unpack newlib tarball + mkdir -p $(stampdir) + : # rm -rf $(newlib_srcdir) + tar -x -f $(newlib_tarpath) + echo "$(newlib_tarball) unpacked." > $@ +endif + +# --------------------------------------------------------------------------- +ifneq (,$(binutils_dsc)) +$(unpack_stamp)-$(binutils_dsc): $(binutils_tarpath) $(unpack_stamp)-$(gcc_tarball) + : # unpack binutils package + mkdir -p $(stampdir) + : # rm -rf $(binutils_srcdir) + dpkg-source -x $(binutils_dsc) + + : # symlink binutilds toplevel dirs into the gcc tree + for d in $(binutils_srcdir)/*; do \ + [ -d $$d ] || continue; \ + b=$$(basename $$d); \ + if [ ! -e $(srcdir)/$$b ]; then \ + ln -s ../$(binutils_srcdir)/$$b $(srcdir)/$$b; \ + fi; \ + done + + echo "$(binutils_dsc) unpacked." > $@ +endif diff --git a/rules2 b/rules2 new file mode 100644 index 0000000..a1024d1 --- /dev/null +++ b/rules2 @@ -0,0 +1,3197 @@ +#! /usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +.SUFFIXES: + +include debian/rules.defs +include debian/rules.parameters + +ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + include $(binutils_srcdir)/debian/rules.defs +endif + +dh_compat2 := $(shell dpkg --compare-versions "$$(dpkg-query -f '$${Version}' -W debhelper)" lt 9.20150811ubuntu2 \ + && echo DH_COMPAT=2) + +# some tools +SHELL = /bin/bash -e # brace expansion in rules file +IR = install -m 644 # Install regular file +IP = install -m 755 # Install program +IS = install -m 755 # Install script + +DWZ = dwz +ifneq (,$(filter $(distrelease),jessie stretch trusty xenial bionic)) + DWZ = : dwz +endif + +# dwz: debian/gccgo-11/usr/lib/gcc/mips64el-linux-gnuabi64/11/go1: Found two copies of .debug_line_str section +ifneq (,$(filter $(DEB_HOST_ARCH),mips64el hurd-amd64 hurd-i386)) + DWZ = : dwz +endif + +# kernel-specific ulimit hack +ifeq ($(findstring linux,$(DEB_HOST_GNU_SYSTEM)),linux) + ULIMIT_M = if [ -e /proc/meminfo ]; then \ + m=`awk '/^((Mem|Swap)Free|Cached)/{m+=$$2}END{print int(m*.9)}' \ + /proc/meminfo`; \ + else \ + m=`vmstat --free --swap-free --kilobytes|awk '{m+=$$2}END{print int(m*.9)}'`; \ + fi; \ + echo "Limiting memory for test runs to $${m}kB"; \ + if ulimit -m $$m; then \ + echo " limited to `ulimit -m`kB"; \ + else \ + echo " failed"; \ + fi +else + ULIMIT_M = true +endif + +#time_command = /usr/bin/time -v +ifeq ($(usage_stats),yes) + time_command += $(CURDIR)/debian/usage-wrapper.py $(NJOBS) --base-memory -m 2.0 -o usage-$(shell echo $@ | sed 's/.*0[1-9]-//;s/-stamp//').svg +endif + +ifeq ($(locale_data),generate) + SET_LOCPATH = LOCPATH=$(CURDIR)/locales +endif + +SET_PATH = PATH=$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH +ifeq ($(trunk_build),yes) + ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE))) + SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH + endif + ifneq (,$(findstring ppc64-linux,$(DEB_TARGET_GNU_TYPE))) + SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH + endif +endif + +# the recipient for the test summaries. Send with: debian/rules mail-summary +S_EMAIL = gcc@packages.debian.org gcc-testresults@gcc.gnu.org + +# build not yet prepared to take variables from the environment +define unsetenv + unexport $(1) + $(1) = +endef +$(foreach v, CPPFLAGS CFLAGS CXXFLAGS DFLAGS FFLAGS FCFLAGS LDFLAGS OBJCFLAGS OBJCXXFLAGS, $(if $(filter environment,$(origin $(v))),$(eval $(call unsetenv, $(v))))) + +CC = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-15 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-14 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-13 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-12 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-11 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-10 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-9 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-8 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc))) +CXX = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-15 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-14 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-13 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-12 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-11 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-10 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-9 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-8 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++))) +GDC = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-15 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-14 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-13 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-12 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-11 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-10 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-9 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc))) +ifeq ($(with_ada),yes) + GNAT = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-15 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-14 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-13 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-12 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-11 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-10 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-9 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-8 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat))) + ifneq (,$(GNAT)) + CC = $(subst gnat,gcc,$(GNAT)) + else ifneq (,$(filter $(distrelease), trusty)) + CC = gcc-4.8 + else ifneq (,$(wildcard /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc)) + CC = $(DEB_HOST_GNU_TYPE)-gcc + else + CC = gcc + endif + CXX = $(subst gcc,g++,$(CC)) + GDC = $(subst gcc,gdc,$(CC)) + GNATBIND = $(subst gnat,gnatbind,$(GNAT)) + GNATMAKE = $(subst gnat,gnatmake,$(GNAT)) +endif + +ifneq (,$(filter $(build_type),cross-build-native cross-build-cross)) + export GNATMAKE_FOR_BUILD = $(DEB_BUILD_GNU_TYPE)-gnatmake-$(BASE_VERSION) + SET_TARGET_TOOLS = \ + CC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gcc-$(BASE_VERSION) \ + CXX_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-g++-$(BASE_VERSION) \ + GFORTRAN_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gfortran-$(BASE_VERSION) \ + GOC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gccgo-$(BASE_VERSION) \ + GNAT_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gnat-$(BASE_VERSION) \ + GDC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gdc-$(BASE_VERSION) \ + GM2_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gm2-$(BASE_VERSION) +endif + +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + CC_FOR_TARGET = $(builddir)/gcc/xgcc -B$(builddir)/gcc/ +else + CC_FOR_TARGET = $(DEB_TARGET_GNU_TYPE)-gcc +endif + +ifneq ($(derivative),Ubuntu) + ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel mips mipsel)) + STAGE1_CFLAGS = -g -O2 + endif +endif + +ifeq ($(with_ssp_default),yes) + STAGE1_CFLAGS = -g + ifeq (,$(BOOT_CFLAGS)) + BOOT_CFLAGS = -g -O2 + endif + LIBCFLAGS = -g -O2 + LIBCXXFLAGS = -g -O2 -fno-implicit-templates + # Only use -fno-stack-protector when known to the stage1 compiler. + cc-fno-stack-protector := $(shell if $(CC) $(CFLAGS) -fno-stack-protector \ + -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \ + then echo "-fno-stack-protector"; fi;) + $(foreach var,STAGE1_CFLAGS BOOT_CFLAGS LIBCFLAGS LIBCXXFLAGS,$(eval \ + $(var) += $(cc-fno-stack-protector))) +endif + +# FIXME: passing LDFLAGS for native doesn't do anything +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + CFLAGS = -g -O2 + LDFLAGS = -Wl,-z,relro + ifeq ($(DEB_TARGET_ARCH),alpha) + LDFLAGS += -Wl,--no-relax + endif +else + BOOT_CFLAGS = -g -O2 + BOOT_LDFLAGS = -Wl,-z,relro + ifeq ($(DEB_TARGET_ARCH),alpha) + BOOT_LDFLAGS += -Wl,--no-relax + endif +endif +LDFLAGS_FOR_TARGET = -Wl,-z,relro +ifeq ($(DEB_TARGET_ARCH),alpha) + LDFLAGS := $(filter-out -Wl$(COMMA)--no-relax, $(LDFLAGS)) -Wl,--no-relax +endif + +ifneq (,$(findstring static,$(DEB_BUILD_OPTIONS))) + LDFLAGS += -static +endif + +ifneq ($(findstring gccdebug, $(DEB_BUILD_OPTIONS)),) + CFLAGS = -O0 -g3 -fno-inline + CXXFLAGS = -O0 -g3 -fno-inline + CFLAGS_FOR_BUILD = -O0 -g3 -fno-inline + CXXFLAGS_FOR_BUILD = -O0 -g3 -fno-inline + CFLAGS_FOR_TARGET = -O0 -g3 -fno-inline + CXXFLAGS_FOR_TARGET = -O0 -g3 -fno-inline + BOOT_CFLAGS = + BOOT_LDFLAGS = + STAGE1_CFLAGS = + STAGE1_LDFLAGS = +endif + +ifeq ($(DEB_TARGET_ARCH),arm64) + # Build with PAC/BTI support if enabled in the build flags + # https://wiki.debian.org/ToolChain/PACBTI + ifneq (,$(findstring -mbranch-protection=standard,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get CFLAGS))) + CFLAGS_SECURE = -mbranch-protection=standard + else + CFLAGS_SECURE = + endif + + ifneq (,$(findstring -mbranch-protection=standard,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get FCFLAGS))) + FCFLAGS += -mbranch-protection=standard + endif + + ifeq ($(DEB_CROSS),yes) + # Building cross compilers + CFLAGS_FOR_TARGET += $(CFLAGS_SECURE) + CXXFLAGS_FOR_TARGET += $(CFLAGS_SECURE) + else ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + # Cross build of the native compiler + CFLAGS_FOR_TARGET += $(CFLAGS_SECURE) + CXXFLAGS_FOR_TARGET += $(CFLAGS_SECURE) + else + # Native build + CFLAGS += $(CFLAGS_SECURE) + CXXFLAGS += $(CFLAGS_SECURE) + BOOT_CFLAGS += $(CFLAGS_SECURE) + endif +endif + +ifneq (,$(findstring -fno-omit-frame-pointer,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get CFLAGS))) + CFLAGS_FRAME_POINTER = -fno-omit-frame-pointer +else + CFLAGS_FRAME_POINTER = +endif + +ifeq ($(DEB_CROSS),yes) + # Building cross compilers + CFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) + CXXFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) +else ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + # Cross build of the native compiler + CFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) + CXXFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) +else + # Native build + CFLAGS += $(CFLAGS_FRAME_POINTER) + CXXFLAGS += $(CFLAGS_FRAME_POINTER) +endif + +# set CFLAGS/LDFLAGS for the configure step only, maybe be modifed for some target +# all other flags are passed to the make step. +pass_vars = $(foreach v,$(1),$(if $($(v)),$(v)="$($(v))")) +flags_to_pass := CFLAGS CXXFLAGS LIBCFLAGS LIBCXXFLAGS LDFLAGS FCFLAGS + +docdir = usr/share/doc + +# no prefix for regular builds, would disable searching for as / ld +binutils_prefix = +ifneq (,$(with_build_sysroot)) + binutils_prefix = $(with_build_sysroot)/usr/bin +endif + +CONFARGS = -v \ + --with-pkgversion='$(distribution)$(if $(with_ibm_branch),/IBM)___$(DEB_VERSION)' \ + --with-bugurl='file:///usr/share/doc/$(PKGSOURCE)/README.Bugs' + +CONFARGS += \ + --enable-languages=$(subst $(SPACE),$(COMMA),$(enabled_languages)) \ + --prefix=/$(PF) \ + --with-gcc-major-version-only \ + +ifneq (,$(with_build_sysroot)) + CONFARGS += \ + --with-as=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-as \ + --with-ld=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-ld +endif + +ifeq ($(versioned_packages),yes) + CONFARGS += --program-suffix=-$(BASE_VERSION) +endif +ifneq (,$(filter $(build_type),build-native cross-build-native)) + CONFARGS += --program-prefix=$(cmd_prefix) +endif + +ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + CONFARGS += \ + --disable-decimal-float \ + --disable-libatomic \ + --disable-libga68 \ + --disable-libgcobol \ + --disable-libgomp \ + --disable-libssp \ + --disable-libquadmath \ + --disable-libsanitizer \ + --disable-threads \ + --disable-bootstrap \ + --libexecdir=/$(libexecdir) \ + --libdir=/$(PF)/$(configured_libdir) \ + $(if $(with_build_sysroot),--with-build-sysroot=$(with_build_sysroot)) \ + $(if $(findstring build-cross, $(build_type)), \ + $(if $(with_sysroot),--with-sysroot=$(with_sysroot))) \ + --enable-linker-build-id + + ifeq ($(DEB_STAGE),stage1) + CONFARGS += \ + --disable-shared \ + --with-newlib \ + --without-headers + else + # stage2 + CONFARGS += \ + --enable-shared + endif +else + CONFARGS += \ + --enable-shared \ + --enable-linker-build-id \ + +ifneq ($(single_package),yes) + CONFARGS += \ + --libexecdir=/$(libexecdir) \ + --without-included-gettext \ + --enable-threads=posix \ + --libdir=/$(PF)/$(configured_libdir) +endif + +ifneq ($(with_cpp),yes) + CONFARGS += --disable-cpp +endif + +ifeq ($(with_nls),yes) + CONFARGS += --enable-nls +else + CONFARGS += --disable-nls +endif + +ifeq ($(with_bootstrap),off) + CONFARGS += --disable-bootstrap +else ifneq ($(with_bootstrap),) + CONFARGS += --enable-bootstrap +endif + +ifneq ($(with_sysroot),) + CONFARGS += --with-sysroot=$(with_sysroot) +endif +ifneq ($(with_build_sysroot),) + CONFARGS += --with-build-sysroot=$(with_build_sysroot) +endif + +ifeq ($(force_gnu_locales),yes) + CONFARGS += --enable-clocale=gnu +endif + +ifeq ($(with_cxx)-$(with_cxx_debug),yes-yes) + CONFARGS += --enable-libstdcxx-debug +endif +CONFARGS += --enable-libstdcxx-time=yes +CONFARGS += --with-default-libstdcxx-abi=$(libstdcxx_abi) +ifeq ($(libstdcxx_abi),gcc4-compatible) + CONFARGS += --disable-libstdcxx-dual-abi +endif +CONFARGS += --enable-libstdcxx-backtrace + +ifeq (,$(filter $(DEB_TARGET_ARCH), hurd-amd64 hurd-i386)) + CONFARGS += --enable-gnu-unique-object +endif + +ifneq ($(with_ssp),yes) + CONFARGS += --disable-libssp +endif + +ifneq ($(with_gomp),yes) + CONFARGS += --disable-libgomp +endif + +ifneq ($(with_itm),yes) + CONFARGS += --disable-libitm +endif + +ifneq ($(with_atomic),yes) + CONFARGS += --disable-libatomic +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH),$(vtv_archs))) + ifeq ($(with_vtv),yes) + CONFARGS += --enable-vtable-verify + else + CONFARGS += --disable-vtable-verify + endif +endif + +ifneq ($(with_asan),yes) + CONFARGS += --disable-libsanitizer +endif + +ifneq ($(with_qmath),yes) + CONFARGS += --disable-libquadmath --disable-libquadmath-support +endif + +ifeq ($(with_plugins),yes) + CONFARGS += --enable-plugin +endif + +#ifeq ($(with_gold),yes) +# CONFARGS += --enable-gold --enable-ld=default +#endif + +#CONFARGS += --with-plugin-ld=ld.gold +#CONFARGS += --with-plugin-ld + +# enable pie-by-default on pie_archs +ifeq ($(with_pie),yes) + CONFARGS += --enable-default-pie +endif + +endif # !DEB_STAGE + +CONFARGS += --with-system-zlib + +ifeq ($(with_phobos),yes) + CONFARGS += --enable-libphobos-checking=release + ifeq ($(DEB_CROSS),yes) + CONFARGS += --without-target-system-zlib + else + CONFARGS += --with-target-system-zlib=auto + endif +endif + +ifeq ($(with_d),yes) + ifneq (,$(filter $(DEB_TARGET_ARCH), $(druntime_only_archs))) + CONFARGS += --with-libphobos-druntime-only=yes + else ifneq ($(with_phobos),yes) + CONFARGS += --disable-libphobos + endif +endif + +ifeq ($(with_objc)-$(with_objc_gc),yes-yes) + CONFARGS += --enable-objc-gc=auto +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), i486-linux-gnu i586-linux-gnu i686-linux-gnu)) + ifeq ($(multilib),yes) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + endif + endif +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), x86_64-linux-gnu x86_64-linux-gnux32 x86_64-gnu s390x-linux-gnu sparc64-linux-gnu)) + ifneq ($(biarch32),yes) + CONFARGS += --disable-multilib + endif +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), powerpc-linux-gnu powerpc-linux-gnuspe)) + CONFARGS += --enable-secureplt + ifeq ($(biarch64),yes) + CONFARGS += --disable-softfloat --with-cpu=default32 + ifeq ($(multilib),yes) + CONFARGS += --disable-softfloat \ + --enable-targets=powerpc-linux,powerpc64-linux + endif + else + CONFARGS += --disable-multilib + endif +endif + +ifneq (,$(findstring powerpc64le-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --enable-secureplt + ifeq ($(derivative),Ubuntu) + ifneq (,$(filter $(distrelease), jessie trusty)) + CONFARGS += --with-cpu=power7 --with-tune=power8 + else ifneq (,$(filter $(distrelease), xenial bionic focal hirsute impish)) + CONFARGS += --with-cpu=power8 + else + CONFARGS += --with-cpu=power9 + endif + endif + CONFARGS += --enable-targets=powerpcle-linux + CONFARGS += --disable-multilib +endif + +ifneq (,$(findstring powerpc64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --enable-secureplt + ifeq ($(biarch32),yes) + ifeq ($(multilib),yes) + CONFARGS += --disable-softfloat --enable-targets=powerpc64-linux,powerpc-linux + endif + else + CONFARGS += --disable-multilib + endif + ifeq ($(derivative),Ubuntu) + CONFARGS += --with-cpu-32=power7 --with-cpu-64=power7 + endif +endif + +# FIXME: only needed for isl-0.13 for now +#CONFARGS += --disable-isl-version-check + +ifneq (,$(findstring cross-build-,$(build_type))) + # FIXME: requires isl headers for the target + #CONFARGS += --without-isl + # FIXME: build currently fails build the precompiled headers + CONFARGS += --disable-libstdcxx-pch +endif + +ifeq ($(with_multiarch_lib),yes) + CONFARGS += --enable-multiarch +endif + +ifneq (,$(findstring alpha,$(DEB_TARGET_GNU_CPU))) + CONFARGS += --with-cpu=ev56 +endif + +ifneq (,$(findstring aarch64,$(DEB_TARGET_GNU_CPU))) + # requires binutils 2.25.90 or newer + ifeq (,$(filter $(distrelease), precise trusty)) + CONFARGS += --enable-fix-cortex-a53-843419 + endif +endif + +ifneq (,$(findstring softfloat,$(DEB_TARGET_GNU_CPU))) + CONFARGS += --with-float=soft +endif + +ifneq (,$(findstring arc-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-multilib +endif + +ifneq (,$(findstring arm-vfp,$(DEB_TARGET_GNU_CPU))) + CONFARGS += --with-fpu=vfp +endif + +ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU))) + ifeq ($(multilib),yes) + CONFARGS += --enable-multilib + endif + CONFARGS += --disable-sjlj-exceptions + ifneq (,$(filter %armhf,$(DEB_TARGET_ARCH))) + ifeq ($(distribution),Raspbian) + with_arm_arch = armv6+fp + else + ifneq (,$(filter $(distrelease), jessie stretch buster bullseye xenial bionic focal hirsute)) + with_arm_fpu = vfpv3-d16 + with_arm_arch = armv7-a + else + with_arm_fpu = + with_arm_arch = armv7-a+fp + endif + endif + else + # armel + ifeq ($(derivative),Debian) + ifneq (,$(filter $(distrelease), jessie stretch)) + with_arm_arch = armv4t + else + with_arm_arch = armv5te + endif + else ifneq (,$(filter $(distrelease), precise)) + with_arm_arch = armv7-a+fp + else + with_arm_arch = armv5t # starting with quantal + CONFARGS += --with-specs='%{mfloat-abi=hard:-march=armv7-a___-mcpu=generic-armv7-a___-mfloat-abi=hard}' + endif + endif + CONFARGS += --with-arch=$(with_arm_arch) + ifneq (,$(with_arm_fpu)) + CONFARGS += --with-fpu=$(with_arm_fpu) + endif + CONFARGS += --with-float=$(float_abi) + ifeq ($(with_arm_thumb),yes) + CONFARGS += --with-mode=thumb + endif +endif + +ifeq ($(DEB_TARGET_GNU_CPU),$(findstring $(DEB_TARGET_GNU_CPU),m68k)) + CONFARGS += --disable-werror +endif +# FIXME: correct fix-warnings.dpatch +ifeq ($(derivative),Ubuntu) + CONFARGS += --disable-werror +else ifeq ($(derivative),Debian) + CONFARGS += --disable-werror +endif + +ifneq (,$(findstring loongarch64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-multilib +endif + +ifneq (,$(findstring sparc-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-cpu-32=ultrasparc + else + CONFARGS += --with-cpu=ultrasparc + endif +endif + +ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-cpu-32=ultrasparc + ifeq ($(biarch32),yes) + CONFARGS += --enable-targets=all + endif +endif + +ifneq (,$(findstring ia64-linux,$(DEB_TARGET_GNU_TYPE))) + ifneq ($(with_internal_libunwind),yes) + CONFARGS += --with-system-libunwind + endif +endif + +ifneq (,$(findstring sh4-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-cpu=sh4 --with-multilib-list=m4,m4-nofpu +endif + +ifneq (,$(findstring m68k-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-multilib +endif + +ifneq (,$(findstring riscv64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-multilib + CONFARGS += --with-abi=lp64d + ifeq ($(derivative),Ubuntu) + ifneq (,$(filter $(distrelease), focal jammy noble oracular plucky)) + CONFARGS += --with-arch=rv64gc + else + # Ubuntu 25.10 Questing Quokka is built for the RVA23 family of profiles. + # The 'RVA23 Profiles' specification is available in + # https://drive.google.com/file/d/12QKRm92cLcEk8-5J9NI91m0fAQOxqNAq/view + # + # Here we select the RVA23U64 profile and the zifencei extension. + # The zifencei extension is in RVA23S64 but fence.i is a U-mode + # instruction. + RV_EXT = i m a f d c b v zic64b \ + zicbom zicbop zicboz ziccamoa ziccif \ + zicclsm ziccrse zicntr zicond zicsr \ + zifencei zihintntl zihintpause zihpm zimop \ + zmmul za64rs zaamo zalrsc zawrs zfa \ + zfhmin zca zcb zcd zcmop zba zbb \ + zbs zkt zvbb zve32f zve32x zve64d \ + zve64f zve64x zvfhmin zvkb zvkt zvl128b \ + zvl32b zvl64b supm + CONFARGS += --with-arch=rv64$(subst $(SPACE),_,$(RV_EXT)) + endif + else # Debian + CONFARGS += --with-arch=rv64gc + endif +endif + +ifneq (,$(findstring s390x-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(derivative),Ubuntu) + ifneq (,$(filter $(distrelease),xenial bionic focal)) + CONFARGS += --with-arch=zEC12 + else ifneq (,$(filter $(distrelease),jammy kinetic)) + CONFARGS += --with-arch=z13 --with-tune=z15 + else ifneq (,$(filter $(distrelease),lunar mantic noble oracular plucky questing)) + CONFARGS += --with-arch=z13 --with-tune=z16 + else + CONFARGS += --with-arch=z15 --with-tune=z16 + endif + else # Debian + CONFARGS += --with-arch=z196 + endif + ifneq (,$(filter $(distrelease),stretch buster bullseye bookworm xenial bionic focal jammy lunar mantic)) + CONFARGS += --enable-s390-excess-float-precision + else + CONFARGS += --disable-s390-excess-float-precision + endif +endif + +ifeq ($(DEB_TARGET_ARCH_OS),linux) + ifneq (,$(findstring $(DEB_TARGET_ARCH), alpha powerpc ppc64 ppc64el s390 s390x sparc sparc64)) + CONFARGS += --with-long-double-128 + endif +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), ppc64el)) + ifneq (,$(filter $(distrelease), $(ppc64el_ibm128_distreleases))) + # default to IBM double + else + CONFARGS += --with-long-double-format=ieee + endif +endif + +ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 x32)) + ifneq (,$(filter $(distrelease),precise xenial bionic)) + CONFARGS += --disable-cet + else + CONFARGS += --enable-cet + endif + endif +else ifneq (,$(filter $(derivative),Debian)) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 x32)) + ifneq (,$(filter $(distrelease),jessie stretch buster bullseye)) + CONFARGS += --disable-cet + else + CONFARGS += --enable-cet + endif + endif +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386)) + ifneq (,$(filter $(derivative),Ubuntu)) + CONFARGS += --with-arch-32=i686 + else # Debian + ifneq (,$(filter $(distrelease), jessie)) + CONFARGS += --with-arch-32=i586 + else + CONFARGS += --with-arch-32=i686 + endif + endif +endif + +ifneq (,$(filter $(derivative),Ubuntu)) + ifeq ($(DEB_TARGET_ARCH),amd64) + # only passed in the environment by dpkg-buildpackage + ifeq ($(DEB_HOST_ARCH_VARIANT),amd64v3) + CONFARGS += --with-arch-64=x86-64-v3 + else ifeq ($(DEB_HOST_ARCH_VARIANT),amd64v4) + CONFARGS += --with-arch-64=x86-64-v4 + endif + endif +endif + +ifeq ($(DEB_TARGET_ARCH),amd64) + CONFARGS += --with-abi=m64 +endif +ifeq ($(DEB_TARGET_ARCH),x32) + CONFARGS += --with-abi=mx32 +endif +ifeq ($(multilib),yes) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386)) + CONFARGS += --with-multilib-list=m32,m64$(if $(filter yes,$(biarchx32)),$(COMMA)mx32) + else ifeq ($(DEB_TARGET_ARCH),x32) + CONFARGS += --with-multilib-list=mx32,m64,m32 + endif + CONFARGS += --enable-multilib +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-i386)) + CONFARGS += --with-arch=i686 +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-amd64)) + CONFARGS += --disable-multilib +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 hurd-amd64 hurd-i386)) + CONFARGS += --with-tune=generic +endif + +ifneq (,$(findstring mips-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + CONFARGS += --with-lxc1-sxc1=no + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + endif + endif +endif + +ifneq (,$(findstring mipsel-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + CONFARGS += --with-madd4=no + CONFARGS += --with-lxc1-sxc1=no + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + endif + endif +endif + +#FIXME: howto for mipsn32? +ifneq (,$(findstring mips64el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-madd4=no + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mips64-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mips64el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r2 + CONFARGS += --with-madd4=no + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mips64-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r2 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mipsisa32r6-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa32r6el-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + endif + endif +endif + +#FIXME: howto for mipsn32? +ifneq (,$(findstring mipsisa64r6el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa64r6-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa64r6el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa64r6-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE))) + ifeq (,$(filter yes,$(biarch32) $(biarchn32) $(biarch64))) + CONFARGS += --disable-multilib + endif +endif + +ifneq (,$(findstring s390-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(multilib),yes) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + endif + endif +endif + +ifneq (,$(findstring hppa-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-libstdcxx-pch +endif + +ifneq (,$(offload_targets)) + ifneq (,$(filter nvptx-none, $(offload_targets))) + offload_opt = nvptx-none=$(CURDIR)/$(d)-nvptx/$(PF) + endif + ifneq (,$(filter $(gcn_target_name), $(offload_targets))) + offload_opt += $(gcn_target_name)=$(CURDIR)/$(d)-gcn/$(PF) + endif + CONFARGS += \ + --enable-offload-targets=$(subst $(SPACE),$(COMMA),$(strip $(offload_opt))) \ + --enable-offload-defaulted + ifeq ($(with_offload_nvptx),yes) + CONFARGS += --without-cuda-driver + endif +endif + +ifeq ($(trunk_build),yes) + ifeq ($(findstring --disable-werror, $(CONFARGS)),) + CONFARGS += --disable-werror + endif + enable_checking = yes + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 mips64el ppc64 ppc64el s390x)) + enable_checking = yes,extra,rtl + endif +else + enable_checking = yes + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 mips64el ppc64 ppc64el s390x)) + enable_checking = yes,extra,rtl + endif + enable_checking = release +endif +CONFARGS += --enable-checking=$(enable_checking) + +ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + CONFARGS += $(BINUTILS_GCCCONF) +endif + +CONFARGS += \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --target=$(TARGET_ALIAS) + +ifeq ($(DEB_CROSS),yes) + CONFARGS += \ + --program-prefix=$(TARGET_ALIAS)- \ + --includedir=/$(PFL)/include +endif + +ifeq ($(with_bootstrap),off) + bootstrap_target = +else ifeq ($(with_bootstrap),profiled) + bootstrap_target = profiledbootstrap + bootstrap_target = profiledbootstrap-lean +else ifeq ($(with_bootstrap),) + ifneq (, $(filter $(PKGSOURCE),gcc-$(BASE_VERSION) gcc-snapshot)) + bootstrap_target = bootstrap + endif + ifneq (,$(DEB_STAGE)) + bootstrap_target = bootstrap + endif +endif + +ifeq ($(with_lto_build),yes) + CONFARGS += \ + --with-build-config=bootstrap-lto-lean \ + --enable-link-serialization=$(CPUS_LTOLINK) +endif + +# this is the default, set in /usr/share/dejagnu/remote.exp +# by a local dejagnu patch. +DEJAGNU_TIMEOUT=300 +# Increase the timeout for one testrun on slow architectures +ifeq ($(derivative),Debian) + ifneq (,$(findstring $(DEB_TARGET_ARCH),armel armhf arm64)) + DEJAGNU_TIMEOUT=300 + else ifneq (,$(findstring $(DEB_TARGET_ARCH),hppa m68k riscv64 sparc)) + DEJAGNU_TIMEOUT=600 + else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),x86_64 i386 i486 i586 i686)) + DEJAGNU_TIMEOUT=180 + endif + ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu) + DEJAGNU_TIMEOUT=900 + endif +else ifeq ($(derivative),Ubuntu) + ifneq (,$(findstring $(DEB_TARGET_ARCH), armel armhf arm64)) + DEJAGNU_TIMEOUT=300 + else ifneq (,$(findstring $(DEB_TARGET_ARCH), riscv64)) + DEJAGNU_TIMEOUT=600 + else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),x86_64 i386 i486 i586 i686 power)) + DEJAGNU_TIMEOUT=180 + endif +endif + +DEJAGNU_RUNS = +ifneq ($(trunk_build),yes) +ifeq ($(with_ssp),yes) + # the buildds are just slow ... don't check the non-default + ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),hppa m68k mips sh4)) + DEJAGNU_RUNS = + else ifneq (,$(filter $(DEB_TARGET_ARCH),armel)) + DEJAGNU_RUNS = + else ifneq ($(single_package),yes) + DEJAGNU_RUNS += $(if $(filter yes,$(with_ssp_default)),-fno-stack-protector,-fstack-protector) + endif +endif +endif + +ifeq ($(derivative),Ubuntu) + ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU))) + ifeq ($(with_arm_thumb),yes) + #DEJAGNU_RUNS += -marm + else + DEJAGNU_RUNS += -mthumb + endif + endif +endif + +# no b-d on g++-multilib, this is run by the built compiler +abi_run_check = $(strip $(if $(wildcard build/runcheck$(1).out), \ + $(shell cat build/runcheck$(1).out), \ + $(shell CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -static-libgcc $(1)" bash debian/runcheck.sh))) +ifeq ($(biarch32),yes) + DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips64 mips64el mipsn32 mipsn32el),-mabi=32,-m32)) +endif +ifeq ($(biarch64),yes) + DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips mipsel),-mabi=64,-m64)) +endif +ifeq ($(biarchn32),yes) + DEJAGNU_RUNS += $(call abi_run_check,-mabi=n32) +endif +ifeq ($(biarchx32),yes) + DEJAGNU_RUNS += $(call abi_run_check,-mx32) +endif + +ifneq (,$(strip $(DEJAGNU_RUNS))) + RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix\{,$(subst $(SPACE),$(COMMA),$(strip $(DEJAGNU_RUNS)))\}" +else + RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix" +endif + +# used in the libgo testsuite, not using dejagnu +export CHECK_MULTISUBDIRS = \ + $(if $(filter -m32 -mabi=32, $(DEJAGNU_RUNS)), /32) \ + $(if $(filter -m64 -mabi=64, $(DEJAGNU_RUNS)), /64) \ + $(if $(filter -mabi=n32, $(DEJAGNU_RUNS)), /n32) \ + $(if $(filter -mx32, $(DEJAGNU_RUNS)), /x32) + +# PF is the installation prefix for the package without the leading slash. +# It's "usr" for gcc releases. +ifneq (,$(PF)) + # use value set in the environment +else ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + PF = usr/lib/gcc-snapshot +else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + PF = usr/lib/gcc-toolchain-$(BASE_VERSION) +else + PF = usr +endif + +# PFL is the installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds +PFL = $(PF) +# RPF is the base prefix or installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds +# DEP17: move to /usr in trixie and noble +ifneq (,$(filter $(distrelease),jessie stretch buster bullseye bookworm precise trusty xenial bionic focal groovy hirsute impish jammy kinetic lunar mantic)) + RPF = +else + RPF = $(PF) +endif + +ifeq ($(DEB_CROSS),yes) +ifneq ($(DEB_STAGE),rtlibs) + PFL = $(PF)/$(DEB_TARGET_GNU_TYPE) + RPF = $(PF)/$(DEB_TARGET_GNU_TYPE) +endif +endif + +ifeq ($(with_multiarch_lib),yes) + ifeq ($(DEB_CROSS),yes) + libdir = lib + else + libdir = lib/$(DEB_TARGET_MULTIARCH) + endif +else + libdir = lib +endif +configured_libdir = lib + +hppa64libexecdir= $(PF)/libexec + +# /usr/libexec doesn't follow the FHS +ifeq ($(single_package),yes) + libdir = lib + libexecdir = $(PF)/libexec + versiondir = $(BASE_VERSION) +else + libexecdir = $(PF)/$(configured_libdir) + libexecdir = $(PF)/libexec + versiondir = $(BASE_VERSION) +endif +buildlibdir = $(builddir)/$(TARGET_ALIAS) + +# install cross compilers in /usr/lib/gcc-cross, native ones in /usr/lib/gcc +gcc_subdir_name = gcc +ifneq ($(single_package),yes) + ifeq ($(DEB_CROSS),yes) + gcc_subdir_name = gcc-cross + endif +endif + +gcc_lib_dir = $(PF)/$(configured_libdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir) +gcc_lexec_dir = $(libexecdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir) + +lib32loc = lib32 +ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE))) +lib32loc = libo32 +endif +lib32 = $(PF)/$(lib32loc) +lib64 = lib64 +libn32 = lib32 +libx32 = libx32 + +p_l= $(1)$(cross_lib_arch) +p_d= $(1)-dbg$(cross_lib_arch) +d_l= debian/$(p_l) +d_d= debian/$(p_d) + +ifeq ($(DEB_CROSS),yes) + usr_lib = $(PFL)/lib +else + usr_lib = $(PFL)/$(libdir) +endif +usr_lib32 = $(PFL)/$(lib32loc) +usr_libn32 = $(PFL)/lib32 +usr_libx32 = $(PFL)/libx32 +usr_lib64 = $(PFL)/lib64 + +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + libdir = lib/$(DEB_TARGET_MULTIARCH) + usr_lib = $(PF)/lib/$(DEB_TARGET_MULTIARCH) +endif + +gcc_lib_dir32 = $(gcc_lib_dir)/$(biarch32subdir) +gcc_lib_dirn32 = $(gcc_lib_dir)/$(biarchn32subdir) +gcc_lib_dirx32 = $(gcc_lib_dir)/$(biarchx32subdir) +gcc_lib_dir64 = $(gcc_lib_dir)/$(biarch64subdir) + +libgcc_dir = $(RPF)/$(libdir) +# yes, really; lib32gcc_s ends up in usr +libgcc_dir32 = $(PFL)/$(lib32loc) +libgcc_dirn32 = $(RPF)/lib32 +# libx32gcc_s also ends up in usr +libgcc_dirx32 = $(PFL)/libx32 +libgcc_dir64 = $(RPF)/lib64 + +# install_gcc_lib(lib,soname,flavour,package) +define install_gcc_lib + mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/ + rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so +endef + +# do_strip_lib_dbg(pkg,pkg_dbg,version,excludes) +define do_strip_lib_dbg + dh_strip -p$(strip $(1)) $(4) \ + $(if $(with_dbg),--dbg-package=$(strip $(2)),--dbgsym-migration='$(strip $(2)) (<< $(strip $(3)))') +endef + +checkdirs = $(builddir) + +# FIXME: MULTIARCH_DIRNAME needed for g++-multiarch-incdir.diff +MULTIARCH_DIRNAME := $(DEB_TARGET_MULTIARCH) +export MULTIARCH_DIRNAME + +default: build + +configure: $(configure_dependencies) + +$(configure_dummy_stamp): + touch $(configure_dummy_stamp) + +$(configure_stamp): + dh_testdir + : # give information about the build process + @echo "------------------------ Build process variables ------------------------" + @echo "Disk space on this machine:" + @-df -h . /tmp/. + @echo "Memory on this machine:" + @egrep '^(Mem|Swap)' /proc/meminfo || true + @echo "Number of parallel processes used for the build: $(USE_CPUS)" + @echo "DEB_BUILD_OPTIONS: $$DEB_BUILD_OPTIONS" + @echo "Package source: $(PKGSOURCE)" + @echo "GCC version: $(GCC_VERSION)" + @echo "Base Debian version: $(BASE_VERSION)" + @echo 'Package Metadata: $(ELF_PACKAGE_METADATA)' + @echo -e "Configured with: $(subst ___, ,$(foreach i,$(CONFARGS),$(i)\n\t))" +ifeq ($(DEB_CROSS),yes) + @echo "Building cross compiler for $(DEB_TARGET_ARCH)" +endif + @echo "Using shell $(SHELL)" + @echo "Architecture: $(DEB_TARGET_ARCH) (GNU: $(TARGET_ALIAS))" + @echo "Compilers: $(CC) / $(CXX) / $(GDC) / $(GNAT)" + @echo "CPPFLAGS: $(CPPFLAGS)" + @echo "CFLAGS: $(CFLAGS)" + @echo "LDFLAGS: $(LDFLAGS)" + @echo "FCFLAGS: $(FCFLAGS)" + @echo "STAGE1_CFLAGS: $(STAGE1_CFLAGS)" + @echo "BOOT_CFLAGS: $(BOOT_CFLAGS)" + @echo "BOOT_LDFLAGS: $(BOOT_LDFLAGS)" + @echo "DEBIAN_BUILDARCH: $(DEBIAN_BUILDARCH)" + @echo "Install prefix: /$(PF)" +ifeq ($(biarchn32)-$(biarch64),yes-yes) + @echo "Will build the triarch compilers (o32/n32/64, defaulting to o32)" +else ifeq ($(biarchn32)-$(biarch32),yes-yes) + @echo "Will build the triarch compilers (o32/n32/64, defaulting to 64)" +else ifeq ($(biarch64)-$(biarch32),yes-yes) + @echo "Will build the triarch compilers (x32/64/32, defaulting to x32)" +else ifeq ($(biarch64)-$(biarchx32),yes-yes) + @echo "Will build the triarch compilers (32/64/x32, defaulting to 32bit)" +else ifeq ($(biarch32)-$(biarchx32),yes-yes) + @echo "Will build the triarch compilers (64/32/x32, defaulting to 64bit)" +else + ifeq ($(biarch64),yes) + @echo "Will build the biarch compilers (32/64, defaulting to 32bit)" + else + ifeq ($(biarch32),yes) + @echo "Will build the biarch compilers (64/32, defaulting to 64bit)" + else + @echo "Will not build the biarch compilers" + endif + endif +endif + +ifeq ($(with_cxx),yes) + @echo "Will build the C++ compiler" +else + @echo "Will not build the C++ compiler: $(with_cxx)" +endif +ifeq ($(with_objc),yes) + @echo "Will build the ObjC compiler." + ifeq ($(with_objc_gc),yes) + @echo "Will build the extra ObjC runtime for garbage collection." + else + @echo "Will not build the extra ObjC runtime for garbage collection." + endif +else + @echo "Will not build the ObjC compiler: $(with_objc)" +endif +ifeq ($(with_objcxx),yes) + @echo "Will build the Obj-C++ compiler" +else + @echo "Will not build the Obj-C++ compiler: $(with_objcxx)" +endif +ifeq ($(with_fortran),yes) + @echo "Will build the Fortran 95 compiler." +else + @echo "Will not build the Fortran 95 compiler: $(with_fortran)" +endif +ifeq ($(with_ada),yes) + @echo "Will build the Ada compiler." + ifeq ($(with_libgnat),yes) + @echo "Will build the shared Ada libraries." + else + @echo "Will not build the shared Ada libraries." + endif +else + @echo "Will not build the Ada compiler: $(with_ada)" +endif +ifeq ($(with_go),yes) + @echo "Will build the Go compiler." +else + @echo "Will not build the Go compiler: $(with_go)" +endif +ifeq ($(with_d),yes) + @echo "Will build the D compiler" + ifeq ($(with_phobos),yes) + @echo "Will build the phobos D runtime library." + else + @echo "Will not build the phobos D runtime library: $(with_phobos)" + endif +else + @echo "Will not build the D compiler: $(with_d)" +endif +ifeq ($(with_m2),yes) + @echo "Will build the Modula-2 compiler." +else + @echo "Will not build the Modula-2 compiler: $(with_m2)" +endif +ifeq ($(with_rs),yes) + @echo "Will build the Rust compiler." +else + @echo "Will not build the Rust compiler: $(with_rs)" +endif +ifeq ($(with_cobol),yes) + @echo "Will build the COBOL compiler." +else + @echo "Will not build the COBOL compiler: $(with_cobol)" +endif +ifeq ($(with_algol),yes) + @echo "Will build the Algol 68 compiler." +else + @echo "Will not build the Algol 68 compiler: $(with_algol)" +endif +ifneq (,$(offload_targets)) + @echo "Will build with offload compilers: $(offload_targets)." +else + @echo "Will build without offload compilers: $(with_offload_nvptx) / $(with_offload_gcn)" +endif +ifeq ($(with_ssp),yes) + @echo "Will build with SSP support." +else + @echo "Will build without SSP support: $(with_ssp)" +endif +ifeq ($(with_check),yes) + @echo "Will run the testsuite." +else + @echo "Will not run the testsuite: $(with_check)" +endif +ifeq ($(with_nls),yes) + @echo "Will enable national language support." +else + @echo "Will disable national language support: $(with_nls)" +endif + @echo "-----------------------------------------------------------------------------" + @echo "" +ifeq ($(with_check),yes) + @if echo "spawn true" | /usr/bin/expect -f - >/dev/null; then \ + : ; \ + else \ + echo "expect is failing on your system with the above error, which means the GCC"; \ + echo "testsuite will fail. Please resolve the above issues and retry the build."; \ + echo "-----------------------------------------------------------------------------"; \ + exit 1; \ + fi +endif + rm -f $(configure_stamp) $(build_stamp) + cat debian/README.Debian $(patch_stamp) > debian/README.Debian.$(DEB_TARGET_ARCH) + + rm -rf $(builddir) + mkdir $(builddir) + +ifneq (,$(filter musl-%,$(DEB_TARGET_ARCH))) + # We have to unconditionally link -lssp_nonshared on musl (see + # musl-ssp.diff). While gcc provides it, it comes a little late in the + # build for bootstrapping so we provide an empty one. + mkdir $(builddir)/gcc + ar rcs $(builddir)/gcc/libssp_nonshared.a +endif + + : # some tools like gettext are built with a newer libstdc++ + mkdir -p bin + for i in msgfmt; do \ + install -m755 debian/bin-wrapper.in bin/$$i; \ + done + + : # configure + if cd $(builddir) \ + && $(SET_PATH) \ + $(call pass_vars, CC CXX GDC GNATBIND GNATMAKE $(flags_to_pass) \ + CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \ + CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + $(SET_SHELL) $(SET_TARGET_TOOLS) \ + $(BINUTILS_GCCENV) \ + ../src/configure $(subst ___, ,$(CONFARGS)); \ + then \ + : ; \ + else \ + s=$$?; \ + cat $(builddir)/config.log; \ + exit $$s; \ + fi + + : # multilib builds without b-d on gcc-multilib (used in FLAGS_FOR_TARGET) + if [ -d /usr/include/$(DEB_TARGET_MULTIARCH)/asm ]; then \ + mkdir -p $(builddir)/sys-include; \ + ln -sf /usr/include/$(DEB_TARGET_MULTIARCH)/asm $(builddir)/sys-include/asm; \ + fi + : # Fall back to the host crypt.h when target is unavailable as the + : #sizeof(struct crypt_data) is unlikely to change, needed by libsanitizer. + if [ ! -f /usr/include/crypt.h ] && \ + [ ! -f /usr/include/$(DEB_TARGET_MULTIARCH)/crypt.h ] && \ + [ -f /usr/include/$(DEB_HOST_MULTIARCH)/crypt.h ]; then \ + mkdir -p $(builddir)/sys-include; \ + ln -sf /usr/include/$(DEB_HOST_MULTIARCH)/crypt.h \ + $(builddir)/sys-include/crypt.h; \ + fi + + touch $(configure_stamp) + +build: $(sort $(build_arch_dependencies) $(build_indep_dependencies)) +build-arch: $(build_arch_dependencies) +build-indep: $(build_indep_dependencies) + +$(build_dummy_stamp): + touch $(build_dummy_stamp) + +$(build_locale_stamp): +ifeq ($(locale_data)-$(with_cxx),generate-yes) + : # build locales needed by libstdc++ testsuite + rm -rf locales + mkdir locales + -USE_CPUS=$(USE_CPUS) sh debian/locale-gen +endif + touch $(build_locale_stamp) + +MAX_BUILD_TRIES = 1 +ifeq ($(distribution)-$(DEB_HOST_ARCH),Ubuntu-armhf) + MAX_BUILD_TRIES = 3 +endif + +$(build_stamp): $(configure_stamp) $(build_locale_stamp) + @echo === START $@ === + dh_testdir + rm -f bootstrap-protocol* + @echo TTTTT $$(date -R) +ifeq ($(build_type),build-native) + : # build native compiler + set +e; \ + set -o pipefail; \ + try=0; \ + while [ $$try -lt $(MAX_BUILD_TRIES) ]; do \ + try=$$(expr $$try + 1); \ + echo "=========== BUILD ($$try) =========="; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(BINUTILS_GCCENV) \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir) $(bootstrap_target) \ + $(call pass_vars, CC $(flags_to_pass) \ + STAGE1_CFLAGS STAGE1_LDFLAGS \ + BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \ + CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + 2>&1 | tee bootstrap-protocol$$try \ + ; \ + status=$$?; \ + echo $$status > status; \ + echo === TIME $@ ===; \ + [ $$status -eq 0 ] && exit $$status; \ + done; \ + exit 0 +else ifneq (,$(filter $(build_type),build-cross cross-build-native cross-build-cross)) + : # build cross compiler for $(TARGET_ALIAS) + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_LOCPATH) \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET FCFLAGS) \ + ; \ + echo $$? > status; \ + echo === TIME $@ ===; \ + ) 2>&1 | tee bootstrap-protocol +endif + @echo TTTTT $$(date -R) + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + + for h in $$(find $(builddir) -name omp.h); do \ + echo "=================== OMP_H HEADER $$h ====================== "; \ + cat $$h; \ + done + + if [ -f $(srcdir)/contrib/warn_summary ]; then \ + rm -f bootstrap-summary; \ + /bin/sh $(srcdir)/contrib/warn_summary $$(ls bootstrap-protocol* | head -1) \ + > bootstrap-summary; \ + fi + + touch $(build_stamp) + @echo === END $@ === + +ifneq ($(build_type),build-native) + BUILT_CC = $(CC) + BUILT_CXX = $(CXX) +else + BUILT_CC = $(builddir)/gcc/xgcc -B$(builddir)/gcc/ + BUILT_CXX = $(builddir)/gcc/xg++ -B$(builddir)/gcc/ \ + -B$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \ + -B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \ + -B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs \ + -I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include \ + -I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include/$(TARGET_ALIAS) \ + -I$(srcdir)/libstdc++-v3/libsupc++ \ + -L$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \ + -L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \ + -L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs +endif + +CONFARGS_JIT := \ + $(filter-out --enable-languages=% \ + --enable-libstdcxx-debug %bootstrap,\ + $(CONFARGS)) \ + --enable-languages=c++,jit \ + $(if $(filter yes, $(with_versioned_libgccjit)),--enable-versioned-jit) \ + --enable-host-shared \ + --disable-bootstrap + +# this needs --enable-host-shared, build it in the jit compiler +CONFARGS_JIT += --enable-libgdiagnostics + +# are other libs also safe to disable? +CONFARGS_JIT += \ + --disable-libada \ + --disable-libga68 \ + --disable-libgcobol \ + --disable-libgfortran \ + --disable-libgm2 \ + --disable-libgo \ + --disable-libphobos \ + --disable-libquadmath \ + +$(configure_jit_stamp): $(build_stamp) + @echo === START $@ === + dh_testdir + rm -f $(configure_jit_stamp) $(build_jit_stamp) + rm -rf $(builddir_jit) + mkdir $(builddir_jit) + + : # configure jit + cd $(builddir_jit) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + $(BINUTILS_GCCENV) \ + ../src/configure $(subst ___, ,$(CONFARGS_JIT)) + touch $(configure_jit_stamp) + +$(build_jit_stamp): $(configure_jit_stamp) + @echo === START $@ === + dh_testdir + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(BINUTILS_GCCENV) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ + biarch_multidir_names=none \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir_jit) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + echo === TIME $@ ===; \ + ) 2>&1 | tee jit-protocol + + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir_jit) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + +ifeq ($(with_check),yes) + # FIXME: #782444 + -DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \ + $(MAKE) -C $(builddir_jit)/gcc check-jit \ + RUNTESTFLAGS="-v -v" + mkdir -p $(builddir)/gcc/testsuite/jit + cp -p $(builddir_jit)/gcc/testsuite/jit/jit.{log,sum} \ + $(builddir)/gcc/testsuite/jit/. +endif + + : # do the install in the build target, to save disk space + rm -rf $(d)-jit + mkdir -p $(d)-jit/$(PF) + + $(SET_PATH) \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_jit) \ + CC="$(CC_FOR_TARGET)" \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d)-jit \ + install + + find $(d)-jit ! -type d + + mkdir -p $(d)-jit/$(usr_lib) +ifneq ($(single_package),yes) + mkdir -p $(d)-jit/$(gcc_lib_dir)/include + mv $(d)-jit/$(PF)/include/libgccjit*.h \ + $(d)-jit/$(gcc_lib_dir)/include/. + mv $(d)-jit/$(PF)/include/libgdiagnostics*.h \ + $(d)-jit/$(gcc_lib_dir)/include/. +endif +ifneq ($(PF)/lib,$(usr_lib)) + mv $(d)-jit/$(PF)/lib/libgccjit.so* \ + $(d)-jit/$(usr_lib)/. + mv $(d)-jit/$(PF)/lib/libgdiagnostics.so* \ + $(d)-jit/$(usr_lib)/. +endif +ifeq ($(single_package),yes) + cd $(d)-jit && tar cvfJ ../../installed-jit.tar.xz \ + $(PF)/include/libgccjit*.h \ + $(usr_lib)/libgccjit.so* \ + $(PF)/share/info/libgccjit* \ + $(PF)/include/libgdiagnostics*.h \ + $(usr_lib)/libgdiagnostics.so* \ + $(PF)/bin/$(cmd_prefix)sarif-replay* +else + cd $(d)-jit && tar cvfJ ../../installed-jit.tar.xz \ + $(gcc_lib_dir)/include/libgccjit*.h \ + $(usr_lib)/libgccjit.so* \ + $(PF)/share/info/libgccjit* \ + $(gcc_lib_dir)/include/libgdiagnostics*.h \ + $(usr_lib)/libgdiagnostics.so* \ + $(PF)/bin/$(cmd_prefix)sarif-replay* +endif + if which help2man >/dev/null 2>&1; then \ + LD_LIBRARY_PATH=$(CURDIR)/$(d)-jit/$(usr_lib)${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \ + help2man --no-discard-stderr --help-option=--usage --no-info \ + $(d)-jit/$(PF)/bin/$(cmd_prefix)sarif-replay* \ + $(if $(cmd_prefix),| sed -e "s/$(cmd_prefix)//g" -e "s/$$(echo $(cmd_prefix) | tr 'a-z' 'A-Z')//g") \ + > debian/sarif-replay.1; \ + fi + rm -rf $(d)-jit + +ifeq ($(save_disk_space),yes) + rm -rf $(builddir_jit) +endif + + touch $(build_jit_stamp) + @echo === END $@ === + +CONFARGS_NVPTX := \ + --prefix=/$(PF) \ + --libexecdir=/$(libexecdir) \ + --with-gcc-major-version-only \ + --disable-bootstrap \ + --disable-sjlj-exceptions \ + --enable-newlib-io-long-long \ + --target=nvptx-none \ + --enable-as-accelerator-for=$(DEB_TARGET_GNU_TYPE) \ + --enable-languages=c,c++,fortran,lto \ + --enable-checking=release \ + --with-system-zlib \ + --without-isl \ + --disable-libga68 + +# --with-build-time-tools=/$(PF)/nvptx-none/bin + +CONFARGS_NVPTX += --program-prefix=nvptx-none- +ifeq ($(versioned_packages),yes) + CONFARGS_NVPTX += --program-suffix=-$(BASE_VERSION) +endif + +# FIXME: must not be run in parallel with jit and hppa64 builds ... +$(configure_nvptx_stamp): $(build_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) + @echo === START $@ === + dh_testdir + rm -f $(configure_nvptx_stamp) $(build_nvptx_stamp) + rm -rf src-nvptx $(builddir_nvptx) + cp -al src src-nvptx + rm -rf src-nvptx/newlib + cp -a $(newlib_srcdir)/newlib src-nvptx/newlib + mkdir $(builddir_nvptx) + + : # configure nvptx offload + cd $(builddir_nvptx) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + ../src-nvptx/configure $(subst ___, ,$(CONFARGS_NVPTX)) + touch $(configure_nvptx_stamp) + +$(build_nvptx_stamp): $(configure_nvptx_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) + @echo === START $@ === + ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ + biarch_multidir_names=none \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir_nvptx) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + echo === TIME $@ ===; \ + ) 2>&1 | tee nvptx-protocol + + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir_nvptx) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + + rm -f $(srcdir)/newlib + touch $(build_nvptx_stamp) + @echo === END $@ === + +CONFARGS_GCN := \ + --prefix=/$(PF) \ + --libexecdir=/$(libexecdir) \ + --with-gcc-major-version-only \ + --disable-bootstrap \ + --disable-sjlj-exceptions \ + --enable-newlib-io-long-long \ + --target=$(gcn_target_name) \ + --enable-as-accelerator-for=$(DEB_TARGET_GNU_TYPE) \ + --enable-languages=c,c++,fortran,lto \ + --enable-checking=release \ + --disable-libstdcxx-pch \ + --disable-libquadmath-support \ + --disable-libga68 \ + --with-system-zlib \ + --without-isl \ + --without-gnu-as \ + --without-gnu-ld \ + --with-build-time-tools=$(CURDIR)/bin-gcn + +# --without-headers \ + +CONFARGS_GCN += --program-prefix=$(gcn_target_name)- +ifeq ($(versioned_packages),yes) + CONFARGS_GCN += --program-suffix=-$(BASE_VERSION) +endif + +# FIXME: must not be run in parallel with jit and hppa64 builds ... +$(configure_gcn_stamp): $(build_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) \ + $(if $(filter yes, $(with_offload_nvptx)), $(build_nvptx_stamp)) + @echo === START $@ === + dh_testdir + + rm -rf bin-gcn +ifeq ($(gcn_tools_llvm_version),tools) + ln -s /usr/$(gcn_target_name)/bin bin-gcn +else + mkdir bin-gcn + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar bin-gcn/ar + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc bin-gcn/as + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld bin-gcn/ld + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm bin-gcn/nm + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib bin-gcn/ranlib +endif + ls -l / + ls -l /usr + -ls -l usr/$(gcn_target_name) + -ls -l usr/$(gcn_target_name)/bin + ls -l bin-gcn + ls -lL bin-gcn + bin-gcn/as --version + bin-gcn/ld --version + + rm -f $(configure_gcn_stamp) $(build_gcn_stamp) + rm -rf src-gcn $(builddir_gcn) + cp -al src src-gcn + rm -rf src-gcn/newlib + cp -a $(newlib_srcdir)/newlib src-gcn/newlib + mkdir $(builddir_gcn) + + : # configure gcn offload + cd $(builddir_gcn) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + ../src-gcn/configure $(subst ___, ,$(CONFARGS_GCN)) + touch $(configure_gcn_stamp) + +$(build_gcn_stamp): $(configure_gcn_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) \ + $(if $(filter yes, $(with_offload_nvptx)), $(build_nvptx_stamp)) + @echo === START $@ === + ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ + biarch_multidir_names=none \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir_gcn) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + echo === TIME $@ ===; \ + ) 2>&1 | tee amdgcn-protocol + + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir_gcn) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + + rm -f $(srcdir)/newlib + touch $(build_gcn_stamp) + @echo === END $@ === + +ifeq ($(versioned_packages),yes) + hppa64_configure_flags += --program-suffix=-$(BASE_VERSION) +endif + +$(configure_hppa64_stamp): $(build_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) + @echo === START $@ === + dh_testdir + rm -f $(configure_hppa64_stamp) $(build_hppa64_stamp) + rm -rf $(builddir_hppa64) + mkdir $(builddir_hppa64) + : # configure hppa64 + cd $(builddir_hppa64) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + $(call pass_vars, $(flags_to_pass)) \ + ../src/configure \ + --enable-languages=c \ + --prefix=/$(PF) \ + --libexecdir=/$(hppa64libexecdir) \ + --with-gcc-major-version-only \ + --disable-shared \ + --disable-nls \ + --disable-threads \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libitm \ + --disable-libssp \ + --disable-libquadmath \ + --disable-libga68 \ + --enable-plugin \ + --with-system-zlib \ + --with-as=/usr/bin/hppa64-linux-gnu-as \ + --with-ld=/usr/bin/hppa64-linux-gnu-ld \ + --includedir=/usr/hppa64-linux-gnu/include \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --target=hppa64-linux-gnu + touch $(configure_hppa64_stamp) + +$(build_hppa64_stamp): $(configure_hppa64_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) + @echo === START $@ === + if [ -f $(srcdir)/gcc/distro-defaults.h ]; then \ + if [ ! -f $(srcdir)/gcc/distro-defaults.h.saved ]; then \ + mv $(srcdir)/gcc/distro-defaults.h $(srcdir)/gcc/distro-defaults.h.saved; \ + fi; \ + echo '/* Empty distro-defaults for hppa64 cross build */' \ + > $(srcdir)/gcc/distro-defaults.h; \ + fi + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir_hppa64) \ + $(call pass_vars, \ + CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) + if [ -f $(srcdir)/gcc/distro-defaults.h.saved ]; then \ + mv -f $(srcdir)/gcc/distro-defaults.h.saved $(srcdir)/gcc/distro-defaults.h; \ + fi + + : # do the install in the build target, to save disk space + rm -rf $(d_hppa64) + mkdir -p $(d_hppa64)/$(PF) + + $(SET_PATH) \ + $(MAKE) -C $(builddir_hppa64) \ + $(call pass_vars, CC $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d_hppa64) \ + install + + : # remove files not needed + rm -rf $(d_hppa64)/$(PF)/info $(d_hppa64)/$(PF)/share/info + rm -rf $(d_hppa64)/$(PF)/man $(d_hppa64)/$(PF)/share/man + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/plugin + rm -f $(d_hppa64)/$(PF)/lib/libiberty.a + rm -f $(d_hppa64)/$(PF)/lib/libcc1.* + rm -f $(d_hppa64)/$(PF)/bin/*{gcov,gcov-dump,gcov-tool,gccbug,gcc,lto-dump} + + rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/install-tools + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/g++-mapper-server + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/include-fixed + +ifeq ($(versioned_packages),yes) + for i in cpp gcc-ar gcc-nm gcc-ranlib; do \ + mv -f $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i \ + $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i$(pkg_ver); \ + done +endif + mkdir -p $(d_hppa64)/$(PF)/share/man/man1 + for i in gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $$i$(pkg_ver).1.gz \ + $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ + done +ifneq ($(GFDL_INVARIANT_FREE),yes) + for i in cpp gcc; do \ + ln -sf $$i$(pkg_ver).1.gz \ + $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ + done +endif + + : # remove '*.la' and '*.lai' files, not shipped in any package. + find $(d_hppa64) -name '*.la' -o -name '*.lai' | xargs -r rm -f + + : # remove rpath settings from binaries and shared libs + for i in $$(chrpath -k $(d_hppa64)/$(PF)/bin/* $(d_hppa64)/$(PFL)/lib*/lib*.so.* \ + $(d_hppa64)/$(gcc_lib_dir)/plugin/* \ + $(if $(filter $(with_multiarch_lib),yes), \ + $(d_hppa64)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \ + 2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \ + do \ + [ -h $$i ] && continue; \ + chrpath --delete $$i; \ + echo "removed RPATH/RUNPATH: $$i"; \ + done + + : # fix permissions of liblto_plugin.so + chmod 644 $(d_hppa64)/$(PF)/libexec/gcc/hppa64-linux-gnu/$(BASE_VERSION)/liblto_plugin.so + + cd $(d_hppa64) && tar cvfJ ../../installed-hppa64.tar.xz usr + rm -rf $(d_hppa64) + +ifeq ($(save_disk_space),yes) + rm -rf $(builddir_hppa64) +endif + touch $(build_hppa64_stamp) + @echo === END $@ === + +ifeq ($(with_ada),yes) + MANUALS = \ + $(srcdir)/gcc/ada/gnat_ugn.texi \ + $(srcdir)/gcc/ada/gnat_rm.texi +endif +MANUALS += \ + $(srcdir)/gcc/doc/gccint.texi \ + $(srcdir)/gcc/doc/gcc.texi \ + $(srcdir)/gcc/doc/cpp.texi \ + $(srcdir)/gcc/doc/cppinternals.texi +ifeq ($(with_fortran),yes) + MANUALS += $(srcdir)/gcc/fortran/gfortran.texi +endif +ifeq ($(with_ada),yes) + MANUALS += $(srcdir)/gcc/ada/gnat-style.texi +endif +ifeq ($(with_gomp),yes) + MANUALS += $(srcdir)/libgomp/libgomp.texi +endif +ifeq ($(with_itm),yes) + MANUALS += $(srcdir)/libitm/libitm.texi +endif +ifeq ($(with_qmath),yes) + MANUALS += $(srcdir)/libquadmath/libquadmath.texi +endif +ifeq ($(with_go),yes) + MANUALS += $(srcdir)/gcc/go/gccgo.texi +endif +ifeq ($(with_d),yes) + MANUALS += $(srcdir)/gcc/d/gdc.texi +endif +ifeq ($(with_m2),yes) + MANUALS += $(srcdir)/gcc/doc/gm2.texi +endif +ifeq ($(with_algol),yes) + MANUALS += $(srcdir)/gcc/algol68/ga68.texi +endif + +html-docs: $(build_html_stamp) +#$(build_html_stamp): $(stampdir)/05-build-html-split +$(build_html_stamp): $(stampdir)/05-build-html-nosplit + +html-makeinfo-split: $(stampdir)/05-build-html-split +$(stampdir)/05-build-html-split: $(build_stamp) + mkdir -p html + rm -f html/*.html + cd $(builddir)/gcc; \ + echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'outname=`basename {} .texi`.html; \ + outname=`basename {} .texi`; \ + echo "generating $$outname ..."; \ + makeinfo --html --number-sections \ + -I $(srcdir)/gcc/doc/include -I `dirname {}` \ + -I $(srcdir)/gcc/p/doc \ + -I $(srcdir)/gcc/p/doc/generated \ + -I $(builddir)/gcc \ + -I $(builddir)/gcc/m2 \ + -I $(buildlibdir)/libquadmath \ + -o $${outname} \ + {}' + touch $@ + +html-makeinfo-nosplit: $(stampdir)/05-build-html-nosplit +$(stampdir)/05-build-html-nosplit: $(build_stamp) + mkdir -p html + rm -f html/*.html + cd $(builddir)/gcc; \ + echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'outname=`basename {} .texi`.html; \ + echo "generating $$outname ..."; \ + makeinfo --html --number-sections --no-split \ + -I $(srcdir)/gcc/doc/include -I `dirname {}` \ + -I $(srcdir)/gcc/p/doc \ + -I $(srcdir)/gcc/p/doc/generated \ + -I $(builddir)/gcc \ + -I $(builddir)/gcc/m2 \ + -I $(buildlibdir)/libquadmath \ + -o $(CURDIR)/html/$${outname} \ + {}' + touch $@ + +# start the script only on architectures known to have slow autobuilders ... +logwatch_archs := amd64 i386 alpha armel armhf arm64 loong64 m68k \ + mips mipsel mips64el riscv64 s390x sparc x32 hurd-amd64 hurd-i386 +ifneq (,$(filter $(DEB_HOST_ARCH),$(logwatch_archs))) + start_logwatch = yes +endif + +check: $(check_stamp) +$(check_stamp): $(filter $(build_stamp) $(build_jit_stamp) $(build_hppa64_stamp) $(build_nvptx_stamp) $(build_gcn_stamp), $(build_dependencies)) \ + $(if $(filter nvptx-none, $(offload_targets)), $(install_nvptx_stamp)) \ + $(if $(filter $(gcn_target_name), $(offload_targets)), $(install_gcn_stamp)) + @echo === START $@ === + rm -f test-protocol + rm -f $(builddir)/runcheck* + + -chmod 755 $(srcdir)/contrib/test_summary + + : # needed for the plugin tests to succeed + ln -sf gcc $(builddir)/prev-gcc + ln -sf $(DEB_TARGET_GNU_TYPE) $(builddir)/prev-$(DEB_TARGET_GNU_TYPE) + +ifneq ($(with_common_libs),yes) + ifeq ($(with_cxx),yes) + ifeq (,$(filter $(DEB_TARGET_ARCH), armel armhf mipsel mips64el)) + : # libstdc++6 built from newer gcc-X source, run testsuite against the installed lib + + : # jit test results should not end up in the libstdc++-test-summary report + if [ -f $(builddir)/gcc/testsuite/jit/jit.sum ]; then \ + mv $(builddir)/gcc/testsuite/jit/jit.log $(builddir)/gcc/testsuite/jit/jit.LOG; \ + mv $(builddir)/gcc/testsuite/jit/jit.sum $(builddir)/gcc/testsuite/jit/jit.SUM; \ + fi + + sed 's/-L[^ "]*//g' $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags \ + > $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags.installed + -$(ULIMIT_M); \ + set +e; \ + for d in $(buildlibdir)/libstdc++-v3/testsuite; do \ + echo "Running testsuite in $$d ..."; \ + TEST_INSTALLED=1 \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(SET_PATH) \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + DEB_GCC_NO_O3=1 \ + $(MAKE) -k -C $$d $(NJOBS_TESTS) check $(RUNTESTFLAGS); \ + done 2>&1 | tee test-protocol2 + + cd $(builddir); \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + $(srcdir)/contrib/test_summary -m "$(S_EMAIL)" > ../raw-test-summary + -( \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary; \ + awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF; \ + ) > libstdc++-test-summary + echo 'BEGIN installed libstdc++-v3 test-summary' + cat libstdc++-test-summary + echo 'END installed libstdc++-v3 test-summary' + find $(buildlibdir)/libstdc++-v3/testsuite -name '*.log' -o -name '*.sum' \ + | xargs -r rm -f + + if [ -f $(builddir)/gcc/testsuite/jit/jit.SUM ]; then \ + mv $(builddir)/gcc/testsuite/jit/jit.LOG $(builddir)/gcc/testsuite/jit/jit.log; \ + mv $(builddir)/gcc/testsuite/jit/jit.SUM $(builddir)/gcc/testsuite/jit/jit.sum; \ + fi + endif + endif +endif + +ifeq ($(start_logwatch),yes) + : # start logwatch script for regular output during test runs + chmod +x debian/logwatch.sh + -debian/logwatch.sh -t 900 -p $(builddir)/logwatch.pid \ + -m 'testsuite still running ...' \ + test-protocol \ + $(builddir) \ + & +endif + + : # FIXME: https://gcc.gnu.org/PR103944 + rm -f $(srcdir)/libphobos/testsuite/libphobos.gc/forkgc2.d + + -$(ULIMIT_M); \ + set +e; \ + for d in $(checkdirs); do \ + echo "Running testsuite in $$d ..."; \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(SET_PATH) \ + EXTRA_TEST_PFLAGS=-g0 \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \ + DEB_GCC_NO_O3=1 \ + $(time_command) $(MAKE) -k -C $$d $(NJOBS_TESTS) check $(RUNTESTFLAGS); \ + done 2>&1 | tee test-protocol + + -ps aux | fgrep logwatch | fgrep -v fgrep + -if [ -f $(builddir)/logwatch.pid ]; then \ + kill -1 `cat $(builddir)/logwatch.pid`; \ + sleep 1; \ + kill -9 `cat $(builddir)/logwatch.pid`; \ + rm -f $(builddir)/logwatch.pid; \ + fi + -ps aux | fgrep logwatch | fgrep -v fgrep + +ifeq ($(with_ada),yes) + -if [ -f $(builddir)/acats-killer.pid ]; then \ + kill -1 `cat $(builddir)/acats-killer.pid`; \ + sleep 1; \ + kill -9 `cat $(builddir)/acats-killer.pid`; \ + rm -f $(builddir)/acats-killer.pid; \ + fi +endif + + if [ -x $(srcdir)/contrib/test_summary ]; then \ + rm -f test-summary; \ + ( \ + cd $(builddir); \ + echo '' > ts-include; \ + echo '' >> ts-include; \ + if [ -f $(builddir)/gcc/.bad_compare ]; then \ + echo 'Bootstrap comparison failure:' >> ts-include; \ + cat $(builddir)/gcc/.bad_compare >> ts-include; \ + echo '' >> ts-include; \ + echo '' >> ts-include; \ + fi; \ + echo "Build Dependencies:" >> ts-include; \ + dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ + libgmp*-dev libmpfr-dev libmpc-dev libisl-dev \ + | fgrep -v '' >> ts-include; \ + echo '' >> ts-include; \ + cat ../$(patch_stamp) >> ts-include; \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + $(srcdir)/contrib/test_summary \ + -i ts-include -m "$(S_EMAIL)" \ + ) > raw-test-summary; \ + if [ -n "$(testsuite_tarball)" ]; then \ + echo "Test suite used: $(testsuite_srcdir)" > test-summary; \ + echo " Do not interpret the results on its own" >> test-summary; \ + echo " but compare them with the results from" >> test-summary; \ + echo " the gcc-snapshot package." >> test-summary; \ + fi; \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary \ + >> test-summary; \ + awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF >> test-summary; \ + if [ -f bootstrap-summary -a "$(bootstrap_target)" != profiledbootstrap ]; then \ + echo '' >> test-summary; \ + cat bootstrap-summary >> test-summary; \ + fi; \ + echo 'BEGIN test-summary'; \ + cat test-summary; \ + echo 'END test-summary'; \ + fi +ifeq ($(with_d),yes) + : # the D test failures for the non-default multilibs are known, ignore them + egrep -v '^(FAIL|UNRESOLVED): (runnable|fail_c|comp)' test-summary > test-summary.tmp + mv -f test-summary.tmp test-summary +endif + + : # prepare the inclusion of the test results + rm -rf $(d_tst) + mkdir -p $(d_tst)/$(docdir)/$(p_xbase)/test + echo "TEST COMPARE BEGIN" + for i in test-summary testsuite-comparision; do \ + [ -f $$i ] || continue; \ + cp -p $$i $(d_tst)/$(docdir)/$(p_xbase)/$$i; \ + done +# more than one libgo.sum, avoid it + cp -p $$(find $(builddir)/gcc/testsuite -maxdepth 2 \( -name '*.sum' -o -name '*.log' \)) \ + $$(find $(buildlibdir)/*/testsuite -maxdepth 1 \( -name '*.sum' -o -name '*.log' \) ! -name 'libgo.*') \ + $(d_tst)/$(docdir)/$(p_xbase)/test/ +ifeq ($(with_go),yes) + cp -p $(buildlibdir)/libgo/libgo.sum \ + $(d_tst)/$(docdir)/$(p_xbase)/test/ +endif +ifeq (0,1) + cd $(builddir); \ + for i in $(CURDIR)/$(d_tst)/$(docdir)/$(p_xbase)/test/*.sum; do \ + b=$$(basename $$i); \ + if [ -f /usr/share/doc/$(p_xbase)/test/$$b.gz ]; then \ + zcat /usr/share/doc/$(p_xbase)/test/$$b.gz > /tmp/$$b; \ + if sh $(srcdir)/contrib/test_summary /tmp/$$b $$i; then \ + echo "$$b: OK"; \ + else \ + echo "$$b: FAILURES"; \ + fi; \ + rm -f /tmp/$$b; \ + else \ + echo "Test summary for $$b is not available"; \ + fi; \ + done +endif + echo "TEST COMPARE END" + +ifneq ($(with_common_libs),yes) + if [ -f libstdc++-test-summary ]; then \ + cp libstdc++-test-summary \ + $(d_tst)/$(docdir)/$(p_xbase)/libstdc++-installed-test-summary; \ + fi + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.LOG ]; then \ + cp $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.LOG \ + $(d_tst)/$(docdir)/$(p_xbase)/test/libstdc++-installed.log; \ + cp $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.SUM \ + $(d_tst)/$(docdir)/$(p_xbase)/test/libstdc++-installed.sum; \ + fi +endif + + if which xz 2>&1 >/dev/null; then \ + echo -n $(d_tst)/$(docdir)/$(p_xbase)/test/* \ + | xargs -d ' ' -L 1 -P $(USE_CPUS) xz -9v; \ + fi + + -cp usage-*.svg $(d_tst)/$(docdir)/$(p_xbase)/. + -if which xz 2>&1 >/dev/null; then \ + echo -n $(d_tst)/$(docdir)/$(p_xbase)/*.svg \ + | xargs -d ' ' -L 1 -P $(USE_CPUS) xz -9v; \ + fi + + cd $(d_tst) && tar cvf ../../installed-testlogs.tar usr + rm -rf $(d_tst) + +ifeq ($(save_disk_space),yes) + rm -rf $(builddir)/gcc/testsuite/* + rm -f usage-*.svg +endif + touch $(check_stamp) + +$(check_inst_stamp): $(check_stamp) + rm -f test-inst-protocol + @echo === START $@ === + +ifeq ($(start_logwatch),yes) + : # start logwatch script for regular output during test runs + chmod +x debian/logwatch.sh + -debian/logwatch.sh -t 900 -p $(builddir)/logwatch-inst.pid \ + -m 'testsuite (installed) still running ...' \ + test-inst-protocol \ + $(builddir) \ + & +endif + + rm -rf check-inst + mkdir check-inst + + echo "Running testsuite ..." + -$(ULIMIT_M) ; \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + EXTRA_TEST_PFLAGS=-g0 \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \ + cd check-inst && $(srcdir)/contrib/test_installed \ + --with-gcc=gcc-$(CC) --with-g++=$(CXX) --with-g77=$(subst gcc,gfortran,$(CC)) \ + 2>&1 | tee test-inst-protocol + + -ps aux | fgrep logwatch | fgrep -v fgrep + if [ -f $(builddir)/logwatch-inst.pid ]; then \ + kill -1 `cat $(builddir)/logwatch-inst.pid`; \ + else \ + true; \ + fi + -ps aux | fgrep logwatch | fgrep -v fgrep + + -chmod 755 $(srcdir)/contrib/test_summary + if [ -x $(srcdir)/contrib/test_summary ]; then \ + rm -f test-inst-summary; \ + ( \ + cd check-inst; \ + echo '' > ts-include; \ + echo '' >> ts-include; \ + echo "Build Dependencies:" >> ts-include; \ + dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ + libgmp*-dev libmpfr-dev libmpc-dev libisl*-dev \ + | fgrep -v '' >> ts-include; \ + echo '' >> ts-include; \ + echo 'Results for the installed GCC-3.3 compilers' >> ts-include; \ + $(srcdir)/contrib/test_summary \ + -i ts-include -m "$(S_EMAIL)" \ + ) > raw-test-inst-summary; \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-inst-summary \ + >> test-inst-summary; \ + awk '/^cat/, /^EOF/' raw-test-inst-summary \ + | grep -v EOF >> test-inst-summary; \ + echo 'BEGIN test-installed-summary'; \ + cat test-inst-summary; \ + echo 'END test-installed-summary'; \ + fi + + chmod 755 debian/reduce-test-diff.awk + if diff -u test-inst-summary test-summary \ + | debian/reduce-test-diff.awk > diff-summary; \ + then \ + mv -f diff-summary testsuite-comparision; \ + else \ + ( \ + echo "WARNING: New failures in gcc-3.4 compared to gcc-3.3"; \ + echo ''; \ + cat diff-summary; \ + ) > testsuite-comparision; \ + rm -f diff-summary; \ + fi + touch $(check_inst_stamp) + +clean: debian/control + dh_testdir + rm -f pxxx status + rm -f *-summary *-protocol testsuite-comparision summary-diff + rm -f $(srcdir)/gcc/po/*.gmo + rm -rf src-nvptx src-gcn + rm -f debian/lib{gcc,objc,stdc++}{-v3,[0-9]}*.{{pre,post}{inst,rm},shlibs} + fs=`echo debian/*BV* debian/*CXX* debian/*LC* debian/*MF* | sort -u`; \ + for f in $$fs; do \ + [ -f $$f ] || continue; \ + f2=$$(echo $$f \ + | sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \ + rm -f $$f2; \ + done + rm -f debian/lib*gcc-s1.symbols +ifneq ($(single_package),yes) + rm -f debian/lib*{atomic$(ATOMIC_SONAME),gfortran$(FORTRAN_SONAME),gomp$(GOMP_SONAME),itm$(ITM_SONAME),quadmath$(QUADMATH_SONAME),stdc++$(CXX_SONAME)}.symbols +endif + find debian -maxdepth 1 -name '*-cross.symbols' -type l | xargs -r rm -f + rm -f debian/gcc-{XX,ar,nm,ranlib}-$(BASE_VERSION).1 + rm -f debian/shlibs.local debian/shlibs.common* debian/substvars.local + rm -f debian/*.debhelper + -[ -d debian/bugs ] && $(MAKE) -C debian/bugs clean + rm -f debian/README.libstdc++-baseline debian/README.Bugs debian/README.Debian.$(DEB_TARGET_ARCH) + rm -f debian/arch_binaries* debian/indep_binaries* + rm -rf bin bin-gcn locales share + rm -rf check-inst + rm -f usage-*.svg + rm -f installed-*.tar* + dh_clean +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + $(cross_clean) dh_clean +endif + +# ----------------------------------------------------------------------------- +# some abbrevations for the package names and directories; +# p_XXX is the package name, d_XXX is the package directory +# these macros are only used in the binary-* targets. + +ifeq ($(versioned_packages),yes) + pkg_ver := -$(BASE_VERSION) +endif + +# if native or rtlibs build +ifeq ($(if $(filter yes,$(DEB_CROSS)),$(if $(filter rtlibs,$(DEB_STAGE)),native,cross),native),native) + p_base = gcc$(pkg_ver)-base + p_lbase = $(p_base) + p_xbase = gcc$(pkg_ver)-base +else + # only triggered if DEB_CROSS set + p_base = gcc$(pkg_ver)$(cross_bin_arch)-base + p_lbase = gcc$(pkg_ver)-cross-base$(GCC_PORTS_BUILD) + p_xbase = gcc$(pkg_ver)$(cross_bin_arch)-base +endif +p_cpp_b = cpp$(pkg_ver)-for-build +p_hppa64 = gcc$(pkg_ver)-hppa64-linux-gnu + +# needed for shlibs.common* generation +ifeq (,$(p_lgcc)) + p_lgcc = libgcc-s$(GCC_SONAME)$(cross_lib_arch) +endif +ifeq (,$(p_lib)) + p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) +endif +p_tst = gcc$(pkg_ver)-test-results + +d = debian/tmp +d_base = debian/$(p_base) +d_xbase = debian/$(p_xbase) +d_lgcc = debian/$(p_lgcc) +d_hppa64= debian/$(p_hppa64) +d_tst = debian/$(p_tst) + +common_substvars = \ + $(shell awk "{printf \"'-V%s' \", \$$0}" debian/substvars.local) + +ifeq ($(DEB_CROSS),yes) + lib_binaries := indep_binaries +else + lib_binaries := arch_binaries +endif + +# --------------------------------------------------------------------------- + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + include debian/rules.d/binary-snapshot.mk +else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + include debian/rules.d/binary-toolchain.mk +else + +ifneq ($(with_base_only),yes) +ifneq ($(DEB_CROSS),yes) +ifeq ($(with_source),yes) + include debian/rules.d/binary-source.mk +endif +endif +endif + +ifneq ($(BACKPORT),true) + +ifeq ($(with_gccbase),yes) + include debian/rules.d/binary-base.mk +endif + +ifneq ($(with_base_only),yes) + +# always include to get some definitions +include debian/rules.d/binary-libgcc.mk + +ifeq ($(with_libqmath),yes) + include debian/rules.d/binary-libquadmath.mk +endif + +ifeq ($(with_libgmath),yes) + include debian/rules.d/binary-libgccmath.mk +endif + +ifeq ($(with_libgomp),yes) + include debian/rules.d/binary-libgomp.mk +endif + +ifeq ($(with_libitm),yes) + include debian/rules.d/binary-libitm.mk +endif + +ifeq ($(with_libatomic),yes) + include debian/rules.d/binary-libatomic.mk +endif + +ifeq ($(with_libbacktrace),yes) + include debian/rules.d/binary-libbacktrace.mk +endif + +ifeq ($(with_cdev),yes) + include debian/rules.d/binary-cpp.mk +endif + +ifeq ($(with_libssp),yes) + include debian/rules.d/binary-libssp.mk +endif + +ifeq ($(with_objcxx),yes) + include debian/rules.d/binary-objcxx.mk +endif + +ifeq ($(with_objc),yes) + include debian/rules.d/binary-objc.mk + include debian/rules.d/binary-libobjc.mk +endif + +ifeq ($(with_go),yes) + include debian/rules.d/binary-go.mk +endif + +ifeq ($(with_cxxdev),yes) + include debian/rules.d/binary-cxx.mk +endif +ifeq ($(with_cxx),yes) + include debian/rules.d/binary-libstdcxx.mk +endif + +ifeq ($(with_libasan),yes) + include debian/rules.d/binary-libasan.mk +endif + +ifeq ($(with_liblsan),yes) + include debian/rules.d/binary-liblsan.mk +endif + +ifeq ($(with_libtsan),yes) + include debian/rules.d/binary-libtsan.mk +endif + +ifeq ($(with_libubsan),yes) + include debian/rules.d/binary-libubsan.mk +endif + +ifeq ($(with_libhwasan),yes) + include debian/rules.d/binary-libhwasan.mk +endif + +ifeq ($(with_libvtv),yes) + include debian/rules.d/binary-libvtv.mk +endif + +ifeq ($(with_f77),yes) + include debian/rules.d/binary-f77.mk +endif + +ifeq ($(with_fortran),yes) + include debian/rules.d/binary-fortran.mk +endif + +ifeq ($(with_ada),yes) + include debian/rules.d/binary-ada.mk +endif + +ifeq ($(with_d),yes) + include debian/rules.d/binary-d.mk +endif + +ifeq ($(with_m2),yes) + include debian/rules.d/binary-m2.mk +endif + +ifeq ($(with_rs),yes) + include debian/rules.d/binary-rust.mk +endif + +ifeq ($(with_cobol),yes) + include debian/rules.d/binary-cobol.mk +endif + +ifeq ($(with_algol),yes) + include debian/rules.d/binary-algol68.mk +endif + +ifeq ($(with_libcc1),yes) + include debian/rules.d/binary-libcc1.mk +endif + +ifeq ($(with_jit),yes) + include debian/rules.d/binary-libgccjit.mk + include debian/rules.d/binary-libdiag.mk +endif + +ifeq ($(with_offload_nvptx),yes) + include debian/rules.d/binary-nvptx.mk +endif + +ifeq ($(with_offload_gcn),yes) + include debian/rules.d/binary-gcn.mk +endif + +ifeq ($(with_libnof),yes) + ifeq ($(DEB_TARGET_GNU_CPU),powerpc) + include debian/rules.d/binary-nof.mk + endif +endif + +ifeq ($(with_softfloat),yes) + include debian/rules.d/binary-softfloat.mk +endif + +# gcc must be moved/built after g77 and g++ +ifeq ($(with_cdev),yes) + include debian/rules.d/binary-gcc.mk +endif + +ifeq ($(with_hppa64),yes) + include debian/rules.d/binary-hppa64.mk +endif + +endif # with_base_only +endif # BACKPORT +endif # ($(single_package),yes) + +# ---------------------------------------------------------------------- +install: $(install_dependencies) + +$(install_dummy_stamp): $(build_dummy_stamp) + @echo === START $@ === + touch $(install_dummy_stamp) + +$(install_snap_stamp): $(build_dependencies) + @echo === START $@ === + dh_testdir + dh_testroot + dh_prep + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(PF) + +ifeq ($(with_hppa64),yes) + : # install files prepared in the hppa64 build target + cd $(d) && tar xvf ../../installed-hppa64.tar.xz +endif + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + + ls -l $(d)/$(PF)/bin + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i.1; \ + done + + if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \ + mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-15* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-15*; \ + fi + rm -rf $(d)/$(gcc_lib_dir)/include-fixed + +ifneq ($(configured_libdir),$(libdir)) + for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \ + mv $(d)/$(PF)/$(configured_libdir)/$$i \ + $(d)/$(PF)/$(libdir)/. || true; \ + done +endif + +ifeq ($(with_jit),yes) + : # install files prepared in the jit build target + cd $(d) && tar xvf ../../installed-jit.tar.xz +endif + + -ls -l $(d)/usr + if [ -d $(d)/usr/man/man1 ]; then \ + mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \ + fi + + chmod 755 debian/dh_* + touch $(install_snap_stamp) + + +$(install_tc_stamp): $(build_dependencies) + @echo === START $@ === + dh_testdir + dh_testroot + dh_prep + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(PF) + +ifeq ($(with_hppa64),yes) + : # install files prepared in the hppa64 build target + cd $(d) && tar xvf ../../installed-hppa64.tar.xz +endif + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + + ls -l $(d)/$(PF)/bin + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i.1; \ + done + + if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \ + mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-13* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-13*; \ + fi + rm -rf $(d)/$(gcc_lib_dir)/include-fixed + +ifneq ($(configured_libdir),$(libdir)) + for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \ + mv $(d)/$(PF)/$(configured_libdir)/$$i \ + $(d)/$(PF)/$(libdir)/. || true; \ + done +endif + +ifeq ($(with_jit),yes) + : # install files prepared in the jit build target + cd $(d) && tar xvf ../../installed-jit.tar.xz +endif + + -ls -l $(d)/usr + if [ -d $(d)/usr/man/man1 ]; then \ + mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \ + fi + + chmod 755 debian/dh_* + touch $(install_tc_stamp) + + +$(install_stamp): $(build_stamp) + @echo === START $@ === + dh_testdir + dh_testroot + dh_prep $(if $(filter yes,$(with_hppa64)),-N$(p_hppa64)) + + if [ -f $(binary_stamp)-hppa64 ]; then \ + mv $(binary_stamp)-hppa64 saved-stamp-hppa64; \ + fi + rm -f $(binary_stamp)* + if [ -f saved-stamp-hppa64 ]; then \ + mv saved-stamp-hppa64 $(binary_stamp)-hppa64; \ + fi + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(libdir) $(d)/$(PF) $(d)/$(PF)/$(libdir)/debug +ifeq ($(biarch32),yes) + mkdir -p $(d)/$(PF)/$(lib32loc)/debug +endif +ifeq ($(biarch64),yes) + mkdir -p $(d)/$(PF)/lib64/debug +endif +ifeq ($(biarchn32),yes) + mkdir -p $(d)/$(PF)/$(libn32)/debug +endif +ifeq ($(biarchx32),yes) + mkdir -p $(d)/$(PF)/libx32/debug +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_CPU),x86_64 sparc64 s390x powerpc64)) +ifneq ($(DEB_TARGET_ARCH),x32) + : # link lib to lib64 and $(PF)/lib to $(PF)/lib64 + : # (this works when CONFARGS contains '--disable-multilib') + ln -s $(configured_libdir) $(d)/lib64 + mkdir -p $(d)/$(PF)/$(configured_libdir) + ln -s $(configured_libdir) $(d)/$(PF)/lib64 +endif +endif +ifeq ($(DEB_TARGET_ARCH),x32) + : # link lib to libx32 and $(PF)/lib to $(PF)/libx32 + ln -s $(configured_libdir) $(d)/libx32 + mkdir -p $(d)/$(PF)/$(configured_libdir) + ln -s $(configured_libdir) $(d)/$(PF)/libx32 +endif + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + + @echo III: =============== upstream install $(DEB_TARGET_ARCH) =============== + find $(d) ! -type d + @echo III: =============== end upstream install $(DEB_TARGET_ARCH) =============== + +ifeq ($(with_m2),yes) + ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + : # FIXME: libm2 libs are installed wrong for libgm2 + for i in $(d)/$(PF)/lib/libm2*; do \ + test -e $$i || continue; \ + echo mv $$i $(d)/$(PFL)/lib/. ; \ + mv $$i $(d)/$(PFL)/lib/. ; \ + done + endif +endif + + rm -rf $(d)/$(gcc_lib_dir)/include-fixed + +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + @echo configured_libdir=$(configured_libdir) / libdir=$(libdir) / usr_lib=$(usr_lib) + ls $(d)/$(PF)/$(TARGET_ALIAS)/lib + set -x; \ + if [ -d $(d)/$(PF)/$(TARGET_ALIAS)/lib ]; then \ + cp -a $(d)/$(PF)/$(TARGET_ALIAS)/lib/* $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/.; \ + fi + for d in $$(cd $(d)/$(PF)/$(TARGET_ALIAS); echo lib?*); do \ + [ -d $(d)/$(PF)/$(TARGET_ALIAS)/$$d ] || continue; \ + cp -a $(d)/$(PF)/$(TARGET_ALIAS)/$$d/* $(d)/$(PF)/$$d/.; \ + done +else + ifneq ($(configured_libdir),$(libdir)) + for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.o' '*.py' '*.spec' '*.modules.json'; do \ + mv $(d)/$(PF)/$(configured_libdir)/$$i \ + $(d)/$(PF)/$(libdir)/. || true; \ + done + endif +endif + +ifneq (,$(cmd_prefix)) + for i in $(d)/$(PF)/share/info/$(cmd_prefix)*; do \ + [ -f "$$i" ] || continue; \ + mv $$i $$(echo $$i | sed 's/$(cmd_prefix)//'); \ + done +endif + +ifeq ($(with_libcxxdbg),yes) + : # FIXME: the libstdc++ gdb.py file is installed with a wrong name + for i in $$(find $(d)/$(PF) -name libstdc++_pic.a-gdb.py); do \ + [ -f $$i ] || continue; \ + d=$$(dirname $$i); \ + b=$$(basename $$i); \ + t=$$(cd $$d; echo libstdc++.so.*.*.*)-gdb.py; \ + mv $$i $$d/$$t; \ + done +endif + + : # fix permissions of liblto_plugin.so + chmod 644 $(d)/$(gcc_lexec_dir)/liblto_plugin.so + + : # remove rpath settings from binaries and shared libs + -chrpath -k $(d)/$(PF)/bin/* $(d)/$(PFL)/lib*/lib*.so.* \ + $(d)/$(gcc_lib_dir)/plugin/* \ + $(if $(filter $(with_multiarch_lib),yes), \ + $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) + + for i in $$(chrpath -k $(d)/$(PF)/bin/* $(d)/$(PFL)/lib*/lib*.so.* \ + $(d)/$(gcc_lib_dir)/plugin/* \ + $(if $(filter $(with_multiarch_lib),yes), \ + $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \ + 2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \ + do \ + [ -h $$i ] && continue; \ + chrpath --delete $$i; \ + echo "removed RPATH/RUNPATH: $$i"; \ + done + + : # remove '*.la' and '*.lai' files, not shipped in any package. + find $(d) -name '*.la' -o -name '*.lai' | xargs -r rm -f + +ifeq ($(GFDL_INVARIANT_FREE),yes) + for i in gcc gcov; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + + ifeq ($(with_fortran),yes) + for i in g77; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + endif +endif + +ifneq ($(with_libgnat),yes) + rm -f $(d)/$(gcc_lib_dir)/adalib/lib*.so* +endif + +# ifeq ($(with_ada),yes) +# : # rename files (versioned ada binaries) +# for i in ; do \ +# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ +# mv $(d)/$(PF)/share/man/man1/$$i.1 \ +# $(d)/$(PF)/share/man/man1/$$i-$(GNAT_VERSION).1; \ +# done +# for i in $(GNAT_TOOLS); do \ +# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ +# done +# endif + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i$(pkg_ver).1; \ + done + + chmod 755 debian/dh_* + +ifneq ($(with_common_libs),yes) +# for native builds, the default ml libs are always available; no need for a placeholder +# apparently this changed with newer dpkg versions (1.18.7?) ... + ( \ + echo 'libgcc_s $(GCC_SONAME) $(p_lgcc)'; \ + echo 'libstdc++ $(CXX_SONAME) $(p_lib)'; \ + echo 'libquadmath $(QUADMATH_SONAME) libquadmath$(QUADMATH_SONAME)$(cross_lib_arch)'; \ + echo 'libatomic $(ATOMIC_SONAME) libatomic$(ATOMIC_SONAME)$(cross_lib_arch)'; \ + echo 'libgdiagnostics $(DIAGNOSTICS_SONAME) libgdiagnostocs$(DIAGNOSTICS_SONAME)$(cross_lib_arch)'; \ + ) > debian/shlibs.common + $(foreach ml,32 64 n32 x32, \ + ( \ + echo 'libgcc_s $(GCC_SONAME) $(subst lib,lib$(ml),$(p_lgcc))'; \ + echo 'libstdc++ $(CXX_SONAME) $(subst lib,lib$(ml),$(p_lib))'; \ + echo 'libquadmath $(QUADMATH_SONAME) lib$(ml)quadmath$(QUADMATH_SONAME)$(cross_lib_arch)'; \ + echo 'libatomic $(ATOMIC_SONAME) lib$(ml)atomic$(ATOMIC_SONAME)$(cross_lib_arch)'; \ + ) > debian/shlibs.common$(ml); \ + ) +endif + + @echo III: =============== fixed install $(DEB_TARGET_ARCH) =============== + find $(d) ! -type d -print + @echo III: =============== end fixed install $(DEB_TARGET_ARCH) =============== + touch $(install_stamp) + +$(install_jit_stamp): $(build_jit_stamp) $(install_stamp) + @echo === START $@ === + dh_testdir + dh_testroot + + : # install files prepared in the jit build target + cd $(d) && tar xvf ../../installed-jit.tar.xz + + @echo XXXXX `date -R` + touch $(install_jit_stamp) + +$(install_nvptx_stamp): $(build_nvptx_stamp) + @echo === START $@ === + dh_testdir + ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib + rm -rf $(d)-nvptx + mkdir -p $(d)-nvptx/$(PF) + + $(SET_PATH) \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_nvptx) \ + CC="$(CC_FOR_TARGET)" \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d)-nvptx \ + install + + find $(d)-nvptx + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/nvptx-none/$(versiondir)/install-tools + rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,cc1,cc1plus,f951} + rm -rf $(d)-nvptx/$(PF)/share/{info,man/man7,locale} + rm -rf $(d)-nvptx/$(PF)/share/man/man1/*-{gcov,gfortran,g++,cpp}.1 + rm -rf $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/{install-tools,plugin} + rm -rf $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,include-fixed} + rm -rf $(d)-nvptx/$(PF)/lib/libc[cp]1* + rm -rf $(d)-nvptx/$(PF)/lib{32,64,n32,x32} + + mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/*.{a,spec} \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/ + mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/mgomp/*.{a,spec} \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/ + mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/*.a \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/ + mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/mgomp/*.a \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/ + find $(d)-nvptx -name \*.la | xargs rm -f + rm -rf $(d)-nvptx/$(PF)/nvptx-none/include + -find $(d)-nvptx -type d -empty -delete + + : # a complete compiler installation needed for running the tests + ln -sf /usr/bin/nvptx-none-ar $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ar + ln -sf /usr/bin/nvptx-none-as $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/as + ln -sf /usr/bin/nvptx-none-ld $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ld + ln -sf /usr/bin/nvptx-none-ranlib $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ranlib + + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + find $(d)-nvptx + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + rm -f $(srcdir)/newlib + @echo XXXXX `date -R` + touch $(install_nvptx_stamp) + +$(install_gcn_stamp): $(build_gcn_stamp) + @echo === START $@ === + dh_testdir + ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib + rm -rf $(d)-gcn + mkdir -p $(d)-gcn/$(PF) + + $(SET_PATH) \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_gcn) \ + CC="$(CC_FOR_TARGET)" \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d)-gcn \ + install + + find $(d)-gcn + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + rm -rf $(d)-gcn/$(libexecdir)/$(gcc_subdir_name)/$(gcn_target_name)/$(versiondir)/install-tools + rm -rf $(d)-gcn/$(libexecdir)/$(gcc_subdir_name)/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/{install-tools,plugin,cc1,cc1plus,f951} + rm -rf $(d)-gcn/$(PF)/share/{info,man/man7,locale} + rm -rf $(d)-gcn/$(PF)/bin/*-{gcov*,lto-dump}-$(versiondir) + rm -rf $(d)-gcn/$(PF)/share/man/man1/*-{cpp,gcov*,gfortran,g++,lto-dump}-$(versiondir).1 + rm -rf $(d)-gcn/$(PF)/lib/gcc/$(gcn_target_name)/$(versiondir)/{install-tools,plugin} + rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/{install-tools,plugin,include-fixed} + rm -rf $(d)-gcn/$(PF)/lib/libc[cp]1* + rm -rf $(d)-gcn/$(PF)/lib{32,64,n32,x32} + + for d in . $$(cd $(d)-gcn/$(PF)/$(gcn_target_name)/lib && echo gfx9* gfx1*); do \ + mv -f $(d)-gcn/$(PF)/$(gcn_target_name)/lib/$$d/*.{a,spec} \ + $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/$$d/.; \ + mv -f $(d)-gcn/$(PF)/lib/gcc/$(gcn_target_name)/$(versiondir)/$$d/*.a \ + $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/$$d/.; \ + done + + find $(d)-gcn -name \*.la | xargs rm -f + rm -rf $(d)-gcn/$(PF)/$(gcn_target_name)/include + rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/include + rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/gfx* + + : # a complete compiler installation needed for running the tests +ifeq ($(gcn_tools_llvm_version),tools) + for t in ar as ld nm ranlib; do \ + ln -sf /usr/$(gcn_target_name)/bin/$$t \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/$$t; \ + done +else + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/as + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib +endif + : # fix permissions of liblto_plugin.so + chmod 644 $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/liblto_plugin.so + + -find $(d)-gcn -type d -empty -delete + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + find $(d)-gcn + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + rm -f $(srcdir)/newlib + @echo XXXXX `date -R` + touch $(install_gcn_stamp) + +$(install_hppa64_stamp): $(build_hppa64_stamp) + @echo === START $@ === + dh_testdir + dh_testroot + rm -rf $(d_hppa64) + mkdir -p $(d_hppa64)/$(PF) + + : # install files prepared in the hppa64 build target + cd $(d_hppa64) && tar xvf ../../installed-hppa64.tar.xz + + touch $(install_hppa64_stamp) + +# ---------------------------------------------------------------------- +# Build architecture-dependent files here. +debian/arch_binaries.all: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) + cd debian; xargs -r du -s < arch_binaries | sort -nr | awk '{print $$2}' \ + > arch_binaries.tmp + mv debian/arch_binaries.tmp debian/arch_binaries + sed -i 's/ /\n/g' debian/arch_binaries.epoch || touch debian/arch_binaries.epoch + cat debian/arch_binaries debian/arch_binaries.epoch > debian/arch_binaries.all + +# see #879054 for the "test ! -s" tests, needed for the rtlibs stage +binary-arch: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) debian/arch_binaries.all + test ! -s debian/arch_binaries.all || \ + dh_compress $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) \ + -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs + @echo LTO_PLUGIN debug + -find debian -name liblto_plugin.so -ls + test ! -s debian/arch_binaries.all || \ + dh_fixperms $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + -find debian -name liblto_plugin.so -ls +ifeq ($(with_ada),yes) + find $$(ls -d $(d_gnat) $(d_gnatsjlj) $(d_snap) 2>/dev/null) \ + -name '*.ali' | xargs -r chmod 444 +endif + @set -e; \ + pkgs="$$(sed 's/^/-p/;/-for-host/d' debian/arch_binaries | xargs)"; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ + dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ + fi + @set -e; \ + pkgs="$$(sed -n 's/^/-p/;/-for-host/p' debian/arch_binaries | xargs)"; \ + if [ -n "$$pkgs" ]; then \ + echo $(cross_gencontrol) dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ + $(cross_gencontrol) dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ + fi + @set -e; \ + pkgs='$(strip $(foreach p,$(shell echo `cat debian/arch_binaries.epoch`),-p$(p)))'; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + fi +ifneq ($(single_package),yes) + ifeq ($(with_libcompatgcc),yes) + cp -p debian/.debhelper/generated/$(p_lgcc)/triggers \ + debian/.debhelper/generated/$(subst gcc-s,gcc,$(p_lgcc))/. + endif +endif + test ! -s debian/arch_binaries.all || \ + dh_installdeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries.all || \ + dh_md5sums $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries.all || \ + dh_builddeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) +ifeq ($(with_check),yes) + @echo Done +# : # Send Email about sucessfull build. +# # cat raw-test-summary | sh; echo "Sent mail to $(S_EMAIL)" +endif + +ifneq ($(single_package),yes) + : # remove empty directories, when all components are in place + -find $(d) -type d -empty -delete + + @echo "Listing installed files not included in any package:" + -find $(d) ! -type d +endif + -du -s -BM . + -du -s -BM .. + @echo XXXXX `date -R` + +# ---------------------------------------------------------------------- +# Build architecture-independent files here. +debian/indep_binaries.all: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) + cd debian; xargs -r du -s < indep_binaries | sort -nr | awk '{print $$2}' \ + > indep_binaries.tmp + mv debian/indep_binaries.tmp debian/indep_binaries + sed -i 's/ /\n/g' debian/indep_binaries.epoch || touch debian/indep_binaries.epoch + cat debian/indep_binaries debian/indep_binaries.epoch > debian/indep_binaries.all + +binary-indep: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) debian/indep_binaries.all + find debian -name _formulas.log -delete -print + dh_compress $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) \ + -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs + dh_fixperms $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + : # the export should be harmless for the binary indep packages of a native build + export DEB_HOST_ARCH=$(TARGET); \ + dh_gencontrol $(foreach p,$(shell echo `cat debian/indep_binaries`),-p$(p)) \ + -- -v$(DEB_VERSION) $(common_substvars) + @set -e; \ + export DEB_HOST_ARCH=$(TARGET); \ + pkgs='$(strip $(foreach p,$(shell echo `cat debian/indep_binaries.epoch`),-p$(p)))'; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + fi + +ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel mips64 mips64el mipsn32 mipsn32el)) + for p in `cat debian/indep_binaries debian/indep_binaries.epoch`; do \ + p=$${p#-p*}; \ + case "$$p" in \ + lib64*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/libn?32[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_l64gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ + libn32*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/lib64[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_ln32gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ + esac; \ + done +endif + + dh_installdeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + dh_md5sums $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + dh_builddeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + + @echo XXXXX `date -R` + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +binary: binary-indep binary-arch +.PHONY: build build-indep build-arch clean binary-indep binary-arch binary +.PRECIOUS: $(stampdir)/%-stamp debian/indep_binaries.all debian/arch_binaries.all +.NOTPARALLEL: diff --git a/runcheck.sh b/runcheck.sh new file mode 100644 index 0000000..c7d6cfb --- /dev/null +++ b/runcheck.sh @@ -0,0 +1,23 @@ +#! /bin/sh + +mkdir -p build + +abi=${CC##* } +base=build/runcheck$abi + +cat >$base.c < +int main() +{ + printf("$abi"); + return 0; +} +EOF + + +if ${CC:-gcc} -o $base $base.c 2>/dev/null; then + if [ "$($base 2>&1)" = "$abi" ]; then + printf "%s" $abi > $base.out + printf "%s" $abi + fi +fi diff --git a/sarif-replay.1 b/sarif-replay.1 new file mode 100644 index 0000000..8680eae --- /dev/null +++ b/sarif-replay.1 @@ -0,0 +1,6 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH SARIF-REPLAY-15 "1" "June 2026" "sarif-replay-15 15" "User Commands" +.SH NAME +sarif-replay-15 \- Replay results from one or more .sarif files as if they were GCC diagnostics +.SH DESCRIPTION +debian/gcc\-15\-diagnostics/usr/bin/sarif\-replay\-15: error while loading shared libraries: libgdiagnostics.so.0: cannot open shared object file: No such file or directory diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/lintian-overrides b/source/lintian-overrides new file mode 100644 index 0000000..32ab49b --- /dev/null +++ b/source/lintian-overrides @@ -0,0 +1,12 @@ +invalid-arch-string-in-source-relation + +quilt-build-dep-but-no-series-file + +# lintian can't handle (>= ${gcc:Version}) +weak-library-dev-dependency + +# yes, still generating the series file for the build +patch-file-present-but-not-mentioned-in-series + +# lintian is so wrong ... +field-too-long diff --git a/tests/control b/tests/control new file mode 100644 index 0000000..c757929 --- /dev/null +++ b/tests/control @@ -0,0 +1,38 @@ +Tests: runtime-libs +Depends: apt, python3-minimal +Restrictions: allow-stderr + +Tests: libc-link +Depends: gcc-15, libc6-dev | libc-dev + +Tests: libstdcxx-link +Depends: g++-15 + +Tests: libgfortran-link +Depends: gfortran-15 + +Tests: libgo-link +Depends: gccgo-15 + +Tests: libgomp-link +Depends: gfortran-15, gcc-15 + +Tests: libgm2-link +Depends: gm2-15 + +Tests: libgnat-link +Depends: gnat-15 + +Tests: libgcobol-link +Architecture: arm64 amd64 +Depends: gcobol-15 + +Tests: libga68-link +Depends: ga68-15 + +Tests: libgphobos-link +Depends: gdc-15 +Architecture: !powerpc !ppc64 !ppc64el + +Tests: shlib-build +Depends: gcc-15, libc6-dev | libc-dev diff --git a/tests/libc-link b/tests/libc-link new file mode 100755 index 0000000..fbe4224 --- /dev/null +++ b/tests/libc-link @@ -0,0 +1,30 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libc, to verify +# basic compile-time and run-time linking functionality. +# +# (C) 2012 Canonical Ltd. +# Author: Martin Pitt + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +CC=gcc-$BV + +cd "$AUTOPKGTEST_TMP" +cat < libctest.c +#include +#include + +int main() +{ + assert (1 > 0); + assert (strcmp ("hello", "hello") == 0); + return 0; +} +EOF + +$CC -o libctest libctest.c +echo "build: OK" +[ -x libctest ] +./libctest +echo "run: OK" diff --git a/tests/libga68-link b/tests/libga68-link new file mode 100755 index 0000000..9b7bd94 --- /dev/null +++ b/tests/libga68-link @@ -0,0 +1,28 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libga68, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GA68=ga68-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello.a68 +begin + putchar ("H"); + putchar ("e"); + putchar ("l"); + putchar ("l"); + putchar ("o"); + putchar ("!"); + puts ("\n") +end +EOF + +$GA68 hello.a68 +echo "build: OK" +ldd a.out +[ -x a.out ] +./a.out +echo "run: OK" diff --git a/tests/libgcobol-link b/tests/libgcobol-link new file mode 100755 index 0000000..7767ba6 --- /dev/null +++ b/tests/libgcobol-link @@ -0,0 +1,30 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgcobol, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GCOB=gcobol-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello.cob + + IDENTIFICATION DIVISION. + PROGRAM-ID. hello. + + PROCEDURE DIVISION. + DISPLAY "Howdy!". + + + + + +EOF + +$GCOB hello.cob +echo "build: OK" +ldd a.out +[ -x a.out ] +./a.out +echo "run: OK" diff --git a/tests/libgfortran-link b/tests/libgfortran-link new file mode 100755 index 0000000..70bf6b2 --- /dev/null +++ b/tests/libgfortran-link @@ -0,0 +1,22 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgfortran, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +F95=gfortran-$BV + +cd "$AUTOPKGTEST_TMP" +cat < libgfortran.f + program hello + print *, "Hello World!" + end program hello +EOF + +$F95 -o ftest libgfortran.f +echo "build: OK" +ldd ftest +[ -x ftest ] +./ftest +echo "run: OK" diff --git a/tests/libgm2-link b/tests/libgm2-link new file mode 100755 index 0000000..2f975c3 --- /dev/null +++ b/tests/libgm2-link @@ -0,0 +1,26 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgo, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GM2=gm2-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello.mod +MODULE hello ; + +FROM StrIO IMPORT WriteString, WriteLn ; + +BEGIN + WriteString ('hello world') ; WriteLn +END hello. +EOF + +$GM2 -g -o hello hello.mod +echo "build: OK" +ldd hello +[ -x hello ] +./hello +echo "run: OK" diff --git a/tests/libgnat-link b/tests/libgnat-link new file mode 100755 index 0000000..c357a55 --- /dev/null +++ b/tests/libgnat-link @@ -0,0 +1,24 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgnat, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GNATMAKE=gnatmake-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello.adb +with Ada.Text_IO; use Ada.Text_IO; +procedure Hello is +begin + Put_Line("Hello gnatmake."); +end Hello; +EOF + +$GNATMAKE -eS -vm -o adatest hello.adb +echo "build: OK" +ldd adatest +[ -x adatest ] +./adatest +echo "run: OK" diff --git a/tests/libgo-link b/tests/libgo-link new file mode 100755 index 0000000..76a3f2a --- /dev/null +++ b/tests/libgo-link @@ -0,0 +1,25 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgo, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GO=go-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello.go +package main +import "fmt" +func main() { + fmt.Println("hello world") +} +EOF + +$GO run hello.go +$GO build hello.go +echo "build: OK" +ldd hello +[ -x hello ] +./hello +echo "run: OK" diff --git a/tests/libgomp-link b/tests/libgomp-link new file mode 100755 index 0000000..ec7dbc4 --- /dev/null +++ b/tests/libgomp-link @@ -0,0 +1,76 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgfortran, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +CC=gcc-$BV +F95=gfortran-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello-gomp.c +#include +#include +#include +int main (int argc, char *argv[]) { + +int nthreads, tid; + +/* Fork a team of threads giving them their own copies of variables */ +#pragma omp parallel private(nthreads, tid) + { + + /* Obtain thread number */ + tid = omp_get_thread_num(); + printf("Hello World from thread = %d\n", tid); + + /* Only master thread does this */ + if (tid == 0) + { + nthreads = omp_get_num_threads(); + printf("Number of threads = %d\n", nthreads); + } + + } /* All threads join master thread and disband */ +} +EOF + +$CC -fopenmp -o gctest hello-gomp.c +echo "build: OK" +ldd gctest +[ -x gctest ] +./gctest +echo "run: OK" + +cat < hello-gomp.f + program omp_par_do + implicit none + + integer, parameter :: n = 100 + real, dimension(n) :: dat, result + integer :: i + + !$OMP PARALLEL DO + do i = 1, n + result(i) = my_function(dat(i)) + end do + !$OMP END PARALLEL DO + + contains + + function my_function(d) result(y) + real, intent(in) :: d + real :: y + + ! do something complex with data to calculate y + end function my_function + end program omp_par_do +EOF + +$F95 -fopenmp -o gftest hello-gomp.f +echo "build: OK" +ldd gftest +[ -x gftest ] +./gftest +echo "run: OK" diff --git a/tests/libgphobos-link b/tests/libgphobos-link new file mode 100755 index 0000000..8c1fe26 --- /dev/null +++ b/tests/libgphobos-link @@ -0,0 +1,32 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgphobos, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GDC=gdc-$BV + +if ! dpkg -l libgphobos-$BV-dev >/dev/null 2>&1; then + echo "skip test on architecture without libgphobos-dev" + exit 0 +fi + +cd "$AUTOPKGTEST_TMP" +cat < libgphobos.d +immutable str = "Hello, World!"; + +void main() +{ + // Scoped and selective imports can be used. + import std.stdio : writeln; + writeln(str); +} +EOF + +$GDC -o dtest libgphobos.d +echo "build: OK" +ldd dtest +[ -x dtest ] +./dtest +echo "run: OK" diff --git a/tests/libstdcxx-link b/tests/libstdcxx-link new file mode 100755 index 0000000..ca39928 --- /dev/null +++ b/tests/libstdcxx-link @@ -0,0 +1,26 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libstdc++, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +CXX=g++-$BV + +cd "$AUTOPKGTEST_TMP" +cat < libstdcxx.cc +#include +using namespace std; + +int main() { + cout << "Hello! World!\n"; + return 0; +} +EOF + +$CXX -o cxxtest libstdcxx.cc +echo "build: OK" +ldd cxxtest +[ -x cxxtest ] +./cxxtest +echo "run: OK" diff --git a/tests/runtime-libs b/tests/runtime-libs new file mode 100755 index 0000000..b849ae1 --- /dev/null +++ b/tests/runtime-libs @@ -0,0 +1,29 @@ +#!/bin/sh +# autopkgtest check: start a "simple" program and check that +# dynamic loading of modules works + +set -e + + +cd "$AUTOPKGTEST_TMP" + +echo "Running exexutable linked with libgcc and libstdc++ (apt)..." +if [ -x /usr/bin/apt ]; then + apt=/usr/bin/apt +elif [ -x /bin/apt ]; then + apt=/bin/apt +else + echo "apt not found" + exit 1 +fi + +ldd $apt +apt show libgcc-s1 libstdc++6 + +echo "Running dynamically linked executable (python3)..." +python3 -c 'print("Hello World!")' +echo "OK" + +echo "Loading extension module..." +python3 -c 'import _hashlib; print(_hashlib.__dict__)' +echo "OK" diff --git a/tests/shlib-build b/tests/shlib-build new file mode 100755 index 0000000..751fadf --- /dev/null +++ b/tests/shlib-build @@ -0,0 +1,45 @@ +#!/bin/sh +# autopkgtest check: Build and link against a simple shared library, to test +# basic binutils compile-time and run-time linking functionality. +# +# (C) 2012 Canonical Ltd. +# Author: Martin Pitt + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +CC=gcc-$BV + +cd "$AUTOPKGTEST_TMP" +cat < testlib.c + +int ultimate_answer() +{ + return 42; +} +EOF + +$CC -Wall -Werror -shared -o libultimate.so testlib.c +echo "library build: OK" + +# should export the symbol +nm -D libultimate.so | grep -q 'T ultimate_answer' + +# link it against a program +cat < testprog.c +#include + +int ultimate_answer(); + +int main() +{ + assert (ultimate_answer() == 42); + return 0; +} +EOF + +$CC -Wall -Werror -L . -o testprog testprog.c -lultimate +echo "program build: OK" +[ -x testprog ] +LD_LIBRARY_PATH=. ./testprog +echo "run: OK" diff --git a/usage-wrapper.py b/usage-wrapper.py new file mode 100755 index 0000000..bf8831f --- /dev/null +++ b/usage-wrapper.py @@ -0,0 +1,399 @@ +#!/usr/bin/env python3 + +import argparse +import math +import os +import subprocess +import sys +import threading +import time + +try: + import psutil +except ImportError: + print(f'{sys.argv[0]}: the psutil module is required.', file=sys.stderr) + sys.exit(1) + +try: + import matplotlib + import matplotlib.pyplot as plt + from matplotlib.lines import Line2D +except ImportError: + plt = None + + +def to_gigabyte(value): + return value / 1024**3 + + +INTERVAL = 0.33 +LW = 0.5 + +global_n = 0 +global_cpu_data_sum = 0 +global_memory_data_sum = 0 +global_cpu_data_max = 0 +global_memory_data_min = to_gigabyte(psutil.virtual_memory().total) +global_memory_data_max = 0 +global_swap_data_min = to_gigabyte(psutil.swap_memory().total) +global_swap_data_max = 0 +global_disk_data_total = to_gigabyte(psutil.disk_usage('.').total) +global_disk_data_start = to_gigabyte(psutil.disk_usage('.').used) + +global_timestamps = [] +global_cpu_data = [] +global_memory_data = [] +global_process_usage = [] +global_process_hogs = {} + +process_name_map = {} +lock = threading.Lock() + +done = False +start_ts = time.monotonic() +cpu_count = psutil.cpu_count() + +special_processes = {'ld': 'gold', + 'WPA': 'deepskyblue', + 'WPA-stream': 'lightblue', + 'ltrans': 'forestgreen', + 'as': 'coral', + 'GCC': 'gray', + 'clang': 'darkgray', + 'rust': 'brown', + 'go': 'hotpink', + 'dwz': 'limegreen', + 'rpm/dpkg': 'plum'} +for i, k in enumerate(special_processes.keys()): + process_name_map[k] = i + + +descr = 'Run command and measure memory and CPU utilization' +parser = argparse.ArgumentParser(description=descr) +parser.add_argument('command', metavar='command', + help='Command', nargs=argparse.REMAINDER) +parser.add_argument('-c', '--command', dest='command1', + help='command as a single argument') +parser.add_argument('-v', '--verbose', action='store_true', help='Verbose') +parser.add_argument('--summary-only', dest='summary_only', + action='store_true', + help='No plot, just a summary at the end') +parser.add_argument('--base-memory', action='store_true', + help='Adjust memory to include the system load') +parser.add_argument('-s', '--separate-ltrans', action='store_true', + help='Separate LTRANS processes in graph') +parser.add_argument('-o', '--output', default='usage.svg', + help='Path to output image (default: usage.svg)') +parser.add_argument('-r', '--ranges', + help='Plot only the selected time ranges ' + '(e.g. 20-30, 0-1000)') +parser.add_argument('-t', '--title', help='Graph title') +parser.add_argument('-m', '--memory-hog-threshold', type=float, + help='Report about processes that consume the amount of ' + 'memory (in GB)') +parser.add_argument('-f', '--frequency', type=float, + default=INTERVAL, + help='Frequency of measuring (in seconds)') +parser.add_argument('-j', '--jobs', type=int, + default=cpu_count, dest='used_cpus', + help='Scale up CPU data to used CPUs ' + 'instead of available CPUs') +args = parser.parse_args() + +if args.command1 and args.command: + print(f'{sys.argv[0]}: either use -c "", ' + 'or append the command', file=sys.stderr) + sys.exit(1) + +if not args.summary_only and plt is None: + print(f'{sys.argv[0]}: use --summary-only, ' + 'or install the matplotlib module', file=sys.stderr) + sys.exit(1) + +cpu_scale = cpu_count / args.used_cpus + + +def get_process_name(proc): + name = proc.name() + cmdline = proc.cmdline() + if name == 'ld' or name == 'ld.gold': + return 'ld' + elif name == 'lto1-wpa': + return 'WPA' + elif name == 'lto1-wpa-stream': + return 'WPA-stream-out' + elif name in ('cc1', 'cc1plus', 'cc1objc', 'f951', 'd21', 'go1', 'gnat1'): + return 'GCC' + elif name.startswith('clang'): + return 'clang' + elif name.startswith('rust'): + return 'rust' + elif name in ('as', 'dwz', 'go'): + return name + elif name == 'rpmbuild' or name.startswith('dpkg'): + return 'rpm/dpkg' + elif '-fltrans' in cmdline: + if args.separate_ltrans: + return 'ltrans-%d' % proc.pid + else: + return 'ltrans' + return None + + +def record_process_memory_hog(proc, memory, timestamp): + if args.memory_hog_threshold: + if memory >= args.memory_hog_threshold: + cmd = ' '.join(proc.cmdline()) + tpl = (memory, timestamp) + if cmd not in global_process_hogs: + global_process_hogs[cmd] = tpl + elif memory > global_process_hogs[cmd][0]: + global_process_hogs[cmd] = tpl + + +def record(): + global global_n, global_cpu_data_sum, global_cpu_data_max + global global_memory_data_sum, global_memory_data_min + global global_memory_data_max + global global_swap_data_min, global_swap_data_max + + active_pids = {} + while not done: + timestamp = time.monotonic() - start_ts + used_cpu = psutil.cpu_percent(interval=args.frequency) * cpu_scale + used_memory = to_gigabyte(psutil.virtual_memory().used) + used_swap = to_gigabyte(psutil.swap_memory().used) + if not args.summary_only: + global_timestamps.append(timestamp) + global_memory_data.append(used_memory) + global_cpu_data.append(used_cpu) + + global_n += 1 + global_cpu_data_sum += used_cpu + global_memory_data_sum += used_memory + global_cpu_data_max = max(global_cpu_data_max, used_cpu) + global_memory_data_min = min(global_memory_data_min, used_memory) + global_memory_data_max = max(global_memory_data_max, used_memory) + global_swap_data_min = min(global_swap_data_min, used_swap) + global_swap_data_max = max(global_swap_data_max, used_swap) + + entry = {} + seen_pids = set() + for proc in psutil.Process().children(recursive=True): + try: + memory = to_gigabyte(proc.memory_info().rss) + record_process_memory_hog(proc, memory, timestamp) + name = get_process_name(proc) + if name: + seen_pids.add(proc.pid) + if proc.pid not in active_pids: + active_pids[proc.pid] = proc + else: + proc = active_pids[proc.pid] + cpu = proc.cpu_percent() / args.used_cpus + if name not in process_name_map: + length = len(process_name_map) + process_name_map[name] = length + if name not in entry: + entry[name] = {'memory': 0, 'cpu': 0} + entry[name]['cpu'] += cpu + # FIXME: ignore WPA streaming memory - COW makes it bogus + if name != 'WPA-stream-out': + entry[name]['memory'] += memory + except Exception: + # the process can be gone + pass + for pid in list(active_pids.keys()): + if pid not in seen_pids: + del active_pids[pid] + if args.verbose: + print(entry, flush=True) + if not args.summary_only: + global_process_usage.append(entry) + + +def stack_values(process_usage, key): + stacks = [] + for _ in range(len(process_name_map)): + stacks.append([]) + for values in process_usage: + for k, v in process_name_map.items(): + if k in values: + stacks[v].append(values[k][key]) + else: + stacks[v].append(0) + return stacks + + +def get_footnote(): + hostname = os.uname()[1].split('.')[0] + cpu_average = global_cpu_data_sum / global_n + cpu_max = global_cpu_data_max + base_memory = global_memory_data_min + peak_memory = global_memory_data_max + total_mem = to_gigabyte(psutil.virtual_memory().total) + return (f'host: {hostname}; CPUs: {args.used_cpus}/{cpu_count};' + f' CPU avg: {cpu_average:.0f}%;' + f' CPU max: {cpu_max:.0f}%;' + f' base memory: {base_memory:.1f} GB;' + f' peak memory: {peak_memory:.1f} GB;' + f' total memory: {total_mem:.1f} GB') + + +def get_footnote2(): + peak_swap = global_swap_data_max + total_swap = to_gigabyte(psutil.swap_memory().total) + disk_total = global_disk_data_total + disk_start = global_disk_data_start + disk_end = to_gigabyte(psutil.disk_usage('.').used) + disk_delta = disk_end - disk_start + return (f'swap peak/total: {peak_swap:.1f}/{total_swap:.1f} GB;' + f' disk start/end/total: {disk_start:.1f}/{disk_end:.1f}/{disk_total:.1f} GB;' + f' disk delta: {disk_delta:.1f} GB') + + +def generate_graph(time_range): + timestamps = [] + cpu_data = [] + memory_data = [] + process_usage = [] + + # filter date by timestamp + for i, ts in enumerate(global_timestamps): + if not time_range or time_range[0] <= ts and ts <= time_range[1]: + timestamps.append(ts) + cpu_data.append(global_cpu_data[i]) + memory_data.append(global_memory_data[i]) + process_usage.append(global_process_usage[i]) + + if not timestamps: + if args.verbose: + print('No data for range: %s' % str(time_range)) + return + + peak_memory = max(memory_data) + + fig, (cpu_subplot, mem_subplot) = plt.subplots(2, sharex=True) + title = args.title if args.title else '' + if time_range: + title += ' (%d-%d s)' % (time_range[0], time_range[1]) + fig.suptitle(title, fontsize=17) + fig.set_figheight(5) + fig.set_figwidth(10) + # scale cpu axis + local_peak_cpu = max(cpu_data) + cpu_ylimit = (local_peak_cpu // 10) * 11 + 5 + if cpu_ylimit > 200: + cpu_ylimit = 200 + cpu_subplot.set_title('CPU usage') + cpu_subplot.set_ylabel('%') + cpu_subplot.plot(timestamps, cpu_data, c='blue', lw=LW, label='total') + cpu_subplot.set_ylim([0, cpu_ylimit]) + cpu_subplot.axhline(color='r', alpha=0.5, y=100.0 / args.used_cpus, lw=LW, + linestyle='dotted', label='single core') + cpu_subplot.set_xlim(left=time_range[0] if time_range else 0) + cpu_subplot.grid(True) + + mem_subplot.plot(timestamps, memory_data, c='blue', lw=LW, label='total') + mem_subplot.set_title('Memory usage') + mem_subplot.set_ylabel('GB') + mem_subplot.set_xlabel('time') + + # scale it to a reasonable limit + limit = 1 + while peak_memory > limit: + limit *= 2 + if limit > 2 and limit * 0.75 >= peak_memory: + limit = int(limit * 0.75) + mem_subplot.set_ylim([0, 1.1 * limit]) + mem_subplot.set_yticks(range(0, limit + 1, math.ceil(limit / 8))) + mem_subplot.grid(True) + + # Try to use the newer colormaps attribute; if not available, fallback + try: + colors = list(matplotlib.colormaps['tab20c'].colors * 100) + except AttributeError: + colors = list(plt.cm.get_cmap('tab20c').colors * 100) + for name, color in special_processes.items(): + if name in process_name_map: + colors[process_name_map[name]] = color + + mem_stacks = stack_values(process_usage, 'memory') + cpu_stacks = stack_values(process_usage, 'cpu') + if mem_stacks: + mem_subplot.stackplot(timestamps, mem_stacks, + colors=colors) + cpu_subplot.stackplot(timestamps, cpu_stacks, + colors=colors) + + # generate custom legend + colors = special_processes.values() + custom_lines = [Line2D([0], [0], color=x, lw=5) for x in colors] + custom_lines.insert(0, Line2D([0], [0], color='b', lw=LW)) + custom_lines.insert(0, Line2D([0], [0], color='r', alpha=0.5, + linestyle='dotted', lw=LW)) + names = ['single core', 'total'] + list(special_processes.keys()) + fig.legend(custom_lines, names, loc='right', prop={'size': 6}) + + filename = args.output + if time_range: + tr = '-%d-%d' % (time_range[0], time_range[1]) + filename = os.path.splitext(args.output)[0] + tr + '.svg' + plt.subplots_adjust(bottom=0.15) + plt.figtext(0.1, 0.04, get_footnote(), fontsize='small') + plt.figtext(0.1, 0.01, get_footnote2(), fontsize='small') + plt.savefig(filename) + if args.verbose: + print('Saving plot to %s' % filename) + + +def summary(): + print(f'SUMMARY: {get_footnote()}') + print(f'SUMMARY: {get_footnote2()}') + if global_process_hogs: + print(f'PROCESS MEMORY HOGS (>={args.memory_hog_threshold:.1f} GB):') + items = sorted(global_process_hogs.items(), key=lambda x: x[1][0], + reverse=True) + for cmdline, (memory, ts) in items: + print(f' {memory:.1f} GB: {ts:.1f} s: {cmdline}') + + +thread = threading.Thread(target=record, args=()) +thread.start() + +ranges = [] +if args.ranges: + for r in args.ranges.split(','): + parts = r.split('-') + assert len(parts) == 2 + ranges.append([int(x) for x in parts]) + +if args.verbose: + print('Ranges are %s' % str(ranges)) + print('Running command', flush=True) + +cp = None +try: + if args.command1: + cp = subprocess.run(args.command1, shell=True) + else: + cp = subprocess.run(args.command) +except KeyboardInterrupt: + rv = 2 +finally: + done = True + thread.join() + summary() + if global_memory_data: + min_memory = min(global_memory_data) + if not args.base_memory: + global_memory_data = [x - min_memory for x in global_memory_data] + + if plt: + generate_graph(None) + for r in ranges: + generate_graph(r) + if cp: + rv = cp.returncode + +sys.exit(rv) diff --git a/watch b/watch new file mode 100644 index 0000000..e20ee9a --- /dev/null +++ b/watch @@ -0,0 +1,3 @@ +version=4 +ftp://gcc.gnu.org/pub/gcc/releases/gcc-(15\.[\d\.]*)/ \ + gcc-([\d\.]+)\.tar\.xz debian uupdate diff --git a/watch.snap b/watch.snap new file mode 100644 index 0000000..5bf474e --- /dev/null +++ b/watch.snap @@ -0,0 +1,3 @@ +version=4 +ftp://gcc.gnu.org/pub/gcc/snapshots/(16-[\d]+)/ \ + gcc-16-([\d\.]+)\.tar\.xz debian uupdate